公司新聞當前位置:首頁 > 新聞資訊 > 公司新聞

西門子PLC組織塊與中斷處理是不是很多疑惑?

來源:西門子PLC 發布于:2018-12-11 11:44:00

西門子PLC組織塊與中斷處理是不是很多疑惑?組織塊OB是操作系統與用戶程序之間的接口,組織塊由操作系統調用,組織塊中的程序是用戶編寫的。S7 plc的組織塊用來創建在特定的時間執行的程序或相應特定事件的程序,例如延時中斷OB、外部硬件中斷OB和錯誤中斷OB等。
一、中斷的基本概念
1、中斷過程
中斷處理用來實現對特殊內部事件或外部事件的快速響應,如果沒有中斷,CPU循環執行組織塊OB1,因為除了背景組織塊OB90以外,OB1的中斷優先級最低,CPU檢測到中斷源的中斷請求,操作系統在執行完當前程序的當前指令(即斷點處)后,立即響應中斷。CPU暫停正在執行的程序,調用中斷源的中斷組織塊OB來處理,執行完中斷組織塊后,返回被中斷的程序斷點處繼續執行原來的程序。
有中斷事件發生時,如果沒有下載相應的組織塊,CPU將會進入STOP模式,即使生成和下載一個空的組織塊,出現相應的中斷事件時,CPU也不會進入STOP模式。
PLC的中斷源可能來自I/O模塊的硬件中斷,或者來自CPU模塊內部的軟件中斷,例如時間中斷、延時中斷、循環中斷和編程錯誤引起的中斷。
一個OB的執行被另一個OB中斷時,操作系統對現場進行保護,被中斷的OB的局部數據壓入L堆棧(局部數據堆棧),被中斷的斷點處的現場信息保存在I堆棧(中斷堆棧)和B堆棧(塊堆棧)中。中斷程序不是由邏輯塊調用,而是在中斷事件發生時由操作系統調用,因為不能預知系統何時調用中斷程序,中斷程序不能改寫其他程序中可能正在使用的存儲器,中斷程序應盡可能的使用局部變量。編寫中斷程序應越短越好,減少中斷程序的執行時間,減少對其他事件處理的延遲,否則可能引起主程序控制的設備操作異常。
2、組織塊的分類
組織塊只能由操作系統啟動,它由變量聲明表和用戶編寫的控制程序組成。
(1)啟動組織塊:用于系統初始化,CPU上電或操作模式切換到RUN時,S7-300執行OB100,S7-400根據組態的啟動方式執行OB100~OB102中的一個。
(2)循環執行OB1:需要連續執行的程序放在OB1中,循環執行。
(3)定期執行的組織塊:包括時間中斷組織塊OB10~OB17,和循環中斷組織塊OB30~OB38,可以根據設定的日期時間或時間間隔執行中斷程序。
(4)事件驅動的組織塊:延時中斷OB20~OB23在過程事件出現后延時一定時間再執行中斷程序,硬件中斷OB40~OB47用于需要快速響應的過程事件,時間出現時馬上中止當前正在執行的程序,執行對應的中斷程序。diangon.com版權所有!異步錯誤中斷0B80~OB87和同步錯誤中斷OB121、OB122用來決定出現錯誤時系統如何響應。
3、中斷的優先級:也就是組織塊的優先級,如果在執行中斷程序(組織塊)時,又檢測到一個終端請求,CPU將比較兩個中斷源的中斷優先級,如果優先級相同,按照產生中斷請求的先后次序進行處理。如果后者的優先級比正在執行的OB的優先級高,將中止當前的正在處理的OB,
4、對終端的控制:時間中斷和延時中斷有專用的允許處理中斷和禁止中斷的系統功能SFC。
SFC39“DIS_INT”用來禁止中斷和異步錯誤處理,可以禁止所有中斷,有選擇的禁用某些優先級范圍的中斷,或者只禁止指定的某個中斷;
SFC40“EN_INT”用來激活新的中斷和異步錯誤處理,激活中斷是指允許處理中斷,做好了在中斷事件出現時執行對應的組織塊的準備。可以全部允許或有選擇的允許。
SFC41“DIS_AIRT”延遲處理比當前優先級更高的中斷和異步錯誤,直到用SFC42允許處理中斷或當前OB執行完畢,SFC42“EN_AIRT”用來允許立即處理被SFC41暫時禁止的中斷和異步錯誤,SFC41和SFC42配對使用。
5、組織塊的變量聲明表:OB塊是操作系統調用的,OB沒有背景數據塊,也不能為OB聲明輸入、輸出參數和靜態變量,所以,OB的變量聲明表中只有臨時變量,OB的臨時變量可以是基本數據類型、復雜數據類型或數據類型ANY。OB塊包含OB的啟動信息的20B的臨時局部變量TEMP,這些信息在OB啟動時由操作系統提供,包括啟動事件、啟動日期和時間、錯誤及診斷事件。聲明表中的變量的具體內容與組織塊的類型有關,參見下表.西門子PLC組織塊與中斷處理是不是很多疑惑?

