大連理工大學(xué)本科論文現(xiàn)場(chǎng)總線控制系統(tǒng)功能塊組態(tài)軟件設(shè)計(jì)
-
資源ID:46511743
資源大?。?span id="djfxmz1" class="font-tahoma">658KB
全文頁數(shù):56頁
- 資源格式: DOC
下載積分:10積分
快捷下載
會(huì)員登錄下載
微信登錄下載
微信掃一掃登錄
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。
|
大連理工大學(xué)本科論文現(xiàn)場(chǎng)總線控制系統(tǒng)功能塊組態(tài)軟件設(shè)計(jì)
大連理工大學(xué)本科畢業(yè)設(shè)計(jì)(論文)現(xiàn)場(chǎng)總線控制系統(tǒng)功能塊組態(tài)軟件設(shè)計(jì)Design of Configuration Software based on Filedbus Control System學(xué) 院(系): 電子與信息工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 生 姓 名: 劉國強(qiáng) 學(xué) 號(hào): 200591109 指 導(dǎo) 教 師: 仲崇權(quán) 評(píng) 閱 教 師: 完 成 日 期: 2009年6月 大連理工大學(xué)Dalian University of Technology摘 要IEC61131標(biāo)準(zhǔn)作為工業(yè)自動(dòng)化控制系統(tǒng)標(biāo)準(zhǔn)化編程語言的國際標(biāo)準(zhǔn),受到了廣泛的關(guān)注和重視。目前國際上已有多個(gè)自動(dòng)化設(shè)備生產(chǎn)商推出了以這個(gè)標(biāo)準(zhǔn)為基礎(chǔ)的控制系統(tǒng)。研究基于IEC61131標(biāo)準(zhǔn)的控制系統(tǒng)意義重大。本文研究了IEC61131標(biāo)準(zhǔn)中關(guān)于功能塊編程的技術(shù)內(nèi)容,給出了指令規(guī)約和編程方法,研究了功能塊程序的可視化編輯和編譯技術(shù),設(shè)計(jì)和實(shí)現(xiàn)可編程控制器編程軟件PLC_Config。該程序是在Microsoft Visual Studio 2003環(huán)境平臺(tái)下,使用C+編程語言,基于MFC程序框架開發(fā)完成的。該軟件可對(duì)現(xiàn)場(chǎng)網(wǎng)絡(luò)上的所有設(shè)備和資源進(jìn)行配置和規(guī)劃,使現(xiàn)場(chǎng)網(wǎng)絡(luò)中的設(shè)備成為一個(gè)有機(jī)整體,協(xié)同工作完成控制功能。該軟件應(yīng)用了模塊化設(shè)計(jì)思想,將整個(gè)軟件分解成現(xiàn)場(chǎng)設(shè)備管理模塊、可視化組態(tài)模塊、現(xiàn)場(chǎng)設(shè)備監(jiān)控模塊、文件管理模塊、通信服務(wù)模塊及信息報(bào)告模塊??梢暬δ軌K編程模塊實(shí)現(xiàn)了操作方便功能強(qiáng)大的用戶操作界面,通過描述文件與可視化的編程元件的互轉(zhuǎn)實(shí)現(xiàn)了功能塊程序的保存與讀取,編譯模塊實(shí)現(xiàn)了功能塊程序在上位機(jī)與下位機(jī)存儲(chǔ)表達(dá)形式的互轉(zhuǎn),用戶可以方便的下載上載功能塊程序。通過設(shè)計(jì)和開發(fā)PLC_Config可視化編輯模塊和組態(tài)編譯模塊,以及在PLC_Config程序中地應(yīng)用,證明了編輯,編譯功能塊文件方法的可行性和正確性,也提供了一種編輯,編譯圖形化語言的一種方法。關(guān)鍵詞:現(xiàn)場(chǎng)總線;IEC61131-3標(biāo)準(zhǔn);功能塊組態(tài);可編程控制器; Design of Configuration Software based on Filedbus Control SystemAbstract IEC61131 standard for industrial automation and control system programming language standardized international standards, has been widespread concern and attention. At present, there are a number of automation equipment manufacturers with the introduction of the standards-based control system. Research based on the standard IEC61131 control system of great significance. In this paper, the technical content on function block programming in IEC61131 standard is studied. Command and programming are provided. Visual programming and compiler technology of function block programming are researched. Programming software of Programmable Logic Controller(PLC_Config) is designed and implemented. This software uses C+ programming language under Microsoft visual studio 2003 development platform and based on the MFC Framework. This software configurates and plans the filed devices and resources, makes the filed devices implement control function as an organic whole. The software app the modular design concept. It includes Device Manage Module, Visual Configure Module, Watching Module, Files Manage Module, Communication Module and Report Module. Visual Configure Module implement useful and powerful user interface. It implement save and read function by the change between XML files and visual programming elements. Compiler Module implement the change of mode between in computer and in PLC. User can configurate and upload the program conveniently. By developing the Visual Configure Module and Compiler Module and Testing in the application, the design is proved correct. The article provide a method of edit and compile graphics program language. Key Words:Fieldbus; IEC61131-3 standards; Function block configuration; Programmable logic Controller; 目 錄摘 要IAbstractII引 言11 概 述31.1 現(xiàn)場(chǎng)總線技術(shù)31.1.1 現(xiàn)場(chǎng)總線概念31.1.2 現(xiàn)場(chǎng)總線的特點(diǎn)31.1.3 RS485總線41.1.4 MODBUS協(xié)議41.2 現(xiàn)代自動(dòng)控制系統(tǒng)和IEC61131-3國際標(biāo)準(zhǔn)51.3 IEC 61131-3及其功能塊編程61.4 可編程邏輯控制器71.5 組態(tài)軟件81.6 論文的主要工作92 PLC_Config組態(tài)軟件設(shè)計(jì)和實(shí)現(xiàn)102.1 概述102.2 現(xiàn)場(chǎng)設(shè)備管理模塊122.3 文件管理模塊122.4 可視化組態(tài)模塊132.5通信服務(wù)模塊162.5.1 實(shí)時(shí)通訊服務(wù)的實(shí)現(xiàn)172.5.2 套接字映射接口對(duì)象的實(shí)現(xiàn)172.6信息報(bào)告模塊192.6本章小結(jié)193 PLC_Config組態(tài)軟件可視化功能塊組態(tài)以及編譯203.1 PLC_Config可視化功能塊編輯程序的設(shè)計(jì)203.1.1文檔/視圖(Document/View)結(jié)構(gòu)203.1.2 可視化功能塊編輯程序設(shè)計(jì)類關(guān)系圖203.1.3功能塊的圖形表示213.1.4功能塊的邏輯組成213.1.5在DCCE系列PLC中的功能塊程序的表現(xiàn)形式223.1.6 功能塊類的設(shè)計(jì)233.1.7功能塊參數(shù)類的設(shè)計(jì)263.1.8鏈接關(guān)系的設(shè)計(jì)273.1.9網(wǎng)絡(luò)物件設(shè)計(jì)283.1.10功能塊文檔類的設(shè)計(jì)293.2編譯程序(Compile.exe)的設(shè)計(jì)303.2.1功能塊編譯程序的設(shè)計(jì)分析303.2.2編譯程序的接口設(shè)計(jì)313.2.3編譯過程中的錯(cuò)誤信息的提示實(shí)現(xiàn)333.2.3功能塊參數(shù)的編譯333.2.4功能塊的編譯343.2.5功能塊網(wǎng)絡(luò)的編譯353.3 本章小結(jié)394.PLC_Config軟件在十字路口交通燈控制系統(tǒng)的使用414.1 十字交通燈控制系統(tǒng)概述414.2 十字交通燈控制系統(tǒng)功能需求424.2.1 硬件需求424.2.2 交通等開關(guān)動(dòng)作需求434.3 功能塊程序?qū)崿F(xiàn)454.3.1 正常情況下交通燈程序?qū)崿F(xiàn)454.3.2可急車強(qiáng)通控制的交通燈程序?qū)崿F(xiàn)464.4本章小結(jié)48結(jié) 論49參考文獻(xiàn)50附錄A 簡單功能塊程序與對(duì)應(yīng)的XML文檔51附錄B PEC8000寄存器地址52致 謝53引 言在工業(yè)控制領(lǐng)域,PLC技術(shù)的發(fā)展在上世紀(jì)90年代經(jīng)歷了一次高潮。這得益于微電子、網(wǎng)絡(luò)通信和控制技術(shù)的迅猛發(fā)展。但隨著技術(shù)的進(jìn)步和市場(chǎng)要求的提高,傳統(tǒng)的PLC越來越暴露出其在數(shù)據(jù)封裝能力,程序可重用性,順序操作編程等方面的不足。這些缺陷導(dǎo)致了不同制造商PLC平臺(tái)的不兼容,也給工程技術(shù)人員的學(xué)習(xí)和操作帶來了極大的不便。統(tǒng)一的編程規(guī)則成為技術(shù)人員的迫切需求。而IEC61131-3是目前關(guān)于工業(yè)控制編程語言唯一的國際標(biāo)準(zhǔn),它將現(xiàn)代軟件工程的概念和機(jī)制與傳統(tǒng)PLC編程語言完美結(jié)合,使它在工業(yè)控制領(lǐng)域的影響已越出PLC的界限,應(yīng)用越來越廣泛。IEC61131-3是國際電工委員會(huì)IEC于1999年推出的用于工業(yè)控制領(lǐng)域的標(biāo)準(zhǔn)化編程語言,適用于PLC編程12。IEC61131-3是IEC61131的編程語言部分,與傳統(tǒng)的PLC編程語言相比較,前者具有突出的優(yōu)點(diǎn):(1) 開放性,由于采用獨(dú)立于制造商的一致性IEC61131-3標(biāo)準(zhǔn)化編程語言,因而應(yīng)用系統(tǒng)能最大限度地運(yùn)行于來自不同制造商的PLC。(2) 可移植性,允許程序在IEC61131-3兼容系統(tǒng)上移植。(3) 高水平的軟件重復(fù)使用性和允許柔性地選擇編程語言。一個(gè)程序的不同部分可用任一種語言編程。(4) 類似高級(jí)語言的先進(jìn)語言結(jié)構(gòu),支持“自上而下”和“自下而上”的結(jié)構(gòu)化程序開發(fā)。支持復(fù)雜的控制過程。支持結(jié)構(gòu)化數(shù)據(jù)。(5) 有很強(qiáng)的錯(cuò)誤檢測(cè)和糾錯(cuò)能力,能明顯地提高程序數(shù)據(jù)和變量的可靠性。PLC組態(tài)具有運(yùn)行時(shí)行為特性。標(biāo)準(zhǔn)化的開放系統(tǒng)是大勢(shì)所趨,1992年總部設(shè)在荷蘭的PLCopen成立,目前,多數(shù)的PLC制造商,軟件公司和研究院所已是這個(gè)國際組織的成員。如Siemens、 A-B、ABB、 GE、 Mitsubishi、Fuji、 Schneider都推出了符合IEC61131-3標(biāo)準(zhǔn)的PLC,此外有不少的 IPC工控機(jī)、DCS、HMI等制造商配置IEC61131-3編程軟件。目前,和利時(shí)公司的FOPLC采用IEC61131-3編程語言。IEC61131-3的修訂版在2002年底發(fā)布,它不僅描述了PLC編程語言本身,還提供了綜合的概念和建立PLC項(xiàng)目的導(dǎo)則,當(dāng)工程設(shè)計(jì)人員熟悉了IEC61131-3編程語言,就能對(duì)上述多家生產(chǎn)的PLC進(jìn)行編程設(shè)計(jì)。組態(tài)軟件是工業(yè)應(yīng)用軟件的一個(gè)組成部分,其發(fā)展受到很多因素的制約。歸根結(jié)底,應(yīng)用的帶動(dòng)對(duì)其發(fā)展起著最為關(guān)鍵的推動(dòng)作用。類似OPC這樣的組織的出現(xiàn),以及現(xiàn)場(chǎng)總線、尤其是工業(yè)以太網(wǎng)的快速發(fā)展,大大簡化了異種設(shè)備間互連、開發(fā)I/O設(shè)備驅(qū)動(dòng)軟件的工作量。I/O驅(qū)動(dòng)軟件也逐漸會(huì)朝標(biāo)準(zhǔn)化的方向發(fā)展。由單一的人機(jī)界面朝數(shù)據(jù)處理機(jī)方向發(fā)展,管理的數(shù)據(jù)量越來越大。實(shí)時(shí)數(shù)據(jù)庫的作用將進(jìn)一步加強(qiáng)。 很多新的技術(shù)將不斷地被應(yīng)用到組態(tài)軟件當(dāng)中,組態(tài)軟件裝機(jī)總量的提高會(huì)促進(jìn)在某些專業(yè)領(lǐng)域?qū)S冒孳浖恼Q生,市場(chǎng)被自動(dòng)地細(xì)分了。為此,一種稱為“軟總線”的技術(shù)將被廣泛采用。在這種體系結(jié)構(gòu)下,應(yīng)用軟件以中間件或插件的方式被“安裝”在總線上,并支持熱插拔和即插即用。這樣做的優(yōu)點(diǎn)是:所有插件遵從統(tǒng)一標(biāo)準(zhǔn),插件的專用性強(qiáng),每個(gè)插件開發(fā)人員之間不需要協(xié)調(diào),一個(gè)插件出現(xiàn)故障不會(huì)影響其他插件的運(yùn)行。XML技術(shù)將被組態(tài)軟件廠商善加利用,來改變現(xiàn)有的體系結(jié)構(gòu),它的推廣也將改變現(xiàn)有組態(tài)軟件的某些使用模式,滿足更為靈活的應(yīng)用需求。 在IEC61131-3標(biāo)準(zhǔn)的控制編程語言中,功能塊圖用來描述功能、功能塊和程序的行為特征,還可以在順序功能流程圖中描述步、動(dòng)作和轉(zhuǎn)變的行為特征。功能塊圖與電子線路圖中的信號(hào)流圖非常相似,在程序中,它可看作兩個(gè)過程元素之間的信息流。功能塊圖普遍地應(yīng)用在過程控制領(lǐng)域。  本文通過對(duì)IEC61131-3標(biāo)準(zhǔn)中功能塊語言的研究,結(jié)合PLC指令的特點(diǎn),應(yīng)用MFC設(shè)計(jì)和開發(fā)一種基于IEC61131-3標(biāo)準(zhǔn)中功能塊語言的編譯方法。全文共分四章:第一章:概述:介紹IEC61131-3國際標(biāo)準(zhǔn)及其編程語言,介紹PLC指令特點(diǎn),XML描述文件等相關(guān)技術(shù)知識(shí)以及本文主要工作。第二章:介紹PLC_Config組態(tài)軟件設(shè)計(jì)和實(shí)現(xiàn)。第三章:詳細(xì)介紹PLC_Config組態(tài)軟件可視化功能塊組態(tài)的編譯。第四章:PLC_Config組態(tài)軟件的應(yīng)用,并給出了應(yīng)用案例。結(jié)論:總結(jié)論文所解決的問題,并對(duì)下一步研究提出建議。 1 概 述1.1 現(xiàn)場(chǎng)總線技術(shù)1.1.1 現(xiàn)場(chǎng)總線概念現(xiàn)場(chǎng)總線是由DCS系統(tǒng)發(fā)展而來,采用全數(shù)字通信代替模擬傳輸方式,使控制系統(tǒng)與現(xiàn)場(chǎng)儀表之間不僅能傳輸生產(chǎn)過程測(cè)量與控制信息,而且還能傳輸現(xiàn)場(chǎng)儀表的大量非控制信息,使整個(gè)工業(yè)企業(yè)的管理控制一體化成為可能3。所謂現(xiàn)場(chǎng)總線,按照國際電工委員會(huì)IEC/SC65C的定義,是指安裝在制造或過程區(qū)域的現(xiàn)場(chǎng)裝置之間、以及現(xiàn)場(chǎng)裝置與控制室內(nèi)的自動(dòng)控制裝置之間的數(shù)字式、串行和多點(diǎn)通信的數(shù)據(jù)總線。以現(xiàn)場(chǎng)總線為基礎(chǔ)而發(fā)展起來的全數(shù)字控制系統(tǒng)稱作現(xiàn)場(chǎng)控制系統(tǒng)(Field Control System)。現(xiàn)場(chǎng)總線技術(shù)將專用微處理器置入傳統(tǒng)的測(cè)量控制儀表,使它們各自都具有數(shù)字計(jì)算和數(shù)字通信能力,并按照公開、規(guī)范的通信協(xié)議,在位于現(xiàn)場(chǎng)的多個(gè)微機(jī)化測(cè)量控制設(shè)備之間以及現(xiàn)場(chǎng)儀表與遠(yuǎn)程監(jiān)控計(jì)算機(jī)之間,實(shí)現(xiàn)數(shù)據(jù)傳輸與信息交換,形成各種適應(yīng)實(shí)際需要的自動(dòng)控制系統(tǒng)。簡而言之,它把單個(gè)分散的測(cè)量控制設(shè)備變成網(wǎng)絡(luò)節(jié)點(diǎn),以現(xiàn)場(chǎng)總線為紐帶,把它們連接成可以互相溝通信息、共同完成控制任務(wù)的網(wǎng)絡(luò)系統(tǒng)與控制系統(tǒng)。 1.1.2 現(xiàn)場(chǎng)總線的特點(diǎn)(1)全數(shù)字通信現(xiàn)場(chǎng)總線采用完全的數(shù)字信號(hào)傳輸。這種數(shù)字化的傳輸方式使得信號(hào)的檢錯(cuò)、糾錯(cuò)機(jī)制得以實(shí)現(xiàn),因此它的抗干擾能力和魯棒性較高。同時(shí)全數(shù)字通信使得多參數(shù)傳輸?shù)靡詫?shí)現(xiàn)。(2)多分支結(jié)構(gòu)現(xiàn)場(chǎng)總線的拓?fù)淇梢詾榭偩€型、星型、樹型等多種形式。(3)現(xiàn)場(chǎng)設(shè)備狀態(tài)可控通過現(xiàn)場(chǎng)總線,現(xiàn)場(chǎng)設(shè)備的管理信息大大增加,這些信息包括功能模塊組態(tài)、參數(shù)狀況、診斷和驗(yàn)證數(shù)據(jù)、設(shè)備材質(zhì)和過程條件等。操作人員在控制室就可以對(duì)這些信息進(jìn)行管理和利用,對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行維護(hù)。(4)控制分散現(xiàn)場(chǎng)總線系統(tǒng)采用全分散控制?,F(xiàn)場(chǎng)設(shè)備既有檢測(cè)、變換、工程量處理和補(bǔ)償功能,也有運(yùn)算和控制功能。通過現(xiàn)場(chǎng)總線,將傳統(tǒng)DCS、PLC等控制系統(tǒng)復(fù)雜的控制任務(wù)進(jìn)行分解,分散在現(xiàn)場(chǎng)設(shè)備中,簡化了系統(tǒng)結(jié)構(gòu),提高了系統(tǒng)的可靠性、自治性和靈活性?,F(xiàn)場(chǎng)總線自20世紀(jì)80年代產(chǎn)生以來,由于適應(yīng)工業(yè)控制系統(tǒng)網(wǎng)絡(luò)化和智能化的發(fā)展方向,受到全世界工業(yè)自動(dòng)化領(lǐng)域的普遍關(guān)注,從而發(fā)展迅速。目前已開發(fā)出40多種現(xiàn)場(chǎng)總線,如Interbus、Bitbus、DeviceNet、Modbus、Arcnet、P-Net、FIP、ISP等。1.1.3 RS485總線RS485總線系統(tǒng)是用于在數(shù)據(jù)通信系統(tǒng)中滿足較復(fù)雜應(yīng)用的主從式系統(tǒng)。其采用差分方式進(jìn)行雙向平衡傳輸,傳輸距離較遠(yuǎn),最大可達(dá)1200m,傳輸更遠(yuǎn)距離時(shí)可加中繼器。RS485以半雙工方式通訊,支持多點(diǎn)連接,允許掛接多達(dá)32個(gè)節(jié)點(diǎn),利用驅(qū)動(dòng)器可使節(jié)點(diǎn)增至128個(gè)。其傳輸速率較高,最高可達(dá)10Mbit/s。RS485總線已成為工業(yè)領(lǐng)域應(yīng)用最為廣泛的總線之一。RS485總線標(biāo)準(zhǔn)只對(duì)物理層接口進(jìn)行定義,上層協(xié)議選擇比較靈活。相對(duì)于FF、PROFIBUS、CAN等真正的現(xiàn)場(chǎng)總線系統(tǒng),RS485總線系統(tǒng)在軟硬件成本上具有較大優(yōu)勢(shì),在一定時(shí)間內(nèi)仍將是中小控制系統(tǒng)的主要形式。1.1.4 MODBUS協(xié)議MODBUS 協(xié)議最早是由美國 MODICON 公司針對(duì)其PLC產(chǎn)品開發(fā)的一種通信協(xié)議。由于該協(xié)議定義的是一種數(shù)據(jù)幀結(jié)構(gòu),獨(dú)立于物理層介質(zhì)和設(shè)備通信網(wǎng)絡(luò),容易被控制器識(shí)別和使用,因此MODICON 公司將其發(fā)展成為標(biāo)準(zhǔn) MODBUS 接口和MODBUS PLUS 網(wǎng)絡(luò),并可擴(kuò)展到其他網(wǎng)絡(luò)應(yīng)用中。MODBUS 協(xié)議應(yīng)用在標(biāo)準(zhǔn) MODBUS 網(wǎng)絡(luò)時(shí),將被直接傳送;若應(yīng)用在其他網(wǎng)絡(luò),可以將該協(xié)議植入其通信數(shù)據(jù)幀結(jié)構(gòu)中進(jìn)行傳送。因?yàn)?MODBUS 協(xié)議良好的適用性已經(jīng)得到了眾多大公司(例如GE、SIEMENS、OMRON 等)的支持,所以都把它作為一種標(biāo)準(zhǔn)的通信接口提供給用戶,并且作為與主系統(tǒng)通信的主要途徑。目前,我國電力和化工行業(yè)已經(jīng)廣泛使用集散控制系統(tǒng)DCS ( Distributed Control System )系統(tǒng)。不過在大多數(shù)場(chǎng)合,DCS 系統(tǒng)都與其他專用控制系統(tǒng)混合使用。專用系統(tǒng)包含PLC、數(shù)據(jù)采集器、智能控制器、智能儀表等。如果將這些系統(tǒng)都接入 DCS 系統(tǒng)統(tǒng)一監(jiān)視、控制、管理,無疑會(huì)極大提高企業(yè)的經(jīng)濟(jì)效率和管理水平。值得關(guān)注的是現(xiàn)在幾乎所有的 DCS 系統(tǒng)都提供了 MODBUS 通信接口。所以,進(jìn)行基于 MODBUS 協(xié)議的控制器遠(yuǎn)程監(jiān)控系統(tǒng)開發(fā)具有現(xiàn)實(shí)意義和可行性。MODBUS 協(xié)議采用MasterSlave技術(shù),是一種問答方式的通信協(xié)議。一個(gè) Master 可以對(duì)應(yīng)一個(gè)或多個(gè)Slave,只有 Master 才可進(jìn)行初始化的詢問,為 Slave 分配地址,對(duì)所有的 Slave 發(fā)送廣播信息 。MODBUS 協(xié)議在點(diǎn)對(duì)點(diǎn)通信時(shí)采用 RS232/RS422 串口通信標(biāo)準(zhǔn)。多點(diǎn)通信時(shí)則采用 RS485 串口通信標(biāo)準(zhǔn)。1.2 現(xiàn)代自動(dòng)控制系統(tǒng)和IEC61131-3國際標(biāo)準(zhǔn)在工業(yè)控制領(lǐng)域,PLC技術(shù)的發(fā)展在上世紀(jì)90年代經(jīng)歷了一次高潮。這得益于微電子、網(wǎng)絡(luò)通信和控制技術(shù)的迅猛發(fā)展。但隨著技術(shù)的進(jìn)步和市場(chǎng)要求的提高,傳統(tǒng)的PLC越來越暴露出其在數(shù)據(jù)封裝能力,程序可重用性,順序操作編程等方面的不足。這些缺陷導(dǎo)致了不同制造商PLC平臺(tái)的不兼容,也給工程技術(shù)人員的學(xué)習(xí)和操作帶來了極大的不便。統(tǒng)一的編程規(guī)則成為技術(shù)人員的迫切需求。IEC61131標(biāo)準(zhǔn)正是在這種情況下應(yīng)運(yùn)而生。IEC61131-3是IEC 61131國際標(biāo)準(zhǔn)的第三部分121314, 是第一個(gè)為工業(yè)自動(dòng)化控制系統(tǒng)的軟件設(shè)計(jì)提供標(biāo)準(zhǔn)化編程語言的國際標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)提供給用戶一種良好結(jié)構(gòu)、自上而下或自下而上的程序開發(fā)方法,提供全套的配置集成,允許程序分解成功能塊和軟件元素,進(jìn)行完全的程序控制。程序不同部分在不同時(shí)間,以不同周期或平行的運(yùn)行。提供了一套統(tǒng)一的應(yīng)用于PLC的語法和語義。IEC61131-3包括5種編程語言,即指令表、結(jié)構(gòu)化文本、梯型圖、功能塊圖和順序功能圖。規(guī)范了編程語言、PLC與編程系統(tǒng)的接口、字符集和工程管理,使得所有PLC使用相同的概念,平臺(tái)程序可以互相移植,從而整體降低自動(dòng)化控制系統(tǒng)的費(fèi)用。這些都是在工業(yè)控制系統(tǒng)所闡述的軟件設(shè)計(jì)的概念和軟件模型等的基礎(chǔ)上制定的,適應(yīng)了當(dāng)今世界軟件、工業(yè)控制系統(tǒng)的發(fā)展方向。符合IEC 61131-3的軟件系統(tǒng)是一個(gè)結(jié)構(gòu)完善、可重復(fù)使用、可維護(hù)的工業(yè)控制系統(tǒng)軟件。標(biāo)準(zhǔn)最初主要用于可編程序控制器PLC的編程系統(tǒng),但隨著可編程序控制器PLC技術(shù)、編程語言等的不斷進(jìn)步也在不斷地進(jìn)行著補(bǔ)充和完善。目前該標(biāo)準(zhǔn)同樣也適用于過程控制領(lǐng)域、分散型控制系統(tǒng)、基于控制系統(tǒng)的軟邏輯、SCADA等。IEC 61131-3國際標(biāo)準(zhǔn)在技術(shù)上的實(shí)現(xiàn)是高水平的,因此有足夠的發(fā)展空間和變動(dòng)余地,這也使得該標(biāo)準(zhǔn)能很好地適應(yīng)工業(yè)控制的發(fā)展和要求。因此IEC 61131-3標(biāo)準(zhǔn)在1993頒布之后被國際用戶和開發(fā)商團(tuán)體廣泛接受,目前得到全世界的認(rèn)可。世界頂尖的工業(yè)控制商接受了這個(gè)編程模型,各種軟件公司提供相應(yīng)的開發(fā)工具。IEC 61131-3國際標(biāo)準(zhǔn)已對(duì)整個(gè)控制領(lǐng)域形成了巨大的沖擊,采用或應(yīng)用符合IEC 61131-3國際標(biāo)準(zhǔn)的組態(tài)產(chǎn)品,已經(jīng)成為國際工業(yè)控制領(lǐng)域的一大趨勢(shì)。1.3 IEC 61131-3及其功能塊編程IEC 61131標(biāo)準(zhǔn)提供給用戶一種良好結(jié)構(gòu)、自上而下或自下而上的程序開發(fā)方法,提供全套的配置集成,允許程序分解成功能塊和軟件元素,進(jìn)行完全的程序控制,程序不同部分在不同時(shí)間,以不同周期或平行的運(yùn)行。IEC 61131將特定應(yīng)用的控制系統(tǒng)稱為配置,包括硬件的分配、過程資源劃分、輸入輸出通道分配、內(nèi)存地址分配及系統(tǒng)的性能分析。一個(gè)配置中可定義一個(gè)或多個(gè)資源,資源可以理解為可執(zhí)行的過程處理設(shè)備,像一個(gè)CPU。一個(gè)資源中可以定義一個(gè)或多個(gè)任務(wù)。由任務(wù)控制一套程序或/和功能塊的執(zhí)行,可以周期或由事件驅(qū)動(dòng)。程序可以使用5種語言的任何一種。典型程序由功能塊、函數(shù)組成,包括數(shù)據(jù)結(jié)構(gòu)和邏輯。與一個(gè)資源、一個(gè)任務(wù)、運(yùn)行于一個(gè)閉環(huán)系統(tǒng)的傳統(tǒng)PLC相比,IEC 61131-3是開放和先進(jìn)的。IEC 61131-3標(biāo)準(zhǔn)中提供了4種內(nèi)部操作語言和一個(gè)結(jié)構(gòu)化語言定義:(1)順序功能圖(SFC)是IEC 61131-3標(biāo)準(zhǔn)的中心語言,用于工業(yè)控制軟件的結(jié)構(gòu)化的內(nèi)部組織。SFC語言源于Petri Nets,用于解決面向序列的問題。它將控制過程周期分成定義好的步驟,并由轉(zhuǎn)移條件隔開。步驟描述了行為,對(duì)應(yīng)程序組織單元;轉(zhuǎn)換描述了條件,對(duì)應(yīng)程序組織單元的邏輯聯(lián)系,它決定其他語言描述行為的執(zhí)行順序。不管是平行的執(zhí)行邏輯或有多個(gè)選項(xiàng)的過程都很容易地用SFC表示。(2)功能塊圖(FBD)是圖形化的編程語言,使用IEC功能塊庫中的功能塊進(jìn)行圖形化程序開發(fā),主要用于過程工業(yè)。允許用戶基于存在的功能塊組成更復(fù)雜的控制過程。功能塊圖的支持使IEC 61131-3有較大的發(fā)展空間。(3)結(jié)構(gòu)化文本(ST)是類Pascal的高級(jí)結(jié)構(gòu)化語言,但更直觀,可以實(shí)現(xiàn)不易用圖形化語言實(shí)現(xiàn)的復(fù)雜應(yīng)用。ST能夠?qū)崿F(xiàn)IF和ELSE選擇、FOR和WHILE循環(huán),提供對(duì)結(jié)構(gòu)化文本支持。ST像一般語言的語句,適合于編程新手,并能簡化梯形圖和功能塊中的長代碼。(4)指令表(IL)是寄存器級(jí)別的低級(jí)語言,由一套連續(xù)的指令組成,每行一條,很像微處理器的匯編語言。IL一般用于熟練的編程人員。(5)梯形圖(LD)是使用接觸器和線圈的圖形化編程方法,一般用于離散控制系統(tǒng)。LD使用接觸器表示輸入元素,線圈表示輸出結(jié)果,以用戶最熟悉的方法取代邏輯等式和簡單行為。IEC 61131-3的5種語言中,F(xiàn)BD最有生命力和發(fā)展前途。FB(功能塊)是控制系統(tǒng)的基本構(gòu)件,是一個(gè)包裝好的控制程序,可以是任何IEC 61131-3語言編寫的控制邏輯和策略包裝成的軟件元素,可以在相同程序的不同部分或分散的其他程序中使用。功能塊能夠封裝數(shù)據(jù)和邏輯,超過了FORTRAN和C語言所寫的子程序,有面向?qū)ο蟮暮x,其組成及對(duì)控制編程軟件的貢獻(xiàn)很像是現(xiàn)代電子電路中的集成芯片。功能塊的使用提高了系統(tǒng)可靠性。數(shù)據(jù)封裝避免了許多錯(cuò)誤源,用戶不必關(guān)心具體實(shí)現(xiàn)細(xì)節(jié),只需關(guān)心與外部的接口和如何使用。開發(fā)人員只需注重于實(shí)現(xiàn),而不必關(guān)心使用。功能塊允許來自不同程序、項(xiàng)目、位置、公司甚至國家的不同組件的結(jié)合。IEC 61131-3標(biāo)準(zhǔn)保證了功能塊定義接口的使用,即定義的輸入和輸出參數(shù)。由不同程序員設(shè)計(jì)的功能塊可借助輸入和輸出參數(shù)進(jìn)行交互,當(dāng)然輸入和輸出參數(shù)必須是標(biāo)準(zhǔn)中定義的數(shù)據(jù)類型。FB不僅利于結(jié)構(gòu)化程序設(shè)計(jì),長遠(yuǎn)地看還能加速應(yīng)用開發(fā),尤其對(duì)相近的應(yīng)用開發(fā)有效?,F(xiàn)代控制系統(tǒng)的一個(gè)目標(biāo)是代碼重用,相同的控制邏輯無論硬件是PLC、DCS或是 PC,均有相同的程序源代碼,這個(gè)目標(biāo)只有通過FB實(shí)現(xiàn)。功能塊的支持使得遠(yuǎn)程控制成為可能。符合IEC 61131-3標(biāo)準(zhǔn)的DCS系統(tǒng)編程軟件,必不可少地會(huì)使用FB。DCS中所有控制單元的控制邏輯一般都以FB的形式提供在編程環(huán)境中。DCS還需要提供一個(gè)現(xiàn)場(chǎng)總線通信系統(tǒng)中用于分散處理的FB。開放式現(xiàn)場(chǎng)總線控制系統(tǒng)FCS通過組態(tài)軟件生成的參數(shù)及算法,不僅可以在控制器中運(yùn)行,還可以在遠(yuǎn)程I/O或智能設(shè)備上運(yùn)行,這就需要定義好的FB,可以在智能儀表及執(zhí)行機(jī)構(gòu)中進(jìn)行運(yùn)算,實(shí)現(xiàn)真正的分布式控制。1.4 可編程邏輯控制器可編程邏輯控制器(Program Logic Controller)是在工業(yè)環(huán)境中使用的數(shù)字操作的電子系統(tǒng),它使用可編程存儲(chǔ)器內(nèi)部存儲(chǔ)用戶設(shè)計(jì)的指令,這些指令用來實(shí)現(xiàn)特殊的功能,諸如邏輯運(yùn)算、順序操作、定時(shí)、計(jì)數(shù)以及算數(shù)運(yùn)算和通過數(shù)字或模擬輸入/輸出來控制各種類型的機(jī)械或過程。4781968年美國GM(通用汽車)公司提出取代繼電器控制裝置的要求,第二年美國數(shù)字公司研制出了第一代可編程序控制器,滿足了GM公司裝配線的要求??删幊炭刂破鲝漠a(chǎn)生到現(xiàn)在,盡管只有四十幾年的時(shí)間由于其編程簡單、可靠性高、使用簡單、維護(hù)容易等優(yōu)點(diǎn),使其得到了迅猛的發(fā)展,在冶金、機(jī)械、石油、化工、紡織、建筑、電力等領(lǐng)域都得到了廣泛的應(yīng)用。 隨著PLC技術(shù)的進(jìn)步和市場(chǎng)要求的提高,傳統(tǒng)的PLC越來越暴露出其在數(shù)據(jù)封裝能力,程序可重用性,順序操作編程等方面的不足。這些缺陷導(dǎo)致了不同制造商PLC平臺(tái)的不兼容,也給工程技術(shù)人員的學(xué)習(xí)和操作帶來了極大的不便。統(tǒng)一的編程規(guī)則成為技術(shù)人員的迫切需求。1.5 組態(tài)軟件組態(tài)英文是“Configuration”,組態(tài)就是用應(yīng)用軟件中提供的工具、方法、完成工程中某一具體任務(wù)的過程。56組態(tài)軟件是指一些數(shù)據(jù)采集與過程控制的專用軟件,它們是在自動(dòng)控制系統(tǒng)監(jiān)控層一級(jí)的軟件平臺(tái)和開發(fā)環(huán)境,使用靈活的組態(tài)方式,為用戶提供快速構(gòu)建工業(yè)自動(dòng)控制系統(tǒng)監(jiān)控功能的、通用層次的軟件工具。組態(tài)軟件應(yīng)該能支持各種工控設(shè)備和常見的通信協(xié)議,并且通常應(yīng)提供分布式數(shù)據(jù)管理和網(wǎng)絡(luò)功能。對(duì)應(yīng)于原有的HMI(人機(jī)接口軟件,Human Machine Interface)的概念,組態(tài)軟件應(yīng)該是一個(gè)使用戶能快速建立自己的HMI的軟件工具,或開發(fā)環(huán)境。當(dāng)前的組態(tài)軟件產(chǎn)品有:iFIX組態(tài)軟件、悉雅特citect組態(tài)軟件、紫金橋組態(tài)軟件、MCGS組態(tài)軟件、三維力控ForceControl組態(tài)軟件、西門子WinCC組態(tài)軟件、Rockwell RSView32組態(tài)軟件等。使用組態(tài)軟件開發(fā)系統(tǒng)工程的一般步驟:(1) 將所有I/O點(diǎn)的參數(shù)收集齊全,并填寫表格,以備在監(jiān)控組態(tài)軟件和PLC上組態(tài)時(shí)使用。(2) 搞清楚所使用的I/O設(shè)備的生產(chǎn)商、種類、型號(hào)、使用的通信接口類型,采用的通信協(xié)議,以便在定義I/O設(shè)備時(shí)做出準(zhǔn)確選擇。(3) 將所有I/O點(diǎn)的I/O標(biāo)識(shí)收集齊全,并填寫表格,I/O標(biāo)識(shí)是唯一地確定一個(gè)I/O點(diǎn)的關(guān)鍵字,組態(tài)軟件通過向I/O設(shè)備發(fā)出I/O標(biāo)識(shí)來請(qǐng)求其對(duì)應(yīng)的數(shù)據(jù)。在大多數(shù)情況下I/O標(biāo)識(shí)是I/O點(diǎn)的地址或位號(hào)名稱。(4) 根據(jù)工藝過程繪制、設(shè)計(jì)畫面結(jié)構(gòu)和畫面草圖。(5) 按照第一步統(tǒng)計(jì)出的表格,建立實(shí)時(shí)數(shù)據(jù)庫,正確組態(tài)各種變量參數(shù)。(6) 根據(jù)第一步和第二步的統(tǒng)計(jì)結(jié)果,在實(shí)時(shí)數(shù)據(jù)庫中建立實(shí)時(shí)數(shù)據(jù)庫變量與I/O點(diǎn)的一一對(duì)應(yīng)關(guān)系,即定義數(shù)據(jù)連接。(7) 根據(jù)第四步的畫面結(jié)構(gòu)和畫面草圖,組態(tài)每一幅靜態(tài)的操作畫面(主要是繪圖)。(8) 將操作畫面中的圖形對(duì)象與實(shí)時(shí)數(shù)據(jù)庫變量建立動(dòng)畫連接關(guān)系,規(guī)定動(dòng)畫屬性和幅度。(9) 視用戶需求,制作歷史趨勢(shì),報(bào)警顯示,以及開發(fā)報(bào)表系統(tǒng)。之后,還需加上安全權(quán)限設(shè)置。(10) 對(duì)組態(tài)內(nèi)容進(jìn)行分段和總體調(diào)試,視調(diào)試情況對(duì)軟件進(jìn)行相應(yīng)修改。(11) 將全部內(nèi)容調(diào)試完成以后,對(duì)上位軟件進(jìn)行最后完善(如:加上開機(jī)自動(dòng)打開監(jiān)控畫面,禁止從監(jiān)控畫面退出等),讓系統(tǒng)投入正式(或試)運(yùn)行。1.6 論文的主要工作 本文主要研究了IEC61131-3標(biāo)準(zhǔn),介紹了組態(tài)軟件PLC_Config的整體設(shè)計(jì)方案,對(duì)軟件的各個(gè)模塊進(jìn)行了總體的描述,著重介紹了PLC_Config中的功能塊組態(tài)的編輯和編譯的設(shè)計(jì)和實(shí)現(xiàn)方法,解決了圖形化編程語言的可視化編輯和編譯的實(shí)現(xiàn)方法,功能塊在PLC_Config和PLC嵌入式程序之間的表現(xiàn)形式的轉(zhuǎn)化等關(guān)鍵問題。本文的重點(diǎn)是功能塊程序的編輯和編譯的實(shí)現(xiàn)方法和思路。在文章的最后,對(duì)PLC_Config進(jìn)行了簡單的測(cè)試應(yīng)用,得到了理想的效果。2 PLC_Config組態(tài)軟件設(shè)計(jì)和實(shí)現(xiàn)2.1 概述PLC_Config主要有以下幾個(gè)模塊組成:現(xiàn)場(chǎng)設(shè)備管理模塊、工程管理模塊、可視化功能塊組態(tài)模塊、現(xiàn)場(chǎng)設(shè)備監(jiān)控模塊、通信服務(wù)模塊及信息報(bào)告模塊,各個(gè)模塊之間的關(guān)系如圖2-1所示?,F(xiàn)場(chǎng)設(shè)備管理模塊設(shè)備信息保存現(xiàn)場(chǎng)設(shè)備管理網(wǎng)絡(luò)監(jiān)控可視化組態(tài)模塊基于功能塊的控制回路編輯功能塊參數(shù)組態(tài)符號(hào)表編寫、狀態(tài)表編寫工程管理、I/O配置等現(xiàn)場(chǎng)設(shè)備監(jiān)控模塊創(chuàng)建監(jiān)控畫面,監(jiān)控現(xiàn)場(chǎng)信息,監(jiān)視過程變量,強(qiáng)制變量輸出信息報(bào)告模塊報(bào)告系統(tǒng)信息、操作信息、編譯信息及通信信息文件管理模塊維護(hù)、生成、修改工程信息、組態(tài)信息等。 通信服務(wù)模塊包括通信服務(wù),如變量讀寫、設(shè)備聲明、程序上載、程序下載等服務(wù)。圖2-1 PLC_Config的總體模塊劃分結(jié)構(gòu)可視化組態(tài)模塊是整個(gè)組態(tài)軟件的核心部分,實(shí)現(xiàn)了PLC應(yīng)用組態(tài)的可視化操作?,F(xiàn)場(chǎng)設(shè)備管理模塊負(fù)責(zé)維護(hù)、修改控制策略。現(xiàn)場(chǎng)設(shè)備監(jiān)控模塊負(fù)責(zé)監(jiān)控現(xiàn)場(chǎng)網(wǎng)絡(luò)的運(yùn)行情況,同時(shí)也可強(qiáng)制過程變量的值。文件管理模塊維護(hù)、生成、修改工程信息、組態(tài)信息等,并保存功能塊回路的組態(tài)信息。通信服務(wù)模塊提供了系統(tǒng)中的各類通信服務(wù)。信息報(bào)告模塊負(fù)責(zé)及時(shí)通報(bào)各類系統(tǒng)信息,如設(shè)備信息、網(wǎng)絡(luò)信息、操作信息、編譯信息等。PLC_Config以工程的方式對(duì)組態(tài)信息進(jìn)行管理。一個(gè)工程對(duì)應(yīng)一個(gè)工程目錄,工程目錄結(jié)構(gòu)如圖4-2所示。每個(gè)工程目錄包含一個(gè)工程文件,功能塊程序文件,狀態(tài)表,符號(hào)表等文件。工程文件描述整個(gè)工程的總體框架,對(duì)工程下的所有文件進(jìn)行有效的組織管理。程序塊文件保存了設(shè)備的功能塊組態(tài)信息,這些信息可以形成代碼,并下載到控制器。符號(hào)表主要是為了使用符號(hào)編程,方便程序的維護(hù)和修改,以及程序的可讀性。狀態(tài)表用于過程變量的監(jiān)視以及強(qiáng)制。通信配置可配置當(dāng)前網(wǎng)絡(luò)的信息,配置擴(kuò)展I/O模塊的信息。其結(jié)構(gòu)如下:工程目錄功能塊程序目錄功能塊程序1工程文件:保存工程的總體結(jié)構(gòu)信息圖2-2 PLC_Config所創(chuàng)建工程的目錄結(jié)構(gòu)功能塊程序2功能塊程序n工程狀態(tài)表文件:保存了狀態(tài)表的有關(guān)信息工程符號(hào)表文件:保存了符號(hào)表的有關(guān)信息PLC_Config啟動(dòng)時(shí)首先要調(diào)用文件管理模塊、現(xiàn)場(chǎng)設(shè)備管理模塊的初始化函數(shù),對(duì)這兩個(gè)模塊進(jìn)行初始化,然后新建或打開一個(gè)工程,啟動(dòng)工程,同時(shí)打開網(wǎng)絡(luò)套接字映射接口對(duì)象,監(jiān)聽網(wǎng)絡(luò)設(shè)備信息,每發(fā)現(xiàn)一個(gè)在線設(shè)備就在設(shè)備管理窗口中添加該設(shè)備相關(guān)信息。創(chuàng)建一個(gè)功能塊文件,選擇功能塊添加到控制回路編輯窗口中,通過鼠標(biāo)操作建立鏈接對(duì)象,確定功能塊之間的連接關(guān)系及功能塊的執(zhí)行順序,形成一個(gè)完整的控制回路,對(duì)各個(gè)功能塊進(jìn)行參數(shù)配置。最后對(duì)組態(tài)信息進(jìn)行編譯,下載組態(tài)信息到現(xiàn)場(chǎng)設(shè)備中。2.2 現(xiàn)場(chǎng)設(shè)備管理模塊現(xiàn)場(chǎng)設(shè)備管理模塊負(fù)責(zé)偵聽網(wǎng)絡(luò)設(shè)備信息,維護(hù)和管理現(xiàn)場(chǎng)設(shè)備信息。本模塊至底向上可分為三層:網(wǎng)絡(luò)層、設(shè)備管理層、后臺(tái)數(shù)據(jù)庫層。實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控層:啟動(dòng)套接字映射接口對(duì)象,監(jiān)聽網(wǎng)絡(luò)上的設(shè)備信息,將獲取的設(shè)備相關(guān)信息轉(zhuǎn)交給現(xiàn)場(chǎng)設(shè)備管理層處理?,F(xiàn)場(chǎng)設(shè)備信息現(xiàn)場(chǎng)設(shè)備管理實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控后臺(tái)數(shù)據(jù)庫層設(shè)備管理層網(wǎng)絡(luò)層圖2-3 現(xiàn)場(chǎng)設(shè)備管理模塊的三層體系結(jié)構(gòu)可視化工程管理模塊、信息報(bào)告模塊通信服務(wù)模塊現(xiàn)場(chǎng)設(shè)備管理層:該層負(fù)責(zé)接收來自實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控層的消息,對(duì)該消息進(jìn)行處理,將消息報(bào)告給可視化工程管理模塊、信息報(bào)告模塊,維護(hù)后臺(tái)數(shù)據(jù)庫。該層是現(xiàn)場(chǎng)設(shè)備管理模塊的核心層,是該模塊和其他模塊交互的主要接口。現(xiàn)場(chǎng)設(shè)備信息層:該層維護(hù)一個(gè)Access數(shù)據(jù)庫,存放現(xiàn)場(chǎng)設(shè)備的信息。該數(shù)據(jù)庫的主表是一個(gè)名為DevOnline數(shù)據(jù)表。DevOnline數(shù)據(jù)表是一個(gè)動(dòng)態(tài)變化的數(shù)據(jù)表,該數(shù)據(jù)表存放的是目前在線的設(shè)備,根據(jù)設(shè)備在線、離線狀態(tài),及時(shí)地刪除和添加設(shè)備信息,供組態(tài)使用。2.3 文件管理模塊在PLC應(yīng)用系統(tǒng)中用文件來描述設(shè)備信息,保存回路信息以及符號(hào)表和狀態(tài)表。PLC_Config需指定一個(gè)專用目錄來存放各類應(yīng)用程序文件,將這個(gè)目錄定義為應(yīng)用程序根目錄。該目錄下的各種文件就是應(yīng)用程序生成的工程相關(guān)的文件。PECX后綴的文件是用來保存工程信息的,其中包含工程名,工程所在的根目錄,以及工程的配置信息等。FBD后綴的文件是用來保存功能塊回路的組態(tài)信息的。其中包括對(duì)功能塊網(wǎng)絡(luò)的保存,網(wǎng)絡(luò)中功能塊的保存以及功能塊參數(shù)的保存、網(wǎng)絡(luò)注釋的保存等編譯需要使用的信息。STS后綴的文件是用來保存狀態(tài)表配置的,狀態(tài)表是用來調(diào)試的時(shí)候觀察PLC內(nèi)部數(shù)據(jù)的。同時(shí)也可以對(duì)內(nèi)部數(shù)據(jù)進(jìn)行強(qiáng)制。在MFC為中系統(tǒng)文件的保存提供了Serialize函數(shù),Serialize()序列化函數(shù)是一個(gè)虛函數(shù),因此可以借助這個(gè)函數(shù)來實(shí)現(xiàn)對(duì)文件數(shù)據(jù)的讀取,保存或者修改。但是現(xiàn)代更加主流的保存方法是采用XML描述文件來保存,使用XML文件的好處在于各個(gè)平臺(tái)通用,可移植性好,幾乎所有的應(yīng)用程序都能處理XML文件,并且通過DOM提供的方法可以很快捷的對(duì)XML文件進(jìn)行操作。2.4 可視化組態(tài)模塊PLC_Config組態(tài)軟件是以工程的方式來管理和組織信息,而這是通過可視化工程管理窗口來實(shí)現(xiàn)的。圖2-4表示一個(gè)新創(chuàng)建的工程,工程名為df.pecx。如圖所示,一個(gè)新創(chuàng)建的工程會(huì)自動(dòng)為工程添加一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)名為df.pecx。在df.pecx節(jié)點(diǎn)下面有四個(gè)節(jié)點(diǎn):程序塊節(jié)點(diǎn)、符號(hào)表節(jié)點(diǎn)、狀態(tài)表節(jié)點(diǎn)、通信配置節(jié)點(diǎn)、指令節(jié)點(diǎn)。圖2-5表示的是項(xiàng)目的數(shù)據(jù)結(jié)構(gòu)圖。工程管理窗口對(duì)應(yīng)的視圖類CProjectView、文檔類是CProjectDoc。程序塊節(jié)點(diǎn)負(fù)責(zé)管理當(dāng)前由用戶創(chuàng)建的所有程序。程序塊節(jié)點(diǎn)負(fù)責(zé)管理所有功能塊控制策略??赏ㄟ^鼠標(biāo)右鍵操作,創(chuàng)建一個(gè)新的控制策略文件,每一個(gè)控制策略文件對(duì)應(yīng)一種控制策略。一個(gè)控制策略可包含多個(gè)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)中由各種基本功能塊組成復(fù)雜的運(yùn)算邏輯,用戶可創(chuàng)建并選擇合適的回路文件編譯并下載。雙擊某一控制策略節(jié)點(diǎn),將打開控制策略編輯窗口,在該窗口中完成控制回路組態(tài)??刂撇呗跃庉嫶翱谑腔赩C+的Document/View結(jié)構(gòu),在本程序?qū)崿F(xiàn)中,CFBDDoc類、CFBDView類和CFBDFrame類構(gòu)成了控制策略編輯窗口的三位一體的Document/View結(jié)構(gòu)。圖2-4 PLC_Config中的工程樹符號(hào)表中的文件是用來保存符號(hào)表的,符號(hào)表是用來保存變量定義的,他定義了PLC內(nèi)部的物理地址和符號(hào)的一一對(duì)應(yīng)關(guān)系。為了增強(qiáng)程序的可讀性以及修改程序的方便性,需要使用符號(hào)表。符號(hào)表同樣是采用VC+的Document/View結(jié)構(gòu),即它的三位一體結(jié)構(gòu)分別是CSymbolTblDoc類、CSymbolTblFrame類和CSymbolTblView類。編程人員可以定義,修改,刪除符號(hào)表項(xiàng),同時(shí)也可將符號(hào)表應(yīng)用于程序中。以方便程序設(shè)計(jì)以及調(diào)試。符號(hào)表的保存主要采用鏈表完成。鏈表成員即是一個(gè)符號(hào)項(xiàng)。如圖2-6。項(xiàng)目根節(jié)點(diǎn)m_projectItem在工程樹中的編號(hào)hItem工程信息m_Project工程名m_projectname工程目錄m_projectpath工程配置m_projectcfg程序塊節(jié)點(diǎn)m_fbItem在工程樹中的編號(hào)hItem程序塊列表m_loopTable控制回路信息LoopInfo控制回路信息LoopInfo符號(hào)表節(jié)點(diǎn)m_SblTblItem在工程樹中的編號(hào)hItem符號(hào)表信息m_SblNodeTable絕對(duì)地址m_strAbsAddress符號(hào)名m_strSymbol注釋m_strVarComment狀態(tài)表節(jié)點(diǎn)m_StatusItem在工程樹中的編號(hào)hItem符號(hào)表信息m_StatusChtTbl絕對(duì)地址m_strAbsAddress符號(hào)名m_strSymbol數(shù)據(jù)類型m_strVarType圖2.5 項(xiàng)目數(shù)據(jù)結(jié)構(gòu)圖圖2-6 符號(hào)狀態(tài)表功能塊的可視化編輯模塊在下一章詳細(xì)介紹。2.5通信服務(wù)模塊通信服務(wù)模塊主要包括實(shí)時(shí)通信服務(wù)和套接字映射接口對(duì)象的實(shí)現(xiàn)。實(shí)時(shí)通信服務(wù)模塊中的各項(xiàng)通信服務(wù)以全局對(duì)象的形式,由組態(tài)程序的其他模塊所調(diào)用。當(dāng)組態(tài)程序用戶層需要與網(wǎng)絡(luò)通信時(shí),調(diào)用相應(yīng)服務(wù)的請(qǐng)求原語(Requset)將請(qǐng)求報(bào)文交給實(shí)時(shí)通信服務(wù),而通信服務(wù)在收到通信請(qǐng)求后,將調(diào)用套接字映射接口對(duì)象的數(shù)據(jù)發(fā)送接口將請(qǐng)求報(bào)文發(fā)送到網(wǎng)絡(luò)上。當(dāng)套接字映射接口對(duì)象通過數(shù)據(jù)接收接口接收到來自網(wǎng)絡(luò)的通信請(qǐng)求后,將調(diào)用相應(yīng)服務(wù)的指示原語(Indicate)把請(qǐng)求轉(zhuǎn)交給相應(yīng)通信服務(wù),通信服務(wù)收到通信請(qǐng)求后把該請(qǐng)求轉(zhuǎn)交給用戶層。如果該請(qǐng)求需要回應(yīng),用戶層會(huì)調(diào)用相應(yīng)通信服務(wù)的響應(yīng)原語(Response)把回復(fù)報(bào)文轉(zhuǎn)交給通信服務(wù),通信服務(wù)通過調(diào)用套接字接口對(duì)象的數(shù)據(jù)發(fā)送接口把回復(fù)報(bào)文發(fā)送到網(wǎng)絡(luò)上。當(dāng)套接字映射接口對(duì)象通過數(shù)據(jù)接收接口接收到來自網(wǎng)絡(luò)的通信回復(fù)后,將調(diào)用相應(yīng)服務(wù)的確定原語(Confirm)把回復(fù)報(bào)文交給通信服務(wù),然后再由通信服務(wù)把回復(fù)報(bào)文轉(zhuǎn)交給用戶層。圖2-7描述了的通信過程。請(qǐng)求用戶層確定響應(yīng)指示實(shí)時(shí)通信服務(wù)套接字映射接口用戶層實(shí)時(shí)通信服務(wù)套接字映射接口圖2-7 EPA通信過程2.5.1 實(shí)時(shí)通訊服務(wù)的實(shí)現(xiàn)實(shí)時(shí)通信服務(wù)分為應(yīng)用層實(shí)時(shí)通信服務(wù)和管理服務(wù)兩類。實(shí)時(shí)通信服務(wù)提供四種服務(wù)原語:請(qǐng)求、指示、響應(yīng)、確定。服務(wù)原語是通信服務(wù)提供給外部的調(diào)用接口,同時(shí)服務(wù)原語也表示一種執(zhí)行方向。在本程序中,將通信服務(wù)設(shè)計(jì)成對(duì)象的模式。每個(gè)通信服務(wù)在程序中表現(xiàn)為一個(gè)全局對(duì)象,稱為通信服務(wù)對(duì)象。每一個(gè)通信服務(wù)對(duì)象都具有以下幾個(gè)參數(shù):服務(wù)序號(hào)ID(m_MessageID)、服務(wù)使用標(biāo)志(m_beUsed)、服務(wù)請(qǐng)求完成標(biāo)志(m_reqFinished)。服務(wù)序號(hào)ID參數(shù)表示本服務(wù)被調(diào)用的次數(shù),該參數(shù)初始值為0,服務(wù)每調(diào)用一次,該值加1。服務(wù)使用標(biāo)志參數(shù)用于表示通信服務(wù)對(duì)象是否正在被調(diào)用,通常情況下,在同一時(shí)刻,通信服務(wù)對(duì)象只能響應(yīng)一個(gè)服務(wù)請(qǐng)求,即只有本次服務(wù)調(diào)用結(jié)束通信服務(wù)對(duì)象才能響應(yīng)下一個(gè)服務(wù)請(qǐng)求。服務(wù)請(qǐng)求完成標(biāo)志表示本次服務(wù)請(qǐng)求是否結(jié)束,對(duì)于確定性服務(wù),其服務(wù)請(qǐng)求需要得到響應(yīng),它有一定的等待時(shí)間,如果服務(wù)請(qǐng)求超過等待時(shí)間仍沒有收到響應(yīng),則認(rèn)為本次請(qǐng)求失敗。2.5.2 套接字映射接口對(duì)象的實(shí)現(xiàn) (1)套接字映射接口對(duì)象套接字映射接口對(duì)象(PLCSocket)封裝了各個(gè)網(wǎng)絡(luò)端口,如管理功能端口、應(yīng)用層服務(wù)端口。套接字映射接口提供了實(shí)時(shí)通信服務(wù)與TCP(UDP)/IP之間的映射。在網(wǎng)絡(luò)層次結(jié)構(gòu)上,套接字映射接口介于應(yīng)用層和傳輸層之間,向上它提供面向所有實(shí)時(shí)通訊服務(wù)的調(diào)用接口,向下它提供向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的調(diào)用接口。(2)套接字映射接口對(duì)象的報(bào)文發(fā)送管理組態(tài)程序在調(diào)用管理功能塊服務(wù)和應(yīng)用層服務(wù)發(fā)送數(shù)據(jù)時(shí),需要將數(shù)據(jù)傳送給套接字映射接口對(duì)象。套接字映射接口對(duì)象首先按發(fā)送優(yōu)先級(jí),將這些待發(fā)送的數(shù)據(jù)分別緩存在不同的隊(duì)列中,以等待發(fā)送,優(yōu)先級(jí)最高的報(bào)文最先發(fā)送。在系統(tǒng)中,定義了三級(jí)優(yōu)先級(jí):設(shè)備間周期性信息發(fā)布具有最高的優(yōu)先級(jí),以確??刂葡到y(tǒng)的連接正常運(yùn)行。對(duì)于事件信息、設(shè)備信息等的廣播發(fā)布具有次高優(yōu)先級(jí),而點(diǎn)對(duì)點(diǎn)之間的單播通信的優(yōu)先級(jí)最低。來自應(yīng)用層服務(wù)的請(qǐng)求報(bào)文,有些是需要確認(rèn)的,有些是不需要確認(rèn)的。對(duì)于不需要確認(rèn)的應(yīng)用層服務(wù)請(qǐng)求報(bào)文,套接字映射接口對(duì)象只需將該報(bào)文進(jìn)行打包,并發(fā)送出去即可。對(duì)于需要確認(rèn)的應(yīng)用層服務(wù)請(qǐng)求報(bào)文,套接字映射接口對(duì)象在向網(wǎng)絡(luò)上發(fā)送該報(bào)文時(shí),將根據(jù)發(fā)送該消息的服務(wù)ID(ServiceID)以及報(bào)文序號(hào)(MessageID),創(chuàng)建一個(gè)定時(shí)器對(duì)象,并開始啟動(dòng)定時(shí),并作以下處理:如果在當(dāng)前報(bào)文響應(yīng)時(shí)間ActiveMsgTime(即最大響應(yīng)等待時(shí)間)到之前收到正確的響應(yīng)報(bào)文,則由套接字映射接口對(duì)象將該響應(yīng)報(bào)文發(fā)送到相應(yīng)的服務(wù)接口,并同時(shí)將定時(shí)器清零,并刪除該定時(shí)器對(duì)象;如果在當(dāng)前報(bào)文響應(yīng)時(shí)間ActiveMsgTime(即最大響應(yīng)等待時(shí)間)到之前收到錯(cuò)誤的響應(yīng)報(bào)文,則由套接字映射接口對(duì)象將該響應(yīng)報(bào)文發(fā)送到相應(yīng)的服務(wù)接口,并同時(shí)將定時(shí)器清零,并刪除該定時(shí)器對(duì)象;服務(wù)將不對(duì)該報(bào)文進(jìn)行處理,并直接通知用戶功能塊實(shí)例,由用戶功能塊實(shí)例作出判斷并處理。如果定時(shí)時(shí)間超過當(dāng)前報(bào)文響應(yīng)時(shí)間ActiveMsgTime(即最大響應(yīng)等待時(shí)間),套接字映射對(duì)象仍未收到相應(yīng)于該請(qǐng)求報(bào)文的響應(yīng)報(bào)文,則向應(yīng)用層服務(wù)返回一個(gè)負(fù)響應(yīng),及超時(shí)響應(yīng)錯(cuò)誤類型,同時(shí)刪除該定時(shí)器對(duì)象。(3)套接字映射接口對(duì)象的報(bào)文接受管理組態(tài)程序啟動(dòng)之后,套接字接口對(duì)象就打開管理功能塊端口、應(yīng)用層服務(wù)端口,監(jiān)聽來自現(xiàn)場(chǎng)網(wǎng)絡(luò)的所有消息。當(dāng)接收到消息時(shí),由套接字映射接口對(duì)象對(duì)消息頭進(jìn)行解包,并根據(jù)消息所接收的端口的不同,將消息分送到不同的功能模塊處理。套接字映射接口對(duì)象接收到來自管理功能塊端口或應(yīng)用層服務(wù)端口的消息后,根據(jù)服務(wù)標(biāo)識(shí)(ServiceID)進(jìn)行判斷與處理,如服務(wù)標(biāo)識(shí)無效,則將報(bào)文丟棄,不作處理;如果服務(wù)標(biāo)識(shí)ID有效,則根據(jù)其服務(wù)類型,判斷是否作出應(yīng)答或響應(yīng):如果收到的消息是來自其他現(xiàn)場(chǎng)設(shè)備的請(qǐng)求消息,則根據(jù)其服務(wù)類型,判斷是否作出應(yīng)答或響應(yīng);如果收到的消息是組態(tài)程序發(fā)送出去的請(qǐng)求消息的響應(yīng),則根據(jù)消息序號(hào)(MessageID)、以及肯定或否定的響應(yīng),由用戶層作出判斷與處理。2.6信息報(bào)告模塊信息報(bào)告模塊將系統(tǒng)收集到各類信息及時(shí)通知給用戶,使用戶能清楚地得知目前的操作狀態(tài)。圖2-8是信息報(bào)告窗口的一個(gè)示意圖。信息報(bào)告窗口分為三個(gè)部分:編譯信息,系統(tǒng)日志信息,設(shè)備日志信息編譯信息:記錄控制回路組態(tài)信息的編譯信息,報(bào)告編譯錯(cuò)誤等。系統(tǒng)日志信息:記錄軟件的操作信息,用戶的操作信息。設(shè)備日志信息:提示設(shè)備的上線下線,并且提示設(shè)備IP沖突。 圖2-8 信息報(bào)告模塊2.6本章小結(jié)本章簡單介紹了PLC_Config的5大模塊,在下一章詳細(xì)介紹功能塊程序的編輯模塊和編譯模塊。,PLC_Config是基于功能塊的分布式控制系統(tǒng)的可視化組態(tài)程序。它通過創(chuàng)建鏈接對(duì)象,建立現(xiàn)場(chǎng)設(shè)備中各個(gè)功能塊之間連接關(guān)系,構(gòu)建成一個(gè)個(gè)控制回路,將組態(tài)信息下載現(xiàn)場(chǎng)設(shè)備中,完成對(duì)控制網(wǎng)絡(luò)的組態(tài)工作。整個(gè)組態(tài)過程以一種類似于搭建積木的方式,通過鼠標(biāo)拖拽、點(diǎn)擊完成,而不需要復(fù)雜的套接字編程,使得建立功能強(qiáng)大的應(yīng)用變得非常容易,大大降低了對(duì)工程師技術(shù)水平的要求,使用和操作起來更加簡單、方便,縮短了整個(gè)工程的實(shí)施周期,降低了生產(chǎn)成本。3 PLC_Config組態(tài)軟件可視化功能塊組態(tài)以及編譯3.1 PLC_Config可視化功能塊編輯程序的設(shè)計(jì)3.1.1文檔/視圖(Document/View)結(jié)構(gòu)PLC_Config是基于MFC框架設(shè)計(jì)開發(fā)的,MFC應(yīng)用程序的核心就是文檔視圖結(jié)構(gòu),利用文檔視圖結(jié)構(gòu),可以把數(shù)據(jù)與數(shù)據(jù)的用戶視圖分開,一個(gè)明顯的好處是同一組數(shù)據(jù)可有有多個(gè)視圖。在PLC_Config中,程序的核心功能之一就是編輯功能塊程序,功能塊程序是一種圖形化的語言,用戶的編程過程是對(duì)圖形的操作,所以功能塊的繪制和操作都是由視圖部分來完成,在操作的同時(shí),要保留操作的記錄,而且在保存功能塊程序時(shí)要將當(dāng)時(shí)的文件永久的保存在磁盤中,這些工作有文檔類來完成。文檔的保存格式不是唯一的,它可以是應(yīng)用程序序列化形成的特定格式文件,也可以是XML描述文件等。910在設(shè)計(jì)功能塊物件時(shí),要從三方面來考慮,一個(gè)是視圖角度,包括了物件的繪制,對(duì)物件操作時(shí)的重繪,對(duì)物件監(jiān)視時(shí)物件的變化等等,另一個(gè)就是文檔角度,包括了物件內(nèi)部數(shù)據(jù)的維護(hù),物件的保存,物件數(shù)據(jù)的讀取等,還有一點(diǎn)就是文檔與視圖的聯(lián)系,比如視圖的變化要保存到文檔,視圖的初始要讀取文檔等。3.1.2 可視化功能塊編輯程序設(shè)計(jì)類關(guān)系圖通過對(duì)功能塊編輯程序的需求分析進(jìn)行分析,可以將一個(gè)功能塊的程序物件分解成5大元素,分別是:功能塊物件,功能塊參數(shù)物件,功能塊網(wǎng)絡(luò)物件,鏈接線物件,和功能塊程序文件物件,這5個(gè)物件之間的主要關(guān)系是包含關(guān)系,這是由功能塊程序內(nèi)在結(jié)構(gòu)定義的,用面向?qū)ο蟮慕嵌仍O(shè)計(jì),在設(shè)計(jì)時(shí)可以對(duì)每種物件定義一個(gè)類,包含物件的信息和操作方法,根據(jù)功能塊程序物件的結(jié)構(gòu)分析,得到了如下的類關(guān)系圖3-1。功能塊文檔物件功能塊網(wǎng)絡(luò)物件集合功能塊物件集合功能塊參數(shù)集合鏈接線物件集合圖3-1 功能塊編輯程序類關(guān)系圖 3.1.3功能塊的圖形表示圖3-2是一個(gè)功能塊的圖形表示。一個(gè)典型的功能塊從圖形結(jié)構(gòu)上可以分為兩個(gè)部分:功能塊參數(shù)部、功能塊體部。功能塊體部包含功能塊名稱,功能塊參數(shù)部包含功能塊的輸入和輸出參數(shù)單元。功能塊輸入?yún)?shù)單元功能塊輸出參數(shù)單元功能塊名稱功能塊體部圖3-2功能塊的圖形3.1.4功能塊的邏輯組成 每個(gè)功能塊從邏輯角度可以看做一個(gè)函數(shù),包括了輸入?yún)?shù)和輸出結(jié)果和函數(shù)功能的實(shí)現(xiàn),所以我們可以將一個(gè)功能塊從邏輯上分為三個(gè)部分,輸入?yún)?shù),輸出參數(shù)和函數(shù)執(zhí)行部分,由于功能塊的邏輯執(zhí)行是在PLC中實(shí)現(xiàn)的,所以在PLC_Config中不用考慮功能塊是怎樣實(shí)現(xiàn)邏輯的,而輸入?yún)?shù)和輸出參數(shù)作為邏輯執(zhí)行函數(shù)的接口需要在PLC_Config中組織起來,產(chǎn)生PLC可以識(shí)別的代碼(一組數(shù)據(jù)結(jié)構(gòu)),通過通訊模塊下載到PLC設(shè)備的Flash Rom中,PLC通過嵌入式的軟件來分析這組數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)邏輯上的運(yùn)算。3.1.5在DCCE系列PLC中的功能塊程序的表現(xiàn)形式如上所述,功能塊程序通過PLC_Confug編譯后,通過通訊接口下載到下位機(jī)中,由下位機(jī)的嵌入式程序來執(zhí)行功能塊的功能,在下位機(jī)中的功能塊也需要一定的數(shù)據(jù)