1.概述
介紹
SIMATIC S7- PN CPU包含一個(gè)集成的PROFINET接口,該接口除了具有PROFINET I/O功能外還具有TCP通信功能。通過(guò)該集成以太網(wǎng)接口組態(tài)TCP通信時(shí),只能使用開(kāi)放式通信專用的功能塊。依據(jù)RFC793的TCP協(xié)議,在STEP7”通訊塊”的“標(biāo)準(zhǔn)庫(kù)”(圖1所示)中提供了下列FB,通過(guò)用戶程序與符合以太網(wǎng)標(biāo)準(zhǔn)的通訊伙伴進(jìn)行數(shù)據(jù)交換:
·用于分配連接參數(shù)的UDT 65 "TCON_PAR"
·用于建立連接的FB 65 "TCON"
·用于終止連接的FB 66 "TDISCON"
·用于發(fā)送數(shù)據(jù)的FB 63 "TSEND"
·用于接收數(shù)據(jù)的FB 64 "TRCV"

解決方案
要通過(guò)S7-PN CPU的集成PROFINET接口實(shí)現(xiàn)開(kāi)放的TCP通信,不能在硬件組態(tài)中完成,必須在一個(gè)數(shù)據(jù)塊中指定每個(gè)連接的參數(shù)。使用“Open Communication Wizard”工具可以簡(jiǎn)單明了地指定連接參數(shù),該工具可將一個(gè)包含所有參數(shù)的UDT導(dǎo)出到您的STEP項(xiàng)目中。使用該UDT可建立含有連接描述的數(shù)據(jù)塊。隨后,需使用通信功能塊FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND"和FB64 "TRCV"完成程序的編寫。
2.系統(tǒng)配置
CPU采用兩個(gè)315-2PN/DP,使用以太網(wǎng)進(jìn)行通信,網(wǎng)絡(luò)拓?fù)淙鐖D2所示:

圖2
3.配置OPEN Communication Wizard
首先使用STEP7創(chuàng)建一個(gè)項(xiàng)目,名稱為open_TCP_wizard,建立兩個(gè)315PN/DP站。安裝并打開(kāi)向?qū)?。從路徑“開(kāi)始àSimaticàOpen Communication WizardàOpen Communication Wizard”打開(kāi)向?qū)?。打開(kāi)后如圖3所示,點(diǎn)擊下一步:

圖3
在圖4中選擇STEP7項(xiàng)目以及塊文件夾,點(diǎn)擊下一步,如圖5所示:

圖4

圖5
在圖5中選擇New,然后點(diǎn)擊下一步,如圖6所示:

圖6
在圖6中選擇TCP native,點(diǎn)擊下一步,如圖7所示:

圖7
點(diǎn)擊下一步,如圖8所示:

圖8
在圖8中設(shè)置兩個(gè)315PN/DP的“Connection ID”“Connection name”“Connection establishment”“IP address”“Used interface”,在本例中,將partner A設(shè)置為Active,即為客戶端。Partner B設(shè)置為Passive,即為服務(wù)器端。對(duì)于“Unspecified connection partner”,如果選中,則服務(wù)器端不指定客戶端的IP地址;如果不選中,則服務(wù)器端指定客戶端的IP地址。點(diǎn)擊下一步,如圖9所示:

圖9
在圖9中設(shè)定partnet B的端口號(hào),本例中設(shè)置為2000。點(diǎn)擊下一步,如圖10所示:

圖10
在圖10中分別定義用于TCP通信的數(shù)據(jù)連接結(jié)構(gòu)的名稱UDT65,以及在項(xiàng)目open_TCP_wizard中選擇塊文件夾。點(diǎn)擊下一步如圖11所示,再點(diǎn)擊下一步如圖12所示:

圖11

圖12
編譯無(wú)誤后如圖13所示:

圖13
點(diǎn)擊Finish完成向?qū)У呐渲?。這樣在項(xiàng)目open_TCP_wizard的塊中生成了UDT65,如圖14所示。

圖14
4.在STEP7中為項(xiàng)目open_TCP_wizard編寫程序
首先為Active端編寫程序。在SIMATIC 315PN-1的塊中創(chuàng)建DB101,定義一個(gè)變量DB_VAR,變量類型為UDT65。如圖15所示。

圖15
在OB1中依次調(diào)用FB65,F(xiàn)B63,F(xiàn)B64,F(xiàn)B66,如圖16,17,18,19所示:

圖16
程序中的參數(shù)說(shuō)明見(jiàn)表1
| 參數(shù)名 | 參數(shù)說(shuō)明 |
| REQ | 上升沿觸發(fā)建立通信連接 |
| ID | 連接ID |
| CONNECT | 與變量類型為UDT65的變量相連 |
| DONE | 為1時(shí),連接正確建立 |
| BUSY | 為1時(shí),正建立連接 |
| ERROR | 為1時(shí),有故障發(fā)生 |
| STATUS | 故障代碼 |
表1 FB65參數(shù)說(shuō)明

圖17
程序中的參數(shù)說(shuō)明見(jiàn)表2
| 參數(shù)名 | 參數(shù)說(shuō)明 |
| REQ | 上升沿觸發(fā) |
| ID | 連接ID |
| LEN | 數(shù)據(jù)發(fā)送的最大長(zhǎng)度 |
| DATA | 數(shù)據(jù)發(fā)送的區(qū)域 |
| DONE | 為1時(shí),連接正確建立 |
| BUSY | 為1時(shí),正建立連接 |
| ERROR | 為1時(shí),有故障發(fā)生 |
| STATUS | 故障代碼 |
表2 FB63參數(shù)說(shuō)明

