西門子S7-1200PLC模塊山西代理商

中斷的優(yōu)先級也就是組織塊的優(yōu)先級,如果在執(zhí)行中斷程序(組織塊)時,又檢測到一個中斷請求,CPU將比較兩個中斷源的中斷優(yōu)先級。如果優(yōu)先級相同,按照產(chǎn)生中斷請求的先后次序進(jìn)行處理。如果后者的優(yōu)先級比正在執(zhí)行的OB的優(yōu)先級高,將中止當(dāng)前正在處理的OB,改為執(zhí)行較高優(yōu)先級的OB。這種處理方式稱為中斷程序的嵌套調(diào)用。
下面是優(yōu)先級的順序(后面的比前面的優(yōu)先):背景循環(huán)、主程序掃描循環(huán)、時間中斷、時間延時中斷、循環(huán)中斷、硬件中斷、多處理器中斷、I/O冗余錯誤、異步故障( OB80~87)、啟動和CPU冗余,背景循環(huán)的優(yōu)先級低。
S7 - 300的組織塊的優(yōu)先級是固定的,可以用STEP 7修改S7 - 400 CPU下述組織塊的優(yōu)先級:OB10~ OB47(優(yōu)先級2~23),OB70~OB72(優(yōu)先級25或28,只適用于H系列CPU),以及在RUN模式下的OB80~OB88(見附表B-1)。通常情況下組織塊的編號越大(OB90除外),優(yōu)先級越高。具有相同優(yōu)先級的OB按啟動它們的事件出現(xiàn)的先后順序處理。被同步錯誤啟動的OB121和OB122的優(yōu)先級與錯誤出現(xiàn)時正在執(zhí)行的OB的優(yōu)先級相同。
生成邏輯塊OB、FB和FC時,同時生成臨時局部變量數(shù)據(jù),CPU的局部數(shù)據(jù)區(qū)按優(yōu)先級劃分??梢栽?/span>S7 - 400的CPU模塊屬性對話框的“存儲器”選項卡中,改變每個優(yōu)先級的局部數(shù)據(jù)區(qū)的大小。將優(yōu)先級賦值為0,或分配小于20B的局部數(shù)據(jù)給某一個優(yōu)先級,可以取消相應(yīng)的中斷OB。
組織塊只能由操作系統(tǒng)啟動,它由變量聲明表和用戶編寫的控制程序組成。
(1)啟動組織塊
啟動組織塊用于系統(tǒng)初始化,CPU上電或操作模式切換到RUN時,S7 - 300執(zhí)行OB100,S7 - 400根據(jù)組態(tài)的啟動方式執(zhí)行OB100~OB102中的一個。
(2)循環(huán)執(zhí)行的OB1
需要連續(xù)執(zhí)行的程序存放在OB1中,執(zhí)行完后又開始新的循環(huán)。
(3)定期執(zhí)行的組織塊
定期執(zhí)行的組織塊包括時間中斷組織塊OB10~OB17和循環(huán)中斷組織塊OB30~OB38,可以根據(jù)設(shè)定的日期時間或時間間隔執(zhí)行中斷程序。
(4)事件驅(qū)動的組織塊
延時中斷OB20~OB23在過程事件出現(xiàn)后延時一定的時間再執(zhí)行中斷程序;硬件中斷OB40~ OB47用于需要快速響應(yīng)的過程事件,事件出現(xiàn)時馬上中止當(dāng)前正在執(zhí)行的程序,執(zhí)行對應(yīng)的中斷程序。異步錯誤中斷OB80~ OB87和同步錯誤中斷OB121、OB122用來決定在出現(xiàn)錯誤時系統(tǒng)如何響應(yīng)。
組織塊(OB)是操作系統(tǒng)與用戶程序之間的接口。組織塊由操作系統(tǒng)調(diào)用,組織塊中的程序是用戶編寫的。S7 PLC的組織塊用來創(chuàng)建在特定的時間執(zhí)行的程序或響應(yīng)特定事件的程序,例如延時中斷OB、外部硬件中斷OB和錯誤處理OB等。
中斷處理用來實現(xiàn)對特殊內(nèi)部事件或外部事件的快速響應(yīng)。如果沒有中斷,CPU循環(huán)執(zhí)行組織塊OB1。因為除背景組織塊OB90以外,OB1的中斷優(yōu)先級低,CPU檢測到中斷源的中斷請求時,操作系統(tǒng)在執(zhí)行完當(dāng)前程序的當(dāng)前指令(即斷點處)后,立即響應(yīng)中斷。CPU暫停正在執(zhí)行的程序,調(diào)用中斷源對應(yīng)的中斷組織塊(OB)來處理。執(zhí)行完中斷組織塊后,返回被中斷的程序的斷點處繼續(xù)執(zhí)行原來的程序。
有中斷事件發(fā)生時,如果沒有下載對應(yīng)的組織塊,CPU將會進(jìn)入STOP模式。即使生成和下載一個空的組織塊,出現(xiàn)對應(yīng)的中斷事件時,CPU也不會進(jìn)入STOP模式。
PLC的中斷源可能來自I/O模塊的硬件中斷,或者來自CPU模塊內(nèi)部的軟件中斷,例如時間中斷、延時中斷、循環(huán)中斷和編程錯誤引起的中斷。
一個OB的執(zhí)行被另一個OB中斷時,操作系統(tǒng)對現(xiàn)場進(jìn)行保護(hù)。被中斷的OB的局部數(shù)據(jù)壓入L堆棧(局部數(shù)據(jù)堆棧),被中斷的斷點處的現(xiàn)場信息保存在I堆棧(中斷堆棧)和B堆棧(塊堆棧)中。中斷程序不是由邏輯塊調(diào)用,而是在中斷事件發(fā)生時由操作系統(tǒng)調(diào)用。因為不能預(yù)知系統(tǒng)何時調(diào)用中斷程序,中斷程序不能改寫其他程序中可能正在使用的存儲器,中斷程序應(yīng)盡可能地使用局部變量。
編寫中斷程序時應(yīng)遵循“越短越好”的格言,以減少中斷程序的執(zhí)行時間,減少對其他事件處理的延遲,否則可能引起主程序控制的設(shè)備操作異常。
項目“發(fā)動機(jī)控制”中OB1對FB1的兩次調(diào)用,被圖4-39中OB1對FB10的調(diào)用代替。FB10的輸出參數(shù)“PE_DE_OverSpeed”送給符號名為“兩臺發(fā)動機(jī)超速”的共享數(shù)據(jù)Q5.7。調(diào)用FC1的汽油機(jī)的風(fēng)扇控制程序與圖4-19中的相同。

圖4-39 OB1中調(diào)用多重背景功能塊FB10
FB10的背景數(shù)據(jù)塊DB10見圖4-40,多重背景的名稱“Petrol Engine”和“Diesel _ Engine”加在FB1的局部變量之前,例如“PetrolEngine. Enging_On”??梢孕薷牟裼蜋C(jī)的預(yù)置轉(zhuǎn)速“Diesel_Engine.Preset_Speed”的實際值,修改后需要下載到PLC。
使用多重背景時應(yīng)注意以下問題:
1)首先應(yīng)生成需要多次調(diào)用的功能塊(例如上例中的FB1)。
2)管理多重背景的功能塊(例如上例中的FB10)必須設(shè)置為有多重背景功能。
3)在管理多重背景的功能塊的變量聲明表中,為被調(diào)用的功能塊的每一次調(diào)用定義一個靜態(tài)( STAT)變量作為多重背景,以被調(diào)用的功能塊的名稱(例如FB1)作為該靜態(tài)變量的數(shù)據(jù)類型。
有時需要多次調(diào)用同一個功能塊,每次調(diào)用都需要生成一個背景數(shù)據(jù)塊,但是這些背景數(shù)據(jù)塊中的變量又很少,這樣在項目中就出現(xiàn)了大量的背景數(shù)據(jù)塊“碎片”。在用戶程序中使用多重背景可以減少背景數(shù)據(jù)塊的數(shù)量。
例程“多重背景”與例程“發(fā)動機(jī)控制”的控制要求相同,兩個例程中的FB1和FC1亦相同。原來用FB1控制汽油機(jī)和柴油機(jī)時,分別使用了背景數(shù)據(jù)塊DB1和DB2。使用多重背景時只需要一個背景數(shù)據(jù)塊DB10(見圖4-36),但是需要增加一個功能塊FB10來調(diào)用作為“局部背景”的FB1,FB1的數(shù)據(jù)存儲在FB10的背景數(shù)據(jù)塊DB10中。不需要給FB1分配背景數(shù)據(jù)塊,即原來的DB1和DB2被DB10代替,但是需要在FB10的變量聲明表中聲明數(shù)據(jù)類型為FB1的兩個靜態(tài)變量(STAT)。
圖4-36
單步與斷點是調(diào)試程序的有力工具,有單步與斷點調(diào)試功能的PLC并不多見。
在用戶程序中可以設(shè)置多個斷點,進(jìn)入RUN或RUN-P模式后將停留在*個斷點處,可以查看此時CPU內(nèi)寄存器的狀態(tài)??梢杂?ldquo;調(diào)試”菜單的命令來設(shè)置、激活或刪除斷點。執(zhí)行菜單命令“查看”→“斷點欄”后,在工具欄上將出現(xiàn)一組與斷點有關(guān)的按鈕(見圖4-35),可以用它們來執(zhí)行與斷點有關(guān)的命令。單步模式不是連續(xù)執(zhí)行指令,而是一次只執(zhí)行一條指令??梢詫尾胶蛿帱c功能仿真。
1.設(shè)置斷點與進(jìn)入單步模式的條件
1)只能在語句表中使用單步和斷點功能,可以執(zhí)行菜單命令“查看”→“STL”,將梯形圖或功能塊圖轉(zhuǎn)換為語句表。
2)設(shè)置斷點前應(yīng)在語句表編輯器中執(zhí)行菜單命令“選項”→“自定義”,在出現(xiàn)的對話框的STL選項卡中激活“立即激活新斷點”選項。
3)在SIMATIC管理器中進(jìn)入在線模式,在線打開被調(diào)試的塊。
4) CPU必須工作在測試模式,在程序編輯器中執(zhí)行菜單命令“調(diào)試”→“操作”,在打開的“操作”對話框選中“測試操作”。
5)設(shè)置斷點時不能啟動程序狀態(tài)監(jiān)視功能。
6) STL程序中有斷點的行、調(diào)用塊的參數(shù)所在的行、空的行或注釋行不能設(shè)置斷點。
2.設(shè)置斷點與單步的操作
滿足上述條件后,將光標(biāo)放在語句表中要設(shè)置斷點的指令所在的行。在STOP或RUN -P模式執(zhí)行菜單命令“調(diào)試”→“設(shè)置斷點”,或點擊斷點工具欄上的
按鈕,在選中的指令左邊將出現(xiàn)一個紫色的小圓(見圖4-35),表示斷點設(shè)置成功,同時會出現(xiàn)一個可用鼠標(biāo)拖動的“PLC寄存器內(nèi)容”對話框。執(zhí)行菜單命令“視圖”→“PLC寄存器”,可以打開或關(guān)閉該對話框。
執(zhí)行菜單命令“調(diào)試”→“斷點激活”,將激活斷點功能,在該菜單項前面出現(xiàn)一個“√”,此時程序中表示斷點的小圓是實心的。再次執(zhí)行該命令,“√”消失,表示斷點的小圓變?yōu)榭招牡?。要使斷點起作用,應(yīng)執(zhí)行該命令以激活斷點。也可以用工具欄上的
按鈕來激活斷點或取消激活斷點。
執(zhí)行菜單命令“調(diào)試”→“顯示下一個斷點”,或點擊工具欄上的
按鈕,可以顯示下一個斷點。
將CPU切換到RUN或RUN -P模式,將在*個表示斷點的紫色圓球內(nèi)出現(xiàn)一個向右的黃色箭頭(見圖4-35),表示CPU進(jìn)入HOLD(保持)模式,暫停在該指令處。同時“PLC寄存器內(nèi)容”對話框中出現(xiàn)斷點處的狀態(tài)字、累加器、地址寄存器和塊寄存器的值。
在RUN -P模式,執(zhí)行菜單命令“調(diào)試”→“執(zhí)行下一個語句”,或點擊工具欄上的
按鈕,斷點處小圓內(nèi)的黃色箭頭移動到下一條語句,表示用單步功能執(zhí)行下一條語句。如果下一條語句是調(diào)用塊的語句,執(zhí)行塊調(diào)用后將跳到塊調(diào)用語句的下一條語句。
黃色箭頭在塊調(diào)用指令處時執(zhí)行菜單命令“調(diào)試”→“執(zhí)行調(diào)用”,或點擊工具欄上的
按鈕,將進(jìn)入被調(diào)用的塊,在該塊內(nèi)可以使用斷點和單步功能。塊結(jié)束時將返回塊調(diào)用語句的下一條語句。
在RUN -P模式執(zhí)行菜單命令“調(diào)試”→“恢復(fù)運行”,或點擊工具欄上的
按鈕,程序?qū)⒗^續(xù)運行至下一個斷點處停止。執(zhí)行菜單命令“調(diào)試”→“刪除所有斷點”,或點擊工具欄上的
按鈕,可刪除所有的斷點。
3.保持模式
在執(zhí)行程序時遇到斷點,PLC進(jìn)入保持(HOLD)模式,“RUN”LED閃爍,“STOP”LED亮。這時不執(zhí)行用戶程序,停止處理所有的定時器,但是實時時鐘繼續(xù)運行。由于安全的原因,在HOLD模式下輸出被禁止。
在HOLD模式,可以通過圖4-35中的“PLC寄存器內(nèi)容”窗口,查看CPU內(nèi)寄存器的狀態(tài)。
在HOLD模式,有后備電池的PLC在電源掉電后又重新恢復(fù)供電時,進(jìn)入STOP模式,CPU不執(zhí)行自動再啟動。在STOP模式下用戶可以決定處理的方式,例如設(shè)置/清除斷點,執(zhí)行手動再啟動等。沒有后備電池的PLC沒有記憶功能,所以電源恢復(fù)后不考慮斷點以前的操作模式,而是執(zhí)行自動暖啟動。
在圖4-27的第2條指令LAR1處設(shè)置斷點,程序執(zhí)行在該指令處暫停時,在SIMATIC管理器執(zhí)行菜單命令“PLC”→“診斷/設(shè)置”→“模塊信息”,打開CPU的模塊信息對話框。點擊“堆棧”選項卡中的“L堆棧”按鈕,可以看到圖4-28中OB1的局部變量。
西門子S7-1200PLC模塊山西代理商