---
title: "Arduino Water Tank Level Monitor with PLC Connection"
url: "https://maker.wiznet.io/scott/projects/arduino-water-tank-level-monitor-with-plc-connection/"
markdown_url: "https://maker.wiznet.io/scott/projects/arduino-water-tank-level-monitor-with-plc-connection/md"
type: "UCC: User Created Content"
author: "Miguel Angel Castillo Martinez"
author_url: "https://www.hackster.io/pandora/arduino-water-tank-level-monitor-with-plc-connection-6c9eaa"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Miguel Angel Castillo Martinez"
original_url: "https://www.hackster.io/pandora/arduino-water-tank-level-monitor-with-plc-connection-6c9eaa"
published: "2025-12-18"
language: "en"
likes: 0
views: 340
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Arduino Water Tank Level Monitor with PLC Connection

> Arduino Water Tank Level Monitor with PLC Connection

Original author: Miguel Angel Castillo Martinez (source: https://www.hackster.io/pandora/arduino-water-tank-level-monitor-with-plc-connection-6c9eaa)

## Article

최근 산업 현장에서는 오픈 소스 하드웨어인 **아두이노(Arduino)**를 산업 표준 장비인 **PLC(Programmable Logic Controller)**와 결합하려는 시도가 늘고 있습니다. 오늘 소개할 프로젝트는 아두이노의 유연한 그래픽 인터페이스와 PLC의 강력한 신뢰성을 결합한 '**이더넷 기반 수조 수위 모니터링 시스템**'입니다.

## 1. 프로젝트 개요

전통적인 산업 현장에서 PLC는 제어의 핵심이지만, 화려한 그래픽 인터페이스(HMI)를 구축하려면 비용이 많이 듭니다. 반면 아두이노는 저렴한 비용으로 뛰어난 그래픽 출력을 구현할 수 있습니다. 이 프로젝트는 **Modbus TCP 통신**을 통해 이 두 세계를 연결하여 가성비 높은 산업용 모니터링 솔루션을 제안합니다.

![Landscape water tank data showed in the display](https://hackster.imgix.net/uploads/attachments/510373/landscape_tR6dJezr7R.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)

## 2. 주요 하드웨어 구성

- **아두이노 Mega 2560**: 메인 컨트롤러로서 전체 시스템의 데이터 처리를 담당합니다.

- **Arduino Ethernet Shield 2**: PLC와의 산업용 네트워크 통신을 가능하게 합니다.

- **TFT LCD (320x240)**: 수조의 상태를 실시간 그래픽으로 보여주는 인터페이스입니다.

- **Siemens LOGO! 8 PLC**: 아두이노로부터 받은 데이터를 바탕으로 **실제 현장의 안전 판단과 장비 제어**를 수행합니다.

- **수위 센서**: 수조의 현재 수위를 정밀하게 측정합니다.

---

## 3. 핵심 기술: Modbus TCP를 통한 데이터 교환

![Network profile for develop the project](https://hackster.imgix.net/uploads/attachments/515114/networkview_mfGthSQvRg.png?auto=compress%2Cformat&w=740&h=555&fit=max)

산업 표준 통신 방식인 **Modbus TCP**를 채택하여 장치 간의 언어를 통일했습니다. 아두이노가 Modbus 서버(Server)가 되어 데이터를 저장하고, PLC가 클라이언트(Client)로서 이를 읽어오는 구조입니다.

### **[통신 흐름 (Data Flow)]**

- **데이터 취득**: 수위 센서가 아날로그 값을 측정하여 아두이노 메가로 전달합니다.

- **레지스터 매핑**: 아두이노는 측정값을 Modbus 표준 주소인 **Holding Register 40001** 위치에 기록합니다.

- **네트워크 캡슐화**: 이더넷 쉴드를 통해 데이터를 TCP/IP 패킷으로 변환하여 네트워크(기본 포트 502)로 송출합니다.

- **데이터 요청(Polling)**: PLC(LOGO! 8)가 설정된 주기마다 아두이노의 고유 IP 주소에 접속해 40001번 레지스터의 값을 요청합니다.

- **응답 및 처리**: PLC가 수신한 데이터를 디지털 값으로 변환하여 내부 제어 로직에 입력합니다.

---

## 4. 주요 기능 및 동작 (PLC의 역할)

이 시스템은 단순한 데이터 표시를 넘어, 장비 간의 긴밀한 역할 분담으로 동작합니다.

![PLC showing the tank value](https://hackster.imgix.net/uploads/attachments/518699/img_20180707_102154_BCfkvzAwcJ.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)

- **시각화**: 아두이노 LCD가 실시간 수위 변화를 백분율(%)과 그래픽으로 출력합니다.

- **지능형 판단**: **PLC**는 수신된 데이터를 실시간 모니터링하며 수조의 상태를 판단합니다. (예: 85% 이상 시 '위험')

- **상태 경보 및 제어**: 위험 수위 도달 시, **PLC**는 즉시 자신의 백라이트 색상을 **빨간색**으로 변경하고 경고 메시지를 띄워 작업자에게 실질적인 조치를 요구합니다.

- **안전 로직**: PLC 특유의 '히스테리시스' 설정을 통해 수면 흔들림으로 인한 잦은 알람 오작동을 방지합니다.

## 5. 이 프로젝트의 의의

![LOGO PLC and Arduino monitor mounted in a DIN rail](https://hackster.imgix.net/uploads/attachments/518693/img_20180707_102211_TbgOa3OOmp.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)

이 프로젝트는 **"눈(시각화)은 아두이노가, 두뇌(판단 및 제어)는 PLC가"** 담당하는 효율적인 협업 모델을 보여줍니다.

- **가성비 높은 HMI**: 고가의 전용 터치 패널 없이도 훌륭한 모니터링 환경을 구축할 수 있습니다.

- **산업용 신뢰성**: 아두이노의 유연함과 PLC의 견고한 제어 능력을 결합하여 시스템의 안전성을 높였습니다.

- **융합 교육**: IT 기술(아두이노)과 OT 기술(PLC)의 통합을 실무적으로 배울 수 있는 최적의 사례입니다.

위즈네트에게 이 프로젝트는 "**산업용 PLC와 대등하게 통신할 수 있는 신뢰성 있는 게이트웨이**"임을 보여주는 강력한 레퍼런스입니다. 위즈네트가 칩 제조사를 넘어 산업용 통신 솔루션 파트너로 거듭날 수 있는 근거가 됩니다.

---

Source: https://maker.wiznet.io/scott/projects/arduino-water-tank-level-monitor-with-plc-connection/
