昨天到一個(gè)項(xiàng)目地調(diào)試的時(shí)候,突然發(fā)現(xiàn)s7-300plc報(bào)sf故障,于是聯(lián)機(jī)發(fā)現(xiàn)報(bào)ob121編程故障,如下圖:
個(gè)人感覺很奇怪,因?yàn)橹耙恢边\(yùn)行ok,難道是問題一直有,沒人發(fā)現(xiàn)?
手機(jī)上網(wǎng)查詢找答案的相關(guān)問題后,聯(lián)機(jī)plc在線刪除了ob121,觸發(fā)plc停機(jī),然后找到了故障點(diǎn),修改地址后重新下載,啟動(dòng)plc后正常。
事故處理后細(xì)想,其實(shí)距離不讓plc停機(jī)就找到故障點(diǎn)只差最后一步了。因?yàn)楸救送ㄟ^事件的觸發(fā)時(shí)間,幾乎間隔100ms觸發(fā)一次,初步判斷應(yīng)該在ob35,因?yàn)槭潜尘癲b,也在調(diào)用fb塊的地方查看有沒有什么1576出現(xiàn)過,無奈眼拙沒找到。其實(shí)只要通過編輯里的查找替換,輸入1576,就可以迅速定位到錯(cuò)誤地址。
分析報(bào)警信息,其實(shí)已經(jīng)說的很明白,只是以前沒經(jīng)歷過,不能理解。
讀取時(shí)發(fā)生區(qū)域長(zhǎng)度錯(cuò)誤:讀取操作,指令的左邊。
背景db,雙字訪問,訪問地址:1576:調(diào)用fb時(shí)背景數(shù)據(jù)賦值錯(cuò)誤,錯(cuò)誤地址是dbd1576。
為了驗(yàn)證以下的想法,通過仿真做了一下試驗(yàn):
1、 能否通過交叉參考定位到錯(cuò)誤點(diǎn)。
2、 能否在plc不停機(jī)的情況下讓plc正常。
3、 如果ob121發(fā)生在ob1里,plc的工作情況怎樣?
等等
結(jié)果如下:
1、仿真時(shí)發(fā)現(xiàn),報(bào)警信息可以通過“打開塊”直接進(jìn)入故障點(diǎn),而plc的“打開塊”是灰色的。
2、仿真時(shí)的cpu顯示正常,實(shí)際plc顯示出錯(cuò)。
3、交叉參考不能定位dbd1576。
4、通過交叉參考查找程序結(jié)構(gòu),看哪些塊調(diào)用fb,可在響應(yīng)的程序塊中查找定位。
有點(diǎn)搞笑,驗(yàn)證到最后,最簡(jiǎn)單的不讓plc停機(jī),直接查找到故障點(diǎn),就是通過仿真,修改問題程序后直接下載到plc中。
需要說明,仿真的時(shí)候沒辦法下載程序。
好吧,我再一次驗(yàn)證了仿真的重要性~