TCP 通信為面向連接的通信,需要雙方都調(diào)用指令以建立連接及交換數(shù)據(jù)。S7-200 SMART 與 S7-1200 通過 TCP 通信,在 S7-1200 調(diào)用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ,在 S7-200 SMART 調(diào)用 Open User Communication 庫指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。雙方的發(fā)送和接收指令必須成對出現(xiàn)。
客戶端:主動建立連接,可以理解為主站 ; 服務(wù)器:被動建立連接,可以理解為從站。
注意:
S7-200 SMART 在 CPU 硬件固件及編程軟件版本均升級到 V2.2 之后才開始支持開放式通信。編程軟件版本**V2.2,無 Open User Communication 庫指令;硬件固件** V2.2,硬件不支持開放式通信協(xié)議。
S7-200 SMART TCP 連接資源:8個主動連接資源,8個被動連接資源
S7-200 SMART TCP 通信數(shù)據(jù)量:1024 字節(jié)
硬件:
① S7-1200 CPU (IP 地址 192.168.0.100 ;子網(wǎng)掩碼 255.255.255.0)
② S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.20 ;子網(wǎng)掩碼 255.255.255.0)
③ PC (帶以太網(wǎng)卡)
④ TP 以太網(wǎng)電纜
軟件:
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART ( 軟件版本 V2.2 )
所完成的通信任務(wù):
① S7-1200 發(fā)送 10 個字節(jié)數(shù)據(jù):( S7-1200側(cè) ) DB4.DBB0~DB4.DBB9 --> ( S7- 200 SMART 側(cè) ) VB2000~VB2009
② S7-1200 接收 10 個字節(jié)數(shù)據(jù): ( S7-1200 側(cè) ) DB4.DBB10~DB4.DBB19 <-- ( S7-200 SMART 側(cè) ) VB0~VB9
1. 使用 TIA V13 SP1 Upd 9 軟件 Portal 視圖中,創(chuàng)建新項目
2. 添加硬件并命名PLC
進入 “項目視圖”,在“項目樹” 下雙擊 “添加新設(shè)備”,在對話框中選擇所使用的 S7-1200 CPU 添加到機架上,命名為 PLC_1 如圖1所示
圖1. 添加新設(shè)備
3. 啟用時鐘位
為了編程方便,使用 CPU 屬性中定義的時鐘位,定義方法如下:
在 “項目樹” > “PLC_1” > “設(shè)備組態(tài)” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “系統(tǒng)和時鐘存儲器” 下,將時鐘位定義在 MB0,如圖2所示。
時鐘位我們使用 M0.5 ,它是頻率為 1 Hz 的脈沖,可以使用它去自動激活發(fā)送任務(wù)。
圖2.啟用時鐘位
4. 為 PROFINET 通信口分配以太網(wǎng)地址
在 “設(shè)備視圖”中點擊 CPU 上代表 PROFINET 通信口的綠色小方塊,在下方會出現(xiàn) PROFINET 接口的屬性,在 “以太網(wǎng)地址” 下分配 S7-1200 CPU 的 IP 地址為 192.168.0.100 ,子網(wǎng)掩碼為255.255.255.0,如圖3 所示
圖3. 分配 IP 地址
5.在S7-1200 中調(diào)用建立連接指令,進入 “項目樹” > “ PLC_1” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令”> “通信”>“開放式用戶通信”下調(diào)用 “TCON” 指令,配置連接參數(shù),如圖4所示。
圖4. 調(diào)用TCON指令并配置連接參數(shù)
6.創(chuàng)建用于交換數(shù)據(jù)的全局DB塊及定義變量
通過“項目樹”>“PLC_1”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建全局 DB 塊,點擊“確定” 生成數(shù)據(jù)塊。如圖5所示。
圖5.添加新塊
通過“項目樹”>“PLC_1”>“程序塊”>點擊生成的 “數(shù)據(jù)塊_1” ( DB4 ) ,右鍵屬性,取消勾選“優(yōu)化的塊訪問”。如圖6所示。
圖6.取消勾選優(yōu)化的塊訪問
雙擊生成的 “數(shù)據(jù)塊_1” ( DB4 ) ,定義數(shù)組,10 個字節(jié)用于發(fā)送,10個字節(jié)用于接收,然后編譯數(shù)據(jù)塊。結(jié)果如圖7所示。
圖7. 定義交換數(shù)據(jù)區(qū)
7.在OB1中調(diào)用 TSEND 和 TRCV
指令塊位置及調(diào)用方法參考 TCON 指令的調(diào)用,調(diào)用結(jié)果如圖8所示。
CALL TSEND | , DB3 | //調(diào)用TSEND,使用背景DB塊:DB3 |
REQ | :M0.5 | //使用1Hz的時鐘脈沖,上升沿激活發(fā)送任務(wù) |
ID | :1 | //連接號,要與連接配置中一致 |
DATA | :P#DB4.DBX0.0 BYTE 10 | // 發(fā)送數(shù)據(jù)區(qū)的數(shù)據(jù),需要注意DB塊要選用**尋址 |
DONE | :M20.0 | // 任務(wù)執(zhí)行完成并且沒有錯誤,該位置1 |
BUSY | :M20.1 | // 該位為1,代表任務(wù)未完成,不能激活新任務(wù) |
ERROR | :M20.2 | // 通信過程中有錯誤發(fā)生,該位置1 |
STATUS |
| // 有錯誤發(fā)生時,會顯示錯誤信息號 |
CALL TRCV | , DB5 | //調(diào)用TRCV,使用背景DB塊:DB5 |
EN_R | :M1.2 | //準備好接受數(shù)據(jù) ,常1接收 |
ID | :1 | //連接號,要與連接配置中一致 |
DATA | :P#DB4.DBX10.0 BYTE 10 | // 接受數(shù)據(jù)區(qū)的數(shù)據(jù),需要注意DB塊要選用**尋址 |
DONE | :M30.0 | // 任務(wù)執(zhí)行完成并且沒有錯誤,該位置1 |
BUSY | :M30.1 | // 該位為1,代表任務(wù)未完成,不能激活新任務(wù) |
ERROR | :M30.2 | // 通信過程中有錯誤發(fā)生,該位置1 |
STATUS |
| // 有錯誤發(fā)生時,會顯示錯誤信息號 |
RCVD_LEN |
| // 實際接受數(shù)據(jù)的字節(jié)數(shù) |
圖8. 調(diào)用發(fā)送和接收指令
接收和發(fā)送指令調(diào)用需要注意:
程序塊的 ID 要與指令 TCON 中的 ID 保持一致
DATA 參數(shù)的填寫方法 ( 以 TRCV 程序塊為例 ):
1、直接輸入 : P#DB4.DBX10.0 BYTE 10
2、打開數(shù)據(jù)塊,點擊數(shù)據(jù)塊右上角浮動按鈕,移動數(shù)據(jù)塊與OB1并排顯示,選中數(shù)據(jù)塊變量名稱 “ TCP_RCV ” 拖拽到 TRCV 指令 DATA 參數(shù)處,該區(qū)域顯示為綠色,釋放鼠標即可。
1.打開STEP 7 Micro/WIN SMART>項目樹>指令樹>庫>Open User Communication ,調(diào)用TCP_CONNECT,如圖9所示。
TCP_CONNECT | //調(diào)用TCP_CONNECT | |
EN | :SM0.0 | //使能輸入 |
Req | :V6010.0 | //如果 Req = TRUE,CPU 啟動連接操作。如果 Req = FALSE,則輸出顯示連接的當前狀態(tài)。使用上升沿觸發(fā) |
Active | :SM0.0閉點 | //TRUE = 主動連接 ;FALSE = 被動連接 |
ConnID | :1 | // CPU 使用連接 ID (ConnID) 為其它指令標識該連接。可能的 ConnID 范圍為 0 到 65534。 |
IPaddr1~4 | :0~0 | //IPaddr1 是 IP 地址的較高有效字節(jié),IPaddr4 是 IP 地址的較低有效字節(jié)。服務(wù)器側(cè)IP地址寫0,表示接收所有請求 |
RemPort | :0 | //RemPort 是遠程設(shè)備上的端口號。遠程端口號范圍為 1 到 49151。對于被動連接,使用零。 |
LocPort | :2000 | // LocPort 是本地設(shè)備上的端口號。本地端口號范圍為 1 到 49151,但存在一些限制。 |
DONE | :V6000.0 | // 當連接操作完成且沒有錯誤時,指令置位 Done 輸出。 |
BUSY | :V6000.1 | // 當連接操作正在進行時,指令置位 Busy 輸出。 |
ERROR | :V6000.2 | // 當連接操作完成但發(fā)生錯誤時,指令置位 Error 輸出 |
STATUS |
| // 如果指令置位 Error 輸出,Status 輸出會顯示錯誤代碼。如果指令置位 Busy 或 Done 輸出,Status 為零(無錯誤) |
圖9. 指令位置及調(diào)用連接指令
2.調(diào)用TCP_SEND 和 TCP_RCV 指令,如圖10 所示。
CALL TCP_SEND | //調(diào)用TCP_SEND | |
EN | :SM0.5 | //使能輸入 |
Req | :SM0.5 | //如果 Req = TRUE,CPU 啟動發(fā)送操作。如果 Req = FALSE,則輸出顯示發(fā)送操作的當前狀態(tài)。 |
ConnID | :1 | //連接 ID (ConnID) 是此發(fā)送操作所用連接的編號。使用您為 TCP_CONNECT 操作選擇的 ConnID。 |
DataLen | :10 | //DataLen 是要發(fā)送的字節(jié)數(shù)(1 到 1024)。 |
DataPtr | :&VB0 | //DataPtr 是指向待發(fā)送數(shù)據(jù)的指針。這是指向 I、Q、M 或 V 存儲器的 S7-200 SMART 指針(例如,&VB100)。 |
Done | :V6000.6 | // 當連接操作完成且沒有錯誤時,指令置位 Done 輸出。 |
Busy | :V6000.7 | // 當連接操作正在進行時,指令置位 Busy 輸出。 |
Error | :V6001.0 | // 當連接操作完成但發(fā)生錯誤時,指令置位 Error 輸出。 |
Status |
| // 如果指令置位 Error 輸出,Status 輸出會顯示錯誤代碼。如果指令置位 Busy 或 Done 輸出,Status 為零(無錯誤) |
CALL TCP_RECV | //調(diào)用TCP_RECV | |
EN | :SM0.0 | //使能輸入,常1接收 |
ConnID | :1 | //CPU 將連接 ID (ConnID) 用于此接收操作(連接過程中定義)。 |
MaxLen | :10 | // MaxLen 是要接收的較大字節(jié)數(shù)(例如,DataPt 中緩沖區(qū)的大小(1 到 1024))。 |
DataPtr | :&VB2000 | // DataPtr 是指向接收數(shù)據(jù)存儲位置的指針。這是指向 I、Q、M 或 V 存儲器的 S7-200 SMART 指針(例如,&VB100) |
Done | :V6001.1 | //當接收操作完成且沒有錯誤時,指令置位 Done 輸出。當指令置位 Done 輸出時,Length 輸出有效。 |
Busy | :V6001.2 | // 當接收操作正在進行時,指令置位 Busy 輸出。 |
Error | :V6001.3 | // 當接收操作完成但發(fā)生錯誤時,指令置位 Error 輸出 |
Status | :VB6005 | // 如果指令置位 Error 輸出,Status 輸出會顯示錯誤代碼。如果指令置位 Busy 或 Done 輸出,Status 為零(無錯誤)。 |
Length | :VW6006 | //Length 是實際接收的字節(jié)數(shù)。 |
圖10. 調(diào)用發(fā)送和接收指令
3.分配庫存儲區(qū),如圖11 所示。
圖11. 分配庫存儲區(qū)
注意:為保證指令庫可以正常工作,分配庫存儲區(qū)的時候,一定不能與程序中使用的其他 V 區(qū)地址重疊?。?/strong>
將 S7-1200 和 S7-200 SMART 項目編譯,下載 ;
S7-1200 側(cè)觸發(fā) TCON 指令的REQ (M10.0 置位為1),S7-200 SMART 側(cè)觸發(fā) TCP_CONNECT 指令的Req (V6010.0 置位為1 )以建立連接;
通信結(jié)果如下:
詞條
詞條說明
硬件中斷事件的示例以下將通過硬件中斷觸發(fā)模塊舉例說明 S7-1200 CPU 中事件觸發(fā)的程序執(zhí)行原理。過程事件及其**級過程事件由 I/O(例如通過數(shù)字量輸入)觸發(fā)并在 S7-1200 CPU 中啟動對已分配 OB 的調(diào)用。 分配給過程事件的 OB 稱為硬件中斷 OB。過程事件及其**級的示例:中斷觸發(fā)模塊中的過程事件“上升沿”或“下降沿”: 由此事件啟動的硬件中斷 OB 總是分配為**級 5。
USS 通信概述系統(tǒng)環(huán)境中的位置以下 USS 說明涉及 Modbus/USS 模型中 ET 200S 1SI 模塊的操作。簡介USS 協(xié)議是一種簡單的串行數(shù)據(jù)傳輸協(xié)議,旨在滿足驅(qū)動器技術(shù)的要求。USS 協(xié)議定義了一種基于主站-從站原理通過串行總線進行通信的訪問方法。總線可以連接一個主站和較多 31 個從站。主站和從站構(gòu)成 USS 網(wǎng)絡(luò)。 主站與從站之間交換的數(shù)據(jù)稱為網(wǎng)絡(luò)數(shù)據(jù)。 網(wǎng)絡(luò)數(shù)據(jù)塊包含主站的
通過 CPU 和 CP 實現(xiàn)開放式用戶通信連接通過工業(yè)以太網(wǎng)實現(xiàn)開放式用戶通信 - 已編程通信連接使用開放式用戶通信,可以在用戶程序中通過指令接口使用工業(yè)以太網(wǎng)服務(wù)。 通過用戶程序中的指令接口可以建立通信連接;而*組態(tài)連接。通過 CPU 接口實現(xiàn)的服務(wù)下列開放式用戶通信服務(wù)適用于 S7-1500,可用于通過 CP 的集成以太網(wǎng)接口進行數(shù)據(jù)交換:TCP(符合 RFC?793 協(xié)議)ISO
涉及智能 DP 從站的組態(tài)定義本身具有預(yù)處理程序的 DP 從站稱為智能 DP 從站(智能從站)。 智能 DP 從站的示例包括:CPU 315-2 DPCPU 317-2 DPCPU 319-3 PN/DP涉及智能 DP 從站的組態(tài)有兩種方法可以組態(tài)使用 PROFIBUS DP 的智能 DP 從站:智能從站與 DP 主站間的數(shù)據(jù)交換DP 從站到智能從站的直接數(shù)據(jù)交換智能從站與 DP 主站間的數(shù)據(jù)交換
公司名: 上海騰希電氣技術(shù)有限公司
聯(lián)系人: 田禮科
電 話: 021-37660026
手 機: 13681875601
微 信: 13681875601
地 址: 上海松江上海市松江區(qū)廣富林路4855弄星月大業(yè)**88號4樓
郵 編:
網(wǎng) 址: shtxjd.cn.b2b168.com
公司名: 上海騰希電氣技術(shù)有限公司
聯(lián)系人: 田禮科
手 機: 13681875601
電 話: 021-37660026
地 址: 上海松江上海市松江區(qū)廣富林路4855弄星月大業(yè)**88號4樓
郵 編:
網(wǎng) 址: shtxjd.cn.b2b168.com