陸中杰, 郭勝軍
(中海網絡科技股份有限公司,上海 200135)
?
一種門式起重機監控管理系統的設計與實現
陸中杰,郭勝軍
(中海網絡科技股份有限公司,上海 200135)
為提高大型起重機械的安全管理水平,預防和減少起重機械重大事故發生,以S7-300系列可編程邏輯控制器(Programmable Logic Controller, PLC)為基礎進行數據采集,應用視窗控制中心(Windows Control Center, WinCC)組態軟件、VB、JAVA EE框架和關系數據庫的軟件技術設計和實現起重機監控管理系統(Crane Management System, CMS)。該系統不僅對提高港口大型起重機的安全管理水平、預防和減少起重機重特大事故發生具有重要意義,也為起重機管理信息化打下了基礎。
PLC; WinCC; 數據庫; JAVA EE; VB
門式起重機屬于大型起重機械的一種,具有場地利用率高、作業范圍大、適用面廣及通用性強等特點,在港口貨場得到了廣泛使用,主要用于料場貨、港口散貨等貨物的裝卸[1]。其金屬結構像門形框架;承載主梁下安裝有2條支腳,可直接在地面的軌道上行走;主梁兩端具有外伸懸臂梁。由于大型起重機械的安全生產形勢較為嚴峻,國家特種設備安全部門等相關機構聯合制定了《大型起重機械安裝安全監控管理系統實施方案》,要求推動大型起重機械監控管理系統的使用工作,以提高大型起重機械的安全性能,進而預防和減少起重機械重特大事故的發生。[2]
起重機監控管理系統(Crane Management System, CMS)是一個綜合性系統,融合了自動化、計算機、信息化、通信和檢測等多個領域的技術,具有集設備工作狀態監視、設備維護和保養、故障檢測和預防、運營和管理等功能于一體的管理平臺。[3]這里就起重機監控管理系統的設計和實現進行敘述。
起重機監控管理系統以可編程邏輯控制器(Programmable Loic Controller, PLC)為基礎進行數據采集,以服務器為數據管理中心進行數據管理,以視窗控制中心(Windows Control Center, WinCC)和WEB頁面為前端界面進行信息展示和交互,對起重機運行過程中的數據進行挖掘、處理和存儲,進而實現對起重機的全面監控和管理。
1.1硬件架構
起重機監控管理系統架構見圖1,其由本地LCMS系統和遠程RCMS系統兩部分構成,二者之間通過無線局域網進行數據交換。
1) 本地LCMS系統由信號采集PLC、LCMS客戶端、視頻系統、交換機及無線AP組成。LCMS中的信號采集PLC用于采集起重機的數據和信號;攝像機、編碼器和硬盤錄像機用于采集、存儲及傳輸視頻數據;LCMS客戶端用于監控起重機的過程數據和視頻數據,并通過無線局域網與RCMS通信。
2) RCMS系統由RCMS客戶端、WEB/數據庫服務器、交換機及無線AP組成。RCMS客戶端用于管理各個LCMS客戶端的數據,數據存儲在本地服務器,數據主要通過與LCMS端的數據庫進行同步來獲得;此外,服務器還提供WEB服務。
1.2軟件架構
從軟件的邏輯架構看,系統可分為數據存儲層、數據訪問層、數據通信層、業務邏輯層和應用層,其中:數據存儲層用于對數據庫進行CRUD(Create, Retrieve, Update, Delete)操作;數據訪問層封裝了數據存儲層的具體實現,為業務邏輯層訪問數據存儲層提供訪問接口;數據通信層通過WinCC的通信組件與PLC進行數據交換;業務邏輯層封裝了CMS系統的各個功能模塊,包含軌跡錄制、軌跡回放、視頻監控、報警管理和設備管理;應用層包含了WEB應用組件。系統邏輯架構見圖2。

圖1 系統結構

