西門子PLC模塊6ES7531-7NF00-0AB0
說(shuō)明
上面提供了兩個(gè) STL 示例,。STL 程序員可使用組只能顯示在 STL 編輯器中的簡(jiǎn)化
STL 指令。這是因?yàn)橛米?LAD/FBD 能流輸入的 BOOL 參數(shù)不保存到 L 存儲(chǔ)器,。
第二組編譯器生成的 STL 指令可顯示在 LAD、FBD 和 STL
編輯器中,,因?yàn)槌绦蚓幾g器使用 L 存儲(chǔ)器來(lái)保存在 LAD/FBD 中為能流輸入的 BOOL
輸入?yún)?shù)的狀態(tài),。
地址參數(shù)(例如,IN4 (&VB100))傳入子例程作為
DWORD(無(wú)符號(hào)雙字)值,。對(duì)于調(diào)用例程中常數(shù)值前面有常數(shù)描述符的參數(shù),,必須為其常數(shù)參數(shù)類型。例如:要傳送值為 12,345
的無(wú)符號(hào)雙字常數(shù)作為參數(shù),,必須將常數(shù)參數(shù)為
DW#12345,。如果參數(shù)中遺漏了對(duì)于常數(shù)的說(shuō)明,則可將該常數(shù)認(rèn)定為不同類型,。
不對(duì)輸入或輸出參數(shù)自動(dòng)執(zhí)行數(shù)據(jù)類型轉(zhuǎn)換,。例如,如果變量表參數(shù)的數(shù)據(jù)類型為 REAL,,但在調(diào)用例程中,,為該參數(shù)雙字 (DWORD)
數(shù)據(jù)類型,則子例程中的參數(shù)值將是雙字?jǐn)?shù)據(jù)類型,。
值傳遞到子例程后,,存儲(chǔ)在子例程的局部存儲(chǔ)器中。變量表的左列顯示各傳遞參數(shù)的局部存儲(chǔ)器地址,。調(diào)用子例程時(shí),,輸入?yún)?shù)值將到子例程的局部存儲(chǔ)器中。子例程執(zhí)行完成時(shí),,從子例程的局部存儲(chǔ)器將輸出參數(shù)值到輸出參數(shù)地址,。
數(shù)據(jù)元素大小和類型用參數(shù)的編碼表示。參數(shù)值到子例程中的局部存儲(chǔ)器的分配如下所述
:
● 參數(shù)值按照帶參數(shù)的調(diào)用子例程指令的順序分配給局部存儲(chǔ)器,,起始地址是 L
0.0,。
● 一至八個(gè)連續(xù)位參數(shù)值分配給從 Lx.0 到 Lx.7 的單個(gè)字節(jié)。
● 字節(jié),、字和雙字值分配給以字節(jié)為邊界的局部存儲(chǔ)器(LBx,、LWx 或 LDx)。
在帶參數(shù)的子例程調(diào)用指令中,,必須按照一定的順序排列參數(shù),,輸入?yún)?shù)在前面,其次是輸入/輸出參數(shù),,然后是輸出參數(shù),。
如果使用 STL 編程,,則 CALL 指令的格式是:
CALL 子例程編號(hào), 參數(shù) 1, 參數(shù) 2, ... , 參數(shù) 16
示例:子例程和子例程返回指令
LAD | STL |
MAIN |
| 掃描時(shí),調(diào)用子例程 0 進(jìn)行初始化,。 | Network 1 LD SM0.1 CALL SBR_0 |
SBR0 |
| 可以在后一個(gè)程序段前使用有條件返回指令來(lái)退出子例程 ,。 | Network 1 LD M14.3 CRET |
SBR0 |
| 如果 M14.3 接通,將跳過(guò)此網(wǎng)絡(luò),。 | Network 2 LD SM0.0 MOVB 10, VB0 |
示例:使用字符串參數(shù)的子例程調(diào)用
此示例根據(jù)給定輸入的狀態(tài)將不同字符串文字到地址,。此字符串的地址被保存。然后,,通過(guò)間接地址將字符串地址傳入子例程,。子例程輸入?yún)?shù)的數(shù)據(jù)類型是字符串
。然后,,子例程將字符串移到其它位置,。
字符串文字也可傳入子例程。子例程內(nèi)的字符串引用始終相同
西門子PLC模塊6ES7531-7NF00-0AB0
使用Starter / SCOUT調(diào)試
如圖9所示:在SteP7項(xiàng)目中生成了兩個(gè)驅(qū)動(dòng)項(xiàng)目“SINAMICS_S120_CU320"和"SINAMICSxS120xCBE20v1",分別是驅(qū)動(dòng)在PROFIBUS DP和PROFINET IO網(wǎng)絡(luò)上生成的,。本例中PC與CBE20之間通過(guò)網(wǎng)線連接,,用如圖9的方式既可直接打開(kāi)Starter 或SCOUT 及驅(qū)動(dòng)項(xiàng)目。

