最近在项目中用到了TI的ADS1256, SPI接口的24位高精度AD和NXP的K64来采集扭矩传感器正负20mv的电压信号,调试中发现Modbus通讯会丢失,尤其是在四个继电器动作的时候,四个继电器用来控制推拉杆电机,切换24V。随分析问题。ASD1256框图如下,具体芯片参数可以参考手册
首先怀疑是不是干扰造成电源问题,给继电器触点加滤波吸收,有一点效果,但是长时间持续动作继电器还是会丢失,因为控制盒在柜子里装着,不好在线调试,只好先分析。
问题没有解决,随分析,是不是软件上看门狗在复位,但理论上看门狗复位后,通讯应该能够重新建立连接通信,但是事实上通信丢失不能重新建立,随分析芯片死机状态,那么什么会导致死机呢,最后分析是看门狗一直在不断复位,经查是因为AD1256的RDY信号一直处于高,不能就位,导致看门狗不断复位,通信不能建立,因为RDY信号对软件中很重要,对RDY信号进行处理,问题解决,测试验证连续几天在没出现通讯丢失问题。还专门上网查了下,发现好多童鞋都遇到ADS1256使用中的问题,看来还是个普遍问题,希望对大家引起一点帮助。
另外建议大家在做软件时候一定要多注意软件的设计,硬件上也要多考虑抗干扰,一个产品从demo成功到量产还是有很长的路要走,很多你在实验室能够正常测试运行的板卡在工业现场不一定会正常运行,尤其是恶劣的环境中,稳定性是很关键的。AD采集要多重滤波,通讯要有重发机制,错误处理,容错设计。硬件上要多考虑抗干扰。对电源要求质量高的地方,一定要保证电源质量。尤其对这种小信号的处理,搞不好噪声就淹没了你的有用信号。