1.概述
介紹
SIMATIC S7- PN CPU包含一個集成的PROFINET接口,該接口除了具有PROFINET I/O功能外還具有TCP通信功能。通過該集成以太網(wǎng)接口組態(tài)TCP通信時,只能使用開放式通信專用的功能塊。依據(jù)RFC793的TCP協(xié)議,在STEP7”通訊塊”的“標(biāo)準(zhǔn)庫”(圖1所示)中提供了下列FB,通過用戶程序與符合以太網(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"
解決方案
要通過S7-PN CPU的集成PROFINET接口實現(xiàn)開放的TCP通信,不能在硬件組態(tài)中完成,必須在一個數(shù)據(jù)塊中指定每個連接的參數(shù)。使用“Open Communication Wizard”工具可以簡單明了地指定連接參數(shù),該工具可將一個包含所有參數(shù)的UDT導(dǎo)出到您的STEP項目中。使用該UDT可建立含有連接描述的數(shù)據(jù)塊。隨后,需使用通信功能塊FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND"和FB64 "TRCV"完成程序的編寫。
2.系統(tǒng)配置
CPU采用兩個315-2PN/DP,使用以太網(wǎng)進(jìn)行通信,網(wǎng)絡(luò)拓?fù)淙鐖D2所示:
圖2
3.配置OPEN Communication Wizard
首先使用STEP7創(chuàng)建一個項目,名稱為open_TCP_wizard,建立兩個315PN/DP站。安裝并打開向?qū)?。從路徑“開始àSimaticàOpen Communication WizardàOpen Communication Wizard”打開向?qū)А4蜷_后如圖3所示,點擊下一步:
圖3
在圖4中選擇STEP7項目以及塊文件夾,點擊下一步,如圖5所示:
圖4
圖5
在圖5中選擇New,然后點擊下一步,如圖6所示:
圖6
在圖6中選擇TCP native,點擊下一步,如圖7所示:
圖7
點擊下一步,如圖8所示:
圖8
在圖8中設(shè)置兩個315PN/DP的“Connection ID”“Connection name”“Connection establishment”“IP address”“Used interface”,在本例中,將partner A設(shè)置為Active,即為客戶端。Partner B設(shè)置為Passive,即為服務(wù)器端。對于“Unspecified connection partner”,如果選中,則服務(wù)器端不指定客戶端的IP地址;如果不選中,則服務(wù)器端指定客戶端的IP地址。點擊下一步,如圖9所示:
圖9
在圖9中設(shè)定partnet B的端口號,本例中設(shè)置為2000。點擊下一步,如圖10所示:
圖10
在圖10中分別定義用于TCP通信的數(shù)據(jù)連接結(jié)構(gòu)的名稱UDT65,以及在項目open_TCP_wizard中選擇塊文件夾。點擊下一步如圖11所示,再點擊下一步如圖12所示:
圖11
圖12
編譯無誤后如圖13所示:
圖13
點擊Finish完成向?qū)У呐渲谩_@樣在項目open_TCP_wizard的塊中生成了UDT65,如圖14所示。
圖14
4.在STEP7中為項目open_TCP_wizard編寫程序
首先為Active端編寫程序。在SIMATIC 315PN-1的塊中創(chuàng)建DB101,定義一個變量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ù)說明見表1
參數(shù)名 | 參數(shù)說明 |
REQ | 上升沿觸發(fā)建立通信連接 |
ID | 連接ID |
CONNECT | 與變量類型為UDT65的變量相連 |
DONE | 為1時,連接正確建立 |
BUSY | 為1時,正建立連接 |
ERROR | 為1時,有故障發(fā)生 |
STATUS | 故障代碼 |
表1 FB65參數(shù)說明
圖17
程序中的參數(shù)說明見表2
參數(shù)名 | 參數(shù)說明 |
REQ | 上升沿觸發(fā) |
ID | 連接ID |
LEN | 數(shù)據(jù)發(fā)送的最大長度 |
DATA | 數(shù)據(jù)發(fā)送的區(qū)域 |
DONE | 為1時,連接正確建立 |
BUSY | 為1時,正建立連接 |
ERROR | 為1時,有故障發(fā)生 |
STATUS | 故障代碼 |
表2 FB63參數(shù)說明
圖18
程序中的參數(shù)說明見表3
參數(shù)名 | 參數(shù)說明 |
EN_R | 為1時使能 |
ID | 連接ID |
LEN | 接收區(qū)域的長度 |
DATA | 接收數(shù)據(jù)區(qū) |
NDR | 為1時,接收完成 |
BUSY | 為1時,正在接收 |
ERROR | 為1時,有故障發(fā)生 |
STATUS | 故障代碼 |
RCVD_LEN | 實際接收的數(shù)據(jù)長度 |
表3 FB64參數(shù)說明
圖19
程序中的參數(shù)說明見表4
參數(shù)名 | 參數(shù)說明 |
REQ | 上升沿觸發(fā) |
ID | 連接ID |
DONE | 為1時,斷開連接完成 |
BUSY | 為1時,正斷開連接 |
ERROR | 為1時,有故障發(fā)生 |
STATUS | 故障代碼 |
表4 FB66參數(shù)說明
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)和程序分別下到兩個S7300站中。
在cpu運行的情況下分別監(jiān)控兩個站OB1的狀態(tài)。首先在兩個站的FB65中,將“REQ”置1,使連接建立。然后將SIMATIC 315PN-1 MB100-MB109賦值B#16#12,同時在SIMATIC 315PN-2站中將FB64的EN_R置1,接著在SIMATIC 315PN-1的FB63中,將M0.2設(shè)置上升沿信號,此時SIMATIC 315PN-2站的MB200-MB209接收到來自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.常見問題
接收區(qū)的長度怎么指定?
如果LEN不為0,區(qū)域長度由LEN的值指定;如果LEN為0,則由DATA參數(shù)長度信息指定。
接收功能塊FB64的參數(shù)LEN怎么設(shè)置?
答:接收器無法檢測數(shù)據(jù)流中的某條消息在何處結(jié)束以及下一條消息在何處開始。因此,建議將通訊伙伴接收功能塊FB64的參數(shù)LEN設(shè)置為發(fā)送方FB63參數(shù)LEN的值,即通信雙方發(fā)送區(qū)的長度與對方接收區(qū)的長度保持一致。
FB64有時顯示故障代碼80A1?
答:通信雙方的通信連接未成功建立,先執(zhí)行FB66,然后再次調(diào)用FB65。
FB65的DONE為什么一直為0?
答:在連接建立的很短時間內(nèi)DONE為1,然后復(fù)位到0,所以無法監(jiān)控1的狀態(tài)。可以通過采集它的上升沿信號來獲取。
FB65顯示故障代碼873A?
答:功能塊沒有正確關(guān)聯(lián)變量類型為UDT65的參數(shù)。檢查所定義的變量以及相應(yīng)的DB塊。
審核編輯:湯梓紅
-
cpu
+關(guān)注
關(guān)注
68文章
10901瀏覽量
212667 -
TCP
+關(guān)注
關(guān)注
8文章
1378瀏覽量
79198 -
S7-300
+關(guān)注
關(guān)注
8文章
225瀏覽量
34356 -
STEP7
+關(guān)注
關(guān)注
4文章
103瀏覽量
32659
原文標(biāo)題:S7-300 PN CPU之間的 TCP 通信(STEP7)
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論