공장자동화의 미래, Ethernet POWERLINK
공장자동화의 미래, Ethernet POWERLINK
  • 윤진근 기자
  • 승인 2016.04.25 19:04
  • 댓글 0
이 기사를 공유합니다

스마트한 산업현장을 위한 산업용 프로토콜
 

산업용 네트워크 프로토콜. 최근 공장자동화 분야의 흐름을 눈여겨보는 이라면 한번쯤 들었음직한 개념이다. 네트워크 기술을 활용하여 장치와 시설로 연결하고, 보다 편리하고도 스마트한 생산을 실현한다. 하지만 어떻게 해야 시스템을 구축할 수 있는지, 기존 기술과의 차이점은 무엇인지, 관련 기술로는 무엇이 있는지 속속들이 알기란 쉽지 않다. 한국파워링크협회의 사재훈 사무국장이 독자들의 궁금증을 해결해줄 자료를 마련했다. 산업용 네트워크 프로토콜 중 하나인 Ethernet POWERLINK에 대해 알아보자.
도움 | 사재훈 사무국장, 한국파워링크협회·김루가(Lukas Emersberger) 연구원, 한국파워링크협회
정리 | 윤진근 기자(yoon@iomedia.co.kr)

목차

1. 파워링크란 무엇인가 (2015. 11)
 1) 왜 이더넷인가?
 2) 왜 파워링크인가?
 3) 한국파워링크협회는
2. 파워링크의 기술들
 1) 기본 개념 (2015. 12)
 2) 슬레이브 (2016. 1)
 3) 마스터 (2016. 2)
3. POWERLINK 장비를 개발해보자 (2016. 3)
4. POWERLINK의 미래

3. POWERLINK 장비를 개발해보자
쉽고 간단한 POWERLINK 장비 개발 가이드
지금까지 POWERLINK라는 프로토콜의 특징과 장점을 간략하게 알아보았다. 이어 마스터와 슬레이브 개념과, 이들 장비를 개발할 때의 이점 그리고 아주 간단한 개발 방법에 대해 살펴보았다. 이번호에서는 실제로 장비 개발 과정을 좇음으로써 실질적인 개발에 한 걸음 더 다가간다.

오픈소스 기반의 POWERLINK는 다양한 운영체제와 하드웨어 환경에서 개발이 가능하다. 또한  Sourceforge에서 윈도·리눅스·FPGA용 IP Core를 무료로 내려받을 수 있다. 이번에는 리눅스 OS를 활용한 마스터와 ALTERA FPGA가 탑재된 DE2-115 개발 보드를 활용한 슬레이브를 구성하는 방법을 알아본다.

1. 마스터
리눅스 OS에서 마스터를 개발, 적용해보자. POWERLINK 표준을 준수하는 장비를 만드는 것은 어려운 일이 아니다.

1) 첫 번째 단계는 POWERLINK 스택을 내려받는 것이다. 소스포지 누리집(openpowerlink.sourceforge.net/web/)의 Download 항목에서 원하는 버전의 POWERLINK 스택 소스를 내려받는다. 이후 이를 설치하고 원하는 폴더에 압축을 해제한다.

 
2) 두 번째로 필요한 것이 POWERLINK 설정을 돕는 가이드 문서다. 누리집의 Documentation 항목에서 각 버전에 맞는 html 하이퍼링크를 누르면 새로운 창이 열린다(openpowerlink.sourceforge.net/web/openPOWERLINK/Documentation.html). 이 창을 활용하여 실질적인 개발을 시작해보자.

 
3) openPOWERLINK Stack 항목에서 Building - Building openPOWERLINK 항목에는 CMake 소프트웨어가 필요함을 명시하고 있다.

4) 이후 Building Stack Libraries 항목을 보면 리눅스와 윈도 OS별로 스택을 빌드할 수 있는 방법이 소개되어 있다. 각 OS별로 사용되는 Command 및 빌드 타입(Debug·Release)을 설정하는 방법 등의 내용이 기술되어 있다.

 
5) 이제 CMake를 실행할 차례다. 누리집에 제시된 명령어를 CMake에 입력하면 CMake가 기본 설정의 Makefiles를 생성한다. CMake를 GUI 버전으로 사용하든, 명령어 버전으로 사용하든 기능은 동일하므로 원하는 기능을 활용하면 된다. 지금은 GUI 버전으로 작업을 진행한다.

6) openPOWERLINK 스택 소스를 내려받은 폴더를 찾아가자. openPOWERLINKstackbuild원하는 운영체제 폴더에 들어가 CMake 파일을 실행한다. 경로를 설정한 후 컨피겨 버튼을 누른다.

7) 리눅스 명령 콘솔을 열고 make install 명령을 내린다.

