[쉽고 간단한 안내서] TwinCAT으로 EAP 통신하기

TwinCAT에서 사용할 수 있는 통신 방법은 여러가지가 있습니다. 대표적으로 TwinCAT을 구성하는 통신 프로토콜인 ADS (Automation Device Specification)를 비롯하여, DeviceNet, CANOpen, EtherCAT과 같은 필드버스 통신, TCP/IP나 시리얼 통신 등도 사용하여 장비를 구성할 수 있습니다.

TwinCAT이 설치되어 있는 2대의 PC가 있을 경우에는 ADS 프로토콜을 활용하여 서로 통신을 할 수도 있습니다. ADS에 대해서는 이전 안내서(링크)에서 확인할 수 있습니다. 이번에는 ADS가 아닌 EAP (EtherCAT Automation Protocol)라는 통신을 살펴보고자 합니다.

 

EAP를 사용하여 이더넷으로 연결된 PC의 원하는 변수들을 실시간으로, 주기적으로 교환할 수 있습니다. EAP EtherCAT Technology GroupETG에도 규정되어 있습니다. (링크) 이런 네트워크를 통해 TwinCAT이 설치된 2대의 PC 뿐만 아니라, 기계의 부품 혹은 별도의 기계와 연결할 수도 있습니다. EAP를 사용하기 위해서는 TwinCAT real-time Ethernet 드라이버의 설치 및 지원이 필요합니다.


아래 내용을 통해 EAP의 이론적인 부분과 TwinCAT에서 어떻게 EAP 방식을 이용하여 통신할 수 있는지를 확인할 수 있습니다.

 

EAP의 기본 원리

TwinCAT EAP를 사용하면 네트워크를 통해 TwinCAT을 사용하는 컨트롤러 A에서, 마찬가지로 TwinCAT을 사용하는 컨트롤러 B로 변수를 통해 데이터를 전송할 수 있습니다. EAP를 사용하는 장치 간의 통신은 Publisher/Subscriber 구조로 이루어져 있습니다. 간단하게 메세지를 보내는 쪽은 Publisher, 받는 쪽은 Subscriber라고 볼 수 있습니다.

 

EAP Publisher의 구조

Publisher는 여러 중첩 요소로 구성되어 있습니다. 가장 기본적인 요소는 TxVariable이며, Output 변수를 정의합니다. 이 때 Output 변수는 프로세스 변수와 연결하며, 데이터 타입과 같은 몇 가지 속성을 갖고 있습니다. 데이터 타입은 자유롭게 선택할 수 있고 수백 바이트의 크기를 사용할 수 있습니다. 다만, EAP 프레임, 즉 표준 이더넷 프레임 크기를 초과하지 않아야 합니다.



그 다음은 TxPDO (Tx Process Data Object)이며, TxPDO는 여러 개의 TxVariable을 참조할 수 있습니다. 이 후 TxPDO는 순서대로 TxVariable을 정의합니다. 마찬가지로 TxPDOEAP 프레임의 최대 크기를 초과해서는 안 됩니다.

다음은 TxData 요소입니다. TxDataPublisher 변수를 나타내고 있으며, Publisher의 통신 단위로 이해할 수 있습니다. TxData 요소들은 특정한 TxPDO를 참조하여, Publisher의 이름, ID, Cycle Time Publisher 변수가 처음에 전송되는 여러가지 속성들을 정의하고 있습니다. 이러한 속성들을 갖고 Publisher 변수는 Subscriber 쪽에 객체를 정의하게 됩니다. Subscriber 쪽에서는 알맞은 Publisher 변수를 정의하고 있어야 데이터 교환을 성공적으로 할 수 있습니다.

데이터 전송 자체는 이더넷 프로토콜 혹은 UDP/IP를 통해 네트워크 기반으로 진행합니다. 비슷하게, TxFrame에서는 도착할 주소로 전송되는 TxData 목록이 할당됩니다. 이 때 TxFrame은 데이터 패킷 당 최대 데이터 길이로 제한되며, Publisher 변수를 전송하기 위해서는 Destination address, ID, Clock cycle, Link to process variable 요소가 반드시 있어야 합니다.

 

EAP Subscriber의 구조

SubscriberPublisher의 구조와 비슷합니다. 마찬가지로, Subscriber의 가장 기본적인 요소는 RxVariable이며, Input 변수를 정의하고 있습니다. RxVariable은 작업 중에 프로세스 변수가 Subscriber가 수신하고 있는 값들을 가져오게 됩니다.

