開放式用戶通信
CPU 的集成 PROFINET 端口支持多種以太網(wǎng)網(wǎng)絡(luò)上的通信標準:
● 傳輸控制協(xié)議 (TCP)
● ISO on TCP (RFC 1006)
● 用戶數(shù)據(jù)報協(xié)議 (UDP)
TCP 和 ISO on TCP
傳輸控制協(xié)議 (TCP) 是由 RFC 793 描述的一種標準協(xié)議:傳輸控制協(xié)議。TCP 的主要用途是在過程對之間提供可靠、安全的連接服務(wù)。該協(xié)議有以下特點:
● 由于它與硬件緊密相關(guān),因此它是一種高效的通信協(xié)議
● 它適合用于中等大小或較大的數(shù)據(jù)量(最多 8192 字節(jié))
● 它為應(yīng)用帶來了更多的便利,特別是對于錯誤恢復(fù)、流控制和可靠性。
● 它是一種面向連接的協(xié)議
● 它可以非常靈活地用于只支持 TCP 的第三方系統(tǒng)
● 有路由功能
● 只能應(yīng)用靜態(tài)數(shù)據(jù)長度。
● 消息會被確認。
● 使用端口號對應(yīng)用程序?qū)ぶ贰?/p>
● 大多數(shù)用戶應(yīng)用協(xié)議(例如 TELNET 和 FTP)都使用 TCP。
● 由于使用 SEND/RECEIVE 編程接口的緣故,需要編程來進行數(shù)據(jù)管理。
基于傳輸控制協(xié)議 (TCP) 的國際標準組織 (ISO) (RFC 1006) (ISO on TCP) 是一種能夠?qū)?ISO 應(yīng)用移植到 TCP/IP 網(wǎng)絡(luò)的機制。該協(xié)議有以下特點:
● 它是與硬件關(guān)系緊密的高效通信協(xié)議
● 它適合用于中等大小或較大的數(shù)據(jù)量(最多 8192 字節(jié))
● 與 TCP 相比,它的消息提供了數(shù)據(jù)結(jié)束標識符并且它是面向消息的。
● 具有路由功能;可用于 WAN
● 可用于實現(xiàn)動態(tài)數(shù)據(jù)長度。
● 由于使用 SEND/RECEIVE 編程接口的緣故,需要編程來進行數(shù)據(jù)管理。
通過傳輸服務(wù)訪問點 (TSAP, Transport Service Access Point),TCP 協(xié)議允許有多個連接訪問單個 IP 地址(最多 64K 個連接)。借助 RFC 1006,TSAP 可唯一標識連接到同一個 IP 地址的這些通信端點連接。
開放式用戶通信指令的連接 ID
將 TSEND_C、TRCV_C 或 TCON PROFINET 指令插入到用戶程序中時,STEP 7 會創(chuàng)建一個背景數(shù)據(jù)塊,以組態(tài)設(shè)備之間的通信通道(或連接)。使用指令的“屬性”(Properties) 組態(tài)連接的參數(shù)。這些參數(shù)中有該連接的連接 ID。
● 連接 ID 對于 CPU 必須是唯一的。創(chuàng)建的每個連接必須具有不同的 DB 和連接 ID。
● 本地 CPU 和伙伴 CPU 都可以對同一連接使用相同的連接 ID 編號,但連接 ID 編號不需要匹配。連接 ID 編號只與各 CPU 用戶程序中的 PROFINET 指令相關(guān)。
● CPU 的連接 ID 可以使用任何數(shù)字。但是,從“1”開始按順序組態(tài)連接 ID 可以很容易地跟蹤特定 CPU 使用的連接數(shù)。
用戶程序中的每個 TSEND_C、TRCV_C 或 TCON 指令都創(chuàng)建一個新連接。為每個連接使用正確的連接 ID 非常重要。
兩個 CPU 之間的通信,這兩個 CPU 使用 2 個單獨的連接來發(fā)送和接收數(shù)據(jù)。
①CPU_1 上的 TSEND_C 創(chuàng)建一個連接并為該連接分配一個連接 ID(CPU_1 的連接 ID 1)。
②CPU_2 上的 TRCV_C 為 CPU_2 創(chuàng)建連接并分配連接 ID(CPU_2 的連接 ID 1)。
③CPU_1 上的 TRCV_C 為 CPU_1 創(chuàng)建第二個連接并為該連接分配不同的連接 ID(CPU_1 的連接 ID 2)。
④CPU_2 上的 TSEND_C 創(chuàng)建第二個連接并為該連接分配不同的連接 ID(CPU_2 的連接 ID 2)。
以下示例顯示了兩個 CPU 之間的通信,這兩個 CPU 使用 1 個連接來發(fā)送和接收數(shù)據(jù)。
● 每個 CPU 都使用 TCON 指令來組態(tài)兩個 CPU 之間的連接。
● CPU_1 中的 TSEND 指令通過由 CPU_1 中的 TCON 指令組態(tài)的連接 ID(“連接 ID 1”)鏈接到 CPU_2 中的 TRCV 指令。CPU_2 中的 TRCV 指令通過由 CPU_2 中的 TCON 指令組態(tài)的連接 ID(“連接 ID 1”)鏈接到 CPU_1 中的 TSEND 指令。
● CPU_2 中的 TSEND 指令通過由 CPU_2 中的 TCON 指令組態(tài)的連接 ID(“連接 ID 1”)鏈接到 CPU_1 中的 TRCV 指令。CPU_1 中的 TRCV 指令通過由 CPU_1 中的 TCON 指令組態(tài)的連接 ID(“連接 ID 1”)鏈接到 CPU_2 中的 TSEND 指令。
①CPU_1 上的 TCON 創(chuàng)建一個連接并在 CPU_1 上為該連接分配連接 ID (ID=1)。
②CPU_2 上的 TCON 創(chuàng)建一個連接并在 CPU_2 上為該連接分配連接 ID (ID=1)。
③CPU_1 上的 TSEND 和 TRCV 使用 CPU_1 上的 TCON 創(chuàng)建的連接 ID (ID=1)。
CPU_2 上的 TSEND 和 TRCV 使用 CPU_2 上的 TCON 創(chuàng)建的連接 ID (ID=1)。
如以下示例所示,還可以使用單個 TSEND 和 TRCV 指令通過由 TSEND_C 或 TRCV_C 指令創(chuàng)建的連接進行通信。TSEND 和 TRCV 指令本身不會創(chuàng)建新連接,因此必須使用由 TSEND_C、TRCV_C 或 TCON 指令創(chuàng)建的 DB 和連接 ID。
①CPU_1 上的 TSEND_C 創(chuàng)建一個連接并為該連接分配連接 ID (ID=1)。
②CPU_2 上的 TRCV_C 創(chuàng)建一個連接并在 CPU_2 上為該連接分配連接 ID (ID=1)。
③CPU_1 上的 TSEND 和 TRCV 使用 CPU_1 上的 TSEND_C 創(chuàng)建的連接 ID (ID=1)。CPU_2 上的 TSEND 和 TRCV 使用 CPU_2 上的 TRCV_C 創(chuàng)建的連接 ID (ID=1)。
組態(tài) DNS
必須組態(tài)域名系統(tǒng) (DNS) 才能使用安全 OUC。網(wǎng)絡(luò)中必須至少存在一個 DNS 服務(wù)器,并且必須為 S7-1200 CPU 組態(tài)至少一個 DNS 服務(wù)器。
按以下步驟組態(tài) DNS 服務(wù)器:
1. 導(dǎo)航到 S7-1200 CPU 的設(shè)備視圖。
2. 轉(zhuǎn)到“屬性”(Properties) 頁面和“常規(guī)”(General) 選項卡。
3. 單擊 DNS 組態(tài)以顯示組態(tài)頁面。
4. 在“服務(wù)器列表”(Server list) 表格中 DNS 服務(wù)器地址下的第一行,單擊“<添加新地址>”() 并輸入 DNS 服務(wù)器的 IP 地址。
TSEND_C 和 TRCV_C 指令
從 S7-1200 CPU V4.1 或更高版本開始,與 STEP 7 V13 SP1 或更高版本一起使用時,CPU 可以擴展 TSEND_C 和 TRCV_C 指令的功能,以便使用結(jié)構(gòu)符合 TCON_IP_V4 和 TCON_IP_RFC 的連接參數(shù)。
選擇 TSEND_C 和 TRCV_C 指令的版本
在 STEP 7 中提供了兩種版本的 TSEND_C 和 TRCV_C 指令:
● V2.5 和 V3.1 可用于 STEP 7 Basic/Professional V13 或更早版本。
● 版本 4.0 在 STEP 7 Basic/Professional V13 SP1 或新版本中提供。
可以從兼容性和移植便利性方面考慮,選擇將相應(yīng)的指令版本插入用戶程序中。不要在同一個 CPU 程序中使用不同版本的指令。
單擊指令樹任務(wù)卡上的圖標可啟用指令樹的標題和列。
要更改 TSEND_C 和 TRCV_C 指令的版本,請從下拉列表中選擇相應(yīng)版本。可以選擇一組指令或分別選擇各個指令。
使用指令樹將 TSEND_C 或 TRCV_C 指令放入程序時,將根據(jù)所選的 TSEND_C 或 TRCV_C 指令在項目樹中創(chuàng)建新的 FB 或 FC 實例。在項目樹的“PLC_x > 程序塊 > 系統(tǒng)塊 > 程序資源”(PLC_x > Program blocks > System blocks > Program resources) 下可看到新的
FB 或 FC 實例。
要檢驗程序中 TSEND_C 或 TRCV_C 指令的版本,必須檢查項目樹的屬性而不是程序編輯器中所顯示框的屬性。選擇項目樹的 TSEND_C 或 TRCV_C FB 或 FC 實例,單擊右鍵,選擇“屬性”(Properties),然后選擇“信息”(Information) 頁查看 TSEND_C 或 TRCV_C 指令的版本號。
TSEND_C 和 TRCV_C(使用以太網(wǎng)發(fā)送和接收數(shù)據(jù))
TSEND_C 指令兼具 TCON、TDISCON 和 TSEND 指令的功能。TRCV_C 指令兼具TCON、TDISCON 和 TRCV 指令的功能。
最少可傳送 (TSEND_C) 或接收 (TRCV_C) 一個字節(jié)的數(shù)據(jù),最多 8192 字節(jié)。TSEND_C 不支持傳送布爾位置的數(shù)據(jù),TRCV_C 也不會在布爾位置中接收數(shù)據(jù)。有關(guān)使用這些指令傳送數(shù)據(jù)的信息,請參見數(shù)據(jù)一致性部分。
TSEND_C
TSEND_C 可與伙伴站建立 TCP 或 ISO on TCP 通信連接、發(fā)送數(shù)據(jù),并且可以終止該連接。設(shè)置并建立連接后,CPU 會自動保持和監(jiān)視該連接。
TRCV_C
TRCV_C 可與伙伴 CPU 建立 TCP 或 ISO on TCP 通信連接,可接收數(shù)據(jù),并且可以終止該連接。設(shè)置并建立連接后,CPU 會自動保持和監(jiān)視該連接。
TSEND_C 指令需要通過 REQ 輸入?yún)?shù)的上升沿來啟動發(fā)送作業(yè)。然后,BUSY 參數(shù)在處理期間會設(shè)置為 1。發(fā)送作業(yè)完成時,將通過 DONE 或 ERROR 參數(shù)被設(shè)置為 1 并持續(xù)一個掃描周期進行指示。在此期間,將忽略 REQ 輸入?yún)?shù)的上升沿。
TCON、TDISCON、TSEND 和 TRCV 指令
TCON
TCP 和 ISO on TCP:TCON 啟動從 CPU 到通信伙伴的通信連接。
TDISCON
TCP 和 ISO on TCP:TDISCON 終止從 CPU 到通信伙伴的通信連接。
TSEND
TCP 和 ISO on TCP:TSEND 通過從 CPU 到伙伴站的通信連接發(fā)送數(shù)據(jù)。
TRCV
TCP 和 ISO on TCP:TRCV 通過從伙伴站到 CPU 的通信連接接收數(shù)據(jù)。
編輯:jq
-
TCP
+關(guān)注
關(guān)注
8文章
1347瀏覽量
78934
原文標題:S7_1200 開放式用戶通信TCP-IP
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論