티스토리 뷰

8비트는 1바이트이므로

16비트 싱글 워드에는 문자를 2개 넣을 수 있습니다.


PLC에 데이터를 쓰기 전에 먼저 10진수 아스키 코드로 변환을 해야 합니다.


문자 0은 16진수로 30이므로 10진수는 48입니다.


            string str = "abc123";
            List<int> ascii = str.ToCharArray().ToList().ConvertAll(c => Convert.ToInt32(c));



워드 디바이스에 문자열을 쓰는 방법은 2가지가 있습니다.

  • 1워드에 1문자씩 저장하는 방법
  • 1워드에 2문자씩 저장하는 방법


1문자씩 저장하는 방법

PC에서 간단한 명령으로 쓸 수있으나 PLC에서 문자열을 합쳐야 합니다.

writedevicerandom("D0", 1, ascii); // MELSEC



2문자씩 저장하는 방법

PC에서만 처리하면 되므로 PLC에서 가공할 필요가 없이 HMI에 바로 표시할 수 있습니다.

8비트씩 나눠 하위 비트에 문자가 먼저 입력 되고 상위 비트에 다음 문자가 들어갑니다.


상위 비트에 문자 값을 넣으려면 왼쪽으로 8비트 시프트 하면 됩니다.

그리고 이전 문자와 합치면 됩니다


int shift = ascii[1] << 8 | ascii[0];

writedevicerandom("D0", 1, shift); // MELSEC


반복문을 사용하여 문자열 전체를 변환, 쓰기할 수 있습니다.


문자가 홀수개일 경우, ascii.Add(0); 로 NULL 값을 추가해줍니다

TAG
,
댓글
댓글쓰기 폼