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