现在在现场调试一个程序。
具体是一个联控柜控制四台真空泵,用的都是224XPCN PLC,我看现成的真空泵程序有用
modbus通讯的内容,所以在公司编程序时也用的
modbus通讯。但是客户要求最好能控制六台,所以主站程序里是控制六台从站的。
具体实现是:开始时,或者是按检测通讯时,按照顺控顺序依次读写1~6号站,通讯无故障的站置位一个标志位,这个子程序处理完后,置位一个标志位,执行正常通讯的子程序。在跟每台机通讯开始时,都要看这台机的标志位是否已置位,置位则执行,没有置位则通过处理标志位转到下一台机的通讯处,以此类推,把不在线的机器跳转开。
本来程序经过修改,这种方法是完全行的通的。但是莫名其妙的问题出现了。现在联上网的有两台机器,还有两台在单机运行,客户现场要用真空。因为PLC模拟量输入要并的500欧姆的电阻还没有接上,所以不能用电阻模拟系统真空度,我就在PLC监控时强制。正常运行时,1,2机在线,其他机器通讯错误代码是3,很正常。控制也理想。
但是,当我强制模拟量的输入,我用的是AIW2,时,很奇怪的问题出现了:当我强制模拟量值时,会随机将与一号,或者2号,甚至3号的机器的通讯故障代码置为6!也就是通讯时,通讯口被与别的机器通讯的MBS_MSG指令占用!感觉这个错误是随机的,因为有时强制时会出现,有时强制时不出现!我试试强制别的值时,没有这个错误发生!我不再改变强制值,过了十分钟也没有事情!与AIW2相关的所有的后续处理数据,都跟
modbus通讯的跳转什么的没有关系!试了无数次都是如此!程序也检查了无数遍,所有的可能性都快想变了,实在是无解啊!
困在现场这儿,被这个莫名其妙的问题所困扰,精神都要崩溃了啊!