RxData는 그 다음 요소입니다. Subscriber Variable을 나타내고 있으며 EAP에서는 Subscriber의 통신 단위로 볼 수 있습니다. RxData 요소들은 특정한 RxPDO를 참고하여, Subscriber의 필수 속성 (ID 및 버전)을 정의하게 됩니다. RxVariable의 데이터 유형과 RxPDO의 순서는 PublisherTxPDO와 동일해야 데이터 교환을 성공적으로 할 수 있습니다.




EtherCAT Automation 프로토콜의 구조 상, Subscriber는 수신된 데이터가 어떤 발신자가 보냈는지 신경 쓰지 않아도 괜찮습니다. 특히 프레임 안에서 Publisher 변수가 전송되는 것은 Subscriber과 상관없습니다.

 

EAP의 통신 방식

TwinCAT EAP에서는 Unicast, Multicast, Broadcast 3가지의 통신 방식을 사용할 수 있습니다.

-      Unicast: EAP 메시지를 하나의 end point에서 하나의 end point에만 전달할 수 있습니다.

-      Multicast: EAP 메시지를 하나의 end point에서 다수의 end point에 전달할 수 있습니다.

-      Broadcast: EAP 메시지를 하나의 end point에서 접근 가능한 모든 end point에 전달할 수 있습니다.

 

TwinCAT EAP 통신 시에는 MAC 주소, AMS NetID, IP 주소를 사용할 수 있으며, 통신 방식에 따라 나뉘어져 있습니다.

분류

Mac address

AMS NetID

IP Address

Unicast

Ethernet protocol

Ethernet protocol

UDP/IP

Multicast

Ethernet protocol

Not possible

UDP/IP

Broadcast

Ethernet protocol

Not possible

UDP/IP

 

EAP의 송신 메커니즘

EAP 텔레그램 전송은 트리거 메커니즘 (trigger mechanism)에 의해 트리거 됩니다. 각각의 TxData에 대해 트리거 조건이 정의되고, 이 조건이 충족되면 TxDataEAP 텔레그램으로 전송됩니다. 트리거 조건에는 총 5가지가 있습니다.

 

Poll Request RxPD

Poll Request RxPD방식은 Polling 데이터 교환 모드에서 응답 텔레그램 (response telegram) 전송을 제어합니다. TxData Poll Request Rx PD에 대한 유효한 항목이 있을 경우, TxDataPoll Request RxPD 트리거로 모드로 동작하게 됩니다. 이 방식을 사용할 때는 아래에서 소개되는 다른 방식은 비활성화 한 채로 사용해야 합니다.

 

Divider/Modulo

Divider/ModuloTxFrame 또는 TxData가 전송되는 주파수를 지정할 때 사용합니다. 주파수는 EAP를 구동하는 Task cycle time의 배수로 이루어져 있습니다. 이 방식을 사용할 때는 Poll Request RxPD 방식은 반드시 비활성화 해야 하며, 다른 방식은 영향을 미치진 않지만 비활성화 하는 것이 좋습니다.

 


Cycle Time

TxDataCycle Time에 정의된 시간에 따라 특정 간격으로 전송할 수 있습니다. Cycle timeTask cycle의 정수 배수로 이루어져야 합니다. 값이 Task cycle time의 정수 배수가 아닐 경우, 자동으로 0이 됩니다. 0us로 지정되면 Cycle Time 모드로 사용할 수 없습니다. 이 방식은 나머지 트리거 모드는 전부 비활성화 한 후 사용할 수 있습니다.

 


Change of State (COS): 변경 시 시간초과 (On change Timeout)

변수 중 하나의 값이 이전 값과 비교했을 때, 변경되었을 경우에 TxData를 전송하는 방식입니다. 최대 시간 간격은 timeout 시간으로 정의됩니다. 변수의 값이 이 시간 간격 내에 변경되지 않으면, 최대 시간 간격이 지나더라도 TxData가 전송됩니다. 시간 간격의 값은 Task cycle time의 정수 배수여야 하며, 마찬가지로 0us일 경우에는 이 모드를 사용할 수 없습니다. 이 방식은 Poll Request RxPD, Divider/Modulo, Cycle Time 방식을 비활성화 한 후에 사용할 수 있습니다.

 

 

Change of State (COS): 금지 시간 (Inhibit time)

