錢 晨
(光大環保技術研究院(南京)有限公司 電控所,南京210003)
隨著光大環保業務的飛速發展,各個項目公司在垃圾焚燒的過程中每天都會產生大量的實時數據,這些數據來源廣、種類多、時效性不同,采集并管理好這些數據變得尤為重要。因此,擬在原有系統的基礎上,開發一套基于C/S 模式的OPC(OLE for process control)數據采集客戶端,用于采集現場各種類型的終端數據包括火焰監控攝像頭的信號狀態、現場儀器儀表的運行數據以及與OPC 服務端的連接情況等,從而對垃圾焚燒的整個流程進行集中式監控和分布式管理,可為生產管理提供高效穩定的信息傳輸,進一步為公司實現全廠信息化奠定基礎。
OPC 是一個用于過程控制的技術標準,它基于微軟的對象連接與嵌入OLE (object linking and embedding)、組件對象模型COM(component object model)和分布式COM 技術,采用C/S 模式制定了關于數據采集歷史趨勢以及事件報警等接口標準[1-4],只要客戶端服務端之間遵循這套接口規范,就可以進行透明的數據交換。基于OPC 的服務端/客戶端關系如圖1所示。

圖1 基于OPC 的服務端/客戶端關系Fig.1 Relationship between server/client based on OPC technology
由于采用了OPC 技術規范,OPC 服務器作為中介通過OPC 接口采集到智能儀表、PLC、DCS 以及SCADA 系統中的底層數據, 然后再通過OPC 接口把采集到的數據傳送給OPC 客戶端程序。此外,一個OPC 客戶端程序可以同時訪問多個OPC 服務器(包括本地和遠程),反之,一個OPC 服務器也可以作為多個OPC 客戶端程序的數據源。至此可以得出,OPC 技術標準的提出, 歸根結底就是為了能夠方便地采集各個網絡節點上的數據信息。
OPC 邏輯對象模型由服務器(Server)對象、組(Group)對象及數據項(Item)對象組成[5]。它們之間有著嚴格的層次關系,OPC 邏輯對象模型如圖2所示。Server 對象屬于最上層對象,該對象中包含OPC服務器的相關信息, 并提供創建和管理Group 對象的功能;Group 對象屬于中層對象, 由若干Item 對象組成, 同時提供操作Item 對象的功能;Item 對象屬于最底層對象,它是一個含有實際意義的過程變量,包含值(Value)、質量(Quality)、時間戳(Time Stamp)3 個重要屬性[6]。由此可知,OPC 客戶端程序要從服務器中采集數據,必須首先確定采集哪個服務器,其次從哪個組中采集,最后通過組對象讀取要采集的實際數據項即可。
基于OPC 接口技術的數據采集系統系統以Windows 7 32 位操作系統為平臺, 應用VC++6.0基于對話框的MFC Appwizard 開發。引入公開的OPCproxy.dll,OPCDA.dll 動態連接庫與OPC 讀寫接口,采用OLE 技術實現COM 對象的連接機制,通過COM 接口實現對象間的數據傳輸,同時采用共享內存的方法實現數據共享。

圖2 OPC 邏輯對象模型Fig.2 Model of OPC logical object
該系統的結構如圖3所示。OPC 服務端和客戶端兩COM 對象之間通過OPC 同步和異步接口進行數據交互,OPC 客戶端對外提供COM 接口接收優化控制程序修改后的Tag 數據, 同時通過管道通訊的方式將實時數據發送至后臺歷史數據存儲程序進行保存,OPC 客戶端內部創建共享內存, 利用內存共享的方式實現與人機界面和優化控制程序的數據共享。

圖3 系統整體結構框架Fig.3 Framework of system overall structure
在編寫程序之前,首先需要對Access 數據庫進行配置,具體配置如下:
1)點擊OPC 表,設置OPC 服務器的名稱、用戶名、 登錄密碼及OPC 域名等, 如果要連接遠程的OPC 服務器填寫對方的IP 地址即可。
2)點擊Tag 表,配置OPC 標簽點。項名由OPC服務器中的通道號、設備號和點名組成,其與OPC服務器中配置的信息一一對應,以避免在讀取該點的數據時將發生錯誤;記錄方式(保存方式)分為按時間間隔保存和按誤差超限保存;記錄間隔用于表示多久保存一次;誤差用于表示超過誤差閾值通過管道發送數據。
數據庫配置工作完成后進行程序編寫。OPC 客戶端程序實現流程如圖4所示。

