:1800弄(電子商務(wù)園)5005.
公司主營:西門子數(shù)控系統(tǒng),V20變頻器S7-200CN.S7-200smart.S7-300.S7-400.S7-1200.6ES5 ET200 人機界面,變頻器,DP總線,MM420 變頻器MM430 變頻器MM
![]() |
參考價 | ¥670 |
訂貨量 | 1 |
更新時間:2018-11-24 15:51:09瀏覽次數(shù):458
聯(lián)系我們時請說明是化工儀器網(wǎng)上看到的信息,謝謝!
變頻器6SL3210-1KE31-1UB1現(xiàn)場服務(wù)
以下產(chǎn)品,子程序調(diào)用指令(CALL)將程序控制權(quán)交給子程序SBR_N。調(diào)用子程序時可以帶參數(shù)也可以不帶參數(shù)。子程序執(zhí)行完成后, 控制權(quán)返回到調(diào)用子程序的指令的下一條指令。
子程序條件返回指令(CRET)根據(jù)它前面的邏輯決定是否終止子 程序。
要添加一個子程序可以在命令菜單中選擇:編輯 > > 子程序。
使ENO=0的錯誤條件:
■ 0008 (超過子程序嵌套)
■ 0006 (間接尋址)
在主程序中,可以嵌套調(diào)用子程序(在子程序中調(diào)用子程序), 多嵌套8層。在中斷程序中,不能嵌套調(diào)用子程序。
在被中斷程序調(diào)用的子程序中不能再出現(xiàn)子程序調(diào)用。不禁止遞歸調(diào)用(子程序調(diào)用自己),但是當使 用帶子程序的遞歸調(diào)用時應(yīng)慎重。
表6--78 子程序指令的有效操作數(shù)
輸入/輸出 | 數(shù)據(jù)類型 | 操作數(shù) |
SBR_N | WORD | 常數(shù) 對于CPU 221、CPU 222、CPU 224: 0到63 對于CPU 224XP和CPU 226 0到127 |
IN | BOOL | V、I、Q、M、SM、S、T、C、L、功率流 VB、IB、QB、MB、SMB、SB、LB、AC、*VD、*LD、*AC1、常數(shù) VW、T、C、IW、QW、MW、SMW、SW、LW、AC、AIW、*VD、 *LD、*AC1、常數(shù) VD、ID、QD、MD、SMD、SD、LD、AC、HC、*VD、*LD、*AC1、 &VB、&IB、&QB、&MB、&T、&C、&SB、&AI、&AQ、&SMB、常數(shù) *VD、*LD、*AC、常數(shù) |
BYTE | ||
WORD、INT | ||
DWORD、 | ||
DINT | ||
STRING | ||
輸入/輸出 | BOOL | V、I、Q、M、SM2、S、T、C、L VB、IB、QB、MB、SMB2、SB、LB、AC、*VD、*LD、*AC1 VW、T、C、IW、QW、MW、SMW2、SW、LW、AC、*VD、*LD、 *AC1 VD、ID、QD、MD、SMD2、SD、LD、AC、*VD、*LD,*AC1 |
BYTE | ||
WORD、INT | ||
DWORD、 | ||
DINT | ||
OUT | BOOL | V、I、Q、M、SM2、S、T、C、L VB、IB、QB、MB、SMB2、SB、LB、AC、*VD、*LD、*AC1 VW、T、C、IW、QW、MW、SMW2、SW、LW、AC、AQW、*VD、 *LD、*AC1 VD、ID、QD、MD、SMD2、SD、LD、AC、*VD、*LD,*AC1 |
BYTE | ||
WORD、INT | ||
DWORD、 | ||
DINT |
1 必須偏移1個或1個以上的單位
2 必須偏移30個或30個以上的單位
當有一個子程序被調(diào)用時,會保存當前的邏輯堆棧,置棧頂值為1,堆棧的其他值為零,把控制 交給被調(diào)用的子程序。當子程序完成之后,恢復邏輯堆棧,把控制權(quán)交還給調(diào)用程序。
因為累加器可在主程序和子程序之間傳遞, 所以在子程序調(diào)用時,累加器的值既不保存也不恢復。
當子程序在同一個周期內(nèi)被多次調(diào)用時,不能使用上升沿、下降沿、定時器和計數(shù)器指令。
子程序可以包含要傳遞的參數(shù)。參數(shù)在子程序的局部變量表中定義。參數(shù)必須有變量名(多23個字 符)、變量類型和數(shù)據(jù)類型。一個子程序多可以傳遞16個參數(shù)。
局部變量表中的變量類型區(qū)定義變量是傳入子程序(IN)、傳入和傳出子程序(IN_OUT)或者傳出子程序
(OUT)。表6--79中描述了一個子程序中的參數(shù)類型。要加入一個參數(shù),把光標放到要加入的變量類型 區(qū)(IN、IN_OUT、OUT)。鼠標右鍵可以一個菜單選擇。選擇選項,然后選擇下一行選項。這樣就出現(xiàn)了另一個所選類型的參數(shù)項。
表6--79 子程序的參數(shù)類型
參數(shù) | 描述 |
IN | 參數(shù)傳入子程序。如果參數(shù)是直接尋址(如:VB10),位置的值被傳遞到子程序。如果參數(shù) 是間接尋址(如:*AC1),指針位置的值被傳入子程序;如果參數(shù)是常數(shù)(如:16#1234), 或者一個地址(如:&VB100),常數(shù)或地址的值被傳入子程序。 |
IN_OUT | 參數(shù)位置的值被傳到子程序,從子程序的結(jié)果值被返回到同樣地址。常數(shù)(如:16#1234) 和地址(如:&VB100)不允許作為輸入/輸出參數(shù)。 |
OUT | 從子程序來的結(jié)果值被返回到參數(shù)位置。常數(shù)(如:16#1234)和地址(如:&VB100)不允許 作為輸出參數(shù)。由于輸出參數(shù)并不保留子程序后一次執(zhí)行時分配給它的數(shù)值,所以必須在每 次調(diào)用子程序時將數(shù)值分配給輸出參數(shù)。注意:在電源上電時,SET和RESET指令只影響布爾 量操作數(shù)的值。 |
TEMP | 任何不用于傳遞數(shù)據(jù)的局部存儲器都可以在子程序中作為臨時存儲器使用。 |
如圖6--37中所示,局部變量表中的數(shù)據(jù)類型區(qū)定義了參數(shù)的大小和格式。參數(shù)類型如下所示:
q BOOL:此數(shù)據(jù)類型用于單個位輸入和輸出。下例中的IN3是布爾輸入。
q BYTE、WORD、DWORD:這些數(shù)據(jù)類型分別識別1、2或4個字節(jié)的無符號輸入或輸出參數(shù)。
q INT、DINT:這些數(shù)據(jù)類型分別識別
2或4個字節(jié)的有符號輸入或輸出參數(shù)。
圖6--37 局部變量表q REAL:此數(shù)據(jù)類型識別單精度型(4字節(jié))IEEE浮點數(shù)值。q STRING:此數(shù)據(jù)類型用作一個指向字符串的四字節(jié)指針。
q 功率流:布爾型功率流只允許位(布爾型)輸入。該變量聲明告訴STEP 7- Micro/WIN 32此輸入參數(shù)是位邏輯指令組合的功率流結(jié)果。在局部變量表中布爾功率流輸入必須出現(xiàn)在其他類型的 前面。只有輸入?yún)?shù)可以這樣使用。下例中的使能輸入(EN)和IN1輸入使用布爾邏輯。
實例:子程序調(diào)用 | |
以下有兩個STL程序。個程序只能在STL編輯器中以STL的形式顯示,因為用作功率流輸入的BOOL參數(shù)沒 有存儲在L存儲區(qū)中。 第二個程序能夠在LAD和FBD編輯器中顯示,因為使用了L存儲器來存儲用作功率流輸入的BOOL輸入?yún)?shù)。 | |
只能顯示STL: Network 1 LD I0.0 CALL SBR_0,I0.1,VB10,I1.0,&VB100,*AC1, VD200 可以在LAD和FBD中正確顯示: Network 1 LD I0.0 = L60.0 LD I0.1 = L63.7 LD L60.0 CALL SBR_0,L63.7,VB10,I1.0,&VB100,*AC1, VD200 |
地址參數(shù)(如IN4處的&VB100)以一個雙字(無符號)的值傳送到子程序。在帶常數(shù)調(diào)用程序時必須指明 常數(shù)類型。例如,為了將一個數(shù)值為12,345的無符號雙字常量作為參數(shù)傳遞,常量參數(shù)必須為
DW#12345。如果參數(shù)遺漏常量描述符,則該常量被視為一種不同的類型。
輸入或輸出參數(shù)上沒有自動數(shù)據(jù)類型轉(zhuǎn)換功能。例如,如果局部變量表明一個參數(shù)具有實型,而在調(diào) 用時使用一個雙字,子程序中的值就是雙字。
當給子程序傳遞值時,它們子程序的局部存儲器中。局部變量表的左列是每個被傳遞參數(shù)的局 部存儲器地址。當子程序調(diào)用時,輸入?yún)?shù)值被拷貝到子程序的局部存儲器。當子程序完成時,從局 部存儲器區(qū)拷貝輸出參數(shù)值到的輸出參數(shù)地址。
數(shù)據(jù)單元的大小和類型用參數(shù)的代碼表示。在子程序中局部存儲器的參數(shù)值的分配如下所示:
q 按照子程序指令的調(diào)用順序,參數(shù)值分別給局部存儲器,起始地址是L0。
q 1到8連續(xù)位參數(shù)值分配一個字節(jié),從Lx.0到Lx.7。
q 字節(jié)、字和雙字值按照所需字節(jié)分配在局部存儲器中(LBx、LWx或LDx)。
在帶參數(shù)調(diào)用子程序指令中,參數(shù)必須按照一定順序排列,輸入?yún)?shù)在前面,其次是輸入/輸出參 數(shù),然后是輸出參數(shù)。
如果用語句表編程,CALL指令的格式是:
CALL子程序號,參數(shù)1,參數(shù)2,…,參數(shù)
M A I N | Network 1 //在首次掃描,調(diào)用初始化子程序0。LD SM0.1 CALL SBR_0 | |
S B R 0 | Network 1 //你可以使用條件返回指令在子程序 //結(jié)束之前返回。 LD M14.3 CRET Network 2 //如果M14.3接通,本段程序會被跳過。LD SM0.0 MOVB 10,VB0 |
實例:帶字符串的子程序調(diào)用 | ||
該實例依據(jù)給定的輸入,不同的字符串文字到單獨的地址。字符串的單獨地址被保存。然后通過使用間接 尋址,將字符串地址傳遞給子程序。子程序輸入?yún)?shù)的數(shù)據(jù)類型是字符串。然后子程序字符串到不同 位置。 字符串文字也可以被傳遞給子程序。子程序內(nèi)的字符串引用一直是相同的。 | ||
M A I N | Network 1 // LD I0.0 SSCPY “string1",VB100 AENO MOVD &VB100,VD0 Network2 // LD I0.1 SSCPY “string2",VB200 AENO MOVD &VB200,VD0 Network3 // LD I0.2 CALL SBR_0,*VD0 | |
S B R 0 | Network 1 // LD SM0.0 SSCPY *LD0,VB300 |