複製鏈接
請複製以下鏈接發送給好友

中斷指令

鎖定
CPU正常運行期間,停止當前操作,執行其他特殊操作的行為就叫中斷,負責跳轉的指令就是中斷指令。
中文名
中斷指令
類    型
S7-200的特殊功能指令
釋    義
CPU暫停工作,去完成外部過程
意    義
向設備發送數據

中斷指令特殊功能指令

3.9 S7-200的特殊功能指令
1. 中斷指令
PLC 的 CPU在整個控制過程中, 有些控制要取決於外部事件。 比如只有外部設備請求 CPU發送數
據時,CPU才能向這個設備發送數據。這類控制的進行是取決於外部設備的請求和 CPU 的響應,當
CPU在接受了外部設備的請求時, CPU就要暫停其當前的工作,去完成外部過程的請求,這種工作方
式就叫中斷方式
在啓動中斷程序之前,必須使中斷事件與發生此事件時希望執行的程序段建立聯繫。使
用中斷連接指令(ATCH)建立中斷事件(由中斷事件號碼指定)與程序段(由中斷程序號碼指定)
之間的聯繫。將中斷事件連接於中斷程序時,該中斷自動被啓動。
使用中斷分離指令(DTCH)可刪除中斷事件與中斷程序之間的聯繫,因而關閉單箇中斷
事件。中斷分離指令使中斷返回未激活或被忽略狀態。
S7-200可以引發的中斷事件總共有5大類34項。 其中輸入信號引起的中斷事件有8項,
通訊口引起的中斷事件有 6 項,定時器引起的中斷事件 4 項,高速計數器引起的中斷事件有
14 項,脈衝輸出指令引起的中斷事件有 2 項。如表
中斷指令 中斷指令
S7-200 可以在梯形圖編輯器內的任何位置右擊鼠標並選擇插入中斷。S7-200 也可以從
中斷指令 中斷指令
指令樹,右擊程序塊圖標並從彈出菜單選擇插入中斷。S7-200 還可以從程序編輯器窗口,從菜單右擊插入中斷。一旦一個新的中斷被建立,會在程序編輯器的底部將出現新的標籤,
代表新的中斷程序。
(1)中斷連接指令
·中斷連接指令的表示:中斷連接指令由指令的允許端 EN、指令助記符
ATCH、中斷程序號(入口號)INT n和中斷事件的事件號 EVNT 構成。用梯
形圖或語句表表示如圖3-9-1。
·中斷連接指令的操作:中斷連接指令(ATCH)使中斷事件(EVNT)與中斷程
圖3-9-1 圖3-9-1
序號碼(INT)相聯繫,並啓動中斷事件。根據指定事件優先級組,PLC按照先來先服務的順序對中斷提供服務。
任何時刻只能激活一個用户中斷。其它中斷處於激活狀態時,CPU發出中斷暫時入隊,等待以後處理。如果發生的中斷數目過多,隊列無法處理,則設定隊列溢出狀態位。當隊空時,重置這些位。

中斷指令數據範圍

