日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

編程的時候除了注意指令的使用環境,還需要注意基本的運行規則,否則就會產生不必要的小BUG,這些小BUG看似簡單,但是真正解決起來卻不容易,因為這樣的錯誤是根深蒂固地存在大腦的深處,看著錯誤可能就是覺得是正確的,這樣就會懷疑其它的地方,造成方向性的錯誤,比如是不是CPU的操作系統有BUG,或者是指令系統有BUG,即使老司機也可能犯低級的錯誤。

在編寫《從S7-300_400到S7-1500看變址尋址的改變》系列時做了一個小的示例程序,結果總是有問題,分析也很燒腦。好了,先介紹一下程序的功能,這是一段表查詢的小程序:

例如創建一個數據塊A,然后在里面再創建一個數組B,INDEX從0~100,單位是INT,這樣一個表就創建完畢,然后使用一個已知的值與表中的值比較,如果查詢到第一個相同的值就記錄值的位置,就是數組中INDEX的值,然后清零INDEX的值并復位查詢使能位,如果沒有查詢到,INDEX值加1,如果整個表中都沒有相同的值,同樣清零INDEX并復位查詢使能位。程序參考圖1。

圖1

"Start_comp"作為查詢使能位,如果 "Comp_Value"與表(數組) "A".B["Index"]的值相同,將"Index"的值存儲到"Result"中,然后清零"Index"并復位查詢使能位 "Start_comp";如果 "Comp_Value"與表(數組) "A".B["Index"]的不相同,將"Index"的值加1,如果查詢到表的最后,還是沒有相同的值,同樣清零"Index"并復位查詢使能位 "Start_comp"。一段小程序,非常簡單,好了,再看一下程序監控吧,參考圖2。

圖2

查詢的結果是正確的,但是"Index"的值定格為1而不是0。對于這樣的結果,我首先想到的是時序的問題,是不是S7-1500編程功能擴展后程序有些變化?想起一個辦法就是在S7-300中編寫相同的程序,然后切換到STL,使用斷點監控一下,后來還是放棄了,因為S7-300不支持數組INDEX 的方式,如果使用S7-1500做也比較麻煩。可以把程序放到循環中斷中,放大掃描時間看一下結果,就是相當于慢放功能,監控程序,首先是值不相等條件滿足,如圖3所示。

圖3

從圖3中可以看到,值不相等,"Index"的值加1,然后與下一個值進行比較,直到與比較值相同,如圖4所示。

圖4

從圖4中可以看到,比較值等于與不等于同時滿足,所以上面"Index"的值清零了,下面一行又加1了,所以"Index"的值最終定格在1上,只是什么邏輯!!! 搞不明白!!!

經過一番折騰,發現問題了,比較值相等的"Index"是2,比較值不相等的"Index"是0,說明"Index"是清零了,所以會出現比較值等于與不等于同時滿足的情況,就是因為比較的值不同了,所以犯了一個小錯誤,也是沒有仔細查看,也是由于設定的掃描時間還是比較短,最后使用圖片抓拍才發現。

總結一下這里的問題,主要還是時序的問題,相同程序段線圈的復位結果作用在下一個掃描周期,而賦值結果是在指令完成之后。可以把上下兩行程序互換一下位置就可以解決問題了,程序參考圖5。

圖5

想要學習更多工業知識,歡迎訪問西門子1847工業學習平臺,這是一個官方的學習平臺,能夠幫助您高效獲得實用和權威的資料。

另外,這里還有60場西門子1847工業專家會議等您來參與!點擊下方鏈接查看會議詳情。

分享到:
標簽:BUG
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定