现象描述:我在一次项目中,把程序下载到PLC里,程序运行时我发现了一个奇怪的现象,输入变量的IO值会不断地变化,但是我的输入信号欸有发生改变,这让我感到很疑惑。
排查问题:我一开始不知道是哪里除了问题,以为是干扰引起的。所以就在找干扰源,首先关掉电机运行,发现还是不行,输入信号还是不稳定,然后关掉PUT/GET通讯,依然没有解决问题。最后关掉Modbus RTU 通讯,发现输入信号停止了异常地跳动。最后确认是RTU通讯所致。
分析问题原因:因为之前从来没有过通讯问题导致输入信号异常波动的情况,所以我把程序全部删除,只留一个RTU通讯的问题,然后再看输入信号是否异常跳动。结果依然跳动。而且但是信号接收正确,而且通讯程序就是之前用的老程序,我意识到问题可能不是出在程序上。开始对输入信号排查,我开始对输入信号测试,结果给了高电平信号,可结果还是显示低电平。好像关联性不大。于是在硬件组态上再次对各个输入输出模块进行地址确认,发现输入模块的地址与我关联的地址不一致,关联到通讯模块上了。所以为什么通讯模块一开,输入地址就会异常波动。原因就在这里。
事后复盘分析:原因在于我第一次组态时,是两个输入模块一个输出模块和一个通讯模块,但是项目后期发现需要增加一个输入模块,于是就想当然地把信号的变量地址接着前两个输入模块地址后面了,但是现实是通讯模块也是要占用输入地址的。我紧接着后面写输入地址虽然不会报错,但是关联地是通讯模块的地址。造成了后面调试时出现了输入变量异常波动。
总结:我们在项目组态时,一定要确认好输入输出模块的地址。这样就能避免很多的麻烦。