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