圖18
程序中的參數(shù)說(shuō)明見(jiàn)表3
| 參數(shù)名 | 參數(shù)說(shuō)明 |
| EN_R | 為1時(shí)使能 |
| ID | 連接ID |
| LEN | 接收區(qū)域的長(zhǎng)度 |
| DATA | 接收數(shù)據(jù)區(qū) |
| NDR | 為1時(shí),接收完成 |
| BUSY | 為1時(shí),正在接收 |
| ERROR | 為1時(shí),有故障發(fā)生 |
| STATUS | 故障代碼 |
| RCVD_LEN | 實(shí)際接收的數(shù)據(jù)長(zhǎng)度 |
表3 FB64參數(shù)說(shuō)明

圖19
程序中的參數(shù)說(shuō)明見(jiàn)表4
| 參數(shù)名 | 參數(shù)說(shuō)明 |
| REQ | 上升沿觸發(fā) |
| ID | 連接ID |
| DONE | 為1時(shí),斷開(kāi)連接完成 |
| BUSY | 為1時(shí),正斷開(kāi)連接 |
| ERROR | 為1時(shí),有故障發(fā)生 |
| STATUS | 故障代碼 |
表4 FB66參數(shù)說(shuō)明
OB1編寫完成后,SIMATIC 315PN-1的程序塊如圖20所示:

圖20
同理,為SIMATIC 315PN-2站編寫程序,與SIMATIC 315PN-1類似,在DB101中定義數(shù)據(jù)類型為UDT65的變量,在OB1中調(diào)用FB65,F(xiàn)B63,F(xiàn)B64,F(xiàn)B66。將硬件組態(tài)和程序分別下到兩個(gè)S7300站中。
在cpu運(yùn)行的情況下分別監(jiān)控兩個(gè)站OB1的狀態(tài)。首先在兩個(gè)站的FB65中,將“REQ”置1,使連接建立。然后將SIMATIC 315PN-1 MB100-MB109賦值B#16#12,同時(shí)在SIMATIC 315PN-2站中將FB64的EN_R置1,接著在SIMATIC 315PN-1的FB63中,將M0.2設(shè)置上升沿信號(hào),此時(shí)SIMATIC 315PN-2站的MB200-MB209接收到來(lái)自SIMATIC 315PN-1站的數(shù)據(jù)B#16#12,如圖21所示:



圖21
同樣的操作,將SIMATIC 315PN-2的MB100-MB109賦值B#16#03,SIMATIC 315PN-1的MB200-MB209接收到B#16#03,圖22所示。



圖22
5.常見(jiàn)問(wèn)題
接收區(qū)的長(zhǎng)度怎么指定?
如果LEN不為0,區(qū)域長(zhǎng)度由LEN的值指定;如果LEN為0,則由DATA參數(shù)長(zhǎng)度信息指定。
接收功能塊FB64的參數(shù)LEN怎么設(shè)置?
答:接收器無(wú)法檢測(cè)數(shù)據(jù)流中的某條消息在何處結(jié)束以及下一條消息在何處開(kāi)始。因此,建議將通訊伙伴接收功能塊FB64的參數(shù)LEN設(shè)置為發(fā)送方FB63參數(shù)LEN的值,即通信雙方發(fā)送區(qū)的長(zhǎng)度與對(duì)方接收區(qū)的長(zhǎng)度保持一致。
FB64有時(shí)顯示故障代碼80A1?
答:通信雙方的通信連接未成功建立,先執(zhí)行FB66,然后再次調(diào)用FB65。
FB65的DONE為什么一直為0?
答:在連接建立的很短時(shí)間內(nèi)DONE為1,然后復(fù)位到0,所以無(wú)法監(jiān)控1的狀態(tài)??梢酝ㄟ^(guò)采集它的上升沿信號(hào)來(lái)獲取。
FB65顯示故障代碼873A?
答:功能塊沒(méi)有正確關(guān)聯(lián)變量類型為UDT65的參數(shù)。檢查所定義的變量以及相應(yīng)的DB塊。
審核編輯:湯梓紅
-
cpu
+關(guān)注
關(guān)注
68文章
11213瀏覽量
222758 -
TCP
+關(guān)注
關(guān)注
8文章
1417瀏覽量
82984 -
S7-300
+關(guān)注
關(guān)注
8文章
225瀏覽量
35548 -
STEP7
+關(guān)注
關(guān)注
4文章
103瀏覽量
33605
原文標(biāo)題:S7-300 PN CPU之間的 TCP 通信(STEP7)
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
西門子S7-200和S7-300進(jìn)行的以太網(wǎng)通信
S7-300與第三方的TCP通信_Server(STEP7)
S7-1200與S7-300 PN口之間的以太網(wǎng)通信方法
S7-1200與S7-300 PN/S7-400 PN UDP STEP7通信
使用S7-1200與S7-300的集成DP接口進(jìn)行主從通信
STEP7 5.5中對(duì)S7-300 CPU程序的上載過(guò)程
S7-300與第三方的TCP通信_Server(STEP7)
S7-300集成DP口與S7-200的DP主從通信設(shè)計(jì)實(shí)現(xiàn)
在STEP7 5.5中對(duì)S7-300 CPU程序的上載過(guò)程
S7-300/400集成PN口 MODBUS TCP通訊(TIA)
S7-1200 CPU與S7-300 CP STEP7 UDP通信
S7-1200 CPU與S7-300 CP TIA UDP通信
S7-1200與S7-300的選型區(qū)別
S7-300/400集成PN口MODBUS TCP通訊(STEP7)
淺談S7-300 CPU集成PN口配置的Modbus TCP通訊技術(shù)

S7-300 PN CPU之間的TCP通信(STEP7)
評(píng)論