其它地址分配
(1) 夾緊定時器T1,定時5 s;
(2) 放松定時器T2,定時5 s;
(3) 自動方式標志M0.0;
(4) 單動方式標志M0.1;
(5) 手動方式標志M0.2;
(6) 結(jié)束標志M0.5。
3. 機械手程序設(shè)計
1) 邏輯功能塊(子程序)
邏輯功能塊包括兩個部分:自動方式或單動方式控制(FC10)和手動方式控制(FC11)。
(1) 自動方式或單動方式控制(FC10)的具體程序(梯形圖表示)如圖6.3所示。
(2) 手動方式控制(FC11)的具體程序(梯形圖表示)如圖6.4所示。
2) 組織塊(主程序)
組織塊OB1用于設(shè)定機械手啟動方式,主要負責(zé)功能塊或子程序的調(diào)用,是自動運行還是單動運行,以及系統(tǒng)的循環(huán)掃描、故障診斷和輸出刷新。其梯形圖如圖6.5所示。
5.1 編程方式與程序塊
5.2 數(shù)據(jù)塊與數(shù)據(jù)結(jié)構(gòu)
5.3 S7系列PLC程序設(shè)計
5.1.1 S7-300編程方式簡介
S7-300系列PLC的編程語言是STEP 7。STEP 7繼承了STEP 5語言結(jié)構(gòu)化程序設(shè)計的優(yōu)點,用文件塊的形式管理用戶編寫的程序及程序運行所需的數(shù)據(jù)。如果這些文件塊是子程序,則可以通過調(diào)用語句,將它們組成結(jié)構(gòu)化的用戶程序。這樣,PLC的程序組織明確,結(jié)構(gòu)清晰,易于修改。
為支持結(jié)構(gòu)化程序設(shè)計,STEP 7用戶程序通常由組織塊(OB)、功能塊(FB)或功能塊(FC)等三種類型的邏輯塊和數(shù)據(jù)塊(DB)組成。
組織塊(OB)是系統(tǒng)操作程序與用戶應(yīng)用程序在各種條件下的接口界面,用于控制程序的運行。OB塊根據(jù)操作系統(tǒng)調(diào)用的條件(如時間中斷、報警中斷等)可分成幾種類型,這些類型有不同的優(yōu)先級,高優(yōu)先級的OB可以中斷低優(yōu)先級的OB。每個S7 CPU包含一套可編程的OB塊(隨CPU而不同),不同的OB塊執(zhí)行特定的功能。
OB1是主程序循環(huán)塊,在任何情況下,它都是需要的。根據(jù)過程控制的復(fù)雜程度,可將所有程序放入OB1中進行線性編程,或?qū)⒊绦蛴貌煌倪壿媺K加以結(jié)構(gòu)化,通過OB1調(diào)用這些邏輯塊,并允許塊間的相互調(diào)用。塊的調(diào)用指令中止當前塊(調(diào)用塊)的運行調(diào)用,然后執(zhí)行被調(diào)用塊的所有指令。一旦被調(diào)用的塊被完成,執(zhí)行調(diào)用指令的塊繼續(xù)執(zhí)行調(diào)用指令后的指令。調(diào)用塊可以是任何邏輯塊,被調(diào)用塊只能是功能塊(除OB外的邏輯塊)。圖5.1所示是一個STEP 7調(diào)用實例。除了OB1,操作系統(tǒng)可以調(diào)用其它的OB塊以響應(yīng)確定事件。其它可用的OB塊隨所用的CPU性能和控制過程的要求而定。
功能塊(FB、FC)實際上是用戶子程序,分為帶“記憶”的功能塊FB和不帶“記憶”的功能塊FC。前者有一個數(shù)據(jù)結(jié)構(gòu)與該功能塊的參數(shù)表*相同的數(shù)據(jù)塊(DB)附屬于該功能塊,并隨功能塊的調(diào)用而打開,隨功能塊的結(jié)束而關(guān)閉。該附屬數(shù)據(jù)塊叫做背景數(shù)據(jù)塊(Instance Data Block),存放在背景數(shù)據(jù)塊中的數(shù)據(jù)在FB塊結(jié)束時繼續(xù)保持,即被“記憶”。功能塊FC沒有背景數(shù)據(jù)塊,當FC完成操作后數(shù)據(jù)不能保持。
數(shù)據(jù)塊(DB)是用戶定義的用于存取數(shù)據(jù)的存儲區(qū),可以被打開或關(guān)閉。DB可以是屬于某個FB的情景數(shù)據(jù)塊,也可以是通用的全局數(shù)據(jù)塊,用于FB或FC。S7 CPU還提供標準系統(tǒng)功能塊(SFB、SFC),它們是預(yù)先編好的,經(jīng)過測試后集成在S7 CPU中的功能程序庫。用戶可以直接調(diào)用它們,高效地編制自己的程序。由于它們是操作系統(tǒng)的一部分,因此不需將其作為用戶程序下載到PLC。與FB塊相似,SFB需要一個背景數(shù)據(jù)塊,并需將此DB塊作為程序的一部分安裝到CPU中。不同的CPU提供不同的SFB、SFC功能。
系統(tǒng)數(shù)據(jù)塊(SDB)是為存放PLC參數(shù)所建立的系統(tǒng)數(shù)據(jù)存儲區(qū)。用STEP 7的S7組態(tài)軟件可以將PLC組態(tài)數(shù)據(jù)和其它操作參數(shù)存放于SDB中。
功能塊編程及調(diào)用
功能塊由兩個主要部分組成:一部分是每個功能塊的變量聲明表,變量聲明表聲明此塊的局部數(shù)據(jù);另一部分是邏輯指令組成的程序,程序要用到變量聲明表中給出的局部數(shù)據(jù)。
當調(diào)用功能塊時,需提供塊執(zhí)行時要用到的數(shù)據(jù)或變量,也就是將外部數(shù)據(jù)傳遞給功能塊,這被稱為參數(shù)傳遞。參數(shù)傳遞的方式使得功能塊具有通用性,它可被其它的塊調(diào)用,以完成多個類似的控制任務(wù)。
1. 變量聲明表(局部數(shù)據(jù))
每個邏輯塊前部都有一個變量聲明表,在變量聲明表中定義邏輯塊用到的局部數(shù)據(jù)。局部數(shù)據(jù)分為參數(shù)和局部變量兩大類,局部變量又包括靜態(tài)變量和臨時變量(暫態(tài)變量)兩種。參數(shù)是在調(diào)用塊和被調(diào)用塊間傳遞的數(shù)據(jù)。靜態(tài)變量和臨時變量是僅供邏輯塊本身使用的數(shù)據(jù)。表5.1給出了局部數(shù)據(jù)聲明類型,表中內(nèi)容的排列順序也是在變量聲明
表中聲明變量的順序和變量在內(nèi)存中的存儲順序。在邏輯塊中不需使用的局部數(shù)據(jù)類型,可以不必在變量聲明表中聲明。
表5.1 局部數(shù)據(jù)類型
變 量 名 類 型 說 明
輸入?yún)?shù) In 由調(diào)用邏輯塊的塊提供數(shù)據(jù),輸入給邏輯塊的指令
輸出參數(shù) Out 向調(diào)用邏輯塊的塊返回參數(shù),即從邏輯塊輸出結(jié)果數(shù)據(jù)
IO參數(shù) In_Out 參數(shù)的值由調(diào)用塊的塊提供,由邏輯塊處理修改,然后返回
靜態(tài)變量 Stat 靜態(tài)變量存儲在背景數(shù)據(jù)塊中,塊調(diào)用結(jié)束后,其內(nèi)容被保留
臨時變量 Temp 臨時變量存儲在L堆棧中,塊執(zhí)行結(jié)束變量的值因被其它內(nèi)容覆蓋而丟掉
對于功能塊FB,操作系統(tǒng)為參數(shù)及靜態(tài)變量分配的存儲空間是背景數(shù)據(jù)塊。這樣參數(shù)變量在背景數(shù)據(jù)塊中留有運行結(jié)果備份。在調(diào)用FB時,若沒有提供實參,則功能塊使用背景數(shù)據(jù)塊中的數(shù)值。操作系統(tǒng)在L堆棧中給FB的臨時變量分配存儲空間。
對于功能塊FC,操作系統(tǒng)在L堆棧中給FC的臨時變量分配存儲空間。由于沒有背景數(shù)據(jù)塊,因而FC不能使用靜態(tài)變量。輸入、輸出、IO參數(shù)以指向?qū)崊⒌闹羔樞问酱鎯υ诓僮飨到y(tǒng)為參數(shù)傳遞而保留的額外空間中。
對于組織塊OB來說,其調(diào)用是由操作系統(tǒng)管理的,用戶不能參與。因此,OB只有定義在L堆棧中的臨時變量。
1) 形參
為保證功能塊對同一類設(shè)備控制的通用性,用戶在編程時就不能使用具體設(shè)備對應(yīng)的存儲區(qū)地址參數(shù)(如不能使用I1.0等),而是使用這類設(shè)備的抽象地址參數(shù)。這些抽象參數(shù)稱為形式參數(shù),簡稱形參。將該設(shè)備的相應(yīng)實際存儲區(qū)地址參數(shù)(簡稱實參)傳遞給功能塊,功能塊在運行時以實參替代形參,從而可通過調(diào)用功能塊實現(xiàn)對具體設(shè)備的控制。當對另一設(shè)備控制時,同樣也可通過調(diào)用實參將其傳遞給功能塊。
形參需在功能塊的變量聲明表中定義,實參在調(diào)用功能塊時給出。在功能塊的不同調(diào)用處,可為形參提供不同的實參,但實參的數(shù)據(jù)類型必須與形參*。用戶程序可定義功能塊的輸入值參數(shù)或輸出值參數(shù),也可定義一參數(shù)作為輸入輸出值。參數(shù)傳遞可將調(diào)用塊的信息傳遞給被調(diào)用塊,也能把被調(diào)用塊的運行結(jié)果返回給調(diào)用塊。
2) 靜態(tài)變量
靜態(tài)變量在PLC運行期間始終被存儲。S7將靜態(tài)變量定義在背景數(shù)據(jù)塊中,當被調(diào)用塊運行時,能讀出或修改靜態(tài)變量;被調(diào)用塊運行結(jié)束后,靜態(tài)變量保留在數(shù)據(jù)塊中。由于只有功能塊FB有關(guān)聯(lián)的背景數(shù)據(jù)塊,因此只能為FB定義靜態(tài)變量。功能塊FC不能有靜態(tài)變量。
3) 臨時變量
臨時變量僅在邏輯塊運行時有效,邏輯塊結(jié)束時存儲臨時變量的內(nèi)存被操作系統(tǒng)另行 分配。S7將臨時變量定義在L堆棧中,L堆棧是為存儲邏輯塊的臨時變量而專設(shè)的。當塊程序運行時,在L堆棧中建立該塊的臨時變量,一旦塊執(zhí)行結(jié)束,堆棧重新分配,因而信息丟失。
邏輯塊局部數(shù)據(jù)的數(shù)據(jù)類型
在變量聲明表中,要明確局部數(shù)據(jù)的數(shù)據(jù)類型,這樣操作系統(tǒng)才能給變量分配確定的 存儲空間。局部數(shù)據(jù)可以是基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型,也可以是專門用于參數(shù)傳遞 的所謂的“參數(shù)類型”。參數(shù)類型包括定時器、計數(shù)器、塊的地址或指針等,見表5.2。表5.2 參數(shù)類型變量
參數(shù)類型 大 小 說 明
定時器(Timer) 2 B 在功能塊中定義一個定時器形參,調(diào)用時賦予定時器實參
計數(shù)器(Counter) 2 B 在功能塊中定義一個計數(shù)器形參,調(diào)用時賦予計數(shù)器實參
塊:
Block_FB
Block_FC
Block_DB
Block_SDB 2 B 在功能塊中定義一個功能塊或數(shù)據(jù)塊形參變量,調(diào)用時給功能塊類或數(shù)據(jù)塊類形參賦予實際的功能塊或數(shù)據(jù)塊編號,如
FC 101、DB 42
指針(Pointer) 6 B 在功能塊中定義一個形參,該形參說明的是內(nèi)存的地址指針。例如,調(diào)用時可給形參賦予實參P#M50.0,以訪問內(nèi)存M50.0
ANY 10 B 當實參的數(shù)據(jù)類型未知時,可以使用該類型
1) 定時器或計數(shù)器參數(shù)類型
在功能塊中定義一個定時器或計數(shù)器類型的形參,功能塊就能使用一個定時器或計數(shù)器,而不需明確具體的定時器或計數(shù)器,等到調(diào)用該功能塊時再確定定時器或計數(shù)器號。這使用戶程序能靈活性地分配和使用定時器或計數(shù)器。當給定時器或計數(shù)器參數(shù)類型形參分配實參時,在“T”或“C”后跟一個有效整數(shù),如T 100。
2) 塊參數(shù)類型
當定義一個作為輸入輸出的塊時,參數(shù)聲明決定了塊的類型(FB、FC、DB等)。當為塊參數(shù)類型形參分配實參時,可以使用物理地址,如FC 101,也可使用符號地址,如“valve
3) 指針參數(shù)類型
一個指針給出的是變量的地址,而不是變量的數(shù)值大小。在有些功能塊中,可能使用指針編程更為方便。用定義指針類型的形參,就能在功能塊中先使用一個虛設(shè)的指針,待調(diào)用功能塊時再為其賦予確定的地址。當為指針參數(shù)類型形參分配實參時,需要指明內(nèi)存地址,例如P#M50.0。
肇慶回收西門子PLC模塊 肇慶回收西門子PLC模塊