이 방식은 TxData가 마지막으로 전송된 후, 지정한 시간이 경과하기 전까지는 다음 TxData를 전송하지 않도록 최소 시간 간격을 지정합니다. 때문에 TxData의 변수 값 중 하나라도 변경된 점이 있더라도 다음 TxData를 전송하지 않습니다. 시간 간격의 값은 Task cycle time의 정수 배수여야 하며, COSChange On Time 값보다 작아야 합니다. 이 방식은 Poll Request RxPD, Divider/Modulo, Cycle Time 방식을 비활성화 한 후에 사용할 수 있습니다.

 


 

EAP의 성능

TwinCAT EAP 장치를 사용할 경우, 네트워크 구조의 시간이 고려되어야 합니다. 다른 통신방법이 병렬로 이루어지는 구조에서는 EAP 통신 성능이 낮아질 수 있습니다.

-      스위치 (각 포트 당 Ethernet Protocol 사용)를 통해 EAP만 사용할 경우에는 10ms 이하의 통신 주기를 사용할 수 있습니다.

-      라우터 (UDP/IP를 사용할 경우)를 통해 텔레그램이 전송될 수 있는 구조에서는 약 100ms의 통신 주기를 사용할 수 있습니다.

 

 

 

 

TwinCAT 3에서 EAP 통신하기

위에서 EAP에 대한 기본적인 내용을 살펴보았습니다. 이제는 TwinCAT 3가 설치된 두 대의 PC에서 어떻게 EAP를 사용하여 통신하는지 살펴보고자 합니다.

 

시스템 구성



하드웨어적으로는 PC 1, PC 2LAN 포트를 연결하는 것이 전부입니다. 이 후 TwinCAT에서 Publisher SubscriberID를 설정하고 EAP에 맞는 프로젝트를 구성하여 EAP 통신을 이용할 수 있습니다.

 

TwinCAT 3에서 EAP 통신하기




첫번째 PC (PC 1)Publisher, 두번째 PC (PC 2)Subscriber로 설정했습니다. 이 후 Publisher에서 10을 보내고 Subscriber에서 10을 받은 상황을 보여주고 있습니다. TwinCAT에서는 EtherCAT Automation Protocol을 이용하여 EAP 구성을 할 수 있습니다. 이 때, 실제 PC에서 사용하고 있는 LAN 포트 (Adaptor)를 지정해야 합니다.

EtherCAT Automation Protocol 하위에 PublisherSubscriber를 추가할 수 있습니다. 물론 하나의 EtherCAT Automation Protocol 하위에 둘 다 생성할 수도 있습니다. Subscriber를 생성할 때에는 Publisher가 생성된 곳을 선택할 수 있습니다. Target으로 연결된 PC를 선택할 수도 있고, 프로젝트 파일을 선택할 수도 있고, 아예 변수를 새로 생성하여 Publisher의 변수와 연결할 수도 있습니다.



 

PublisherSubscriber를 추가하면, 자동으로 각 InputOutput에 변수들이 생성됩니다. 먼저 Publisher에서 생성되는 변수들은 아래와 같습니다.



-      FrameState (Input): TxFrame의 상태를 나타냅니다.

-      FrameCtrl (Output): EAP 텔레그램의 전송을 제어하기 위해 사용할 수 있습니다. 0번째 비트가 1일 때는 프레임 전송이 중단되며, 1번째 비트는 EAP 텔레그램이 IP 또는 AMS NetID로 사용할 때 1로 지정합니다.

 

-      VarState (Input): TxData의 상태를 나타냅니다.

-      VarCtrl (Output): Publisher 변수의 송신을 제어하는데 사용하며, 0번째 비트가 1이 될 경우, Publisher 변수의 전송이 중단됩니다.

-      VarData: 실제 데이터에 사용되는 변수이며, PLC 프로그램의 인스터스 변수 등과 연결하여 Subscriber에 데이터를 보낼 수 있습니다.

이어서 Subscriber에서 생성되는 변수는 아래와 같습니다.



-      FrameState (Input), FrameCtrl (Output): 실제로 사용되지는 않지만, 자동으로 생성되는 변수입니다.

 

-      VarState (Input): RxData의 상태를 나타냅니다.

-      VarCtrl (Output): Subscriber 변수의 송신을 제어하는데 사용하며, 0번째 비트가 1이 될 경우, 데이터 수신 시 버전을 확인하지 않습니다.

-      VarData: 실제 데이터에 사용되는 변수이며, Publisher에서 데이터를 받을 수 있습니다.

-      CycleIndex: Publisher의 주기를 나타냅니다.

