手上一个项目,使用314cpu做控制电液伺服阀。采用PID控制。用了10个伺服阀,所以用了10的PID,我把10个PID的sp值全部按顺序放在db35里面。
db35.dbd0=2号阀,
db35.dbd4=3号阀,
db35.dbd8=4号阀,依次类推
db35.dbd24=8号阀,
db35.dbd36=11号阀。
上位采用proface屏2500系列。
出现状况:重新下载所有blocks,包括硬件组态信息后,2,3号阀sp值分别显示为-165052.3和165331.3,8号阀sp值显示为74.8,正常情况应该是如剩下的45679,10,11号阀的sp值一样都显示为0.0。
解决过程:很是奇怪。检查交叉参考,没有发现在程序中对sp值进行了额外赋值运算等。而且没有其他地方使用了诸如db35.dbx。。。db35.dbw。。。等重复地址的现象。
然后检查proface屏上的相关数据设置,没有异常。修改ob100,使每次断电启动时将2,3,8的sp用move赋值为0.0。下载,然后断电重启,问题似乎解决,删掉ob100里面的赋值网络,下载,再断电重启,db35.dbd0还是显示0.0。问题似乎解决。
但是,接着将所有blocks再次下载时,硬件组态不下载,问题又出现,
然后连线PLC,删除所有ob,fc,fb,再次下载,问题依旧。
毛了,心想,我干脆不用db35了,改用db36。在删除db35之前复制所有db35里面的数据,删除db35,又建一个db,本打算写成db36但随手又写成db35。于是将复制的数据再粘贴到新的db35里面,再单独下载db35,断电重启,问题解决。。。
之后,无论怎么弄,问题不再出现。
很是郁闷的是没有修改任何东西,只是把db35删掉,重新建了个一模一样的db35,问题就解决了。。。。。