
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名稱的數組。用于發送數據和接收數據
③客戶端編寫程序
編輯:黃飛
標簽: