楊亦紅,查顯梅
(1.浙江工業職業技術學院 電氣工程分院,浙江 紹興 312000;2.浙江華通控股集團有限公司 浙江 上虞312300)
一般織物的染色是在染色機的染缸內按染色工藝進行的,通常整個染色過程控制是參照一條按時間序列控制溫度變化的工藝曲線完成的[1]。在該工藝曲線中,既包括多段不同速率的升溫、保溫、降溫組成的溫度控制過程,又包括進料、進水、排水等輔助工藝組成的斷續控制過程。總體上來看實際生產車間中染色機臺數一般較多,而且染色工藝過程控制參數繁多,僅通過傳統的單片機或PLC控制系統構建的染色機控制器,要逐一完成每臺機器各項參數的配置,顯然其工作的效率極低;同時各染色機的工作狀態也較難實時、動態、全面反映。因此,設計一種可監控車間中各染色機的工作過程參數的集散式染色機監控系統,使得可以及時調整和控制各染色機的工作過程參數,已經成為提高生產效率、產品質量并優化成本的實際需求。
這里提出的集散式染色機控制系統,就是要將原來的染色機控制器作為下位機通過網絡連接起來,增設了PC機作為上位控制機,配置系統監控軟件,構成一個集散網絡控制系統,如圖1所示。通過上位機集中對下位機進行監控,下位接收上機位控制指令并完成相應控制動作,在必要時向上位機發送本染色機狀態信息,如溫度,流量,PH值等。總體系統實現分布式控制,可實現集中監控、實時數據保存、遠程動態顯示設備的運行狀態等功能,管理人員在監控室就能實時、動態掌控生產過程,從而提高生產和管理效率。

圖1 集散式染色機監控系統結構Fig.1 Structure of distributed monitoring system of dyeing machine
由于染色機監控系統中的染色機臺數較多,集散系統中會存在大量實時數據的通信交互,終端設備需要與不同的線程進行數據通信,且可能涉及不同通信協議之間的轉換,僅使用這種常規的多線程程序設計方法(即由界面線程和若干工作線程的交互來完成軟件任務),會造成程序結構過于復雜,且難以控制不同進程之間的互操作,調度,通信等,使得程序設計者不得不花大量精力于程序細節以避免顧此失彼,且有可能影響系統的穩定性,可靠性等性能,且配置完成整個系統所需的人力,財力也極為可觀。而采用OPC技術則可以解決這個問題。

圖2 OPC服務器應用程序Fig.2 The application of OPC sever

圖3 兩種程序設計方法中軟件結構的對比Fig.3 Comparison of the software structure in the two programming methods
OPC(OLE for Process Control)是由OPC技術基金會管理的一個工業標準[2],是微軟公司基于COM規范的OLE(對象鏈接和嵌入)技術在過程控制方面的應用,已被廣泛用于過程控制和制造業自動化系統。OPC服務器應用程序由服務器組件、組、邏輯項組成,由服務器組件提供一整套OPC通用的接口與各種過程控制設備之間的進行通訊。OPC服務器應用程序的基本組成如圖2所示。圖中的邏輯項是映射到硬件設備的對應屬性如:壓力、溫度、速度、位置等的邏輯元件,應用程序對這些邏輯項的操作實際就對應于相關硬件屬性的操作。OPC服務器以成組的方式來管理各個邏輯項,各組可以有不同的刷新率,輸入輸出模式等特性。
與常規的多線程程序設計方法相比,利用OPC技術,客戶應用程序即監控管理應用程序可以大大減輕應用程序的編程工作量[3-4],只要處理與服務器之間的標準接口即可,如圖3所示,而系統的性能也會得到很好的提升,采用OPC技術設計的監控系統的基本特點在于:1)這里OPC服務器負責處理數據的緩沖與通信協議,對于客戶程序來說不需要知道或處理與具體設備的通信協議;2)由于它不再需要與多個線程交互,減少了終端設備的負荷,也延長了終端設備的服務周期;3)系統的可伸縮性大大增加,擴充新的終端不會影響原來設備;4)由于OPC采用標準接口,支持 Windows和Linux,使系統在不同平臺上有良好的互操作性。
為了協調處理多個線程訪問OPC服務器的情形,在服務器程序設計時,專門設置了一個客戶線程調度線程,按照一定的調度規則對客戶線程進行合理的安排,使其能按正確的順序對驅動程序進行訪問。按OPC DA規范[1],分別設計了同步、異步IO接口(如圖4所示),其程序行為分別是:
1)同步IO接口 同步訪問設備時,直接調用驅動程序提供的讀寫邏輯項函數ReadTags/WriteTags,驅動程序將響應數據放入響應隊列,再在客戶線程調度線程調度到此隊列的訪問時,通知同步IO接口讀取;同步訪問緩沖時,可直接從緩沖讀取數據。
2)異步IO接口 異步訪問設備時,先將訪問請求放入訪問請求隊列,再在客戶線程調度線程調度到此隊列時按訪問要求,分別訪問緩沖或用ReadTags/WriteTags函數訪問設備讀寫邏輯項。數據更新線程從驅動程序獲知數據項變化時刷新主緩沖,客戶線程調度線程觀察到主緩沖數據有更新時會用OnDataChange回調函數通知異步IO接口讀取數據。

