...
프레임은 일반적으로 다음과 같은 구성을 지닙니다. ‘헤더+바디+테일’, ‘스테이션 번호+(처리 명령+데이터)+BCC’ 그리고 ‘메시지+종료문자’의 구성이 있으며 각각의 특징은 하단에 설명합니다.
1) 헤더(HEADER) + 바디(BODY) + 테일(TAIL)
헤더 | 바디 | 테일 |
일반적으로 프레임의 시작과 끝을 알려주는 헤더와 테일로 구성되어 있으며 실제 내용은 바디 부분에 포함된 채 송/수신되는 프레임 구조입니다. 통상적으로 1:1 구조에서 널리 쓰이는 구조입니다.
2) 스테이션 번호(STATION NUMBER) + 처리 명령(COMMAND) 데이터(DATA) + BCC
스테이션 번호 | 처리 명령+데이터 | BCC |
1:N 통신을 위해 이용하는 구조입니다. 대표적으로 MODBUS가 이 구성에 해당하며, 통상적으로 ‘헤더+바디+테일’ 구조와 섞어 사용합니다. 이러한 프레임 구조는 스테이션 번호로 시작하여 중간에는 처리 명령 및 데이터, 끝에는 프레임의 신뢰성 검사를 위해 BCC라는 데이터로 구성된 채 송/수신되는 프레임 구조입니다. 통상적으로 1:N 통신에 널리 쓰이는 구조입니다.
3) 메시지(MESSAGE) + 종료 문자(END CHARACTER)
메시지 | 종료 문자 |
대화형 통신 방식이며, 프린터와 같은 장비에서 쓰입니다. 메시지 내용 뒤 <CR (Carriage Return)>, <LF(Line Feed)> 와 같은 종료 문자를 붙여 송/수신 내용의 종료를 알립니다.
세그먼트(Segment)란 |
세그먼트란 통신 프레임을 구성하는 기초 단위를 의미합니다. 2.1.2항에서 언급된 통신 헤더, 바디, 테일, 스테이션 번호, 처리 명령, 메시지 등을 세그먼트라고 합니다.
본 CIMON 사용자 프로토콜(Ethernet)에서는 세그먼트를 크게 3가지 종류로 분류 합니다. 값이 고정된 고정 세그먼트, 통신 대상 장비에서 데이터를 받아 태그에 쓰거나 태그에 쓴 값을 통신 대상 장비에 보내는 메모리 링크 세그먼트 그리고 오류검사(BCC) 세그먼트가 있습니다. 다음은 각 세그먼트에 대한 설명입니다.
1) 고정 세그먼트
고정 세그먼트는 데이터 송/수신 시 값과 길이가 변화하지 않는 데이터를 의미합니다. 예를 들어 헤더, 테일, 스테이션 번호, 종료 문자 등이 있습니다.
2)메모리 링크 세그먼트 (고정/가변 메모리 링크 세그먼트)
메모리 링크 세그먼트는 통신 대상 장비로부터 프레임을 수신하여 CIMON 태그에 값을 입력하거나, 태그에 값을 입력하여 통신 대상 장비로 송신하는 경우에 사용하는 세그먼트입니다. 메모리 링크 세그먼트는 고정 메모리 링크 세그먼트와 가변 메모리 링크 세그먼트로 분류됩니다. 고정 메모리 링크 세그먼트는 송/수신 시 데이터 수가 확정적일 때 사용합니다. 가변 메모리 링크 세그먼트는 송/수신 시 데이터 수가 가변적일 때 사용합니다. 단, 가변 메모리 링크 세그먼트의 경우 전/후의 세그먼트는 고정 세그먼트여야 합니다.
메모리 링크 세그먼트의 예로 온도 컨트롤러와 통신할 때, 현재 설정 값을 송신하는 경우를 들 수 있습니다. CIMON 사용자 프로토콜(Ethernet)의 메모리가 설정 값을 지정된 태그에 쓰고 온도 컨트롤러에 송신하게 되면, 태그에 있는 값이 온도 컨트롤러의 설정 값에 쓰여집니다. 온도 컨트롤러에서 현재 온도를 수신하는 경우 수신 프레임에 지정된 메모리 링크 세그먼트의 메모리 영역에 데이터를 수신 받아 지정된 태그에 현재 온도를 갱신하게 됩니다.
메모리 링크 세그먼트는 2가지로 분류됩니다.
고정 메모리 링크 세그먼트: 송/수신 시 데이터 길이가 확정적일 경우 사용합니다.
예) Word크기의 데이터 10개가 송/수신이 된다는 것이 확정적인 경우,
예) ASCII로 송/수신되며 5개의 문자로 송/수신이 된다는 것이 확정적인 경우
가변 메모리 링크 세그먼트: 송/수신 시 데이터 길이가 가변적일 경우 사용합니다.
예) 데이터 요청 시 요청하는 데이터 길이가 변화할 경우
예) ASCII로 송/수신되나 숫자 유효자리수가 변화할 경우
Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
|
3) 오류검사(BCC) 세그먼트
BCC는 송수신 프레임에 대한 검사용 데이터입니다.
CIMON 사용자 프로토콜(Ethernet)에서는 BCC를 이용해 지정 영역의 데이터를 1BYTE 단위로 각 SUM, XOR, MUL연산하여 오류를 검출하는 방식이 있습니다. 이 외에 다양한 CRC 종류 중 Modbus에서 사용하는 CRC(Modbus), 각 BIT CRC오류 검출 방식인 CRC8, CRC16, CRC 16-1, CRC 16-2, CRC16-CCITT 1, CRC16-CCITT 2 등의 방식을 지원합니다.
설정된 시작 세그먼트 데이터부터 끝 세그먼트 데이터를 설정된 BCC 방식을 이용하여 연산하여 데이터를 확인합니다.
데이터 처리 방법 |
CIMON 사용자 프로토콜(Ethernet)에서 제공하는 데이터 처리 방식은 크게 무변환(바이너리)[1]와 ASCII[2]가 있습니다. 이 데이터 처리 방식은 메모리 링크 영역에 적용됩니다. 사용자 임의로 데이터를 처리하여 송/수신할 수 있습니다.
CIMON 사용자 프로토콜(ethernet)에서 ASCII데이터 변환 설정은 송/수신 프레임에 데이터를 보내고 받기 전에 데이터 값을 변환하는 방법을 정의합니다.
무변환(바이너리)는 별도의 변환 절차를 밟지 않으며 설정된 세그먼트 길이만큼 인식합니다.
수신 데이터: H78 H56 H34 H12 ↔ 내부 변환 데이터: H78 H56 H34 H12
데이터를 메모리에 저장할 때, 데이터를 BYTE 단위로 나누어 저장합니다. 2BYTE나 4BYTE 크기의 데이터를 어떤 순서로 저장하는지는 CPU의 유형에 따라 달라질 수 있습니다. 보통은 ‘리틀 엔디안’과 ‘빅 엔디안’방식으로 나뉩니다. 리틀 엔디안은 하위 BYTE부터 저장하는 방식이며, 빅 엔디안은 상위 BYTE부터 저장하는 방식입니다. CIMON-SCADA는 리틀 엔디안 방식을 사용합니다.
서로 다른 데이터 저장 방식의 시스템이 서로 통신할 경우. 통신하는 데이터가 서로의 BYTE 저장 순서에 따르도록 데이터 스왑(DATA SWAP)을 진행하여야 합니다.
엔디안 방식이 두 종류이며 CIMON-SCADA가 리틀 엔디안 방식을 사용하기 때문에 이를 고려하여 데이터 스왑(DATA SWAP) 방식을 설정합니다. CIMON 사용자 프로토콜(Ethernet)에서는 데이터 스왑(DATA SWAP) 2가지를 선택할 수 있습니다. 2BYTE SWAP과 4BYTE SWAP을 선택할 수 있습니다.
2BYTE SWAP
무변환 및 16진[1] 정수에만 적용되며 연속된 2BYTE단위로 서로 자리를 바꿉니다.
*송/수신 데이터가 4BYTE데이터: H78563412변환 완료 -> H56781234
*송/수신 데이터가 2BYTE데이터: H3412 변환 완료 -> H1234
4BYTE SWAP
무변환 및 16진 정수에만 적용되며 연속된 4BYTE 단위로 서로 자리를 바꿉니다.
*송/수신 데이터가 4BYTE 데이터: H78563412 변환 완료 -> H34127856
*송/수신 데이터가 2BYTE 데이터: H3412 변환 완료 -> H0000
구성 및 운영방식 |
CIMON 사용자 프로토콜(Ethernet)를 구성하는 요소는 크게 가상 메모리와 통신 드라이버가 있습니다. CIMON 사용자 프로토콜(Ethernet)의 가상 메모리는 통신 드라이버를 통하여 통신 대상 장비와 데이터를 송/수신하며 CimonD에서 사용자가 설정한 데이터베이스의 태그와 연결되어 사용됩니다. 송/수신한 데이터는 가상 메모리 내부의 통신용 메모리 영역에 읽거나 쓸 수 있습니다. 통신 드라이버는 데이터를 송/수신 할 때 데이터의 처리 및 변환을 담당합니다. 뿐만 아니라 통신 대상 장비와 통신하기 위해 이더넷(Ethernet) 통신을 연결하는 역할을 합니다.
CIMON 사용자 프로토콜(Ethernet)이 통신 대상 장비와 통신을 할 때 운영하는 방식은 두 종류로, 마스터 모드와 슬레이브 모드가 있습니다. 마스터 모드란 슬레이브 모드에게 데이터를 요청하고 응답을 기다리는 동작을 하는 모드를 뜻하며, 슬레이브 모드란 마스터 모드로부터 받은 요청을 수신하고 그에 대하여 응답을 보내는 동작을 하는 모드를 뜻합니다.
가상 메모리는 통신용 메모리, 프레임 상태 메모리 그리고 모드 감시용 메모리로 구성되어 있습니다. 통신용 메모리는 데이터베이스의 태그를 이용하여 가상메모리에 데이터를 읽거나 쓸 때 이용합니다. 프레임 상태 메모리는 데이터베이스의 태그를 이용하여 프레임의 상태를 감시하거나 일부를 제어 할 때 쓰입니다. 모드 감시용 메모리는 데이터베이스의 태그를 통해 CIMON-SCADA가 설치된 시스템의 마스터/슬레이브 모드 여부를 확인하는데 사용됩니다.
...
CIMON 사용자 프로토콜(Ethernet)은 내부의 가상 메모리와 통신 드라이버를 이용합니다. 가상 메모리는 CimonD에서 사용자가 설정한 데이터베이스의 태그와 연결되어 사용됩니다. 통신 드라이버는 통신 대상 장비와 이더넷(Ethernet) 통신을 하도록 도우며 송/수신하는 데이터의 처리 및 변환을 담당합니다.
가상 메모리: CIMON 사용자 프로토콜(Ethernet)이 통신 대상 장비와 통신하기 위한 가상의 메모리 영역입니다. 데이터베이스와 연결되어 사용됩니다. 크게 통신용 메모리, 프레임 상태 메모리, 모드 감시용 메모리로 영역이 구분되어 있습니다.
통신 드라이버: 어떤 프레임을 수신하고 송신할 지에 대하여 데이터를 처리 및 변환하는 역할을 합니다.
사용자는 세그먼트를 정의하고, 이로 구성된 프레임을 가상 메모리에 저장합니다. 이로써 사용자는 CIMON 사용자 프로토콜(Ethernet)의 가상 메모리와 통신 드라이버를 통하여 통신 대상 장비와 통신합니다. 통신을 할 때, 사용자는 CIMON 사용자 프로토콜(Ethernet)의 가상 메모리를 참조하여 데이터베이스에 데이터를 쓰거나 읽을 수 있습니다.
마스터/슬레이브 모드 동작 방법 |
프레임 설정 시, ‘초기 수신대기 모드’의 체크 여부로 CIMON 사용자 프로토콜(Ethernet)의 기본 통신 방법을 마스터와 슬레이브 모드 중 하나로 설정 할 수 있습니다.
본 절에서는 마스터와 슬레이브 모드에 대한 설명 및 동작 방법을 안내합니다.
마스터 모드
Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
|
Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
|
Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
|