來源:工控老炮兒
在 PLC 編程中,我們常常強(qiáng)調(diào)掃描周期的重要性,但很多時(shí)候它像一個(gè)“黑盒子”——我們知道它存在,卻很少能直觀地感受到它的影響。
今天,我們就來聊一個(gè)有趣的話題:TIA Portal 中的 WAIT 指令。通過它,我們可以人為地干預(yù)掃描周期,從而更深入地理解 PLC 的工作機(jī)制。
一、什么是掃描周期?
在深入 WAIT 指令之前,我們先簡單回顧一下 PLC 的掃描周期。
當(dāng) PLC 投入運(yùn)行后,其工作過程一般分為三個(gè)階段:輸入采樣、用戶程序執(zhí)行和輸出刷新。完成上述三個(gè)階段稱作一個(gè)掃描周期。
在每個(gè)掃描周期開始時(shí),PLC 會讀取所有物理輸入點(diǎn)的狀態(tài),并將其存入輸入映像區(qū)。隨后,CPU 按照從上到下、從左到右的順序執(zhí)行用戶程序。當(dāng)程序執(zhí)行完畢后,CPU 會將輸出映像區(qū)中的數(shù)據(jù)一次性寫入物理輸出點(diǎn),完成輸出刷新。
關(guān)鍵點(diǎn)在于:在程序執(zhí)行階段,即使外部輸入信號的狀態(tài)發(fā)生了變化,輸入映像區(qū)中的數(shù)據(jù)也不會改變,直到下一個(gè)掃描周期開始時(shí)才會被更新。這就是 PLC 程序“串行執(zhí)行、循環(huán)掃描”的核心特征。
二、什么是 WAIT 指令?
WAIT 指令在 TIA Portal 中是一條不太常用的指令,它的作用很直接:在程序執(zhí)行過程中插入一段等待時(shí)間。
當(dāng) CPU 執(zhí)行到 WAIT 指令時(shí),會在當(dāng)前網(wǎng)絡(luò)(Network)停留指定的時(shí)間,然后再繼續(xù)執(zhí)行后續(xù)的程序。這意味著,整個(gè)掃描周期會被人為地延長。
這就像你在跑步比賽中途停下來系鞋帶——原本可以一口氣跑完的賽程,因?yàn)橹型镜耐nD,總用時(shí)被顯著拉長了。
三、WAIT 指令如何影響掃描周期?
我們可以通過一個(gè)簡單的實(shí)驗(yàn)來理解 WAIT 指令的影響。
假設(shè)我們有一個(gè)常規(guī)的 PLC 程序,正常掃描周期為10ms?,F(xiàn)在,我們在程序的某個(gè)網(wǎng)絡(luò)中加入一條 WAIT 指令,設(shè)置等待時(shí)間為 20ms。
當(dāng) CPU 執(zhí)行到 WAIT 指令時(shí),會發(fā)生以下情況:
CPU 暫停程序執(zhí)行,進(jìn)入 20ms 的等待狀態(tài)
等待結(jié)束后,繼續(xù)執(zhí)行后續(xù)程序
程序執(zhí)行完畢后,進(jìn)入輸出刷新階段
整個(gè)掃描周期變?yōu)椋狠斎氩蓸訒r(shí)間 + 程序執(zhí)行時(shí)間(含 20ms 等待)+ 輸出刷新時(shí)間
最終結(jié)果:原本 10ms 的掃描周期,可能被延長到 30ms 以上。
通過以下實(shí)例說明 WAIT 指令對掃描周期的影響。
首先用 WAIT 指令設(shè)計(jì)一個(gè)可以自定義時(shí)間的 WAIT 等待子程序,將時(shí)間單位設(shè)定為秒。如下圖:

在程序循環(huán) OB1 中調(diào)用以上 WAIT 等待程序,設(shè)置等待時(shí)間為 3 秒。如下圖:

禁用 WAIT 等待時(shí)的循環(huán)掃描時(shí)間如下圖:

啟用 WAIT 等待時(shí)的循環(huán)掃描時(shí)間如下圖:

