Arduino Water Tank Level Monitor with PLC Connection
Arduino Water Tank Level Monitor with PLC Connection
최근 산업 현장에서는 오픈 소스 하드웨어인 아두이노(Arduino)를 산업 표준 장비인 PLC(Programmable Logic Controller)와 결합하려는 시도가 늘고 있습니다. 오늘 소개할 프로젝트는 아두이노의 유연한 그래픽 인터페이스와 PLC의 강력한 신뢰성을 결합한 **'이더넷 기반 수조 수위 모니터링 시스템'**입니다.
1. 프로젝트 개요
전통적인 산업 현장에서 PLC는 제어의 핵심이지만, 화려한 그래픽 인터페이스(HMI)를 구축하려면 비용이 많이 듭니다. 반면 아두이노는 저렴한 비용으로 뛰어난 그래픽 출력을 구현할 수 있습니다. 이 프로젝트는 Modbus TCP 통신을 통해 이 두 세계를 연결하여 가성비 높은 산업용 모니터링 솔루션을 제안합니다.

2. 주요 하드웨어 구성
- 아두이노 Mega 2560: 메인 컨트롤러로서 전체 시스템의 데이터 처리를 담당합니다.
- Arduino Ethernet Shield 2: PLC와의 산업용 네트워크 통신을 가능하게 합니다.
- TFT LCD (320x240): 수조의 상태를 실시간 그래픽으로 보여주는 인터페이스입니다.
- Siemens LOGO! 8 PLC: 아두이노로부터 받은 데이터를 바탕으로 실제 현장의 안전 판단과 장비 제어를 수행합니다.
- 수위 센서: 수조의 현재 수위를 정밀하게 측정합니다.
3. 핵심 기술: Modbus TCP를 통한 데이터 교환

산업 표준 통신 방식인 Modbus TCP를 채택하여 장치 간의 언어를 통일했습니다. 아두이노가 Modbus 서버(Server)가 되어 데이터를 저장하고, PLC가 클라이언트(Client)로서 이를 읽어오는 구조입니다.
[통신 흐름 (Data Flow)]
- 데이터 취득: 수위 센서가 아날로그 값을 측정하여 아두이노 메가로 전달합니다.
- 레지스터 매핑: 아두이노는 측정값을 Modbus 표준 주소인 Holding Register 40001 위치에 기록합니다.
- 네트워크 캡슐화: 이더넷 쉴드를 통해 데이터를 TCP/IP 패킷으로 변환하여 네트워크(기본 포트 502)로 송출합니다.
- 데이터 요청(Polling): PLC(LOGO! 8)가 설정된 주기마다 아두이노의 고유 IP 주소에 접속해 40001번 레지스터의 값을 요청합니다.
- 응답 및 처리: PLC가 수신한 데이터를 디지털 값으로 변환하여 내부 제어 로직에 입력합니다.
4. 주요 기능 및 동작 (PLC의 역할)
이 시스템은 단순한 데이터 표시를 넘어, 장비 간의 긴밀한 역할 분담으로 동작합니다.

- 시각화: 아두이노 LCD가 실시간 수위 변화를 백분율(%)과 그래픽으로 출력합니다.
- 지능형 판단: PLC는 수신된 데이터를 실시간 모니터링하며 수조의 상태를 판단합니다. (예: 85% 이상 시 '위험')
- 상태 경보 및 제어: 위험 수위 도달 시, PLC는 즉시 자신의 백라이트 색상을 빨간색으로 변경하고 경고 메시지를 띄워 작업자에게 실질적인 조치를 요구합니다.
- 안전 로직: PLC 특유의 '히스테리시스' 설정을 통해 수면 흔들림으로 인한 잦은 알람 오작동을 방지합니다.
5. 이 프로젝트의 의의

이 프로젝트는 "눈(시각화)은 아두이노가, 두뇌(판단 및 제어)는 PLC가" 담당하는 효율적인 협업 모델을 보여줍니다.
- 가성비 높은 HMI: 고가의 전용 터치 패널 없이도 훌륭한 모니터링 환경을 구축할 수 있습니다.
- 산업용 신뢰성: 아두이노의 유연함과 PLC의 견고한 제어 능력을 결합하여 시스템의 안전성을 높였습니다.
- 융합 교육: IT 기술(아두이노)과 OT 기술(PLC)의 통합을 실무적으로 배울 수 있는 최적의 사례입니다.
위즈네트에게 이 프로젝트는 "산업용 PLC와 대등하게 통신할 수 있는 신뢰성 있는 게이트웨이"임을 보여주는 강력한 레퍼런스입니다. 위즈네트가 칩 제조사를 넘어 **산업용 통신 솔루션 파트너**로 거듭날 수 있는 근거가 됩니다.
