999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于塊生長觀點的PLC指令表向梯形圖轉化算法

2008-12-31 00:00:00滕建忠
電腦知識與技術 2008年33期

摘要:為了實現PLC指令表語句向梯形圖自動轉換,該文首先提出了指令表語句向梯形圖轉化需要的限制條件,同時,根據指令表語句本身的意義,以及梯形圖繪圖的結構,提出了基于塊生長的觀點的算法,實現這一自動轉換。本算法已經成功應用于上海研翔自動化有限公司的PLC編程軟件當中。

關鍵詞:可編程邏輯控制器;梯形圖;指令表;塊生長

中圖分類號:TP319文獻標志碼:A文章編號:1009-3044(2008)33-1469-03

Transformation Algorithm from PLC Instruction List to Ladder Diagram Based on Block-growth

SUN Rui1, ZHU Jing2, TENG Jian-zhong1

(1.Dept. of CS, Tongji University, Shanghai 201804, China;2.Dept. of Control Science Engineering, Tongji University, Shanghai 201804, China)

Abstract: A transformation algorithm from PLC instruction list to ladder diagram based on blocks was proposed. The conditions with which the instruction list could be transformed to Ladder Diagram were listed firstly. And the algorithm was saw to the mean of instruction and the structure of the ladder diagram. The algorithm was succeed used in the software of Shanghai Yanxiang Ltd.

Key words: PLC; Ladder Diagram; Instruction List; Block-Growth

1 引言

指令表語句和梯形圖語句是可編程邏輯控制器(PLC)的最基本編程語言,一般的PLC編輯器都支持這兩種語言。指令表語句是一系列自定義的符號IEC61131-3標準的指令集合,它是一種類似匯編語言的的助記式語句,一般包括操作碼和操作數兩個部分。指令表語句易于被PLC識別和執行,但是不夠直觀。梯形圖語句是對應于電氣圖,比較直觀,但是不能直接被PLC識別和執行。

經過多年的發展,國際國內都有了相當成熟的PLC編程軟件,這些軟件都提供了指令表向梯形圖轉化的功能,但是他們中許多都存在著,將原本不能轉化成梯形圖的指令表語句錯誤的轉化成梯形圖的bug,例如西門子的STEP7 MicroWIN32,艾默生的ControlStar等。文獻[1],[2],[3]等都提出了一些轉化算法,但是這些算法不夠完備,亦即,對于所有不能轉化的指令表不能進行正確的報錯。本文提出塊生長的觀點,從指令表本身的意義和梯形圖繪畫結構出發,保證了能夠將所有能轉化的指令表正確的轉化到梯形圖,將不能轉化的指令表準確的找出。下面將以西門子S7-200PLC的基本指令為例子進行說明。

2 基于塊生長觀點的PLC指令表向梯形圖轉化算法原理描述

指令表語句主要是對堆棧進行操作,而梯形圖是將每個元器件按照從左到右,從上往下的順序放置,然后通過連線連接在一起。基于塊生長觀點的PLC指令表向梯形圖轉化算法的思想就是將指令表語句的每一層堆棧映射成一個塊,將所有對堆棧操作的指令表語句操作映射成對塊的編輯,使得塊不斷生長,最終變成所需的梯形圖。

指令表語句對堆棧操作主要有三類,包括加深堆棧深度,保持堆棧深度不變,減少堆棧深度。加深堆棧的指令相當于開辟了一個新塊,保持堆棧不變的指令相當于對當前塊進行橫向擴展,減少堆棧的指令相當于將位于棧頂的兩個塊進行合并成一個新塊,合并的操作包括“與”合并和“或”合并等,該操作將在第3部中進行詳細介紹。

3 指令表向梯形圖轉化的限制條件

由于不是所有的指令表語句的組合都可以轉化成梯形圖,因此在轉化之前先要找到指令表語句可以轉化。