可以看到循環(huán)掃描時(shí)間加長了 3 秒鐘。
四、WAIT 指令帶來的實(shí)際影響
1. 輸入信號的“延遲響應(yīng)”
由于掃描周期被拉長,輸入信號的采樣頻率降低了。如果一個(gè)脈沖信號的寬度小于掃描周期,就有可能被“漏掉”。
2. 定時(shí)器的精度問題
這里需要引入一個(gè)重要的概念:定時(shí)器的異步刷新。
定時(shí)器啟動后,其計(jì)時(shí)是獨(dú)立于 PLC 掃描周期的——定時(shí)器本身的時(shí)間累計(jì)不受掃描周期影響。但是,定時(shí)器是否完成計(jì)時(shí),需要在程序掃描到定時(shí)器指令時(shí)才被檢查。
有經(jīng)驗(yàn)的工程師做過這樣的實(shí)驗(yàn):在程序中故意加入 20ms 的 WAIT 指令拉長掃描周期,結(jié)果發(fā)現(xiàn)定時(shí)器的實(shí)際累計(jì)時(shí)間產(chǎn)生了 20ms 的誤差。
原因分析:定時(shí)器在后臺獨(dú)立計(jì)時(shí),到達(dá)設(shè)定時(shí)間后,它并不會立即觸發(fā)程序動作,而是要等到 CPU 執(zhí)行到該定時(shí)器指令時(shí),才會檢查到“定時(shí)已完成”這一狀態(tài)。如果掃描周期被拉長,這個(gè)檢查就會被延遲。
這也解釋了為什么定時(shí)器不適合做精確定時(shí)——精確定時(shí)推薦使用循環(huán)中斷(如OB30)配合計(jì)數(shù)器來實(shí)現(xiàn)。
3. 程序執(zhí)行的“非原子性”
假設(shè)你在程序中對同一個(gè)輸出線圈進(jìn)行了多次賦值,最終生效的是最后一次賦值的結(jié)果。如果 WAIT 指令插在這些賦值之間,情況就會變得更加復(fù)雜,調(diào)試難度也會增加。
例如:在循環(huán)中斷 OB30 中置位 Q0.0(立即輸出),在程序循環(huán) OB1 中復(fù)位 Q0.0(立即輸出),如果在 OB1 中加入或不加入 WAIT 指令,將有可能產(chǎn)生不同的輸出結(jié)果。
五、WAIT 指令的實(shí)際應(yīng)用場景
既然 WAIT 指令會拉長掃描周期、影響定時(shí)精度,那它有什么用呢?其實(shí),在一些特殊場景下,WAIT 指令還是有價(jià)值的:
1. 程序調(diào)試與模擬
在調(diào)試階段,我們可以用 WAIT 指令模擬某些需要時(shí)間延遲的場景,觀察程序在不同時(shí)序下的行為。比如,在測試順控程序時(shí),可以用 WAIT 指令模擬設(shè)備動作所需的時(shí)間。
2. 人為放大問題以排查故障
如前文所述,工程師會故意加入 WAIT 指令來放大定時(shí)器的異步刷新誤差,從而驗(yàn)證定時(shí)器的特性。這種方法也適用于排查其他與掃描周期相關(guān)的問題。
3. 與外部設(shè)備的時(shí)序匹配
某些老舊的或響應(yīng)較慢的外部設(shè)備,可能需要在輸出信號后等待一段時(shí)間才能接收下一個(gè)指令。在這種情況下,WAIT 指令可以作為一個(gè)簡單的解決方案。
需要提醒的是:WAIT 指令會拉長掃描周期,影響整個(gè)系統(tǒng)的實(shí)時(shí)性,在生產(chǎn)環(huán)境中應(yīng)謹(jǐn)慎使用,或盡量采用循環(huán)中斷等更可靠的方式替代。
以下是通過加入 WAIT 指令來觀察上升沿的變化過程。
上次掃描周期:

當(dāng)前掃描周期:

六、總結(jié)與思考
通過 WAIT 指令的研究,我們可以得出以下幾點(diǎn)結(jié)論:
1. 掃描周期是 PLC 運(yùn)行的基礎(chǔ)
輸入采樣、程序執(zhí)行、輸出刷新三個(gè)階段構(gòu)成了 PLC 的基本工作模式,理解這一點(diǎn)是掌握 PLC 編程的前提。
2. WAIT 指令是一把“雙刃劍”
它可以幫助我們調(diào)試程序、排查問題,但也會拉長掃描周期、影響定時(shí)精度。
3. 定時(shí)器的異步刷新特性需要重視
定時(shí)器是獨(dú)立于掃描周期運(yùn)行的,檢查定時(shí)完成狀態(tài)卻依賴于程序掃描,這決定了定時(shí)器不適合用于精確定時(shí)。
4. 選擇合適的工具做合適的事
對于需要精確定時(shí)的場景,循環(huán)中斷(OB30)+計(jì)數(shù)器是更好的選擇。
例如:

這種方案使用的是 CPU 執(zhí)行周期(循環(huán)中斷)作為計(jì)時(shí)基準(zhǔn),配合計(jì)數(shù)器(如 Int、DInt 變量) 來實(shí)現(xiàn)精確定時(shí)。
-
plc
+關(guān)注
關(guān)注
5052文章
14762瀏覽量
488297 -
指令
+關(guān)注
關(guān)注
1文章
624瀏覽量
37660 -
程序
+關(guān)注
關(guān)注
117文章
3847瀏覽量
85440
原文標(biāo)題:TIA Portal 中的 WAIT 指令:讓 PLC 程序慢下來
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Teamcenter、TIA Portal、NX MCD是如何結(jié)合在一起
Teamcenter、TIA Portal和虛擬調(diào)試如何才能結(jié)合在一起
教學(xué):把TPS-1加進(jìn)TIA PORTAL
PLC編程中的FOR循環(huán)指令案例詳解
PLC的掃描周期_PLC輸入/輸出滯后時(shí)間
基于TIA Portal下的TCP通訊的方法詳解
在TIA Portal中調(diào)整KUKA標(biāo)準(zhǔn)IO的數(shù)量
STEP7(TIA Portal) 中各種圖標(biāo)的含義
西門子要將LAD指令與PLC變量互連
使用TIA Portal進(jìn)行工程設(shè)計(jì)的開放接口
TIA Portal V18包安裝的流程和注意事項(xiàng)
PLC掃描周期與開關(guān)信號值的傳遞過程
TIA Portal V13 SP1上載程序步驟
STEP7(TIA Portal)TRACE功能全面解析
TIA Portal中的WAIT指令如何影響PLC掃描周期
評論