圖 9.
可通過(guò)使用"configuration"對(duì)驅(qū)動(dòng)裝置進(jìn)行手動(dòng)配置,。配置結(jié)束后編譯保存,。
本例中:在Scout中選擇同樣的報(bào)文結(jié)構(gòu),并與SteP7 HW Config中定義的報(bào)文結(jié)構(gòu)保持*,,并單擊“Transfer to Hw Config"按鈕

圖 10.
注意:S120支持兩個(gè)周期性通訊接口IF1和IF2,,分別通過(guò)CU參數(shù)P8839.0和P8839.1來(lái)定義IF1和IF2的通訊方式,在默認(rèn)情況下P8839.0= P8839.1=99,,就激活了這兩個(gè)接口的自動(dòng)模式,,如下表所示:

在這種方式下無(wú)法實(shí)現(xiàn)PROFIBUS DP和PROFINET IO的并行通訊,因此為了實(shí)現(xiàn)其并行通訊,,需要按如下方式設(shè)置:
? P8839[0]=1和P8839[1]=2:PROFIBUS DP 用于同步,,PROFINET IO用于周期性通訊
? P8839[0]=2和P8839[1]=1:PROFINET IO用于同步,PROFIBUS DP用于周期性通訊(本例中的設(shè)置)

兩個(gè)周期性通訊接口IF1和IF2的特性如上表所示:
注意:IF2不支持TM41,TM15,TM17,TM/TB,CU與CPU之間的通訊,。
五,、通過(guò)PROFIBUS DP或PROFINET IO總線來(lái)實(shí)現(xiàn)過(guò)程數(shù)據(jù)的傳輸
S7-300/400PLC通過(guò)PROFINET IO或PROFIBUS DP周期性通訊方式將控制字1(CTW1)和主設(shè)定值(NSETP_B)發(fā)送至驅(qū)動(dòng)器。
(1) 控制字中Bit0做電機(jī)的起,、??刂啤?br/>(2) 主設(shè)定值為速度設(shè)定值,,參數(shù)P2000中的值為頻率設(shè)定值和實(shí)際值的參考頻率,,100% 對(duì)應(yīng)4000H(十六進(jìn)制),發(fā)送的高頻率(大值)為7FFFH(200%),。
(3) 當(dāng)組態(tài)的報(bào)文結(jié)構(gòu) PZD=2或自由報(bào)文999時(shí),,在S7-300/400 中可用“MOVE" 指令進(jìn)行數(shù)據(jù)傳送,;當(dāng)組態(tài)的報(bào)文結(jié)構(gòu)PZD >2,在S7-300/400 中需調(diào)用SFC14和SFC15系統(tǒng)功能塊,。
? SFC14(“DPRD_DAT")用于讀驅(qū)動(dòng)裝置的過(guò)程數(shù)據(jù),。
? SFC15(“DPWR_DAT")用于將過(guò)程數(shù)據(jù)寫入驅(qū)動(dòng)裝置。
例子(PROFINET IO):SERVO_02 控制字,、主設(shè)定值的發(fā)送及狀態(tài)字,、實(shí)際頻率的讀取程序見(jiàn)圖11。

圖11
通過(guò)讀取Servo_02的參數(shù)r2050和P2051可以判斷數(shù)據(jù)是否傳輸成功,。

圖12
例子(PROFIBUS DP):SERVO_02 "控制字、主設(shè)定值的發(fā)送及狀態(tài)字,、實(shí)際頻率的讀取程序見(jiàn)圖13,。

圖13
通過(guò)讀取Servo_02的參數(shù)r8850和P8051可以判斷數(shù)據(jù)是否傳輸成功。

圖14
注意通過(guò)通訊接口IF1和IF2可以同時(shí)實(shí)現(xiàn)CPU與Servo_02的數(shù)據(jù)傳輸
六,、驅(qū)動(dòng)器參數(shù)的讀取及寫入
1.擴(kuò)展PROFIDRIVE功能(DPV1)
非周期性數(shù)據(jù)傳送模式允許:
? 交換大量的用戶數(shù)據(jù)
? 用DPV1的功能 READ 和 WRITE可以實(shí)現(xiàn)非周期性數(shù)據(jù)交換,。傳輸數(shù)據(jù)塊的內(nèi)容應(yīng)遵照 PROFIdrive參數(shù)通道(DPV1)數(shù)據(jù)集DS47(非周期參數(shù)通道結(jié)構(gòu))。
2. 參數(shù)請(qǐng)求及參數(shù)應(yīng)答的結(jié)構(gòu)
參數(shù)請(qǐng)求包括三部分:請(qǐng)求標(biāo)題,、參數(shù)地址及參數(shù)值,。

表1.參數(shù)請(qǐng)求格式

表2.參數(shù)應(yīng)答格式

表3.參數(shù)請(qǐng)求及應(yīng)答描述