圖4 OPC服務器數據訪問的接口Fig.4 Data access interface of the program of OPC server
按照此接口模型,客戶線程通過異步或同步IO接口向驅動程序發出讀邏輯項(比如壓力值)或寫邏輯項(比如控制閥)的指令,至于具體的向對應設備讀入或向對應設備輸出數據的工作就交給OPC服務器去完成了,從而使客戶線程從容地進行后期的數據處理工作。
服務器程序編譯后成為一個動態鏈接庫,以供客戶端程序使用。但要正確使用,需要在安裝服務器程序時向操作系統注冊服務器程序的類ID即CLSID,及以上描述的由服務器所提供的各種接口的ID即IID,這些ID都是48位的唯一標識,可windows自帶工具中的uuidgen.exe產生,客戶端程序需要以此為著力點,創建服務器對象,及其接口對象。
遵照OPC基金會發布的OPC規范,OPC服務器組件以COM接口的形式提供客戶程序使用,客戶程序以服務器的ID或枚舉的方式獲得OPC服務器組件對象,它提供了基本管理接口,其中IOPCBrowseServerAddressSpace用于查詢服務器地址空間,客戶程序可以逐級查詢,直到頁節點數據項,如本系統所設計的數據管理層次圖5中所示各項。具體的數據項讀寫流程如圖6所示[5]。
按此流程,基于Visual c++開發環境并使用MFC類庫,作為OPC服務器的客戶程序的染色機監控管理程序的相關部分主要代碼簡述[6]:

圖5 系統的數據管理層次Fig.5 Levels of Data management in the system

圖6 監控管理應用程序的數據項讀寫流程Fig.6 The flow of read and write for data items in Monitoring management application
1)在工程的預編譯頭文件stdafx.h中加入對OPC標準COM接口頭文件的包含引用,它們是:opcda.h、opccomn.h、opcerrors.h、opcprops.h、opcquality.h, 并將 opcda_i.c、opccomn_i.c文件加入工程。然后在程序初始化時加入初始化COM環境的代碼:每個COM服務器都有一個字符串型的ProgID,比如這里為自定義的“MyDyerOpc Sever”,用 CLSIDFromProgID( )函數可實現ProgID到CLSID的轉換,并創建服務器對象實例,并查詢得到IOPCServer接口指針m_IOPCServer:


2)用m_IOPCServer接口的AddGroup方法創建OPC組對象的實例如CANBUS,并取得IOPCItemMgt接口。
3)用IOPCItemMgt接口的AddItem()方法添加具有特殊屬性的指定數量的數據項,比如 Pressure、Temprature、FlowRate等。
4)通過異步或同步方式進行讀寫,一般對于較大量的數據傳輸,異步方式是較好的選擇,但對少量的數據傳輸,同步表現得更好。以異步讀訪問方式為例,需要先用IOPCItemMgt接口查詢得到IOPCAsyncIO2指針:

程序中所有數據項均可通過類似方法進行訪問;
5)當程序退出或停止服務器時,需要依次用IOPCItemMgt的RemoveItems刪除數據項Item、用IOPCServer的Remove-Groups刪除組Group,以此釋放資源。最后用:CoUninitialize();關閉COM環境。
集散式染色機監控平臺作為OPC服務器的客戶端采用以上程序,通過OPC服務器對不同的組的管理,進一步實現了多個染色機的集中監控管理,主要界面如圖7所示。

圖7 監控管理應用程序的界面Fig.7 UI interface of the monitoring management application
通過描述集散式染色機系統設計中存在的數據訪問頻繁,通信復雜等問題,提出了采用OPC服務器來管理系統對各個設備中的特定數據項的訪問,從而減輕了監控平臺編程的工作量,也提高了系統的穩定性與工作性能,使得染色機系統的實際運行狀態達到了令人滿意的監管與控制要求。
[1]楊壯豪.新型溢流染色機控制系統[J].機電工程,2008(1):63-65.
YANG Zhuang-hao.A new control system of spill dyeing machine[J].Mechanical&Electrical Engineering Magazine,2008(1):63-65.
[2]OPC Foundation.OPC Data AccessCustom Interface Specification 2.04[S].2000.
[3]陳顯枝,陳沖,林蔚,等.基于OPC技術的DCS信息集成系統[J].福州大學學報:自然科學版,2006(5):679-682.
CHEN Xian-zhi,CHEN Chong,LIN Wei,et al.OPC based information integrated system for distributed control system[J].Journal of Fuzhou University:Natural Science Edition,2006(5):679-682.
[4]胡強,趙英凱.OPC技術在DCS與工廠管理網數據通訊中的應用[J].工業儀表與自動化裝置,2002,(3):25-28.
HU Qiang,ZHAO Ying-kai.The application of OPC specification to the communication between DCS and management network[J].Industrial Instrumentation&Automation,2002(3):25-28.
[5]姚曉偉,陳在平,尹迅雷.基于OPC技術的現場總線系統集成研究[J].天津理工大學學報,2005(4):12-14.
YAO Xiao-wei,CHEN Zai-ping,YIN Xun-lei.Research on integration of fieldbus system based on OPC[J].Journal of Tianjin Institute of Technology,2005(4):12-14.
[6]趙眾,鄒芳云,徐寧,等.OPC客戶端程序開發及其在集散控制系統中的應用[J].化工自動化及儀表,2007,(3):42-46.
ZHAO Zhong,ZOU Fang-yun,XU Ning, et al.Development of OPC client program and its application in DCS[J].Control and Instruments in Chemical Industry,2007(3):42-46.