3.1PLC數(shù)據(jù)采集
起重機械的控制系統(tǒng)本身具有主控PLC,包含了大部分監(jiān)控系統(tǒng)中需要采集的數(shù)據(jù),可直接使用。但是,為將起重機控制系統(tǒng)本身與CMS管理系統(tǒng)區(qū)分開,同時又不破壞原起重機的PLC程序,需在LCMS中采用一套獨立的PLC來采集數(shù)據(jù)。LCMS的PLC可通過PROFIBUS—DP現(xiàn)場總線協(xié)議或MODBus.RTu協(xié)議與起重機本地PLC通信來讀取需要監(jiān)控的數(shù)據(jù)。此外,PLC中還配置了開關量信號、4~20mA電流信號、O~1OV直流電壓信號和熱電阻信號的處理模塊,連接安裝在起重機上用來進行安全監(jiān)測的傳感器以采集數(shù)據(jù)。
LCMS的PLC控制器一方面會將采集到的各種信號經(jīng)處理后傳輸?shù)絎inCC的監(jiān)控畫面上顯示,另一方面會判斷當前的狀態(tài)是否會觸發(fā)系統(tǒng)報警。在控制器中,根據(jù)不同的報警設置了不同的報警觸發(fā)位,一旦該位被置位,WinCC的報警系統(tǒng)就會給出報警提示。
3.2接口模塊
接口模塊是一種為WinCC和底層數(shù)據(jù)庫提供服務的中間件,其封裝了對數(shù)據(jù)庫的CRUD操作及一些業(yè)務邏輯,為WinCC訪問底層數(shù)據(jù)庫提供了統(tǒng)一的接口。接口模塊的開發(fā)環(huán)境是基于VisualBasic6.0設
置的。。
3.2.1模塊的結構
模塊的主體是類模塊,包含報警、回放和數(shù)據(jù)管理等3個模塊,用于存放一些共享屬性和方法,供類模塊中的方法調用。數(shù)據(jù)庫的訪問則使用了微軟的ADO應用接口。
3.2.2模塊中主要包含的函數(shù)
模塊中主要包含以下函數(shù)。
(1)PrivateSubClass—Initialize():類模塊初始化,設置模塊必須的參數(shù)。
(2)PrivateSubClass—Terminate():類模塊銷毀時,釋放所占用的資源。
(3)PublicSubOpenSQLServer():打開數(shù)據(jù)庫連接。
(4)PublicSubCloseSQLServer():關閉數(shù)據(jù)庫連接。
(5)PublicSubDBExecuteSQL(SQLStrAsString):執(zhí)行字符串語句sQL命令;參數(shù)SQLStr為字符串類型。
(6)PublicFunctionDBGetRecordset(SQLStrAsString)AsADODB.Recordset:查找字符串指定的數(shù)據(jù)庫記錄,返回記錄集對象;參數(shù)SQLStr為字符串類型SQL語句。
(7)PublicFunctionCMSGetAlarmHistory(AlarmDAsString,AlarmTAsString,QTypeAsInte—ger)AsADODB.Recordset:查找符合條件的歷史報警記錄,返回記錄集對象;參數(shù)AlarmD為日期字符串。
(8)PublicSubCMSAlarmProcessList(ByValTagIDMAsString):查詢當前的報警記錄。
(9)PublicSubCMSStartPlaying(ByValSPointerAsInteger):運動軌跡回放。
3.2.3模塊的使用
在開發(fā)環(huán)境中將接口模塊編譯成可執(zhí)行文件并運行。在WinCC的VBS腳本編輯器中調用CreateOb-ject方法創(chuàng)建接口模塊的對象實例,并通過對象實例調用類的方法實現(xiàn)業(yè)務邏輯。
3.3起重機監(jiān)控功能設計
LCMS端主要用于實時監(jiān)控,其軟件采用西門子WinCC開發(fā),根據(jù)功能分為起重機狀態(tài)實時監(jiān)控、起重機運動軌跡回放、報警管理和視頻監(jiān)控等界面。
3.3.1起重機狀態(tài)實時監(jiān)控
起重機需要監(jiān)控的數(shù)據(jù)量通常較大,將其全部顯示在同一個界面上顯然不太合適。因此,將狀態(tài)實時監(jiān)控界面分為總體監(jiān)控界面和分部監(jiān)控界面兩部分,其中:總體監(jiān)控界面中只顯示起重機最重要的數(shù)據(jù);分部監(jiān)控界面則根據(jù)起重機的特性,按照功起重機安全監(jiān)控管理系統(tǒng)構設計有大車監(jiān)控、小車監(jiān)控、起升監(jiān)控和鉤移監(jiān)控界面,所有監(jiān)控的信號和數(shù)據(jù)都會在這些界面上顯示出來。LCMS中的PLC負責采集起重機上所有需要監(jiān)控的信號和數(shù)據(jù),是起重機狀態(tài)實時監(jiān)控的數(shù)據(jù)源。為將PLC采集到的數(shù)據(jù)顯示在界面上,必須在WinCC內建立通信變量,變量地址與PLC的內部地址對應。由于起重機會同時包含多個相同的部件,因此若需要創(chuàng)建的變量相同,則可以利用結構變量簡化工作量。此外,為保證數(shù)據(jù)的實時性,選用工業(yè)以太網(wǎng)作為傳輸介質。
3.3.2起重機運動軌跡回放
運動軌跡回放是指將人工選定時間段內的起重機狀態(tài)信號和數(shù)據(jù)動態(tài)地還原出來。這些數(shù)據(jù)來源于數(shù)據(jù)庫,當起重機安全監(jiān)控管理系統(tǒng)運行時起重機狀態(tài)數(shù)據(jù)會以較高的頻率存人數(shù)據(jù)庫。運動軌跡回放界面的功能主要包含獲取數(shù)據(jù)、保存數(shù)據(jù)和回放數(shù)據(jù)等3部分。
(1)獲取數(shù)據(jù):以起始時間和結束時間為條件查詢狀態(tài)數(shù)據(jù),將得到的記錄集通過數(shù)據(jù)表格控件在界面上顯示出來,每一行數(shù)據(jù)代表某一個時刻所有記錄點的數(shù)據(jù)集合。
(2)保存數(shù)據(jù):創(chuàng)建EXCEL對象,將之前顯示在表格控件中的數(shù)據(jù)按行依次寫入EXCEL對象的表單中,最后保存為EXCEL文件。每執(zhí)行一次軌跡回放,都將分別在本地和RCMS端生成一個數(shù)據(jù)文件。
(3)回放數(shù)據(jù):從生成的數(shù)據(jù)文件列表中選取一個數(shù)據(jù)文檔,讀取文檔中的起始時間、結束時間、記錄數(shù)目和每天記錄的具體數(shù)值,將其存放到一個2維數(shù)組中(其中:列表示每個不同的數(shù)據(jù)點對應到相應的變量;行表示不同的時間點)。回放時,根據(jù)采集的頻率將2維數(shù)組中的數(shù)據(jù)按行寫入對應的變量。界面上,通過將圖像的幾何屬性鏈接到變量實現(xiàn)動畫效果,圖像的幾何屬性隨著變量數(shù)值的變化而變化,能夠還原所選時間段內起重機運行的軌跡;同時,對于一些數(shù)值型的屬性(如電流),使用圖表控件顯示其波形。
3.3.3報警管理
報警列表分為當前報警列表和歷史報警列表,其中:當前報警列表只顯示當前存在的報警信息;歷史報警列表包含之前所有發(fā)生過的報警信息。當前報警列表的刷新由事件觸發(fā),當PLC報警信號出現(xiàn)時,起重機安全監(jiān)控管理系統(tǒng)
將報警相關信息記錄到當前報警和歷史報警的數(shù)據(jù)表中;當PLC報警信號消失時,當前報警數(shù)據(jù)表中對應的記錄將被刪除,同時更新歷史報警數(shù)據(jù)表中對應記錄的狀態(tài)。RCMS端的數(shù)據(jù)庫將會同步本地的當前報警和歷史報警記錄。當本地更新當前報警和歷史報警時,將會把記錄同步到RCMS端。
3.3.4起重機視頻監(jiān)控
以M0XA視頻編碼器為例,通過其提供的SDKActiveX控件可將視頻監(jiān)控畫面嵌入到WinCC中。畫面打開時必須初始化控件的以下屬性。
(1)HttpPort:Http的端口,通常是80。
(2)VideoProtocol:設置連接協(xié)議,可以是UDP/TCP/HTTP/Multicast。
(3)CHIndex:選擇顯示的視頻通道。
(4)StreamingType:設置編碼類型,可以是MPEG4/MJPEG/H.264。
(5)ServerIP:編碼器的IP地址。此外,開發(fā)時需要用到的方法主要有以下幾種。
(1)Connect:連接到編碼器。
(2)Disconnect:斷開編碼器連接。
(3)SendCameraCommand:發(fā)送控制命令給攝像機,支持左移、右移、上移、下移、放大及縮小等指令。
3.4管理功能設計
RCMS端主要用于起重機群的管理,包含報警管理、運動軌跡回放管理、起重機運行維護管理、起重機實時監(jiān)控等功能,側重于數(shù)據(jù)的查詢和報表。管理功能的數(shù)據(jù)源存儲在本地數(shù)據(jù)庫中,其中:報警和運動軌跡的數(shù)據(jù)由所有LCMS的數(shù)據(jù)庫通過事件觸發(fā)同步;運行維護的數(shù)據(jù)需要本地輸入。以西門子PLC為例,運用PRODAVE提供的接口進行編程,實現(xiàn)RCMS與PLC的數(shù)據(jù)通信[9]。PRO—
DAVE主要提供以下API。
(1)LoadConnection—ex6:用于建立連接,初始化參數(shù)和適配器。
(2)UnloadConnection—ex6:關閉連接,必須在退出應用前調用。
(3)db—read—ex6:讀取背景數(shù)據(jù)塊中的數(shù)據(jù)。
(4)db—write—ex6:向背景數(shù)據(jù)塊中寫人數(shù)據(jù)。
(5)field—read—ex6:讀取I,Q,M等區(qū)域中的數(shù)據(jù)。
(6)field—write—ex6:向I,Q,M等區(qū)域中寫人數(shù)據(jù)。
3.5WEB應用
服務器為接入到本系統(tǒng)的intranet用戶提供WEB應用,主要功能是在線數(shù)據(jù)查詢、分析和報表。WEB應用的架構屬于輕量級JAVAEE,采用MVC架構模式使表現(xiàn)層、業(yè)務邏輯層和實體之間的代碼分離[1。。。其基于STRUTS2和HIBERNATE框架,前者是較為成熟的MVC框架,核心是采用攔截器來處理請求;后者是著名的ORM框架,可使用對象編程思維來操縱數(shù)據(jù)庫口¨]。在請求方式上,運用AJAX使頁面能夠實時響應請求,具體采用JQUERY+JSON實現(xiàn)。JQUERY是AJAX的一個框架,其實際上是一個輕量級的JavaScript庫。要實現(xiàn)異步請求就需要使用JQUERY中的.a(chǎn)jax()函數(shù),該函數(shù)將請求通過GET或POST方式發(fā)送至服務器,STRUTS2的攔截器攔截到ACTION后執(zhí)行相應的SERVICE,SERV-ICE通過DAO層對數(shù)據(jù)庫進行讀寫。當請求成功后,$.a(chǎn)jax()會回調一個包含STRUTS2返回數(shù)據(jù)的函數(shù),可以把返回數(shù)據(jù)顯示在頁面上。JSON是一種”KEY/VALUE”形式的數(shù)據(jù)格式,其優(yōu)點是相比XML更小、更快、更容易解析。須注意,在STRUTS2中只有引入JSON的插件包才能使STRUTS2支持JSON。
4結語
將ADO,SQL及控件等技術應用到WinCC的平臺上開發(fā)了起重機監(jiān)控管理系統(tǒng),并結合PLC控制、信息技術、視頻技術及相關組件的應用構建了一個綜合性的起重機安全監(jiān)控管理系統(tǒng)平臺,實現(xiàn)了大型起重機的監(jiān)控與管理。系統(tǒng)在架構上結合了自動化技術和信息化技術,借助互聯(lián)網(wǎng)技術將底層的過程數(shù)據(jù)融人到了企業(yè)的生產(chǎn)管理中,對提高企業(yè)的生產(chǎn)效率和管理水平具有積極作用。該系統(tǒng)的架構不局限于起重機監(jiān)控領域的應用,同樣適用于其他類型設備的監(jiān)控系統(tǒng)。