錢 晨
(光大環(huán)保技術(shù)研究院(南京)有限公司 電控所,南京210003)
隨著光大環(huán)保業(yè)務(wù)的飛速發(fā)展,各個(gè)項(xiàng)目公司在垃圾焚燒的過程中每天都會(huì)產(chǎn)生大量的實(shí)時(shí)數(shù)據(jù),這些數(shù)據(jù)來源廣、種類多、時(shí)效性不同,采集并管理好這些數(shù)據(jù)變得尤為重要。因此,擬在原有系統(tǒng)的基礎(chǔ)上,開發(fā)一套基于C/S 模式的OPC(OLE for process control)數(shù)據(jù)采集客戶端,用于采集現(xiàn)場各種類型的終端數(shù)據(jù)包括火焰監(jiān)控?cái)z像頭的信號(hào)狀態(tài)、現(xiàn)場儀器儀表的運(yùn)行數(shù)據(jù)以及與OPC 服務(wù)端的連接情況等,從而對(duì)垃圾焚燒的整個(gè)流程進(jìn)行集中式監(jiān)控和分布式管理,可為生產(chǎn)管理提供高效穩(wěn)定的信息傳輸,進(jìn)一步為公司實(shí)現(xiàn)全廠信息化奠定基礎(chǔ)。
OPC 是一個(gè)用于過程控制的技術(shù)標(biāo)準(zhǔn),它基于微軟的對(duì)象連接與嵌入OLE (object linking and embedding)、組件對(duì)象模型COM(component object model)和分布式COM 技術(shù),采用C/S 模式制定了關(guān)于數(shù)據(jù)采集歷史趨勢以及事件報(bào)警等接口標(biāo)準(zhǔn)[1-4],只要客戶端服務(wù)端之間遵循這套接口規(guī)范,就可以進(jìn)行透明的數(shù)據(jù)交換?;贠PC 的服務(wù)端/客戶端關(guān)系如圖1所示。
圖1 基于OPC 的服務(wù)端/客戶端關(guān)系Fig.1 Relationship between server/client based on OPC technology
由于采用了OPC 技術(shù)規(guī)范,OPC 服務(wù)器作為中介通過OPC 接口采集到智能儀表、PLC、DCS 以及SCADA 系統(tǒng)中的底層數(shù)據(jù), 然后再通過OPC 接口把采集到的數(shù)據(jù)傳送給OPC 客戶端程序。此外,一個(gè)OPC 客戶端程序可以同時(shí)訪問多個(gè)OPC 服務(wù)器(包括本地和遠(yuǎn)程),反之,一個(gè)OPC 服務(wù)器也可以作為多個(gè)OPC 客戶端程序的數(shù)據(jù)源。至此可以得出,OPC 技術(shù)標(biāo)準(zhǔn)的提出, 歸根結(jié)底就是為了能夠方便地采集各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上的數(shù)據(jù)信息。
OPC 邏輯對(duì)象模型由服務(wù)器(Server)對(duì)象、組(Group)對(duì)象及數(shù)據(jù)項(xiàng)(Item)對(duì)象組成[5]。它們之間有著嚴(yán)格的層次關(guān)系,OPC 邏輯對(duì)象模型如圖2所示。Server 對(duì)象屬于最上層對(duì)象,該對(duì)象中包含OPC服務(wù)器的相關(guān)信息, 并提供創(chuàng)建和管理Group 對(duì)象的功能;Group 對(duì)象屬于中層對(duì)象, 由若干Item 對(duì)象組成, 同時(shí)提供操作Item 對(duì)象的功能;Item 對(duì)象屬于最底層對(duì)象,它是一個(gè)含有實(shí)際意義的過程變量,包含值(Value)、質(zhì)量(Quality)、時(shí)間戳(Time Stamp)3 個(gè)重要屬性[6]。由此可知,OPC 客戶端程序要從服務(wù)器中采集數(shù)據(jù),必須首先確定采集哪個(gè)服務(wù)器,其次從哪個(gè)組中采集,最后通過組對(duì)象讀取要采集的實(shí)際數(shù)據(jù)項(xiàng)即可。
基于OPC 接口技術(shù)的數(shù)據(jù)采集系統(tǒng)系統(tǒng)以Windows 7 32 位操作系統(tǒng)為平臺(tái), 應(yīng)用VC++6.0基于對(duì)話框的MFC Appwizard 開發(fā)。引入公開的OPCproxy.dll,OPCDA.dll 動(dòng)態(tài)連接庫與OPC 讀寫接口,采用OLE 技術(shù)實(shí)現(xiàn)COM 對(duì)象的連接機(jī)制,通過COM 接口實(shí)現(xiàn)對(duì)象間的數(shù)據(jù)傳輸,同時(shí)采用共享內(nèi)存的方法實(shí)現(xiàn)數(shù)據(jù)共享。
圖2 OPC 邏輯對(duì)象模型Fig.2 Model of OPC logical object
該系統(tǒng)的結(jié)構(gòu)如圖3所示。OPC 服務(wù)端和客戶端兩COM 對(duì)象之間通過OPC 同步和異步接口進(jìn)行數(shù)據(jù)交互,OPC 客戶端對(duì)外提供COM 接口接收優(yōu)化控制程序修改后的Tag 數(shù)據(jù), 同時(shí)通過管道通訊的方式將實(shí)時(shí)數(shù)據(jù)發(fā)送至后臺(tái)歷史數(shù)據(jù)存儲(chǔ)程序進(jìn)行保存,OPC 客戶端內(nèi)部創(chuàng)建共享內(nèi)存, 利用內(nèi)存共享的方式實(shí)現(xiàn)與人機(jī)界面和優(yōu)化控制程序的數(shù)據(jù)共享。
圖3 系統(tǒng)整體結(jié)構(gòu)框架Fig.3 Framework of system overall structure
在編寫程序之前,首先需要對(duì)Access 數(shù)據(jù)庫進(jìn)行配置,具體配置如下:
1)點(diǎn)擊OPC 表,設(shè)置OPC 服務(wù)器的名稱、用戶名、 登錄密碼及OPC 域名等, 如果要連接遠(yuǎn)程的OPC 服務(wù)器填寫對(duì)方的IP 地址即可。
2)點(diǎn)擊Tag 表,配置OPC 標(biāo)簽點(diǎn)。項(xiàng)名由OPC服務(wù)器中的通道號(hào)、設(shè)備號(hào)和點(diǎn)名組成,其與OPC服務(wù)器中配置的信息一一對(duì)應(yīng),以避免在讀取該點(diǎn)的數(shù)據(jù)時(shí)將發(fā)生錯(cuò)誤;記錄方式(保存方式)分為按時(shí)間間隔保存和按誤差超限保存;記錄間隔用于表示多久保存一次;誤差用于表示超過誤差閾值通過管道發(fā)送數(shù)據(jù)。
數(shù)據(jù)庫配置工作完成后進(jìn)行程序編寫。OPC 客戶端程序?qū)崿F(xiàn)流程如圖4所示。
圖4 OPC 客戶端程序?qū)崿F(xiàn)流程Fig.4 Flow chart of OPC client program implementation
首先, 初始化ATL 和OLE, 這樣就可以使用COM 組件技術(shù)進(jìn)行編程, 實(shí)現(xiàn)COM 對(duì)象間通訊和信息共享, 通過RegisterActiveObject 函數(shù)在注冊表中注冊EBHKCore。讀EBHKCore 配置文件,初始化相關(guān)全局變量, 創(chuàng)建CameraTag 對(duì)象及其對(duì)應(yīng)的OPCTag 對(duì)象和共享內(nèi)存變量; 讀數(shù)據(jù)庫文件EBHKCore.mdb,根據(jù)OPC 邏輯對(duì)象模型,按層次的方式創(chuàng)建OPCServer、OPCGroup 以及OPCTag 信息對(duì)象, 同時(shí)為每個(gè)OPCTag 信息對(duì)象創(chuàng)建共享內(nèi)存變量;讀Combination.ini 文件,創(chuàng)建CombiTag 對(duì)象,同時(shí)生成對(duì)應(yīng)的OPCTag 對(duì)象及共享內(nèi)存變量。接著, 創(chuàng)建OPC 處理線程, 如果OPC 服務(wù)器連接成功,刷新OPCServer 的連接狀態(tài),根據(jù)OPCServer 下的OPCTag 信息對(duì)象,創(chuàng)建OPCTag 對(duì)象;通過OPC的同步接口讀取OPC 服務(wù)端的Tag 標(biāo)簽并刷新,之后每隔1 s 刷新一次OPC 服務(wù)端的連接情況, 一旦斷開后自動(dòng)重連。然后,創(chuàng)建Camera 處理線程,根據(jù)配置文件中設(shè)定的間隔時(shí)間確定多久刷新一次火焰攝像頭的OPCTag 數(shù)值。最后,啟動(dòng)并創(chuàng)建共享內(nèi)存刷新線程,每隔1 s 通過OPCTag 更新一次共享內(nèi)存變量。在所有線程創(chuàng)建并啟動(dòng)后,初始化UI 列表界面,界面中的數(shù)值每1 s 更新一次。如果要退出則直接點(diǎn)擊退出按鈕,EBHKCore 核心控制程序停止刷新,隱藏UI 界面,釋放內(nèi)存空間后退出。
為了保證數(shù)據(jù)采集的穩(wěn)定性和可靠性,該系統(tǒng)不僅采用多線程的方式,實(shí)現(xiàn)了每個(gè)OPC 連接獨(dú)立運(yùn)行, 還提供OPC 連接斷開后自動(dòng)重連的功能,其實(shí)現(xiàn)原理如圖5所示。
通過循環(huán)一直不停地查看采集系統(tǒng)連接OPC服務(wù)器的狀態(tài)。如果獲取到連接的OPC 服務(wù)器斷開,OPCServer 對(duì)象的屬性m_OpcState=OPC_STATE_DISCONNECTED,按層次刪除OPCServer 對(duì)象下所有的OPCGroup 對(duì)象、OpcTag 對(duì)象, 同時(shí)把連接時(shí)間累計(jì)(OPCServer 對(duì)象的屬性m_iConnectingTime-Count) 置為零。當(dāng)再次進(jìn)入循環(huán)時(shí),m_OpcState=OPC_STATE_CONNECTING(OPCServer 處于正在連接狀態(tài))。隨著循環(huán)累計(jì)次數(shù)的增加,m_iConnectingTimeCount 也不停增加。當(dāng)m_iConnectingTime-Count 達(dá)到配置文件中設(shè)置的閾值(OPCServer 對(duì)象的屬性g_iConnectingTimeMulti)時(shí),再次判斷OPCServer 的連接狀態(tài)。如果連接成功則顯示重新連接成功, 同時(shí)根據(jù)OPCServer 對(duì)象下的OPCTag 信息對(duì)象創(chuàng)建OpcTag 對(duì)象, 讀取OPC 服務(wù)端的數(shù)據(jù)并刷新, 此時(shí)UI 界面上Tag 點(diǎn)及其數(shù)據(jù)全部展示出來; 如果連接失敗,m_OpcState=OPC_STATE_DISCONNECTED, 按層次刪除OPCServer 對(duì)象下所有的OPCGroup 對(duì)象、OpcTag 對(duì)象, 同時(shí)把m_iConnectingTimeCount 置為零。該系統(tǒng)采用時(shí)間累計(jì)機(jī)制代替斷開后立刻重連的主要目的在于, 等待(30*m_iConnectingTimeCount)s 后OPC 服務(wù)端所有位號(hào)加載穩(wěn)定后, 再進(jìn)行OPC 客戶端的位號(hào)加載,這樣可以保證采集數(shù)據(jù)的有效性和完整性。
圖5 自動(dòng)重連原理Fig.5 Schematic of automatic reconnection
采集系統(tǒng)開發(fā)完成后,經(jīng)調(diào)試,運(yùn)行狀態(tài)良好。系統(tǒng)運(yùn)行界面如圖6所示。界面中自上而下顯示:“OPC 總數(shù)” 即為連接的OPC 服務(wù)器個(gè)數(shù);“數(shù)據(jù)總數(shù)”即為OPCTag 的個(gè)數(shù);羅列出所有類型的OPCTag,包括數(shù)據(jù)庫中的Tag,CameraTag,CombiTag,OPC 服務(wù)端連接狀態(tài), 等;OPC 服務(wù)器清單羅列出所有連接該系統(tǒng)的Opc 服務(wù)器, 包括本地和遠(yuǎn)程的;“退出”按鈕,點(diǎn)擊該按鈕則程序自動(dòng)退出。
圖6 系統(tǒng)運(yùn)行界面Fig.6 Interface of system operation
所設(shè)計(jì)的基于OPC 技術(shù)垃圾焚燒數(shù)據(jù)采集系統(tǒng),采用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言和傳統(tǒng)的OPC 接口技術(shù),實(shí)現(xiàn)了單一客戶端對(duì)多個(gè)OPC 服務(wù)器的數(shù)據(jù)采集,同時(shí)提供COM 接口、共享內(nèi)存技術(shù)、C/S 匿名管道的通訊方式給優(yōu)化控制程序、人機(jī)界面以及后臺(tái)歷史服務(wù)程序使用。該系統(tǒng)經(jīng)過了在線測試以及現(xiàn)場試運(yùn)行階段,已正式投入使用,并在各個(gè)項(xiàng)目公司取得良好的效果。
11月份工業(yè)機(jī)器人產(chǎn)量企穩(wěn)回升
機(jī)器人產(chǎn)業(yè)或?qū)⒂瓉砉拯c(diǎn)。近日,國家統(tǒng)計(jì)局發(fā)布數(shù)據(jù)顯示,2019年11月份,工業(yè)機(jī)器人產(chǎn)量達(dá)16080 臺(tái),同比增長4.3%,這是繼2018年9月份工業(yè)機(jī)器人產(chǎn)量開始陷入負(fù)增長后,連續(xù)兩個(gè)月回正。專家表示,受到汽車產(chǎn)業(yè)下滑影響,工業(yè)機(jī)器人需求一度大幅下降,但長期來看機(jī)器換人大勢不可逆轉(zhuǎn),未來機(jī)器人產(chǎn)業(yè)還將保持高景氣度。不過,工業(yè)機(jī)器人增長將放緩,服務(wù)機(jī)器人將保持高位增長。
經(jīng)濟(jì)日報(bào)記者了解到,目前搬運(yùn)和上下料仍然是機(jī)器人最主要的應(yīng)用領(lǐng)域,尤其是汽車和電子信息行業(yè),占比達(dá)到60%。
“盡管今年以來,機(jī)器人產(chǎn)業(yè)面臨壓力,一些核心技術(shù)及關(guān)鍵技術(shù)零部件受制于人,但這恰好是機(jī)器人產(chǎn)業(yè)優(yōu)化結(jié)構(gòu),實(shí)現(xiàn)健康發(fā)展的黃金時(shí)期。”工業(yè)和信息化部裝備工業(yè)司副司長羅俊杰表示,從國內(nèi)看,應(yīng)用領(lǐng)域和場景不斷拓展,機(jī)器人發(fā)展勢頭依然強(qiáng)勁。
“機(jī)器人產(chǎn)業(yè)的短期下滑只是周期性的,長期來看仍將保持快速增長?!崩钊鹤詣?dòng)化聯(lián)合創(chuàng)始人、CEO 石金博告訴經(jīng)濟(jì)日報(bào)記者, 在剛結(jié)束的2019日本IREX 機(jī)器人展上, 該公司自主研發(fā)的全品類、9 大系列、30 款型號(hào)產(chǎn)品首次亮相就引來全世界的關(guān)注。在石金博看來,李群自動(dòng)化之所以在國際舞臺(tái)競爭中不落下風(fēng),關(guān)鍵在于自主創(chuàng)新。“從應(yīng)用層到頂層,包括機(jī)器人設(shè)計(jì)、系統(tǒng)、控制、應(yīng)用,自主研發(fā)的核心技術(shù),正是李群自動(dòng)化產(chǎn)品的優(yōu)勢?!笔鸩┱f。
根據(jù)中國電子信息產(chǎn)業(yè)發(fā)展研究院預(yù)測, 未來3年機(jī)器人市場規(guī)模將保持27%以上的增速,2019年中國機(jī)器人市場規(guī)模將超過761 億元。從細(xì)分市場結(jié)構(gòu)來看,工業(yè)機(jī)器人的規(guī)模比例仍然占據(jù)優(yōu)勢,但增速放緩,服務(wù)機(jī)器人將保持快速增長。企業(yè)智能化改造、行業(yè)應(yīng)用場景持續(xù)優(yōu)化,以及人工智能、大數(shù)據(jù)等新技術(shù)的應(yīng)用,都成為驅(qū)動(dòng)中國機(jī)器人市場快速發(fā)展的主要因素。
有數(shù)據(jù)顯示,目前中國機(jī)器人企業(yè)已經(jīng)占據(jù)了中國市場近三分之一的份額。在未來的市場競爭中,與國際巨頭相比,中國企業(yè)也有不少競爭優(yōu)勢。
“中國工業(yè)機(jī)器人產(chǎn)業(yè)與發(fā)達(dá)國家相比有不小差距,但在某些領(lǐng)域國外并沒有相關(guān)應(yīng)用,比如通用型機(jī)器人,正是市場突出重圍的機(jī)會(huì)?!笔鸩┱J(rèn)為,中國制造業(yè)體系非常龐大,當(dāng)中有大量需要靠自動(dòng)化技術(shù)提升的環(huán)節(jié),中國機(jī)器人企業(yè)能夠更有針對(duì)性地優(yōu)化?!斑@需要到第一線獲得客戶的工藝要求,進(jìn)而將工藝提前應(yīng)用到機(jī)器人上,后續(xù)可以服務(wù)更多集成商或客戶?!?/p>
當(dāng)前,機(jī)器人應(yīng)用主要集中在汽車和電子產(chǎn)業(yè),其他領(lǐng)域的推廣潛力巨大。電子、汽車、新能源等領(lǐng)域只是很小的一部分。隨著智能制造的推進(jìn),工業(yè)機(jī)器人應(yīng)用正在從汽車和電子行業(yè)快速向冶金、輕工、金屬加工、石油化工、食品飲料、醫(yī)藥健康等行業(yè)發(fā)展。其應(yīng)用行業(yè)已從2015年國民經(jīng)濟(jì)87 個(gè)種類擴(kuò)展到2018年的129 個(gè)種類。未來,服務(wù)機(jī)器人將從過去掃地、清潔等機(jī)器人,向教育、醫(yī)療、陪護(hù)、配送等多維度延伸。
來源:經(jīng)濟(jì)日報(bào)