兼容性:
軟件版本:最低 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)”按鈕
![[轉載][西門子]S7-1200使用S7協議GET/PUT通訊 [轉載][西門子]S7-1200使用S7協議GET/PUT通訊](/image/aHR0cDovL3M5LnNpbmFpbWcuY24vbXc2OTAvMDAyNnRjYnR6eTc1c1B3YWROUzE4JjY5MA==.png)
在彈出的窗口中,在左側選擇PLC_2,右上角類型選擇“S7連接”右下角勾選“主動建立連接”。點擊“添加”后關閉窗口。
如果需要和其他不是本項目的兼容S7協議的設備通信,則選擇未指定。
回到項目樹,雙擊PLC_2中的“設備組態”,右擊PLC,點“屬性”,在“常規-保護-連接機制”中勾選“允許借助 PUT/GET 通信從遠程伙伴訪問”
在“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塊中初始化一些數據,這里就不寫了。
在“PLC_1-PLC變量”中,雙擊“默認變量表”,如圖所示建立變量
打開“PLC_1-程序塊”的“Main[OB1]”,在右側指令窗口中找到“通信-S7通信-GET”拉到OB1的程序段1上。會提示創建DB塊,確認即可。
注意,若要和多個服務器通信,需要創建多個。
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 //故障代碼
至此編程工作已經全部結束,可以使用監視功能查看運行狀況。