Xpanel을 실행할 때 현장기기와 통신을 하기 위하여 프로젝트에 통신 대상 I/O 디바이스를 등록하는 기능입니다. Xpanel은 이를 통하여 PLC 등의 하위 I/O 디바이스로부터 각종 데이터를 취득하고, XpanelDesigner로 설계한 데이터베이스는 그러한 데이터를 지속적으로 갱신/관리합니다.
약 90개의 통신 드라이버를 지원하며, Serial 통신 (RS232/422/485)과 Ethernet 통신 (UDP/TCP)을 지원합니다.
설정 화면
다음은 I/O 디바이스를 추가할 때, Serial이나 Ethernet에 관계없이 동일하게 설정하는 방법, Serial 통신 공통 설정 방법, Ethernet 통신 공통 설정 방법에 대하여 설명합니다.
I/O 디바이스 설정
[도구] – [I/O 디바이스]를 선택하여 다음과 같은 화면에 진입합니다.
항목 | 설명 |
편집 | 선택한 I/O 디바이스의 설정을 수정하는 화면을 표시합니다. |
새 디바이스 | 새로운 I/O 디바이스를 추가하고자 할 때 클릭합니다. [I/O 디바이스 종류 선택] 화면이 표시됩니다. |
닫기 | [I/O 디바이스 설정] 화면을 닫습니다. |
(1) I/O 디바이스 종류 선택
[새 디바이스] 버튼을 누르면 추가하고자 하는 I/O 디바이스의 종류 (Serial/Ethernet)을 선택하는 화면이 나타납니다.
항목 | 설명 |
디바이스 이름 | 추가하고자 하는 I/O 디바이스의 이름을 설정합니다. 한 번 저장한 이후에는 디바이스 이름을 수정할 수 없으므로 주의하여 입력하시기 바랍니다. 키보드로 입력이 가능한 특수기호 (!, @, ~, 등)는 입력할 수 없습니다. 단, “_” 기호는 예외입니다. |
디바이스 종류 | 통신 대상 장비의 통신 종류를 선택합니다. Serial과 Ethernet 중 하나를 선택할 수 있습니다. |
Ethernet 통신 디바이스
디바이스 이름을 설정하고 Ethernet 통신 디바이스를 선택하면 다음과 같은 화면이 나타납니다.
(1) 통신포트
항목 | 설명 |
디바이스 종류 | 통신 대상 장비의 프로토콜을 선택합니다. |
IP 어드레스 | 프로젝트를 실행할 장비가 CM- NP/iNP일 경우 활성화됩니다. 로컬 장비의 어드레스를 입력합니다. |
통신방식 | 통신 방식을 선택합니다. UDP/IP 또는 TCP/IP를 선택할 수 있습니다. |
네트워크 ID | 선택한 프로토콜에 따라 네트워크를 구분하기 위한 네트워크 ID가 필요할 수 있습니다. |
Node ID | 선택한 프로토콜에 따라 노드를 구분하기 위한 Node ID가 필요할 수 있습니다. |
통신 Time Out | 설정한 시간 내에 요청한 프레임에 대한 응답이 없을 경우 통신 실패로 처리하는 기능입니다. 통신 방식을 TCP로 설정한 경우 적용되지 않습니다. |
재시도 횟수 | 통신을 실패한 경우 동일한 프레임에 대하여 다시 통신을 시도하는 횟수를 지정합니다. |
Timeout 발생시 | Timeout 발생 시 Timeout 시간 동안 등록된 모든 송신 프레임을 초기화하도록 설정합니다. |
유동 IP 사용 | 유동 IP를 사용하는 경우 해당 옵션을 체크합니다. |
※ 프로토콜별 자세한 설정 방법은 해당 통신 드라이버의 도움말을 참조해주십시오.
(2) 스테이션
Xpanel과 통신할 대상 장비의 설정 사항을 입력합니다.
항목 | 설명 | |
편집 | 선택한 스테이션의 편집 화면을 엽니다. | |
삭제 | 선택한 스테이션을 삭제합니다. | |
스테이션 추가
| 연결하고자 하는 하위 I/O 디바이스의 통신설정을 입력합니다. | |
스테이션 이름 | 해당 스테이션의 이름을 입력합니다. 디바이스 이름과 동일하게 특수기호는 사용할 수 없습니다. | |
스테이션 종류 | 통신 대상 장비의 종류를 선택합니다. [통신포트] 탭에서 선택한 디바이스 종류에 따라 다른 스테이션 종류가 제공됩니다. | |
네트워크 ID | 선택한 프로토콜에 따라 네트워크를 구분하기 위한 네트워크 ID가 필요할 수 있습니다. | |
Node ID | 선택한 프로토콜에 따라 노드를 구분하기 위한 Node ID가 필요할 수 있습니다. | |
Unit ID | 선택한 프로토콜에 따라 Unit을 구분하기 위한 Unit ID가 필요할 수 있습니다. | |
IP 어드레스 | 통신 대상 장비의 IP 어드레스를 입력합니다. | |
소켓 포트 번호 | 통신 대상 장비에서 허용하고 있는 소켓 포트 번호를 입력합니다. | |
16비트 데이터 Swap | 16BIT로 이루어진 WORD의 상하위 BYTE를 Swap하여 데이터를 처리합니다. | |
32비트 데이터 Swap | 32BIT로 이루어진 DWORD의 상하위 WORD를 Swap 하여 데이터를 처리합니다. | |
문자열 데이터 Swap | 일부 통신 드라이버에서만 지원되는 기능입니다. 문자열 데이터의 BYTE 데이터 위치를 바꾸어 데이터를 처리합니다. | |
통신에러 | 통신 에러가 발생한 경우 화면에 팝업 창을 띄워 오류가 발생하였음을 표시합니다. | |
고속 통신 모드 | 선택한 디바이스 종류에 따라 활성화 여부가 달라집니다. 고속 통신 모드를 사용할지에 대한 여부를 선택합니다. | |
XPANEL 고정 소켓 포트 사용 | Xpanel에서 데이터를 보내는 소켓 포트 번호를 지정하도록 설정합니다. | |
Xpanel 소켓 | XPANEL 고정 소켓 포트 사용 옵션을 선택하였을 때 사용하고자 하는 포트 번호를 지정합니다. |
Serial 통신 디바이스
디바이스 이름을 설정하고 Serial 통신 디바이스를 선택하면 다음과 같은 화면이 나타납니다.
(1) 통신포트
항목 | 설명 | |
디바이스 종류 | 통신 대상 장비의 프로토콜을 선택합니다. | |
통신포트 | Xpanel에서 사용할 시리얼 통신 포트를 지정합니다. COM 포트는 모델에 따라 지원하는 통신 방식에 차이가 있습니다. COM 255까지 지정할 수 있습니다. Xpanel 모델별 COM 포트 통신방식에 대한 내용은 하단의 표를 참조하여 주시기 바랍니다. | |
전송속도 | 데이터 전송 속도를 지정합니다. 300~115200 bps를 지원하며, 통신 대상 장비와 같은 설정이어야 합니다. | |
Parity | 오류 발생 여부를 확인하기 위해 사용되는 추가 bit의 사용 여부를 결정합니다. 사용하지 않거나 (None) Even 또는 Odd를 선택할 수 있습니다. | |
Data Bits | 통신 중 주고받을 Data의 BIT Size를 지정합니다. 통신 대상 장비와 동일한 설정을 선택하여야 합니다. 5~7 BIT은 8 BIT보다 통신 속도가 비교적 빠르나 한글 데이터의 송수신에 오류가 발생합니다. 송수신되는 데이터에 한글이 포함된 경우 8 BIT 옵션을 선택하여 주시기 바랍니다. | |
Stop Bits | 1 BYTE의 데이터 단위를 구분하기 위하여 사용할 BIT 데이터를 설정합니다. 1BIT 또는 2BIT을 사용할 수 있으며, 통신 대상 장비의 설정과 동일하여야 합니다. | |
RTS/CTS | 데이터 흐름을 제어하는 기능입니다. RTS는 현재 데이터를 수신할 수 있는 상태임을 알리는 신호입니다. CTS는 현재 데이터를 송신할 수 있는 상태임을 알리는 신호입니다. 통신 대상 장비의 특성에 맞는 방식을 선택합니다. | |
통신방식 | 통신 대상 장비와 동일한 통신 방식을 선택합니다. RS232, RS422, RS485를 지원합니다. | |
재시도 횟수 | 통신을 실패했을 경우 동일한 프레임에 대한 재시도 횟수를 설정합니다. | |
TimeOut | 설정한 시간 내에 요청한 프레임에 대한 응답이 없을 경우 통신 실패로 처리하는 기능입니다. | |
자국 번호 | 선택한 프로토콜에 따라 국번을 지정해야 할 수 있습니다. | |
네트워크 옵션 | 선택한 프로토콜에 따라 네트워크 옵션을 지정해야 할 수 있습니다. | |
Dial Up 모뎀 사용 | 모뎀을 사용하는 경우 해당 옵션을 선택하여 상세 설정을 진행합니다. | |
전화번호 | 연결할 모뎀의 번호를 입력합니다. | |
초기화 명령 | 일반적으로 비워도 되는 영역이나, 필요한 경우 임의의 모뎀 초기화 명령을 지정합니다. | |
Dial 재시도 횟수 | Dial 실패 시 재시도할 횟수를 지정합니다. | |
Dial Time Out | 설정한 시간 내에 응답이 없을 경우 통신 실패로 처리하는 | |
송신 지연 사용 | 사용자가 설정한 송신 지연 시간만큼 Xpanel에서 데이터를 송신하는 시간을 | |
Timeout 발생시 송신 프레임 초기화 | Timeout 발생 시 Timeout 시간 동안 등록된 모든 송신 프레임을 초기화하도록 |
※ 프로토콜별 자세한 설정 방법은 해당 통신 드라이버의 도움말을 참조해주십시오.
다음은 Xpanel 모델 COM포트별로 지원되는 통신 방식입니다.
| XT04 | XT07 | XT08 | XT10 | XT12 | XT15 |
COM1 | RS232 | RS232 | RS232 | RS422/485 | RS422/485 | RS422/485 |
COM2 | RS422/485 | RS422/485 | RS422/485 | RS232 | RS232 | RS232 |
COM3 | - | - | - | RS232 | RS232 | RS232 |
(2) 스테이션
Xpanel과 통신할 대상 장비의 설정 사항을 입력합니다.
항목 | 설명 | |
편집 | 선택한 스테이션의 편집 화면을 엽니다. | |
삭제 | 선택한 스테이션을 삭제합니다. | |
스테이션 추가 | 연결하고자 하는 하위 I/O 디바이스의 통신설정을 입력합니다. | |
스테이션 이름 | 해당 스테이션의 이름을 입력합니다. 디바이스 이름과 동일하게 특수기호는 사용할 수 없습니다. | |
스테이션 종류 | 통신 대상 장비의 종류를 선택합니다. [통신포트] 탭에서 선택한 디바이스 종류에 따라 다른 스테이션 종류가 제공됩니다. | |
네트워크 ID | 선택한 프로토콜에 따라 네트워크를 구분하기 위한 네트워크 ID가 필요할 수 있습니다. | |
통신보드 국번 | 통신 대상 장비에 설정된 국번을 입력합니다. | |
16비트 데이터 Swap | 16BIT로 이루어진 WORD의 상하위 BYTE를 Swap하여 데이터를 처리합니다. | |
32비트 데이터 Swap | 32BIT로 이루어진 DWORD의 상하위 WORD를 Swap 하여 데이터를 처리합니다. | |
문자열 데이터 Swap | 일부 통신 드라이버에서만 지원되는 기능입니다. 문자열 데이터의 BYTE 데이터 위치를 바꾸어 데이터를 처리합니다. | |
CheckSum | 프로토콜의 CheckSum을 체크하여 통신합니다. | |
통신에러 | 통신 에러가 발생한 경우 화면에 팝업 창을 띄워 오류가 발생하였음을 표시합니다. |
관련 기능
본 항목에서는 통신 기능에서 자주 쓰이는 함수 또는 서브루틴(Subroutine)을 확인할 수 있습니다. 활용할 수 있는 함수 또는 서브루틴은 다음 표를 참조하여 주시기 바랍니다.
모든 명령어는 반드시 괄호를 사용하여야 합니다. |
명령어 | 설명 | ||
통신 | 함수 | OpenPort | 통신을 위한 시리얼 포트를 개방합니다. |
함수 | ClosePort | 시리얼 포트를 폐쇄합니다. | |
함수 | SendByte | 지정한 포트를 통해 BYTE 데이터를 전송합니다. | |
함수 | SendString | 지정한 포트를 통해 문자열 데이터를 전송합니다. | |
함수 | ReceiveByte | 지정한 포트를 통해 데이터를 수신합니다. | |
함수 | GetCommStatus | 지정한 스테이션의 통신 상태를 확인합니다. | |
서브루틴 | EnableDriver | 지정한 스테이션의 통신을 제어합니다. |
|
다음 명령식에서 사용되는 포트번호, 통신속도, Parity, Stop Bit 는 미리 정의된 기호를 사용합니다. 해당 내용은 다음 표를 참조하여 주시기 바랍니다.
정의된 기호 | 값 | 의미 |
_COM232_ | 0 | COM1 포트를 RS232C Mode로 사용한다. |
_COM422_ | 1 | COM1 포트를 RS422 Mode로 사용한다. |
_COM485_ | 2 | COM1 포트를 RS485 Mode로 사용한다. |
_COMAUX_ | 3 | COM2 포트를 RS232C Mode로 사용한다. |
_BPS300_ |
| 300 bps |
_BPS600_ |
| 600bps |
_BPS1200_ |
| 1200bps |
_BPS2400_ |
| 2400bps |
_BPS4800_ |
| 4800bps |
_BPS9600_ |
| 9600bps |
_BPS19200_ |
| 19200bps |
_BPS38400_ |
| 38400bps |
_BPS56000_ |
| 56000bps |
_BPS57600_ |
| 57600bps |
_BPS115200_ |
| 115200bps |
_BPS128000_ |
| 128000bps |
_BPS256000_ |
| 256000bps |
_PARITY_NONE_ |
| NO PARITY BIT |
_PARITY_EVEN_ |
| EVEN PARITY |
_PARITY_ODD_ |
| ODD PARITY |
_PARITY_MARK_ |
| MARK PARITY |
_PARITY_SPACE_ |
| SPACE PARITY |
_STOPBIT_ONE_ |
| 1 STOP BIT |
_STOPBIT_TWO_ |
| 2 STOP BITS |
_STOPBIT_ONE5_ |
| 1.5 STOP BIT |
OpenPort | 통신을 위한 시리얼 포트를 개방합니다. |
함수명 | n=OpenPort(포트번호, 통신속도, Parity, Data Bit, Stop Bit) |
기능 | 포트번호 (_COMxxx_ 의 형식으로 선언) 이 스크립트는 통신을 위해 시리얼 포트를 개방합니다. Xpanel에는 두개의 시리얼 포트(COM1, COM2)가 제공됩니다. COM1 포트는 3가지 모드(RS232C, RS422, RS485)로 설정하여 사용할 수 있습니다. I/O 디바이스 설정으로 이미 통신을 하고 있거나, 스크립트 실행 이전에 개방되어 있는 통신포트에 대해서는 스크립트를 실행할 수 없습니다. 스크립트를 실행하기 전에 사용하고자 하는 통신포트의 개방 유무를 확인하시기 바랍니다. 스크립트를 실행한 후 또는 이전에 스크립트를 실행하여 포트가 개방된 상태라면, ClosePort() 를 이용하여 포트를 닫는 동작을 실행해 주시기 바랍니다. 포트 개방시 에러가 발생하면, 스크립트는 0을 리턴합니다. 포트가 성공적으로 개방되면, 스크립트는 0이 아닌 다른 값을 리턴합니다. |
사용 예제 | COM1 통신 포트를 통신이 가능하도록 개방합니다. 통신포트는 RS485 통신방식으로 19200bps, Parity 없음, 데이터 비트 8, 스톱비트 1의 통신 파라미터를 가지고 통신할 수 있도록 설정됩니다. OpenPort(_COM485_, _BPS19200_, _PARITY_NONE_, 8, _STOPBIT_ONE_); |
ClosePort | 시리얼 포트를 폐쇄합니다. |
함수명 | n=ClosePort(포트번호) |
기능 | 포트번호 (_COMxxx_ 의 형식으로 선언) 스크립트가 실행되면 OpenPort() 함수를 이용하여 개방한 통신포트를 닫습니다. 성공적으로 폐쇄되면 0이 아닌 다른 값을, 실패하면 0을 리턴합니다. |
사용 예제 | COM1 포트를 닫습니다. ClosePort(_COM485_); |
SendByte | 지정한 포트를 통해 BYTE 데이터를 전송합니다. |
함수명 | n=SendByte(포트번호, 전송할데이터) |
기능 | 포트번호 (_COMxxx_ 의 형식으로 선언) OpenPort() 함수를 이용하여 개방된 통신포트를 통해 데이터를 전송할 때 사용합니다. 전송할 데이터는 반드시 0(0x00) 에서 255(0xFF)사이의 byte 데이터이어야 합니다. 지정된 값이 255(0xFF)보다 클 경우 1 byte이상의 값은 무시가 되고 하위 byte만 전송이 됩니다. 예를 들면 전송할 데이터로 지정된 값이 0x1234일 경우 실제 포트를 통해 전송되는 데이터는 0x34 입니다. 스크립트가 실행되기 위해서는 반드시 통신포트가 OpenPort()를 이용하여 개방되어 있는 상태이어야 합니다. 성공적으로 전송되면 0이 아닌 값을, 실패하는 경우 0을 리턴합니다. |
사용 예제 | RS485통신을 하는 COM1포트를 통해 BYTE 데이터 2를 전송합니다. SendByte(_COM485_, 2); |
SendString | 지정한 포트를 통해 문자열 데이터를 전송합니다. |
함수명 | n =SendString(포트번호, 전송할데이터) |
기능 | 포트번호 (_COMxxx_ 의 형식으로 선언) OpenPort() 함수를 이용하여 개방된 통신포트를 통해 데이터를 전송할 때 사용합니다. 전송할 데이터는 반드시 문자열 태그거나 문자열 데이터여야 합니다. 문자열 데이터를 직접 입력하는 경우 큰따옴표 (“ “)를 반드시 사용하시기 바랍니다. 스크립트가 실행되기 위해서는 반드시 통신포트가 OpenPort()를 이용하여 개방되어 있는 상태이어야 합니다. 성공적으로 전송되면 0이 아닌 값을, 실패하는 경우 0을 리턴합니다. |
사용 예제 | RS485통신을 하는 COM1포트를 통해 “TEXT” 를 전송합니다. SendString(_COM485_, “TEXT”); |
ReceiveByte | 지정한 포트를 통해 데이터를 수신합니다. |
함수명 | n=ReceiveByte(포트번호, 전송할데이터) |
기능 | 포트번호 (_COMxxx_ 의 형식으로 선언) OpenPort() 함수를 이용하여 개방된 통신포트를 통해 BYTE 데이터를 수신합니다. 성공적으로 데이터를 수신하면 전송할 데이터 (0~255)를 변수에 저장합니다. 지정된 Timeout 시간이 지날 때까지 수신되는 데이터가 없는 경우 256을 리턴합니다. 스크립트가 실행되기 위해서는 반드시 통신포트가 OpenPort()를 이용하여 개방되어 있는 상태이어야 합니다. |
사용 예제 | RS485 통신을 하는 COM1 통신 포트를 통해 byte 데이터를 수신하고, 수신된 데이터를 ‘RxData’ 로 선언된 변수에 저장합니다. VAR RxData; OpenPort(_COM485_, _BPS19200_, _PARITY_NONE_, 8, _STOPBIT_ONE_); RxData = RecieveByte(_COM485_, 1000); If(RxData < 256) { } …… |
GetCommStatus | 지정한 스테이션의 통신 상태를 확인합니다. |
함수명 | GetCommStatus(“디바이스이름”, “스테이션이름”) |
기능 | 지정한 디바이스 이름의 스테이션 이름에 대한 통신 상태를 확인합니다. 통신이 정상이면 1을, 비정상이면 0을 리턴합니다. |
사용 예제 | PLC 디바이스의 STATION 스테이션에 대한 통신 상태를 확인합니다. CommStatus = GetCommStatus(“PLC”,”STATION); |
EnableDriver | 지정한 스테이션의 통신을 제어합니다. |
서브루틴명 | EnableDriver(“디바이스이름”, “스테이션이름”, Enable/Disable) |
기능 | 지정한 디바이스 이름의 스테이션 이름에 대한 통신을 제어합니다. Enable/Disable에 1을 입력하면 Enable을 의미하며, 0을 입력하면 Disable을 의미합니다. 본 함수는 XpanelDesigner V2.52를 기준으로 MODBUS RTU만 지원합니다. |
사용 예제 | MODBUS 디바이스의 STATION 스테이션을 Enable 합니다. EnableDriver(“MODBUS”, “STATION”, 1); |
사용 예제
본 예제는 기능을 설명하기 위해 삽입된 예제입니다. 실제 사용 시 사용자의 환경에 맞게 설정하여 사용해주십시오. |
사용 예제 : CIMON PLC와 Ethernet으로 연결하기 |
(1) I/O 디바이스 설정하기
a) [도구] – [I/O Device]를 선택하여 [새 디바이스] 버튼을 클릭합니다. 다음 그림과 같은 화면에서 디바이스 이름을 설정하고 디바이스 종류로 Ethernet 통신 디바이스를 선택합니다.
b) [통신포트] 탭에서 통신하고자 하는 디바이스를 선택합니다. 본 예제에서는 ㈜싸이몬 CIMON-PLC를 선택합니다. [스테이션] 탭으로 진입하여 [스테이션 추가] 버튼을 클릭합니다.
c) [스테이션 설정] 화면에서 다음 그림과 같이 이름, 종류, 어드레스 등을 설정합니다. [등록] 버튼을 누르고 설정을 저장합니다.
(2) 화면 구성하기
a) PLC로부터 읽어온 값을 표현하기 위해 실태그를 지정합니다. 데이터베이스로 진입하여 다음과 같은 아날로그 태그를 설정합니다.
b) 태그 값을 표현하기 위해 [그림] – [태그값]을 선택하고 화면을 클릭합니다. 다음 그림과 같이 설정하고 [등록] 버튼을 클릭합니다.
(3) 동작 확인하기
a) CICON에서 다음과 같이 프로그램을 작성하고 다운로드 합니다. D0에 난수를 저장하는 프로그램입니다.
b) XpanelDesigner에서 작성한 프로젝트를 Xpanel에 쓰고 실행합니다. M00 접점이 ON 되면 D0의 값이 변화하는 것을 확인할 수 있습니다.