我有多个要尝试存储在本地磁盘上的Modbus变量。
我的功能脚本如下:
var msgPortBus,msgStbdBus;
if (msg.topic === 'BusVolts') {
msgPortBus = { payload: msg.payload.Port.Bus.Volts, };
msgStbdBus = { payload: msg.payload.STBD.Bus.Volts, };
}
msg.payload = [msgPortBus,msgStbdBus]
return msg;
我认为错误在于上面某个地方的代码中。...两个Modbus节点的主题均为'BusVolts'。
我对一个输入使用了以下代码,它为我提供了时间戳,然后提供了我希望从一个输入获得的数据,但是我不确定如何区分不同的有效负载。
msg.payload = new Date().toString() +
"," + msg.payload;
return msg;
先谢谢了。
编辑:错误是“类型错误:无法读取未定义的属性'Bus'”
答案 0 :(得分:2)
问题是,您假设函数节点运行时它将看到一个组合的msg
对象,其中包含来自两个Modbus节点的信息。事实并非如此。
该功能节点将针对来自Modbus节点的每个输出消息分别运行,因此一次仅填充msg.payload.Port.Bus.Volts
或msg.payload.STBD.Bus.Volts
中的一个。
如果要在将多个节点的输出合并到功能节点之前对其进行合并,则需要查看将数据存储在Context中还是使用Join节点在处理之前将输出批处理到一个数组中。< / p>