Home Uncategorized 산업 통신 프로토콜 구현에서의 XML 적용기술(III)

산업 통신 프로토콜 구현에서의 XML 적용기술(III)

XML은 언어 자체의 특성상 플랫폼에 독립적이며, 정보의 표현 및 확장이 용이하여 분산된 필드상의 디바이스 정보들을 쉽게 통합할 수 있다. 데이터 구조와 스타일 정보가 분리되어 있어 통신 네트워크상의 기기들에 대한 DD 정보제공은 물론 웹 기반 애플리케이션에서도 동시에 활용 가능한 최적의 DD 언어로서 평가된다. < 편집자 주>
글: 문용선, 순천대학교 정보통신공학부
이영필, 레드원테크놀러지㈜ 로봇연구소
지난 기고에서는 산업 통신 프로토콜에서의 XML 기술 적용 및 사용구조에 대한 설명과 표준 EtherCAT 통신에서 사용되는 Slave device XML configuration (Slave XML DD) 파일 및 Master device XML configuration 파일 등에 대한 구조에 대하여 전반적으로 기술하였다.
본 기고에서는 EtherCAT 상에서의 XML 기술의 적용 어플리케이션으로서 네트워크상에 분산된 디바이스들을 동기화시키는 기술인 EtherCAT Distributed clock(이하 “DC”)에 대한 전반적인 설명과 이러한 DC 기술 구현을 위한 XML 기술의 적용 및 각종 설정에 대한 내용을 기술하고자 한다.
네트워크 기반의 제어시스템의 있어서 핵심이자, 최대의 과제라고 할 수 있는 것은 바로 분산된 디바이스들의 동기화 기술의 구현에 있다. 현재 산업 자동화 시스템에서 사용되는 제어용 통신 프로토콜들은 다양한 구조의 동기화 기법들을 솔루션으로서 제공하고 있다.
물론 각각의 프로토콜마다 분산된 디바이스을 동기화 시키는 방법은 각기 다르다. 그러나 큰 맥락에서 보았을 때 분산된 디바이스들을 동기화 시키는 기술은 크게 3가지로 구분된다. 분산된 디바이스들을 동기화시키는 대표적인 기법들로는 특정 메시지를 수신하였을 때 동기화 액션을 수행하는 방법으로 PROFIBUS, DeviceNet 등의 통신 프로토콜에서 사용이 되는 “Message 기반 동기화기술”, 고속의 주기적인 통신을 통하여 프로토콜 자체에서 하나의 주기적인 동기화 타이밍을 만들어 동기화를 수행하는 방식으로 SERCOS 등의 통신 프로토콜에서 사용되는 “Cyclic 동기화기술” 마지막으로 분산된 노드 내에 구현된 동기화된 클럭에 의하여 동기화가 이루어지는 기술로서 EtherCAT, EtherNet I/P 등의 Ethernet 기반의 통신 프로토콜에서 많이 사용하는 “Time 기반 동기화기술” 등이 있다.
이와 같이 산재된 분산된 디바이스들에 대한 동기화 기술들 중에서 최근 산업 자동화 시스템의 동향에서는 제어 환경에서 Ethernet 적용하는 소위 산업용 이더넷(Industrial Ethernet) 기반의 시스템의 구조가 크게 급부상 하고 있으며, 이에 따라 산업용 이더넷 기반의 제어용 프로토콜에 최적화된 동기화 기술인 Time 기반 동기화 기술이 큰 각광을 받고 있다. Time 기반 동기화 기술은 IEEE1588 기반의 분산된 클럭을 동기화하는 기술로서 대부분의 산업용 이더넷 통신 프토콜에서이 이와 같은 IEEE1588 기법을 이용한 Time 기반 동기화 기술을 채택하여 구현하고 있다.
본 기고에서는 이러한 IEEE1588 기반으로 하는 산업용 프로토콜 중의 하나인 EtherCAT 통신상에서의 DC 동기화 기술과 이러한 동기화 기술에 대한 XML Interface 설정 및 구현에 대한 내용을 전반적으로 다루고자 한다.
EtherCAT 통신에서의 DC 동기화
1) IEEE1588 기반 EtherCAT DC 동기화 기술
표준 EtherCAT 통신에서는 Time 기반 동기화 기술 등 중에 하나인 IEEE1588 클럭 동기화 기술을 이용하여 네트워크상에 분산된 디바이스들의 클럭들 동기화하고 있다.
IEEE1588 클럭 동기화 기술은 네트워크 기반 고속의 리얼타임 제어를 위한 클럭 동기화 기술로서 기본적인 클럭 동기화 기술의 개념은 네트워크 시스템 상의 디바이스들 중 하나의 디바이스를 클럭 마스터(Clock Master)로 지정하여 해당 마스터 클럭을 기준으로 하위의 디바이스들(Clock Slave)의 클럭의 “Offset”과 “Delay”를 실시간으로 보정하여 디바이스들을 동기화시키는 기술이다. 그림 1은 IEEE1588 클럭 동기화기술을 기반으로 하는 EtherCAT 클럭 동기화 구조에 대한 개념도이다.
IEEE1588 클럭 동기화 기술을 기반으로 하는 EtherCAT 클럭 동기화 기술은 다음과 같은 Offset 보정과 Delay 보정이라는 2가지 보정 기술의 구현을 통하여 분산된 디바이스들의 클럭을 동기화 하고 있다. 네트워크상에 분산된 디바이스들은 서로 다른 클럭들을 가지고 있으며, 이러한 분산된 클럭들을 동기화 하기위해서는 기본적으로 서로 다른 클럭들 간의 시간차(Offset)를 보정해 주어야 한다. 클럭들 간의 시간차의 보정은 마스터 클럭(Clock Master의 클럭)의 수신을 통한 클럭들간의 차를 계산하는 방식을 사용한다.
그러나 실제 마스터 클럭을 가지는 디바이스의 프로세스 내부 오차요인(프로토콜 스택 상에서 발생하는 Delay, Jitter 등)으로 인하여 Application layer에서 계산된 클럭시간과 실제 Physical layer에서 전송된 클럭시간 간에 차이가 발생하여 분산된 디바이스들(Clock Slave)의 정확한 클럭의 수신 및 Offset 보정을 어렵게 한다. 이것을 해결하기 위해서 디바이스들의 Physical layer 상에 송수신 클럭의 시간의 정확한 측정(Stamping)을 위한 메시지디텍터를 장착하여 실제 메시지(Sync 메시지)가 송신된 정확한 시간을 Physical layer에서 정확하게 스탬핑 하여 재전송(Follow up 메시지) 하는 방식을 사용하여 Time offset을 보정한다. Delay 보정 역시 이와 같은 구조를 기반으로 Delay에 대한 측정 및 보정을 하고 있다.
Time Offset 보정: t1-t0 = Offset
Offset 계산은 초기 Sync 메시지가 디바이스들의 Physical layer에 수신된 시간(Precise receive time)인 “t1″과 Follow up 메시지를 통하여 전송된 Sync 메시지의 정확한 송신 시간(Precise send time)인 “t0″간의 차를 이용하여 계산한다. 계산된 Offset 값은 마스터클럭을 가지는 디바이스와 분산된 디바이스들 간의 “System time”의 차이 의미한다.
Offset을 보정하기 위하여 슬레이브 클럭 디바이스들의 “Local system time”에 Offset 값의 차를 구하여 계산된 값을 다음의 Local system time으로서 적용하여 Offset을 보정한다. 그러나 이와 같은 과정을 통하여 Offset은 보정 되었지만 실제 네트워크상에서 발생하는 Delay는 그대로 남아있는 상태이다.
Delay 보정: [(t1-t0) + (t3-t2)]/2
분산된 디바이스들 간에 발생하는 Delay에 대한 계산은 Master->Slave와 Slave->Master로의 메시지 송수신 시간차의 합을 구하여 이를 2로 나누면 Device들 간의 단방향 Delay를 계산할 수 있으며 Slave device에서는 계산된 Delay를 현재의 Local system time과 의 차를 구하여 Delay를 보정한다. 보정된 값은 다음 Local system time에 적용되며, 마스터 클럭 디바이스의 System time와 동기화를 이루게 된다.
2) EtherCAT 클럭 동기화 제어 구조
EtherCAT 통신역시 상기에서 언급한 IEEE1588 클럭 동기화 구조를 그대로 사용하고 있다. 그러나 그 구현 방식은 다소 차이를 보인다. EtherCAT 통신 시스템에서는 기본적인 클럭 동기화 구조는 IEEE1588 기술을 사용하되 제어마스터(EtherCAT master)와 클럭마스터(이하 “Reference clock”)를 구분하여 사용하는 방식인 Sync master 기법을 사용하여 Offset 및 Delay 계산은 제어마스터에서, 클럭 동기화를 위한 마스터 클럭의 사용은 노드의 첫 번째 디바이스의 System time을, Offset 보정 및 Delay 보정은 Reference clock 디바이스를 제외한 모든 디바이스에서 수행하는 동기화 구조를 사용하고 있다.
물론 제어마스터와 Reference clock을 같이 사용하는 Sync slave란 기법도 적용이 되지만 제어마스터의 클럭이 정교하지 못하여 정교한 동기화가 어려우므로 크게 선호되는 방식은 아니다.
EtherCAT 시스템 상에서 DC 동기화를 기술 구현을 위하여 사용되는 기본적인 용어들은 다음과 같다.
– Master device: EtherCAT 통신 마스터로서 네트워크상의 디바이스들간에 발생하는 Offset 및 Delay를 주기적으로 계산하여 전송하며, 주기적으로 Reference clock 디바이스의 System time을 네트워크 상에 주기적으로 분산시킨다.
– Reference clock(Clock master): 클럭 동기화를 위하여 사용이 되는 마스터 클럭 디바이스를 의미하며 EtherCAT 통신에서는 일반적으로 네트워크상 첫 번째 노드에 있는 디바이스가 Reference clock으로 사용된다. Master device를 포함한 모든 디바이스들은 Reference clock의 System time을 중심으로 클럭 동기화가 이루어진다.
– Clock slave: Reference clock의 System time으로 동기화되는 디바이스들을 의미하며 EtherCAT master device에 의해 계산된 Offset 및 Delay를 기반으로 자신의 Local system time을 보정하여 클럭을 동기화 시킨다.
다음의 그림 2는 실제 DC 동기화가 이루어지는 Clock slave들의 클럭 동기화 제어 알고리즘을 나타낸다. EtherCAT 시스템에서는 클럭 동기화를 위하여 다양한 레지스터들이 존재 하며 이러한 레지스터의 정보(System time, Offset, Delay) 들은 EtherCAT master device에 의하여 주기적으로 계산되어 쓰여진다.
Slave clock을 가지는 디바이스들은 EtherCAT 마스터에 의해 전송된 Reference clock의 System time 및 Offset, Delay 값을 이용하여 그림 2와 같은 제어 구조를 통하여 실제 자신의 Local clock (Local system time)을 가/감속하여 Reference clock 과의 System time을 동기화한다. 전송된 Reference clock의 System time 값과 Slave clock이 가지는 디바이스의 Local system time 간의 Offset 및 Delay가 제로가 되었을 경우 해당 디바이스는 클럭 동기화 상태에 놓이게 된다. 이와 같은 DC 동기화가 완료되면 동기화된 신호인 Sync signal을 주기적인 펄스형태로 제공하여 Slave application을 동기화 할 수 있다. 실제 Application 개발자는 제공되는 Sync signal (SYNC0, SYNC1) 을 이용하여 다양한 동기제어 Application(I/O, Drives, etc.)들의 구성이 가능하다.
표준 EtherCAT 시스템에서는 이와 같은 DC 동기화를 위한 구조가 하드웨어적으로 구성되어 있으며, DC 동기화 생성 및 기능실행은 XML 인터페이스 기술을 기반으로 하는 EtherCAT Salve device XML configuration 파일을 통하여 종합적으로 설정하여 사용한다.
EtherCAT Slave device XML configuration 파일에서의 DC 설정
표준 EtherCAT 통신에서는 0x09000~0x9FFF 번지에 Slave device의 Distributed clock 동기제어를 위한 각종 레지스터들을 정의하고 있다. EtherCAT DC 관련 레지스터들은 Slave device XML configuration(=Slave XML DD) 파일로서 불리는 XML 객체 인터페이스 기술을 통하여 사전에 설정 및 제어가 가능하도록 되어있다. 본 장에서는 EtherCAT slave device의 DC 동기제어 구현을 위하여 필요 되는 Slave device XML configuration 파일에서의 기본적인 2가지 설정에 대하여 알아보겠다.
1) DC Sync PDI Configuration 설정
표준 EterCAT 통신에서는 DC 동기화 수행을 통하여 디바이스들의 동기제어를 위한 동기신호인 Sync signal (SYNC0, SYNC1)을 생성하여 제공한다. 이와 같은 Sync signal을 사용하기 위해서는 반드시 EtherCAT slave controller와 Slave application controller (ESC-uP) 간의 Sync PDI 인터페이스가 사전에 설정 되어야 한다.
Sync PDI 인터페이스란 ESC와 Application controller의 Sync signal 사용을 위한 내부적인 연결 인터페이스로 ESC내의 EEPROM의 설정을 기반으로 Sync PDI 연결이 결정된다. Sync PDI 인터페이스는 Slave device XML Configuration 파일에서 EEPROM 설정을 통하여 사전에 변경이 가능하다. DC Sync PDI interface에 대한 설정은 EtherCAT slave device XML configuration 내의 “Eeprom” 엘리먼트의 차일드 엘리먼트인 “ConfigData” 엘리먼트의 설정을 통하여 이루어진다.
“ConfigData” 엘리먼트는 EtherCAT slave controller(ESC)와 사용자에 의해 구현된 Slave application과의 PDI 인터페이스를 설정하는 엘리먼트로 작성된 데이터는 ESC의 EEPROM로 다운로드 되어 해당 데이터에 맞는 설정으로 변경이 된다. Sync PDI configuration을 담당하는 Slave device XML configuration 파일의 “ConfigData” 엘리먼트 작성 포맷은 그림 4와 같다.
그림 4의 비트 구조에서 “ConfigData” 엘리먼트의 4번째 바이트 값은 Sync/Latch configuration으로서 ESC 내의 0x0151 어드레스를 가지는 Sync/Latch configuration register의 데이터 설정 값을 의미한다. 실제 ESC 내의 Sync/Latch configuration register의 데이터 포맷은 그림 5와 1바이트로 구성된 비트 포맷으로 구성된다.
1바이트의 크기를 가지는 Sync/Latch configuration register는 Distributed clock 동기화를 통한 Slave application의 동기제어를 위하여 SYNC0, SYNC1의 2가지 동기화된 Sync signal을 지원하고 있다. Sync/Latch configuration register의 비트 설정에 대한 세부적인 내용은 표 1과 같다.
Sync/Latch configuration register 설정을 통하여, 클럭 동기화된 주기를 갖는 2개의 Sync signal(SYNC0, SYNC1)의 사용이 가능하다. 여기서 주의해야 할 점은 동기화된 클럭 주기를 갖는 SYNC0, SYNC1의 신호의 사용을 위해서는 2, 6번 비트가 반드시 설정되어 있어야 하며, 또한 3, 7번 비트가 반드시 해제(“0”)되어야 한다. 3, 7번 비트는 Sync signal을 PDI 인터럽트 방식으로 사용하는 설정으로서 이 비트가 허가(“1”) 되었을 경우에는 해당 Sync signal은 Process data의 read/write 이벤트에 의존하는 인터럽트 신호로서 사용되므로 분산된 클럭을 가지는 EtherCAT slave device들에 대한 동기제어를 구현할 수 없다. 클럭 동기화된 SYNC0, SYNC1 신호를 사용하기 위한 기본 비트 설정은 그림 6과 같다.
그림 6의 SYNC/Latch configuration register 설정 비트는 EtherCAT slave device XML configuration 파일의 “ConfigData” 엘리먼트에 그림 7와 같이 추가되며, 최종적으로는 그림 8과 같이 설정이 되어 SYNC PDI configuration에 대한 설정이 완료된다.
2) DC Sync Activation 설정
상기의 DC Sync PDI configuration 과정은 EtherCAT slave controller(ESC)와 slave application controller 간의 DC Sync signal 사용을 위한 내부적인 인터페이스를 구성을 위한 설정 과정이었다. 그러나 이러한 과정만으로는 실제 동기화된 Sync signal을 사용할 수 없다. 실제, Sync PDI 인터페이스 설정과정을 통하여 연결된 SYNC0, SYNC1의 사용을 위해서는 Sync signal을 사용을 관장하는 ESC 내의 Sync activation register (0x0981)를 설정을 변경해 주어야한다. 이러한 설정 역시 EtherCAT slave device XML configuration의 설정을 통하여 이루어지게 된다.
그림 9는 표준 EtherCAT slave device XML configuration 내의 DC 관련 설정을 관리하는 “DC” 엘리먼트를 나타낸다.
EtherCAT slave device XML configuration 내의 “DC” 엘리먼트는 EtherCAT 시스템 상에서의 모든 DC 관련 레지스터들에 대한 설정을 관리한다. 그 중에서도 “DC” 엘리먼트의 차일드 엘리먼트인 “OpMode” 엘리먼트에서는 SYNC0, SYNC1 등의 Sync signal에 대한 가동에 대한 설정을 관리한다. 물론 이와 같은 엘리먼트의 구조는 표준 EtherCAT slave device XML schema 구조에서 규정하고 있는 표준 엘리먼트 객체이다. “OpMode” 엘리먼트는 다시 DC 관련 세부 설정을 담당하는 여러 개의 차일드 엘리먼트로 구분이 되는데 그 중에서도 필수적으로 사용되는 엘리먼트는 다음과 같은 3가지 엘리먼트들로 구성된다.
– Name : EtherCAT 마스터에 인식되는 DC 모드 명칭을 나타내는 엘리먼트
– Desc : EtherCAT 마스터에 표기되는 DC 모드 명칭 나타내는 엘리먼트
– AssignActivate : SYNC0, SYNC1 신호의 사용 허가를 관장하는 Sync activation register를 포함한 각종 Sync signal 관련 레지스터들의 종합적인 설정을 구성하는 엘리먼트
상기의 Name, Desc 엘리먼트의 경우 DC 동기 설정시 EtherCAT 마스터와의 연계를 위한 엘리먼트들이며, AssignActivate 엘리먼트의 경우에는 ESC내의 Sync signal 관련 레지스터를 설정하는 레지스터이다. 그러므로 SYNC0, SYNC1 신호의 가동허가를 설정하기 위해서는 AssignActivate 엘리먼트를 설정해 주어야 한다. AssignActivate 엘리먼트의 데이터 포맷은 그림10과 같이 1바이트 레지스터 정보를 가진다.
그림 10의 “AssignActivate” 엘리먼트의 1번째 바이트 값은 0x0981 어드레스를 가지는 Sync activation register 비트 설정 정보가 입력된다. Sync signal 가동허가 설정을 위한 Sync activation register의 기본 비트 포맷 및 세부 비트 정보를 그림 11 및 표 2와 같다.
표 2에서 SYNC0, SYNC1 신호 펄스의 주기적인 사용을 위해서는 0번 비트를 설정해 주어야 며, 비트 1,2의 설정을 통하여 SYNC0, SYNC1 신호의 가동을 허가해 주어야 한다. 이와 같은 비트 설정에 대한 레지스터 포맷은 그림 12와 같다.
그림 12의 설정은 AssignActivate 엘리먼트의 Sync Activation register 설정을 위한 데이터값으로 입력된다.
그림 13과 같이 설정된 Sync activation 설정을 위한 실제 EtherCAT slave device XML configuration 파일의 설정은 그림 14와 같다.
EtherCAT slave device XML configuration 파일 내에서 실시한 Sync PDI configuration 설정과 Sync activation 설정 과정이 모두 완료되면 Distrubuted clock 동기화 및 동기화된 Sync signal을 발생을 위한 설정이 모두 완료되었다. 마지막 과정으로서 작성된 DC 동기화 설정 및 사용을 위한 Slave device XML configuration 파일을 ESC에 다운로드 하면 실제 Distributed clock 동기화과 수행되며 또한 클럭 동기화를 통한 Sync signal의 주기적인 발생이 이루어질 것이다. EtherCAT Slave application 개발자는 설정된 Sync signal의 수신을 통하여 실제 네트워크상에 분산된 디바이스들에 대한 다양한 동기화된 어플리케이션의 구현이 가능할 것이다.
결론
본 기고에서는 네트워크 기반 자동화 제어시스템의 Distributed clock(DC) 동기화 기술 중 하나로서, 실시간 Time 기반 클럭 동기화 기법인 IEEE1588 기술의 기본적인 구조에 대한 내용을 기술하였으며, 최신 제어용 이더넷 통신프로토콜 중의 하나인 EtherCAT 통신에서 이러한 IEEE1588 기반의 동기화 적용구조 및 EtherCAT DC 동기화 기능의 사용 및 실행을 위한 slave device XML configuration 파일의 설정 과정을 통한 XML 응용 인터페이스 기술에 대하여 기술하였다. XML 인터페이스 기술을 기반으로 하는 표준 통신 디바이스들의 경우 대부분의 디바이스 기능 설정 및 실행은 언급한 XML 파일로 실시될 수 있으며 나아가서는 웹기반의 어플리케이션과의 인터페이스도 가능한 막대한 장점을 가지고 있다.
서로 다른 디바이스 객체 인식 구조를 기반으로 하는 현 산업 통신 시스템 구조는 앞으로 이와 같은 XML 인터페이스 기술로서 통합 운용될 것으로 예상되며, 이에 어플리케이션 개발자 들은 어플리케이션 장치 개발은 물론 개발한 장치들의 네트워크 인터페이스를 위한 XML 기술에 대한 많은 연구 및 노력을 기울여야 할 것이다.
아이씨엔 매거진 2007년 01월호

아이씨엔매거진
Exit mobile version