看門狗
劉玉蓉
發(fā)布于2014-09-09 17:32
210
0
標簽:
我現(xiàn)在有個PLC程序,大約每次運行都要2~5秒(涉及到大型計算這個時間不能再減少了),可是我自己設置的scan cycle 為6000(見附圖)。程序運行2秒多就死機了,查了一些資料說是看門狗的關系。提問,看門狗是不是與這個設定的時間沒有關系?我想確定的知道怎么設置看門狗時間?顯然看門狗時間沒有6秒多,因為我使用OB1中的OB1_PREV_CYCLE大的時間只有2秒多。我倒是解決死機的問題,在OB80里面調(diào)用SFC43。
問題補充:
Cycle/Clock Memmory屬性中對Scan cycle monitoring time[ms]參數(shù),查看CPU模塊信息正如問題中所說,沒有掃描周期會達到6000ms的。我現(xiàn)在想知道為什么監(jiān)測OB1中掃描時間為2S多一點就死機,而我在“周期設置”圖片中設置的為6000ms。如果監(jiān)測到OB1時間沒有問題顯然與6000ms矛盾。補充一下,我使用的是嵌入式控制器 WinLC RTX EC.樓下很好的建議。不過在這個里面沒法實現(xiàn),它是調(diào)用一個封裝好的dll(耗時間的東西就是它),不能被切割多步運行。同時,這個嵌入式控制器主要就是用來完成大型的計算,只要能夠在秒級別的時間內(nèi)運算完就好,所以只要在完成大型計算的前提下不怎么需要考慮實時性。
圖片說明: 1,周期設置 2,嵌入式控制器信息
佳答案
看情形應該還是超出了你設定的循環(huán)掃描監(jiān)視時間,在線查看CPU模塊信息可以看到短、當前/上一次、長掃描時間。
你似乎走入了一個誤區(qū),延長循環(huán)掃描時間嚴重影響PLC的實時性,過長的循環(huán)周期可能丟失很多信號,對于過程控制很不利,一般來說對于計算量比較大的程序都是異步完成的,也就是完成不止一個周期,所以你應從這個方面考慮,用多個掃描周期來完成你這個大型計算。
—————————————————————————————————————————————
關于補充的回答:
你所說的死機是不是就是觸發(fā)了OB80,你在OB80里調(diào)用SFC43是不是已經(jīng)可以解決這個問題,問題在于究竟為什么觸發(fā)OB80,這個要看OB80里的臨時變量故障代碼和故障信息了,你可以到下載中心下載文檔A0059“如何使用組織塊”。
深入淺出WinCC里關于ODK部分里提到,比較耗時的操作可以放在異步處理器里執(zhí)行,如果你有C ++的功底并有DLL的源程序,你可以把計算改為異步執(zhí)行,或者也可以考慮新建一個DLL異步執(zhí)行調(diào)用這個封裝好的DLL 。