我尝试使用此代码,但无法获得价值,任何人都可以帮助我吗?抱歉,因为我是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 slave,当我尝试运行我从modbus slave获取的值时,并且在modbus slave中我只得到没有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
答案 0 :(得分:0)
Dunno(如果您仍然需要帮助),但是此问题是由于尝试并行发送命令引起的。由于您正在进行Modbus串行通信,因此必须等待接收响应,然后再发送其他命令。您不能使用Async,因为它将通过串行连接并行发送命令。