西門子S7-1200PLC模塊黑龍江代理商

可以不經(jīng)過累加器1,直接將操作數(shù)裝入或傳送出地址寄存器AR1和AR2(見表4-4),或從AR1和AR2將數(shù)據(jù)傳送出來:也可以將兩個地址寄存器的內容直接交換,指令TAR1<D>和TAR2 <D>的目的區(qū)為雙字MD、LD、DBD和DID。下面是應用實例:
LAR1 DBD 20 //將數(shù)據(jù)雙字DBD20中的指針裝入AR1
LAR1 P#M 10.2 //將帶存儲區(qū)標識符的32位指針常數(shù)裝入AR1
LAR2 P#24.0 //將不帶存儲區(qū)標識符的32位指針常數(shù)裝入AR2
TAR2 MD 24 //AR2的內容傳送到存儲器雙字MD24
+ AR1指令將地址寄存器AR1的內容加上作為地址偏移量的累加器1的低字的內容,或加上指令中的16位常數(shù)(-32768~+32767),結果在AR1中。+AR2指令具有類似的功能。
16位有符號整數(shù)首先被擴充為24位,其符號位不變,然后與AR1中的低24位有效數(shù)字相加。地址寄存器中的存儲區(qū)域標識符rrr(第24~ 26位,見圖4-25)保持不變。
L P#20.0 //指針常數(shù)P#20.0裝入累加器1的低字
+AR1 //AR1與累加器1低字的內容相加,運算結果送AR1
+AR2 P#100.0 //AR2的內容加上地址偏移量P#100.0,運算結果送AR2
表4-4 與AR1和AR2有關的指令
指令 | 描 述 |
LAR1 AR2 | 將AR2的內容裝入AR1 |
LAR1<D> | 將32位雙字指針<D>裝入AR1 |
LAR2<D> | 將32位雙字指針<D>裝入AR2 |
LAR1 | 將累加器1的內容(32位指針常數(shù))裝入AR1 |
LAR2 | 將累加器1的內容(32位指針常數(shù))裝入AR2 |
TAR1 AR2 | 將AR1的內容傳送到AR2 |
TAR1<D> | 將AR1的內容傳送到32位指針 |
TAR2<D> | 將AR2的內容傳送到32位指針 |
TAR1 | 將AR1的內容傳送到累加器1,累加器1中的內容保存到累加器2 |
TAR2 | 將AR2的內容傳送到累加器1,累加器1中的內容保存到累加器2 |
+AR1 | AR1的內容加上地址偏移量 |
+AR2 | AR2的內容加上地址偏移量 |
CAR | 交換AR1和AR2中的數(shù)據(jù) |
區(qū)域內間接尋址的地址指針格式與存儲器間接尋址的相同,包括被尋址數(shù)值所在的存儲單元的字節(jié)地址和位地址,存儲區(qū)的類型在指令中給出。這種指針格式適用于在某一存儲區(qū)內尋址。第24~26位(rrr)和第31位應為0。下面是區(qū)域內間接尋址的例子(見隨書光盤中的項目“寄存器間接尋址”):
L P#5.0 //將間接尋址的指針裝入累加器1
LAR1 //將累加器1的內容送到地址寄存器1,見表4-4
A M[AR1,P#2.3] //AR1中的P#5.0加偏移量P#2.3,對M7.3進行操作
= Q[AR1,P#0.2] //邏輯運算結果送Q5.2
L MW[ AR1,P#19.0] //將MW24裝入累加器1
T MW 8
S7-300/400有兩個地址寄存器AR1和AR2,可以用它們對各存儲區(qū)的地址作寄存器間接尋址。地址寄存器的地址值加上地址偏移量,形成地址指針,后者指向數(shù)據(jù)所在的存儲單元。
圖4-25是地址寄存器間接尋址的雙字地址指針的格式,其中第0~2位(xxx)為被尋址地址中位的編號(0~7),第3~18位為被尋址地址的字節(jié)的編號。第24~ 26位(rrr)為被尋址地址的區(qū)域標識號(見表4-3),第31位x=0為區(qū)域內的間接尋址,為l則為區(qū)域間的間接尋址。如果要用寄存器指針訪問一個字節(jié)、字或雙字,必須保證指針的位地址編號為0。
圖4-25 寄存器間接尋址的雙字指針格式
表4-3 區(qū)域間寄存器間接尋址的區(qū)域標識符
在塊調用中,可以用復雜數(shù)據(jù)類型作為塊的實參,用它將一組數(shù)據(jù)傳送到被調用塊,或者用復雜數(shù)據(jù)類型將一組數(shù)據(jù)返回給調用它的塊。通過這種方式,可以高效而簡潔地在主調塊和被調塊之間傳遞數(shù)據(jù)。
下面的例子用數(shù)組作為功能的輸入?yún)?shù)。將數(shù)組作為參數(shù)傳遞時,作為形參和實參的兩個數(shù)組應有相同的結構,例如都是2×3格式的數(shù)組,數(shù)組元素的數(shù)據(jù)類型應相同。
用STEP 7的新建項目向導創(chuàng)建一個名為“字邏輯與”的項目。在SIMATIC管理器中生成功能FC1,在FC1的局部變量表中生成一個輸入?yún)?shù)InArray,它是有3個WORD元素的數(shù)組(見圖4-22),再生成一個數(shù)據(jù)類型為WORD的輸出參數(shù)Result。圖中的語句表程序將數(shù)組InArray的3個字元素作“與”運算。
在SIMATIC管理器中生成數(shù)據(jù)塊DB1,在DB1中生成有3個WORD元素的數(shù)組Aray。在OB1中調用FC1(見圖4-23),用數(shù)組Aray作FC1的輸入?yún)?shù)InArray的實參。
圖4-23 在OB1中調用FC1
在SIMATIC管理器中生成變量表,在變量表中輸入數(shù)組DB1. Aray的3個元素的地址(見圖4-24),以及用來保存FC1的運算結果的MW6。將用戶程序下載到仿真PLC,將仿真PLC切換到RUN -P模式。打開變量表VAT -1,點擊工具欄上的
按鈕,啟動監(jiān)視功能。在“修改數(shù)值”列輸入數(shù)組元素的值,點擊工具欄上的激活修改值按鈕
,將修改值送入CPU??梢钥吹街挥?/span>DB1中的3個字的同一位均為1時,“與”運算后MW6的對應才為1,程序執(zhí)行后得到了正確的結果。
將OB1左邊窗口中“FB塊”文件夾內的“FB1”圖標拖放到程序段2的水平“導線”上(見圖4-19)。FB1的符號名為“發(fā)動機控制”。方框內的Start等是FB1的變量聲明表中定義的輸入、輸出參數(shù)(形參)。方框外的符號地址“起動汽油機”等是方框內的形參對應的實參。實參“共享”。PE_Speed是符號名為“共享”的數(shù)據(jù)塊DB3中的變量PE _Speed(汽油機的實際轉速)。在調用塊時,CPU將實參分配給形參的值存儲在背景數(shù)據(jù)塊中。如果調用時沒有給形參實參,功能塊使用背景數(shù)據(jù)塊中形參的數(shù)值。該數(shù)值可能是在功能塊的變量聲明表中設置的形參(例如靜態(tài)變量Preset_Speed)的初始值,也可能是上一次調用時儲存在背景數(shù)據(jù)塊中的數(shù)值。
在FB1方框的上面,可以輸入已經(jīng)生成的FB1的背景數(shù)據(jù)塊DB1(見圖4-15),也可以輸入一個尚不存在的背景數(shù)據(jù)塊,例如DB2。輸入后按回車鍵,出現(xiàn)提示信息“實例數(shù)據(jù)塊DB2不存在,是否要生成它?”,點擊“是”按鈕確認??梢栽?/span>SIMATIC管理器中看到新生成的背景數(shù)據(jù)塊DB2。
兩次調用FB1時,使用不同的實參和不同的背景數(shù)據(jù)塊,使FB1分別用于控制汽油機和柴油機。兩個背景數(shù)據(jù)塊中的變量相同,區(qū)別僅在于變量的值(即實參的值)不同。
下面是在語句表模式調用FB1和FC1的程序,“:=”的前面是形參,“:=”的后面是實參。該程序不能用STEP 7直接轉換為梯形圖。
程序段1:汽油機風扇控制
CALL”風扇控制”
Engine_On :=“汽油機運行”
Timer_Function :=“汽油機風扇延時”
Fan_On :=“汽油機風扇運行”
程序段2:汽油機控制
CALL “發(fā)動機控制”,“汽油機數(shù)據(jù)”
Start :=“起動汽油機”
Stop :=“關閉汽油機”
Actual_Speed :=“共享”.PE_Speed
Engine_On :=“汽油機運行”
Overspeed :=“汽油機超速”
OB1通過兩次調用FB1和FC1,實現(xiàn)對汽油機和柴油機的控制。圖4-19給出了控制汽油機的程序,控制柴油機的程序與之相似。
塊調用分為條件調用和無條件調用。用梯形圖調用塊時,塊的EN(Enable,使能)輸入端有能流流入時執(zhí)行塊中的程序,反之則不執(zhí)行。條件調用時使能輸入端EN受到觸點電路的控制。塊被正確執(zhí)行時ENO(Enable Output,使能輸出端)為1,反之為0。
首先在符號表中定義塊的符號、兩次調用FC1、FB1的實參的符號(見圖4-18)。
雙擊打開SIMATIC管理器中的OB1,在梯形圖顯示方式,將左邊窗口中的“FC塊”文件夾中的“FC1”拖放到程序段1的水平“導線”上(見圖4-19),無條件調用符號名為“風扇控制”的FC1。
方框的左邊是塊的輸入?yún)?shù)和輸入/輸出參數(shù),右邊是輸出參數(shù)。方框內的Engine_On等是FC1的變量聲明表中定義的IN和OUT參數(shù),稱為“形式參數(shù)”(Formal Parameter),簡稱為“形參”。方框外的符號地址“汽油機運行”等是形參對應的“實際參數(shù)”( Actual Parameter),簡稱為“實參”。形參是局部變量在邏輯塊中的名稱,實參是調用塊時的具體的輸入、輸出參數(shù)。調用功能或功能塊時應將實參賦值給形參,并保證實參與形參的數(shù)據(jù)類型*。
輸入?yún)?shù)(IN)的實參可以是地址、符號地址或常數(shù),輸出參數(shù)(OUT)或輸入_輸出參數(shù)(IN_OUT)的實參必須為地址或符號地址。將不同的實參賦值給形參,就可以實現(xiàn)對類似的但是不*相同的被控對象(例如汽油機和柴油機)的控制。
西門子S7-1200PLC模塊黑龍江代理商