
西門子S7-1200PLC模塊陜西代理商
STEP 7的用于數(shù)據(jù)區(qū)傳送的系統(tǒng)功能
1)使用SFC 20”BLKMOV”(塊移動),可將源存儲區(qū)的內(nèi)容復(fù)制到目標(biāo)存儲區(qū)。源區(qū)域與目標(biāo)區(qū)域不能交叉。
輸入程序時,將程序編輯器左邊窗口的文件夾“\庫\Standard Library\System Function Blocks”中的SFC 20“拖放”到右邊窗口的程序段中,將會自動生成調(diào)用SFC 20的CALL指令,“:=”號之前是SFC的形式參數(shù)(形參),在“:=”號的后面輸入各形參的實(shí)際參數(shù)(實(shí)參),“//”號的右邊是對該行指令的注釋。
CALL “BLKMOW” //調(diào)用SFC 20
SRCBLK :=P#M 54.0 BYTE 20 //源存儲器區(qū),MB54開始的20個字節(jié)
RET_VAL :=MW10 //執(zhí)行SFC 20出錯時的錯誤代碼
DSTBLK :=P#DB2.DBX0.0 BYTE 20 //目標(biāo)存儲器區(qū),DB2.DBB0開始的20個字節(jié)
2)使用SFC 21”FILL”,可以將源數(shù)據(jù)區(qū)的數(shù)據(jù)填充到目標(biāo)數(shù)據(jù)區(qū)。假設(shè)MB20和MB21的值為7和5,執(zhí)行下面的例程后DB 2的DBB30~DBB34的值分別為7、5、7、5、7。源區(qū)域與目標(biāo)區(qū)域不能交叉。
CALL“FILL” //調(diào)用SFC 21
BVAL :=P#M 20.0 BYTE 2 //源存儲器區(qū)
RET_VAL :=MW12 //執(zhí)行SFC 21出錯時的錯誤代碼
BLK :=P#DB2,DBX30.0 BYTE 5 //目標(biāo)存儲器區(qū)
3) SFC 8l“UBLKMOV”(不間斷的塊移動)與SFC 20的功能和使用方法基本上相同,SFC 81的復(fù)制操作不會被其他操作系統(tǒng)的任務(wù)打斷。
梯形圖(LAD)和功能塊圖(FBD)用較粗較淺的連續(xù)線來表示狀態(tài)滿足,即有“能流”流過,見圖3-38中較粗較淺的連續(xù)線;用藍(lán)色點(diǎn)狀細(xì)線表示狀態(tài)不滿足,沒有能流流過;用黑色連續(xù)線表示狀態(tài)未知。
進(jìn)入程序狀態(tài)之前,梯形圖中的線和元件因?yàn)闋顟B(tài)未知,全部為黑色=啟動程序狀態(tài)監(jiān)控后,從梯形圖左側(cè)垂直的“電源”線開始的連線均為綠色,表示有能流從“電源”線流出。有能流流過的方框指令、線圈、連接線和處于閉合狀態(tài)的觸點(diǎn)均用綠色表示。
如果有能流流入指令框的使能輸入端EN,該指令被執(zhí)行:如果指令框的使能輸出端ENO接有后續(xù)元件,有能流從它的ENO端流到與它相連的元件,該指令框?yàn)榫G色。如果ENO端未接后續(xù)元件,則該指令框和ENO輸出線均為黑色。
如果CALL指令成功地調(diào)用了邏輯塊,CALL線圈為綠色。如果跳轉(zhuǎn)條件滿足,跳轉(zhuǎn)被執(zhí)行,跳轉(zhuǎn)線圈為綠色。被跳過的程序段的指令沒有被執(zhí)行,這些程序段的梯形圖為黑色。
梯形圖中加粗的字體顯示的參數(shù)值是當(dāng)前值,細(xì)體字顯示的參數(shù)值來自以前的循環(huán),即該程序區(qū)在當(dāng)前掃描循環(huán)中未被處理。
用鼠標(biāo)右鍵點(diǎn)擊圖3-38中顯示的數(shù)據(jù),執(zhí)行快捷菜單命令“表達(dá)式”,可以將默認(rèn)的十六進(jìn)制顯示方式改為十進(jìn)制。BCD_I指令采用默認(rèn)的“自動”顯示方式,輸入變量IN和輸出變量OUT的顯示格式分別為十六進(jìn)制和十進(jìn)制。
首先選中圖3-38中的MW10,然后用右鍵點(diǎn)擊它,執(zhí)行快捷菜單命令“修改”,可以用出現(xiàn)的對話框修改MW10的值。選中圖中的M8.1,然后用右鍵點(diǎn)擊它,可以用快捷菜單中的命令“修改為0”和“修改為1”修改它的值。也可以用上述的方法修改語句表程序狀態(tài)中的變量值。
生成一個項(xiàng)目,打開OB1,執(zhí)行菜單命令“視圖”→“STL”,切換到語句表方式,輸入圖3-37左邊的語句表程序。其中的指令“+I”將累加器1和累加器2中的16位整數(shù)相加,結(jié)果在累加器1中。打開PLCSIM,生成MW2、MW4和MW6的視圖對象。將OB1下載到仿真PLC,將仿真PLC切換到RUN -P模式。分別將300和500輸入MW2和MW4的視圖對象。
打開OB1,單擊工具欄上的
按鈕,啟動程序狀態(tài)監(jiān)控功能,圖3-37程序區(qū)右邊窗口中是指令執(zhí)行的監(jiān)控信息,稱為狀態(tài)域。圖中的RLO和STA是狀態(tài)字中的兩位。STANDARD是累加器1,默認(rèn)的顯示方式為十六進(jìn)制數(shù)。剛開始啟動監(jiān)控時沒有AC-CU 2(累加器2)列。
用右鍵單擊STANDARD所在的表頭(見圖3-37),執(zhí)行快捷菜單中的“表達(dá)式”→“十進(jìn)制”命令,改用十進(jìn)制數(shù)顯示累加器1的值。在快捷菜單中,累加器1被稱為“默認(rèn)狀態(tài)”。
執(zhí)行快捷菜單中的“顯示”→“累加器2”命令,添加累加器2 (ACCU 2)列。
用右鍵單擊STA列,執(zhí)行快捷菜單中的“隱藏”命令,將使該列消失。
從圖3-37可以看出,執(zhí)行*條L指令后,MW2中的300被裝入累加器1,執(zhí)行第二條指令后,累加器1中的300被傳送到累加器2,MW4中的500被裝入累加器1。執(zhí)行“+I”指令后,累加器1和累加器2的低位字中的數(shù)據(jù)相加,運(yùn)算結(jié)果800在累加器1中,累加器2被清零。執(zhí)行T指令后,累加器1中的800被傳送到MW6,累加器1中的數(shù)據(jù)保持不變。
在程序編輯器中執(zhí)行菜單命令“選項(xiàng)”→“自定義”,打開“自定義”對話框的STL選項(xiàng)卡,可以設(shè)置默認(rèn)的監(jiān)視內(nèi)容。
裝入( Load,L)指令和傳送(Transfer,T)指令用于在存儲區(qū)之間或存儲區(qū)與過程輸入、過程輸出之間交換數(shù)據(jù)。裝入指令將源操作數(shù)(字節(jié)、字或雙字)裝入累加器1,在此之前,累加器1原有的數(shù)據(jù)被自動移入累加器2。數(shù)據(jù)長度小于32位時,被裝入的數(shù)據(jù)放在累加器的低端,其余的高位字節(jié)填0。
傳送指令將累加器1的內(nèi)容寫入目的存儲區(qū),累加器1的內(nèi)容不變。被復(fù)制的數(shù)據(jù)字節(jié)數(shù)取決于目的地址的數(shù)據(jù)長度。數(shù)據(jù)從累加器1傳送到外設(shè)輸出區(qū)PQ的同時,也被傳送到相應(yīng)的過程映像輸出區(qū)(Q區(qū))。表3-6是部分裝入指令與傳送指令。
表3-6 裝入指令與傳送指令
指 令 | 描 述 |
L<地址> | 裝入指令,將數(shù)據(jù)裝入累加器1,累加器1原有的數(shù)據(jù)首先裝入累加器2 |
T<地址> | 傳送指令,將累加器1的內(nèi)容寫入日的存儲區(qū),累加器1的內(nèi)容不變 |
L STW | 將狀態(tài)字裝入累加器1 |
T STW | 將累加器1中的內(nèi)容傳送到狀態(tài)字 |
L、T指令的執(zhí)行與狀態(tài)位無關(guān),也不會影響到狀態(tài)位。S7 - 300不能用L STW指令裝入狀態(tài)字中的FC、STA和OR位。
西門子S7-1200PLC模塊陜西代理商