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