반응형

ESP32 서버 모드

Client가 Server에 접속해서 정보를 가져오는 방식

modbus-esp8266 라이브러리 설치

modbus 예제의 IP-server-AnalogInput 열기

WiFi 정보 입력 후 컴파일 업로드

 

Modbus Client에서 ESP32로 접속 후,

주소를 100으로 설정하고 Read Input Register를 하면 됨.

 

아두이노 소스 변경

delay(); 삭제해서 최대 성능을 낸다.

Coil, Hreg, Ists, Ireg 각각 4개씩 데이터를 기록한다. (3개씩은 타이머 분할 기록)

남은 1개의 103번 주소엔 millis(); 값을 실시간으로 기록한다.

 

C# 수신 테스트

C#으로 작성한 Modbus TCP Client에서 테스트 해보니

103번 값이 매우 빠른 속도로 갱신이 됐다.

Task Timer는 1ms초 단위로 갱신하도록 코딩 했음.

 

ESP32 성능은 아주 만족 스럽다.

PC에서 초당 64~65 회 수신으로 매우 빠르게 갱신된다. 1회 수신 처리에 약 15ms 소요.

동시에 100개를 수신하면 초당 60회가 주로 수신 되고, 28~70 회까지도 튄다.

다축 로봇 제어 등, 실시간 정밀 제어에 충분히 사용할 수 있을 것 같다.

Modbus 클래스

NModbus4

NuGet에서 몇가지 Modbus를 테스트 해봤는데, NModbus4가 제일 빠르고 안정적이었다. 비동기 메서드도 있다.

FluentModbus

FluentModbus 3.2.1은 접속부터 통신까지 여러 문제가 있다. 예제를 보니 비동기도 안 되는 듯.

EasyModbusTCP

EasyModbusTCP 5.6.0은 고속 통신은 되는데 매번 수신 데이터가 0으로 바뀌는 문제가 있다. 값이 0으로 바뀌면서 깜빡이는 문제... 그러다가 수 초 후 프로그램 자체가 얼어버리는 문제가 항상 나타났다.
도대체 이딴 프로그램을 어떻게 사용하는지 알 수가 없다.

NModbus4는 고속으로 장시간 동작한다.

반응형

관련글