[아두이노#362] (tcp/udp #15) 노드레드(node-red) TCP서버에 ESP8266 모드버스(rs485/modbus) 마스터를 연결해보자!(녹칸다/포로리야공대가자)
프로그래밍/TCP&UDP 2021. 10. 14. 23:36
(tcp/udp #15) 노드레드(node-red) TCP서버에 ESP8266 모드버스(rs485/modbus) 마스터를 연결해보자!
녹칸다의 TCP, UDP통신을 위한 시리즈이다!
이번편은 14편에서 구현한 노드레드(node-red)서버에 사물인터넷보드(wemos d1r1)로 구현한 rs485 모드버스(modbus) 마스터를 연결하는 것을 목표로 한다!
녹칸다의 노드레드(node-red) TCP 서버에서 클라이언트들 간의 메시지를 전달하는데 모드버스 마스터는 모드버스 프레임을 송수신 하도록 한다!
모드버스 마스터는 프레임을 수신하면 자신에게 달려있는 모드버스 슬레이브에게 request하고 슬레이브가 response한 프레임을 TCP통신으로 요청한 클라이언트에게 응답한다!
아래와 같은 수순으로 데이터가 흘러갈듯 하다!
(A클라이언트) - (서버) - (모드버스마스터) - (모드버스슬레이브) - (모드버스마스터) - (서버) - (A클라이언트)
이때 모드버스에서 사용하는 프레임을 byte stream으로 전송하기에는 여러 문제가 발생할 여지가 있다!(문제사항은 스트리밍때 확인해보자!)
문제를 방지하기 위해서 모드버스에서 사용하는 프레임을 아스키코드로 변환해서 string으로 송수신하도록 한다!
패킷 길이가 2배 길어지는 단점이 있지만 안전성을 보장할 수 있다!(녹칸다의 TCP서버의 구조적 문제를 회피하기 위해서)
아래와 같은 순서로 진행해보도록 하자!
1.노드레드 TCP서버와 연결가능한 사물인터넷보드 모드버스 마스터의 기본 예제를 구현하고 슬레이브와 통신하는 기본예제 구현하기!(1:1)
2.모드버스마스터 1대와 슬레이브 2대로 구성했을때 각각의 슬레이브의 텍스트 메시지를 응답받아 보기!(1:2)
3.슬레이브에 LED가 1개씩 있을때 노드레드 서버에서 모드버스 TCP 형태로 LED를 제어해보기!
4.슬레이브에 2대에 가상의 센서가 달려있다고 할때 센서값을 노드레드 서버쪽으로 가지고 와보자!
5.모드버스로 작동되는 4채널 릴레이를 TCP서버에서 제어해보자!
(연결하는데 시간이 많이 걸릴 것 같아서 시간을 봐가면서 예제의 양을 가감한다)
(4채널 modbus 릴레이)
https://bota.tistory.com/1719
(iot보드와 아두이노 우노간 modbus)
https://bota.tistory.com/1722
(예제순서)
1.TCP디바이스와 모드버스마스터,슬레이브가 에코데이터를 송수신하는 예제
2.TCP디바이스와 모드버스마스터,슬레이브 2대가 에코 데이터를 송수신하는 예제
3.모드버스슬레이브 2대에 각각 LED를 1개씩 연결하고 TCP디바이스에서 버튼으로 제어하는 예제
4.모드버스슬레이브 2대에 각각 LED를 4개씩 연결하고 TCp디바이스에서 시리얼입력으로 제어하는 예제
5.슬레이브에 있는 가상의 센서값을 가져오는 예제
6.모드버스4채널 릴레이를 슬레이브로해서 제어하는 예제
7.모드버스4채널 릴레이에 DC모터를 2개 달아서 버튼으로 제어해보는 예제!