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

?

PLC梯形圖編程系統(tǒng)應(yīng)用分析

2017-12-14 09:08陳瑞金大連融科儲(chǔ)能裝備有限公司
大陸橋視野 2017年22期
關(guān)鍵詞:二叉樹鏈表梯形圖

陳瑞金/大連融科儲(chǔ)能裝備有限公司

PLC梯形圖編程系統(tǒng)應(yīng)用分析

陳瑞金/大連融科儲(chǔ)能裝備有限公司

體系結(jié)構(gòu)開放化是數(shù)控系統(tǒng)發(fā)展的必然趨勢(shì),軟PLC技術(shù)采用軟件實(shí)現(xiàn)傳統(tǒng)PLC的功能,是實(shí)現(xiàn)數(shù)控系統(tǒng)開放性的關(guān)鍵技術(shù)之一。軟PLC系統(tǒng)由編程開發(fā)系統(tǒng)及運(yùn)行系統(tǒng)組成。其中,編程開發(fā)系統(tǒng)是實(shí)現(xiàn)具備PLC控制功能的控制系統(tǒng)必不可少的開發(fā)工具之一。本文通過(guò)深入分析梯形圖中各單元之間關(guān)系,各功能的配置與實(shí)現(xiàn),提出了一種新的梯形圖編程系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)與實(shí)現(xiàn)方法。利用Windows平臺(tái)下的Visual C++作為開發(fā)語(yǔ)言以期能夠開發(fā)出更為簡(jiǎn)單實(shí)用的梯形圖編程系統(tǒng)。

PLC梯形圖編程系統(tǒng);應(yīng)用分析

一、導(dǎo)言

軟PLC系統(tǒng)由編程開發(fā)系統(tǒng)及運(yùn)行系統(tǒng)組成。其中,編程開發(fā)系統(tǒng)是實(shí)現(xiàn)具備PLC控制功能的控制系統(tǒng)必不可少的開發(fā)工具之一。通過(guò)編寫PLC程序并轉(zhuǎn)換為可執(zhí)行目標(biāo)代碼,下載到軟PLC運(yùn)行系統(tǒng)中執(zhí)行,才能夠?qū)崿F(xiàn)系統(tǒng)的控制功能。然而,目前國(guó)內(nèi)的PLC編程開發(fā)系統(tǒng)種類繁多、編程語(yǔ)言差異大,與IEC61131-3 PLC編程語(yǔ)言標(biāo)準(zhǔn)相差甚遠(yuǎn)、編譯效率低、缺乏程序調(diào)試功能等問(wèn)題突出,導(dǎo)致控制程序開發(fā)過(guò)程繁瑣、調(diào)試?yán)щy、開發(fā)周期長(zhǎng)、系統(tǒng)穩(wěn)定性差,成為快速開發(fā)穩(wěn)定可靠的控制程序的主要障礙。本文提出一種基于雙向循環(huán)鏈表和十字鏈表的梯形圖編輯和指令表生成算法,實(shí)現(xiàn)了一個(gè)軟PLC開發(fā)系統(tǒng),并分析了軟PLC運(yùn)行系統(tǒng)實(shí)現(xiàn)思想。

二、梯形圖與指令表簡(jiǎn)介

梯形圖(ladder diagram,LD)是一種圖形化編程語(yǔ)言,引入了電氣系統(tǒng)中電源軌線、繼電器、觸點(diǎn)、線圈等概念,以“能量流動(dòng)”描述數(shù)據(jù)傳遞過(guò)程,直觀性強(qiáng),易于學(xué)習(xí)。一個(gè)電動(dòng)機(jī)啟保停控制邏輯梯形圖示例如圖1所示。

按動(dòng)START觸點(diǎn)對(duì)應(yīng)的按鈕,線圈MO-TOR對(duì)應(yīng)的電動(dòng)機(jī)將持續(xù)運(yùn)轉(zhuǎn),直到按動(dòng)STOP觸點(diǎn)對(duì)應(yīng)的按鈕,電動(dòng)機(jī)停止運(yùn)轉(zhuǎn)。由圖1梯形圖生成的指令表如圖2所示。

