最近出货了三台设备,两台设备A,和一台设备B,
设备到现场安装好后,由第三方软件开发公司M负责调试软件与设备的通讯调试工作。
调试第一天,问题就来了,
在调试B设备时,发现所有指令都无法正常动作,
经确认发现是M公司未区分A、B两种设备,两款设备采用都采用了A的通讯地址,
导致无法匹配B地址的动作,无奈只能现场重新修正软件,耽误一天时间。
调试第二天,M公司告知三台设备全部调试完毕,没有问题,人也撤场了。
本以为事情到此圆满结束,未曾想这只是个开始;
第三天一早,客户反映。安装的三台设备中,
A设备都正常动作,B设备有时会不按指令动作,会漏做动作。
确认软件通信的后台日志,应答都有响应,一切都正常,不应该丢失动作的。
期间又修正了指令发送时间间隔,又改了发送方式,一直无法解决。
一直到第四天,都是一顿操作猛如虎,就是没有解决问题。
最后查出来的原因是,
我们的设备都是要求发送脉冲指令信号,
而M公司都是发送的都是单一的置位信号,置位后未对信号进行清零,
从而导致设备只有在每次断电后再通电的第一次启动时能正常动作,
重复置位不会形成上升沿脉冲,只有0-》1状态变化才有脉冲,
所以置位后再置位1-》1就无法形成上升沿,无法触发动作。
其实在一开始就考虑到是脉冲发送方式的问题,
但由于A设备动作正常,所以也就没有重视这个可能。
最后查到A设备程序是最近刚做的,
在里面追加了防止客户不按要求发送脉冲指令,
设备会进行自动复位的一个修正功能,
而B设备时几年前的程序,、
并没有追加自动复位功能,
而我却想当然的认为是有的,浪费了几天时间。
以上就是因为一个清零触点引发的乌龙!
楼主最近还看过