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