国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

PLC梯形圖編程軟件實(shí)現(xiàn)

2018-01-15 07:52李應(yīng)春王庭有楊安園
價(jià)值工程 2018年1期
關(guān)鍵詞:梯形圖

李應(yīng)春+王庭有+楊安園

摘要: 本文使用跨平臺(tái)的C++應(yīng)用程序開(kāi)發(fā)框架(Qt)及其圖形視圖框架(The Graphics View Architecture)以及信號(hào)與槽機(jī)制,結(jié)合C++標(biāo)準(zhǔn)模板庫(kù)中的鏈表結(jié)構(gòu)、運(yùn)行時(shí)類型識(shí)別等技術(shù),實(shí)現(xiàn)了PLC梯形圖編程軟件的總體框架設(shè)計(jì);梯形圖語(yǔ)言的主程序、子程序、中斷程序的存儲(chǔ)及圖元的插入編輯操作等功能。

Abstract: This paper uses the cross-platform C++ application development framework (Qt) and its Graphics View Architecture, as well as the signal and slot mechanism, combined with the C++ standard template library linked list structure, run-time type recognition technology to achieve the PLC Ladder diagram programming software overall framework design; ladder language main program, subroutine, interrupt program storage and primitive insert editing operation and other functions.

關(guān)鍵詞: 梯形圖;Qt;存儲(chǔ)結(jié)構(gòu)

Key words: ladder diagram;Qt;storage structure

中圖分類號(hào):TP313 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2018)01-0185-03

0 引言

PLC作為一種工控裝備,占據(jù)了自動(dòng)化控制領(lǐng)域的半壁江山。在德國(guó)提出“工業(yè)4.0”,我國(guó)部署“中國(guó)制造2025”的大環(huán)境下,自動(dòng)化形式越來(lái)越嚴(yán)峻,在這樣的形式下,PLC的技術(shù)改進(jìn)也就成為了一種必然的趨勢(shì)。另一方面,雖然我國(guó)是PLC的使用大國(guó),但是就最近幾年的PLC市場(chǎng)份額來(lái)看,我國(guó)使用的PLC大多來(lái)自歐美和日本。國(guó)內(nèi)的PLC主要應(yīng)用在小型自動(dòng)化控制系統(tǒng)中。所以綜合來(lái)看,開(kāi)發(fā)具有自主知識(shí)產(chǎn)權(quán)的PLC系統(tǒng)是我國(guó)自動(dòng)化產(chǎn)業(yè)發(fā)展的必然需要。

梯形圖被稱為PLC的第一編程語(yǔ)言,憑借其直觀易學(xué)的優(yōu)點(diǎn),成為最廣泛的PLC編程語(yǔ)言。梯形圖采用圖形語(yǔ)言,沿用了繼電器的觸點(diǎn)、線圈、串并聯(lián)等術(shù)語(yǔ)與圖形符號(hào),在計(jì)算機(jī)和控制技術(shù)上稱為“面向生產(chǎn)過(guò)程的語(yǔ)言”[1]。

Qt使用“一次編寫(xiě),隨處編譯”的方式為開(kāi)發(fā)跨平臺(tái)的圖形用戶界面應(yīng)用程序提供了一個(gè)完整的C++應(yīng)用程序開(kāi)發(fā)框架。Qt允許程序開(kāi)發(fā)人員使用應(yīng)用程序的單一源碼來(lái)構(gòu)建可以運(yùn)行在不同平臺(tái)下的應(yīng)用程序,這些平臺(tái)包括從Windows98到Vista、Mac OS X、Linux以及其他很多基于X11的UNIX[2]。

由于當(dāng)下工業(yè)形式的發(fā)展對(duì)工業(yè)生產(chǎn)的速度和安全提出了全新的要求,Windows系統(tǒng)在工業(yè)現(xiàn)場(chǎng)中的非實(shí)時(shí)性、不安全性得到了進(jìn)一步暴露。所以開(kāi)發(fā)跨平臺(tái)的、高效的PLC系統(tǒng)是今后PLC發(fā)展的一大趨勢(shì)。故本文基于Qt平臺(tái)實(shí)現(xiàn)的PLC梯形圖編程軟件將對(duì)開(kāi)發(fā)跨平臺(tái)的PLC系統(tǒng)有著一定的貢獻(xiàn)。因?yàn)樗Y(jié)合了C++語(yǔ)言的高效性以及Qt框架的跨平臺(tái)特性充分體現(xiàn)了以上兩個(gè)PLC發(fā)展的方向。

1 梯形圖編程軟件的總體框架設(shè)計(jì)及實(shí)現(xiàn)

