西門子PLC模塊SM1232
簡要描述:西門子PLC模塊SM1232潯之漫智控技術(shù)(上海)有限公司 上海詩慕自動化設(shè)備有限公司本公司銷售西門子自動化產(chǎn)品,*,質(zhì)量保證,價格優(yōu)勢西門子PLC,西門子觸摸屏,西門子數(shù)控系統(tǒng),西門子軟啟動,西門子以太網(wǎng)西門子電機(jī),西門子變頻器,西門子直流調(diào)速器,西門子電線電纜我公司大量現(xiàn)貨供應(yīng),價格優(yōu)勢,*,
產(chǎn)品型號:
所屬分類:西門子
更新時間:2024-04-22
廠商性質(zhì):代理商
西門子PLC模塊SM1232 西門子PLC模塊SM1232
潯之漫智控技術(shù)(上海)有限公司 上海詩慕自動化設(shè)備有限公司
本公司銷售西門子自動化產(chǎn)品,*,質(zhì)量保證,價格優(yōu)勢
西門子PLC,西門子觸摸屏,西門子數(shù)控系統(tǒng),西門子軟啟動,西門子以太網(wǎng)
西門子電機(jī),西門子變頻器,西門子直流調(diào)速器,西門子電線電纜
我公司大量現(xiàn)貨供應(yīng),價格優(yōu)勢,*,
本文以 ZKA-4488-ETH 為例介紹西門子PLC與深圳市綜科智控科技開發(fā)有限公司的IO設(shè)備進(jìn)行Modbus通訊的步驟設(shè)置。ZKA-4488-ETH 是 8 路數(shù)字量輸入(DI),8 路數(shù)字量輸出(DO),4 路模擬量輸入(AI,0/4-20mA),4 路模擬量輸出設(shè)備(AO,0/4-20mA),以太網(wǎng)通信。
以 ZKA-4488-ETH 為例,出廠默認(rèn)通訊參數(shù)如下:
ZK模塊 IP 為:192.168.0.105
TCP 端口為:10001
(注意:我們模塊出廠時默認(rèn)端口為10001,客戶也可以通過ZK模塊的配置文件把ZK通訊端口改成modbus-tcp的默認(rèn)端口502)
工作模式為:服務(wù)器模式
二、 S7-200 Modbus TCP通信
1 S7-200 Modbus TCP 通信簡介
S7-1200 CPU 本體上集成了一個 PROFINET 通信口,支持以太網(wǎng)和基于 TCP/IP和UDP 的通信標(biāo)準(zhǔn)。這個PROFINET 物理接口是支持10/100Mb/s的 RJ45口,支持電纜交叉自適應(yīng),因此一個標(biāo)準(zhǔn)的或是交叉的以太網(wǎng)線都可以用于這個接口。使用這個通信口可以實(shí)現(xiàn) S7-1200 CPU 與編程設(shè)備的通信,與HMI觸摸屏的通信,以及與其它 CPU 之間的通信,
S7-1200 CPU 的PROFINET 通信口主要支持以下通信協(xié)議及服務(wù)
- Profinet IO (V2.0開始)
- S7 通信 (V2.0開始支持客戶端)
- TCP
- ISO on TCP
- UDP(V2.0開始)
- Modbus TCP
- HMI通信
- Web通信(V2.0開始)。
硬件版本 V4.1 支持的協(xié)議和最大的連接資源:
S7-1200的連接資源
分配給每個類別的預(yù)留連接資源數(shù)為固定值;您無法更改這些值。 但可組態(tài) 6個"可用自由連接"以按照應(yīng)用要求增加任意類別的連接數(shù)。
● 示例1: 1 個 PG 具有 3 個可用連接資源。 根據(jù)當(dāng)前使用的 PG 功能,該 PG 實(shí)際可能使用其可用連接資源的 1、2 或 3。 在 S7-1200 中,始終保證至少有 1 個 PG,但不允許超過 1 個 PG。
在CPU屬性>常規(guī)>連接資源顯示:
硬件版本 V3.0 支持的協(xié)議和最大的連接資源:
- 3個連接用于操作面板
- 1個連接用于編程設(shè)備(PG)與 CPU 的通信
- 8個連接用于Open IE ( TCP, ISO on TCP, UDP) 的編程通信,使用T-block 指令來實(shí)現(xiàn)
- 3個連接用于S7 通信的服務(wù)器端連接,可以實(shí)現(xiàn)與S7-200,S7-300以及 S7-400 的以太網(wǎng)S7 通信
- 8個連接用于S7 通信的客戶端連接,可以實(shí)現(xiàn)與S7-200,S7-300以及 S7-400 的以太網(wǎng)S7 通信
連接數(shù)是固定不變的,不能自定義。
注意:建立被動的TCP 、ISO on TCP 和UDP的連接時,建議使用端口范圍: 2000~5000。一些端口號和TSAP 號是受到限制不能被使用的。 下列端口號和TSAP號不能使用:
- ISO TSAP (passive): 01.00, 01.01, 02.00, 02.01, 03.00, 03.01
- TCP/UDP port (passive): 20, 21, 25, 80, 102, 135, 161, 34962 … 34964,53, 80, 162, 443, 520, 9001
2 Modbus TCP 指令庫
S7-1200集成PN接口MODBUS TCP通信概述
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個。
軟件 STEP7 V11 SP1版本開始,S7-1200CPU 從Firmware V1.0.2開始,不再需要安裝Modbus TCP的庫文件,可以直接調(diào)用Modbus TCP的庫指令“MB_CLIENT”和“MB_SERVER”使用實(shí)現(xiàn)Modbus TCP通信功能,如圖1所示。
圖1. Modbus TCP的庫指令
3 Modbus TCP 功能編程
S7-1200 做Modbus Tcp Client(客戶端)
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通訊請求,True-請求與服務(wù)器通訊,Done完成位來后才可以執(zhí)行下次請求,建議采用上升沿觸發(fā)請求;
DISCONNECT
控制與服務(wù)器建立和終止連接:0-建立與IP地址和端口號的通訊連接,默認(rèn)為0;1-斷開通訊連接,在終止連接的過程中,不執(zhí)行任何其他功能;
CONNECT_ID
連接的ID號:每個連接只有一個ID號;
IP_OCTET_1~4
ZKA-4488-ETH的IP地址
IP_PORT
ZKA-4488-ETH上使用TCP/IP協(xié)議與客戶端建立通訊的IP端口號
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兼容” ,點(diǎn)擊“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作客戶機(jī),用FC04功能碼讀取ZKA-4488-ETH的模擬輸入AI1通道的讀數(shù)的兩個字,起始從Modbus地址30001開始,接收的數(shù)據(jù)存放在緩沖區(qū)DB3.DBX0.0開始區(qū)域,設(shè)置如上:MB_MODE=0,MB_DATA_ADDR=30001,MB_DATA_LEN=2,對應(yīng)關(guān)系為:30001->DB3.DBW0 ,30002->DB3.DBW2。
注意:Slave ID 是ZKA-4488-ETH的站地址,和客戶機(jī)中“MB_CLIENT” 中的“CONNECT_ID” 不是一個概念,實(shí)際上與客戶機(jī)中“MB_CLIENT”的背景數(shù)據(jù)塊中的STAT變量“MB_UNIT_ID”需要一致,在1200中該地址默認(rèn)為16#00FF,實(shí)際使用時可以改成1,即:與ZKA-4488-ETH配置文件中的站號保持一致,當(dāng)S7-1200掛接了多個ZKA-4488-ETH時,該值可以按序編號,也可以都使用值1,因為modbus-tcp依然可以根據(jù)指向的IP地址發(fā)送數(shù)據(jù)。
圖7. 客戶機(jī)中“MB_CLIENT”的背景數(shù)據(jù)塊中的STAT變量“MB_UNIT_ID”
5.通訊測試
S7-1200作客戶機(jī),用FC04功能碼讀取ZKA-4488-ETH的兩個字,設(shè)置客戶機(jī)和ZKA-4488-ETH的功能、起始地址、端口等參數(shù)相對應(yīng),具體設(shè)置如上,設(shè)置M5.0和M0.0為1,觸發(fā)請求,如圖8所示。
圖8. S7-1200作客戶機(jī),用FC04功能碼讀取服務(wù)器的兩個字
通訊結(jié)果如圖9所示,從服務(wù)器讀到數(shù)據(jù)00,11到客戶機(jī)的DB3.DBW0和DB3.DBW2區(qū)域。
圖9. 通訊結(jié)果
6.MB_CLIENT 參數(shù) STATUS 錯誤代碼查詢參考下面兩個列表3.和表4.。
STATUS(W#16#)
Modbus服務(wù)器返回的代碼(B#16#)
錯誤說明
8381
01
不支持功能代碼
8382
03
數(shù)據(jù)長度錯誤
8383
02
數(shù)據(jù)地址錯誤或訪問的數(shù)據(jù)超出MB_DATA_PTR的地址區(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)指令的錯誤代碼。
5 Modbus TCP 常問問題
MB_CLIENT 指令的背景數(shù)據(jù)塊中的 "MB_Unit_ID" 有什么功能?
注意:Slave ID 是ZKA-4488-ETH的站地址,和客戶機(jī)中“MB_CLIENT” 中的“CONNECT_ID” 不是一個概念,實(shí)際上與客戶機(jī)中“MB_CLIENT”的背景數(shù)據(jù)塊中的STAT變量“MB_UNIT_ID”需要一致,在1200中該地址默認(rèn)為16#00FF,實(shí)際使用時可以改成1,即:與ZKA-4488-ETH配置文件中的站號保持一致,當(dāng)S7-1200掛接了多個ZKA-4488-ETH時,該值可以按序編號,也可以都使用值1,因為modbus-tcp依然可以根據(jù)指向的IP地址發(fā)送數(shù)據(jù):
圖 11. MB_Unit_ID
S7-1200 MODBUS TCP通信多請求處理怎么做?
單獨(dú)的客戶機(jī)連接需要遵循的規(guī)則:
1.每個“MB_CLIENT”連接需要使用一個不同的背景數(shù)據(jù)塊;
2.每個“MB_CLIENT”連接必須一個服務(wù)器IP地址;
3.每個“MB_CLIENT”連接必須一個的連接ID;
4.是否需要IP端口號取決于服務(wù)器組態(tài);
連接ID和背景數(shù)據(jù)塊組合成對,對每個連接來說,組合對都是的。
對于多請求處理,有兩種方法:
方法一:如果TCP連接充裕,可以建立多個不同的連接發(fā)送請求,即每個請求使用一個獨(dú)立的連接,調(diào)用獨(dú)立的“MB_CLIENT”功能塊,具體操作參考“Modbus TCP”部分。通過不同的連接發(fā)送多個請求,“MB_CLIENT”功能塊多次調(diào)用,但是需要使用不同的背景數(shù)據(jù)塊,不同的ID號和不同的端口號。
方法二:通過公共的連接發(fā)送多個請求。
通過公共的連接發(fā)送多個請求,“MB_CLIENT”功能塊多次調(diào)用,但是需要使用相同的背景數(shù)據(jù)塊,連接ID號,IP地址和端口號。在任意時間,只能有一個MB_CLIENT請求處于激活狀態(tài),在一個請求完成執(zhí)行后,下一個請求再開始執(zhí)行,輪循處理。
在此,我們以方法二為例,介紹S7-1200如何通過分次請求獲取ZKA-4488-ETH內(nèi)部寄存器的數(shù)據(jù):
1.S7-1200的IP地址192.168.1.218,將系統(tǒng)存儲器字節(jié)設(shè)置為MB1,如圖1所示,圖2所示。
圖1 IP地址設(shè)置
圖2 系統(tǒng)存儲器字節(jié)設(shè)置
1.新建數(shù)據(jù)塊,訪問指向ZKA-4488-ETH的IP地址和端口號
如圖6所示,新建DB,添加變量類型為TCON_IP_V4,設(shè)置InterfaceId,ID,ActiveEstablished,RemoteAddress,RemotePort等參數(shù),具體含義參見鏈接。
圖6 設(shè)置連接變量
如圖7所示,在DB中建立結(jié)構(gòu)數(shù)組,用于輪詢控制位以及數(shù)據(jù),其中元素0用于第一次讀取,元素1用于第二次讀取。Init用于初始標(biāo)志位。
圖7 輪詢數(shù)據(jù)
2.編寫輪循功能
1)如圖8所示,用“FirstScan”在第一次掃描中將初始標(biāo)志位置位。
圖8 初始化標(biāo)志位
2)如圖9所示,程序段2中,第二步的完成位或者錯誤位去置位第一步的使能位復(fù)位第二步的使能位,同時復(fù)位第二步的完成位、錯誤位、觸發(fā)的沿變量。
程序段3中,一般情況下是EN通過第一步的使能位使能,REQ通過使能位的上升沿觸發(fā),設(shè)置模式、讀取數(shù)據(jù)地址、長度、存儲地址、連接數(shù)據(jù)、完成、錯誤位等。此外需要考慮第一次觸詢,可以使用手動觸發(fā),在這里使用初始化標(biāo)志位實(shí)現(xiàn)指令的第一次使能,去進(jìn)行CPU和調(diào)試軟件的TCP連接,使用Connected標(biāo)志位觸發(fā)第一次的REQ觸發(fā)。
圖9 請求1觸發(fā)
如圖10所示,程序段4中,第一步的完成位或者錯誤位去置位第二步的使能位復(fù)位第一步的使能位,同時復(fù)位第一步的完成位、錯誤位、觸發(fā)的沿變量,最后復(fù)位初始化標(biāo)志位,確保第一個MB_CLIENT不會一直接通。
程序段5中,EN通過第二步的使能位使能,REQ通過使能位的上升沿觸發(fā),設(shè)置模式、讀取數(shù)據(jù)地址、長度、存儲地址、連接數(shù)據(jù)、完成、錯誤位等。
圖10 請求2觸發(fā)
五.通訊測試
通訊結(jié)果如圖11 所示。
圖11 測試結(jié)果