圖4 OPC 客戶端程序實現流程Fig.4 Flow chart of OPC client program implementation
首先, 初始化ATL 和OLE, 這樣就可以使用COM 組件技術進行編程, 實現COM 對象間通訊和信息共享, 通過RegisterActiveObject 函數在注冊表中注冊EBHKCore。讀EBHKCore 配置文件,初始化相關全局變量, 創建CameraTag 對象及其對應的OPCTag 對象和共享內存變量; 讀數據庫文件EBHKCore.mdb,根據OPC 邏輯對象模型,按層次的方式創建OPCServer、OPCGroup 以及OPCTag 信息對象, 同時為每個OPCTag 信息對象創建共享內存變量;讀Combination.ini 文件,創建CombiTag 對象,同時生成對應的OPCTag 對象及共享內存變量。接著, 創建OPC 處理線程, 如果OPC 服務器連接成功,刷新OPCServer 的連接狀態,根據OPCServer 下的OPCTag 信息對象,創建OPCTag 對象;通過OPC的同步接口讀取OPC 服務端的Tag 標簽并刷新,之后每隔1 s 刷新一次OPC 服務端的連接情況, 一旦斷開后自動重連。然后,創建Camera 處理線程,根據配置文件中設定的間隔時間確定多久刷新一次火焰攝像頭的OPCTag 數值。最后,啟動并創建共享內存刷新線程,每隔1 s 通過OPCTag 更新一次共享內存變量。在所有線程創建并啟動后,初始化UI 列表界面,界面中的數值每1 s 更新一次。如果要退出則直接點擊退出按鈕,EBHKCore 核心控制程序停止刷新,隱藏UI 界面,釋放內存空間后退出。
為了保證數據采集的穩定性和可靠性,該系統不僅采用多線程的方式,實現了每個OPC 連接獨立運行, 還提供OPC 連接斷開后自動重連的功能,其實現原理如圖5所示。
通過循環一直不停地查看采集系統連接OPC服務器的狀態。如果獲取到連接的OPC 服務器斷開,OPCServer 對象的屬性m_OpcState=OPC_STATE_DISCONNECTED,按層次刪除OPCServer 對象下所有的OPCGroup 對象、OpcTag 對象, 同時把連接時間累計(OPCServer 對象的屬性m_iConnectingTime-Count) 置為零。當再次進入循環時,m_OpcState=OPC_STATE_CONNECTING(OPCServer 處于正在連接狀態)。隨著循環累計次數的增加,m_iConnectingTimeCount 也不停增加。當m_iConnectingTime-Count 達到配置文件中設置的閾值(OPCServer 對象的屬性g_iConnectingTimeMulti)時,再次判斷OPCServer 的連接狀態。如果連接成功則顯示重新連接成功, 同時根據OPCServer 對象下的OPCTag 信息對象創建OpcTag 對象, 讀取OPC 服務端的數據并刷新, 此時UI 界面上Tag 點及其數據全部展示出來; 如果連接失敗,m_OpcState=OPC_STATE_DISCONNECTED, 按層次刪除OPCServer 對象下所有的OPCGroup 對象、OpcTag 對象, 同時把m_iConnectingTimeCount 置為零。該系統采用時間累計機制代替斷開后立刻重連的主要目的在于, 等待(30*m_iConnectingTimeCount)s 后OPC 服務端所有位號加載穩定后, 再進行OPC 客戶端的位號加載,這樣可以保證采集數據的有效性和完整性。

