S7-1200使用S7協議GET/PUT通訊


S7-1200使用S7協議GET/PUT通訊


兼容性:

軟件版本:最低 TIA PORTAIL V11。

硬件版本:最低 2.0。

連接數:3個用於服務器端(被動)連接,8個用於客戶端(主動)連接。

編程示例:

這個示例演示兩臺S7 1200 PLC之間使用S7協議進行通訊,使用的IDE是TIA PORTAIL V13。

新建一個項目,在“項目樹”裡雙擊“添加新設備”,添加兩臺PLC,這裡以CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0)為例。其中PLC_1為客戶端(主站),PLC_2為服務器(從站)。

在項目樹雙擊“設備與網絡”按住PLC_1的“Ethernet接口(綠色方塊)”,拉到PLC_2的Ethernet接口上,建立一個子網。

點擊左上角的“連接”按鈕,可以看到PLC變為藍綠色。在PLC_1上右鍵,點擊“添加新連接(N)”按鈕

在彈出的窗口中,在左側選擇PLC_2,右上角類型選擇“S7連接”右下角勾選“主動建立連接”。點擊“添加”後關閉窗口。如果需要和其他不是本項目的兼容S7協議的設備通信,則選擇未指定。

S7-1200使用S7協議GET/PUT通訊


在設備與網絡裡能找到已建立的連接

回到項目樹,雙擊PLC_2中的“設備組態”,右擊PLC,點“屬性”,在“常規-保護-連接機制”中勾選“允許藉助 PUT/GET 通信從遠程夥伴訪問”

在“常規-PROFINET接口-以太網地址”在IP協議中選中“在項目中設置IP地址”。填寫IP地址為192.168.0.11,子網掩碼255.255.255.0。

在“PLC_2-程序塊”中雙擊“添加塊”,添加2個DB塊,這裡命名分別為GET_Data,PUT_Data,編號分別為1、2。在2個塊中建立名為Data,類型為int的變量。名稱、類型可任意指定。PLC_1將從GET_Data中讀取數據,向PUT_Data中寫入數據。

在“PLC_2-程序塊”中右擊“GET_Data”點擊“屬性”。取消勾選“優化的塊訪問”確認保存,PUT_Data塊也這樣操作。至此PLC_2的編程工作完畢,若想在最後的通信中看到效果,可以在GET_Data塊中初始化一些數據,這裡就不寫了。

S7-1200使用S7協議GET/PUT通訊


在“PLC_1-程序塊”中雙擊“添加塊”添加一個DB塊,命名為"Recv_Data",塊號為1,在塊中添加類型為int的變量“Data”創建完成後同樣要取消塊的優化訪問。

在“PLC_1-PLC變量”中,雙擊“默認變量表”,如圖所示建立變量

打開“PLC_1-程序塊”的“Main[OB1]”,在右側指令窗口中找到“通信-S7通信-GET”拉到OB1的程序段1上。會提示創建DB塊,確認即可。注意,若要和多個服務器通信,需要創建多個。

在GET上右鍵屬性,在“組態-連接參數-夥伴”的端點中選擇剛才建好的那個PLC_2連接即可,如果選擇未指定設備,則要填好對方的IP地址。

返回OB1,如圖填好其他參數

S7-1200使用S7協議GET/PUT通訊


參數說明:

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

ID:W#16#100 //S7連接ID

ADDR_1:P#DB1.DBX0.0 BYTE 2 //要讀取對方(PLC_2)數據存儲區地址指針,因為我們只讀一個int,所以只有兩個byte長度,不僅可以讀DB塊,I、Q、M等存儲區也可讀。

RD_1:P#DB1.DBX0.0 BYTE 2 //自己用於存儲接收數據的存儲區指針。

NDR:GET_NDR //為1時,讀取完成

ERROR:GET_ERROR //為1時,表示接收失敗,有故障。

STATUS:GET_STATUS //故障代碼

以上參數具體釋義請查閱自帶的信息系統。

以同樣的方法,將“通信-S7通信-PUT”拉到OB1的程序段2,填好配置好屬性及參數,如圖

參數說明:

REQ:GET_NDR //使用讀取成功的標誌位,上升沿激活發送。

ID:W#16#100 //S7連接ID

ADDR_1:P#DB2.DBX0.0 BYTE 2 //要寫入對方(PLC_2)數據存儲區地址指針

SD_1:P#DB1.DBX0.0 BYTE 2 //自己用於存儲發送數據的存儲區指針。這裡我們將剛才讀取的數據發送回去。

DONE:PUT_DONE //為1時,寫入完成

ERROR:PUT_ERROR //為1時,表示寫入失敗,有故障。

STATUS:PUT_STATUS //故障代碼


分享到:


相關文章: