上海西門子S7-200SMART模塊代理經(jīng)銷商
由用戶建立的用戶程序需要下載到CPU。用戶程序包含所有處理的自動(dòng)化任務(wù)要求的功能。用戶程序包括:
1)規(guī)定對CPU再啟動(dòng)(暖啟動(dòng))和熱啟動(dòng)的條件(例如,用一個(gè)具體的值,對信號初始化處理);
2)處理過程數(shù)據(jù)(例如,對二進(jìn)制信號的邏輯運(yùn)算,采集以及估算模擬量信號,對二進(jìn)制信號運(yùn)算結(jié)果的輸出以及模擬量信號的輸出);
3)對中斷的響應(yīng);
4)在正常的程序循環(huán)中對干擾的處理。
STEP 7編程軟件允許將用戶程序進(jìn)行結(jié)構(gòu)化處理,換言之,是將整個(gè)用戶程序分解成單個(gè)的自身包含的程序段(方塊)。這樣做具有以下一些優(yōu)點(diǎn):
1)能使整個(gè)程序更容易理解;
2)簡化程序的組織結(jié)構(gòu);
3)修改程序更為方便;
4)由于能對程序分段測試,使調(diào)試更加方便;
5)也更容易實(shí)現(xiàn)系統(tǒng)調(diào)試。
STEP 7編程軟件的方塊見表3-2。
注:FB、SFB、FC以及SFC包含有程序段,稱為邏輯方塊(以區(qū)別于組織方塊OB)。對于每一種方塊類型允許的方塊數(shù)量以及每一個(gè)方塊允許的長度是由CPU類型的技術(shù)指標(biāo)規(guī)定的。
對STEP 7的組織方塊OB說明如下:
組織方塊( OB)是操作系統(tǒng)和用戶程序之間的接口并由操作系統(tǒng)調(diào)用它們,OB控制周期的或中斷的驅(qū)動(dòng)程序執(zhí)行、PLC的啟動(dòng)行為以及對錯(cuò)誤的處理。也可以對組織方塊進(jìn)行編程來決定CPU的行為。每一類組織方塊都有一個(gè)優(yōu)先權(quán)屬性,優(yōu)先權(quán)決定單個(gè)組織方塊程序執(zhí)行的先后順序(啟動(dòng)事件的順序)。調(diào)用一個(gè)OB會中斷另一個(gè)正在執(zhí)行的OB。哪一個(gè)OB允許中斷另一個(gè)OB取決于它們的優(yōu)先權(quán)等級屬性。優(yōu)先權(quán)等級高的OB能夠中斷優(yōu)先權(quán)等級低的OB。層的OB (OB90)具有低的優(yōu)先權(quán)等級。
表3-3給出了STEP 7中的各類中斷及其優(yōu)先權(quán)等級分類,并不是在所有S7 CPU中都有表中列出的組織方塊和優(yōu)先權(quán)等級,每個(gè)CPU支持哪一些OBs請參考《“S7-300可編程序控制器硬件和安裝手冊”》以及《“S7-400,M7-400可編程序控制器模板技術(shù)說明書參考手冊”》。
表3-3 STEP 7中的組織方塊OB的分類

