与多个串口设备通讯的上位机程序运行一段时间后串口自动断开或不响应的一些排查处理经验
最近有个项目的设备上有三台硬件都用了串口通讯
分别是PLC、基恩士位移传感器GT2和梅特勒称重模块
除了PLC是通过现成的通讯模块进行的USB直连
另外两台硬件都是用的串口转USB
转接线的驱动芯片分别是FTDI和PL2303GT
程序编写调试好 测试了一段时间
发现总是会出现连续运行0.5~2小时(约300~700次循环动作)后PC串口不响应的情况
偶发设备上电后个别串口设备找不到(设备管理器看不到)
必须重新拔插PC上任意一个串口线或重启电脑才能解决
否则不管是用哪种官方程序都通讯不上 无响应
排查处理过程:
①排查各接口连接是否松动,由拓展USB口换到主板USB口(供电电压不同)
无效
②重装驱动程序,删除重复驱动,减少驱动干扰的可能性
无效
③考虑程序通讯频率太快,导致串口缓冲区溢出,故在PC端和程序端增加软握手XonXoff
不可行,严重影响正常通讯或数据丢失
④关闭PC端串口高级选项中的“允许计算机关闭设备以节约电源”(需要驱动支持),缩小“发送缓冲区大小”和“接收缓冲区大小”,以及延时计时器数值
有改善(运行时间加长),但还是会出现
最终解决方案:重装Win10系统
其实在尝试过程中就已经搜过全网了,中文网页没有类似经验和讨论,英文网页有个网友说是Win7 Bug...以为是猜测,早知道这样就不会走这么多弯路(偶发故障,排查用了我一周时间)了。┭┮﹏┭┮
其他经验:
首次通过远程桌面连接工控机时,由于会占用目标工控机的资源,导致这个过程中串口收发数据收到明显影响。
其他参考: