江蘇西門子S7-1500PLC模塊代理(優(yōu)勢價格)

功能塊與功能的調(diào)用
CPU提供塊堆棧來存儲處理被中斷塊的有關(guān)信息。當(dāng)發(fā)生塊調(diào)用或有來自更高優(yōu)先級的中斷時,就有相關(guān)的信息存儲在塊堆棧里,并影響部分內(nèi)存和存儲器。調(diào)用塊時的情況如圖4-8所示。
圖4-8 調(diào)用指令對CPU內(nèi)存的影響
1.調(diào)用功能塊(FB)
當(dāng)調(diào)用功能塊FB時,將會發(fā)生下列事件。
①調(diào)用塊的地址和返回位置存儲在塊堆棧中,調(diào)用塊的臨時變量壓入局域數(shù)據(jù)堆棧。
②數(shù)據(jù)塊DB寄存器內(nèi)容與背景數(shù)據(jù)塊寄存器內(nèi)容交換。
③新的數(shù)據(jù)塊地址裝入背景數(shù)據(jù)塊寄存器。
④被調(diào)用塊的實參裝入共享數(shù)據(jù)塊和局域數(shù)據(jù)堆棧上部。
⑤當(dāng)功能塊FB結(jié)束時,先前塊的現(xiàn)場信息從塊堆棧彈出,臨時變量彈出局域數(shù)據(jù)堆棧。
⑥共享數(shù)據(jù)塊和背景數(shù)據(jù)塊寄存器內(nèi)容交換。
2.調(diào)用功能(FC)
當(dāng)調(diào)用功能FC時將有下列事件發(fā)生。
①功能FC實參的指針被存儲到調(diào)用塊的局域數(shù)據(jù)堆棧中。
②調(diào)用塊的地址和返回位置存儲在塊堆棧中,調(diào)用塊的臨時變量壓入局域數(shù)據(jù)堆棧。
③功能FC存儲臨時變量的局域數(shù)據(jù)堆棧區(qū)被推到堆棧上部。
④當(dāng)功能FC結(jié)束時,先前塊的現(xiàn)場信息存儲在塊堆棧中,臨時變量彈出局域數(shù)據(jù)堆棧。
因為功能FC不用背景數(shù)據(jù)塊,不能分配給初始數(shù)值給功能FC的局域數(shù)據(jù),所以必須給功能提供實參。
下面以發(fā)動機(jī)控制系統(tǒng)的用戶程序為例,介紹生成和調(diào)用功能塊和功能的方法。
1.項目的創(chuàng)建
點擊
圖標(biāo),在彈出的新項目向?qū)е悬c擊【Next】,依次選擇CPU的型號和MPI站地址、需要編程的組織塊和使用的編程語言,后設(shè)置項目的名稱為“發(fā)動機(jī)控制”。
2.用戶程序結(jié)構(gòu)
用戶程序結(jié)構(gòu)如圖4-9所示,其中組織塊081是主程序,用一個名為“發(fā)動機(jī)控制”的功能塊FB1來分別控制汽油機(jī)和柴油機(jī),控制參數(shù)在背景數(shù)據(jù)塊DB1和DB2中??刂破蜋C(jī)時調(diào)用FB1和名為“汽油機(jī)數(shù)據(jù)”的背景數(shù)據(jù)塊DB1,控制柴油機(jī)時調(diào)用FB1和名為“柴油機(jī)數(shù)據(jù)”的背景數(shù)據(jù)塊DB2。此外控制汽油機(jī)和柴油機(jī)時還用不同的實參分別調(diào)用名為“風(fēng)扇控制”的功能FC1。
根據(jù)用戶程序的結(jié)構(gòu)設(shè)計好SIMATIC管理器中的塊
圖4-10 SIMATIC管理器
3.符號表與變量聲明表
(1)符號表
為了使程序易于理解,可以給變量符號。在發(fā)動機(jī)控制SIMATIC管理器的“S7Program (1)”樹狀目錄下,雙擊“Symbols”圖標(biāo),如圖4-11所示,打開一個空的符號表,然后在里面輸入需要的符號、地址、數(shù)據(jù)類型以及注釋,就完成了對符號表的創(chuàng)建。創(chuàng)建好的發(fā)動機(jī)控制項目的符號表如圖4-12所示,符號表中定義的變量是全局變量,可供所有的邏輯塊使用。
(2)變量聲明表
梯形圖編輯器的右上半部分是變量聲明表,右下半部是程序指令部分,左邊是指令列表。用戶在變量聲明表中聲明本塊中的變量,即局域變量,包括塊的形參和參數(shù)的屬性,局域變量只是在它所在的塊中有效。聲明后在局域數(shù)據(jù)堆棧中為臨時變量保存有效的存儲空間。
對于功能塊,還要為配合使用背景數(shù)據(jù)塊的靜態(tài)變量(STAT)保留空間。
在圖4-13中,變量聲明表的左邊給出了該表的總體結(jié)構(gòu),點擊某一變量類型(例如“OUT”),在表的右邊將顯示出該類型局域變量的詳細(xì)情況。
將圖4-13中變量聲明表與程序指令部分之間水平分隔條拉至程序編輯器窗口的頂部,不再顯示變量聲明表,但它仍然存在,將分隔條下拉將再次顯示變量聲明表。
(3)FB1中的局域變量
發(fā)動機(jī)控制中FB1的局域變量如表4-4所示。表中Bool變量(數(shù)字量)的初值(InitialValue) FALSE即二進(jìn)制數(shù)0。預(yù)置轉(zhuǎn)速是固定值,在變量聲明表中作為靜態(tài)參數(shù)(STAT)來存儲,被稱為“靜態(tài)局域變量”。
4.程序庫
程序庫用來存放能夠多次使用的程序部件,可以從已有的項目中將它們復(fù)制到程序庫,也可以在程序庫中直接生成程序部件。
①新建程序庫。在管理器中用菜單命令“File”→“New”打開“New Project”對話框,
在“Libraries”選項卡可以生成新的程序庫,如圖4-14所示。
圖4-14新建程序庫
②設(shè)置新建程序庫存放的存放目錄。菜單命令“Option”→“Customize”打開“Customize”窗口,用“General”選項卡中的“Storage location for libraries”可以設(shè)置新庫存放在計算機(jī)的目錄,如圖4-15所示。
③顯示和關(guān)閉程序庫。用程序編輯器中的菜單命令“View”→“Overviews”可以顯示或者關(guān)閉圖4-13右邊的指令目錄和程序庫(Libraries
STEP 7標(biāo)準(zhǔn)軟件包提供下列的標(biāo)準(zhǔn)程序庫,其內(nèi)容和說明如表4-5所示。
表4-5 STEP 7標(biāo)準(zhǔn)軟件包的標(biāo)準(zhǔn)程序庫
用戶安裝可選軟件包后,還會增加其他的程序庫,例如安裝S7 Graph后會自動增加S7Graph庫。
5.功能塊與功能
(1)功能塊FB1的程序
圖4-12的下半部分是FB1的梯形圖程序,SR指令塊用來控制發(fā)動機(jī)的運行,輸入變量Switch_on和Switch_off分別是啟動命令和停車命令。Failure(故障)信號在*時為0,有故障時為1。功能塊的輸出信號Engine_On為1時發(fā)動機(jī)運行,為0時發(fā)動機(jī)停車。
FB1用比較指令來監(jiān)視轉(zhuǎn)速,檢查實際轉(zhuǎn)速是否大于等于預(yù)置轉(zhuǎn)速。如果滿足條件,輸出信號#Preset_Speed_Reached(達(dá)到預(yù)置轉(zhuǎn)速)被置為1。
(2)功能的生成與編輯
如果控制功能不需要保存數(shù)據(jù),可以用功能FC來編程。與功能塊FB相比較,FC不需要配套背景數(shù)據(jù)塊。
在功能變量聲明表中可以使用的參數(shù)類型有IN、OUT、IN_OUT、TEMP和RETURN,功能不能使用靜態(tài)( STAT)局域數(shù)據(jù)。
在管理器中打開Block文件夾,用鼠標(biāo)右鍵點擊右邊的窗口,在彈出的菜單中選擇“InsertNew Obj ect”→“Function”(插入一個功能
功能1(FC)中使用的變量如表4-6所示。在變量聲明表中不能用漢字做變量的名稱。
表4-6 FC1的變量聲明表
功能FC1用來控制發(fā)動機(jī)的風(fēng)扇,要求在啟動發(fā)動機(jī)的同時啟動風(fēng)扇,發(fā)動機(jī)停車后,風(fēng)扇繼續(xù)運行4s后斷電。
在FC1中,使用了延時斷開定時器(S_OFFDT)。在功能的變量聲明表中定義了輸入變量( Engine_On)和輸出變量( Fan_On),調(diào)用FC1時將延時斷開定時器作為功能的輸入變量,數(shù)據(jù)類型為Timer,FC1用于不同的發(fā)動機(jī)時可以不同的定時器。其對應(yīng)的梯形圖程
圖4-18中梯形圖的語句表程序如下所示:
A#Engine_On //輸入信號,發(fā)動運行標(biāo)志
LS5T#4S
SF #Timer_ Function
A#Timer_ Function//1亭機(jī)延時時定時器功能
=#Fan_On //輸出信號,風(fēng)扇運行標(biāo)志
6.功能塊與功能的調(diào)用
組織塊OB1是循環(huán)執(zhí)行的主程序,生成項目時系統(tǒng)自動生成空的081。在管理器中雙擊OB1圖標(biāo)后進(jìn)入編輯器窗口,可以用“View”菜單命令選擇編程語言,
在發(fā)送機(jī)控制程序中,OB1用來實現(xiàn)自動/手動工作模式的切換,通過兩次調(diào)用FB1和FC1實現(xiàn)對汽油機(jī)和柴油機(jī)的控制。控制汽油機(jī)的程序如圖4-20所示,柴油機(jī)控制程序與之相類似。
通過置位/復(fù)位指令SR,用符號名分別為“自動”和“手動”的按鈕來控制符號名為“自動模式”的輸出量Q4.2。符號名為“自動”和“手動”的變量不是某一發(fā)動機(jī)的屬性,這些變量是在共享符號表中定義的,因此適用于整個程序。
(1)功能塊的調(diào)用
塊調(diào)用分為條件調(diào)用和無條件調(diào)用。用梯形圖調(diào)用塊時,塊的EN(Enable,使能)輸入端有能流流入時執(zhí)行塊,反之則不執(zhí)行。條件調(diào)用時EN端受到觸點電路的控制,塊被正確執(zhí)行時ENO(Enable Output,使能輸出端)為1,反之為0。
調(diào)用功能塊之前,應(yīng)為它生成一個背景數(shù)據(jù)塊,調(diào)用時應(yīng)背景數(shù)據(jù)塊的名稱。生成背景數(shù)據(jù)塊時應(yīng)選擇數(shù)據(jù)塊的類型為背景數(shù)據(jù)塊,并設(shè)置調(diào)用其功能塊的名稱。圖4-19中的“汽油機(jī)數(shù)據(jù)”(DBl)是功能塊“發(fā)動機(jī)控制”(FBl)的背景數(shù)據(jù)塊。
調(diào)用功能塊時應(yīng)將實參賦值給形參,例如將符號名為“啟動汽油機(jī)”的實參賦值給形參“Switch_On”,實參可以是地址或符號地址。如果調(diào)用時沒有給形參賦以實參,功能塊就調(diào)用背景數(shù)據(jù)塊中形參的數(shù)值。該數(shù)值可能是在功能塊變量聲明表中設(shè)置形參的初值,也可能是上一次調(diào)用時儲存在背景數(shù)據(jù)塊中的數(shù)值。
(2)功能的調(diào)用
功能FC沒有背景數(shù)據(jù)塊,不能給功能的局域變量分配初值,所以必須給功能分配實參。STEP 7為功能提供了一個特殊的輸出參數(shù)——返回值(RET_VAL) 。調(diào)用該功能時,可以一個地址作為實參來存儲返回值。
圖4-19所示的“汽油機(jī)風(fēng)扇控制”部分是就是調(diào)用了功能FC1,功能FC1用于發(fā)動機(jī)停機(jī)后風(fēng)扇繼續(xù)運行4s后再停止運行。在符號表中定義了FC1輸入變量和輸出變量的符號。
圖4-19中梯形圖對應(yīng)的語句表如下所示:
Networkl:自動手動切換
A ”自動”
S ”自動模式”
A ”手動”
R ”自動模式”
Network2:汽油機(jī)控制
CALL ”發(fā)動機(jī)控制”,”汽油機(jī)數(shù)據(jù)”
Switch_On :=”啟動汽油機(jī)”
Switch_Off :=”關(guān)閉汽油機(jī)”
Failure :=”汽油機(jī)故障”
Actual_Speed :=”汽油機(jī)轉(zhuǎn)速”
Engine_On :=”汽油機(jī)運行”
Preset_Speed_Reached:=”汽油機(jī)到達(dá)設(shè)置轉(zhuǎn)速”
Network3:汽油機(jī)風(fēng)扇控制
CALL ”風(fēng)扇控制”
Engine_On :=”汽油機(jī)運行”
Timer_Function :=”汽油機(jī)風(fēng)扇延時”
Fan_On :=”汽油機(jī)風(fēng)扇運行”
江蘇西門子S7-1500PLC模塊代理(優(yōu)勢價格)