상세보기

실시간 제어를 위한 CANopen 프로토콜 실시간 제어를 위한 CANopen 프로토콜 김재호 기자입력 2011-11-24 00:00:00

CANopen 이용한 로봇 라이브러리 보유한 ‘조브테크’가 소개하는

 

실시간 제어를 위한 CANopen 프로토콜

 

전세계적으로 필드버스의 적용이 지속적으로 확대·지속되고 있으며 국내에도 이들의 적용이 가속화 되고 있다. 이들 필드버스 중에서 CANopen은 CAN을 물리계층(전기적 전송계층)으로 하는 프로토콜로서, 최근 관심이 확대되고 있는 이더넷기반의 필드버스에도 적용되어 광범위하게 사용되고 있다. 이에 본 내용에서는 CANopen을 이용한 로봇관련 라이브러리를 90% 이상 완성한 조브테크의 도움을 받아 그 내용을 소개한다.

 

 

실시간 처리와 프로토콜
CANopen은 필드버스의 한 프로토콜이고 필드버스의 실시간(Real-Time) 전송을 위한 네트워크이므로 간단하게나마 실시간 처리와 프로토콜의 개념의 이해가 필요하여 아래와 같이 간단하게 설명한다.

 

* 실시간 처리(Real-Time Processing)
실시간은 무조건 빠르다는 의미보다는 예측 가능한 순서 또는 우선순위에 따라 데이터를 효율적으로 처리하거나 필요한 시간 내에 데이터 처리를 시작하는 의미를 가지며, 컴퓨팅에서의 실시간(Real-Time) OS 또는 실시간 처리(Real-Time Processing)와 크게 다르지 않다. 시스템분석의 용어로 설명하자면 확률적인 모델이 아닌 보다 예측 가능한 정형적(Deterministic) 모델로 분석될 수 있는 것이 리얼타임 시스템의 목표이다.

 

* 프로토콜(Protocol)
로봇을 이용하는 사례는 다양하게 증가하고 있다. 이는 World Robotics의 7가지 사례를 통해 증명된다.
소비재는 소비자를 위해 여러 버전과 다양한 제품들을 공급하며 시장의 빠른 변화를 가져오고 있고, 이러한 사실에서 더욱 더 유연한 자동화에 대한 요구가 높아진다. 여러 프로세스에 대한 로봇 프로그램은 쉽게 프로세스에서 프로세스로 전환할 수 있기에 생산의 효율적인 표준 어플리케이션도 증가됐다. 로봇과 근로자 간의 벽을 없애고 상호작용하게 되기도 했다. 이는 로봇공급 기업의 지속적인 노력이 기술개선에 집중된 결과다.

 

 

필드버스란?
대표적인 필드버스로는 PROFIBUS, CANopen, DeviceNet 그리고 관심이 증가하는 EtherCAT, EthernetIP 등의 이더넷 기반의 시스템이 있다.

 

* PROFIBUS
Siemens社에서 PLC 및 관련 제어장치를 위하여 개발/적용하였고 기타 다른 업체에서도 사용되는 시스템이다. 최하위의 전기적인 신호 규약으로 RS-485를 사용하고 버스에 대한 액세스에 대한 규약으로 Token-Passing 방식으로 사용한다. 토큰은 개별 노드가 버스를 통하여 데이터를 전송할 수 있는 권한이다. 토큰을 이용한 방식은 버스 액세스 또는 개별 노드의 전송에 대한 정밀한 제어가 가능하나 토큰의 전달 방법에 따른 복잡성과 부하기 동반된다. 과거 개발된 대부분의 필드버스들이 토큰 패싱 방식으로 사용하였다. PROFIBUS는 개별 노드가 아닌 프로세스 단위의 제어를 위해 전기적 전송방식을 이더넷을 사용한 버전도 존재한다.

 

* CAN과 CANopen
CAN(Controller Area Network)은 전기적인 전송방식 및 버스에 대한 액세스 방식을 포함하는 하위 계층에 대한 규약이며 CANopen은 CAN 위에서 운영되는 상위의 프로토콜이다. 실제 CAN은 자동차 및 제어관련 회사인 보쉬社에서 개발하여 벤츠 승용차에 적용되었고 현대 대부분의 자동차에서는 기본적으로 적용된다. CANopen은 CAN을 일반 산업용 제어에 적용하면서 확대되었다. CAN은 RS-422/485와 비슷한 Differential이고 버스 액세스 관리는 단순한 CSMA/CD를 사용한다. CAN과 CANopen에 대해서는 이후의 부분에서 자세히 설명한다. CAN을 이용하는 상위의 프로토콜은 CANopen외에 DeviceNet이 존재한다.

 