①優(yōu)先權(quán)等級29相當(dāng)于優(yōu)先權(quán)等級0. 29,底層循環(huán)組織塊比自由循環(huán)組織塊的優(yōu)先權(quán)等級低,為低優(yōu)先權(quán)
等級。
對S7-300的CPU,其優(yōu)先權(quán)等級是固定的。
對S7-400的CPU(包括S7-300的CPU318),其優(yōu)先權(quán)等級還可以用STEP 7軟件改變。
在建立組織方塊和邏輯方塊(OB和FC、FB)時(shí)能夠登記暫存的本地?cái)?shù)據(jù),在CPU中的本地?cái)?shù)據(jù)是按優(yōu)先權(quán)等級分開的。
對每一個(gè)OB有20B的本地?cái)?shù)據(jù)啟動(dòng)信息,這些信息在OB啟動(dòng)時(shí)由操作系統(tǒng)提供。啟動(dòng)信息啟動(dòng)OB的事件、OB啟動(dòng)的日期和時(shí)間、出現(xiàn)的錯(cuò)誤以及診斷事件等。例如,OB40是一個(gè)硬件中斷,在其啟動(dòng)信息中包含產(chǎn)生中斷的模板的地址。
對表3-3中的各類組織方塊,在本節(jié)中不作全面詳細(xì)的介紹,讀者可以在《“System Software for S7-300/400 System and Standard Function”》手冊中的第1章“Organization Block”中找到更為全面詳細(xì)的說明。
如圖3-63所示為選擇引起PLC停機(jī)的CPU診斷緩沖區(qū)的圖解過程。
如果在情況下,CPU處理S7程序時(shí)突然進(jìn)入STOP狀態(tài),或者下載S7程序后,CPU不能進(jìn)入RUN運(yùn)行方式,這說明PLC出現(xiàn)了故障(硬件或軟件故障)。通過CPU診斷緩沖區(qū)中列出的“事件”序列,可判斷出引起故障的可能原因。Module Information(模板信息對話框)提供有關(guān)CPU的屬性和參數(shù)的信息。單擊對話框中的Diagnostic Buffer標(biāo)簽,確定引起PLC停機(jī)的原因。后發(fā)生的事件,顯示在圖3-64中事件表的上面位置(number 1),對話框中同時(shí)說明引起CPU停機(jī)的原因。
如果是由于編程的錯(cuò)誤引起CPU停機(jī),則可以選擇事件并單擊Open Block按鈕。隨后,方塊將在LAD/STL/FBD的編程窗口中打開,有故障的網(wǎng)絡(luò)段將“高亮”顯示。
單擊Help→Contents之后,在Diagnostics(診斷)下的CaLling the Module Information(調(diào)用模板信息)標(biāo)題下能找到更多的信息。
使用建立一個(gè)變量表的方法,并通過對表中的變量進(jìn)行監(jiān)視和修改,可以完成對單個(gè)程序的測試。為此首先需要在編程器和CPU之間建立一個(gè)“在線”連接,而且CPU必須工作在RUN-P方式,進(jìn)行調(diào)試的程序也必須已經(jīng)下載到CPU內(nèi)部。如圖3-60所示為建立測試程序用變量表的圖解過程。
初變量表是空的,根據(jù)調(diào)試程序的需要,在變量表中輸入要監(jiān)視或修改的變量名或地址,在Getting Started的例子中的變量表,如圖3-61所示。將該表中所有速度值的狀態(tài)格式改變?yōu)?/span>DEC(Decimal)格式,在相應(yīng)的變量上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇DEC格式。如圖3-62所示為在變量表中監(jiān)視和修改參數(shù)值的示例。
要停止變量表的監(jiān)視功能,可再一次單擊工具欄上的“離線/在線”標(biāo)簽,關(guān)閉窗口,單擊“對話框”中的Yes或OK按鈕加以確認(rèn)。
由于屏幕尺寸的限制,對于大變量表,可能無法*顯示。如果需要建立一個(gè)大變量表,可以在同一個(gè)S7程序里,建立若干個(gè)變量表,每一個(gè)變量表正好滿足部分的測試要求,對每一個(gè)變量表可以分配一個(gè)與方塊或網(wǎng)絡(luò)段相應(yīng)的符號名(例如,對OB1的Network 1可以使用符號名VAT_1),使用同樣的方法在符號地址表中分配其他變量表的符號名。
單擊Help→Contents之后,在Debugging(調(diào)試)下的Testing with the Variable Table(“用變量表測試程序”)標(biāo)題下能找到更多的信息。
應(yīng)用菜單命令Options→Customize,可以在調(diào)試過程中隨時(shí)改變所使用的編程語言(STL與LAD或FBD之間的相互切換),使用STL表示是可行的,用LAD或FBD表示時(shí),有時(shí)會有某些局限性。
建議不要一下把整個(gè)程序下載到CPU中并立即運(yùn)行它,因?yàn)?,出現(xiàn)錯(cuò)誤時(shí),由于造成錯(cuò)誤的原因可能較多,這樣在診斷錯(cuò)誤時(shí)會更加困難。是將程序方塊單個(gè)下載,并測試它們,這樣能更好地進(jìn)行觀察。
單擊Help→Contents之后,在Debug(調(diào)試)和Testing with Program Status(測試程序狀態(tài))的標(biāo)題下能找到更多的信息。
所舉的例子是通過功能塊“Engine”(FB1)來控制一臺發(fā)動(dòng)機(jī),對于不同的發(fā)動(dòng)機(jī)(例如,汽油發(fā)動(dòng)機(jī)和柴油發(fā)動(dòng)機(jī))由于其控制方式和控制程序是相同的,只是具體的參數(shù)(包括輸入/輸出參數(shù)和靜態(tài)參數(shù))不相同,因此只需對不同的發(fā)動(dòng)機(jī)建立不同的背景數(shù)據(jù)塊[例如,對汽油發(fā)動(dòng)機(jī)的背景數(shù)據(jù)塊是“Petrol”(DB1),對柴油發(fā)動(dòng)機(jī)的背景數(shù)據(jù)塊是“Diesel”(DB2)],在組織塊( OB1)中,分別調(diào)用FB1、DB1和FB1、DB2,就能實(shí)現(xiàn)用同一FB1控制多臺不同的發(fā)動(dòng)機(jī)。但是當(dāng)發(fā)動(dòng)機(jī)的數(shù)量增加時(shí),一用這樣的方法還是會帶來一些問題,例如,如果一個(gè)項(xiàng)目中有10臺不同的汽油發(fā)動(dòng)機(jī)和10臺不同的柴油發(fā)動(dòng)機(jī),或者一個(gè)項(xiàng)目中有20臺不同的電動(dòng)機(jī),用這種方式控制就需要建立20個(gè)背景數(shù)據(jù)塊,但是對具體的一臺PLC,它的資源是有限的,例如,對CPU315 -2DP大允許建立的方塊數(shù)量是1024個(gè)(包括FB、FC、DB方塊的總和),如果數(shù)據(jù)塊占用的數(shù)量多了,其他允許用的方塊數(shù)量就得減少。
為解決好這一問題,STEP 7軟件提供了高級功能塊和多背景數(shù)據(jù)塊的概念,使得所需使用的背景數(shù)據(jù)塊的數(shù)量可以大大地減少。具體方法是這樣的,首先用第3.8節(jié)的方法建立一個(gè)功能塊(例如,FB1)用來控制某個(gè)對象(例如,Engine),然后再建立一個(gè)高級功能塊(例如,FB10),把FB1作為靜態(tài)變量,在FB10變量登記表中的靜態(tài)變量項(xiàng)中進(jìn)行登記,這時(shí)需要調(diào)用多少次FB1,就登記多少個(gè)靜態(tài)變量,每一個(gè)靜態(tài)變量取不同的靜態(tài)變量名,而其數(shù)據(jù)類型都定義為FB1 (Engine),見圖3-48的STAT定義。
對高級功能塊FB10的編程如圖3-49所示,當(dāng)在變量登記表的靜態(tài)參數(shù)STAT項(xiàng)中登記了“Petrol_Engine”和“Diesel_Engine”兩個(gè)靜態(tài)參數(shù)后,則在左邊的指令庫目錄中的Mul-tiple instance目錄中就會出現(xiàn)這兩個(gè)多背景塊,在FB10編程窗口的網(wǎng)絡(luò)段1,插入調(diào)用“Petrol_Engine”,這一調(diào)用不需要伴隨背景數(shù)據(jù)塊DB1,同時(shí)“Petrol_Engine”(即FB1)中的形式參數(shù)要用對應(yīng)的實(shí)際參數(shù)去替換,在實(shí)際速度這一項(xiàng),現(xiàn)在不是用MW2去替換,而是改用上一節(jié)中建立的共享數(shù)據(jù)塊DB3. DBW0(符號地址為“S_Data”.PE_ActuaLSpeed)。
用同樣的方法,在網(wǎng)絡(luò)段2,插入調(diào)用“Diesel_Engine”,用對應(yīng)的實(shí)際參數(shù)替換形式參數(shù)。在網(wǎng)絡(luò)段3中,插入串聯(lián)電路邏輯,指示兩臺發(fā)動(dòng)機(jī)都達(dá)到額定轉(zhuǎn)速時(shí)的輸出指示。
在完成FB10的編程后,保存并關(guān)閉該方塊。隨后在方塊文件夾中插入一個(gè)數(shù)據(jù)塊DB10,并定義其屬性為背景數(shù)據(jù)塊,對應(yīng)的功能塊為FB10,這樣就建立了對應(yīng)于高級功能塊FB10的多背景數(shù)據(jù)塊DB10。在方塊文件夾中打開DB10時(shí)會出現(xiàn)以下提示:作為默認(rèn)設(shè)置,背景數(shù)據(jù)塊將以STEP 7 V5.2軟件中的“Parameter assignment for data blocks”方式打開。對用LAD/STL/FBD不同編程語言編輯的這一數(shù)據(jù)塊,在功能上沒有差別。這一數(shù)據(jù)塊只能使用LAD/STL/FBD編程語言的DB編輯器才能打開。是否希望用“Parameter assignment for data blocks”來打開DB?,回答“Yes”。
打開后的DB10如圖3-51所示,在DB10數(shù)據(jù)塊中顯示各個(gè)變量,包括對兩次FB1(本地背景)調(diào)用的“內(nèi)部”變量。所顯示的變量與在FB10中變量登記表的內(nèi)容*。對DB10中的STAT靜態(tài)參數(shù)的實(shí)際值也可以進(jìn)行修改,例如,可以將STAT(Diesel_En-gine. Preset_Speed)修改為1200rpm。
上海西門子S7-200SMART模塊代理經(jīng)銷商