8) 설치를 마침과 동시에 릴리즈가 완성되었다. CMAKE_BUILD_TYPE이 Release로 표시되어있음을 확인할 수 있다.

9) 이제 디버그 라이브러리를 만들 차례다. CMAKE_BUILD_TYPE의 Release가 표시되어있던 자리에 Debug를 입력하고, Configure 버튼과 Generate 버튼을 차례로 누른다. 이후 명령 콘솔에 make install을 입력한다.

10) 기본 라이브러리 설치 폴더를 통해 라이브러리가 설치되었음을 확인한다.

 
11) 이제 데모 애플리케이션을 빌드할 차례다.
누리집의 Building-Building Demo Applications 항목에 들어가면, 리눅스와 윈도로 빌드할 수 있는 경로와 명령어가 공개되어있다. CMake를 열어 소스 코드 항목에 제시한 경로를, 바이너리 빌드 폴더에 제시한 경로 뒤에 /build/linux를 입력한다. 자동으로 빌드 과정이 진행된다.

12) 이 단계에서 CMake를 통해 커널 스택 종류를 바꿀 수 있다. 저성능·중간 성능·고성능의 3종류 데모를 지원한다. Link to Application·Linux Userspace Daemon·Linux Kurnel Module·Kernel Stack on PCIe Card 등 다양한 환경으로 변경할 수 있다. 커널 스택 종류에 따라 실시간성이 달라지므로, 필요로 하는 스택을 선택하여 성능을 결정지으면 된다.

 
이는 POWERLINK의 네트워크 자원을 유용하기 위한 스테이션 종류를 결정하는 단계다. 노멀 스테이션(폴링 방식)·체인 스테이션(체이닝 방식)·멀티플렉스 스테이션 등 다양한 방식을 설정할 수 있다.

단, 슬레이브가 멀티플렉스 스테이션을 지원하지 않으면 이 기능은 비활성화된다. 여기에 대한 정의는 .XDD 파일에 담긴다.

여기서는 고성능을 필요로 하지 않으므로 Link to Application으로 설정한다.

13) 설정을 마쳤다면 다시 Configure와 Generate 버튼을 누르자.

14) 폴더 내에서 명령 콘솔을 열고, make install 명령어를 입력한다.

15) 데모가 설치된 폴더로 넘어가, 명령 콘솔을 열고, sudo./demo_mn_console 명령어를 입력한다. 패스워드를 입력하고 나면, 시스템이 활용할 이더넷 카드를 선택할 수 있다. POWERLINK 통신 용도 사용하고자 하는 이더넷 카드 종류를 선택하면 된다.

 
 
16) 누리집의 Building Drivers 항목을 누르면 커널 드라이버, 커널 PCIe 인터페이스 드라이버, 윈도 NDIS 드라이버, 리눅스 Edrv 커널 드라이버 등 다양한 사양의 드라이버를 만들 수 있는 방법을 제시하고 있다. 각각 openPOWERLINK - Drivers - 원하는 운영체제 - 원하는 커널 종류 폴더와 대응한다.

이 단계에서 각 커널이 제시하는 명령어에 맞추어 개발하면 되지만, 여기서는 기본적인 개발과정만을 다루기로 하였으므로 상세히 기술하지 않는다.

17) 마스터 장비를 제작했지만, 이 장비만으로는 아무런 작업도 할 수 없다. 마스터에 대한 네트워크 환경 설정이 필요한 것.

환경설정을 돕는 프로그램이 openCONFIGURATOR다. 이 프로그램 역시 소스포지에서 내려받을 수 있다. openCONFIGURATOR를 설치 후 실행한다.

 
18) 적합한 경로에 프로젝트 파일을 생성한다.

19) 네트워크 사이클 타임을 설정할 수 있다. 여기서는 처음 마스터 설정할 때 고성능으로 설정하지 않았기 때문에, 실험 용도로 가정하고 20ms로 설정한다.

 
20) 이 단계에서 원하는 슬레이브 종류별로, 원하는 만큼 불러올 수 있다. 여기선 Direct I/O를 연결한다. 연결 후에는 Import XDC/XDD 버튼을 눌러 슬레이브의 XDD 파일을 임포트한다.

21) Object 항목에서 슬레이브와 통신하는 연결 종류를 설정한다. 아날로그, 디지털 입력/출력 등 다양한 옵션을 선택할 수 있다. 같은 방식으로 Sub-object 항목 역시 설정한다.