圖1 梯形圖

圖2 指令表

指令表(IL,instruction list)以一系列指令作為編程語(yǔ)言,由操作符、修正符和操作數(shù)等組成。

LD指令讀取相應(yīng)觸點(diǎn)狀態(tài),st指令將運(yùn)算后的結(jié)果輸出到線圈Motor對(duì)應(yīng)的輸出點(diǎn),從而控制電動(dòng)機(jī)啟停。

三、雙向循環(huán)鏈表與十字鏈表

雙向循環(huán)鏈表每個(gè)節(jié)點(diǎn)中有2個(gè)指針,*next指向后繼節(jié)點(diǎn),*previous指向前驅(qū)節(jié)點(diǎn),因此在查找前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn)時(shí)非常高效,如圖3所示。

圖3 雙向循環(huán)鏈表

十字鏈表是表示正交關(guān)系的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),可用于存儲(chǔ)有向圖和稀疏矩陣等,如圖4所示。

圖4 十字鏈表

四、梯形圖的數(shù)據(jù)結(jié)構(gòu)

(一)梯形圖基本元素定義

梯形圖的基本元素包括電源軌線、連接線、觸點(diǎn)、線圈等,具體分類見表1所列。

表1 梯形圖基本元素及圖例

為便于擴(kuò)展梯形圖基本元素,提高程序模塊化程度,降低不同基本元素處理復(fù)雜度,可將所有梯形圖基本元素的共同特征抽象為一個(gè)公共基類?;愔卸x了基本元素的類型、輸入輸出參數(shù)、對(duì)應(yīng)的變量名、在梯形圖中的坐標(biāo)等信息。同時(shí)以虛函數(shù)的方式定義了賦值函數(shù)、繪圖函數(shù)和IL指令轉(zhuǎn)換函數(shù)。每個(gè)基本元素繼承自基類,并按照各自特點(diǎn)重新實(shí)現(xiàn)虛函數(shù)。如豎直連接線元素,不需要賦值,也不用輸出IL指令,只需重寫Draw()函數(shù),在指定行列坐標(biāo)畫出該連接線即可。

(二)梯形圖生成指令表實(shí)例

梯形圖雙向循環(huán)十字鏈表各節(jié)點(diǎn)命名如下:v[i]表示電源軌線和連接線,x[i],YO表示觸點(diǎn)和線圈,如圖5所示。

圖5 梯形圖生成指令表過(guò)程

借助棧記錄遍歷過(guò)的電源軌線和連接線節(jié)點(diǎn),編寫梯形圖outPutIL()遍歷算法,按圖5所示中箭頭及標(biāo)號(hào)順序表示的路徑依次訪問(wèn)節(jié)點(diǎn)。

分別調(diào)用各基本元素節(jié)點(diǎn)的toIL()方法輸出該元素代表的具體IL指令,最終組成完整的指令表語(yǔ)言程序。

五、相關(guān)算法對(duì)比

梯形圖的編輯和指令表轉(zhuǎn)換,已有算法主要采用鏈表、二叉樹、AOV網(wǎng)相結(jié)合的方式實(shí)現(xiàn)。

(一)鏈表與二叉樹結(jié)合算法

以AOV網(wǎng)的節(jié)點(diǎn)表示梯形圖元素,AOV網(wǎng)的弧表示梯形圖元素間的連接關(guān)系,對(duì)梯形圖進(jìn)行存儲(chǔ);再將AOV網(wǎng)轉(zhuǎn)換為二叉樹,以二叉樹的非葉節(jié)點(diǎn)表示梯形圖串聯(lián)、并聯(lián)邏輯關(guān)系,對(duì)轉(zhuǎn)換后的二叉樹進(jìn)行一定的裁剪,通過(guò)中序遍歷輸出指令表語(yǔ)句。以圖1所示梯形圖為例,該算法對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)和轉(zhuǎn)換示意如圖6所示。

圖6 AOV網(wǎng)及二叉樹示例

