劉柏松, 劉 燁, 李丙林, 尤 文
(1.長春天然氣有限責任公司,吉林長春 130033;2.長春工業大學電氣與電子工程學院,吉林長春 130012)
數據通信協議可以分為面向連接的協議和無連接的協議,前者在進行數據交換之前,必須與通信伙伴建立連接。面向連接的協議具有較高的安全性[1-3]。
連接是指兩個通信伙伴之間為了執行通信服務建立的邏輯鏈路,而不是指兩個站之間用物理媒體(例如電纜)實現的連接。連接相當于通信伙伴之間一條虛擬的“專線”,它們隨時可以用這條“專線”進行通信。一條物理線路可以建立多個連接[4]。
S7連接屬于需要組態的靜態連接。
基于連接的通信分為單向通信和雙向通信。在雙向通信中,通信雙方都需要調用通信塊,一方調用發送塊來發送數據,另一方調用接收塊來接收數據。
在雙向S7通信中,使用SFB12“BSEND”可以將數據塊安全地傳輸到通信伙伴,直到通信伙伴的接收功能SFB13“BRCV”接收完數據,數據傳輸才結束。只有S7-400之間才可以進行雙向通信。可傳輸字節達64K。從S7-PLCSIM V5.4+SP3開始,用戶可以使用S7-PLCSIM在一個STEP 7項目中同時仿真多CPU,并建立CPU間的通訊。S7通信可以用于工業以太網、PROFIBUS或MPI網絡[5-6]。這些網絡的S7通信的組態和編程方法基本相同。下面基于Ethernet網絡介紹S7雙向通信的組態和編程方法。
在STEP7中創建一個名為“S7_PLCSIM_SFB12SFB13”的項目,用鼠標右鍵點擊項目的圖標,用出現的快捷菜單中的命令插入一個SIMATIC 400站點,選中SIMATIC管理器左邊窗口出現的站,雙擊右邊窗口中的“硬件”圖標,打開硬件組態工具HW Config,將電源模塊和CPU 416-3PN/DP插入機架。在自動出現的“屬性-Etherne接口”對話框的“參數”選項卡中,設置IP地址為192.168.0.1。點擊“新建”按鈕,生成一條名為“(1)”的以太網,編譯并保存組態信息。
在“S7_PLCSIM_SFB12SFB13”項目中生成另一個SIMATIC 400站點。在HW Config中,將電源模塊和CPU 416-3PN/DP插入機架。在自動出現的“屬性-Etherne接口”對話框的“參數”選項卡中,設置IP地址為192.168.0.2。選中“子網”列表中的“Ethernet(1)”。編譯并保存組態信息。
Ethernet網接口屬性對話框如圖1所示。
組態好兩個S7-400站后,打開NetPro窗口,看到連接到以太網上的兩個站,選中416-3PN/DP所在的小方框,在NetPro下面的窗口出現連接表,如圖2所示。

圖1 Ethernet網接口屬性對話框

圖2 網絡與連接的組態
插入新連接與連接屬性對話框如圖3所示。

圖3 插入新連接與連接屬性對話框
雙擊連接表的第1行,在出現的“插入新連接”對話框中(見圖3左側),系統默認的通信伙伴為同一項目的站SIMATIC 400(2)中的416-3 PN/DP,默認的連接類型為S7連接。單擊“確定”按鈕,確認默認的設置,出現S7連接屬性對話框,在“本地連接端點”區,復選框“單向”禁止選中,因此連接是雙向的,在圖3的連接表中,生成了相同的“本地ID”和“伙伴ID”。復選框“建立主動的連接”是默認的設置,選中該復選框時,連接表的“激活的連接伙伴”列將顯示“是”。在運行時,由本地節點建立連接。反之,顯示“否”,由通信伙伴建立連接。
組態好連接后,編譯并保存。組態信息被保存在系統數據中。將硬件和連接的組態信息下載到各自的CPU。
雙方的通信程序基本上相同。首先生成DB201和DB200,在數據塊中生成20個字節元素的數組ARAY。然后生成OB100,分別將M0.1和M1.0預置為1。然后創建功能塊FB100,在兩個FB100中分別調用系統功能SFB12和SFB13。最后在主程序OB1中分別調用FB100。組態和編程完成后的SIMATIC管理器如圖4所示。

