孟召營 魏海坤
(東南大學自動化學院,江蘇 南京 10096)
組態(tài)軟件是伴隨分散控制系統(tǒng)(distributed control system,DCS)的出現(xiàn)而引入的[1]。策略組態(tài)軟件[2-3]是指用直觀的編程方式(如梯形圖、功能塊圖等),完成控制策略或監(jiān)控策略程序生成的軟件,目前應用最多的是DCS系統(tǒng)和PLC系統(tǒng)[4]。隨著嵌入式系統(tǒng)的快速發(fā)展及其在工業(yè)現(xiàn)場的廣泛應用,傳統(tǒng)的組態(tài)軟件也逐漸和嵌入式系統(tǒng)結合起來[5-8]。
本文面向嵌入式策略組態(tài)軟件,提出以下設想:①組態(tài)軟件提供了許多經典的算法策略,同時用戶可自定義算法策略;②組態(tài)生成算法策略文件,通過網絡下載到嵌入式系統(tǒng)中;③嵌入式系統(tǒng)依靠算法引擎[9]調用算法策略,完成對工業(yè)現(xiàn)場的控制;④算法引擎方便移植,與硬件有關的驅動程序以動態(tài)庫的形式加載。
算法引擎是完成嵌入式策略組態(tài)運行的一段核心代碼,它為整個算法策略的運行提供了數(shù)據(jù)平臺和通信導向功能。它主要用于完成以下功能:①在嵌入式策略組態(tài)運行過程中各算法模塊的自動加載調用;②系統(tǒng)資源和用戶資源的整合;③確定各算法模塊的輸入、輸出以及各算法模塊之間的通信等[10]。
算法引擎可分為算法管理器、策略運行器、算法庫、數(shù)據(jù)訪問接口模塊這4個模塊,其功能框圖如圖1所示。為完成算法引擎的設計,每個算法模塊都會從配置文件中自動生成算法結構體、輸入結構體和輸出結構體,整個算法策略構成一個鏈表。算法引擎根據(jù)這三個結構體的內容,確定算法的庫文件位置、算法的輸入輸出、算法的參數(shù)和掃描時間等,并在這些數(shù)據(jù)平臺的基礎上,調用系統(tǒng)資源完成策略組態(tài)的運行。
圖1 算法引擎功能框圖Fig.1 Functional block diagram of algorithm engine
算法管理器是用戶解析和管理算法信息的工具,可解析和修改的算法信息包括輸入信息、輸出信息、參數(shù)信息、庫函數(shù)入口地址等。通過算法管理器既可以在開始時對配置文件進行解析,也可以在運行時對參數(shù)值、設定值和中間量進行實時修改和調整。
策略運行器是算法引擎的核心部分,通過算法管理器對配置文件進行解析后,策略運行器獲得各個算法模塊的信息以及各模塊之間的關聯(lián)信息。通過構建策略運行鏈表,即可按照算法運行周期和算法間連線走向,依據(jù)有向無環(huán)圖的順序依次調用算法并實現(xiàn)策略運行。
算法庫是系統(tǒng)已定義算法和用戶自定義算法的集合,每個算法用一個動態(tài)鏈接庫實現(xiàn)。系統(tǒng)已定義的算法是一些常用算法,如信號發(fā)生器、邏輯運算、算術運算等。用戶自定義的算法通過算法管理器也可以加載到算法庫中。用戶通過系統(tǒng)提供的API接口函數(shù),可訪問算法的輸入、輸出、參數(shù)和中間量等,并在此基礎上實現(xiàn)算法的功能,最后將代碼編譯成動態(tài)鏈接庫即可。
數(shù)據(jù)訪問接口模塊策略運行不應是一個封閉運行的模塊。由于一些表現(xiàn)層的應用,可能需要訪問某些算法的輸出或參數(shù),因此算法引擎提供了一個遵守OPC規(guī)范[11]的接口,允許用戶訪問算法的實時參數(shù)和輸入輸出值,即引擎提供了開放的數(shù)據(jù)訪問接口。
算法引擎相當于嵌入式系統(tǒng)的大腦和心臟,既分析解釋命令,又提供動力調度系統(tǒng)的運行。本文將算法引擎的概念引入到嵌入式系統(tǒng)中,相當于在嵌入式系統(tǒng)的操作系統(tǒng)OS層上又提供了一個小的協(xié)作層。它既頻繁使用操作系統(tǒng)提供的資源,對操作系統(tǒng)的資源進行有力的整合,進而又對上層應用(組態(tài)運行)進行分配和派發(fā),完成系統(tǒng)的運行和操作響應。必要時還可以對嵌入式OS層進行精簡,然后和算法引擎協(xié)作層密切配合,完成系統(tǒng)運作。
基于算法引擎的嵌入式策略組態(tài)運行層面圖如圖2所示。
圖2 嵌入式策略組態(tài)運行層面圖Fig.2 Operational level of embedded strategy configuration
圖2中算法引擎協(xié)作層在操作系統(tǒng)層和應用層之間。算法引擎包括自定義的API接口函數(shù)庫和XML解析函數(shù)庫等,這些全部由C語言編寫,為應用層(策略組態(tài)運行)向不同的操作系統(tǒng)移植提供了可能。此外,算法引擎協(xié)作層對使用的操作系統(tǒng)資源進行整合,如對數(shù)據(jù)類型的重定義,方便在移植時對數(shù)據(jù)類型的修改。
系統(tǒng)從整體上分為PC機客戶端和嵌入式服務器兩部分。嵌入式算法引擎工作在嵌入式服務器中,系統(tǒng)整體架構如圖3所示。
圖3 系統(tǒng)整體架構Fig.3 Overall structure of the system
對于用戶來講,工業(yè)現(xiàn)場的某個對象的控制需要采納某種控制策略,比如PID控制。用戶可以通過策略組態(tài)軟件的圖形化顯示,搭建嵌入式系統(tǒng)從輸入到輸出的整個控制策略,然后生成配置文件;最后通過監(jiān)控軟件,用戶可以經由局域網將配置文件下載到嵌入式系統(tǒng)中。
嵌入式系統(tǒng)按照用戶的要求對新下載的配置文件進行操作。在需要時,算法引擎協(xié)作層對其進行解析,替換舊的配置文件,并按照新的控制策略加載算法庫,完成系統(tǒng)的運行。同時,通過監(jiān)控軟件,用戶可以實時監(jiān)視輸出結果,并在需要時對配置文件(算法庫函數(shù)參數(shù))進行在線修改和重新配置。系統(tǒng)流程圖如圖4所示。
圖4 嵌入式策略組態(tài)軟件系統(tǒng)流程Fig.4 Flowchart of embedded strategy-configuration software
本文設計的策略組態(tài)軟件包含組態(tài)軟件部分和運行軟件部分。算法組態(tài)如圖5所示。該算法是一個基于溫度控制系統(tǒng)的控制策略,從采樣輸入到模擬量輸出,構成了一個反饋控制系統(tǒng)。每個模塊對應相應的算法策略,用戶選擇好整個算法策略后,通過連線進行導通,以便嵌入式算法引擎通過配置文件完成系統(tǒng)的運行。
圖5 算法組態(tài)示意圖Fig.5 Schematic of the algorithm configuration
嵌入式系統(tǒng)的運行涉及到系統(tǒng)的調度和優(yōu)先級(μC/OS-II操作系統(tǒng)下),它們也是算法引擎協(xié)作層的一部分。目前,設計的下位機任務主要包括:復位任務(TaskReset)、文件解析任務(FileParse)、文件運行任務(AlgRun)、暫停運行任務(AlgStop)、命令接收任務(TaskRecv);此外還有μC/OS-II的主任務(task0)和TCP/IP響應任務(TaskTcpPros)。
任務從功能上可以分為以下兩個:①服務器線程——TaskRecv,用于接收上位機發(fā)送的命令字,并作簡單的處理;②應用線程,它是在接收到相應的命令字后觸發(fā)的應用任務。
設定的任務優(yōu)先級為:Task0→TaskTcpPros→TaskRecv→TaskReset→FileParse→AlgStop→AlgRun。
在服務器線程中,完成的任務還有文件下載保存任務、文件上傳任務、歷史值和當前值的上傳任務。
局域網內小型監(jiān)控軟件的功能框圖如圖6所示。具體功能有測試網絡、下載和上傳控制策略、運行和暫停、查詢算法輸出和復位目標板。
圖6 監(jiān)控軟件功能圖Fig.6 Functional diagram of the monitoring software
設計中采用了基于解釋運行的原理,有利于實現(xiàn)系統(tǒng)的可移植性和在線配置。相對的基于編譯運行的設計方法,也是當前嵌入式策略組態(tài)的研究課題之一,通過對嵌入式系統(tǒng)的軟件開發(fā)進行深入研究,實現(xiàn)圖形組態(tài)、策略組態(tài)在嵌入式系統(tǒng)中的應用[12-14]。
組態(tài)配置文件采用XML格式[15]。對于這種小型的XML格式文件,我們編寫了自己的解析函數(shù)和虛擬內存XML文件的讀寫語句(算法引擎的一部分)。解析完配置文件后由算法引擎加載庫文件,加載可以分為動態(tài)加載和靜態(tài)加載。
通過策略組態(tài)軟件搭建的一個控制策略運行實例如圖7所示,用戶可根據(jù)實際需要搭建自己的控制策略。
圖7 運行實例Fig.7 Practical example of operation
圖7完成了一個累加2的運算。圖7中,兩個常值初始設定參數(shù)為1,加減運算設定為加運算,三個輸入端口的權值設定為1。每個算法模塊包含一些基本信息,包括輸入值、輸出值、算法名稱、算法參數(shù)、算法入口函數(shù)名稱、算法ID、算法掃描周期等。運行時,算法引擎每經過一個算法掃描周期,便會對整個策略文件掃描一次,然后通過調用相應的算法庫文件,得出最終策略的輸出結果。監(jiān)控軟件上顯示的局域網實時傳遞的輸出結果如圖8所示。
圖8 運行實例輸出曲線Fig.8 Output curve of the practical operation example
通過監(jiān)控軟件還可以實時查看每個算法模塊的輸出和修改每個算法模塊的參數(shù)。將加減運算的第三個輸入端口權值設為-1后,得到的遞減2的運行曲線如圖9所示。
圖9 修改參數(shù)后運行曲線Fig.9 Operation curve after parameters modified
上述例子證明了本文所提出的策略組態(tài)軟件在嵌入式系統(tǒng)中運行方法的可行性。對于用戶自定義的算法,在經過編譯鏈接生成相應的庫文件后,可以添加到組態(tài)算法庫中,并在基于解釋運行原理的基礎上,通過局域網將用戶庫函數(shù)下載到嵌入式系統(tǒng)中,以便算法引擎加載調用。設計中核心代碼均用C語言編寫,保證了設計的可移植性,即對操作系統(tǒng)的無關性。在硬件方面,采用動態(tài)加載可以動態(tài)調用I/O驅動等模塊,支持對硬件的擴展。
本文論述了嵌入式系統(tǒng)策略組態(tài)的一種實現(xiàn)方法。通過這種方法,可以實現(xiàn)局域網內對工業(yè)過程控制策略的遠程監(jiān)控和在線調試。我們可以相信,嵌入式組態(tài)軟件必將對工業(yè)控制和嵌入式產業(yè)應用程序的開發(fā)作出貢獻。
[1]朱小菲.工控組態(tài)軟件的設計與實現(xiàn)[D].長春:吉林大學,2005.
[2]賴于樹.基于嵌入式的控制策略組態(tài)及監(jiān)控組態(tài)技術研究[D].成都:電子科技大學,2006.
[3]石磐.現(xiàn)場總線控制系統(tǒng)控制策略組態(tài)軟件研究[D].重慶:重慶大學,2004.
[4]梁庚,白焰,李文.分布式控制系統(tǒng)策略組態(tài)軟件開發(fā)現(xiàn)狀的分析研究與展望[J].自動化儀表,2005,26(3).
[5]Jin Min,Zhou Xiang,Duan Peng.The design and implementation of embedded configuration software based on embedded-Linux[C]∥InternationalConference on Computer Science and Software Engineering:China,2008:98 -101.
[6]徐偉華.基于嵌入式系統(tǒng)的監(jiān)控組態(tài)軟件理論模型的研究[D].成都:電子科技大學,2007.
[7]Gumaste U V,Nocera A A,Hsueh T A,et al.Configuration management strategy for distributed and diverse software developmentenvironments[C]∥ Proceeding ofthe IEEE International Conference on Industrial Technology,1996:42 -46.
[8]Sproull T S,Lockwood J W,Taylor D E.Control and configuration software for a reconfiguration networking hardware platform[C]∥Proceeding ofthe 10th AnnualIEEE Symposium on Filed Programmable Custom Computing Machines,2002.
[9]鄭宗涵,魏海坤,李奇.實時數(shù)據(jù)庫算法引擎的設計與應用[J].信息與控制,2003,32(7):662 -670.
[10]魏海坤.集散控制系統(tǒng)組態(tài)軟件設計[D].南京:東南大學,1997.
[11]Pattle R,Ramiach J.OPC the de facto standard for real time communication parallel and distributed real-time systems[C]∥Proceeding of the Joint Workshop on Parallel and Distributed Real Time Systems,1997:289 -294.
[12]Angelov C,Xu K,Sierszecki K.A component-based framework for distributed controlsystems[C]∥ Proceedingsofthe 32nd EUROMICRO Conference on Software Engineering and Advanced Applications,2006.
[13]Yu G,Sierszecki K,Angelov C.A(re)configuration mechanism for resource-constrained embedded systems[C]∥ AnnualIEEE International Computer Softwareand Applications Conference,2008:1315 -1320.
[14]Lee E A,Neuendorffer S,Wirthlin M J.Actor-oriented design of embedded hardware and software systems[R].Invited paper,Journal of Circuits,Systems,and Computers,2002.
[15]Nitsch C,Kebschull U.The use of runtime configuration capabilities for network embedded systems[C]∥ Proceedings of the 2002 Design,Automation and Test in Europe Conference and Exhibition,2002.