0

我尝试使用此代码但无法获得价值,有人可以帮助我吗?抱歉,因为我是 NodeJS 的新手。我不明白为什么代码不能返回值。

const ModbusRTU = require("modbus-serial");

var client = new ModbusRTU();

client.connectRTUBuffered("COM3", { baudRate: 9600 });

var async = require("async");

setInterval(function(callback) {

async.parallel({

        async_modbus_1_1: function(clbk) {

            client.writeFC3(1, 4103, 2, function(err, data) {

                console.log(data);

            });

        },

        async_modbus_1_2: function(clbk) {

            client.writeFC3(1, 4106, 2, function(err, data) {

                console.log(data);

            });

        },

        async_modbus_2_1: function(clbk) {

            client.writeFC3(3, 4103, 2, function(err, data) {

                console.log(data);

            });

        },

        async_modbus_2_2: function(clbk) {

            client.writeFC3(3, 4106, 2, function(err, data) {

                console.log(data);

            });

        }
    },
    function(error, result) {

        if (error) {
            console.log(error);
        }

        if (result) {
            console.log(result);
        }

    });

}, 1000);

我尝试使用该代码连接到 modbus 从站,当我尝试运行时,我没有从 modbus 从站获得值返回,而在 modbus 从站中,我只获得了没有 Tx 值的值

000781-Rx:01 03 10 07 00 02 71 0A 01 03 10 0A 00 02 E0 C9 03 03 10 07 00 02 70 E8 03 03 10 0A 00 02 E1 2B

来自 modbus 从站的响应图像

4

1 回答 1

0

不知道您是否仍需要帮助,但此问题是由于尝试并行发送命令引起的。由于您正在进行 Modbus 串行通信,因此您必须等待接收响应才能发送另一个命令。您不能使用异步,因为它将通过串行连接并行发送命令。

于 2019-08-06T03:12:36.170 回答