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