이론편 - 산업용 통신 프로토콜
제조 현장에서는 생산 중에 비정기적으로 발생하는 이벤트(이상 현상, 수작업 로그)와 및 시계열 공정 데이터를 수집하는 부분이 중요합니다. 왜냐하면 공정상 이상이 발생했을 때, 저장된 이벤트 로그가 있어야 원인을 추적하고 재발 방지대책을 수립할 수 있고, 단기/장기 공정능력(Process capability)을 관찰해야만 품질적인 측면에도 관리할 수 있기 때문입니다.
제조 현장에서는 PC보다는 PLC를 통해서 전체 시스템을 제어하는데, 이는 PLC가 환경적인(온도, 습도, 충격) 측면에서 안정성이 뛰어나고, 현장의 다양한 데이터 신호(PNP, NPN, 4~20mA, 0~10V, IO-Link 등) 처리가 가능하기 때문입니다. 따라서 이 현장의 PLC들이 가지고 있는 데이터를 획득 후 원하는 저장소에 저장하는 과정이 데이터수집에 중요한 요소입니다.
일반적으로 PLC들은 다른 기계들(PLC, IO Block, PC 등과) 통신할 때, 데이터 안정성을 위해 잘 정의된 프로토콜을 사용합니다. 산업용 프로토콜은 언어와 비슷한 개념으로 이해하면 되는데, 제가 다른 사람과 의견(데이터를) 전달(통신)하기 위해서는 블로그 글쓰기, 이메일, 대면, 전화, 화상통화 등 다양한 방법이 있을 것입니다. 현재 제가 이 블로그에 사용하는 언어는 현재는 한국어이고, 일반적인 기초교육을 받은 한국인이라면 한국어 프로토콜이 탑재되어 있으므로 저와 소통(통신)을 할 수 있는 것입니다. 반면 한국어 프로토콜이 탑재되어 있지 않은 외국인이 이 글을 본다면 통신이 안된다고 말할 수 있을 것입니다.
산업용 PLC의 프로토콜도 마찬가지입니다. PLC의 경우에 데이터 통신을 위해 Ethernet 기반을 사용한다고 하더라도, 데이터의 신뢰성을 위해 대부분 잘 정의된 프로토콜을 사용합니다. 여기서 주의해야 할 점은 각 PLC의 제조사마다 지원하는 통신 프로토콜이 상이 합니다. 이더넷 기반에서 주로 많이 사용하는 프로토콜은 Profinet, Ethernet/IP, Modbus/TCP, CC-Link, EtherCAT 등이 있는데, PLC 제조사별로 기본적으로 제공하는 프로토콜이 상이하여서 데이터 수집에 앞서 이를 확인하는 것이 중요합니다.
일반적으로 현장의 데이터들은 해당 섹터의 PLC의 메모리상에 경유하게 되고, 보통은 휘발성의 데이터로 공정 상황에 맞춰 실시간(real time)으로 메모리상의 데이터가 변합니다. 일반적으로 PLC 내 통신을 할 때는 PLC 사용자는 통신 환경설정 후 하나의 엑셀 테이블과 같은 입력(Input), 출력(Output) 레지스터(register) 영역의 데이터만을 관리하게 되는데, 일반적으로 PLC 단의 출력(Output) 영역의 데이터를 타 시스템에서 획득함으로 데이터를 연동할 수 있게 됩니다.
따라서 PC 상에서 데이터 수집을 위한 프로그램적 주요 기능을 크게 나누자면 아래와 같이 구분해볼 수 있습니다.
1. PLC가 지원하는 프로토콜에 맞추어 통신
2. 획득된 데이터를 원하는 저장소(파일, DB)에 저장
3. 1~2의 과정을 주기적으로 반복하는 기능
다음 포스팅에서는 실제로 위의 내용을 어떻게 구현할 수 있는지 기술해보도록 하겠습니다.
감사합니다.