圖4 SIMATIC管理器
SIMATIC 400(1)的OB1程序如圖5所示。

圖5 SIMATIC 400(1)的OB1的程序
在硬件組態時,CPU屬性對話框的“周期/時鐘存儲器”選項卡設置MB2為時鐘存儲器字節。第1秒計數器C1的值加上1,并存到地址DB201.DBW0中。
在FB100中調用SFB12,程序片段如圖6所示。

圖6 FB100中調用SFB12的程序片段
輸入參數ID為連接的標識符,R_ID用于區分同一連接中不同的SFB調用,發送方與接收方的R_ID應相同。
SIMATIC400(2)的OB1調用FB100的程序。FB100中調用SFB13。程序片段如圖7所示。

圖7 FB100中調用SFB13的程序片段
SFB13將接收的數據存到DB200.DB_VAR,并MOVE到QW1中。
仿真實驗過程如下:
1)在SIMATIC Manager中打開S7-PLCSIM,帶有實例標簽“S7-PLCSIM1”的第一個被仿真CPU的對話框被打開。
2)用戶從下拉框中選擇被組態的接口類型作為“TCP/IP”接口。
3)在SIMATIC Manager中,選中第一個S7站的塊文件夾,并裝載到S7-PLCSIM1中。
4)增加輸入、輸出等子窗口來監視并控制程序。
5)為了仿真其它CPU,用戶執行菜單命令“Simulation>New PLC”。“S7-PLCSIM2”對話框打開。
6)為了仿真第二個CPU,用戶從下拉框中選擇被組態的接口類型作為“TCP/IP”接口。
7)在SIMATIC Manager中,選擇第二個CPU的塊文件夾并裝載所有塊到實例“S7-PLCSIM2”中。在裝載之前必須選擇實例“S7-PLCSIM2”。同樣,添加輸入、輸出等子窗口。
仿真兩個S7-400CPU通訊的畫面如圖8所示。

圖8 仿真兩個S7-400CPU通訊的畫面
在S7-PLCSIM1(仿真站1)中,IB1控制計數器C1每秒加上1,然后發送計數值到S7-PLCSIM2(仿真站2)的QW1中[7-8]。如要仿真其它CPU,則重復4)~7)步。
S7通信主要用于西門子工控產品之間的通信,例如,S7-300/400CPU之間的主-主通信、CPU與人機界面和組態軟件WinCC之間的通信。文中通過PLCSIM仿真兩個S7-400PLC之間基于TCP/IP的S7通信,描述了實現S7通信的組態和編程方法。對于兩個以上的PLC之間的通信仿真,PLCSIM同樣支持。S7通信可以用于工業以太網、PROFIBUS或MPI網絡。這些網絡的S7通信的組態和編程方法基本相同。PLCSIM同樣支持S7-400基于MPI的S7通訊以及S7-400基于DP的S7通訊的仿真。
[1] 康軍,戴冠中.工業以太網遠程監控系統設計[J].計算機工程與設計,2005,26(6):1633-1638.
[2] 曹懷虎,余鎮危,王磊,等.以太網DCS中基于MODBUS/TCP協議通信的設計與實現[J].計算機工程與設計,2004,25(2):314-317.
[3] 馬光兵,張維勇,胡敏.基于TCP/IP網絡中多PLC通信的設計和實現[J].合肥工業大學學報:自然科學版,2003,26(2):218-222.
[4] 胡立坤,王慶超.基于以太網通信過程的實時改進方法研究[J].計算機工程與設計,2006,27(9):1516-1520.
[5] 廖常初.S7-300/400PLC應用教程[M].北京:中國機械工業出版社,2008.
[6] 劉楷,周海.深入淺出西門子S7-300PLC[M].北京:北京航空航天大學出版社,2004.
[7] 李丙林,宋殿斌,劉克平.PLC和觸摸屏在耐壓試驗監控系統中的應用[J].長春工業大學學報:自然科學版,2011,32(4):394-398.
[8] 唐重和,劉克平,金晶,等.DCS控制系統在分子蒸餾生產工藝中的應用[J].長春工業大學學報:自然科學版,2012,33(2):130-134.