成梯形圖的條件。指令表語句一般由操作碼和操作數組成,因此指令表語句首先要保證語句的語法正確,這類條件下面將不進行討論,下面主要討論由指令表語句和梯形圖繪圖結構引起的限制條件。

3.1 指令表語句的本身意義產生的限制條件

由于指令表語句一般都是對堆棧進行操作,操作的結果是:1) 保持堆棧深度不變,如“=,EU,ED”等指令(以A類表示)。2) 堆棧深度減1,如“LPP,OLD,ALD”等指令(以B類表示)。3) 堆棧深度加1,如“LPS,LD”等指令(以C類表示)。針對這3類的語句,要進行堆棧深度檢測,以判斷是否可以轉化成梯形圖。對于A類的語句,由于保持堆棧深度,因此,一般是對棧頂元素進行操作,所以A類語句出現時,堆棧深度要大于等于1。B類語句使得堆棧深度減1,所以B類語句出現時堆棧的深度要大于1。C類語句使得堆棧深度加1,因此C類語句出現時,堆棧深度要小于最大允許堆棧深度。

另外,對于賦值類型語句,如“=,=I”等賦值類型語句,當執行到這類語句的時候,堆棧的深度必須為1,表示所有的梯形圖形最后進行輸出,否則會有部分梯形圖的元器件沒有輸出,造成翻譯錯誤。

最后,由于LPP和LPS這兩個語句需要成對出現,如果沒有成對出現,也無法翻譯到梯形圖。

3.2 梯形圖的繪圖的結構產生的限制條件

由于梯形圖采用的是從左到右,從上到下的二維平面的繪圖方式,因此,梯形圖繪圖不能跳線,這樣對于一些結構的指令表語句就會無法轉化到梯形圖。

首先,對于包含輸出語句的塊不能進行“或”的合并塊操作。例如:

LDI0.0

= Q0.0

LDI0.1

OLD

= Q0.1

這么一段指令表語句,由于(LD I0.0;= Q0.0)產生了一個含有輸出語句的塊,(LD I0.1)產生了一個新塊,如果把這個兩個塊“或”操作合在一起后輸出,就會產生錯誤,因為平面圖形無法跳線。如圖1。

由于強行的“或”操作合并,畫出的圖形與原來的意義就不一樣的,Q0.0已經等于的是I0.0和I0.1“或”操作后的值而不是等于I0.0的值。

其次,包含ED,EU這種對棧頂元素變化測試的類型的語句的塊,如果進行“或”操作后就不能進行出現“與”操作。例如:

LDI0.0

LDI0.1

EU

LDI0.2

OLD

ALD

= Q0.0

語句表中EU僅僅是檢測I0.1的上升沿,而在圖2中EU檢測的是I0.0和I0.1與操作以后的上升沿,兩者的意義已經不一樣了。

圖1錯誤的“或”操作

圖2錯誤的“與”操作

圖3西門子STEP7 MicroWIN32翻譯出的錯誤梯形圖

圖4鎖定塊

圖5 塊“或”操作示意圖

圖6MyPLC軟件進行指令表到梯形圖轉化結果

再次,對于被鎖定的塊,(包含LPP指令的塊稱為鎖定塊),塊的下面不能放置任何元器件,否則就好造成翻譯錯誤。例如以下的指令表語句:

LDI0.0

LPS

O I0.0

A I0.0

O I0.0

A I0.0

= Q0.0

LPP

= Q0.0

其本身是不可轉化成梯形圖,可是西門子的STEP 7 MicroWIN32并無法判斷,因此翻譯出錯,如圖3,可以看出已經出現了短路了。

這個是因為當出現LPS時候,虛線框內的塊被鎖定(圖4),它的下面不能在放置元器件,也就是這個塊不能被縱向擴展,而這一段的指令表的語句卻繼續放置元器件,縱向擴展鎖定塊,因此造成翻譯錯誤。

4 指令表向梯形轉化算法實現描述

下面將描述指令表語句向梯形圖轉化的算法,這里的指令表語句都是滿足第2部分描述的條件可以轉化的指令表語句。