22) 장치의 TPDO와 RPDO를 설정한다(이 단계를 PDO Mapping이라 한다). TPDO는 슬레이브가 마스터 쪽으로 전송하는 데이터(Input)이며, RPDO는 슬레이브가 마스터로부터 수신하는 데이터(Output)이다.

 
이 단계를 거쳐놓으면 네트워크가 최초 시작되는 시점에서 모든 딕셔너리의 정보를 분석한 뒤, 여기에 맞추어 데이터만 주고받으면 되므로 최소한의 통신데이터만 주고받게 된다. 그리고 통신 내용에 대한 정보가 최소화되므로 암호화되는 효과도 있다.

이러한 방식은 CANopen에서 활용하는 방식이다. POWERLINK를 CANopen over Ethernet이라고 부르는 이유이다. CANopen 메커니즘을 가지고 있지만 이더넷 방식을 활용한다는 것. 기존 CANopen에서 POWERLINK 프로토콜로 업그레이드하기 용이한 이유이기도 하다.

23) TPDO와 RPDO에 대해 자세히 알아보자. TPDO는 슬레이브가 마스터에게 보내는 것을 말한다. 이 과정에서 브로드캐스트 방식을 활용하면 마스터와 슬레이브를 망라하는 모든 노드가 정보를 수신할 수 있게 된다. 슬레이브 중 한 개가 마스터에게 보내는 신호를 나머지 모든 슬레이브가 들을 수 있는 것.

이 기능은 통신에 필요한 시간을 비약적으로 단축시킨다. 만약 이 데이터 중 일부를 다른 슬레이브가 필요로 할 때, 동일 사이클 내에서 정보를 수신할 수 있기 때문. 슬레이브와 마스터를 막론하고 동시에 수신할 수 있는 이 기능을 크로스 커뮤니케이션이라고 한다. TPDO에 대한 적절한 정의만 되어 있다면 이런 기능을 구현할 수 있다.

24) openCONFIGURATOR 툴을 통해 마스터 데이터, 슬레이브 추가, 슬레이브에 정의된 채널 속성, 타임아웃 등을 정할 수 있다. 이게 안된다면 일일이 다 코딩 및 로직화 작업이 필요하므로 작업이 커진다.

25) Build 버튼을 눌러주고 컴파일하면, 저장한 폴더에 *.cdc·*.header(h)·*.xml 파일이 생성된다. 이를 카피하고, 파워링크 데모 폴더 내에 붙여넣는다. 이 작업만으로 방금 전 설정한 환경이 데모시스템에 곧바로 적용된다. 
이것으로 openCONFIGURATOR를 활용한 작업을 마치게 된다.

 
26) 슬레이브와 관련된 app.c·app.h ·xap.h 파일 등이 생성된다. ▲app.c는 실질적으로 제어할 수 있는 파일이고, ▲app.h와 ▲xap.h는 헤더 파일이다. xap.h파일에는 openCONFIGURATOR를 통해 추가한 슬레이브 데이터가 자동으로 생성되어있다. 상수와 변수 등이 정의되어 있는 것. 이 수정된 헤더 파일을 C코드 상에서 활용할 수 있다.

 
27) *.cdc 파일을 마스터 폴더 안에 붙여넣는다. POWERLINK Specification에는 오브젝트 딕셔너리에 대한 영역이 있다. 여기에 사용자 정의 영역에 대한 주소를 입력한다.

*.cdc 파일은 네트워크 상에서 구성되는 슬레이브 어드레스에 대한 실질적인 매핑 데이터를 가지고 있다. 이 파일을 파워링크 데모에 붙여넣으면, 설정한 환경 그대로 구성이 적용된다.

28) 콘솔을 열어 sudo./demo_mn_console 폴더 명령어로 파일을 연다. POWERLINK 연결에 사용할 인터페이스 종류를 선택한다. 

29) 스택 마스터 설정이 끝났다.

여기까지 걸린 시간은 한 시간이 채 걸리지 않는다. 설명을 곁들이며 개발을 진행했음에도 삼십여 분 내로 가장 간단한 POWERLINK 마스터를 개발할 수 있다.

윈도 운영체제에서도 이러한 개발을 그대로 구현할 수 있다. 하지만 한국파워링크협회는 리눅스를 기반으로 한 개발을 권장한다. 리눅스 운영체제가 리얼타임 OS에 근접하기 때문이다.

뿐만 아니라 자일링스와 알테라 등 FPGA 환경에서도 개발할 수 있다. 파워링크협회는 다양한 개발환경에 대한 데모를 지원한다.

 
2. 슬레이브
마스터 장치를 개발했다면 이제 슬레이브를 개발할 차례다. 이번에는 리눅스 OS상에서 마스터를 개발했다면, 알테라 FPGA 보드를 활용해 슬레이브를 개발하고자 한다.