* Ethernet 기반의 필드버스
초기 이더넷은 구현 비용이 적은 버스방식의 CSMA/CD 방식을 사용하였는데 CSMA/CD가 확률적 모델로 분석될 수 있기에 실시간 분야에서는 사용이 제한적이었으나 전송속도가 증가하고 충돌(Collision) 발생 확률이 매우 낮은 스위치 기반의 이더넷(Switched Ethernet)이 보편화됨에 따라 제어와 같은 실시간 분야에 적용되기 시작하였고 이를 위한 상위 프로토콜들이 개발되었다.대표적으로 EtherCAT과 EthernetIP 등이 있다. 이더넷 기반 필드버스는 제안된 스펙으로는 기존의 다른 필드버스 대비 매우 높은 성능을 제공하나 이더넷 프레임 구조의 비효율성과 실제 구현에 있어 이들 성능적 스펙을 준수/보장하는 시스템이 흔치 않고 각 노드들이 최소 2포트의 하드웨어기반의 이더넷 스위치를 내장하여야 하므로 복잡성이 증가한다. 때문에 네트워크의 길이가 길고 노드 수가 수백 개에 이르는 경우 유효하다고 생각한다. 

 

CAN, 그리고 CANopen
CAN은 앞서의 이더넷의 경우와 마찬가지로 물리층의 버스 액세스 제어 방식은 CSMA/CD이다. CSMA/CD 방식은 실제 로직의 구현에 있어 매우 간단하며 이는 가격적으로 매우 높은 장점이 된다. 실제 우리가 잘 아는 RS-232 트랜시버 IC보다 CAN 트랜시버 IC의 가격이 더 싸다.


CSMA/CD 방식에서 충돌에 의한 전송 타이밍의 정확도 또는 효율의 저하에 대한 논란이 있었으나 이는 상위 프로토콜의 존재를 배제한 경우이며 상위 프로토콜이 형태에 따라 타이밍에 있어 확정적인 시스템이 된다. 만약 상위 프로토콜의 구조가 일반적으로 많은 사람들이 생각하는 Master-and-Slave 방식 또는 Request-and-Reply 방식에서는 전송데이터의 충돌이 발생하지 않는다. 즉, 마스터가 순차적으로 각 슬레이브(노드)에 대하여 데이터 전송을 요청하고 응답을 받는 폴링 방식에서는 자연적으로 버스의 액세스 제어가 이루어진다.


그런데 우리가 흔히 생각하는 Request-and-Reply 방식으로는 높은 효율의 실시간 네트워크를 구성할 수 없다. 이유는 Request-and-Reply 방식은 버스상의 각 노드에서 같은 종류의 데이터를 요청하는 경우 Request Message 전송에 따른 비효율성이 존재하고 슬레이브 노드가 비주기적 이벤트를 전달할 때 특히 유효하지 않다. 이와 같이 제어분야에서 실시간 네트워킹을 위해 표준화된 프로토콜중의 하나가 CANopen이며 이에 대한 설명을 시작한다.


CANopen 프로토콜은 크게 SDO, PDO, SYNC, NMT로 세부 프로토콜을 가지며 개별 노드의 데어터는 오브젝트로 표현하고 이들 오브젝트를 인덱스와 서브인덱스로 구분하여 읽고 쓸 수 있다. 노드의 구분을 위한 ID는 COB-ID라고 하며 노드의 구분과 프로토콜의 구분을 함께 지원한다

* SDO(Service Data Object) 프로토콜
흔히 쉽게 생각할 수 있는 Request-and-Reply 방식으로 Client-Server모델로도 알려져 있다. 마스터는 슬레이브 노드에서 Read/Write를 위한 요청을 하고 해당 슬레이브 노드는 이에 응답하는 방식이다. 개별 노드의 모든 오브젝트는 SDO를 이용하여 액세스 할 수 있다.

 

* PDO(Process Data Object) 프로토콜
Producer-Consumer 모델로 마스터와 슬레이브는 주기적 또는 비주기적으로 서로 약속된 오브젝트를 전송하는 것이다. 이는 상호간에 별도의 요청 없이 약속된 오브젝트들을 전송하여 전송의 효율을 높인 것이다. 하나의 PDO 메시지는 최대 8바이트까지 하나 이상의 오브젝트들을 전송할 수 있는데 예를 들어 4가지의 2바이트 오브젝트를 한번에 전송할 수 있음을 의미한다. 주로 서보드라이브의 경우 엔코더의 위치정보와 상태를 주기적 또는 비주기적으로 전송하고 마스터의 경우 목표 이동지점 등의 서보 드라이브에 전달할 때 용이하다.
PDO의 주기적 전송은 전송을 하는 노드(Producer)에서 직접 주기적으로 전송하거나 SYNC 프로토콜에 의해 동기화 된다. 비주기적 전송은 오브젝트의 값이 변할 때마다 전송하는 방식이다. 통상 각 노드는 4개씩의 송수신 PDO 메시지를 구성 할 수 있다.

 

 