4.1 對指令表語句進行標準化以及進行標記

首先,要將待翻譯指令表語句標準化。因為S7-200PLC提供了A,O,LRD等高級語句,這類語句可以轉化成更基本的語句,例如A等效與 LD + ALD語句,O等效LD+OLD,LRD等效與LPP+LPS等。

其次,為了下一步的翻譯需要,需要對LD型的語句進行標記,標記LD語句與前面的關系是“與”,“或”還是連接到母線。具體算法描述如下:

1) 遍歷到一條LD語句,將LD語句壓棧,標記為M

2) 遍歷到OLD語句,將棧頂的LD語句標記修改為O,同時這條LD語句出棧。

3) 遍歷到ALD語句,將棧頂的LD語句標記修改為A,同時這條LD語句出棧。

重復這個過程直到所有的指令表語句都結束。

4.2 指令表向梯形圖轉化的過程

描述塊的數據結構為

Struct Block

{

CPointleft;

CPointright;

};Left,Right分別表示一個塊的左上角的坐標以及右下角的坐標。

翻譯過程需要使用到一個堆棧,命名為Shape,用于存放生成的塊。堆棧的元素為Block類型。假設位于棧頂的元素分別是Block1,位于堆棧棧頂下一個元素是Block2。

設a1 = Block1.left.x, b1 = Block1.left.y,

c1 = Block1.right.x, d1 = Block1.right.y,

a2 = Block2.left.x, b2 = Block2.left.y,

c2 = Block2.right.x, d2 = Block2.right.y

C = max(c1,c2),D = max(d1,d2)。

在進行指令表語句向梯形圖轉化中每遍歷進一條指令表語句:

1) LD型語句,即使得堆棧深度加1的語句

Switch(LD的標記){

CaseM:在(0,d1+1)處放置元件,同時壓入Block(0, d1+1, 0, d1+1)這個塊到Shape堆棧。

CaseA:在(c1+1,b1)處放置元件,同時壓入Block(c1+1,b1,c1+1,b1)這個塊到Shape堆棧。

CaseO:在(a1,d1+1)處放置元件,同時壓入Block(a1,d1+1,a1,d1+1)這個塊到Shape堆棧。}

2) 保持堆棧深度不變的語句.

這類語句一般只是使用棧頂元素。因此,對于這類語句的操作為:在(c1+1,b1)處放置元件,同時修改Shape棧頂元素為Block(a1,b1,c1+1,d1)。

3) OLD語句,即通過“或”操作使得堆棧深度減1的語句

OLD語句在指令表語句中表示通過“或”操作將堆棧深度減少1,因此在梯形圖繪制中,要通過相應的塊“或”操作來達到與之對應。

塊或操作包括三部分:1)補橫線元件。將兩個塊補到寬度一樣。2)補豎線元件。在(a2,b2),(a1,b1)兩點之間補左豎線,在(C,b2),(C,b1)之間補右豎線。3)Shape堆棧棧頂出棧,同時修改當前的棧頂元素為Block(a2,b2,C,d1)。從而完成了塊的“或”操作,塊“或”操作示意圖如圖5。

4) ALD語句,即通過“與”操作使得堆棧深度減1的語句

ALD語句在指令表語句表表示通過“與”操作將堆棧深度減少1,因此在梯形圖繪制中,要通過相應的塊“與”操作來達到與之對應。

由于在放置元器件按照從左到右,從上往下的順序,如果是與的關系的塊在梯形圖的繪制中會自然放置好,因此塊的與操作只需要將Shape堆棧棧頂出棧,同時修改棧頂元素為Block(a2,b2,c1,D)即可。

對于每條語句都進行上述的翻譯直到所有的指令表語句遍歷完畢,這樣就繪制出相應的梯形圖了。

5 實驗結果

