四川內(nèi)江西門子PLC模塊銷售
(1) 塊號、塊類型、優(yōu)先級、被中斷塊的返回地址;
(2) 塊寄存器DB、DI被中斷前的內(nèi)容;
(3) 臨時變量的指針(被中斷塊的L堆棧地址)。
STEP 7中可使用的B堆棧大小是有限制的,對于S7-300 CPU,則可在B堆棧中存儲8個塊的信息。因此,塊調(diào)用嵌套深度也是有限制的,多可同時激活8個塊。
L堆棧是CPU內(nèi)存中的一部分,它在塊調(diào)用時被重新分配。L堆棧用來存儲邏輯塊中定義的臨時變量,也分配給臨時本地數(shù)據(jù)使用。梯形圖的方塊指令與標準功能塊也可能使用L堆棧存儲運算的中間結(jié)果。
2) 調(diào)用功能塊FB
當調(diào)用功能塊FB時,會有以下事件發(fā)生:
(1) 調(diào)用塊的地址和返回位置存儲在塊堆棧中,調(diào)用塊的臨時變量壓入L堆棧;
(2) 數(shù)據(jù)塊DB寄存器內(nèi)容與DI寄存器內(nèi)容交換;
(3) 新的數(shù)據(jù)塊地址裝入DI寄存器;
(4) 被調(diào)用塊的實參裝入DB和L堆棧上部;
(5) 當功能塊FB結(jié)束時,先前塊的現(xiàn)場信息從塊堆棧中彈出,臨時變量彈出L堆棧;
(6) DB和DI寄存器內(nèi)容交換。
當調(diào)用功能塊FB時,STEP 7并不一定要求給FB形參賦予實參,除非參數(shù)是復式數(shù)據(jù)類型的IO形參或參數(shù)類型形參。如果沒有給FB形參賦予實參,則功能塊FB就調(diào)用背景數(shù)據(jù)塊內(nèi)的數(shù)值。該數(shù)值是在功能塊的變量聲明表內(nèi)或背景數(shù)據(jù)塊內(nèi)設(shè)置的形參初始數(shù)值。
3) 調(diào)用功能塊FC
當調(diào)用功能塊FC時會有以下事件發(fā)生:
(1) 功能塊FC實參的指針存到調(diào)用塊的L堆棧;
(2) 調(diào)用塊的地址和返回位置存儲在塊堆棧,調(diào)用塊的局部數(shù)據(jù)壓入L堆棧;
(3) 功能塊存儲臨時變量的L堆棧區(qū)被推入L堆棧上部;
(4) 當被調(diào)用功能塊FC結(jié)束時,先前塊的信息存儲在塊堆棧中,臨時變量彈出L堆棧。
因為功能塊FC不用背景數(shù)據(jù)塊,不能分配初始數(shù)值給功能塊FC的局部數(shù)據(jù),所以必須給功能塊FC提供實參。
STEP 7為功能塊FC提供了一個特殊的返回值輸出參數(shù)(關(guān)鍵字:RET_VAL)。當在文本文件中創(chuàng)建功能塊FC時,你可以在定義功能塊FC命令后輸入數(shù)據(jù)類型(如BOOL或INT)。對文本文件進行編譯時,STEP 7會自動生成RET_VAL輸出參數(shù)。當用STEP 7的程序編輯器(Program Editor)以增量模式創(chuàng)建功能塊FC時,可在FC的變量聲明表中聲明一個輸出參數(shù)RET_VAL,并指明其數(shù)據(jù)類型。
內(nèi)江西門子PLC代理商功能塊編程與調(diào)用舉例
對功能塊編程分兩步進行:*步是定義局部變量(填寫局部變量表);第二步是編寫要執(zhí)行的程序,可以用梯形圖或語句表兩種形式編程,并在編程過程中使用定義了的局部變量(數(shù)據(jù))。
定義局部變量的工作內(nèi)容包括:
(1) 分別定義形參、靜態(tài)變量和臨時變量(FC塊中不包括靜態(tài)變量);
(2) 確定各變量的聲明類型(Decl.)、變量名(Name)和數(shù)據(jù)類型(Data Type),還要為變量設(shè)置初始值(Initial Value)(盡管對有些變量初始值不一定有意義)。如果需要還可為變量注釋(Comment)。在增量編程模式下,STEP 7將自動產(chǎn)生局部變量地址(Address)。
寫功能塊程序時,可以用以下兩種方式使用局部變量:
(1) 使用變量名,此時變量名前加前綴“#",以區(qū)別于在符號表中定義的符號地址。增量方式下,前綴會自動產(chǎn)生。
(2) 直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。
在調(diào)用FB塊時,要說明其背景數(shù)據(jù)塊。背景數(shù)據(jù)塊應(yīng)在調(diào)用前生成,其順序格式與變量聲明表必須保持*。在增量方式下,調(diào)用FB塊時,STEP 7會自動提醒并生成背景數(shù)據(jù)塊。此時也為背景數(shù)據(jù)塊設(shè)置了初始值,該初始值與變量聲明表中的相同。當然也可以為背景數(shù)據(jù)塊設(shè)置當前值(Current Value),即存儲在CPU中的數(shù)值。