사용자 프로토콜 (User Protocol)

"프로토콜 프로그램"을 작성하여 운용합니다.

반드시 "로컬” 베이스 – "슬롯 0" 설정을 합니다. PLC-S에서 ‘슬롯 0’는 CPU 모듈을 의미합니다. (증설 통신모듈에서 운용될 특수프로그램은 ‘슬롯 1’부터 지정합니다.)

 

번호

이 름

내 용

1

베이스

특수프로그램을 사용할 모듈이 장착된 베이스를 선택합니다.

2

슬롯

특수프로그램을 사용할 모듈이 장착된 슬롯을 선택합니다.

3

채널

특수프로그램을 사용할 모듈의 채널 번호를 선택합니다.

4

통신결과

통신블록에 등록된 통신프레임의 송/수신 결과를 통신결과 영역에 나타냅니다.

각각의 채널에 해당하는 포트 위치는 아래 그림과 같습니다.

 

설 정

Port

비 고

Ch1

COM1

RS232C

Ch2

COM2

RS485

 

송신 프레임 등록

송신 프레임 등록은 프로그램 추가-> 프로토콜 프로그램을 추가하여 작성합니다.

 

 

 

  1. 송신 프레임의 이름을 정하고 해당 프레임이 송신/수신 프레임인지 설정합니다. 송신프레임을 작성하고 있으므로 송신으로 설정합니다. 통신주기는 1로 설정하면 100ms 주기로 송신하며 0으로 설정한 경우 LD프로그램에서 SEND명령을 통하여 송신해야 합니다.

 

  1. 세그먼트 추가를 누르게 되면 아래 세그먼트 정의 창이 보입니다. 송신프레임의 V?(CR)에 대하여 작성합니다. 송신프레임 V?(CR)은 전부 고정 값이므로 세그먼트 유형은 고정값으로 설정합니다. 고정 값의 내용은 V?을 입력하고 데이터 유형은 ASCII를 설정합니다. V?을 입력 하였을 때 프로그램에서 자동적으로 V?에 대한 데이터 길이를 계산하여 길이영역에 V?에 해당하는 값이 들어갑니다. V?는 2byte이므로 2가 표시가 되어있습니다. 설정 완료 후 확인을 클릭합니다. CR에 대하여 입력을 하여야 하는데 CR은 아스키코드로 입력하지 못합니다. 그러므로 CR은 데이터 유형을 바이너리로 선택하고 CR에 해당하는 바이너리값 0D를 입력합니다. 이 때 길이는 1byte입니다. 이것으로 송신프레임 등록이 종료되었습니다.

 

