- PC 프로그램과 PLC 프로그램 , 개발자 or 운영자
보전 부서에서 새로운 업무를 시작하고 1년이 지났다. 보전이라는 업무는 무엇이 고장이 나거나 문제가 생겼을 때 유지보수를 하는 업무로만 생각을 할 수도 있다. 그 과정에서 고장이 발생하기 전에 미리 문제가 발생할 부분을 점검을 하거나 보수를 하는 좁은 개념으로 생각할 수도 있지만 그 업무는 사실 개발과도 닿아 있다.
무엇인가 새로운 기계나 장치가 설치될 때 그 안에는 하드웨어 장치 뿐만 아니라 그 장치를 움직이기 위한 소프트웨어가 들어간다. 그리고 주변 장비와 정보를 주고 받기 위한 통신도 포함된다. 이 과정에서 이 모든것을 처음부터 개발하고 만들어 가는 것은 불가능하기에 여러 부서, 업체와 협업이 이루어진다.
보전 부서에서 다루는 설비는 세부 업무에 따라 다양하게 나누어 진다. 자동화 설비들은 대부분 PLC를 이용해서 제어가 이루어진다. 반면 내가 다루는 공구와 관련된 부분은 PLC보다는 임베디드 소프트웨어를 기반으로 하고 있다.
다양한 설비를 움직이는 PLC제어 및 임베디드 소프트웨어 그리고 설비와 설비 PC와 PLC를 위한 통신에 대해 유지보수를 하기 위해서는 처음 설계단계에서 부터 개발자와 함께 소통하기 위한 용어부터 다양한 개념에 대해 공부를 할 필요를 느꼈다. 그 과정에서 길을 잃고 무엇부터 해야 할지 그리고 어떻게 시작해야 할지 모퉁이에 서 있다.
소프트웨어 기반 차량(SDV)라는 단어와 "HMG Developer Conference" 기조연설 내용 중 "소프트웨어 개발 방식을 자동차 개발에 도입한다" 라는 내용이 인상적이었다. 그러면 소프트웨어 개발 방법이 무엇인가 라는 질문을 했을 때 그 방법에 대한 설명 중 모듈러 아키택쳐라는 부분에서 탁 무릎을 치게 되었다. 이미 만들어진 블록을 이용해서 다시 만들지 않고 그것을 사용하는 개념으로 이해를 했다.
이미 만들어진 블록을 이용해서 다시 만들지 않고 사용한다면 이 설비들에도 공통적으로 사용하고 있는 블록이 있을 것이라는 생각이 먼저 들었다. 먼저 그 블록들을 찾아보기로 했다. 먼저 각 설비에 공통으로 사용하고 있는 PLC프로그램은 어떤 공통된 블록이 있을지 찾아보기로 했다. 그리고 임베디드 기반의 설비들과 PLC 기반의 설비들을 보면서 몇가지 질문을 스스로에게 던지고 그 답을 찾아보기로 했다.
Q1. 하드웨어어에 대한 이해를 바탕으로 소프트웨어를 작성하고 만들기 위해 하드웨어 설계자와 소프트웨어 설계자는 어떻게 소통하고 정보를 교환 해야 할까?
Q2. 산업용 PC가 나오면서 PC를 기반으로 한 제어 또는 임베디드 시스템이 많이 사용되고 있지만 여전히 PLC제어 방식을 선호하는 이유는 무엇일까?
Q3. PLC제어 프로그램을 작성하는 방식은 여러가지 방식이 있는데 그중 레더로 작성하는 방식을 유독 선호하는 이유는 무엇일까?
Q4. PLC 제어 프로그램을 작성하면서 OOD(Object Oriented Program)을 사용하는 방법이 있을까?
Q5. 서로 통신하기 위한 방법 및 규약은 어떤 것이 있을까? 무엇을 우선 찾아보고 공부하는 것이 좋을까?
이어서 작성할 글에서 위 질문들에 대한 답을 찾아가는 여정을 시작해 보려고 한다. 먼저 임베디드 소프트웨어에 대한 정의와 PLC 프로그램 정의와 작성 방법, 발전 단계 등을 개략적으로 살펴보고 각 프로그램의 예시 및 구체적인 사례들을 하나씩 살펴보면서 공부해 보려고 한다. 그리고 스스로 공부한 내용을 공유와 정리의 목적으로 남겨 보려 한다. 다음 글에서는 PLC 발달 과정에서 나온 IEC61131-3 표준이 나온 배경과 내용 그리고 표준에서 만들어진 다양한 PLC 프로그램 작성 방법을 언급할 예정이다.
[참고 자료]