下面是1200的ob1中的通信程序的程序段1:
m0.3是2hz的時鐘脈沖,mb0為時鐘存儲器字節(jié),mb1為系統(tǒng)存儲器字節(jié)。
db1.dbw0的值本來應(yīng)該是每0.5加1,實際上每秒大約加了200多次。交叉參考表明沒有別的地方改寫db1.dbw0。實在是想不出來錯誤的原因了。
突然想起上升沿檢測的原理,是用m2.4來保存m0.3前一掃描周期的值,通過比較m0.3前后兩個掃描周期的值,來判斷是否是m0.3的上升沿。如果m0.3在半周期內(nèi)未變,但是m2.4的值在變化,也會檢測到上升沿。于是趕快檢查m2.4的交叉參考,發(fā)現(xiàn)該地址同時用于turcv指令的ndr位,通信作業(yè)完成時該位變?yōu)?。將m2.4改為別的地址,db1.dbw0正常運行了。這個“怪事”的揭秘又一次證實了我的一個結(jié)論:計算機(包括plc)總是對的,問題總是出在粗心大意的人身上。
看來,對指令的深入了解還是很有必要的。