同任何的軟件框架相同,PLC梯形圖編程軟件的基本框架也包含了基于Qt類——QMainWindow的應(yīng)用程序主窗口。其中包含基于QMenu的菜單欄、基于QToolBar的工具欄、基于QTabWidget的中央窗口部件、基于QStatusBar的狀態(tài)欄以及基于QDockWidget的??看翱冢ㄜ浖饕獦?gòu)架如圖1所示)。中央窗口作為應(yīng)用程序的主要部分,用QTabWidget來(lái)實(shí)現(xiàn)梯形圖編程時(shí)候的主、子、中斷程序之間的相互切換。當(dāng)然,其中QTabWidget中包含的部件是基于Qt圖形視圖框架的梯形圖編輯部分。

從圖1中可以看出,中央窗口QTabWidget下面將包含三層結(jié)構(gòu):QGraphicsView、QGraphicsSecne、QGraphicsItem. 其實(shí)這就是整個(gè)圖形視圖框架的三層結(jié)構(gòu):視圖、場(chǎng)景、項(xiàng)目。其中,場(chǎng)景類用于提供一個(gè)用于管理位于其中的眾多圖元的容器,視圖類用于顯示場(chǎng)景中的圖元,一個(gè)場(chǎng)景可以供多個(gè)視圖來(lái)表現(xiàn)[3],場(chǎng)景的大小理論上來(lái)說(shuō)是無(wú)限大的。圖形視圖框架的三元素關(guān)系如圖2所示。由于圖形視圖框架支持時(shí)間傳播體系結(jié)構(gòu),使得圖元能夠處理鼠標(biāo)和鍵盤事件,另一方面來(lái)說(shuō),圖形視圖框架通過(guò)二叉空間分割樹(shù)(Binary Space Partitioning,BSP)來(lái)提供圖元的快速查找。在這樣的條件下,該框架能夠處理百萬(wàn)級(jí)圖元的大場(chǎng)景。從而可以輕松的完成梯形圖的編輯。

2 梯形圖的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

在國(guó)際電工委推出了IEC61131-3標(biāo)準(zhǔn)后,基本上所有的PLC廠商都在逐漸的向這個(gè)標(biāo)準(zhǔn)靠攏??紤]到PLC梯形圖編程語(yǔ)言的讀寫(xiě)方便性,該標(biāo)準(zhǔn)將各種程序進(jìn)行必要的劃分——使用多種塊來(lái)組成整個(gè)控制程序。所以PLC編程軟件必須能對(duì)程序進(jìn)行劃分處理,本文主要將控制程序劃分成主程序、子程序、終端程序三個(gè)部分。其實(shí)所有的劃分都是在另外一個(gè)存儲(chǔ)空間中存儲(chǔ)不同的梯形圖程序,他們的不同點(diǎn)存在于PLC梯形圖編程語(yǔ)言到可執(zhí)行二進(jìn)制代碼的編譯過(guò)程。由于鏈表在任何位置插入和刪除的速度都比較快,所以本文用QList < QList*>鏈表的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)主程序、子程序、中斷程序中的各個(gè)程序段。從數(shù)據(jù)結(jié)構(gòu)中可以看出,存儲(chǔ)的內(nèi)部結(jié)構(gòu)都是以指針的形式來(lái)進(jìn)行存儲(chǔ),這樣就可以通過(guò)點(diǎn)擊菜單動(dòng)態(tài)的添加子程序、主程序、中斷程序以及對(duì)應(yīng)各個(gè)程序塊的不同程序段。

從圖1的主框架結(jié)構(gòu)中可以看出,中央窗口部件QTabWidget主要以選項(xiàng)卡的方式來(lái)呈現(xiàn)出各個(gè)程序塊。也就是說(shuō),必須在每一個(gè)選項(xiàng)卡中添加一個(gè)圖形視圖框架來(lái)顯示場(chǎng)景。但是這樣做將會(huì)使程序的內(nèi)存開(kāi)支大大增加,故本文結(jié)合場(chǎng)景的無(wú)限大特點(diǎn),將場(chǎng)景進(jìn)行認(rèn)為的劃分。其劃分結(jié)果如圖3所示。通過(guò)以上的場(chǎng)景劃分,可以在同一個(gè)場(chǎng)景中完成所有程序快的顯示,大大節(jié)省了程序的內(nèi)存開(kāi)支。

3 梯形圖編輯實(shí)現(xiàn)

在梯形圖編程語(yǔ)言中,為了讓程序的可讀性增強(qiáng)。一般將梯形圖程序劃分成多個(gè)程序段組成。在本文的設(shè)計(jì)中,一個(gè)程序段由以下4部分組成:程序段序號(hào)區(qū)、程序注釋、程序段、左母線、分割線。在Qt的圖形視圖框架下,重寫(xiě)QGraphicsObject來(lái)實(shí)現(xiàn)程序段。同時(shí)采用C++的多態(tài)特性結(jié)合QPainter來(lái)重寫(xiě)梯形圖語(yǔ)言的常開(kāi)觸點(diǎn)、觸閉觸點(diǎn)、定時(shí)器等圖元.其繼承關(guān)系如圖4所示。

