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)。
客戶端:主動建立連接,可以理解為主站 ; 服務器:被動建立連接,可以理解為從站。
注意:
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 )
所完成的通信任務:
① 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ā)送任務。
圖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ā)送任務 |
ID | :1 | //連接號,要與連接配置中一致 |
DATA | :P#DB4.DBX0.0 BYTE 10 | // 發(fā)送數(shù)據(jù)區(qū)的數(shù)據(jù),需要注意DB塊要選用**尋址 |
DONE | :M20.0 | // 任務執(zhí)行完成并且沒有錯誤,該位置1 |
BUSY | :M20.1 | // 該位為1,代表任務未完成,不能激活新任務 |
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 | // 任務執(zhí)行完成并且沒有錯誤,該位置1 |
BUSY | :M30.1 | // 該位為1,代表任務未完成,不能激活新任務 |
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é)。服務器側(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ū)地址重疊??!
將 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é)果如下:
詞條
詞條說明
連接檢查可在此頁面激活監(jiān)視連接的 ping 測試。在 ping 測試期間,設(shè)備會以固定時間間隔向已組態(tài)的目標地址發(fā)送 ICMP 回送請求包 (ping)。如果此目標地址未作出響應,則設(shè)備會再次嘗試訪問目標地址。如果所有 ping 嘗試(重試)都不成功,則認為 ping 測試失敗或無法對組進行訪問。如果無法訪問組,則設(shè)備會在所選接口上啟動已組態(tài)的操作。如果已執(zhí)行所有 5 個操作或重新啟動后,設(shè)備將再
通過 P_RCV_RK (CP 341) 從通信模塊到 CPU 的數(shù)據(jù)傳輸
通過 P_RCV_RK (CP 341) 從通信模塊到 CPU 的數(shù)據(jù)傳輸先決條件所有讀取函數(shù)代碼都需要 P_RCV_RK。數(shù)據(jù)目標地址當指令 P_RCV_RK 準備好接收數(shù)據(jù)時,它接受從通信模塊接收到的數(shù)據(jù),然后將數(shù)據(jù)輸入到在參數(shù)?DB_N0?和?DBB_N0?中*的數(shù)據(jù)目標地址。如何顯示數(shù)據(jù)接收通過輸出?NDR?上的邊沿信號來通知用
LLDP提示只有與設(shè)備存在在線連接時才顯示該頁面。鄰居表狀態(tài)此頁面顯示鄰居表的當前內(nèi)容。該表存儲 LLDP 代理從所連接設(shè)備接收到的信息。在以下部分設(shè)置 LLDP 代理接收或發(fā)送信息所使用的接口:“* 2 層 > LLDP”(Layer 2 > LLDP)。顯示值說明該表包含以下列:系統(tǒng)名稱 (System name)所連接設(shè)備的系統(tǒng)名稱。設(shè)備 ID (Device ID)所連設(shè)備的設(shè)
存儲器復位的基礎(chǔ)知識功能只有在 STOP 模式下,才能執(zhí)行 CPU 的存儲器復位。復位存儲器時,CPU 切換到“初始狀態(tài)”。 這表示:終止編程設(shè)備/PC 和 CPU 間的現(xiàn)有在線連接。被刪除工作存儲器中的內(nèi)容以及保持性和非保持性數(shù)據(jù)。保留診斷緩沖區(qū)、時間、IP 地址、硬件配置和激活的強制作業(yè)。裝載存儲器內(nèi)容(代碼和數(shù)據(jù)塊)隨后復制到工作存儲器。 其結(jié)果為,數(shù)據(jù)塊不再具有當前值,而是具有其組態(tài)的起始
公司名: 上海騰希電氣技術(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