圖5 自動重連原理Fig.5 Schematic of automatic reconnection
采集系統開發完成后,經調試,運行狀態良好。系統運行界面如圖6所示。界面中自上而下顯示:“OPC 總數” 即為連接的OPC 服務器個數;“數據總數”即為OPCTag 的個數;羅列出所有類型的OPCTag,包括數據庫中的Tag,CameraTag,CombiTag,OPC 服務端連接狀態, 等;OPC 服務器清單羅列出所有連接該系統的Opc 服務器, 包括本地和遠程的;“退出”按鈕,點擊該按鈕則程序自動退出。

圖6 系統運行界面Fig.6 Interface of system operation
所設計的基于OPC 技術垃圾焚燒數據采集系統,采用面向對象的程序設計語言和傳統的OPC 接口技術,實現了單一客戶端對多個OPC 服務器的數據采集,同時提供COM 接口、共享內存技術、C/S 匿名管道的通訊方式給優化控制程序、人機界面以及后臺歷史服務程序使用。該系統經過了在線測試以及現場試運行階段,已正式投入使用,并在各個項目公司取得良好的效果。
11月份工業機器人產量企穩回升
機器人產業或將迎來拐點。近日,國家統計局發布數據顯示,2019年11月份,工業機器人產量達16080 臺,同比增長4.3%,這是繼2018年9月份工業機器人產量開始陷入負增長后,連續兩個月回正。專家表示,受到汽車產業下滑影響,工業機器人需求一度大幅下降,但長期來看機器換人大勢不可逆轉,未來機器人產業還將保持高景氣度。不過,工業機器人增長將放緩,服務機器人將保持高位增長。
經濟日報記者了解到,目前搬運和上下料仍然是機器人最主要的應用領域,尤其是汽車和電子信息行業,占比達到60%。
“盡管今年以來,機器人產業面臨壓力,一些核心技術及關鍵技術零部件受制于人,但這恰好是機器人產業優化結構,實現健康發展的黃金時期。”工業和信息化部裝備工業司副司長羅俊杰表示,從國內看,應用領域和場景不斷拓展,機器人發展勢頭依然強勁。
“機器人產業的短期下滑只是周期性的,長期來看仍將保持快速增長。”李群自動化聯合創始人、CEO 石金博告訴經濟日報記者, 在剛結束的2019日本IREX 機器人展上, 該公司自主研發的全品類、9 大系列、30 款型號產品首次亮相就引來全世界的關注。在石金博看來,李群自動化之所以在國際舞臺競爭中不落下風,關鍵在于自主創新。“從應用層到頂層,包括機器人設計、系統、控制、應用,自主研發的核心技術,正是李群自動化產品的優勢。”石金博說。
根據中國電子信息產業發展研究院預測, 未來3年機器人市場規模將保持27%以上的增速,2019年中國機器人市場規模將超過761 億元。從細分市場結構來看,工業機器人的規模比例仍然占據優勢,但增速放緩,服務機器人將保持快速增長。企業智能化改造、行業應用場景持續優化,以及人工智能、大數據等新技術的應用,都成為驅動中國機器人市場快速發展的主要因素。
有數據顯示,目前中國機器人企業已經占據了中國市場近三分之一的份額。在未來的市場競爭中,與國際巨頭相比,中國企業也有不少競爭優勢。
“中國工業機器人產業與發達國家相比有不小差距,但在某些領域國外并沒有相關應用,比如通用型機器人,正是市場突出重圍的機會。”石金博認為,中國制造業體系非常龐大,當中有大量需要靠自動化技術提升的環節,中國機器人企業能夠更有針對性地優化。“這需要到第一線獲得客戶的工藝要求,進而將工藝提前應用到機器人上,后續可以服務更多集成商或客戶。”
當前,機器人應用主要集中在汽車和電子產業,其他領域的推廣潛力巨大。電子、汽車、新能源等領域只是很小的一部分。隨著智能制造的推進,工業機器人應用正在從汽車和電子行業快速向冶金、輕工、金屬加工、石油化工、食品飲料、醫藥健康等行業發展。其應用行業已從2015年國民經濟87 個種類擴展到2018年的129 個種類。未來,服務機器人將從過去掃地、清潔等機器人,向教育、醫療、陪護、配送等多維度延伸。
來源:經濟日報