이번에는 윈도 OS상에서 개발을 구현한다. 개발하는 장치의 OS가 서로 달라도(마스터는 리눅스·슬레이브는 FPGA) POWERLINK라는 동일한 프로토콜을 활용해 연결할 수 있다. 동작환경이 다를 뿐, 호환성에는 전혀 문제가 없다.
FPGA를 활용한 개발은 매뉴얼과 샘플이 제시되므로 개발이 보다 편리하다.

1) openPOWERLINK 스택을 설치한다. 누리집(openpowerlink.sourceforge.net/web/)의 Download 항목에서 원하는 버전의 POWERLINK 스택 소스를 내려받는다. 이후 이를 설치하고 원하는 폴더에 압축을 해제한다.

2) PC의 openPOWERLINK - Hardware - Board 폴더 내에 모든 보드의 폴더가 생성되어 있다. 개발을 원하는 보드 폴더 내에서 작업을 시작한다.

알테라에서 개발한 Quartus Ⅱ 툴을 활용해 보드 내부를 디자인할 수 있다. 웹에서 내려받아 무료로 사용할 수 있고 유료로도 사용할 수 있다(무료 버전에서는 플래시 메모리 사용이 어렵다).

 
3) FPGA 내부에서 메모리 크기나 CPU 크기 등을 유연하게 설정할 수 있다. 또한 내가 개발하고자 하는 슬레이브에 적합한 FPGA의 용량을 설정할 수 있다.

이번 개발에 사용된 DE2-115 개발용 보드는 고성능 FPGA와 다양한 인터페이스를 탑재하고 있기 때문에, 다양한 애플리케이션 개발을 위한 실험이 가능하다.

기본적으로 데모 프로그램을 지원하므로, Quartus Ⅱ를 열어 제너레이션을 설정하는 것만으로 보드를 활성화할 수 있다. 또한 Nios 커맨드를 활용하면 명령어만으로 제품을 구성할 수 있다.

4) 이번에는 알테라의 보드를 활용하고자 한다. 따라서 openPOWERLINK 누리집 내의 Supported Processor Platforms에 Altera Nios Ⅱ (CN) 항목을 참조한다.

 
5) Start Compilation 버튼을 누르면 Flow에 대한 작업이 진행된다. Analysis & Synthesis, Filter, Assembler, TimeQuest Timing Analysis, EDA Netist Writer 등 다양한 과정이 자동으로 진행된다. 

 
6) openPOWERLINKappsdemo_cn_embeddedbuildaltera-nios2 폴더 안에 create-this-app 파일을 찾는다.

7) 보드의 딥 스위치를 누리집에서 요구하는 대로 구성한다.

8) FPGA에 대한 컨피규레이션을 마치면 슬레이브용 소프트웨어의 make 파일을 생성한다.

9) 실행 콘솔에서 폴더를 설정하고, create-this-app 파일을 실행하면 보드에 대한 설정을 할 수 있다. 이 단계에서 보드를 어떻게 활용할지에 대해 결정해야 한다. 알테라의 고유의 기능(애플리케이션)과 PCP(POWERLINK CN Communication Processor)를 둘 다 사용할지, 두 기능을 한 칩에 구현할 것인지, 두 개의 칩을 사용할 것인지 결정해야 하는 것.

 
10) 보드 개발 단계에서 설정한 값들을 보드 안에 내려받는다. 이 경우 JTAG 인터페이스를 활용한다.

11) make download-elf 명령어를 통해 애플리케이션에 대한 내용을 보드에 내려받는다.

12) 슬레이브 데모 개발이 끝났다.

 
이제 두개의 장비가 제대로 연결되는지 확인해보자. 서로 다른 OS를 기반으로 만들어졌지만, 두 장치를 연결하면 원활히 동작하는 것을 확인할 수 있다. 이는 동일한 네트워크 프로토콜(POWERLINK)을 사용하기 때문이다. 다양한 환경에서 개발된 장비를 POWERLINK라는 프로토콜로 이어줄 수 있는 것.

개발 과정이 어렵다면 개발과정을 보다 자세히 알아보자. 한국파워링크 네이버 카페에서는 openPOWERLINK 장비 제작과정을 동영상으로 살펴볼 수 있다. openPOWERLINK 마스터는 cafe.naver.com/epsgkorea/56에서, openPOWERLINK 슬레이브는 cafe.naver.com/epsgkorea/57에서 제작 영상을 볼 수 있다.

또한 한국파워링크협회에서는 사양 지정부터 실질적인 개발 팁 제공까지, 개발자들을 다각도로 지원한다. 한국파워링크협회에 문의함으로써 POWERLINK 장비 개발에 보다 쉽게 다가갈 수 있다.
 

☞ 다음호에 계속

주요기사
이슈포토