센브릭스(Senbrix) — 라즈베리파이로 만든 PLC, 게임기로 먼저 검증했다

센브릭스(Senbrix)는 라즈베리파이 기반의 소형 PLC입니다. 공장 설비를 움직이는 그 PLC를, 전용 하드웨어 대신 표준 보드와 .NET 런타임으로 만들었습니다.

이 글은 센브릭스가 무엇이고, 어디까지 동작하는지를 정리합니다. 마침 검증용으로 만든 것이 맥주 따르기 아케이드 게임기여서, 그 이야기가 그대로 근거가 됩니다.

프로젝트 하나에 들어가는 것

센브릭스 프로젝트 화면 — 메모리 영역 크기, 통신(Modbus TCP Slave), 보드 슬롯 9개
프로젝트 화면. 왼쪽이 메모리 영역, 가운데가 통신, 오른쪽이 보드 슬롯이다.

한 프로젝트는 세 가지로 구성됩니다.

메모리 영역 — 비트 영역 P·M, 타이머 T, 카운터 C, 워드 영역 D. 크기를 프로젝트마다 정합니다. 위 화면은 P·M 각 32768비트, T·C 각 2048워드, D 4096워드입니다.

통신 — 상위 시스템과 붙는 채널입니다. 위 화면의 HMI링크는 Modbus TCP 슬레이브로, HMI가 마스터로 접속해 D 영역을 읽고 명령을 씁니다.

보드 — 슬롯 9개. 확장 보드를 꽂고 각 채널을 PLC 주소에 매핑합니다.

보드 라인업

확장 보드는 CAN 버스로 본체에 물립니다. 배선 한 쌍으로 여러 장을 데이지체인할 수 있습니다.

보드역할게임기에서 쓴 곳
AD-4아날로그 입력 4채널 (16비트)레버 위치, 조이스틱 X·Y, 버튼
DA-4아날로그 출력 4채널진동 모터 세기
IO-8디지털 입출력아케이드 버튼 4개, 표시 램프

위 프로젝트 화면에서 AD-4 #1은 입력이 D14D65에, IO-8 #2는 입력이 P0P3·출력이 P4에, DA-4 #3은 출력이 D17에 매핑돼 있습니다. 슬롯 4~9는 비어 있습니다.

이름으로 쓰는 주소

센브릭스 심볼 화면 — 이름·주소·경로·설명·접근·유지 열로 구성된 표
심볼 화면. 주소에 이름을 붙이고 설명·접근 권한·전원차단 유지 여부를 함께 관리한다.

P0 대신 BtnPlay, M33 대신 St30으로 씁니다. 심볼에는 설명과 경로(분류)를 달 수 있어서, 게임기 프로젝트는 게임기/블랙잭, 게임기/게임로직, 게임기/상태디코드 같은 트리로 정리했습니다.

유지 표시를 켠 심볼은 전원을 내려도 값이 남습니다. 순위표 기록이 여기 들어갑니다.

래더와 C#을 같이 쓴다

센브릭스 래더 편집 화면 — 심볼 이름으로 표시된 접점과 코일, 오른쪽에 연산식
래더 편집 화면. 접점·코일에 심볼 이름이 붙고, 오른쪽 출력에는 연산식을 바로 쓴다.

순서 제어와 인터록은 래더로 씁니다. 접점에 심볼 이름이 그대로 표시되고, 출력 자리에는 LeverPos = (LeverRaw - DeadBand) * 1000 / RawSpan 처럼 연산식을 바로 넣습니다.

래더로 쓰기 불편한 것 — 카드 덱 셔플, 물고기 종류 추첨, 점수 집계 같은 것 — 은 C# 으로 씁니다. 래더와 C#은 같은 메모리를 보고, 핸드셰이크 비트로 서로를 깨웁니다. 위 심볼 화면의 StartReq (C#→래더), GameInitDone (C#→래더) 같은 것이 그 신호입니다.

게임기 프로젝트는 래더가 18개 섹션, C#이 게임별로 나뉘어 있습니다.

검증을 게임기로 한 이유

PLC를 만들어놓고 나면 뭘로 검증할지가 문제가 됩니다. 실제 설비에 넣어보는 게 제일 정확한데, 그러기엔 위험하고 기회도 적습니다.

그래서 아케이드 게임기를 만들었습니다. 게임은 설비보다 요구가 까다로운 구석이 있습니다.

게임 네 종(맥주 따르기·블랙잭·슈팅·낚시)을 한 프로젝트에서 돌리는 것으로 이걸 대신했습니다. 전 과정은 맥주 게임기 시리즈 일곱 편에 적어뒀습니다.

그 과정에서 실제로 잡은 것들이 있습니다. 아날로그 출력의 비선형성, 통신 갱신 간격이 만드는 화면 끊김, 확장 보드 주소 공간이 부족해 전체를 이사한 일 — 게임기가 아니었으면 납품 현장에서 만났을 문제들입니다.

지금 상태

게임기는 며칠째 켜져 있고 네 종이 다 돌아갑니다. 상위 HMI(센바스 터치)와는 Modbus TCP로 붙어 있습니다.

아직 남은 것도 있습니다. IO-8 릴레이 출력이 동작하지 않아 표시 램프를 못 켰고, DA-4 아날로그 출력은 실측 곡선이 심하게 비선형이어서 쓸 구간을 좁게 잡아 쓰고 있습니다. 둘 다 시리즈에 적어둔 대로 원인까지는 좁혀둔 상태입니다.

댓글

로그인 없이 이름만 적고 남기실 수 있어요. 남긴 댓글은 바로 게시됩니다.

댓글을 불러오는 중…