從圖中可以看出,程序段中的所有元素都繼承自QGraphicsItem。結(jié)合C++的RTTI(運(yùn)行時(shí)類型識(shí)別),就可以把所有的程序段存入以QGraphicsItem為元素的鏈表結(jié)構(gòu)中(即QList)。當(dāng)用戶在動(dòng)態(tài)的輸入程序段的注釋或改變程序段中的元素使得程序段的總高度發(fā)生變化時(shí),必須改變?cè)摮绦蚨魏竺娴某绦蚨蔚奈恢谩榱私鉀Q這一個(gè)問(wèn)題,采用Qt的信號(hào)與槽機(jī)制。當(dāng)程序段的高度發(fā)生改變時(shí)候,發(fā)送相應(yīng)的高度的改變信號(hào)。同時(shí)在QMainWindow中重寫(xiě)位置跟新函數(shù)就能夠完美的解決這個(gè)問(wèn)題。其中值得注意的是,程序段的注釋高度該表能夠激發(fā)自身的高度變化函數(shù)。這并不會(huì)使得程序段的高度變化信號(hào)發(fā)射。所以就必須在次應(yīng)用信號(hào)與槽機(jī)制的另一個(gè)特性:信號(hào)的連鎖發(fā)射。通過(guò)connect函數(shù),使得在一個(gè)信號(hào)發(fā)射的同時(shí)發(fā)射另外一個(gè)信號(hào)。到此為止,一個(gè)基本的PLC編程軟件基本開(kāi)發(fā)完畢(如圖5所示),其基本功能已經(jīng)實(shí)現(xiàn),當(dāng)然還有許多需要改進(jìn)的地方。

4 總結(jié)

本文以C++語(yǔ)言為基礎(chǔ),結(jié)合Qt跨平臺(tái)應(yīng)用程序框架,主要應(yīng)用Qt圖形視圖框架以及C++語(yǔ)言的運(yùn)行時(shí)動(dòng)態(tài)類型識(shí)別等技術(shù),實(shí)現(xiàn)了PLC梯形圖編程軟件的框架設(shè)計(jì)以及程序編輯的基本功能。經(jīng)過(guò)測(cè)試,此軟件可以運(yùn)行在Linux和Windows平臺(tái)上,對(duì)于今后開(kāi)發(fā)跨平臺(tái)的PLC應(yīng)用程序有一點(diǎn)的貢獻(xiàn)作用。

參考文獻(xiàn):

[1]蒲志新,熊永超,熊曉紅.PLC梯形圖語(yǔ)言編輯功能的軟件實(shí)現(xiàn)[J].機(jī)械,2003,30.

[2]Blanchette H,Summerfield M.C++ Programming with Qt4[M].New York:Prentice Hall,2008:6.

[3]陸文周.Qt5開(kāi)發(fā)及實(shí)例[M].北京:電子工業(yè)出版社,2015,205.

[4]姜琳.基于單片機(jī)的 PLC 設(shè)計(jì)與實(shí)現(xiàn)[D].東南大學(xué),2008.

[5]李洪亮.基于IEC 61131-3 標(biāo)準(zhǔn)的 PLC 仿真系統(tǒng)的研究與設(shè)計(jì)[D].山東大學(xué),2010.

[6]朱兆斌.嵌入式數(shù)控系統(tǒng)軟 PLC 模塊的研究與實(shí)現(xiàn)[D].南京航空航天大學(xué),2009.

[7]吳盼盼.梯形圖與腳本語(yǔ)言互換方法的研究[D].杭州電子科技大學(xué),2013.

[8]萬(wàn)偉.PLC編程語(yǔ)言開(kāi)發(fā)平臺(tái)的設(shè)計(jì)[D].武漢理工大學(xué),2007.

猜你喜歡
梯形圖
PLC梯形圖編程系統(tǒng)應(yīng)用分析
基于VC的梯形圖編程軟件開(kāi)發(fā)技術(shù)
繼電器電路轉(zhuǎn)為梯形圖教學(xué)經(jīng)驗(yàn)淺談
PLC編譯功能的實(shí)現(xiàn)
S7—200PLC基本編程教學(xué)案例
數(shù)控機(jī)床梯形圖故障設(shè)置方法研究
PLC編程中SFC圖轉(zhuǎn)換到梯形圖的方法探討
一種可編程邏輯控制程序的競(jìng)態(tài)檢測(cè)方法
PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
軟PLC梯形圖編輯與指令表生成方法研究