產(chǎn)品詳情
長(zhǎng)沙 西門(mén)子 6ES7390-1BC00-0AA0 型號(hào)及規(guī)格
Modbus TCP通信概述
MODBUS/TCP是簡(jiǎn)單的、中立廠商的用于管理和控制自動(dòng)化設(shè)備的MODBUS系列通訊協(xié)議的派生產(chǎn)品,顯而易見(jiàn),它覆蓋了使用TCP/IP協(xié)議的“Intranet”和“Internet”環(huán)境中MODBUS報(bào)文的用途。協(xié)議的最通用用途是為諸如PLC’s,I/O模塊,以及連接其它簡(jiǎn)單域總線或I/O模塊的網(wǎng)關(guān)服務(wù)的。
MODBUS/TCP 使MODBUS_RTU協(xié)議運(yùn)行于以太網(wǎng),MODBUS TCP使用TCP/IP和以太網(wǎng)在站點(diǎn)間傳送MODBUS報(bào)文,MODBUS TCP結(jié)合了以太網(wǎng)物理網(wǎng)絡(luò)和網(wǎng)絡(luò)標(biāo)準(zhǔn)TCP/IP以及以MODBUS作為應(yīng)用協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)表示方法。MODBUS TCP通信報(bào)文被封裝于以太網(wǎng)TCP/IP數(shù)據(jù)包中。與傳統(tǒng)的串口方式,MODBUS TCP插入一個(gè)標(biāo)準(zhǔn)的MODBUS報(bào)文到TCP報(bào)文中,不再帶有數(shù)據(jù)校驗(yàn)和地址。
1. 通訊所使用的以太網(wǎng)參考模型
Modbus TCP傳輸過(guò)程中使用了TCP/IP以太網(wǎng)參考模型的5層:
第一層:物理層,提供設(shè)備物理接口,與市售介質(zhì)/網(wǎng)絡(luò)適配器相兼容
第二層:數(shù)據(jù)鏈路層,格式化信號(hào)到源/目硬件址數(shù)據(jù)幀
第三層:網(wǎng)絡(luò)層,實(shí)現(xiàn)帶有32位IP址IP報(bào)文包
第四層:傳輸層,實(shí)現(xiàn)可靠性連接、傳輸、查錯(cuò)、重發(fā)、端口服務(wù)、傳輸調(diào)度
第五層:應(yīng)用層,Modbus協(xié)議報(bào)文
2. Modbus TCP數(shù)據(jù)幀
Modbus數(shù)據(jù)在TCP/IP以太網(wǎng)上傳輸,支持Ethernet II和802.3兩種幀格式,Modbus TCP數(shù)據(jù)幀包含報(bào)文頭、功能代碼和數(shù)據(jù)3部分,MBAP報(bào)文頭(MBAP、Modbus Application Protocol、Modbus應(yīng)用協(xié)議)分4個(gè)域,共7個(gè)字節(jié),如圖1所示:
圖1: MODBUS TCP報(bào)文
由于使用以太網(wǎng)TCP/IP數(shù)據(jù)鏈路層的校驗(yàn)機(jī)制而保證了數(shù)據(jù)的完整性,MODBUS TCP 報(bào)文中不再帶有數(shù)據(jù)校驗(yàn)”CHECKSUM”,原有報(bào)文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS應(yīng)用協(xié)議報(bào)文頭中。
3. Modbus TCP使用的通訊資源端口號(hào)
在Modbus服務(wù)器中按缺省協(xié)議使用Port 502 通信端口,在Modbus客戶器程序中設(shè)置任意通信端口,為避免與其他通訊協(xié)議的沖突一般建議2000開(kāi)始可以使用。
4. Modbus TCP使用的功能代碼
按照使用的通途區(qū)分,共有3種類型分別為:
1) 公共功能代碼:已定義好功能碼,保證其唯一性,由Modbus.org認(rèn)可;
2) 用戶自定義功能代碼有兩組,分別為65~72和100~110,無(wú)需認(rèn)可,但不保證代碼使用唯一性,如變?yōu)楣泊a,需交RFC認(rèn)可;
3) 保留功能代碼,由某些公司使用某些傳統(tǒng)設(shè)備代碼,不可作為公共用途。
按照應(yīng)用深淺,可分為3個(gè)類別:
1) 類別0,客戶機(jī)/服務(wù)器最小可用子集:讀多個(gè)保持寄存器(fc.3);寫(xiě)多個(gè)保持寄存器(fc.16)。
2) 類別1,可實(shí)現(xiàn)基本互易操作常用代碼:讀線圈(fc.1);讀開(kāi)關(guān)量輸入(fc.2);讀輸入寄存器(fc.4);寫(xiě)線圈(fc.5);寫(xiě)單一寄存器(fc.6)。
3) 類別2,用于人機(jī)界面、監(jiān)控系統(tǒng)例行操作和數(shù)據(jù)傳送功能:強(qiáng)制多個(gè)線圈(fc.15);讀通用寄存器(fc.20);寫(xiě)通用寄存器(fc.21);屏蔽寫(xiě)寄存器(fc.22);讀寫(xiě)寄存器(fc.23)。
5. Modbus TCP通訊應(yīng)用舉例
在讀寄存器的過(guò)程中,以Modbus TCP請(qǐng)求報(bào)文為例,具體的數(shù)據(jù)傳輸過(guò)程如下:
1) Modbus TCP客戶端實(shí)況,用Connect()命令建立目標(biāo)設(shè)備TCP 502端口連接數(shù)據(jù)通信過(guò)程;
2) 準(zhǔn)備Modbus報(bào)文,包括7個(gè)字節(jié)MBAP內(nèi)請(qǐng)求;
3) 使用send()命令發(fā)送;
4) 同一連接等待應(yīng)答;
5) 同recv()讀報(bào)文,完成一次數(shù)據(jù)交換過(guò)程;
6) 當(dāng)通信任務(wù)結(jié)束時(shí),關(guān)閉TCP連接,使服務(wù)器可以為其他服務(wù)。
S7-300/400 的CPx43-1 MODBUS TCP 通訊(STEP7)
下面章節(jié)將介紹如何使用軟件選項(xiàng)包” ModbusTCP CP V4.3 "的功能塊庫(kù)配置S7-300/400單站系統(tǒng)通過(guò)CP343-1/CP443-1與第三方模擬軟件進(jìn)行Modbus/TCP進(jìn)行通訊的詳細(xì)步驟
1.“ ModbusTCP CP V4.3”塊庫(kù)使用說(shuō)明
1) 該功能塊庫(kù)可以用于S7-300單站通過(guò)CP343-1或S7-400單站通過(guò)CP443-1進(jìn)行ModbusTCP通訊。
2) 由于需要在SIMATIC站與其他通訊伙伴之間建立TCP連接用于Modbus通訊,因此需要調(diào)用SIMATIC S7標(biāo)準(zhǔn)功能塊,對(duì)于S7-300/400的CP來(lái)說(shuō),需要調(diào)用FC5(AG_SEND),FC6(AG_RECV)功能塊。
3) 對(duì)于主要功能塊FB106、107和108來(lái)說(shuō),包含了V1.x和V2.x,它們管腳參數(shù)并沒(méi)有更改,只是在V2.x中增加了FC10”AG_CNTRL”功能塊用于管理TCP連接,是否支持功能塊與CP的型號(hào)和固件版本有關(guān),如下圖1所示:
圖1 功能塊V1.x和V2.x版本區(qū)別
當(dāng)將軟件選項(xiàng)包安裝完集成到Step7時(shí),可以在Step7安裝文件的相應(yīng)目錄中找到塊庫(kù)、例程、英文手冊(cè),另外還可找到用CFC語(yǔ)言編程的功能快庫(kù),供讀者選用,如下圖2~4所示,在實(shí)際的項(xiàng)目調(diào)試過(guò)程中由于例子程序的各項(xiàng)功能比較完善,因此可以直接使用例子程序根據(jù)項(xiàng)目的實(shí)際情況修改相應(yīng)的參數(shù)即可,可以節(jié)省大量的參數(shù)設(shè)置時(shí)間,以下主要描述了使用軟件選項(xiàng)包” ModbusTCP CP V4.3 "配置S7-300/400站的詳細(xì)配置和編程步驟。
圖2 塊庫(kù)、例程、英文手冊(cè)和軟件注冊(cè)的文件夾位置
圖3 例程(注:當(dāng)找不到例程時(shí)可以通過(guò)”Browse..”按鈕來(lái)進(jìn)行查找)
圖4 功能塊庫(kù)(注:當(dāng)找不到塊庫(kù)時(shí)可以通過(guò)”Browse..”按鈕來(lái)進(jìn)行查找)
2. 配置S7-400單站系統(tǒng)通過(guò)CP443-1 作為Server進(jìn)行Modbus TCP通訊
以S7-400單站系統(tǒng)及Modscan32軟件為例,詳細(xì)介紹如何將S7-400單站系統(tǒng)通過(guò)CP443-1配置為Server,Modscan32為Client進(jìn)行Modbus TCP通訊,在本例中將使用帶FC10”AG_CNTRL”版本的功能塊,下圖5為服務(wù)器功能塊庫(kù)的程序結(jié)構(gòu)及各功能塊完成的功能:
圖5 服務(wù)器功能塊庫(kù)程序結(jié)構(gòu)
注意:Modscan32軟件可以從網(wǎng)上免費(fèi)下載得到,本例中使用的版本為V7.0版,由于各版本的功能不盡相同,因此需要注意版本問(wèn)題。
2.1 例子中使用的硬件設(shè)備及軟件
本例中所用的硬件設(shè)備如下表:
名稱 |
數(shù)量 |
訂貨號(hào) |
S7-400電源模塊PS 407 10A |
1 |
6ES7407-0KA01-0AA0 |
S7-400 CPU414-3PN/DP |
1 |
6ES7414-3EM05-0AB0(V5.2) |
S7-400 CP443-1 |
1 |
6GK7443-1EX41-0XE0(V1.0) |
S7-400 機(jī)架 |
1 |
6ES7400-1JA00-0AA0 |
網(wǎng)線 |
若干 |
|
筆記本電腦 |
1 |
|
表1 服務(wù)器硬件清單
所用到軟件如下表:
名稱 |
訂貨號(hào) |
STEP7 V5.5 組態(tài)編程軟件 英文版 |
|
“ ModbusTCP CP V4.3” 軟件選項(xiàng)包 |
2XV9450-1MB00 |
Modscan32 V7.0 |
|
表2 服務(wù)器軟件清單
2.2 S7-400系統(tǒng)及Modscan32軟件組態(tài)
打開(kāi)Step7軟件,新建一個(gè)工程項(xiàng)目文件,命名為“M_TCP_CP_V43(Server)”, 在項(xiàng)目下插入一個(gè)S7-400站,如下圖6所示:
圖6 新建S7-400 Station
雙擊插入的SIMATIC 400 Station的“Hardware”,打開(kāi)硬件組態(tài),在硬件組態(tài)界面下分別插入機(jī)架,電源PS407、CPU414-3PN/DP、CP443-1,本例中將CP的IP地址設(shè)為192.168.70.2,如下圖7所示:
圖7 硬件組態(tài)并設(shè)置CP443-1的IP地址
打開(kāi)Netpro網(wǎng)絡(luò)組態(tài),選中CPU414-3PN/DP,插入一個(gè)新連接,連接伙伴為Unspecified,連接類型為TCP Connection,如下圖8所示:
圖8 網(wǎng)絡(luò)組態(tài)-新建TCP connection
打開(kāi)連接屬性對(duì)話框中的“General Inbation”,由于CP443-1做Server被動(dòng)連接,因此不勾選“Active connection estabishment”選項(xiàng),ID保持缺省即可,在“Address”欄中同樣由于CP443-1做Server,因此填入連接的Port號(hào)設(shè)置為502,組態(tài)完成后,編譯保存,將例程站點(diǎn)“SIMATIC 400(Server)”中的程序(System data不需要拷貝)拷貝到該項(xiàng)目中并下載(注意:OB100中調(diào)用的FB108的id和laddr需根據(jù)組態(tài)確認(rèn))。對(duì)于通訊伙伴Remote的IP地址可以不填,即允許任意IP地址的客戶端發(fā)起連接,如下圖9所示:
圖9 S7-400為服務(wù)器的TCP connection參數(shù)設(shè)置
對(duì)于服務(wù)器和客戶端的端口號(hào)(下述中以Port代替)的選擇需要注意以下幾點(diǎn):
1)一般情況下服務(wù)器端的Port號(hào)modbus TCP規(guī)范缺省為502,客戶端的Port號(hào)設(shè)置為客戶端允許的號(hào)即可,另外各廠商產(chǎn)品也有一些限制,對(duì)于SIMATIC產(chǎn)品一般從2000之后開(kāi)始。
2)對(duì)于一個(gè)系統(tǒng)來(lái)說(shuō),當(dāng)創(chuàng)建多個(gè)TCP連接時(shí),要保證IP地址和Port號(hào)不重合,即同一個(gè)IP地址下創(chuàng)建多個(gè)TCP連接時(shí)Port號(hào)必須不同,而不同的系統(tǒng)因IP地址不同可以使用相同的Port號(hào),例如本例中如果需要?jiǎng)?chuàng)建多個(gè)TCP連接作為Server時(shí)因只有一個(gè)IP,因此Port號(hào)必須不同。
2.3 通訊測(cè)試
由于“ ModbusTCP CP V4.3”選項(xiàng)包支持功能碼FC1,2,3,4,5,6,15,16,不同的功能碼測(cè)試過(guò)程中類似,因此下面以FC03(讀寫(xiě)保持寄存器)為例來(lái)說(shuō)明通訊測(cè)試的整個(gè)過(guò)程,對(duì)于其他功能碼的測(cè)試將不再重復(fù)描述,對(duì)于Modbus的數(shù)據(jù)類型可參考下表3:
表3 Modbus數(shù)據(jù)類型
由于服務(wù)器主功能塊FB108“MODBUSCP”的參數(shù)需要初始化,因此分別在OB100及OB1中調(diào)用FB108,在OB100中調(diào)用FB108完成相關(guān)參數(shù)的初始化,FB108的管腳分分布如下圖10所示:
注意:在圖10中已經(jīng)填寫(xiě)的參數(shù)不需要初始化,在OB1調(diào)用賦值;而未填寫(xiě)的參數(shù)需要初始化,在OB100中調(diào)用完成。
打開(kāi)Modscan32軟件,在“Connection--->connect”中打開(kāi)連接屬性對(duì)話框,連接接口選擇“Remote TCP/IP Server”,IP Address分別填入CPU的IP地址
192.168.70.2,Service為遠(yuǎn)程服務(wù)器的端口502,在協(xié)議的選擇對(duì)話框中可以定義傳輸模式、通訊超時(shí)響應(yīng)時(shí)間,報(bào)文發(fā)送間隔及允許寫(xiě)多個(gè)保
持寄存器等,這里分別保持缺省設(shè)置即可,如下圖11所示:
圖18:對(duì)應(yīng)TCP通訊的Modscan32連接窗口
下載網(wǎng)絡(luò)組態(tài)及程序到CPU中,使能參數(shù)ENQ_ENR=1,在 Modscan32的“Set up->Data Definition”中設(shè)置數(shù)據(jù)掃描周期、寄存器連接類型、起始地址、長(zhǎng)度等,如下圖11所示:
圖11 Modscan32中Modbus數(shù)據(jù)參數(shù)定義
之后在ModScan32中就可以建立和遠(yuǎn)程CP443-1 Server的連接了,在Netpro中可以看到連接已經(jīng)建立起來(lái),如下圖12所示:
圖12 Modscan32激活與S7-400的連接
由于Modbus的內(nèi)部地址編排時(shí)基于數(shù)據(jù)鏈路層和應(yīng)用層有一定的映射關(guān)系,因此Modbus的地址與SIMATIC中的DB塊的地址時(shí)按照一定的地址映射關(guān)系來(lái)相對(duì)應(yīng),這樣造成了DB塊中有一定的地址偏移量,在本例中假設(shè)數(shù)據(jù)區(qū)的定義如下圖21所示,其DB偏移量、Modbus物理編址、應(yīng)用層編址如下圖13所示:
圖13本例中的數(shù)據(jù)區(qū)定義
圖14 DB偏移量、Modbus物理編址、應(yīng)用層編址對(duì)應(yīng)關(guān)系
在Step7的項(xiàng)目程序中新建一個(gè)變量監(jiān)控表,插入需要監(jiān)控的參數(shù)和數(shù)據(jù)區(qū)變量,可以看到ModScan32軟件與CP443-1的數(shù)據(jù)通訊已經(jīng)建立起來(lái)了,雙方可以進(jìn)行正常的保持寄存器數(shù)據(jù)讀寫(xiě)操作,如下圖15所示:
圖15 通訊連接建立
3. 配置S7-400單站系統(tǒng)作為Client進(jìn)行Modbus TCP通訊
下面以S7-400單站系統(tǒng)及ModSim32軟件為例,詳細(xì)介紹如何將S7-400單站系統(tǒng)配置為Client,ModSim32為Server進(jìn)行Modbus TCP通訊,在本例中同樣使用FC10“AG_CNTRL”版本的功能塊,由于客戶端和服務(wù)器模式均使用相同的功能塊,因此客戶端功能塊庫(kù)的程序結(jié)構(gòu)及各功能塊完成的功能可以參考圖5。
3.1 例子中使用的硬件設(shè)備及軟件
本例中所用的硬件設(shè)備如下表:
名稱 |
數(shù)量 |
訂貨號(hào) |
S7-400電源模塊PS 407 10A |
1 |
6ES7407-0KA01-0AA0 |
S7-400 CPU414-3PN/DP |
1 |
6ES7414-3EM05-0AB0(V5.2) |
S7-400 CP443-1 |
1 |
6GK7443-1EX41-0XE0(V1.0) |
S7-400 機(jī)架 |
1 |
6ES7400-1JA00-0AA0 |
網(wǎng)線 |
若干 |
|
筆記本電腦 |
1 |
|
表4 客戶端硬件清單
所用到軟件如下表:
名稱 |
訂貨號(hào) |
STEP7 V5.5 組態(tài)編程軟件 英文版 |
|
“ ModbusTCP CP V4.3” 軟件選項(xiàng)包 |
2XV9450-1MB00 |
ModSim32 免授權(quán)版本 |
可從網(wǎng)上免費(fèi)獲取 |
表5 客戶端軟件清單
3.2 S7-400單站系統(tǒng)與ModSim32軟件組態(tài)
打開(kāi)Step7軟件,新建一個(gè)工程項(xiàng)目文件,命名為“M_TCP_CP_V43(Client)”, 在項(xiàng)目下插入一個(gè)S7-400站,如下圖16所示:
圖16 新建S7-400 Station
雙擊插入的SIMATIC 400 Station的“Hardware”,打開(kāi)硬件組態(tài),在硬件組態(tài)界面下分別插入機(jī)架,電源PS407、CPU414-3PN/DP、CP443-1,本例中將CP的IP地址設(shè)為192.168.70.2,如下圖17所示:
圖17 硬件組態(tài)并設(shè)置CP443-1的IP地址
打開(kāi)Netpro網(wǎng)絡(luò)組態(tài),選中CPU414-3PN/DP,插入一個(gè)新連接,連接伙伴為Unspecified,連接類型為TCP Connection,如下圖18所示:
圖18 網(wǎng)絡(luò)組態(tài)-新建TCP connection
打開(kāi)連接屬性對(duì)話框中的“General Inbation”,由于CP443-1做Client主動(dòng)發(fā)起連接,因此需要勾選“Active connection estabishment”選項(xiàng),ID保持缺省即可,在“Address”欄中同樣由于CP443-1做Client,對(duì)于本地的端口號(hào)設(shè)置為2000(一般從2000以外開(kāi)始以避免與別的協(xié)議資源沖突),對(duì)于通訊伙伴Remote的IP地址設(shè)置為測(cè)試PC機(jī)的IP 地址,本例中 PC機(jī)的IP設(shè)置為192.168.70.245,而Port號(hào)設(shè)置為502,如下圖19所示:
圖19 S7-400為客戶端的TCP connection參數(shù)設(shè)置
組態(tài)完成后,編譯保存,將例程站點(diǎn)“SIMATIC 400(Client)”中的程序(System data不需要拷貝)拷貝到該項(xiàng)目中并下載(注意:OB100中調(diào)用的FB108的id和laddr需根據(jù)組態(tài)確認(rèn))。
關(guān)于服務(wù)器和端口號(hào)的設(shè)置請(qǐng)參考本文中2.2章節(jié)說(shuō)明。
3.3 通訊測(cè)試
由于“ModbusTCP CP V4.3”選項(xiàng)包支持功能碼FC1,2,3,4,5,6,15,16,不同的功能碼測(cè)試過(guò)程中類似,因此下面同樣以FC03(讀寫(xiě)保持寄存器)為例來(lái)說(shuō)明通訊測(cè)試的整個(gè)過(guò)程,對(duì)于其他功能碼的測(cè)試將不再重復(fù)描述。
需要說(shuō)明的是由于客戶端功能塊需要定義具體的功能碼,而主功能塊FB108 “MODBUSCP”并沒(méi)有直接的管腳來(lái)定義功能碼,而是由其中的兩個(gè)參數(shù)“DATA_TYPE”和“single-write”共同決定(參見(jiàn)后面的管腳參數(shù)說(shuō)明),詳細(xì)情況如下圖20所示:
圖20 S7-400單站系統(tǒng)做客戶端時(shí)不同的功能碼的參數(shù)定義
由于客戶端和服務(wù)器均使用相同的功能塊FB108“MODBUSCP ”的參數(shù)需要初始化,因此分別在OB100及OB1中調(diào)用FB108,在OB100中調(diào)用FB108完成相關(guān)參數(shù)的初始化,FB108的管腳分布參見(jiàn)3.3章節(jié)中的圖10說(shuō)明。
打開(kāi)ModSim32軟件,在“Connection--->connect”中打開(kāi)連接屬性對(duì)話框,連接接口選擇“Modbus/TCP svr”,TCP/IP Server Port為本地服務(wù)器的端口502,如下圖21所示:
圖21 ModSim32中設(shè)置端口號(hào)
下載硬件組態(tài)及程序到CPU中,給參數(shù)ENQ_ENR發(fā)送脈沖信號(hào);在打開(kāi)的ModSim32軟件窗口設(shè)置寄存器連接類型、起始地址、長(zhǎng)度等,如下圖22所示:
圖22 ModSim32中Modbus數(shù)據(jù)參數(shù)定義
關(guān)于SIMATIC中DB偏移量、Modbus物理編址、應(yīng)用層編址對(duì)應(yīng)關(guān)系請(qǐng)參考本文中2.3章節(jié)圖14的說(shuō)明
之后在CP443-1 Client就可以建立和遠(yuǎn)程ModSim32 Server的連接了,在Netpro中可以看到連接已經(jīng)建立起來(lái),如下圖23所示:
圖23 Modscan32激活與S7-400的連接
在Step7的項(xiàng)目程序中新建一個(gè)變量監(jiān)控表,插入需要監(jiān)控的參數(shù)和數(shù)據(jù)區(qū)變量,可以看到ModSim32軟件與S7-400的數(shù)據(jù)通訊已經(jīng)建立起來(lái)了,雙方可以進(jìn)行正常的保持寄存器數(shù)據(jù)讀寫(xiě)操作,如下圖24所示:
圖24 S7-400單站系統(tǒng)作為客戶端與ModSim32軟件通訊
4. “ ModbusTCP CP V4.3” 選項(xiàng)包通訊使用總結(jié)及相關(guān)注意事項(xiàng)
由于是通過(guò)PC測(cè)試軟件模擬第三方設(shè)備與SIMATIC CPU的集成PN口進(jìn)行Modbus TCP通訊,因此在實(shí)際的第三方設(shè)備與CPU的集成PN口進(jìn)行通訊時(shí)需要注意以下幾點(diǎn):
1) 由于訂貨號(hào)2XV9450-1MB02程序中會(huì)占用CPU 較大的裝載和工作存儲(chǔ)區(qū),因此對(duì)于性能比較低特別是S7-300的低端CPU進(jìn)行通訊時(shí)必須考慮一定的富余量。
2) 對(duì)于SIMATIC S7,參數(shù)DB_x的數(shù)據(jù)區(qū)建議使用不同的DB 塊,使用同一個(gè)DB的不同地址區(qū)會(huì)造成地址編排混亂,另外參數(shù)Start_x與END_x 參數(shù)不能出現(xiàn)地址疊加情況。
3) 第三方設(shè)備的數(shù)據(jù)區(qū)與SIMATIC S7的數(shù)據(jù)DB塊的地址對(duì)應(yīng)關(guān)系可以先按照第三方的數(shù)據(jù)區(qū)域Modbus地址的偏移關(guān)系之后計(jì)算相應(yīng)的偏移量。
4)建議使用項(xiàng)目中的樣例程序,只須修改連接ID,定義通訊雙方的IP地址、端口號(hào)及相應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū)等,能減少編程量,只須把樣例程序放到一個(gè)單獨(dú)的FC塊中即可,樣例程序中定義了足夠的數(shù)據(jù)區(qū),連接成功及錯(cuò)誤次數(shù)指示等。
5) Modbus TCP每一包的數(shù)據(jù)最多只能發(fā)送125個(gè)寄存器或2000個(gè)比特位,超過(guò)該范圍必須進(jìn)行分包處理。
6) S7-300/400作為Client能與多少個(gè)Server建立通訊或者作為Server時(shí)能與多少個(gè)Client通訊取決于產(chǎn)品所支持的TCP連接數(shù),Modbus/TCP協(xié)議并沒(méi)有對(duì)此進(jìn)行約束和限制。
5 .“ModbusTCP CP V4.3” 軟件包授權(quán)
未經(jīng)授權(quán)的Modbus TCP軟件可用于測(cè)試和學(xué)習(xí),不允許用于商業(yè)行為;未經(jīng)授權(quán)的軟件測(cè)試時(shí)CPU 的INTF指示燈紅色閃爍,并在CPU故障緩沖區(qū)生成錯(cuò)誤信息;同時(shí),Modbus TCP功能塊報(bào)錯(cuò),如圖25、26所示:
圖25 CPU診斷緩沖區(qū)報(bào)錯(cuò)
圖26 Modbus TCP功能塊報(bào)錯(cuò)A090
每個(gè)CPU都需要對(duì)功能塊MODBUSCP進(jìn)行授權(quán)。授權(quán)有兩個(gè)步驟:讀取IDENT_CODE和申請(qǐng)注冊(cè)碼REG_KEY。且在CPU中必須調(diào)用OB121。
5.1讀取IDENT_CODE
1、下載程序并將CPU切換到RUN模式;
2、打開(kāi)MODBUSCP(FB108)的背景塊DB108,確認(rèn)IDENT_CODE的偏移地址為108;如圖27所示:
圖27 確認(rèn)IDENT_CODE的偏移地址
3、打開(kāi)變量監(jiān)視表,輸入DB108.DBB108開(kāi)始的20個(gè)字節(jié),偏移地址110開(kāi)始的18個(gè)字符即為IDENT_CODE,監(jiān)控如圖28所示:
圖28 確認(rèn)IDENT_CODE
4、按上圖方式,獲取IDENT_CODE和軟件包裝上的License-No,并按照章節(jié)5.2和5.3所描述步驟申請(qǐng)注冊(cè)碼。
5.2 通過(guò)撥打西門(mén)子授權(quán)服務(wù)中心申請(qǐng)注冊(cè)碼REG_KEY
授權(quán)中心聯(lián)系方式:010-64757575
通過(guò)西門(mén)子授權(quán)服務(wù)中心申請(qǐng)注冊(cè)碼時(shí),需要您提供所購(gòu)買(mǎi)的軟件訂貨號(hào)、IDENT_CODE和軟件包裝上的License-No ,如圖28所示。
5.3 通過(guò)網(wǎng)站申請(qǐng)注冊(cè)碼REG_KEY
1、通過(guò)西門(mén)子技術(shù)支持網(wǎng)站申請(qǐng),打開(kāi)如下網(wǎng)址,點(diǎn)擊“技術(shù)問(wèn)題提交”:
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo2&aktprim=99&lang=zh
圖29 技術(shù)支持網(wǎng)站
2、請(qǐng)按如下示例的步驟進(jìn)行操作(注意:由于步驟3搜索出來(lái)的參考信息無(wú)法解決授權(quán)問(wèn)題,請(qǐng)直接點(diǎn)擊“繼續(xù)”進(jìn)入步驟4),如圖30~34所示。
圖30 步驟1
圖31 步驟2
圖32 步驟4
圖33 步驟5
圖34 步驟6
5.4 使用注冊(cè)碼REG_KEY
1、西門(mén)子授權(quán)中心收到技術(shù)支持申請(qǐng)后,將會(huì)盡快給您回復(fù)郵件;
2、當(dāng)獲取到注冊(cè)碼后,在項(xiàng)目中打開(kāi)LICENSE_DB(DB3);
3、通過(guò)菜單“View--->Data View”將DB塊切換到數(shù)據(jù)視圖模式,將獲取的17位注冊(cè)碼填寫(xiě)到“Actual value”中,如圖35所示。
圖35 輸入注冊(cè)碼
4、將LICENSE_DB(DB3)下載到CPU中,CPU的INTF指示燈熄滅;并可通過(guò)查看MODBUSPN(FB102)的輸出引腳LICENSED為true且不再報(bào)A090錯(cuò)誤代碼,確認(rèn)注冊(cè)碼激活成功,如圖36所示。
圖36 注冊(cè)碼激活成功
6. CP進(jìn)行Modbus TCP通訊FB輸出常見(jiàn)故障代碼及處理
STATUS(Hex) |
故障原因 |
處理措施 |
FB MODBUS故障 |
||
A002 |
Modbus起始地址Start_x錯(cuò)誤 |
由通訊伙伴確認(rèn)起始地址 |
A003 |
Modbus地址映射的DB塊的數(shù)據(jù)區(qū)長(zhǎng)度太短,最低長(zhǎng)度: -寄存器: (START_ADDRESS – start_x + LENGTH) * 2 -位 (START_ADDRESS – start_x + LENGTH) / 8 其他可能的原因: ·參數(shù)初始化錯(cuò)誤(CP為Client時(shí)) ·客戶端請(qǐng)求報(bào)文時(shí)錯(cuò)誤的地址區(qū)域(CP為Server) |
擴(kuò)展DB區(qū)域 當(dāng)CP為Client時(shí),修改參數(shù)START-ADDRESS或者LENGTH 當(dāng)CP為Server時(shí),修改客戶端的請(qǐng)求 |
A004 |
僅在CP為Client時(shí)才有此故障: 參數(shù)DATA_TYPE及WRITE_READ設(shè)置不匹配,不可能對(duì)輸入寄存器或離散輸入進(jìn)行寫(xiě)操作 |
修改此兩個(gè)參數(shù) |
A005 |
CP為Client時(shí): 參數(shù)LENGTH設(shè)置無(wú)效 CP為Server時(shí): Client請(qǐng)求的寄存器號(hào)無(wú)效,合法的數(shù)據(jù)類型范圍如下: 讀線圈/離散輸入: 1 to 2000 寫(xiě)線圈: 1 to 1968 讀寄存器: 1 to 125 寫(xiě)保持寄存器: 1 to 123 |
CP為Client時(shí): 修改參數(shù)LENGTH CP為Server時(shí): 修改Client請(qǐng)求的數(shù)據(jù)類型范圍 |
A006 |
CP為客戶端時(shí): 數(shù)據(jù)區(qū)1-8中對(duì)應(yīng)的Modbus地址范圍(DATA_TYPE, START_ADDRESS和 LENGTH )不存在 CP為服務(wù)器時(shí): 客戶端請(qǐng)求的報(bào)文不正確 |
CP為Client時(shí): 修改參數(shù)DATA_TYPE,START_ADDRESS和 LENGTH CP為Server時(shí): 修改Client 請(qǐng)求或修改數(shù)據(jù)類型data_type_x.
|
A007 |
CP為Client時(shí): 參數(shù)MONITOR監(jiān)控時(shí)間設(shè)置無(wú)效,值必須>20ms |
修改參數(shù)MONITOR |
A008 |
接收監(jiān)控超時(shí),可能的原因: 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 對(duì)于MODBUSCP V1.x: 同步錯(cuò)誤,報(bào)文丟失 |
檢查通訊伙伴的參數(shù)設(shè)置,如單元標(biāo)識(shí)符等 |
A009 |
當(dāng)CP為Client時(shí),接收標(biāo)識(shí)符TI與發(fā)送不一致, 連接將終止和重新建立 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 |
通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文
|
A00A |
CP為Client時(shí),接收參數(shù)UNIT 與發(fā)送的不一致,連接將終止和重新建立 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 |
|
A00B |
CP為Client時(shí): 接收與發(fā)送功能碼不一致 CP為Server時(shí): 無(wú)效的功能碼被接收 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 對(duì)于MODBUSCP V1.x: 同步錯(cuò)誤,報(bào)文丟失 |
CP為Client時(shí): 通過(guò)抓包工具來(lái)分析和修正通訊伙伴的數(shù)據(jù)報(bào)文格式 CP為Server時(shí): 注意FB MODBUS僅支持功能碼FC1、2、3、4、5、6、15、16 |
A00C |
接收到的字節(jié)長(zhǎng)度與寄存器/位不匹配 CP為服務(wù)器時(shí),CP將發(fā)一個(gè)響應(yīng)異常給客戶端 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 |
通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文
|
A00D |
僅在CP 為Client 時(shí)發(fā)生: 響應(yīng)的MODBUS寄存器/位地址或長(zhǎng)度與客戶端請(qǐng)求的不一致 |
|
A00E |
MODBUS報(bào)文報(bào)頭的長(zhǎng)度與寄存器/位 不匹配,FB將忽略 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 對(duì)于MODBUSCP V1.x: 同步錯(cuò)誤,報(bào)文丟失 |
|
A00F |
非0的協(xié)議標(biāo)識(shí)符報(bào)文被接收 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 對(duì)于MODBUSCP V1.x: 同步錯(cuò)誤,報(bào)文丟失 |
|
A010 |
數(shù)據(jù)區(qū)1-8 DB塊號(hào)重復(fù)使用 |
確保每個(gè)Db塊號(hào)只使用一次 |
A011 |
DATA_TYPE參數(shù)設(shè)置(范圍為1-4) |
修改DATA_TYPE參數(shù) |
A012 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_2設(shè)置重疊
|
數(shù)據(jù)區(qū)不能有重疊的modbus地址區(qū)域 |
A013 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_3設(shè)置重疊 |
修改此參數(shù) |
A014 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_4設(shè)置重疊 |
|
A015 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_5設(shè)置重疊 |
|
A016 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_6設(shè)置重疊 |
|
A017 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_7設(shè)置重疊 |
|
A018 |
數(shù)據(jù)區(qū)參數(shù)data_type_1和data_type_8設(shè)置重疊 |
|
A019 |
當(dāng)參數(shù)data_type_x設(shè)置不為0時(shí),db_x被賦值0 |
db_x不能為0 |
A01A |
報(bào)頭中長(zhǎng)度錯(cuò)誤: 范圍3-253字節(jié) 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 |
通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文
|
A01B |
CP為Server及使用功能碼FC05時(shí): 接收的線圈值無(wú)效 CP將發(fā)送異常報(bào)文 |
|
A01E |
CP接收到無(wú)法識(shí)別的數(shù)據(jù), 對(duì)于MODBUSCP V2.x: 所有通過(guò)502端口的連接激將中斷并重新建立 對(duì)于MODBUSCP V1.x: 同步錯(cuò)誤,報(bào)文丟失 |
分析錯(cuò)誤信息,通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文 |
A01F |
功能塊FB MBBUSCP返回一個(gè)無(wú)效的狀態(tài) |
聯(lián)系產(chǎn)品供貨商 |
A020 |
參數(shù)Check_conn_cycle設(shè)置<1s時(shí),對(duì)于功能塊AG_CNTRL過(guò)短 |
當(dāng)為Client模式時(shí),參數(shù)Check_conn_cycle=TRUE下Check_conn_cycle設(shè)置需要>1s; 當(dāng)為Server模式時(shí),Check_conn_cycle設(shè)置需要>1s; |
A023 |
數(shù)據(jù)區(qū)參數(shù)data_type_2和data_type_3設(shè)置重疊
|
數(shù)據(jù)區(qū)不能有重疊的modbus地址區(qū)域 |
A024 |
數(shù)據(jù)區(qū)參數(shù)data_type_2和data_type_4設(shè)置重疊 |
|
A025 |
數(shù)據(jù)區(qū)參數(shù)data_type_2和data_type_5設(shè)置重疊 |
|
A026 |
數(shù)據(jù)區(qū)參數(shù)data_type_2和data_type_6設(shè)置重疊 |
|
A027 |
數(shù)據(jù)區(qū)參數(shù)data_type_2和data_type_7設(shè)置重疊 |
|
A028 |
數(shù)據(jù)區(qū)參數(shù)data_type_2和data_type_8設(shè)置重疊 |
|
A034 |
數(shù)據(jù)區(qū)參數(shù)data_type_3和data_type_4設(shè)置重疊 |
|
A035 |
數(shù)據(jù)區(qū)參數(shù)data_type_3和data_type_5設(shè)置重疊 |
|
A036 |
數(shù)據(jù)區(qū)參數(shù)data_type_3和data_type_6設(shè)置重疊 |
|
A037 |
數(shù)據(jù)區(qū)參數(shù)data_type_3和data_type_7設(shè)置重疊 |
|
A038 |
數(shù)據(jù)區(qū)參數(shù)data_type_3和data_type_8設(shè)置重疊 |
|
A045 |
數(shù)據(jù)區(qū)參數(shù)data_type_4和data_type_5設(shè)置重疊 |
|
A046 |
數(shù)據(jù)區(qū)參數(shù)data_type_4和data_type_6設(shè)置重疊 |
|
A047 |
數(shù)據(jù)區(qū)參數(shù)data_type_4和data_type_7設(shè)置重疊 |
|
A048 |
數(shù)據(jù)區(qū)參數(shù)data_type_4和data_type_8設(shè)置重疊 |
|
A056 |
數(shù)據(jù)區(qū)參數(shù)data_type_5和data_type_6設(shè)置重疊 |
|
A057 |
數(shù)據(jù)區(qū)參數(shù)data_type_5和data_type_7設(shè)置重疊 |
|
A058 |
數(shù)據(jù)區(qū)參數(shù)data_type_5和data_type_8設(shè)置重疊 |
|
A067 |
數(shù)據(jù)區(qū)參數(shù)data_type_6和data_type_7設(shè)置重疊 |
|
A068 |
數(shù)據(jù)區(qū)參數(shù)data_type_6和data_type_8設(shè)置重疊 |
|
A068 |
數(shù)據(jù)區(qū)參數(shù)data_type_7和data_type_8設(shè)置重疊 |
|
A07A |
參數(shù)id設(shè)置無(wú)效:范圍1-64 |
修改參數(shù)id |
A07C |
參數(shù)data_type_1設(shè)置無(wú)效:范圍0-4 |
修改參數(shù)data_type_x |
A07D |
參數(shù)data_type_1未定義,data_type_1為缺省的使用數(shù)據(jù)區(qū),需要定義 |
修改參數(shù)data_type_1 |
A07E |
參數(shù)db_x值與背景DB中的值不一致 |
修改參數(shù)db_x |
A080 |
在OB1和OB100調(diào)用FB MODBUS功能塊時(shí)使用了不同的背景DB |
需要使用相同的背景DB |
A081 |
CP為Client且使用FC05功能碼時(shí): 接收的線圈狀態(tài)與發(fā)送不一致 |
通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文 |
A082 |
CP為Client且使用FC06功能碼時(shí): 接收的寄存器值與發(fā)送不一致 |
通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文 |
A083 |
僅在CP為Client時(shí):在上一個(gè)請(qǐng)求還沒(méi)有處理完成時(shí)又發(fā)送新的請(qǐng)求 |
等待DONE =TRUE 或 ERROR = TRUE后再發(fā)送新請(qǐng)求 |
A085 |
在授權(quán)期間由于無(wú)效的寫(xiě)權(quán)限導(dǎo)致發(fā)生錯(cuò)誤 |
對(duì)于授權(quán)DB,確認(rèn)參數(shù)REG_KEY的結(jié)構(gòu)是否正確 |
A090 |
功能塊未授權(quán),此為一狀態(tài)信息,參數(shù)ERROR并不會(huì)置1,功能塊在未授權(quán)情況仍然可以運(yùn)行而不影響通訊 |
針對(duì)CPU讀出預(yù)授權(quán)解碼,之后按照授權(quán)操作向IT4industry.部門(mén)索取授權(quán)碼 |
A091 |
收到異常響應(yīng)碼1(僅在Client模式),連接將終止和重新建立 |
通訊伙伴不支持請(qǐng)求的報(bào)文 |
A092 |
收到異常響應(yīng)碼2(僅在Client模式),無(wú)效的或不存在的地址請(qǐng)求 |
確認(rèn)參數(shù)LENGTH 或START_ADDRESS 是否正確 |
A093 |
收到異常響應(yīng)碼3(僅在Client模式) |
通訊伙伴無(wú)法執(zhí)行報(bào)文接收(例如請(qǐng)求長(zhǎng)度不支持等) |
A094 |
收到異常響應(yīng)碼4(僅在Client模式) |
通訊伙伴無(wú)法執(zhí)行報(bào)文接收 |
A095 |
收到未知的異常響應(yīng)碼(僅在Client模式) |
通過(guò)抓包工具來(lái)分析和修正通訊伙伴的報(bào)文 |
FC/SFC故障 |
||
7xxx |
請(qǐng)參考SIMATIC的在線幫助 |
通過(guò)在線幫助SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code buation可以查到相關(guān)幫助信息 |
8xxx |
請(qǐng)參考SIMATIC的在線幫助 |
通過(guò)在線幫助SIMATIC manager -> mark block -> key F1 –> Ethernet -> see also -> code buation可以查到相關(guān)幫助信息 |
SFC24故障 |
||
80A1 |
DB=0或超出了CPU允許的范圍 |
選擇有效的DB |
80B2 |
DB塊在CPU中不存在 |
DB_x參數(shù)中的DB塊必須創(chuàng)建并下載到CPU中 |
80B3 |
DB塊被創(chuàng)建為“Unbed”類型 |
DB塊不能創(chuàng)建為“Unbed”類型 |
硬件列表
設(shè)備名稱 |
設(shè)備型號(hào) |
PS 307 |
6ES7 307-1EA01-0AA0 |
CPU 319-3PN/ DP |
6ES7 318-3EL00-0AB0 |
MMC |
6ES7 953-8LG30-0AA0 |
CP341 |
6ES7 341-1CH02-0AE0 |
Dongle |
6ES7 870-1AB01-0YA0 |
應(yīng)用CP341進(jìn)行 MODBUS協(xié)議通信時(shí)需要有Dongle的支持。在使用之前先將Dongle安裝在CP341模塊的背面的Dongle插槽中,Dongle和插入Dongle前后的CP341如下圖所示。
圖1
組態(tài)和配置
1、打開(kāi)軟件TIA PORTAL
圖2
STEP7 V13,點(diǎn)擊項(xiàng)目->新建...創(chuàng)建一新項(xiàng)目,項(xiàng)目名稱為341_modbus_Master。
2、用鼠標(biāo)點(diǎn)擊“添加新設(shè)備”,選擇SIMATIC S7-300->CPU->CPU 319-3PN/DP->6ES7 318-3EL00-0AB0。
圖3
3、雙擊“設(shè)備組態(tài)”進(jìn)入硬件組態(tài)界面,導(dǎo)軌RACK和CPU 319-3PN/DP已經(jīng)存在,只需要插入PS307和CP341。
圖4
4、雙擊CP341模板,進(jìn)入CP341的屬性框,配置CP341參數(shù)。
圖5
5、在“協(xié)議”選項(xiàng)中選擇“Modbus主站”。配置modbus通信參數(shù),設(shè)定的通信參數(shù)要和通訊伙伴的相同。傳輸率(通信波特率):9600bps,數(shù)據(jù)位:8位,停止位:1位,奇偶校驗(yàn):無(wú)。
圖6
6、本示例選用的是RS422/485接口的CP341,還需要設(shè)置接口屬性,如下圖所示。
圖7
編寫(xiě)通信程序
1、雙擊“添加新塊”,創(chuàng)建發(fā)送數(shù)據(jù)塊DB10和接收數(shù)據(jù)塊DB11,發(fā)送數(shù)據(jù)塊的名稱為Send,接收數(shù)據(jù)塊的名稱為Rev;如下圖所示,發(fā)送數(shù)據(jù)塊中新建幾個(gè)變量,從站地址為2,功能碼為3,起始地址為0,讀4個(gè)寄存器數(shù)據(jù),具體功能碼3 的使用參見(jiàn)手冊(cè)“S7串行通信模板Modbus RTU主站可裝載驅(qū)動(dòng)的操作說(shuō)明” 6.3章節(jié)的說(shuō)明;如下圖所示,接受數(shù)據(jù)塊中新建1個(gè)數(shù)據(jù)類型Array的變量,數(shù)組元素的數(shù)據(jù)類型為Byte,數(shù)量為400。
圖8
圖9
2、進(jìn)入主程序OB1,從通信->通信處理器->PtP鏈接:CP341,調(diào)用發(fā)送功能塊P_SND_RK和接收功能塊P_RCV_RK。P_SND_RK的背景數(shù)據(jù)塊為DB1,P_RCV_RK的背景數(shù)據(jù)塊為DB2。
圖10
CP341的發(fā)送功能塊P_SND_RK 的參數(shù)設(shè)置見(jiàn)下表。
管腳 |
解釋描述 |
SF |
‘S’為發(fā)送,此處必須為大寫(xiě)的‘S’ |
LADDR |
硬件組態(tài)中的起始邏輯地址,本例中為256,見(jiàn)圖11。 |
REQ |
發(fā)送數(shù)據(jù)觸發(fā)位,上升沿觸發(fā),本例中為M0.5,為時(shí)鐘存儲(chǔ)器的位,見(jiàn)圖12。 |
DB_NO |
發(fā)送數(shù)據(jù)塊號(hào),本例中為10(DB10) |
DBB_NO |
發(fā)送數(shù)據(jù)的起始地址,本例中為0(DB10.DBB0) |
LEN |
發(fā)送數(shù)據(jù)的長(zhǎng)度,本例中為6 |
R_TYP |
‘X’為擴(kuò)展的數(shù)據(jù)塊,此處必須為大寫(xiě)的‘X’ |
R |
取消通訊,本例中不用 |
DONE |
發(fā)送完成位,發(fā)送完成后為T(mén)RUE,同時(shí)沒(méi)有錯(cuò)誤 |
ERROR |
錯(cuò)誤位,為T(mén)RUE說(shuō)明有錯(cuò)誤 |
STATUS |
狀態(tài)字,標(biāo)識(shí)錯(cuò)誤代碼,查看Modbus Master手冊(cè)獲得相應(yīng)的說(shuō)明 |
其它參數(shù) |
本例中不用 |
CP341的接收功能塊P_RCV_RK 的參數(shù)設(shè)置見(jiàn)下表。
管腳 |
解釋描述 |
LADDR |
硬件組態(tài)中的起始邏輯地址,本例中為256,見(jiàn)圖11。 |
DB_NO |
發(fā)送數(shù)據(jù)塊號(hào),本例中為11(DB11)。 |
DBB_NO |
發(fā)送數(shù)據(jù)的起始地址,本例中為0(DB11.DBB0)。 |
LEN |
接收數(shù)據(jù)的長(zhǎng)度,本例中為MW22,只顯示一個(gè)掃描周期,即:只有在接收到數(shù)據(jù)的當(dāng)前周期,此值不為0。 |
EN_R |
使能接收位,本例中為M20.0,常閉點(diǎn), 始終保持接收狀態(tài)。 |
R |
取消通訊,本例中不用。 |
NDR |
接收完成位,接收完成并沒(méi)有錯(cuò)誤為T(mén)RUE,只顯示一個(gè)掃描周期。 |
ERROR |
錯(cuò)誤位,為T(mén)RUE說(shuō)明有錯(cuò)誤,只顯示一個(gè)掃描周期。 |
STATUS |
狀態(tài)字,標(biāo)識(shí)錯(cuò)誤代碼,只顯示一個(gè)掃描周期,查看Modbus Master手冊(cè)獲得相應(yīng)的說(shuō)明。 |
其它參數(shù) |
本例中不用 |
圖11
圖12
設(shè)備連接
本文檔使用的CP341的接口是RS232C,因此需要通過(guò)標(biāo)準(zhǔn)的RS232C電纜來(lái)連接CP341和計(jì)算機(jī)的串口.
具體的電纜連接方法請(qǐng)查看:串口接線
如果使用的CP341是RS485接口的模塊,需要使用RS232C/RS485轉(zhuǎn)換器(需要選購(gòu)第三方設(shè)備)。
通信測(cè)試
前面使用 TIA Step7 軟件已經(jīng)將通信CP341的通信工作做完,下面進(jìn)行通信測(cè)試。這里使用串口通訊測(cè)試軟件ModSim32軟件來(lái)測(cè)試CP341和計(jì)算機(jī)的通信,步驟如下
1、雙擊ModSim32軟件圖標(biāo),新建項(xiàng)目,點(diǎn)擊Port1,進(jìn)入端口1做設(shè)置,本例計(jì)算機(jī)只有一個(gè)端口,所以就對(duì)端口1做設(shè)置,如果計(jì)算機(jī)有多個(gè)端口,要注意所選端口。
圖13
2、進(jìn)入Port1設(shè)置界面,設(shè)置波特率、數(shù)據(jù)位、奇偶校驗(yàn)等參數(shù),要和CP341的參數(shù)相同。
圖14
3、點(diǎn)擊“OK”,選擇軟件的03功能碼界面,本例設(shè)置03功能碼的10個(gè)數(shù)據(jù),其中前4個(gè)數(shù)據(jù)分別設(shè)置成1—4。
圖15
4、首先將硬件配置和程序下載到CPU319-3PN/DP中,時(shí)鐘脈沖信號(hào)M0.5從0跳變成1時(shí),CP341將數(shù)據(jù)發(fā)送出去。
圖16
5、M20.0為常閉點(diǎn),程序下載完成,CPU運(yùn)行后,就始終處于接收狀態(tài)。在STEP7中打開(kāi)接收數(shù)據(jù)塊DB11監(jiān)控接收到的數(shù)據(jù),可以看到發(fā)送的數(shù)據(jù)被正確的接收。
圖17
手冊(cè)下載
更詳細(xì)的資料請(qǐng)參看如下手冊(cè):
長(zhǎng)沙 西門(mén)子 6ES7390-1BC00-0AA0