【硬件数据模拟】 使用Modbus Slave软件模拟数据

本文最后更新于:21 分钟前

下载Modbus Slave软件

下载完成之后,单击Connection->Connect,弹出注册窗口。这个软件有一个月的试用,或者是在网上找该软件的破解方式。弹出窗口如图所示:
点击连接

设置参数

ip设置为本机地址,端口设置为502,波特率设置为9600,协议设置为Modbbus Tcp/Ip,串口设置为COM1。

连接Modbus Slave

  • Modbus还有一个客户端,modbus poll专门用来测试modbus连接,但是这里我展示用node.js获取的Modbus Slave模拟数据。
  • 引入modbus-serial包, 使用npm i modbus-serial下载安装,新建modbus-port.js文件,代码如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // create an empty modbus client
    var ModbusRTU = require("modbus-serial")
    var ModbusRTUClient = new ModbusRTU();

    // open connection to a tcp line
    // 创建Modbus TCP连接,IP是127.0.0.1,端口502
    ModbusRTUClient.connectTCP("127.0.0.1", { port: 502 });


    module.exports = ModbusRTUClient
    新建一个publish.js发布收到的模拟数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    const moment = require('moment');
    const mqtt = require('mqtt');
    const MqttServer = require('./server'); // 这里是我创建的mqtt服务器
    const ModbusRTUClient = require('./modbus-port.js');
    const client1 = mqtt.connect('mqtt://127.0.0.1:1883'); // 这里是我创建的mqtt服务器

    setInterval(() => {
    ModbusRTUClient.readHoldingRegisters(0, 10, function(err, data){
    // 获取当前时间
    //moment.locale('zh-cn');
    let value = data.data[0];
    let humidity = data.data[1];
    client1.publish("temperature", value.toString(), { qos: 0, retain: true }); // 使用mqtt服务发布
    client1.publish("humidity", humidity.toString(), { qos: 0, retain: true });
    console.log("----------------------------------------------------------------------");
    console.log("数据时间是:" + moment().format('YYYY年MM月DD日 HH时mm分ss秒'));
    });
    }, 2000);

这个软件还有很多用处,请参考其他文献使用……