项目场景:node-red tcp通讯节点卡住,一直显示在进行中。
背景介绍
plc数据采集,plc使用modbusRTU协议连接串口服务器,串口服务器通过以太网连接设备网。采集多台设备,2/3台设备连接一个串口服务器。每个串口服务器分配一个ip。
nodered流程建立在linux系统的docker中。
原因分析:串口服务器被占用
1.通过单独测试串口服务器,发现有一台串口服务器可以ping通,但发送单个命令帧无法返回接收命令帧。
2.在docker上查看工作日志显示改串口服务器连接成功,但是后续没有返回命令帧,也没有超时的消息,所以一直卡住。
解决方案:
对串口服务器断电再上电,解决。
串口服务器被占用原因:
1.在同一个node-red端口有两个批处理流程,在用两个流程分别进行tcp通讯时,串口服务器会被占用,另一个流程会无法进行下去(串口服务器已设置最大连接数为1),且主动断开tcp通讯节点,并重新部署流程并不能解除占用,只能通过断电重启串口服务器的方式解除占用。
2.还值得注意的点是,两个流程时间撮节点设置的是立即执行于5秒后,所以在每次重新部署流程时,两个tcp通讯流程都会启动,所以在日常测试工作中出现了多次nodered节点卡住的问题。