INT;0~127
EVENT:0~33
(2)中斷分離指令
· 中斷分離指令的表示: 中斷分離指令由指令的允許端 EN、 指令助記符 DTCH
圖3-9-2 圖3-9-2
和中斷事件的事件號 EVNT 構成。用梯形圖或語句表表示如圖3-9-2。 ·中斷分離指令的操作:中斷分離指令(DTCH)取消中斷事件(EVNT)與全部中
斷程序之間的聯繫,並關閉此中斷事件 ·數據範圍:
EVENT:0~33
·中斷返回指令的表示:中斷返回指令由指令助記符 RETI
構成。用梯形圖或語句表表示如圖3-9-3。
·中斷返回指令的操作:中斷返回指令(RETI條件返回)可用
於根據先前邏輯條件從中斷返回。
·注意事項:
Micro/WIN 32 自動為各中斷程序添加無條件返回。在
圖3-9-3 圖3-9-3
編寫程序時,用户不必要再書寫無條件返回指令了。 中斷處理提供了對特殊的內部或外部中斷事件的響應。
編寫中斷服務程序時,使中斷程序短小而簡單,加快執行速
度而且不要延時過長。否則,未預料條件可能引起主程序控
制的設備操作異常。對於中斷服務程序 ,俗語説“越短越好,”這是絕對正確的。
在中斷程序內不能使用 DISI、ENI、HDEF、LSCR、END指令。
(4)中斷允許指令
·中斷允許指令的表示:中斷允許指令由
指令助記符 ENI構成。用梯形圖或語句表
圖3-9-4 圖3-9-4
表示如圖3-9-4。 · 中斷允許指令的操作:中斷允許指令
(ENI)指令全局性地啓動全部中斷事件。 一
旦進入運行模式,就允許執行各個已經激
活的中斷事件。
(5)中斷禁止指令
·中斷禁止指令的表示:中斷禁止指令由
指令助記符 DISI 構成。用梯形圖或語句表表示如圖3-9-4。
·中斷禁止指令的操作:中斷禁止指令(DISI)可以全局性地關閉所有中斷事件。中斷禁止指
令允許中斷入隊,但不允許啓動中斷程序。
(6)中斷中進一步説明的幾個問題
1)關於在中斷中調用子程序:從中斷程序中可以調用一個嵌套子程序。累加器和邏輯堆棧
在中斷程序和被調用的子程序中是共用的。
2)關於共享數據:可以在主程序和一個或多箇中斷程序間共享數據。例如,用户主程序的某
個地方可以為某個中斷程序提供要用到的數據,反之亦然。如果用户程序共享數據,必須考
慮中斷事件異步特性的影響,這是因為中斷事件會在用户主程序執行的任何地方出現。共享
數據一致性問題的解決要依賴於主程序被中斷事件中斷時中斷程序的操作。
這裏有幾種可以確保在用户主程序和中斷程序之間正確共享數據的編程技巧。 這些技巧
或限制共享存儲器單元的訪問方式,或讓使用共享存儲器單元的指令序列不會被中斷。
語句表程序共享單個變量。如果共享數據是單個字節、字、雙字變量,而用户程序
STL 編寫,那麼通過把共享數據操作得到的中間值,只存儲到非共享的存儲器單元或累加器中,可以保證正確的共享訪問。
梯形圖程序共享單個變量。如果共享數據是單個字節、字或雙字變量,而且用户程序用
梯形圖編寫,那麼通過只用 Move 指令(MOVB、MOVW、MOVD、MOVR)訪問共享存儲器單元,
可以保證正確的共享訪問。這些 Move 指令執行時不受中斷事件影響。
語句表或梯形圖程序共享多個變量,如果共享數據由一些相關的字節、字或雙字組成,
那麼可以用中斷禁止/允許指令(DISI 和 ENI)來控制中斷程序的執行。在用户程序開始
對共享存儲器單元操作的地方禁止中斷,一旦所有影響共享存儲器單元的操作完成後,再允
許中斷,但這種方法會導致對中斷事件響應的延遲。
3)關於通訊口中斷:
PLC 的串行通訊口可由梯形圖或語句表程序來控制。通訊口的這種操作模式稱為自由端
口模式。在自由端口模式下,用户可用程序定義波特率、每個字符位數、奇偶校驗和通訊協
議。利用接收和發送中斷可簡化程序對通訊的控制。
4)關於I/O中斷:
I/O 中斷包含了上升沿下降沿中斷、高速計數器中斷和脈衝串輸出(PTO)中斷。 S7
-200 CPU 可用輸入 I0.0至 I0.3 的上升沿或下降沿產生中斷。上升沿事件和下降沿事件可
被這些輸入點捕獲。 這些上升沿或下降沿事件可被用來指示當某個事件發生時必須引起注意
的條件。
高速計數器中斷允許響應諸如當前值等於預置值、 計數器計數方向改變和計數器外部復
位等事件而產生中斷。每種高速計數器可對高速事件實時響應,而 PLC 掃描速率對這些高速
事件是不能控制的。脈衝串輸出中斷給出了已完成指定脈衝數輸出的指示。脈衝串輸出的一
個典型應用是步進電機。 可以通過將一箇中斷程序連接到相應的 I/O 事件上來允許上述的每
一箇中斷。
5)關於時基中斷:
時基中斷包括定時中斷和定時器 T32/T96 中斷。CPU 可以支持定時器中斷。可以用定時
中斷指定一個週期性的活動。週期以 1ms 為增量單位,週期可以從 5ms 到255ms。對定時中
斷 0,把週期時間寫入 SMB34;對定時中斷 1,把週期時間寫入 SMB35。每當定時器溢出時,
定時中斷事件把控制權交給相應的中斷程序。 通常可用定時中斷以固定的時間間隔去控制模
擬量輸入的採樣或者執行一個 PID迴路
當把某個中斷程序連接到一個定時中斷事件上, 如果該定時中斷被允許, 那就開始計時。
在連接期間,系統捕捉週期時間值,因而後來的變化不會影響週期。為改變週期時間,首先
必須修改週期時間值,然後重新把中斷程序連接到定時中斷事件上。當重新連接時,定時中
斷功能清除前一次連接時的任何累計值,並用新值重新開始計時。
一旦允許, 定時中斷就連續地運行, 指定時間間隔的每次溢出時執行被連接的中斷程序。
如果退出 RUN 模式或分離定時中斷,則定時中斷被禁止。如果執行了全局中斷禁止指令,定
時中斷事件會繼續出現,每個出現的定時中斷事件將進入中斷隊列等待,直到中斷允許或隊
列滿。
定時器 T32/T96 中斷允許及時地響應一個給定時間間隔。 這些中斷只支持 lms 分辨率的
延時接通定時器(TON)和延時斷開定時器(TOF)T32 和 T96。T32 和 T96 定時器在其它方面
工作正常。一旦中斷允許,當有效定時器的當前值等於預置值時,在 CPU 的正常 lms 定時
刷新中,執行被連接的中斷程序。首先把一箇中斷程序連接到 T32/T96 中斷事件上,然後允
許該中斷。
6)關於中斷的優先級和排隊:
中斷按以下固定的優先級順序執行。通訊(最高優先級) ,I/O 中斷,時基中斷(最低
優先級) 。 在各個指定的優先級之內,CPU 按先來先服務的原則處理中斷。任何時間點上,只有一
個用户中斷程序正在執行。一旦中斷程序開始執行,它要一直執行到結束。而且不會被別的
中斷程序,甚至是更高優先級的中斷程序所打斷。當另一箇中斷正在處理中,新出現的中斷
需排隊等待處理。
有時,可能有多於隊列所能保存數目的中斷出現,因而,由系統維護的隊列溢出存儲器
位表明丟失的中斷事件的類型。只在中斷程序中使用這些隊列溢出存儲器位,因為在隊列變
空或控制返回到主程序時,這些位會被複位。
7)關於使用中斷的限制:
一個程序內最多可有 128 箇中斷。在各自的優先級範圍內,PLC 採用先來先服務的原
則處理中斷。在任何時刻,只能執行一個用户中斷程序。一旦一箇中斷程序開始執行,則一
直執行至完成。不能被另一箇中斷程序打斷,即使另一程序的優先級較高。正在處理中斷時
發生的新的中斷需要排隊等待處理。
在中斷程序內不能使用 DISI、ENI、HDEF、LSCR 和 END指令。
(7) 中斷程序編程步驟
·建立中斷程序 INT n(同建立子程序方法相同)
·在中斷程序 INT n 中編寫其應用程序
·編寫中斷連接指令(ATCH)
·允許中斷(ENI)
·如果需要的話,可以編寫中斷分離指令(DTCH) 例 3-9-1:圖3-9-5 是一個應用定時中斷去讀取一個
模擬量的編程例子。
主程序 OB1 有一條語句,其功能是當 PLC 上電以
圖3-9-5 圖3-9-5
後首次掃描(SMO.l=1),調用子程序 SBRO,進行初始化。
子程序 SBR0 的功能是設置定時中斷。其中,設
定定時中斷 0 時間間隔為 l00ms。傳送指令 MOV 把
100存入SMB34中, 就是設定定時中斷0的時間間隔。
而中斷連接指令 ATCH 則把定時中斷 0(中斷事件號
為 10)和中斷程序 0(中斷入口為 INT0)連接起來,
並對該事件允許中斷。子程序的最後一句是全局允許
中斷(ENI) ,只有有了這一條,已經允許中斷的中斷
事件才能真正被執行。
中斷服務程序 INT0 的功能是每中斷一次,執行
一次讀取模擬量 AIW0 的操作,並將這個數值傳送給
VW0。

中斷指令指令簡介

2022年6月14日,民航局南航CZ328等4個發射向故障指令。 [1] 
參考資料