사용자 프로토콜(Serial)
사용자가 직접 시리얼 통신 모듈의 통신 프레임을 정의할 수 있도록 지원하는 프로그램입니다. 자세한 내용은 시리얼 통신 모듈의 매뉴얼을 참조하세요.
프로토콜 프로그램 등록
파일 메뉴의 새 프로그램을 선택 합니다.
프로그램 이름, 프로그램 ID, 프로그램 여유공간을 입력 합니다.
[확인] 버튼을 클릭 합니다.
프로토콜 프로그램 작성
프로그램 작성 예
Glofa PLC의 %MW100부터 5Word를 읽어, CIMON PLC의 D00100부터 5Word에 저장하는 프로그램, 로컬 베이스 0번 슬롯에 장착된 시리얼 통신 모듈의 1번 채널(RS232)을 이용하여 통신 합니다.
항목 | 설정 |
베이스 | 로컬 (모듈이 장착된 베이스) |
슬롯 | 슬롯0 (모듈이 장착된 슬롯) |
채널 | Ch1 (사용할 채널 : Ch1(RS232), Ch2(RS422/485)) |
통신결과 | M0000 (통신결과를 저장할 디바이스 지정) |
[ 추가(A)... ] | 프레임을 새로 정의하여 추가합니다. |
[ 편집(E)... ] | 등록된 프레임의 내용을 편집합니다. |
[ 삭제(D)... ] | 등록된 프레임을 삭제합니다. |
[ 저장+런중수정 ] | On-Line 상태일 경우, 편집된 내용을 저장하고 PLC에 즉시 적용합니다. |
[ 저장(S)... ] | 변경된 내용을 저장합니다. |
프레임의 위치를 바꾸려면 잘라내기(Ctrl+X), 위치이동, 붙여넣기(Ctrl+V)를 사용하면 됩니다.
[추가] 버튼을 누르면 프레임 정의 창이 열립니다. 설정항목을 입력 합니다.
[프레임 설정 항목]
항목 | 설정 |
프레임 이름 | 프레임을 구분하기 위한 이름입니다. |
통신방향 | 송신/수신을 지정합니다. |
통신주기 | 송신프레임의 경우 지정된 주기에 따라 자동 송신합니다. |
송신에 대한 수신 프레임 | 응답에 해당하는 프레임을 지정합니다. |
[세그먼트 편집 관련 기능]
항목 | 설정 |
세그먼트 추가 | 세그먼트를 새로 정의 하여 추가 합니다. |
세그먼트 편집 | 등록된 세그먼트의 내용을 편집합니다. |
세그먼트 삭제 | 선택된 세그먼트를 삭제 합니다. |
위로 이동 | 선택된 세그먼트를 위로 이동 합니다. |
아래로 이동 | 선택된 세그먼트를 아래로 이동 합니다. |
프레임 정의 (직접 변수의 연속읽기 명령에 대한 Rx 프레임)
Glofa PLC의 직접 변수의 연속읽기 요구 프레임에 대한 응답 프레임을 해석하기 위해 프레임의 내용을 정의 합니다.
*가변 프레임 설정 : [세그먼트 유형]을 "메모리 링크" 또는 "무시"로 설정한 뒤 [길이]를 "255"로 설정.
세그먼트 정의(헤더) : 프로토콜 상의 헤더를 설정 합니다.
ACK 응답 프레임의 헤더는 ACK(06H)로 설정 합니다.
세그먼트 정의(국번) : 프로토콜 상의 국번 영역을 설정 합니다.
상대 측(LG Glofa)의 국번을 입력 합니다.
국번은 01(1)로 설정 합니다.
세그먼트 정의(명령어 + 명령어 타입) : 직접변수의 연속읽기 명령+명령어 타입 rSB(r + SB)로 설정합니다.
세그먼트 정의(블록 수+데이터 개수) : 블록 수는 1개, 데이터 개수는 10(= 5Word * 2, 0AH)로 (01+0A) 설정 합니다.
세그먼트 정의(데이터) : Glofa PLC에서 받은 5Word의 데이터를 CIMON PLC의 D00100부터 5Word에 저장 하도록 설정합니다.
5Word Data를 ASCII code로 표시하면 20byte(= 5Word * 4 Character)가 필요합니다.
세그먼트 정의(테일) : ACK 응답 프레임의 테일은 ETX(03H)로 설정합니다.
세그먼트 정의(BCC) : BCC는 헤더부터 테일까지 ASCII 값을 더한 값의 하위 1byte의 ASCII 변환 값입니다.
길이 2byte, 세그먼트 0~5, 오류검사 SUM, ASCII 데이터 변환 16진 정수로 설정합니다.
프레임 정의 완료(직접변수 연속 읽기 명령에 대한 Rx 프레임)
통신방향 : 수신프레임으로 설정합니다.
프레임 정의 (직접 변수의 연속읽기 명령에 대한 Tx 프레임)
직접변수의 연속읽기 명령을 위한 요구 프레임을 정의합니다.
세그먼트 정의(헤더) : 요구 프레임의 헤더는 ENQ(05H)로 설정 합니다.
세그먼트 정의(국번) :
국번은 01(1)로 설정 합니다.
(직접변수 연속읽기 명령에 대한 Rx프레임 내용 참조)
세그먼트 정의(명령어 + 명령어 타입) :
직접변수의 연속읽기 명령 + 명령어타입은 rSB로 설정 합니다.
(직접변수 연속읽기 명령에 대한 Rx프레임 내용 참조)
세그먼트 정의(변수길이 + 변수이름 + 데이터 개수) :
변수길이는 6Byte(06H), 직접변수는 %MW100, 데이터 개수는 5Word(05H)로 설정합니다. (06 + %MW100 + 05)
세그먼트 정의(테일) : 요구 프레임의 테일은 EOT(04H) 설정합니다.
세그먼트 정의(BCC) :
BCC는 헤더부터 테일까지 ASCII값을 더한 값의 하위 1byte의 ASCII 변환값 입니다.
길이 2byte, 세그먼트 0~4, 오류검사 SUM, ASCII 데이터 변환 16진 정수로 설정 합니다.
프레임 정의 완료(직접변수 연속읽기 명령 Tx 프레임)
통신 방향 송신 프레임, 통신주기 100msec, 송신에 대한 수신 프레임 RD_RX_1로 설정 합니다.
프레임 등록 완료(직접변수 연속 읽기 요청 및 응답 프레임 받기)
별도의 Scan 프로그램 작업 없이 프로토콜 프로그램만으로 통신을 수행 합니다.
BCC CRC16 - CCITT 사용방법
BCC 데이터를 CRC16-CCITT형태로 만들어 프레임을 송신하거나 수신할 경우 다음과 같은 순서를 따라주시면 됩니다.
SEGMENT 등록
수신 프레임 사용 시 위 그림과 같이 동일하게 설정합니다.
2. LD프로그램 작성
LD 프로그램은 각 모듈마다 조금씩 다릅니다.
CM1-SC01A, SC01B, SC02A : 통신 모듈이 입출력영역 할당을 Y40으로 받은 경우
CM3-SP02ERS/ERR/CDMA : 통신 모듈이 입출력영역 할당을 Y40으로 받은 경우
CM1-SC01A, SC01B, SC02A, CM3-SP02ERS/ERR/CDMA은 버퍼메모리 Offset 32,33,34번지에 각각 Polynomial/Remainder/XOR값을 넣어주고 적용은 CM1-SC01A, SC01B, SC02A의 경우 Yn1을 ON시키며, CM3-SP02ERS/ERR/CDMA의 경우에는 YnF를 ON시키면 됩니다.
CM3-SP32MDT/MDR/MDC의 경우
D0는 Polynomial, D1은 Remainder, D2는 XOR값입니다. 예제를 작성하기 때문에 임의로 D0영역으로 할당하였으나 실제 사용 시에는 X, Y를 제외한 다른 영역에 사용하여도 상관없습니다. 맨 마지막 줄 TO명령은 CRC16-CCITT 계산 시작 어드레스를 분명히 맞추어야 합니다. PLC S CPU모듈의 경우에는 위의 통신 모듈과 달리 LD프로그램을 위와 같이 작성하셔야 되며 별도의 설정 저장요구는 없습니다.
단 적용된 CCITT계산 값들은 전원 초기화 시 클리어되므로, 위의 LD프로그램과 같이 구성하면, 전원 초기화 후에도 정상적으로 값이 적용됩니다.