圖2 系統邏輯架構
1.3系統特點
系統以西門子WinCC組態系統軟件為主框架,結合ActiveX數據對象(ActiveX Data Objects, ADO)和VB控件進行開發,具備數據和狀態實時監控、歷史信息查詢、設備管理及報警管理等功能;其LCMS系統與RCMS系統間的故障和業務等信息具備實時一致性;同時,系統提供WEB服務,intranet用戶可通過瀏覽器查詢起重機的相關數據及其運行狀態。[4-5]
2.1運動軌跡記錄與回放
當起重機出現故障或發生事故時,發生時間點前后的相關數據(如起重機的位置、速度和載重,電機的轉速、電流等)能為故障或事故發生原因分析提供很大幫助。
通常軌跡記錄可使用定時可視化Basic腳本(Visual Basic Script, VBS)將需要記錄的數據寫入數據庫,但是數據記錄的頻率高、數量大,同時VBS的執行效率低,若長期頻繁地進行大規模的記錄插入操作,會導致軟件運行緩慢,影響系統響應速度。而WinCC本身具有變量記錄功能,其方式也是將數據記錄在數據庫內。相比前一種數據錄制方案,其性能更優,能以高頻率(10 ms級別)記錄大量變量而不影響軟件的整體性能。需注意,WinCC在寫入數據庫時對數據進行了壓縮,讀取時需用特別的方式進行還原。
軌跡回放時,先將選定時間長度的所有數據從數據庫中讀取到對應的內存數組中,隨后在回放時按系統采集頻率遍歷數組的數據。
2.2WinCC平臺視頻監控
通過硬盤錄像機和攝像機可簡單地實現視頻監控功能,并能在硬盤錄像機上查看圖像畫面。然而,系統為體現其整體性、提高集成度、實現數據的統一管理,考慮將視頻監控功能嵌入到WinCC中,充分縮減上位機操作軟件的類型和數量,提高系統的操作體驗。
由于WinCC屬于二次開發平臺,而硬盤錄像機提供的開發包是基于一次開發平臺的,因此不能直接在WinCC中針對硬盤錄像機進行編程開發。通常視頻編碼器提供SDK ActiveX控件,而WinNCC可嵌入VB控件,因此將視頻編碼器作為WinCC的視頻數據源。視頻信號經過視頻編碼器編碼后輸出到WinCC,通過對VB開發控件編程可實現在WinCC中視頻監控的功能。
2.3RCMS與PLC通信
RMCS主要用于集中管理碼頭的所有起重機。與LCMS側重于起重機的實時監控不同,RCMS側重于起重機的數據管理,提供起重機歷史數據的查詢、分析和報表等功能。因此,選用VB進行開發比選用WinCC更為合適。但是,RCMS也應具有部分實時數據監控功能作為輔助,因此必須與PLC通信來獲取數據。這里以西門子PLC為例,采用以太網連接方式,備選有以下3種通信方式。
1) MODBUS/TCP協議方式。需將PLC作為從站進行編程,調用標準MODBUS通信功能塊發送和接收數據;將VB作為主站,使用WINSOCKET 控件對MODBUS協議進行編程發送。采用該方式的優點是TCP協議與MODBUS協議的標準性和開放性,缺點是當需要改變監控數據時必須修改PLC程序。
2) OPC(OLE for Process Control)方式。需在RCMS端組態和配置OPC SERVER,同時在PLC中配置好S7連接通道。在VB環境中引用Simens OPC Daautomation 2.0后即可用西門子OPC SERVER的接口函數,對連接服務器、添加OPC組對象、添加數據項及同步數據讀寫進行編程。采用該方式的優點是在修改通信內容時不必改動PLC,直接修改OPC SERVER的配置即可;此外,OPC作為一個標準,使得RCMS端可連接不同廠商的PLC。采用該方式的缺點是數據需經過OPC SERVER中轉,通信延遲較高,數據刷新速度較低。
3) S7CONNECTION方式。使用S7協議可很容易地讀寫出各PLC內的I,Q,M,DB等區域的數值。由于S7協議是保密的,無法直接編程,因此PLC廠家專門開發了封裝S7通信協議的組件PRODAVE,提供了豐富的操作接口函數。采用該方式的優點是可以快速訪問PLC內任意存儲器的數據,且改變通信數據時無需改動PLC的配置和程序。采用該方式的缺點是其不支持并發連接,當前激活的連接只有1個時,必須將其關閉后才能切換到其他連接。
這里采用的是使用PRODAVE進行S7通信的方式。對比MODBUS/TCP方式,該方式無需修改PLC端程序;對比OPC方式,OPC服務器占用RCMS端資源多、通信延遲高、故障恢復周期長。對于其他品牌的PLC,既可選擇使用MODBUS/TCP和OPC等標準方式進行通信,也可針對PLC專用協議進行編程實現。
3.1PLC數據采集
起重機械的控制系統本身具有主控PLC,包含了大部分監控系統中需要采集的數據,可直接使用。但是,為將起重機控制系統本身與CMS管理系統區分開,同時又不破壞原起重機的PLC程序,需在LCMS中采用一套獨立的PLC來采集數據。LCMS的PLC可通過PROFIBUS-DP現場總線協議或MODBUS-RTU協議與起重機本地PLC通信來讀取需要監控的數據。此外,PLC中還配置了開關量信號、4~20 mA電流信號、0~10 V直流電壓信號和熱電阻信號的處理模塊,連接安裝在起重機上用來進行安全監測的傳感器以采集數據。
LCMS的PLC控制器一方面會將采集到的各種信號經處理后傳輸到WinCC的監控畫面上顯示,另一方面會判斷當前的狀態是否會觸發系統報警。在控制器中,根據不同的報警設置了不同的報警觸發位,一旦該位被置位,WinCC的報警系統就會給出報警提示。
3.2接口模塊
接口模塊是一種為WinCC和底層數據庫提供服務的中間件,其封裝了對數據庫的CRUD操作及一些業務邏輯,為WinCC訪問底層數據庫提供了統一的接口。接口模塊的開發環境是基于Visual Basic 6.0設置的[6]。
3.2.1模塊的結構
模塊的主體是類模塊,包含報警、回放和數據管理等3個模塊,用于存放一些共享屬性和方法,供類模塊中的方法調用。數據庫的訪問則使用了微軟的ADO應用接口。
3.2.2模塊中主要包含的函數
模塊中主要包含以下函數。
(1) Private Sub Class_Initialize():類模塊初始化,設置模塊必須的參數。
(2) Private Sub Class_Terminate():類模塊銷毀時,釋放所占用的資源。
(3) Public Sub OpenSQLServer():打開數據庫連接。
(4) Public Sub CloseSQLServer():關閉數據庫連接。
(5) Public Sub DBExecuteSQL(SQLStr As String):執行字符串語句SQL命令;參數SQLStr為字符串類型。
(6) Public Function DBGetRecordset(SQLStr As String) As ADODB.Recordset:查找字符串指定的數據庫記錄,返回記錄集對象;參數SQLStr為字符串類型SQL語句。
(7) Public Function CMSGetAlarmHistory(AlarmD As String, AlarmT As String, QType As Integer) As ADODB.Recordset:查找符合條件的歷史報警記錄,返回記錄集對象;參數AlarmD為日期字符串。
(8) Public Sub CMSAlarmProcessList(ByVal TagIDM As String):查詢當前的報警記錄。
(9) Public Sub CMSStartPlaying(ByVal SPointer As Integer):運動軌跡回放。
3.2.3模塊的使用
在開發環境中將接口模塊編譯成可執行文件并運行。在WinCC的VBS腳本編輯器中調用CreateObject方法創建接口模塊的對象實例,并通過對象實例調用類的方法實現業務邏輯。
3.3監控功能設計
LCMS端主要用于實時監控,其軟件采用西門子WinCC開發,根據功能分為起重機狀態實時監控、起重機運動軌跡回放、報警管理和視頻監控等界面。
3.3.1起重機狀態實時監控
起重機需要監控的數據量通常較大,將其全部顯示在同一個界面上顯然不太合適。因此,將狀態實時監控界面分為總體監控界面和分部監控界面兩部分,其中:總體監控界面中只顯示起重機最重要的數據;分部監控界面則根據起重機的特性,按照功能結構設計有大車監控、小車監控、起升監控和鉤移監控界面,所有監控的信號和數據都會在這些界面上顯示出來。
LCMS中的PLC負責采集起重機上所有需要監控的信號和數據,是起重機狀態實時監控的數據源。為將PLC采集到的數據顯示在界面上,必須在WinCC內建立通信變量,變量地址與PLC的內部地址對應。由于起重機會同時包含多個相同的部件,因此若需要創建的變量相同,則可以利用結構變量簡化工作量。此外,為保證數據的實時性,選用工業以太網作為傳輸介質。
3.3.2起重機運動軌跡回放
運動軌跡回放是指將人工選定時間段內的起重機狀態信號和數據動態地還原出來。這些數據來源于數據庫,當系統運行時起重機狀態數據會以較高的頻率存入數據庫。運動軌跡回放界面的功能主要包含獲取數據、保存數據和回放數據等3部分。
(1) 獲取數據:以起始時間和結束時間為條件查詢狀態數據,將得到的記錄集通過數據表格控件在界面上顯示出來,每一行數據代表某一個時刻所有記錄點的數據集合。
(2) 保存數據:創建EXCEL對象,將之前顯示在表格控件中的數據按行依次寫入EXCEL對象的表單中,最后保存為EXCEL文件。每執行一次軌跡回放,都將分別在本地和RCMS端生成一個數據文件。
(3) 回放數據:從生成的數據文件列表中選取一個數據文檔,讀取文檔中的起始時間、結束時間、記錄數目和每天記錄的具體數值,將其存放到一個2維數組中(其中:列表示每個不同的數據點對應到相應的變量;行表示不同的時間點)。回放時,根據采集的頻率將2維數組中的數據按行寫入對應的變量。界面上,通過將圖像的幾何屬性鏈接到變量實現動畫效果,圖像的幾何屬性隨著變量數值的變化而變化,能夠還原所選時間段內起重機運行的軌跡;同時,對于一些數值型的屬性(如電流),使用圖表控件顯示其波形。
3.3.3報警管理
報警列表分為當前報警列表和歷史報警列表,其中:當前報警列表只顯示當前存在的報警信息;歷史報警列表包含之前所有發生過的報警信息。當前報警列表的刷新由事件觸發,當PLC報警信號出現時,系統將報警相關信息記錄到當前報警和歷史報警的數據表中;當PLC報警信號消失時,當前報警數據表中對應的記錄將被刪除,同時更新歷史報警數據表中對應記錄的狀態。
RCMS端的數據庫將會同步本地的當前報警和歷史報警記錄。當本地更新當前報警和歷史報警時,將會把記錄同步到RCMS端。
3.3.4視頻監控
以MOXA視頻編碼器為例,通過其提供的SDK ActiveX控件[8]可將視頻監控畫面嵌入到WinCC中。畫面打開時必須初始化控件的以下屬性。
(1) HttpPort:Http的端口,通常是80。
(2) VideoProtocol:設置連接協議,可以是UDP/TCP/HTTP/Multicast。
(3) CHIndex:選擇顯示的視頻通道。
(4) StreamingType:設置編碼類型,可以是MPEG4/MJPEG/H.264。
(5) ServerIP:編碼器的IP地址。
此外,開發時需要用到的方法主要有以下幾種。
(1) Connect:連接到編碼器。
(2) Disconnect:斷開編碼器連接。
(3) SendCameraCommand:發送控制命令給攝像機,支持左移、右移、上移、下移、放大及縮小等指令。
3.4管理功能設計
RCMS端主要用于起重機群的管理,包含報警管理、運動軌跡回放管理、起重機運行維護管理、起重機實時監控等功能,側重于數據的查詢和報表。管理功能的數據源存儲在本地數據庫中,其中:報警和運動軌跡的數據由所有LCMS的數據庫通過事件觸發同步;運行維護的數據需要本地輸入。
以西門子PLC為例,運用PRODAVE提供的接口進行編程,實現RCMS與PLC的數據通信[9]。PRODAVE主要提供以下API。
(1) LoadConnection_ex6 :用于建立連接,初始化參數和適配器。
(2) UnloadConnection_ex6:關閉連接,必須在退出應用前調用。
(3) db_read_ex6:讀取背景數據塊中的數據。
(4) db_write_ex6:向背景數據塊中寫入數據。
(5) field_read_ex6:讀取I,Q,M等區域中的數據。
(6) field_write_ex6:向I,Q,M等區域中寫入數據。
3.5WEB 應用
服務器為接入到本系統的intranet用戶提供WEB應用,主要功能是在線數據查詢、分析和報表。
WEB應用的架構屬于輕量級JAVA EE,采用MVC架構模式使表現層、業務邏輯層和實體之間的代碼分離[10]。其基于STRUTS2和HIBERNATE框架,前者是較為成熟的MVC框架,核心是采用攔截器來處理請求;后者是著名的ORM框架,可使用對象編程思維來操縱數據庫[11-13]。在請求方式上,運用AJAX使頁面能夠實時響應請求,具體采用JQUERY+JSON實現。JQUERY是AJAX的一個框架,其實際上是一個輕量級的JavaScript庫。要實現異步請求就需要使用JQUERY中的.ajax()函數,該函數將請求通過GET或POST方式發送至服務器,STRUTS2的攔截器攔截到ACTION后執行相應的SERVICE,SERV-ICE通過DAO層對數據庫進行讀寫。當請求成功后,$.ajax()會回調一個包含STRUTS2返回數據的函
數,可以把返回數據顯示在頁面上。JSON是一種”KEY/VALUE”形式的數據格式,其優點是相比XML更小、更快、更容易解析。須注意,在STRUTS2中只有引入JSON的插件包才能使STRUTS2支持JSON。
將ADO,SQL及控件等技術應用到WinCC的平臺上開發了起重機監控管理系統,并結合PLC控制、信息技術、視頻技術及相關組件的應用構建了一個綜合性的系統平臺,實現了大型起重機的監控與管理。系統在架構上結合了自動化技術和信息化技術,借助互聯網技術將底層的過程數據融入到了企業的生產管理中,對提高企業的生產效率和管理水平具有積極作用。該系統的架構不局限于起重機監控領域的應用,同樣適用于其他類型設備的監控系統。
[1]大型船廠造船門式起重機安全監控管理系統研究與開發[J].機電工程,2014,31(1):72-75.
[2]GB/T 28264—2012,起重機械安全監控管理系統[S].北京:中國標準出版社出版,2012.
[3]楊繼雪,李麗.門座起重機網絡安全監控管理系統[J].起重運輸機械,2012(10):75-77.
[4]SCEPPA D. ADO.NET 2.0技術內幕[M].北京:清華大學出版社,2007.
[5]楊輝,劉海龍.塔式起重機遠程安全監控管理系統設計[J].自動化儀表,2012(10):27-29.
[6]羅朝盛.Visual Basic 6.0程序設計教程[M].3版.北京:人民郵電出版社,2009.
[7]姜桂洪.SQL Server 2005數據庫應用與開發[M].北京:清華大學出版社,2010.
[8]VPort SDK ActiveX Control,Moxa,2014.
[9]PRODAVE MPI/IE V6.2 Manual,simens,2012.
[10]李剛.輕量級Java EE企業應用實戰:Struts 2+Spring 3+Hibernate整合開發[M].北京:電子工業出版社,2008.
[11]誒克爾.JAVA編程思想[M].陳昊鵬北京:機械工業出版社,2007.
[12]李剛.Struts 2.x權威指南[M].北京:電子工業出版社,2012.
[13]孫衛琴.精通Hibernate:Java對象持久化技術詳解[M].北京:電子工業出版社,2010.
Design and implementation of Crane Management System
LU Zhongjie,GUO Shengjun
(ChinaShippingNetworkTechnologyCo.,Ltd,Shanghai200135,China)
The Crane Management System uses S7-300 PLC for data collection and the combination of software technologies, such as the WINCC, Java EE framework, visual basic and database technology, to build the crane management system. The system is an effective tool for improving the safety management, and the information management as well.
PLC; WINCC; database; Java EE framework; VB
2015-10-16
陸中杰(1982—),男,上海市人,工程師,主要從事工業自動化系統設計工作。
1674-5949(2016)01-076-05
TH213.5; TP277
A