回收西門子模塊6ES75411AD000AB0 回收西門子模塊6ES75411AD000AB0
寫功能塊程序時,可以用以下兩種方式使用局部變量:
(1) 使用變量名,此時變量名前加前綴“#”,以區(qū)別于在符號表中定義的符號地址。增量方式下,前綴會自動產(chǎn)生。
(2) 直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。
在調(diào)用FB塊時,要說明其背景數(shù)據(jù)塊。背景數(shù)據(jù)塊應在調(diào)用前生成,其順序格式與變量聲明表必須保持*。在增量方式下,調(diào)用FB塊時,STEP 7會自動提醒并生成背景數(shù)據(jù)塊。此時也為背景數(shù)據(jù)塊設(shè)置了初始值,該初始值與變量聲明表中的相同。當然也可以為背景數(shù)據(jù)塊設(shè)置當前值(Current Value),即存儲在CPU中的數(shù)值。
1.二分頻器
假設(shè)功能塊FC10是二分頻器產(chǎn)生程序,功能是對不同的輸入位進行二分頻處理。以下給出了FC10的變量聲明表和語句表程序。在程序中使用了跳變沿檢測指令。
1) FC10的變量聲明表(見表5.3)
Address Decl. Symbol Data Type Initial Value Comment
0.0 In INP BOOL FALSE 脈沖輸入信號
1.0 Out OUTP BOOL FALSE 脈沖輸出信號
2.0 In_Out ETF BOOL FALSE 跳變沿標志
2) 語句表程序
Network 1
A #INP 對脈沖輸入信號產(chǎn)生RLO
FP #ETF 對前面的RLO進行跳變沿檢測,若有正跳沿則RLO=1,否則RLO=0
NOT 取反RLO
BEC 若RLO=1(沒有正跳沿),結(jié)束塊;若RLO=0(有正跳沿),繼續(xù)執(zhí)行下一條指令
AN #OUTP
= #OUTP 輸出信號反轉(zhuǎn)
BEU 無條件結(jié)束塊
在功能塊FCl0中定義了三個形參,程序中以引用變量名方式使用了形參變量。也可以為FC10在符號表中定義一個符號名,如“BINARY”,并選用以下兩種方式之一調(diào)用功能塊FC10。調(diào)用時為形參分別賦予實參I0.0、Q4.0和M10.0,以對輸入位I0.0進行二分頻以產(chǎn)生輸出脈沖Q4.0。
調(diào)用方式1 調(diào)用方式2
CALL FC10 CALL BINARY
INP:= I0.0 INP:= I0.0
OUTP:= Q4.0 OUTP:= Q4.0
ETF:= M10.0 ETF:= M10.0
2.讀模擬輸入量程序
一些S7-300的應用系統(tǒng)中,使用8通道模擬量模塊采集信號,當模塊數(shù)量較多時,讀模擬輸入量就很繁瑣。下面給出一個通用程序FC100,利用它可以方便地把模擬量讀回并順序存入數(shù)據(jù)塊,因為模入模塊的起始地址、通道數(shù)、存儲數(shù)據(jù)塊號及數(shù)據(jù)在數(shù)據(jù)塊中的存儲起始位置均是可變的,所以可在調(diào)用FC100時靈活確定。