Senbrino(센브리노)는 아두이노 호환 보드를 PLC처럼 쓰게 해주는 래더 개발 환경입니다. PLC 엔지니어에게 익숙한 래더(LD)로 프로그램을 작성하면, Senbrino가 Arduino C++ 코드를 생성해서 컴파일하고 보드에 업로드합니다.
전용 PLC를 사기에는 규모가 작고, 아두이노를 쓰기에는 현장 유지보수가 걱정되는 자리가 있습니다. 이 글에서는 Senbrino가 그 사이를 어떻게 메우는지 정리합니다.
래더로 그리면 아두이노 코드가 됩니다
접점과 코일, 펑션(TON·TOFF·CTU·CTD·SETOUT·RSTOUT·MCS 등), 병렬 분기, 에지 검출을 키보드와 마우스로 배치합니다. 기존 PLC를 다뤄 봤다면 새로 배울 것이 거의 없습니다.
저장할 때마다 정적 린트가 돌면서 이중 코일, 끊긴 렁, 해제되지 않는 래치, 리셋 없는 카운터, 미정의 이름, 범위를 벗어난 설정값처럼 현장에서 뒤늦게 발견되면 곤란한 것들을 편집 시점에 잡아 줍니다.

flowchart LR
Ladder["래더 편집기"] --> Gen["코드 생성 — Ladder.ino · Symbols.h"]
Gen --> Build["arduino-cli 컴파일 · 업로드"]
Build --> Board["보드"]
Board -. 같은 시리얼 연결 .-> Monitor["실시간 모니터링 · 진단"]
주소 대신 이름으로 — 심볼 테이블
P0, M10, D127 같은 주소를 직접 외우지 않아도 됩니다. 이름과 주소의 매핑에 경로, 설명, 단위, 접근권한을 붙여서 관리하고, 래더에는 이름으로 씁니다.
심볼을 유지(retentive) 로 지정하면 값이 보드의 영속 메모리에 저장되고 부팅할 때 복원됩니다. 정전 후 복귀해야 하는 누적 카운트나 설정값에 씁니다.

보드를 고르고 I/O를 꽂습니다
메인 보드의 IN·OUT·ADC·DAC와 확장 슬롯에 릴레이 출력 RY08, 입력 IN08 같은 카드를 장착하면 PLC 주소가 자동으로 배정됩니다. 슬롯 번호는 카드의 로터리 스위치 위치를 그대로 따라가서, 도면과 실물이 어긋나지 않습니다.
보드 패키지(board.xml + 드라이버)는 보드 관리 화면에서 가져오기·복제·편집이 가능합니다. 새 하드웨어를 붙일 때 앱 코드를 고칠 필요가 없습니다.



생성물은 평범한 아두이노 스케치입니다
빌드할 때마다 래더·심볼·핀 정의·통신 구성에서 Ladder.ino, Symbols.h, Peripheral.ino, Communication.ino를 다시 생성하고, 내장된 arduino-cli로 컴파일해서 업로드합니다.
결과물은 블랙박스가 아니라 읽을 수 있는 아두이노 스케치라서, 손으로 써야 할 부분이 있으면 Logic.ino 한 파일에 C++를 쓰면 됩니다. 이 파일은 빌드가 덮어쓰지 않습니다. 생성 코드에는 //@LD 행,열 주석이 함께 실려서, 컴파일 에러가 나면 그 좌표로 해당 래더 셀을 되짚어 알려줍니다.

업로드한 그 선으로 모니터링과 진단
별도 케이블이나 어댑터가 필요하지 않습니다. 업로드에 쓰는 USB 연결 그대로, 접점·코일·타이머·워드 값을 래더 위에 실시간으로 표시합니다.
진단 모드에서는 미리 허가한 주소에 한해 값을 강제(force)하거나 쓸 수 있습니다. 허가하지 않은 주소는 장비 쪽에서 거부하도록(fail-closed) 되어 있습니다.


Modbus RTU/TCP
보드가 선언한 시리얼·이더넷 포트에 Modbus 장치를 붙입니다. 슬레이브로 쓰면 PLC 메모리가 그대로 노출되고, 마스터로 쓰면 모니터(폴링 블록)와 바인드(원격↔로컬 매핑) 표로 상대 장비를 읽고 씁니다.
W5500 이더넷에는 워치독과 스택 재기동이 들어 있어, 통신에 문제가 생겨도 사람이 가지 않아도 스스로 복구합니다.

AI가 래더를 읽고 씁니다
Senbrino에는 MCP 서버가 내장되어 있습니다. Claude Code나 Codex 같은 AI 코딩 도구가 래더·심볼·통신·보드 구성을 도구 호출로 직접 읽고 쓸 수 있습니다.
인터뷰, 설계, 계획, 구현, 검증으로 이어지는 진행 단계와 산출물은 AI 페이지에서 확인합니다. 진단 모드에서는 AI도 사람과 똑같이 허가된 범위 안에서만 장비 값을 읽고 실험합니다.

지원 보드
| 보드 | 비고 |
|---|---|
| GO-RP2040-CB08 (Going) | 자사 메인보드. IN 4 · OUT 4 · ADC 2 · DAC 2, 이더넷(W5500), CH1·CH2 시리얼, ID 로터리 스위치, EEPROM 유지 메모리, GO-LINK 확장 모듈 |
| GO-Pico-IO8R (Going) | 자사 컴팩트 보드. IN 4(포토커플러 절연, DC9~24V) · OUT 4(릴레이 접점, AC250V·DC30V 5A) · ADC 2(12bit), CH1 RS232C, CH2 RS485. Modbus RTU 전용 |
| Arduino Due | 표준 이더넷 쉴드, 12bit ADC·DAC |
| Arduino Mega2560 | 표준 이더넷 쉴드, 내장 EEPROM 유지 메모리 |
| Raspberry Pi Pico | W5500 모듈 |
| 그 외 | 보드 패키지(board.xml + board.cpp 드라이버)를 작성해서 추가 |
설치
설치 파일 Senbrino-win-Setup.exe를 내려받아 실행합니다. 설치 위치가 사용자 계정 아래(%LocalAppData%\Senbrino)라서 관리자 권한이 필요 없습니다.
.NET 9 데스크톱 런타임이 없으면 설치기가 알아서 내려받습니다. arduino-cli는 첫 실행 때 설치를 안내합니다. 설치한 뒤에는 앱이 시작할 때 새 버전을 확인하고, 도움말 › 업데이트 확인에서 바로 내려받아 재시작할 수 있습니다.
래더로 그리고, 생성된 아두이노 스케치를 그대로 열어 볼 수 있고, 업로드한 선으로 모니터링까지 합니다. 전용 PLC의 익숙함과 아두이노의 유연함 사이에서 하나를 포기하지 않아도 되는 자리를 만드는 것이 Senbrino의 목표입니다.
Senbrino에 대해 더 알고 싶거나 현장 적용을 검토 중이시면 편하게 문의해 주세요.
문의
- Email : [email protected]
- Insta : https://www.instagram.com/going.sen/
- Website : https://intosen.com/kr/consult/
댓글
닉네임만 입력하면 바로 댓글을 남길 수 있어요. Google/GitHub 로그인도 가능합니다.