사용자 프로토콜(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형태로 만들어 프레임을 송신하거나 수신할 경우 다음과 같은 순서를 따라주시면 됩니다.

 

  1. 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프로그램과 같이 구성하면, 전원 초기화 후에도 정상적으로 값이 적용됩니다.