楊艷偉 向樹民 段晨東



摘 要:文中介紹了在Windows環境下,VB與西門子S7-400系列 PLC的通信方法,并應用到北方重工特殊鋼廠30MN快鍛液壓機組控制系統中,實踐證明該方法通信實時性好,數據準確性高,滿足30MN快鍛液壓機組的工藝要求。
【關鍵詞】PLC VB 通信 以太網
1 引言
在智能控制的重型設備中,上位機的監控軟件顯得尤其重要。那么研究既能實現上位機和PLC的通信,又能滿足設備工藝要求的開發軟件有著實際而重要的意義。
2 軟件總體設計
30MN快鍛液壓機組的鍛打頻次達103次/min之多,要求同步顯示數據和曲線,并且這些數據和曲線要求具有記錄和查詢的功能。而Visual Basic(簡稱VB)作為一種可視化編程軟件,在開發圖形曲線顯示、數據庫等方面有著其它組態軟件不可比的優勢。因此,我們采用第三方軟件VB來開發30MN快鍛液壓機組上位機監控軟件,其主界面如圖1所示。
3 數據通信
3.1 通信軟件接口
解決西門子S7-400系列PLC與第三方應用軟件VB的通信是該項目上位機軟件開發成功的關鍵。經過調研,西門子公司發布的PRODAVE(Process Data Traffic 過程數據交換)MPI/IE軟件包是專門用于S7系列PLC與上位機第三方應用軟件之間數據通信的工具軟件包,該軟件包中集成了基于Windows操作系統的動態鏈接庫DLL函數,且可以通過MPI適配器(PC-Adaptor)、MPI通信處理器(CP5611卡)、工業以太網卡等硬件設備實現PLC和上位機之間數據通信。如圖2所示,本文通過一根網線把上位機的以太網卡,與PLC中的以太網模塊CP443硬件連接組成工業以太網絡,然后VB調用PRODAVE MPI/IE中函數實現S7-400 PLC與上位機的數據通信,并通過VB中的Adodc控件鏈接Access數據庫,查詢歷史記錄曲線并生成數據報表。
3.2 軟件接口配置
在上位機中設置控制面板“PG/PC”接口,添加應用程序訪問點,并指向上位機相應的以太網卡,如圖3所示。需要注意的是上位機的IP地址,要與以太網模塊CP443中的IP地址保持在同一個網段內,否則通信鏈接失敗,上位機與PLC就無法進行數據交換。
3.3 動態鏈接庫函數聲明
程序中用到的PRODAVE函數主要有:
(1)LoadConnection_ex6函數用于建立PLC與上位機的初始化鏈接。
(2)SetActiveConnection_ex6函數用于激活PLC與上位機的鏈接。
(3)UnloadConnection_ex6函數用于斷開PLC與上位機的鏈接。
(4)field_read_ex6函數用于從PLC DB塊中讀取連續的數據。
(5)field_write_ex6函數用于向PLC DB塊中寫入連續的數據。
通信開始之前首先要調用LoadConnection_ex6函數,來建立PLC與上位機的初始化鏈接,通信結束時要調用UnloadConnection_ex6函數來斷開PLC與上位機的鏈接,否則會引起上位機系統的異常。
VB在調用PRODAVE中函數之前,必須用Declare語句在模塊中聲明所要使用的DLL函數,以指明函數所在的DLL庫名和路徑,以及函數的參數說明,這樣Windows才能正確執行函數。程序中主要函數的聲明如下:
Declare Function LoadConnection_ex6 Lib "Prodave6.dll" (ByVal ConNr As Integer, ByVal AccessPoint As String, ByVal ConTableLen As Integer, pConTable As CON_TABLE_TYPE) As Long
//ConNr 鏈接號,有效值是0-63
//AccessPoint= "CP-TCPIP" 鏈接接入點
//ConTableLen=9 鏈接信號的長度
//pConTable.AdrType 連接類型,IP地址,PLC背板號,CPU槽號
Declare Function SetActiveConnection_ex6 Lib "Prodave6.dll" (ByVal ConNr As Integer) As Long
//激活鏈接號為ConNr的鏈接
Declare Function UnloadConnection_ex6 Lib "Prodave6.dll" (ByVal ConNr As Integer) As Long
//斷開鏈接號為ConNr的鏈接
Declare Function field_read_ex6 Lib "Prodave6.dll" (ByVal FieldType As Byte, ByVal blknr As Integer, ByVal StartNr As Integer, ByVal Amount As Long,BufLen As Long, pBuffer As Byte, pDatLen As Long) As Long
//從PLC DB塊中按數據字節讀取StartNr為起始字節地址Amount字節數的數據存入pBuffer緩沖區
//FieldType = Asc("d") 數值類型為Data Byte,按數據字節讀取數據
//Blknr=2 數據塊為DB2
//BufLen 緩沖區長度
//pDatLen緩沖區的數據字節長度的指針
Declare Function field_write_ex6 Lib "Prodave6.dll" (ByVal FieldType As Byte, ByVal blknr As Integer, ByVal StartNr As Integer, ByVal Amount As Long, BufLen As Long, pBuffer As Byte) As Long
//向PLC DB塊中寫入數據
3.3 Adodc控件連接Access數據庫
采集數據的最終目的不僅要把需要顯示的數據實時顯示在人機界面上,還要把數據記錄到數據庫中,以備日后查詢。VB中的Adodc控件是一個數據庫綁定控件,可以用該控件連接Access數據庫,對數據庫中的數據表進行編輯,如對數據表中的記錄進行查詢、增加、修改和刪除等。查詢數據表中數據的部分程序如下:
如圖4所示,查詢到數據以曲線的形式直觀的表示出來,以方便30MN快鍛液壓機組操作人員查詢各個比例閥的開關過程,以及閥之間的配合關系等。如果操作人員要對數據進行分析,也可以以數據報表的形式保存 。
4 結束語
實踐證明用VB調用PRODAVE動態鏈接庫集成的函數進行上位機監控軟件的開發,并通過工業以太網實現S7-400 PLC與上位機的通信,通信實時性好,數據準確性高,且滿足30MN快鍛液壓機組的工藝要求。
參考文獻
[1]Siemens PRODAVE MPI/IE V6.0 Manual (A5E00388168-01).Edition 05/2005.
[2]崔堅.西門子S7可編程序控制器—STEP7編程指南[M].北京:機械工業出版社,2007:257-270.
[3]明日科技,高春艷,劉彬彬,王斌.Visual Basic開發技術大全[M].北京:人民郵電出版社,2007:413-474.
[4]劉振東 梁秀滿.西門子S7-300/400 PLC與VB的通信方法[J].微計算機信息,2006(04S):55-56.
[5]郭春春,賀貴明,陳明榜,劉發慧.基于VB6.0的西門子PLC與PC的通信實現微機監控功能[J].可編程控制器與工廠自動化:plc Fa,2004:71-73.
作者單位
1.西安蘭石重工機械有限公司 陜西省西安市 710065
2.長安大學 陜西省西安市 710064