* SYNC 프로토콜
많은 노드에서 매우 빈번하게 PDO가 전송되는 경우 버스 상에서의 충돌의 발생 확률이 높아지고 데이터 수집의 동시성이 보장되지 않으므로 SYNC 프로토콜을 이용하여 데이터의 동시성과 버스 액세스의 효율을 높인다.
개별 노드는 SYNC 메시지를 수신할 때마다 PDO를 전송에 대한 결정을 한다. 각 노드의 PDO는 1개 또는 그 이상의 SYNC 메시지에 대응하여 응답하도록 설정할 수 있다. 예를 들어 1번 노드의 PDO1은  1개의 SYNC 메시지에 응답하게 하고 2번 노드의 PDO1은 2개의 SYNC 메시지를 받을 때마다 전송을 하게 설정할 수 있어 노드별 PDO별 전송 빈도의 수를 조절할 수 있다. SYNC 메시지의 발생은 일반적으로 제어 구성상 마스터가 담당하지만 특정 슬레이브 노드에서 발생시킬 수 있다

 

* NMT(Network Management) 프로토콜
버스상의 노드의 네트워크 상태 및 오류 파악에 적용되는데 노드의 Boot-up, Reset 등의 제어 및 확인을 할 수 있으며 PDO 동작의 유무를 결정한다. 상기 프로토콜이 이외에 정확한 시간동기를 위한 Time Stamp Object Protocol과 오류를 알리는 Emergency Object Protocol 이 있으나 본 설명에서는 생략하기로 한다.


CANopen은 세부의 개별 프로토콜 이외에 응용계층의 통일성을 위하여 Profile을 규정하고 있다. Profile는 응용분야별 오브젝트를 규정한 것으로 CANopen을 적용하는 디바이스는 관련 Profile을 사용하여 호환성을 유지한다. 프로파일은 개별 입출력 모듈에서부터 이외에 머시닝센터 및 의료기기에 이르기까지 상당히 많은 분야의 프로파일이 존재하고 계속 만들어지고 있으며 모션제어와 관련하여 규정된 Profile은 다음과 같다.

 

* CiA 301: CANopen Application Layer and Communication Profile, CANopen의 세부프로토콜의 정의와 설정에 대한 설명이며 CANopen은 최소한 CiA 301을 포함한다.

* CiA 401: Device Profile for Generic I/O Module, 범용 입출력 모듈을 위한 오브젝트를 정의.

* CiA 402: Device Profile for drives and motion control, 서보 드라이브 및 인버터와 같은 모션 제어관련 오브젝트들의 정의.

 

서보분야에 있어 주요 모터 및 드라이브 제조사들은 대부분 CANopen을 지원하고 PLC와 같은 상위 제어기 업체들도 CANopen을 지원하고 있다. 조브테크는 로봇개발의 과정에서 개발된 서보 드라이브에 CANopen을 적용하였으며 관련 기술을반도체 및 중공업분야에 적용하였다. 현재 CANopen 기반 소형 서보 드라이브는 물론 dsPIC 및 ARM Cortex-M3 등의 MCU에 적합한 슬레이브 노드를 위한 프로토콜 스택 그리고 Windows와 Linux를 위한 마스터 프로토콜 스택을 공급하고 있다.


CAN은 구현에 있어 로직의 구조가 간단하여 MCU 및 Embedded CPU 제품군중 대다수가 CAN을 내장한 제품을 보유하고 있고 CANopen은 CAN과 함께 자동차 외에도 산업전반에 다양하게 적용되고 있다. 현재 고속 이더넷 기반의 향상된 필드버스가 있으나 성능 보장을 위해 전용 플랫폼이 필요하고 해당 성능이 요구되는 분야는 아직 제한적이기 때문에 CAN 및 CANopen 기반의 필드버스 시스템이 지속적으로 확대될 것으로 보인다.

(주)조브테크 www.jovetech.co.kr                         

 

김재호 기자
로봇시대의 글로벌 리더를 만드는 로봇기술 뉴스레터 받기
전문보기
관련 뉴스
의견나누기 회원로그인