-      Quality: 100uS의 해상도를 가진 카운터이며, 이 값은 Subscriber 변수에 대해 마지막 데이터가 수신된 이후의 시간을 나타냅니다.

 

TwinCAT 3에서 EAP 설정하기

간단하게 PublisherSubscriber를 생성하며 바로 통신할 수도 있지만, EAP에서 활용할 수 있는 통신 방식을 설정하거나 전송 매커니즘을 선택할 수도 있습니다. 위에서 확인한 기본적인 원리들이 어떻게 이용되는지 보도록 하겠습니다.

 

첫번째로, Publisher Box 부분을 보도록 하겠습니다. Publisher BoxSending Options에서는 Broadcast, Multicast, Unicast와 같은 통신 방식을 선택할 수 있습니다. Multicast를 사용할 때에는 MAC Address를 필요로 하며, Unicast를 사용할 때에는 AMS NetIDMAC Address 둘 중 하나를 선택하여 이용할 수 있습니다. BroadcastMulticast는 모든 네트워크 장치로 EAP 텔레그램이 전송되므로, 사용하는 Cycle Time에 따라 네트워크 부하를 발생할 수 있으므로 유의해야 합니다.

Data Exchange 부분에서는 EAP 매커니즘을 적용할 수가 있습니다. DividerModulo의 숫자를 설정할 수 있으며, TxFrameTxData가 전송되는 빈도를 지정할 수 있습니다.



Publisher Box 하단에 있는 Pub-Var (Publisher Variable)부분을 보면, Variable Id를 확인할 수 있습니다. 이는 Subscriber에서 인식하는 Id이며, 송신하는 데이터와 수신하는 데이터는 같은 Id를 사용해야 합니다.



Subscriber Box에서는 Receiving OptionsMulticast Configuration을 통해 속성을 지정할 수 있습니다. 우선 Receiving Options에서 Any Publisher는 모든 Publisher에 관계없이 수신하게 되며, 특정 Publisher를 지정할 경우에는 NetId를 입력하여 지정할 수 있습니다. Multicast ConfigurationMulticast 시 네트워크 인터페이스 카드에서 Report 하는지에 대한 여부를 지정할 수 있습니다.



Subscriber Box 하단의 Sub-Var (Subscribe Variable)를 보면, Variable Id를 확인할 수 있습니다. 이는 Subscriber에서 Publisher를 인식하는 Id이며, 송신하는 데이터와 수신하는 데이터는 같은 Id를 사용해야 합니다.

 


마치며

EtherCAT은 기본적으로 장비의 고 정밀, 고속 어플리케이션을 구성할 때 적합합니다. 하지만 각 설비 간에 공정을 위해서는 여러 장비가 유기적으로 운영되어야 하는데, 이럴 때 인라인 설비가 필요로 합니다. 이러한 인라인 설비에 EAP를 적용하여 더욱 고속으로, 정밀하게 이용할 수 있습니다.

기존에 TCP/IP와 같은 통신도 이용할 수 있지만 TwinCAT에서 EAP는 더욱 파워풀하게 이용하실 수 있습니다. 다른 프로그램 코드가 필요로 하지 않고, 연결하는 작업만을 통해 데이터를 주고받을 수 있습니다. TwinCAT 3를 사용하시고, 다른 PC와의 연결이 필요하신 경우에는 EAP를 활용하는 방법도 추천 드립니다.

 

 

 

 

내용에 대해 심화 내용이 필요하신 경우, 해당 내용을 댓글로 적어 주시면 다음 연재 시 반영하도록 하겠습니다.

 

문의사항은 아래 연락처로 연락 부탁드립니다.

전화 : 02-2107-3242 (대표전화, 내선번호 1: 영업 및 마케팅, 내선번호 2: 기술)

홈페이지 : https://www.beckhoff.com/kr/

제품문의 : Info-KR@beckhoff.com

기술문의 : support-kr@beckhoff.com

 

참고자료

TwinCAT 3 EAP [링크]

 

 

 

본 문서의 무단전재 및 재배포를 금지합니다

본 문서는 공식 매뉴얼이 아닌, 교육용 참고자료임을 명시합니다



2021.11.16

작성자: Beckhoff Korea / Lisa Kim

댓글

이 블로그의 인기 게시물

[IPC 메뉴얼] BECKHOFF PC 기본 설정 방법

트라이텍, EtherCAT과 DeviceNet [월간CONTROL 2013/11]

[쉽고 간단한 안내서] TwinCAT PLC HMI와 TwinCAT HMI