智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

PLC梯形圖的一種數據結構描述方法

來源:網絡

點擊:2165

A+ A-

所屬頻道:新聞中心

關鍵詞: PLC 梯形圖 種數據結構

    1 引言

      PLC即可編程邏輯控制器,是用來取代用于電機控制的順序繼電器電路的一種器件。梯形圖語言是PLC程序設計中最常用的編程語言,它是與繼電器線路類似的一種編程語言,梯形圖用不同的圖符表示不同的指令,用串、并聯等概念組織圖符的順序位置表述控制邏輯。梯形圖形象直觀,與電氣控制原理圖相呼應。采用梯形圖語言設計順序控制邏輯,具有方便直觀的優點,將控制系統的開關趨邏輯與狀態表示成梯形圖,有利于系統維護與快速故障診斷。由于電氣設計人員對繼電器控制較為熟悉,因此梯形圖編程語言得到了廣泛的應用。但是,梯形圖不能由計算機直接執行,需要將它轉換成計算機能夠識別的命令才能夠執行。在這個轉換的過程中,本文提出了二叉樹雙向鏈表的數據結構來表爾梯形圖功能元件及其拓撲關系,使后續的指令表序列的生成得到簡化。

      2 梯形圖及數據結構

      2.1梯形圖基本介紹

      在梯形圖的圖形編輯界面中,用不同的圖符表示不同的指令。通常,梯形圖的組成中有功能單元、連接單元和空單元。功能單元,如常開指令、脈沖指令、輸出指令等;連接單元為并聯連接(下分支、右分支、左分支、左轉、右轉)、串聯連接和縱向連接。典型的梯形圖如圖1所示。采用動態增加梯形圖的行和列的方法,初始的顯示圖形的區域為2×n,程序,F始標志(start)和結束標志(End)各占1行,n是一個不超過編輯界面寬度的合適的初始值。梯形圖的編輯也有相應的規則和限制,添加這蝗限制和規則是為了簡化后續的數據結構和算法設計。

      梯形圖編輯遵循的規則如下:(1)所有的功能單元都必須畫在水平線上,不能l畫在乖A分支f:,按照由左向右、由上到下的繪圖原則;(2)由幾個并聯回路組成的串聯同路中,包含功能單元最多的并聯網路放在最左邊,在由幾個串聯回路組成的并聯l川路中。包含功能單元最多的串聯回路放在最上邊;(3)不能將功能單元畫在輸fl{指令的右邊,即輸出指令只能放在一行的最右邊。一個簡單的梯形圖如圖1所示。

      2.2二叉樹及二叉樹雙向鏈表

      樹是一種數據結構,數據元素之間有明顯的層次關系。樹(Tree)是n(n≥o)個結點的有限集。在任意一棵非宅樹巾:(1)有且僅有一個特定的稱為根(Root)的結點;(2)當,n>l時,其余結點可分為m(m>o)個互小相交的有限集T1,T2,?,L,j£巾每一個集合本身又是一棵樹,并且稱為根的子樹(Subtree)。

      二叉樹是一種樹型結構,它的特點是每個結點至多只有二棵子樹(即二叉樹中不存在度大于2的結點),并且二義樹的子樹有左右之分,其次序不能任意顛倒。

      雙向鏈表可以克服單鏈表單阿陛的缺點,在艤向鏈表的結點中有兩個指針域,其一指向汽接后繼,另一指向直接前趨。二叉樹雙向鏈表中以每棵:叉樹作為一個鏈結,將一個二義樹森林以一定的順序連接起來,其中的每個鏈表結點需要保存對應的二叉樹根結點的地址信息。

    1 引言

      PLC即可編程邏輯控制器,是用來取代用于電機控制的順序繼電器電路的一種器件。梯形圖語言是PLC程序設計中最常用的編程語言,它是與繼電器線路類似的一種編程語言,梯形圖用不同的圖符表示不同的指令,用串、并聯等概念組織圖符的順序位置表述控制邏輯。梯形圖形象直觀,與電氣控制原理圖相呼應。采用梯形圖語言設計順序控制邏輯,具有方便直觀的優點,將控制系統的開關趨邏輯與狀態表示成梯形圖,有利于系統維護與快速故障診斷。由于電氣設計人員對繼電器控制較為熟悉,因此梯形圖編程語言得到了廣泛的應用。但是,梯形圖不能由計算機直接執行,需要將它轉換成計算機能夠識別的命令才能夠執行。在這個轉換的過程中,本文提出了二叉樹雙向鏈表的數據結構來表爾梯形圖功能元件及其拓撲關系,使后續的指令表序列的生成得到簡化。

      2 梯形圖及數據結構

      2.1梯形圖基本介紹

      在梯形圖的圖形編輯界面中,用不同的圖符表示不同的指令。通常,梯形圖的組成中有功能單元、連接單元和空單元。功能單元,如常開指令、脈沖指令、輸出指令等;連接單元為并聯連接(下分支、右分支、左分支、左轉、右轉)、串聯連接和縱向連接。典型的梯形圖如圖1所示。采用動態增加梯形圖的行和列的方法,初始的顯示圖形的區域為2×n,程序,F始標志(start)和結束標志(End)各占1行,n是一個不超過編輯界面寬度的合適的初始值。梯形圖的編輯也有相應的規則和限制,添加這蝗限制和規則是為了簡化后續的數據結構和算法設計。

      梯形圖編輯遵循的規則如下:(1)所有的功能單元都必須畫在水平線上,不能l畫在乖A分支f:,按照由左向右、由上到下的繪圖原則;(2)由幾個并聯回路組成的串聯同路中,包含功能單元最多的并聯網路放在最左邊,在由幾個串聯回路組成的并聯l川路中。包含功能單元最多的串聯回路放在最上邊;(3)不能將功能單元畫在輸fl{指令的右邊,即輸出指令只能放在一行的最右邊。一個簡單的梯形圖如圖1所示。

      2.2二叉樹及二叉樹雙向鏈表

      樹是一種數據結構,數據元素之間有明顯的層次關系。樹(Tree)是n(n≥o)個結點的有限集。在任意一棵非宅樹巾:(1)有且僅有一個特定的稱為根(Root)的結點;(2)當,n>l時,其余結點可分為m(m>o)個互小相交的有限集T1,T2,?,L,j£巾每一個集合本身又是一棵樹,并且稱為根的子樹(Subtree)。

      二叉樹是一種樹型結構,它的特點是每個結點至多只有二棵子樹(即二叉樹中不存在度大于2的結點),并且二義樹的子樹有左右之分,其次序不能任意顛倒。

      雙向鏈表可以克服單鏈表單阿陛的缺點,在艤向鏈表的結點中有兩個指針域,其一指向汽接后繼,另一指向直接前趨。二叉樹雙向鏈表中以每棵:叉樹作為一個鏈結,將一個二義樹森林以一定的順序連接起來,其中的每個鏈表結點需要保存對應的二叉樹根結點的地址信息。

    3轉換算法的基本思想

      3.1梯形圖向二叉樹的轉換算法

      依據二叉樹的定義,結合PLC梯形圖的特點:以圖符表示操作指令,用圖符的位置表示串并聯的邏輯關系。由于我們采用的梯形同編輯環境是用每一個固定大小的單元格表示一個圖符,因而每一個蹦符抽象為二叉樹中的每一個結點。

      具體的轉換思想描述如下:對梯形圖巾程序進行從左向右、從上到下的掃描,掃描過程中,識別每個圖符所代表的單元類型(功能單元或者連接單兀),空單元不需處理,用每個起點表示二義樹的根結點(Root),以左子樹表示串聯連接,右子樹表示并聯連接。

      3.2二叉樹轉換成二叉樹雙向鏈表

      梯形圖中圖元的執行足有同定執行順序的。通常,一棵二叉樹能夠表示一個子過程,一個大型的控制系統南多個子過程按一定的先后順序組織麗成。在梯形圖向二叉樹轉化后得到的足一個二義樹森林,它是一個松散的結構,并不能體現一個系統完整的功能,必須采用一種數據結構將這些二叉樹按照一定的次序組織起來,這里采用二叉樹雙向鏈表。

      二叉樹雙向鏈表按照程序的執行順序將一棵棵二叉樹連接起來,每個鏈表結點代表一棵二叉樹。通常,我們的鏈表結點中存放了每個二叉樹根結點的信息,這樣通過對鏈表中的二義樹按照順序進行簡化和一次遍歷就可以實現梯形圖向指令表序列的轉化。

      3.3二叉樹的簡化處理過程

      由梯形圖得到的二叉樹雙向鏈表含有大最的連接結點的信息,在由二叉樹雙向鏈表向語句表轉化的時候,需l要過濾掉這些結點而形成只含有功能單元的.:義樹雙向鏈表,并兒能完整地描述梯形圖的邏輯功能信息。采用先序遞歸遍歷艤向鏈表中:叉樹結點的方法來完成功能一:義樹鏈表的牛成,在遍歷每一棵二義樹中圖元對象結點的時候,需要進行一系列判斷和處理,由此,我們需要設計一個簡化算法。具體的簡化算法實現見4.2節。

    4轉換算法的實現

      4.1主要的數據結構

      4.1.1基本圖元數據結構

      在整個算法的沒汁過程中,采用了面向對象的設計思想,首先將梯形圖中的每一個圖符抽象為一個圖兀對象,對于這些圖兀定義了一個基本圖元類:

      class bascElcment

      {public:

      int type;//圖符單元的類型值

      char name[20];//嘲符單,i的變譬名

      char dec[20];//圖符單元的說明

      int row;//圖符單元所在的行u|

      int f01umn;//I刳符單元所在的列號

      bascElcmcnt*lPft;///I:指針

      bascElcmcnt*r|ght;//右指針

      baseElcment’parent;//父指針

      };

      在梯形圖設計中涉及到的基本指令單元、計時指令單元、計數指令單元、讀寫指令單元、操作指令單了亡、比較指令單元、轉換指令單元等都由慕奉罔元類baseElement派生出來。

      4.1.2二叉樹的數據結構

      在梯形圖中,用每一個圖符來表示二叉樹巾的結點,以每個起始圖元對象作為單棵二叉樹的根(Root)。以左子樹表爪串聯連接,右子樹表示并聯連接。定義二叉樹鏈結類bTrecLink如下:

      Class bTrccLink

      {pubIic:

      base卜1lement root;//根節點圖符

      bTreeLink*next;//指向下一二叉樹

      bTrccLink。prior;//指向lii『一二叉樹

      public:

      Insc九l,ef“);//左子樹插入

      InsertRight();//右了.樹插入

      DeleteEl咖ent();//刪除結點

      }

      4.1.3二叉樹雙向鏈袁的數據結構

      梯形圖程序的完整信息采用二叉樹雙向鏈表來存儲,二叉樹艤向鏈表類的數據結構抽象如下:

      class treeI.ist

      {public:

      bTrccLink*head;//雙向鏈表頭指針

      bTreeLink*currcnt;//當前結點指針

      bTrceLink*tail;//雙向鏈表尾指針

      public:

      InertbTrcc(bTreeI。ink*node,bTreeLink*current);//插入_二義樹鏈結

      DIeletebTree(bTreeL.nk*node);//刪除二叉樹鏈結}

      4.2二叉樹的簡化算法

      二叉樹中含有大量的冗余信息,在其向指令表轉化的過程中需要對je進行簡化處理,采用對每棵二叉樹進行一次先序遍歷,對每一個圖元結點對象進行判斷處理。

      二叉樹的簡化主要是過濾掉梯形網中多余的連接圖元,這里把主要對九種不同的圖元對象做簡化處理:(1)功能單元對象;(2)虛結點圖元對象;(3)連接單兀包含七種:下分支、右分支、左分支、左轉、右轉、串聯連接、和縱向連接。

      對于不同的圖元類型進行不同的處理。

      這里,簡化函數中列出了三種類型的圖元的簡化處理算法,其他類型處理類似。

      Predigcst(bTrccLink*p,int type)

      {swiIch(type)

      {case o://圖元對象為功能單元

      Break;//功能單元保留

      casc l://圖形對象為下分支

      p_,pareIlt,left=p-lcft;//去除連接結點

      if(p—right!-NUI.I。)//若右了.樹存在

      p-1eft-right-p-right;//連接右子樹

      brcak;//下分支連接單元簡化處理

      case 2://圖元對象為右分支

      p-parenl_-right-曠lcft;//去除連接結點

      p-1eft—right—p—right;//連接右f樹

      brcak;//右分支連接單元簡化處理

      case 8:{//縱向連接單元簡化處理)

      ))

    5轉換實例

      圖1所示的是一個具有復雜串并聯關系的梯形圖程序,其中包含的兩個邏輯關系式如下所示:

      圖2為該梯形圖程序中的兩個邏輯關系式對應的兩棵二叉樹,包含r梯形圖中描述的所有信息,其中掃描中重復的結點我們定義為虛結點。

      上面得到的兩棵二叉樹是一個松散的結構,我們采用了二叉樹雙向鏈表將其鏈接起來,使之完整地描述梯形圖的信息。圖3給出了一個含有N棵二叉樹結點的模型描述。

      bTree o~bTree挖一1為梯形圖中所包含的二叉樹,一般來說,雙向鏈表結點中只需要保存二義樹根結點的地址即可。prior和next為雙向鏈表的前驅指針和后驅指針,其中prior指向前一棵二義樹的根結點,next指向下一棵二叉樹的根結點,head指針指向雙向鏈表的第一個結點,current為當前指針,指向當前結點,tail指針為尾指針,始終指向鏈表的最后一個結點。

      在向指令表轉換之前,我們對每一棵=義樹結點進行了簡化處理,采用4.2節描述的簡化算法,得到如下的精簡結構,如圖4所示。

      對上面得到的簡化二叉樹,我們只需要經過一次后遍歷和一些判斷處理,就町以得到相應的指令表序列。

    6結束語

      本文介紹的這種二叉樹雙向鏈表的數據結構簡單、清晰、算法易于實現,與項日具體相結合,采用r面向對象的方法并用C++語言來實現,實現了數據和方法的良好封裝。同時,由于這種簡捷的結構,使后續的由梯形圖存儲結構到語句表的轉換算法的設計變得簡單,只需要對二叉樹雙向鏈表遍歷一次便叮以得到語句表序列。


    (審核編輯: 智匯李)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 青岛色粉_色母及改性塑料供应厂家 - 青岛建轩新材料有限公司 | 无土栽培|无土栽培技术|水肥一体化|无土栽培蔬菜 | 郑州同林-金属切削液,全合成,半合成,防锈水溶性,微乳,油基长寿乳化切削液生产厂家 | 河南电梯公司_郑州电梯公司_河南家用别墅电梯厂家-郑州嘉祥机电设备公司 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 锦州龙威机械有限公司官网 ,锦州医药包装机,包装机,锦州包装机械,小袋颗粒装盒生产线,颗粒装盒生产线,软双铝装盒线,伺服颗粒 | 雨量计,翻斗雨量计,声波雨量计i,时差法流量计,时差法明渠流量计 - 徐州伟思水务科技有限公司 | 展会设计搭建-展厅设计施工公司-展位展台设计搭建-深圳鼎泰展览 展柜设计定制-品牌展柜订做-展柜制作厂家「广州嘉艺展柜」 | 山东万利精密机械制造有限公司-高速金属圆锯机,数控高速圆锯机,高速圆锯机生产厂家 | 深圳市福田区建筑装饰设计协会 | 配重铁砂|合金钢丸|山东铁砂|济南嘉日金属制品有限公司 | 京建鹏达_商用无烟烧烤设备多少钱|开店商用自助旋转烧烤炉价格|无烟电烧烤炉批发厂家|无烟烧烤桌定做厂商-京建鹏达烧烤设备网 | 黑料网 - 黑料大事记-黑料门 黑料社最新 今日黑料 热门黑料 最新反差免费-黑料网今日黑料首页_黑料网 - 黑料大事记-黑料门 黑料社最新 今日黑料 热门黑料 最新反差免费-黑料网今日黑料首页 | 制砂机锤头_锤式破碎机锤头_粉煤机锤头_巩义市东辰实业 | 轴流消防排烟风机,排烟防火阀厂家,铝合金百叶风口-德州正邦通风设备有限公司 | 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 天力普电力科技有限公司| 学校直饮水机-反渗透纯水设备-家用净水器厂家-广州颖圣能源设备 学校洗碗机-郑州洗碗机厂家-商用洗碗机-郑州旭申环保科技有限公司 | 聚氨酯碰头,聚氨酯托辊,聚氨酯地辊/地滚轮/地轮/托绳轮-济宁卓力聚氨酯制品有限公司 | 深圳起重机,龙门吊,天车起重工程,电动葫芦,液压升降货梯-深圳市德力起重机械有限公司 | 抛丸机-通过式抛丸机-履带吊钩式抛丸机厂家-青岛泓霖智能设备公司 | 蒸汽发生器-电加热蒸汽发生器、燃油蒸汽发生器、燃气蒸汽发生器设备厂家-诺贝思蒸汽发生器 | 津成电线电缆价格,天津津成线缆,津成线缆销售电话,天津津成线缆批发电话-天津市津成电线电缆有限公司 | 一氧化碳检测仪_氢气报警器_臭氧分析仪-深圳万安迪 | 凿岩机|操车设备|爬车机|三环链|伞钻|伞型钻机|中心回转抓岩机|往复式给煤机|滚轮罐耳|吊桶|钩头-济宁卓力工矿设备有限公司 | 食品油炸机_葱酥油炸机_蒜酥油炸机-山东世联机械厂家 | 郑州华特仪器设备有限公司-dlsb低温冷却液循环泵-SHZ-DIII循环水真空泵 | 真石漆设备-干粉砂浆生产线-保温砂浆机械-郑州屹成机械设备 | 行情网 - 钢材行情,金属行情,废金属行情,农产品行情,化工行情,水泥行情 | 远程供电系统-电源发生器-隔离电源转换器-深圳市安博特电源设备有限公司 | 数控立式车铣复合加工中心_数控立车_卧式加工中心_阀门专机-华电数控 | 激光切割机_激光切割机价格-山东大威激光科技有限公司 | 精细筛-振动筛-滚筒筛-摇摆筛-平面回转筛-筛分机械设备-新乡德科筛分机械公司 | 网络公关公司_舆情监测_危机公关_品牌公关_一夜红传媒 | 液压万能试验机价格_电子万能试验机|摩擦磨损试验机厂家-济南辰达试验机制造有限公司 | 天津印刷_天津印刷厂_天津印刷公司_天津包装盒厂家_天津包装盒印刷厂_七层共挤膜厂家_彩色印刷_画册印刷_礼品盒定做 _七层共挤膜_食品真空袋-欢迎访问嘉联包装官网! | 立式加工中心_龙门加工中心_卧式加工中心-山东威达重工股份有限公司 | 一体化污水处理设备-生活废水处理设备-山东瑞信环保 | 推台锯_多片锯_圆木推台锯_方木多片锯_圆木多片锯-河北茂业机械有限公司 | 生物柴油_油酸甲酯厂家_脂肪酸甲酯_植物油燃料-中凯化工 | 数控落地镗铣床_数控刨台式镗铣床_数控龙门加工中心-青岛辉腾机械设备有限公司 |