수신 프레임 등록

  1. 수신프레임의 경우 위의 프레임 추가하여 프레임을 수신 프레임으로 설정 후 세그먼트 추가 합니다. 수신 프레임의 경우 장비 측의 응답 프로토콜의 경우 header + data + tail로 구성되어 있으므로 실제로 원하는 내용은 data영역입니다. 그리고 송신 프레임에 대하여 올바른 응답프레임인지 확인하여야 하므로 세그먼트를 여러 개로 분리하여 등록하여야 합니다. Header부분은 01(SPACE)로 들어옵니다. 그러므로 수신 프레임의 첫 번째 세그먼트는 고정 값 3byte, 데이터 유형은 ASCII, 내용은 “0”,”1”,” “을 입력합니다.

 

 

 

  1. 위 첫 번째 세그먼트에서 header부분을 처리하며 3byte이후에는 data가 들어옵니다. Data는 PLC-S의 연산을 하기 위하여 일정 디바이스 영역에 값을 써야 합니다.  디바이스 영역에 장비로 받은 data를 디바이스 영역에 넣기 위해 세그먼트 유형을 메모리 링크로 선택합니다. Data는 가변으로 길이가 변하므로 데이터를 가변으로 받기 위하여 길이를 255로 지정하여 가변길이 수신 기능을 이용합니다. 어드레스 영역은 D00로 받기 위하여 D00를 입력합니다. 통신 송/수신 시 실제 데이터는 ASCII 데이터가 PLC-S와 해당 장비 사이를 송/수신되게 됩니다. 그러한 ASCII데이터를 PLC-S에서 연산하기 위하여 송신 프레임에서 10진수로 바꿔줘야 합니다. ASCII데이터를 10진수로 바꾸기 위하여 아스키(ASCII)데이터 변환 설정 항목에서 변한된 데이터 종류를 10진 정수를 선택합니다. 그 후 두번째 세그먼트 등록을 마칩니다.

 

 

 

  1. 첫번째와 두번째 항목을 통하여 header와 data영역처리 되었으며 성공적인 통신을 위하여 tail 영역을 처리하여야 합니다. Tail영역을 처리하기 위하여 세그먼트를 등록합니다. Tail의 내용은 CR, LF로 구성되어 있습니다. CR과 LF는 윈도우 시스템상 입력이 불가능 하므로 해당 바이너리 값을 입력합니다. Tail의 내용은 고정 값이므로 세그먼트 유형은 고정 값으로 설정합니다. CR과 LF의 길이는 2byte이므로 길이는 2로 설정합니다. 혹은 바이너리를 선택하고 ASCII코드CR, LF에 해당하는 바이너리 값인 0D 0A를 입력하면 길이 값은 자동으로 계산되어 나타내어집니다. 해당 내용을 설정하고 세그먼트 등록을 마칩니다. 수신프레임은 장비의 응답프레임을 처리하기 위하여 3개의 세그먼트가 지정되어 있으며 1번 세그먼트는 header부분을 처리하며, 2번은 data내용을 디바이스 영역에 써주며, 3번 세그먼트는 tail영역을 처리하여 수신 프레임의 종료를 확인합니다. 송/수신 프레임을 등록 후 PLC-S에 프로그램을 다운로드를 하고 RUN을 시키면 아래와 같은 결과를 얻을 수 있습니다.

 

 

 

  1. 통신 결과

 

위 그림의 등록된 통신 프레임은 각각의 송신프레임, 수신프레임을 등록한 내용입니다. 등록된 프레임이 정상적으로 처리되면 수신프레임의 지정된 D00에 장비의 응답프레임 데이터 내용이 D00영역에 들어갑니다. 단 D000영역은 수신된 data의 길이를 의미합니다. 실제 데이터는 100이 ASCII로 들어와서 길이는 3byte이지만 가변 길이로 받게 되면 기본 4byte씩 처리하므로 4로 표시가 됩니다. 실제 데이터를 연산하기 위해서는 D0001을 사용하여 연산하여야 합니다.

 

 

송신 : SEND 명령 없이 자동 송신 주기를 설정하여 데이터를 송신하는 경우 해당 번호의 Bit에 송신 성공/실패를 나타냅니다. (통신 결과 : M0000)

송신 성공 : M0000의 프레임 번호에 해당되는 Bit를 1 Scan On 합니다.

송신 실패 : M0020의 프레임 번호에 해당되는 Bit를 1 Scan On 합니다.
                   (프레임 세그먼트 유형이 메모리 링크인 경우, 길이(byte)가 0일때 송신 실패 발생)

수신 : 자동 송신 프레임에 대해 수신프레임이 송신에 대한 수신 프레임에 정의 되어 있으면 정의된 수신 프레임을 정상적으로 수신하였는지를 나타냅니다. (통신결과 메모리 영역 : M0000)

수신 성공 : M0000의 프레임 번호에 해당되는 Bit를 1 Scan On 합니다.

수신 실패 : M0020의 프레임 번호에 해당되는 Bit를 1 Scan On 합니다.

 

 

  • 사용자 프로토콜 수신 타임아웃(Timeout) 설정방법
    To 명령으로 로컬(base:0) 3번버퍼에 타임아웃 값을 쓴다. (데이터 갯수는 반드시 1word로 설정할것)
    데이터는 10ms 단위로 100으로 설정할 경우 100 x 10 ms, 즉 1초로 설정된다.
    예) 1000ms로 설정할 경우