프로토콜 프로그램 통신 프로그래밍 사용 예
CIMON-PLC 와 타사 PLC 와의 통신 시스템 및 프레임 구성 예를 보여줍니다.
사용자정의 통신의 프로그래밍 방법을 설명합니다. CIMON-PLC 의 D00000영역의 데이터 16byte(아스키)를 타사 PLC로 쓰기를 하고, 타사 PLC의 데이터 24byte(아스키)를 읽어 CIMON-PLC 의 D0020번지 영역에 저장하려는 경우의 예입니다.
임의의 타사 PLC 프로토콜 |
---|
쓰기요구 프레임(CIMON-PLC > 타사 PLC)
Header | 국번 (H) | 국번 (L) | Command | Size (H) | Size (L) | Data | Tail | Bcc (H) | Bcc (L) |
ENQ | 0(ASC) | 1(ASC) | W | 1(ASC) | 2(ASC) | 16Byte | EOT | SUM(ASC) | SUM(ASC) |
읽기 요구 프레임(타사 PLC > CIMON-PLC)
Header | 국번 (H) | 국번 (L) | Command | Size (H) | Size (L) | Data | Tail | Bcc (H) | Bcc (L) |
STX | 0(ASC) | 1(ASC) | R | 1(ASC) | 8(ASC) | 24 | ETX | SUM(ASC) | SUM(ASC) |
프로토콜 설명 |
---|
쓰기 요구 프레임
헤더와 테일에 아스키 코드의 제어 문자인 ENQ, EOT를 사용
쓰기 명령어로 ‘W’ 라는 명령어 사용
데이터 길이영역에 ‘10h’을 사용 16 byte 의 데이터 쓰기를 표시
송신 데이터영역(CIMON-PLC D00000)의 16Byte의 데이터를 발신
BCC 는 헤더에서 테일까지 모든 데이터를 바이너리 합하여 BCC에 추가
송신 순서 | 시작 -----------------------------------------------------------------------------------> 끝 | |||||||||
프레임 종류 | 헤더 | 고정값 (기타) | 데이터 | 테일 | BCC | |||||
송신 프레임 | ENQ | 0 | 1 | W | 1 | 2 | 가변데이터 | EOT | H | L |
바이너리 | 05h | 30h | 31h | 57h | 31h | 32h | D00000 | 04h |
|
|
ASCII |
| ‘0’ | ‘1’ | ‘W’ | ‘1’ | ‘2’ | D00000 |
|
|
|
참고 프로토콜 편집기에서 위의 송신 프레임을 작성할 때 고정값은 바이너리와 아스키를 선택할 수 있는데, 위의 표처럼 바이너리인 경우는 Hex값을 넣어주면 되고, 아스키인 경우는 문자를 넣어주면 됩니다. 단, 바이너리는 16진수 2자리가 1Byte를 차지하고, 아스키는 1문자가 1Byte를 차지합니다.
프로토콜 프로을 이용하여 타사 송신 프레임을 다음과 같은 절차로 작성합니다.
1. 고정값(바이너리 05h) : 바이너리 05h가 ENQ에 해당됩니다. 16진수는 2자리가 1Byte에 해당됩니다.
고정값(ASCII) : 아스키로 데이터를 나타내므로 한문자가 1Byte입니다. 바이너리 데이터(30 31 57 31 30)로 나타내줘도 됩니다.
메모리링크 : 어드레스를 D00000로 길이를 16Byte로 선택하면, D0000에 저장 되어 있는 16 Byte의 데이터가 16진 ASCII로 송신됩니다.
아스키(ASCII) 데이터 변환
무변환(바이너리) | 메모리 영역에 저장되어 있는 데이터가 변환 없이 송신됩니다. 예를 들어 데이터 길이가 2Byte이고, 값이 0x1234(2Byte)이면 데이터 1234가 송신됩니다. |
16진 정수 | 아스키 데이터로 변환해서 보내야 하므로 데이터 값이 0x1234 인 경우, 실제 송신되는 데이터는 ‘1’,’2’,’3’,’4’가 되므로 데이터 길이는 4Byte로 설정해 주어야 합니다. |
10진 정수 | 데이터 값이 0x1234는 10진수 4660이 됩니다. 실제 송신되는 데이터는 ‘4’,’6’,‘6’,’0’가 되므로 데이터 길이는 4Byte로 설정해 주어야 합니다. |
실 수 | 스케일링이 10인 경우, 데이터 값 0x1234에 /10(나눗셈)을 해서 바이너리 데이터로 송신합니다. 실제 송신되는 데이터는 0x01D2 이 됩니다. |
4. 고정값(바이너리 04h) : 바이너리 04h가 EOT에 해당됩니다. 16진수는 2자리가 1Byte 입니다.
5. 오류검사(BCC) : 송신되는 프레임의 데이터를 오류검사 영역(세그먼트 범위) 에서 설정한 만큼 Binary Sum을 합니다. ASCII데이터 변환은 메모리 링크 부분을 참고 바랍니다.
오류검사 영역(세그먼트 범위) 시작 : 0 / 끝 : 3 Segment 0 Segment 1 Segment 2 Segment 3
오류검사 = Segment 0 + Segment 1 + Segment 2 + Segment 3 |
송신프레임 편집완료
읽기요구 프레임
헤더와 테일에 아스키 코드의 제어문자인 STX, ETX 를 사용
읽기 명령어로 ‘R’라는 명령어를 사용합니다.
데이터 길이영역에 ‘18’을 사용 24 byte 의 데이터 읽기를 표시합니다.
데이터영역에 24 byte 의 데이터를 보냅니다.
BCC 는 헤더에서 테일까지의 모든 데이터를 바이너리 합하여 BCC에 추가
송신순서 | 시작 -----------------------------------------------------------------------------------> 끝 | |||||||||
프레임 종류 | 헤더 | 고정값 (기타) | 데이터 | 테일 | BCC | |||||
송신프레임 | STX | 0 | 1 | R | 1 | 8 | 가변데이터 | ETX | H | L |
바이너리 | 02h | 30h | 31h | 57h | 31h | 38h | D0000 | 03h |
|
|
ASCII |
| ‘0’ | ‘1’ | ‘R’ | ‘1’ | ‘8’ | D0000 |
|
|
|
참고 프로토콜 편집기에서 위의 수신 프레임을 작성할 때 고정값은 바이너리와 아스키를 선택할 수 있는데, 위의 표처럼 바이너리인 경우는 Hex값을 넣어주면 되고, 아스키인 경우는 문자를 넣어주면 됩니다. 단, 바이너리는 16진수 2자리가 1Byte를 차지하고, 아스키는 1문자가 1Byte를 차지합니다.
타사프로토콜을 프로토콜 편집기를 이용하여 송신 프레임을 다음과 같은 절차로 작성합니다.
고정값(바이너리 02h) : 바이너리 02h가 STX에 해당됩니다. 16진수는 2자리가 1Byte
고정값(ASCII) : 아스키로 데이터를 나타내므로 한문자가 1Byte입니다. 바이너리로 데이터(30 31 52 31 38)로 표현가능 합니다.
메모리링크 : 어드레스를 D0020로 선택했으므로, 24 Byte의 데이터가 16진 ASCII변환되어 수신됩니다.
아스키(ACCII) 데이터 변환
무변환(바이너리) | 수신된 데이터가 변함 없이 메모리 영역에 저장됩니다. 예를 들어 데이터 길이가 2Byte이고, 값이 0x1234(2Byte)이면 데이터 h1234가 CPU 메모리에 저장됩니다. |
16진 정수 | 수신되는 데이터가 16진 아스키 데이터라는 것을 의미합니다. 그러므로 데이터는 ‘1’,’2’,’3’,’4’가 수신되는데 이 경우, 실제 수신되어 저장 되는 데이터는 0x1234가 됩니다. 단, 데이터 길이는 4Byte로 설정해 주어야 합니다. |
10진 정수 | 수신되는 데이터가 10진 아스키 데이터라는 것을 의미합니다. 그러므로 데이터는 ‘4’,’6’,‘6’,’0’가 수신되는데 이 경우, 실제 수신되어 저장되는 데이터는 0x1234가 됩니다. 단, 데이터 길이는 4Byte로 설정해 주어야 합니다. |
실 수 | 스케일링이 10인 경우, 데이터 값 0x1234에 x10(곱셈)을 해서 바이너리 데이터로 수신합니다. 실제 수신되는 데이터는 0xB608이 됩니다. |
고정값(바이너리 03h) : 바이너리 03h가 ETX에 해당됩니다. 16진수는 2자리가 1Byte입니다.
오류검사(BCC) : 송신되는 프레임의 데이터를 오류검사 영역(세그먼트 범위)에서 설정해준 영역만큼 Binary Sum을 합니다. ASCII데이터 변환은 메모리 링크 부분을 참고 바랍니다.
오류검사 영역(세그먼트 범위) 시작 : 0 / 끝 : 3 Segment 0 Segment 1 Segment 2 Segment 3
오류검사 = Segment 0 + Segment 1 + Segment 2 + Segment 3 |
수신 프레임 편집 완료
PLC 프로그램
프로토콜 편집기를 이용하여 등록된 프레임을 1초마다 송신하고, 송신이 성공되면 M0000가 한 스캔 ON이므로, 수신명령을 수행합니다. 송/수신 명령은 반드시 한 스캔만 ON되게 하여야 합니다.