二、啟動組織塊
1、CPU的啟動模式和啟動組織塊
400的CPU有3中啟動方式,暖啟動、熱啟動和冷啟動,300CPU只能暖啟動,參見下圖:
用戶可以通過在啟動組織塊中編寫程序,用來設置CPU的初始化操作,例如設置開始運行時的某些變量的初始值和輸出模塊的初始值等。
1)暖啟動過程映像數據以及非保持的存儲器位、定時器和計數器被復位。具有保持功能的存儲器位、定時器、計數器和所有的數據塊將保留原數值,執行一個OB100后,循環執行OB1,將模式選擇開關從STOP切換到RUN,執行一次暖啟動。
2)熱啟動:400CPU在RUN模式下電源突然丟失,很快又重新上電,將執行OB101,自動完成熱啟動,從上次RUN模式結束時程序被中斷之處繼續執行,不對計數器等復位。
3)冷啟動:所有系統存儲區均被清除,即復位為零,包括有保持功能的存儲區。調用OB102后循環執行OB1。
2、循環中斷組織塊
循環中斷組織塊用于按精確時間間隔循環執行中斷程序,例如周期性執行閉環控制系統PID控制程序,間隔時間從cpu從STOP切換到RUN開始計算。S7-300大多數只能使用OB35,其余CPU可以實用的循環中斷OB的個數和CPU型號有關。時間間隔不能小于5ms。時間間隔過短,還沒有執行完循環中斷程序又開始調用它,將會產生時間錯誤時間,調用OB80,如果沒有調用OB80,CPU將進入STOP。
舉例說明:
硬件組態如下:采用CPU315-2DP,雙擊硬件組態中的CPU,打開屬性對話框,由【周期性中斷】選項卡可知只能使用OB35。


默認的循環周期為100ms,改成1000ms。
OB100程序


用MOVE將MB0的初值置7,即低3位為1,此外用ADD_I將MW6加1.
OB35程序:每經過1000ms,MW2被加1.如下圖
禁止和激活硬件中斷
SFC40“EN_IRT”和SFC39“DIS_IRT”分別是激活和禁止中斷和異步錯誤的系統功能。參數MODE的數據類型為BYTE,MODE為2是激活OB_NR,采用16進制數來設置。
編寫OB1程序如下:
仿真實驗如下:進入RUN模式后,可以看到MW6的值一直為1,表明只調用了一次OB100,MB0的低3為被置1,MW2每秒加1.用鼠標模擬產生I0.1循環中斷被禁止,MW2不再加1,用鼠標模擬產生I0.0,循環中斷被激活,MW2又開始加1.