此算法的AOV網(wǎng)將連接線元素統(tǒng)一作為虛節(jié)點(diǎn),梯形圖元素間的串聯(lián)、并聯(lián)邏輯關(guān)系隱含在節(jié)點(diǎn)的出度、入度信息中,需要對(duì)AOV網(wǎng)進(jìn)行一次遍歷,構(gòu)建出二叉樹,裁剪虛節(jié)點(diǎn),才能進(jìn)行指令表的轉(zhuǎn)換。AOV網(wǎng)發(fā)生變化后,二叉樹需要重建。

(二)雙向鏈表與AOV網(wǎng)結(jié)合算法

以行雙向鏈表作為梯形圖數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和顯示數(shù)據(jù);根據(jù)行雙向鏈表生成AOV網(wǎng),對(duì)梯形圖節(jié)點(diǎn)進(jìn)行拓?fù)渑判?,再轉(zhuǎn)換為指令表語(yǔ)句。以圖1所示梯形圖為例,該算法對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)和轉(zhuǎn)換示意如圖7所示。

圖7 行雙向鏈表及AOV網(wǎng)示例

此算法的行雙向鏈表僅保留了行內(nèi)元素之間和行與行之間的邏輯關(guān)系,卻丟失了處于不同行的元素之間的邏輯關(guān)系。因此在將梯形圖轉(zhuǎn)換為指令表前,需要對(duì)整個(gè)鏈表進(jìn)行一次掃描,在適當(dāng)位置添加虛節(jié)點(diǎn)(圖7中的vp1節(jié)點(diǎn)),構(gòu)建AOV網(wǎng),再進(jìn)行拓?fù)渑判蚝洼敵?。一旦?duì)梯形圖進(jìn)行編輯,建立AOV網(wǎng)的過(guò)程需要重新進(jìn)行。

(三)程序的傳輸

當(dāng)用戶編輯好梯形圖程序之后,將程序生成為指令表形式。然后再把指令表程序轉(zhuǎn)換為一系列的二進(jìn)制指令,可以通過(guò)串口來(lái)實(shí)現(xiàn)程序指令從編程主機(jī)向硬件平臺(tái)的傳輸。VC提供了MSComm控件,利用該控件可以很方便的實(shí)現(xiàn)應(yīng)用程序的串行通信功能。另外要利用該控件必須使它寄生于某個(gè)對(duì)話框,所以首先要生成一個(gè)應(yīng)用于串口傳輸?shù)膶?duì)話框類。如

六、結(jié)束語(yǔ)

本文提出一種基于雙向循環(huán)鏈表和十字鏈表的梯形圖數(shù)據(jù)結(jié)構(gòu),正確實(shí)現(xiàn)了梯形圖編輯和梯形圖生成指令表算法。該數(shù)據(jù)結(jié)構(gòu)能直觀地表現(xiàn)梯形圖各元素間邏輯關(guān)系,對(duì)實(shí)現(xiàn)完整的軟PLC控制系統(tǒng)具有一定意義。

[1]周峰,王新華.軟PLC編輯系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2005,41(7):111-113.

[2]杉布,王蔚庭.IEC61131-3國(guó)際標(biāo)準(zhǔn)簡(jiǎn)介[J].國(guó)內(nèi)外機(jī)電一體化技術(shù),2001(1):54-57.

猜你喜歡
二叉樹鏈表梯形圖
基于雙向二叉樹的多級(jí)菜單設(shè)計(jì)及實(shí)現(xiàn)
基于故障二叉樹的雷達(dá)發(fā)射機(jī)故障診斷*
二叉樹創(chuàng)建方法
蒙特卡羅模擬中基于雙向鏈表的元胞鏈表方法
一種基于SVM 的多類文本二叉樹分類算法?
如何用鏈表實(shí)現(xiàn)一元多項(xiàng)式相加
跟麥咭學(xué)編程
淺析PLC編程
PLC編譯功能的實(shí)現(xiàn)
S7—200PLC基本編程教學(xué)案例