지금 회사에서 PLC를 하나 만들고 있다. 라즈베리파이 위에서 도는 Soft PLC다. 래더와 C#을 한 프로그램에 담고 거기에 AI를 더했다.

개발은 어느 정도 진행됐다. 그래서 지금부터 그 과정을 기록으로 남겨보려고 한다.

오래된 불편함

나는 18년 동안 산업 자동화 외주를 해왔다.

한동안 스마트팩토리가 유행이던 시기가 있었다. 당연히 그쪽 개발 요청도 많았다. 회사 성향상 시스템을 분석하고 거기서 신호를 취득하는 파트를 주로 만들었다. 내가 했던 일은 PLC의 데이터를 취득해 서버로 올리는 것. 간단한 일이다.

그런데 이게 계속 반복되니 간단하지가 않았다. 현장마다 취득하는 신호가 다르고, 프로토콜이 다르고, 메모리맵이 다르다. 서버에 보고하는 형식도 다르고, 당연히 UI도 다르다. 같은 류의 프로그램을 매번 다르게 짜야 한다. 낭비다.

이거 사실 PLC가 DB로 바로 던지면 안 되나? 그냥 서버 API를 직접 호출하면 진짜 좋겠는데. 이런 생각이 머릿속을 떠나지 않았다.

공용 스키마를 설계해서 브릿지 모듈을 만들고 수집 프로그램을 범용화해 볼까도 생각해 봤다. 당연히 단가가 안 나온다. 결국 하던 대로 했다. PLC 옆에 라즈베리파이를 붙이거나 PC를 한 대 더 세워 수집 프로그램을 돌렸다.

PLC 옆에 라즈베리파이나 PC를 세워 수집 프로그램을 돌리는 흔한 2계층 구조

이런 경우는 늘상 있다. 장비 측에서 신호 변환이나 별도 처리를 위해 미들웨어를 두는 케이스는 정말 흔하니까. 이런 류의 일들은 흔한만큼 쉽게 질린다. 일이 정말 일이 되는 노가다..

이건 때때마다 생각해온 내 오래된 불편함이다.

낯선 편리함

요즘은 일이 편하다. AI 덕이다.

처음 AI를 사용했을 땐 허! 이게 되긴 되는구나 였고, 시간이 지나면서 놀라기를 여러 번. 이제는 AI가 나보다 코드를 잘한다. 많이 잘한다.

라이브러리를 리팩토링할 때, 아두이노 제어 프로그램을 짤 때, AI 워크플로우 문서를 만들 때. 결이 다른 모든 일에 AI는 매번 기대치 이상을 해왔고, 나는 조금씩 신뢰하기 시작했다. 아니 솔직히 이제는 없이는 개발이 상상이 안 갈 정도.

신뢰하지만 솔직히 말하면 아직 낯설고 무섭다. 그렇다고 손을 뗄 수도 없다. 시대는 바뀌었고 흐름은 쫓아야 한다.

그래서 요샌 최대한 많은 부분에 AI를 붙여보려고 시도 중이다. 회사의 몇몇 제품에 시도해 보았고, 사이드 프로젝트와 라이브러리 제작, 고객의 동의가 있다면 외주 개발에도 쓰고 있다.

근데 문득 ‘이거 래더에도 AI를 붙일 수 있는거 아닌가?’ 하는 생각이 들었다.

코드를 이렇게 잘 짜는데, 래더라고 못 할까. 래더도 결국 로직이다. 접점과 코일로 그리는 그림일 뿐이다.

사실 나는 래더를 바닥부터 만들어본 적이 있다. 예전에 래더 에디터를 만들어 사용자가 작성한 래더를 아두이노 코드로 변환하는 것까지 해봤고, C#으로 기본 기능을 돌리는 래더 엔진도 짜봤다. 그래서 알았다. 막연한 일이 아니다. 가능하다.

주변의 PLC 유저들에게도 내가 느끼는 이런 낯선 편리함을 제공해 보고 싶어졌다.

끔찍한 혼종

그래서 싸그리 합쳐 보았다. 라즈베리파이, 래더, C#, 그리고 AI. 오래된 것과 새것, 산업과 웹, 사람과 AI. 도무지 어울릴 것 같지 않은 조합이다. 혼종이다..

Senbrix를 이루는 네 기둥 - 라즈베리파이, 래더, C#, AI

라즈베리파이. 싸고, 흔하고, 안정적이다. 비싸고 닫힌 전용 장비 대신, 어디서나 구하는 보드를 골랐다.

래더. 기계 제어는 래더가 맡는다. 현장에서 쓰던 그대로다. 접점과 코일, 인터록. 잘 돌던 걸 굳이 건드릴 이유는 없었다.

C#. 래더에서는 C# 메소드(함수)를 호출하고, C#에서는 PLC 메모리를 공유한다. 이것으로 PLC는 어디로든 갈 수 있는 날개를 단다.

AI. 그리고 AI가 래더와 코드를 짠다. 사람은 무엇을 원하는지만 말한다. 설계도, 구현도, 검증도 AI가 거든다. “래더도 되지 않을까” 했던 생각이, 여기 들어왔다.

이게 끔찍한 혼종이 될지, 그래도 쓸 만한 게 나올지. 개발이 진척된 지금도 아직 판단이 안 선다. 그래도 이 정체 모를 녀석에게 Senbrix라는 이름을 붙였다.


다음 편부터는 실제로 만든 이야기다. 래더와 C#을 어떻게 한 프로그램에 담았는지, 그걸 AI와 어떻게 설계했는지부터.