S7-1200 PLC的S7通信服務器端解決方案

2023-07-07 11:04:49 來源:跟我學PLC吧

S7-1200 的 PROFINET 通信口可以做 S7 通信的服務器端或客戶端(CPUV2.0及以上版本)。S7-1200 僅支持 S7 單邊通信,僅需在客戶端單邊組態(如圖1)連接和編程(如圖2),而服務器端只準備好通信的數據就行。和圖2所示

圖1


(資料圖片僅供參考)

圖2

指令介紹

1

PUT指令

S7-1200CPU的為S7通信提供了兩條用于讀寫數據的指令“PUT”和“GET”,使用PUT個GET指令對伙伴CPU進行讀寫時,不管伙伴CPU是處于運行模式下還是停止模式下,S7通信依然可以正常進行。

REQ:觸發PUT指令執行,每次上升沿時觸發。

ID:S7通信連接ID,該連接ID在組態S7連接時生效。

ADDR_1:指向伙伴CPU的地址,寫入數據的區域地址

SD_1︰指向本地CPU的的地址,寫出數據的區域地址

DONE:數據被成功寫入到伙伴CPU

ERROR:指令執行出錯,錯誤代碼存儲在STATUS中

2

GET指令

REQ:觸發GET指令執行,每次上升沿時觸發。

ID: S7通信連接ID,該連接ID在組態S7連接時生效。

ADDR_1∶指向伙伴CPU的地址,待讀取區域地址

RD_1∶指向本地CPU的的地址,讀取回數據的存放地址

NDR︰伙伴CPU的數據被成功讀取

ERROR:指令執行出錯,錯誤代碼存儲在STATUS中

指令使用注意事項

(1)指令上使用的數據讀寫區域需要使用指針的方式進行給定,對應使用的數據塊需要使用非優化訪問的塊。

(2)使用時需要確保參數ADDR與SD/RD定義的數據區域在數量、長度和數據類型方面都需要匹配。

(3)PUT/GET指令的最大可傳送數據長度為212/222字節,通信數據區域數量的增加并不能增加通信數據長度,反之增大通信的數據區域量,通信最大的數據長度會減少。

示例:兩個1200PLC同一項目下S7通信

通信需求

①將客戶端(Client)中DB1.DBX0.0開始的10個字節發送到服務器的DB1.DBX0.0開始的10個字節中。

②讀取服務器(Serve)中的DB2.DBX0.0開始的10個字節到客戶端DB1.DBX0.0開始的10個字節中。

01

創建一個PLC作為客戶端,名稱為“Client”,設定IP地址為:192.168.0.10,勾選允許遠程訪問

02

創建一個PLC作為服務器,名稱為“Sever”,設定IP地址為:192.168.0.12 ,勾選允許遠程訪問

03

在中間欄的“連接”條目中,可以看到已經建立的“S7_連接_1”,如圖所示。

04

點中上面的連接,在“S7_連接_1”的連接屬性中查看各參數。在常規中,顯示連接雙方的設備,IP地址。

①在本地ID中:顯示通訊連接的ID 號,這里ID=W#16#100(編程使用)。

②在特殊連接屬性中:可以選擇是否為主動連接,這里client 是主動建立連接。

③在地址詳細信息中:定義通訊雙方的 TSAP 號,這里不需要修改。

05

程序編寫

①客戶端側建立DB1和DB2塊,并建立Send和Recv名稱的數組。用于發送數據和接收數據

②服務器端建立DB1和DB2塊,并建立Send和Recv名稱的數組。用于發送數據和接收數據

③客戶端編寫程序

編輯:黃飛

標簽:

上一篇:CMOS圖像傳感器類型及3D堆疊
下一篇:最后一頁