hbzjt2011 发表于 2016-12-1 16:53

Modbus Slave测试开关灯

本帖最后由 hbzjt2011 于 2016-12-1 16:55 编辑

Modbus RTU通讯协议因为功能强大,移植方便,通讯简单的优点,广泛用于与工控仪表、PLC、HMI等设备的通讯,为此Arduino也支持其Master和Slave设备的通讯,现在测试Arduino作为从站时读写线圈的功能。
1、硬件连接:
Arduino UNO            USB转TTL
RX------------------------TX
TX------------------------RX
GND----------------------GND
使用线圈100的值来控制Arduino D13引脚,也就是板载的LED灯,主站使用PC端的Modbus Poll软件来模拟。

2、代码:#include <Modbus.h>
#include <ModbusSerial.h>

// Modbus Registers Offsets (0-9999)
const int LAMP1_COIL = 100;
// Used Pins
const int ledPin = 13;

// ModbusSerial object
ModbusSerial mb;

void setup() {
    // Config Modbus Serial (port, speed, byte format)
    mb.config(&Serial, 38400, SERIAL_8N1);
    // Set the Slave ID (1-247)
    mb.setSlaveId(10);
   
    // Set ledPin mode
    pinMode(ledPin, OUTPUT);
    // Add LAMP1_COIL register - Use addCoil() for digital outputs
    mb.addCoil(LAMP1_COIL);
}

void loop() {
   // Call once inside loop() - all magic here
   mb.task();
   
   // Attach ledPin to LAMP1_COIL register   
   digitalWrite(ledPin, mb.Coil(LAMP1_COIL));
}
3、PC端操作:
打开Modbus Poll软件作为主站,设置通讯参数:

设置从站地址和读写线圈地址:

使用05功能码发送ON\OFF状态:

4、展示效果:


songchenping 发表于 2016-12-2 08:42

sh8hd 发表于 2016-12-9 16:46

huangyunfa 发表于 2019-2-13 15:29

有做成功的吗?
跃跃欲试。。。。
页: [1]
查看完整版本: Modbus Slave测试开关灯