本算法在上海研翔自動化公司研發的MyPLC軟件得到實現,測試結果表明,對于可以轉化的指令表語句,本算法可以完全實現到梯形圖的轉化,對于不能轉化的指令表語句,本算法可以正確的檢測出來。

6 結束語

本文提出了基于塊生長觀點的指令表向梯形圖轉化的算法,并給出了指令表向梯形圖轉化的所需的限制條件。該算法已經應用到實際系統中,并取得一定的成果,滿足設計要求。不過對指令表語句的指令支持還不全,今后將

繼續增加。

參考文獻:

[1] 崔小樂,周卓岑.可編程控制器的梯形圖語言與語句表語言的互換算法[J].微電子學與計算機,2000,17(1):26-30.

[2] 葛芬,吳寧.基于AOV圖及二叉樹的梯形圖與指令表互換算法[J].南京航空航天大學學報,2006,38(6):31-32.

[3] 呂俊白.PLC語句表向梯形圖自動轉換的實現方法[J].華僑大學學報:自然科學版,2005,26(3):94-97.

[4] 西門子公司.西門子PLC編程手冊[M].2004.

[5] Karl-Heinz J,Tiegelkamp M.IEC61131-3;programming industrial automation system[M].Berlin,Germay; SpringerVerlag Company,2001.

主站蜘蛛池模板: 九九热在线视频| 亚洲AV成人一区二区三区AV| 久久亚洲高清国产| 国产成人精品男人的天堂| 成人免费一区二区三区| 国产成人91精品免费网址在线| 国产免费精彩视频| 草逼视频国产| 五月激情综合网| 伊人精品视频免费在线| 精品久久香蕉国产线看观看gif | 国产一级无码不卡视频| 久久综合九九亚洲一区| 99人体免费视频| 国产欧美在线观看一区| 日韩精品高清自在线| 一本色道久久88综合日韩精品| 香蕉精品在线| 69国产精品视频免费| 成人欧美日韩| 国产一级毛片网站| 试看120秒男女啪啪免费| 亚洲国产成人久久精品软件| 欧美在线伊人| 久久久久人妻一区精品色奶水 | 免费a在线观看播放| 久久婷婷六月| 中文字幕一区二区视频| 亚洲系列中文字幕一区二区| 91精品综合| 99久久性生片| 熟妇人妻无乱码中文字幕真矢织江| 国内a级毛片| 国产精品综合久久久| 日韩成人在线网站| 国产精品主播| 九色综合视频网| 欧美成人日韩| 精品国产中文一级毛片在线看 | 亚洲精品国产精品乱码不卞| 99国产精品一区二区| 热思思久久免费视频| 国产男女免费视频| 一区二区三区精品视频在线观看| 高潮爽到爆的喷水女主播视频| 澳门av无码| 国产成人精品一区二区秒拍1o| 精品无码人妻一区二区| 久久狠狠色噜噜狠狠狠狠97视色| 精品天海翼一区二区| 国产69囗曝护士吞精在线视频| 久久无码高潮喷水| 国产精品视频系列专区| 色偷偷一区二区三区| 热re99久久精品国99热| 大陆国产精品视频| 日本伊人色综合网| 色婷婷国产精品视频| 好紧太爽了视频免费无码| 人妻无码中文字幕一区二区三区| 中文字幕永久在线看| 久久久久国产精品嫩草影院| 欧美在线视频不卡第一页| 一级毛片无毒不卡直接观看| 91亚洲视频下载| 欧美97色| 亚洲国产日韩视频观看| 午夜综合网| 看av免费毛片手机播放| 精品国产黑色丝袜高跟鞋| 国产99视频免费精品是看6| 国产精品九九视频| 无码综合天天久久综合网| 国产成人无码AV在线播放动漫| 国产麻豆精品在线观看| 国产成人亚洲综合a∨婷婷| 日本91在线| 亚洲人精品亚洲人成在线| 国产精品欧美亚洲韩国日本不卡| 国产香蕉国产精品偷在线观看| 在线欧美日韩| 国产91在线免费视频|