1.概述
介紹
SIMATIC S7- PN CPU包含一個集成的PROFINET接口,該接口除了具有PROFINET I/O功能外還具有TCP通信功能。通過該集成以太網接口組態TCP通信時,只能使用開放式通信專用的功能塊。依據RFC793的TCP協議,在STEP7”通訊塊”的“標準庫”(圖1所示)中提供了下列FB,通過用戶程序與符合以太網標準的通訊伙伴進行數據交換:
·用于分配連接參數的UDT 65 "TCON_PAR"
·用于建立連接的FB 65 "TCON"
·用于終止連接的FB 66 "TDISCON"
·用于發送數據的FB 63 "TSEND"
·用于接收數據的FB 64 "TRCV"
解決方案
要通過S7-PN CPU的集成PROFINET接口實現開放的TCP通信,不能在硬件組態中完成,必須在一個數據塊中指定每個連接的參數。使用“Open Communication Wizard”工具可以簡單明了地指定連接參數,該工具可將一個包含所有參數的UDT導出到您的STEP項目中。使用該UDT可建立含有連接描述的數據塊。隨后,需使用通信功能塊FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND"和FB64 "TRCV"完成程序的編寫。
2.系統配置
CPU采用兩個315-2PN/DP,使用以太網進行通信,網絡拓撲如圖2所示:
圖2
3.配置OPEN Communication Wizard
首先使用STEP7創建一個項目,名稱為open_TCP_wizard,建立兩個315PN/DP站。安裝并打開向導。從路徑“開始àSimaticàOpen Communication WizardàOpen Communication Wizard”打開向導。打開后如圖3所示,點擊下一步:
圖3
在圖4中選擇STEP7項目以及塊文件夾,點擊下一步,如圖5所示:
圖4
圖5
在圖5中選擇New,然后點擊下一步,如圖6所示:
圖6
在圖6中選擇TCP native,點擊下一步,如圖7所示:
圖7
點擊下一步,如圖8所示:
圖8
在圖8中設置兩個315PN/DP的“Connection ID”“Connection name”“Connection establishment”“IP address”“Used interface”,在本例中,將partner A設置為Active,即為客戶端。Partner B設置為Passive,即為服務器端。對于“Unspecified connection partner”,如果選中,則服務器端不指定客戶端的IP地址;如果不選中,則服務器端指定客戶端的IP地址。點擊下一步,如圖9所示:
圖9
在圖9中設定partnet B的端口號,本例中設置為2000。點擊下一步,如圖10所示:
圖10
在圖10中分別定義用于TCP通信的數據連接結構的名稱UDT65,以及在項目open_TCP_wizard中選擇塊文件夾。點擊下一步如圖11所示,再點擊下一步如圖12所示:
圖11
圖12
編譯無誤后如圖13所示:
圖13
點擊Finish完成向導的配置。這樣在項目open_TCP_wizard的塊中生成了UDT65,如圖14所示。
圖14
4.在STEP7中為項目open_TCP_wizard編寫程序
首先為Active端編寫程序。在SIMATIC 315PN-1的塊中創建DB101,定義一個變量DB_VAR,變量類型為UDT65。如圖15所示。
圖15
在OB1中依次調用FB65,FB63,FB64,FB66,如圖16,17,18,19所示:
圖16
程序中的參數說明見表1
參數名 | 參數說明 |
REQ | 上升沿觸發建立通信連接 |
ID | 連接ID |
CONNECT | 與變量類型為UDT65的變量相連 |
DONE | 為1時,連接正確建立 |
BUSY | 為1時,正建立連接 |
ERROR | 為1時,有故障發生 |
STATUS | 故障代碼 |
表1 FB65參數說明
圖17
程序中的參數說明見表2
參數名 | 參數說明 |
REQ | 上升沿觸發 |
ID | 連接ID |
LEN | 數據發送的最大長度 |
DATA | 數據發送的區域 |
DONE | 為1時,連接正確建立 |
BUSY | 為1時,正建立連接 |
ERROR | 為1時,有故障發生 |
STATUS | 故障代碼 |
表2 FB63參數說明
圖18
程序中的參數說明見表3
參數名 | 參數說明 |
EN_R | 為1時使能 |
ID | 連接ID |
LEN | 接收區域的長度 |
DATA | 接收數據區 |
NDR | 為1時,接收完成 |
BUSY | 為1時,正在接收 |
ERROR | 為1時,有故障發生 |
STATUS | 故障代碼 |
RCVD_LEN | 實際接收的數據長度 |
表3 FB64參數說明
圖19
程序中的參數說明見表4
參數名 | 參數說明 |
REQ | 上升沿觸發 |
ID | 連接ID |
DONE | 為1時,斷開連接完成 |
BUSY | 為1時,正斷開連接 |
ERROR | 為1時,有故障發生 |
STATUS | 故障代碼 |
表4 FB66參數說明
OB1編寫完成后,SIMATIC 315PN-1的程序塊如圖20所示:
圖20
同理,為SIMATIC 315PN-2站編寫程序,與SIMATIC 315PN-1類似,在DB101中定義數據類型為UDT65的變量,在OB1中調用FB65,FB63,FB64,FB66。將硬件組態和程序分別下到兩個S7300站中。
在cpu運行的情況下分別監控兩個站OB1的狀態。首先在兩個站的FB65中,將“REQ”置1,使連接建立。然后將SIMATIC 315PN-1 MB100-MB109賦值B#16#12,同時在SIMATIC 315PN-2站中將FB64的EN_R置1,接著在SIMATIC 315PN-1的FB63中,將M0.2設置上升沿信號,此時SIMATIC 315PN-2站的MB200-MB209接收到來自SIMATIC 315PN-1站的數據B#16#12,如圖21所示:
圖21
同樣的操作,將SIMATIC 315PN-2的MB100-MB109賦值B#16#03,SIMATIC 315PN-1的MB200-MB209接收到B#16#03,圖22所示。
圖22
5.常見問題
接收區的長度怎么指定?
如果LEN不為0,區域長度由LEN的值指定;如果LEN為0,則由DATA參數長度信息指定。
接收功能塊FB64的參數LEN怎么設置?
答:接收器無法檢測數據流中的某條消息在何處結束以及下一條消息在何處開始。因此,建議將通訊伙伴接收功能塊FB64的參數LEN設置為發送方FB63參數LEN的值,即通信雙方發送區的長度與對方接收區的長度保持一致。
FB64有時顯示故障代碼80A1?
答:通信雙方的通信連接未成功建立,先執行FB66,然后再次調用FB65。
FB65的DONE為什么一直為0?
答:在連接建立的很短時間內DONE為1,然后復位到0,所以無法監控1的狀態。可以通過采集它的上升沿信號來獲取。
FB65顯示故障代碼873A?
答:功能塊沒有正確關聯變量類型為UDT65的參數。檢查所定義的變量以及相應的DB塊。
審核編輯:湯梓紅
-
cpu
+關注
關注
68文章
11054瀏覽量
216261 -
TCP
+關注
關注
8文章
1399瀏覽量
80534 -
S7-300
+關注
關注
8文章
225瀏覽量
34905 -
STEP7
+關注
關注
4文章
103瀏覽量
33100
原文標題:S7-300 PN CPU之間的 TCP 通信(STEP7)
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
S7-300與第三方的TCP通信_Server(STEP7)
S7-1200與S7-300 PN口之間的以太網通信方法
S7-1200與S7-300 PN/S7-400 PN UDP STEP7通信
使用S7-1200與S7-300的集成DP接口進行主從通信
STEP7 5.5中對S7-300 CPU程序的上載過程
S7-300與第三方的TCP通信_Server(STEP7)
S7-300集成DP口與S7-200的DP主從通信設計實現
在STEP7 5.5中對S7-300 CPU程序的上載過程
S7-300/400集成PN口 MODBUS TCP通訊(TIA)
S7-1200 CPU與S7-300 CP STEP7 UDP通信
S7-1200 CPU與S7-300 CP TIA UDP通信
淺談S7-300 CPU集成PN口配置的Modbus TCP通訊技術

評論