6SL3256-0VE00-6AA0西門子V20擴(kuò)展模塊
SINAMICS V20 I/O 擴(kuò)展模塊 I/O 接口:2 DI,2 Rela
|
上海麗丞工業(yè)自動(dòng)化設(shè)備有限公司
全新原裝,質(zhì)量保證,保修一年
專業(yè)銷售及維修西門子各類工控自動(dòng)化配件;
:S7-200CN、S7-200SMART、S7-300、S7-400、 S7-1200、S7-1500、ET200、LOGO邏西門子可編程控制器輯控制模塊
西門子HMI人機(jī)界面:觸摸屏
西門子變頻器:MM420、MM430、MM440、G110、G120、6SE70
西門子工業(yè)以太網(wǎng):通訊網(wǎng)卡、通訊電纜、通訊接頭、總線連接器 工控機(jī)、交換機(jī)、自動(dòng)化軟件等系型號(hào)齊全,快速報(bào)價(jià),買我們的產(chǎn)品無憂所值,我們的產(chǎn)品都承諾質(zhì)保一年,讓您買的省心舒心,用的放心!
Modbus TCP是標(biāo)準(zhǔn)的網(wǎng)絡(luò)通信協(xié)議,通過CPU上PN接口進(jìn)行TCP/IP通信,不需要額外的通信硬件模塊,Modbus TCP使用開放式用戶通信連接作為Modbus通信路徑,所支持的混合客戶機(jī)和服務(wù)器連接數(shù)最大為CPU所允許的最大開放式用戶通信連接數(shù)8個(gè)。
軟件 STEP7 V11 SP1版本開始,S7-1200CPU 從Firmware V1.0.2開始,不再需要安裝Modbus TCP的庫(kù)文件,可以直接調(diào)用Modbus TCP的庫(kù)指令“MB_CLIENT”和“MB_SERVER”使用實(shí)現(xiàn)Modbus TCP通信功能,如圖1.所示。
圖1. Modbus TCP的庫(kù)指令
MB_CLIENT 進(jìn)行客戶機(jī)和服務(wù)器TCP連接、發(fā)送命令消息、接收響應(yīng)以及控制服務(wù)器的斷開。
1.調(diào)用MB_CLIENT通信指令,進(jìn)入 “Program blocks” > “OB1” 主程序中,調(diào)用MODBUS TCP客戶機(jī)指令,如圖2.所示。
圖2. MB_CLIENT通信指令
功能塊參數(shù)意義如下表1.:
管腳 | 說明 |
REQ | 使能: False-無Modbus通訊請(qǐng)求,True-請(qǐng)求與服務(wù)器通訊,Done完成位來后才可以執(zhí)行下次請(qǐng)求,建議采用上升沿觸發(fā)請(qǐng)求; |
DISCONNECT | 控制與服務(wù)器建立和終止連接:0-建立與指定IP地址和端口號(hào)的通訊連接,默認(rèn)為0;1-斷開通訊連接,在終止連接的過程中,不執(zhí)行任何其他功能; |
CONNECT_ID | 連接的ID號(hào):每個(gè)連接只有一個(gè)唯一的ID號(hào); |
IP_OCTET_1~4 | 服務(wù)器的IP地址: 如圖2.中通訊對(duì)方的IP地址是192.168.0.210; |
IP_PORT | 服務(wù)器上使用TCP/IP協(xié)議與客戶端建立通訊的IP端口號(hào),默認(rèn)值:502; |
MB_MODE | 選擇請(qǐng)求模式(讀取、寫入或診斷),具體對(duì)照參照表1.; |
MB_DATA_ADDR | 訪問數(shù)據(jù)的起始地址; |
MB_DATA_LEN | 數(shù)據(jù)長(zhǎng)度:數(shù)據(jù)訪問的位數(shù)或字?jǐn)?shù); |
MB_DATA_PRT | 指向Modbus數(shù)據(jù)寄存器的指針:用于緩存從Modbus服務(wù)器接收的數(shù)據(jù)或?qū)l(fā)送到Modbus服務(wù)器數(shù)據(jù)的緩沖區(qū),可以是DB塊或M區(qū),如果是DB塊則需要定義為“標(biāo)準(zhǔn)與S7- 300/400兼容”的類型,見下圖3; |
DONE | 完成位:作業(yè)完成,無錯(cuò)誤,該位置1; |
BUSY | 作業(yè)狀態(tài)位:0-當(dāng)前沒有正在處理的“MB_CLIENT”作業(yè);1-“MB_CLIENT”作業(yè)正在處理; |
ERROR | 錯(cuò)誤位:0-無錯(cuò)誤;1-出現(xiàn)錯(cuò)誤,錯(cuò)誤原因查看STATUS; |
STATUS | 錯(cuò)誤代碼; |
表1. 功能塊參數(shù)意義
2.MB_DATA_PTR數(shù)據(jù)塊的新建
通過“Program blocks”>“Add new block”,選擇“Data block”創(chuàng)建 DB 塊,選擇“標(biāo)準(zhǔn)與S7- 300/400兼容” ,點(diǎn)擊“OK”鍵,定義數(shù)據(jù)區(qū)為100個(gè)字的數(shù)組,如圖3.所示。
圖3. 創(chuàng)建MB_DATA_PTR數(shù)據(jù)塊
3. MB_MODE、MB_DATA_ADDR和功能碼的關(guān)系
MB_CLIENT指令中,MB_MODE、MB_DATA_ADDR和MB_DATA_LEN三個(gè)參數(shù)組合定義了當(dāng)前Modbus消息中所用的功能代碼,如表2.。
Modbus 功能 | MB_MODE | MB_DATA_ADDR | 操作和數(shù)據(jù)類型 | 數(shù)據(jù)長(zhǎng)度 |
FC01 | 0 | 00001~09999 | 讀取輸出位 每個(gè)請(qǐng)求1~2000個(gè)位 | 1~2000 |
FC02 | 0 | 10001~19999 | 讀取輸入位 每個(gè)請(qǐng)求1~2000個(gè)位 | 1~2000 |
FC03 | 0 | 40001~49999 或 400001~465535 | 讀取保持寄存器 每個(gè)請(qǐng)求1~125個(gè)字 | 1~125 |
FC04 | 0 | 30001~39999 | 讀取輸入字 每個(gè)請(qǐng)求1~125個(gè)字 | 1~125 |
FC05 | 1 | 00001~09999 | 寫一個(gè)輸出位 每個(gè)請(qǐng)求1個(gè)位 | 1 |
FC06 | 1 | 40001~49999 或 400001~465535 | 寫一個(gè)保持寄存器 每個(gè)請(qǐng)求1個(gè)字 | 1 |
FC15 | 1 | 00001~09999 | 寫多個(gè)輸出位 每個(gè)請(qǐng)求2~1968個(gè)位 | 2~1968 |
FC16 | 1 | 40001~49999 或 400001~465535 | 寫多個(gè)保持寄存器 每個(gè)請(qǐng)求2~123個(gè)字 | 2~123 |
FC15 | 2 | 00001~09999 | 寫一個(gè)或多個(gè)輸出位 每個(gè)請(qǐng)求1~1968個(gè)位 | 1~1968 |
FC16 | 2 | 40001~49999 或 400001~465535 | 寫一個(gè)或多個(gè)保持寄存器 每個(gè)請(qǐng)求1~123個(gè)字 | 1~123 |
FC11 | 11 | 讀取服務(wù)器通信狀態(tài)字和事件計(jì)數(shù)器:狀態(tài)字反映處理狀態(tài)(0-未處理;0XFFFF-處理中);每次成功發(fā)送一條消息后,事件計(jì)數(shù)器都將遞增。執(zhí)行功能時(shí),MB_CLIENT指令的MB_DATA_ADDR和MB_DATA_LEN參數(shù)都將被忽略。 | 0 | |
FC08 | 80 | 通過數(shù)據(jù)診斷代碼0X0000檢查服務(wù)器狀態(tài) 每次請(qǐng)求1個(gè)字 | 1 | |
FC08 | 81 | 通過數(shù)據(jù)診斷代碼0X000A重新設(shè)置服務(wù)器事件計(jì)數(shù)器 每次請(qǐng)求1個(gè)字 | 1 | |
3~10、12~79、82~255 | 保留 |
表2. MB_MODE、MB_DATA_ADDR和功能碼的關(guān)系
如上例中S7-1200作客戶機(jī),用FC03功能碼讀取服務(wù)器的兩個(gè)字,起始從Modbus地址40001開始,接收的數(shù)據(jù)存放在緩沖區(qū)DB3.DBX0.0開始區(qū)域,設(shè)置如上:MB_MODE=0,MB_DATA_ADDR=40001,MB_DATA_LEN=2,對(duì)應(yīng)關(guān)系為:40001->DB3.DBW0 ,40002->DB3.DBW2。
4.服務(wù)器端Modbus Slave 軟件設(shè)置
注意:服務(wù)器采用Modbus Slave軟件測(cè)試,該軟件是第三方軟件,可以從 internet 網(wǎng)絡(luò)上下載。
首先將測(cè)試電腦的IP地址設(shè)置成192.168.0.210,如圖4.所示,打開Modbus Slave 軟件,在Modbus Slave的“Set up->Slave Definition”中設(shè)置功能碼、起始地址、長(zhǎng)度等,如圖5.所示。
圖4. 電腦的IP地址設(shè)置
圖5. 服務(wù)器端Modbus Slave軟件設(shè)置
創(chuàng)建Modbus TCP/IP連接,在“Connection->connect...”中打開連接屬性對(duì)話框,選擇“Modbus TCP/IP” ,TCP/IP Server Port本地服務(wù)器端口為502,并可以勾選“Ignore Unit ID”選項(xiàng),如圖6.所示。
圖6. 連接屬性
注意:圖5.中的Slave ID 是服務(wù)器的站地址,和客戶機(jī)中“MB_CLIENT” 中的“CONNECT_ID” 不是一個(gè)概念,實(shí)際上與客戶機(jī)中“MB_CLIENT”的背景數(shù)據(jù)塊中的STAT變量“MB_UNIT_ID”需要一致,在1200中該地址默認(rèn)為16#00FF,如圖7 所示,可以在變量表中修改與實(shí)際服務(wù)器站地址一致。如果在圖6中勾選“Ignore Unit ID”,則不需要考慮一致情況,如果不勾選,則需要修改一致。
圖7. 客戶機(jī)中“MB_CLIENT”的背景數(shù)據(jù)塊中的STAT變量“MB_UNIT_ID”
5.通訊測(cè)試
S7-1200作客戶機(jī),用FC03功能碼讀取服務(wù)器的兩個(gè)字,設(shè)置客戶機(jī)和服務(wù)器的功能、起始地址、端口等參數(shù)相對(duì)應(yīng),具體設(shè)置如上,設(shè)置M5.0和M0.0為1,觸發(fā)請(qǐng)求,如圖8.所示。
圖8. S7-1200作客戶機(jī),用FC03功能碼讀取服務(wù)器的兩個(gè)字
通訊結(jié)果如圖9.所示,從服務(wù)器讀到數(shù)據(jù)20,30到客戶機(jī)的DB3.DBW0和DB3.DBW2區(qū)域。
圖9. 通訊結(jié)果
6.MB_CLIENT 參數(shù) STATUS 錯(cuò)誤代碼查詢參考下面兩個(gè)列表3.和表4.。
STATUS(W#16#) | 響應(yīng)Modbus客戶機(jī)的代碼(B#16#) | 錯(cuò)誤說明 |
8381 | 01 | 不支持功能代碼 |
8382 | 03 | 數(shù)據(jù)長(zhǎng)度錯(cuò)誤 |
8383 | 02 | 數(shù)據(jù)地址錯(cuò)誤或訪問的數(shù)據(jù)超出MB_DATA_PRT的地址區(qū) |
8384 | 03 | 數(shù)據(jù)值錯(cuò)誤 |
8385 | 03 | 不支持診斷錯(cuò)誤代碼(功能代碼08) |
表3. 協(xié)議錯(cuò)誤代碼
STATUS(W#16#) | 錯(cuò)誤說明 |
7001 | MB_CLIENT 正在等待Modbus服務(wù)器響應(yīng)指定TCP端口處的連接或斷開連接請(qǐng)求,僅在第一次執(zhí)行連接或斷開操作時(shí)才報(bào)告此代碼 |
7002 | MB_CLIENT 正在等待Modbus服務(wù)器響應(yīng)指定TCP端口處的連接或斷開連接請(qǐng)求,等待連接或斷開操作完成時(shí),將針對(duì)任何后續(xù)執(zhí)行報(bào)告此代碼 |
7003 | 斷開操作已成功完成(僅在一個(gè)PLC掃描周期內(nèi)有效) |
80C8 | 服務(wù)器在指定的時(shí)間內(nèi)無響應(yīng),請(qǐng)檢查與Modbus服務(wù)器設(shè)備的連接,嘗試過任何組態(tài)的重試操作后,才報(bào)告此錯(cuò)誤 |
8188 | 參數(shù)MB_MODE的值無效 |
8189 | 參數(shù)MB_DATA_ADDR的值無效 |
818A | 參數(shù)MB_DATA_LEN的長(zhǎng)度無效 |
818B | 參數(shù)MB_DATA_PTR中的指針無效 |
818C | 參數(shù)MB_DATA_PTR指向優(yōu)化的區(qū)域,必須為“標(biāo)準(zhǔn)與S7- 300/400兼容”的DB或M區(qū) |
8200 | 端口正在處理另一個(gè)Modbus請(qǐng)求 |
8380 | 接收到的Modbus楨有缺陷或接收到的字節(jié)太少 |
8387 | 指定的連接ID與用于先前請(qǐng)求的ID不同,只能有一個(gè)單個(gè)連接ID與每個(gè)MB_CLIENT背景數(shù)據(jù)塊配合使用 |
8388 | Modbus服務(wù)器返回一些和請(qǐng)求內(nèi)容不同的數(shù)據(jù),這只適合Modbus功能15或16 |
表4. 參數(shù)錯(cuò)誤代碼
除了上面列出的MB_CLIENT錯(cuò)誤外,也可以從底層傳輸通信指令(TCON、TDISCON、TSEND和TRCV)返回錯(cuò)誤,參考相應(yīng)指令的錯(cuò)誤代碼。
6SL3256-0VE00-6AA0西門子V20擴(kuò)展模塊