3、時間中斷組織塊
300CPU只能使用OB10,400CPU可以使用OB10~17,可以設置在某一個特定的日期時間產生一次時間中斷,也可以設置從設定日期時間開始,周期性的重復產生中斷,可以用SFC28~SFC30設置、取消和激活時間中斷。
1)、基于硬件組態的時間中斷
要求在到達設置的日期和時間時,用Q4.0自動啟動某臺設備。具體如下:
硬件組態:打開CPU屬性中的“時刻中斷”選項卡,設置執行啟動設備的日期和時間,執行方式為“一次”。

生成OB10,編寫OB10程序如下,設置時間到時,將需要啟動的設備對應的輸出點置為1:

OB1程序:用I0.0將Q4.0復位

2)用SFC控制時間中斷
除了在硬件組態功能中設置和激活時間中斷外,也可以在用戶程序中調用SFC來設置和激活時間中斷,
在OB1調用SFC31來查詢中斷狀態,讀取的狀態用MW16保存。如下圖。

在I0.0的上升沿調用SFC28和SFC30分別來設置和激活時間中斷OB10。用I0.1調用SFC29來禁止時間中斷。各SFC的參數中的RET_VAL是執行時可能出現的錯誤代碼,為0時無錯誤,OB_NR是組織塊編號,SFC28用來設置時間中斷,它的參數SDT是開始產生中斷的日期和時間。PERIOD用來設置執行方式,w#16#0201表示每分鐘產生一次中斷。
OB10程序如下:將MW2加1.
4、硬件中斷組織塊
OB40~47用于快速響應信號模塊、通信模塊和功能模塊的信號變化,具有硬件中斷功能的上述模塊將中斷信號傳送給到CPU時,將觸發硬件中斷,S7-300只能用OB40。
1)硬件組態
雙擊DI/DO模塊,在屬性對話框設置I0.0上升沿中斷,I0.1下降沿中斷。如下圖所示:
2)編寫OB40程序
判斷是哪個模塊的哪個點產生中斷,然后執行相應的操作。
3)禁止和激活硬件中斷
OB1程序在I0.2的上升沿調用SFC40激活OB40對應的硬件中斷,I0.3的上升沿調用SFC39禁止OB40對應的硬件中斷,SFC的MODE為2時,OB_NR為實參的OB的編號,程序如下:
5、延時中斷組織塊
PLC的普通定時器的工作和掃描工作方式有關,其定時精度較差,需要高精度的延時,應使用延時中斷OB,用SFC32啟動延時中斷,延時時間1~60000ms,精度為1ms,
硬件組態
OB40程序:在I0.0的上升沿出發硬件中斷,CPU調用OB40,在OB40中調用SFC32啟動延時中斷,延時10s,從LD12開始8B臨時局部變量是調用OB40的日期時間,用MOVE指令講起中的后4個字節LD16保存到MD20中。
10s延時時間到,CPU調用SFC32指定的OB20.在OB20中用MOVE保存調用OB20的日期時間的后4個字節,同時將Q4.0置為,并通過PQB4立即輸出。
用I0.2將Q4.0復位,在OB1調用SFC34來查詢延時中斷的狀態字,查詢結果用MW8保存,其低字節為MB9,OB_NR的實參是延時中斷OB的編號。RET_VAL為SFC執行時的錯誤代碼,為0時無錯誤。
6、異步錯誤組織塊
操作系統可以檢測下列錯誤:不正確的CPU功能、操作系統執行中的錯誤、用戶程序中的錯誤、I/O中的錯誤。當檢測到一個錯誤,將啟動相應的組織塊如下圖:
用戶可以在組織塊中編程,對發生的錯誤采取相應的措施,以減少或消除錯誤的影響,若沒有生成或下載處理錯誤相應的組織塊,當出現錯誤時CPU將進入STOP模式,即使下載一個空的OB,CPU也不會進入STOP。
利用系統功能SFC可以屏蔽、延遲或禁止各種OB的啟動事件。


本文鏈接:http://www.ryaiddkj.cn/content/?658.html

上一篇:西門子plc模擬量轉換實例

下一篇:西門子PLC如何顯示參考數據

强力斯诺克视频