AI로 PLC 래더를 쓰고 HMI 화면을 그린다 — Senbrix와 Senvas를 같이 쓰는 방식
설비 하나를 만들려면 두 가지가 필요합니다. 제어 로직과 조작 화면입니다. 로직은 PLC가, 화면은 HMI가 맡습니다. 보통 서로 다른 도구로 따로 만들고, 주소를 손으로 맞춥니다.
센브릭스와 센바스는 그 두 쪽을 각각 담당하는데, 둘 다 AI와 대화하며 만드는 방식을 갖고 있습니다. 이 글은 그 방식과, 둘이 어떻게 붙는지를 정리합니다.
같은 다섯 단계를 밟는다
두 제품 모두 작업이 이렇게 흘러갑니다.
인터뷰 → 설계 → 계획 → 구현 → 검증
AI가 에디터에 붙어서 단계마다 확인을 받고 넘어갑니다. 제가 하는 일은 대체로 “이렇게 하고 싶은데?” 라고 말하는 쪽입니다.
인터뷰 단계가 생각보다 큽니다. 말로 설명하다 보면 사양이 저절로 자랍니다. 게임기를 만들 때도 “토글 스위치 한 판”으로 시작했다가 인터뷰 도중 아날로그 레버로 바뀌었고, 1판이 10회차 + 순위표가 됐습니다.
단계마다 확인을 받는다는 게 중요합니다. 한 번에 다 만들어놓고 “됐나요” 하면 틀린 걸 되돌리는 비용이 큽니다.
PLC 쪽 — 래더를 쓴다
St30·PourArmed 처럼 심볼 이름이 붙는다.순서 제어와 인터록은 래더로 씁니다. 주소가 아니라 이름으로 씁니다 —
M33 이 아니라 St30, P0 이 아니라 BtnPlay 입니다. 이름과 설명이 붙어 있으면
사람이 읽기 쉬워지고, AI와 대화할 때도 “따르기 상태에서” 같은 말이 그대로 통합니다.
래더로 쓰기 불편한 것 — 카드 셔플, 점수 집계 — 은 C# 으로 씁니다. 래더와 C#은 같은 메모리를 보고, 핸드셰이크 비트로 서로를 깨웁니다.
현장 입출력은 확장 보드로 늘립니다. CAN 한 쌍에 아날로그 입력(AD-4)·출력(DA-4)· 디지털 IO(IO-8)를 물립니다.
HMI 쪽 — 화면을 그린다
화면은 Designer로 그려서 Runtime으로 띄웁니다. 드래그&드롭으로도 되고, AI와 MCP로 연동해 대화로 화면과 로직을 만들 수도 있습니다. 빈 화면에서 시작하는 부담이 줄어드는 게 실제로 큽니다.
만든 화면은 관리 런처로 기기에 배포하고, 원격에서 화면을 보고 터치까지 할 수 있습니다.
둘이 붙는 지점
PLC와 HMI는 같은 주소 공간을 봅니다. PLC의 D 영역을 HMI가 Modbus TCP로 읽고, 명령은 정해진 구간에 씁니다.
이 구조에서 중요한 원칙이 하나 있습니다. 판정의 출처를 한 곳에 둔다 — 값은 PLC에 살고, HMI는 읽어서 그리기만 합니다. 그러면 화면과 기록이 어긋날 수 없습니다. 설비에서든 게임에서든 같습니다.
검증은 게임기로 했다
만들어놓고 나면 뭘로 검증할지가 문제가 됩니다. 실제 설비에 넣어보는 게 제일 정확한데 그러기엔 위험하고 기회도 적습니다.
그래서 아케이드 게임기를 만들었습니다. 게임은 설비보다 까다로운 구석이 있습니다 — 사람이 손으로 조작하고 눈으로 보니 늦으면 바로 느껴지고, 아날로그가 필수고, 여러 종류 IO가 한 프로그램에서 동시에 돌고, 며칠 켜두면 누적 오류가 드러납니다.
게임 네 종(맥주 따르기·블랙잭·슈팅·낚시)이 한 프로젝트에서 돌아갑니다. 전 과정은 맥주 게임기 시리즈 일곱 편에 적어뒀습니다.
그 과정에서 실제로 잡은 것들이 있습니다. 아날로그 출력의 비선형성, 통신 갱신 간격이 만드는 화면 끊김, 확장 보드 주소 공간이 부족해 전체를 이사한 일 — 게임기가 아니었으면 납품 현장에서 만났을 문제들입니다.
댓글
로그인 없이 이름만 적고 남기실 수 있어요. 남긴 댓글은 바로 게시됩니다.
댓글을 불러오는 중…