S7-1200之間TCP通信連載-(2)通信客戶端編程

我們收集了工控行業常用品牌資料+軟件+培訓視頻,私信回覆【資料】立即獲得

上一篇我們分享了 S7-1200之間TCP通信連載-(1)通訊組態,這一篇我們聊一聊 通信客戶端編程。

在 PLC_1 中調用並配置“TCON”、“TSEND”、“TRCV” 通信指令

1.在 PLC_1 的 OB1 中調用“TCON” 通信指令

① 在第一個 CPU 中調用發送通信指令,進入 “Project tree” > “ PLC_1” > “Program blocks” > “OB1” 主程序中,從右側窗口 “Instructions” > “Communications” > “OPEN User Communications”下調用 “TCON” 指令,創建連接,如圖1.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖1. 調用“TCON”通信指令

② 創建DB2 分配連接參數,見圖2所示

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖2. 創建連接數據塊 DB2(Con_DB)

③ 定義PLC_1的 “TCON”連接參數

PLC_1 的 TCON 指令的連接參數需要在指令下方的屬性窗口“Properties”> “Configuration”>“Connection parameter”中設置,如圖3.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖3. 定義 TCON 連接參數

連接參數說明:

End point:可以通過點擊選擇按鈕選擇夥伴 CPU :PLC_2Connection type:選擇通信協議為 TCP(也可以選擇 ISO on TCP 或UDP協議)Connection ID :連接的地址 ID 號,這個 ID 號在後面的編程裡會用到Connection data:創建連接時,生成的Con_DB塊。見圖2所示

Active connection setup:選擇本地 PLC_1作為主動連接Address details :定義通信夥伴方的端口號為:2000;如果選用的是 ISO on TCP 協議,則需要設定的TSAP 地址(ASCII 形式),本地 PLC_1可以設置成“PLC1”,夥伴方 PLC_2 可以設置成“PLC2”。

2.定義 PLC_1 的“TSEND”發送通信塊接口參數

① 調用 “TSEND” 在OB1內調用 發送100個字節數據到PLC2中

進入 “Project tree” > “ PLC_1” > “Program blocks” > “OB1” 主程序中,從右側窗口 “Instructions” > “Communications” > “OPEN User Communications”下調用 “TSEND” 指令,,如圖4.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖4. 調用 TSEND

② 創建並定義PLC_1的發送數據區 DB 塊。

通過“Project tree”>“PLC_1”>“Program blocks”>“Add new block”,選擇“Data block” 創建 DB 塊,選擇絕對尋址,點擊“OK”鍵,定義發送數據區為 100個字節的數組,如圖4.及圖5.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖5. 創建發送數據區 DB 塊

注意:對於雙邊編程通信的 CPU ,如果通信數據區使用 DB 塊,既可以將 DB 塊定義成符號尋址,也可以定義成絕對尋址。使用指針尋址方式,必須創建絕對尋址的 DB 塊。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖6. 定義發送數據區為字節類型的數組 圖 PLC1_TSENDC_DATA

③ 定義 PLC_1 的“TSEND”發送通信塊接口參數,如圖7.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖7. 定義 TSEND 接口參數

參數說明:

輸入接口參數:

REQ

:= M0.3

// 使用 2Hz 的時鐘脈衝,上升沿激活發送任務

ID: = 1//創建連接IDLEN

:= 100

//發送數據長度

DATA

:= P#DB3.DBX0.0 BYTE 100

// 發送數據區的數據,使用指針尋址時,DB塊要選用絕對尋址

輸出接口參數:

DONE

:= M300.0

//任務執行完成並且沒有錯誤,該位置 1

BUSY

:= M300.1

// 該位為 1,代表任務未完成,不能激活新任務

ERROR

:= M300.2

//通信過程中有錯誤發生,該位置 1

STATUS

:= MW302

//有錯誤發生時,會顯示錯位信息號

3.在 PLC_1 的OB1中調用接收指令T_CV 並配置基本參數

為了實現 PLC_1 接收來自 PLC_2 的數據,則在 PLC_1 中調用接收指令T_RCV 並配置基本參數。

① 創建並定義PLC_1的接收數據區 DB 塊。

通過“Project tree”>“PLC_1”>“Program blocks”>“Add new block”,選擇“Data block” 創建 DB 塊,選擇絕對尋址,點擊“OK”鍵,定義發送數據區為 100個字節的數組,如圖7.及圖8.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖8. 創建接收數據區 DB 塊

注意:對於雙邊編程通信的 CPU ,如果通信數據區使用 DB 塊,既可以將 DB 塊定義成符號尋址,也可以定義成絕對尋址。使用指針尋址方式,必須創建絕對尋址的 DB 塊。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖9. 定義接收數據區為字節類型的數組

② 調用 “TRCV” 在OB1內調用

進入 “Project tree” > “ PLC_1” > “Program blocks” > “OB1” 主程序中,從右側窗口 “Instructions” > “Communications” > “OPEN User Communications”下調用 “TRCV” 指令,配置接口參數,,如圖10.所示。

S7-1200之間TCP通信連載-(2)通信客戶端編程

圖10. 調用 TRCV 指令並配置接口參數

參數說明:

輸入接口參數:

EN_R

:= TRUE

// 準備好接收數據

ID

:= 1

// 連接號,使用的是 TCON 的連接參數中 ID號

LEN

:= 100

// 接收數據長度為 100 個字節

DATA

:= P#DB4.DBX0.0 BYTE 100

// 接收數據區的地址

輸出接口參數:

NDR

:= M310.0

// 該位為 1,接收任務成功完成

BUSY

:= M310.1

// 該位為 1,代表任務未完成,不能激活新任務

ERROR

:= M310.2

// 通信過程中有錯誤發生,該位置 1

STATUS

:= MW312

// 有錯誤發生時,會顯示錯誤信息號

RCVD_LEN

:= MW314

// 實際接收數據的字節數

注意:LEN設置為 65535 可以接收變長數據。

下一篇,我們來分享 S7-1200之間TCP通信連載-(2)通信通信服務器編程


分享到:


相關文章: