[發(fā)明專利]一種將PLC梯形圖轉(zhuǎn)換成指令表并解釋執(zhí)行的方法有效
| 申請(qǐng)?zhí)枺?/td> | 201710338944.3 | 申請(qǐng)日: | 2017-05-15 |
| 公開(kāi)(公告)號(hào): | CN107193534B | 公開(kāi)(公告)日: | 2020-05-22 |
| 發(fā)明(設(shè)計(jì))人: | 黃道平;何梓揚(yáng);劉少君 | 申請(qǐng)(專利權(quán))人: | 華南理工大學(xué) |
| 主分類號(hào): | G06F9/30 | 分類號(hào): | G06F9/30;G06F9/34;G05B19/05 |
| 代理公司: | 廣州市華學(xué)知識(shí)產(chǎn)權(quán)代理有限公司 44245 | 代理人: | 李斌 |
| 地址: | 510640 廣*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 plc 梯形 轉(zhuǎn)換 指令 解釋 執(zhí)行 方法 | ||
1.一種將PLC梯形圖轉(zhuǎn)換成指令表并解釋執(zhí)行的方法,其特征在于,包括如下步驟:
S1、遍歷梯形圖并構(gòu)造十字鏈表的所有頂點(diǎn),根據(jù)各頂點(diǎn)的邏輯關(guān)系構(gòu)造十字鏈表的弧鏈表,通過(guò)所有頂點(diǎn)和弧鏈表得到十字鏈表;
S2、利用串并聯(lián)歸并,化簡(jiǎn)十字鏈表得到包含指令間邏輯關(guān)系的二叉樹(shù)結(jié)構(gòu);
S3、遍歷二叉樹(shù)結(jié)構(gòu)得到對(duì)應(yīng)的指令表;
S4、利用堆棧的先進(jìn)先出原理解釋指令表;
所述步驟S1,具體為:
S11、構(gòu)造StrRung結(jié)構(gòu)體保存梯形圖一行的信息,其中包括Element數(shù)組,該數(shù)組的元素是保存梯形圖元件信息的StrElement結(jié)構(gòu)體指針,然后用Rung指針數(shù)組保存每一行的StrRung結(jié)構(gòu)體指針;
S12、把除導(dǎo)線以外的其他元件看成有向圖的一個(gè)頂點(diǎn),構(gòu)造頂點(diǎn)結(jié)構(gòu)StrVexNode并遍歷Rung指針數(shù)組建立所有頂點(diǎn),頂點(diǎn)結(jié)構(gòu)包括一個(gè)指向二叉樹(shù)節(jié)點(diǎn)結(jié)構(gòu)StrBiNode指針;
S13、構(gòu)造弧節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)并且根據(jù)各頂點(diǎn)的邏輯關(guān)系構(gòu)造弧鏈表;
S14、通過(guò)所有頂點(diǎn)和弧鏈表得到十字鏈表;
所述步驟S2,具體為:
S21、利用串聯(lián)歸并,求入度為1的頂點(diǎn),由該頂點(diǎn)結(jié)構(gòu)的firstin域得到以該頂點(diǎn)為弧頭的第一個(gè)弧結(jié)點(diǎn),由弧結(jié)點(diǎn)得到弧尾頂點(diǎn),接著計(jì)算該弧尾頂點(diǎn)的出度和入度,如果弧尾頂點(diǎn)的出度為1且入度小于等于1,則弧尾和弧頭頂點(diǎn)合并為一個(gè)頂點(diǎn);合并時(shí)新建一個(gè)二叉樹(shù)節(jié)點(diǎn)BiNode,把弧尾頂點(diǎn)所包含的二叉樹(shù)節(jié)點(diǎn)指針賦值為BiNode的左子節(jié)點(diǎn),把弧頭頂點(diǎn)所包含的二叉樹(shù)節(jié)點(diǎn)指針賦值為BiNode的右子節(jié)點(diǎn),同時(shí)把BiNode的Operator字段賦值為枚舉元素AND,然后BiNode的指針賦值給弧尾頂點(diǎn)的二叉樹(shù)節(jié)點(diǎn)指針并且把弧頭頂點(diǎn)的firstout指針賦值給弧尾頂點(diǎn)的firstout指針,最后釋放弧頭頂點(diǎn)的firstin弧節(jié)點(diǎn)和弧頭頂點(diǎn);
S22、利用并聯(lián)歸并,依次計(jì)算頂點(diǎn)的出度,如果頂點(diǎn)的出度大于1則利用firstout域把以該頂點(diǎn)為弧尾的所有弧結(jié)點(diǎn)的弧頭頂點(diǎn)保存在temp1數(shù)組中,對(duì)于temp數(shù)組中的頂點(diǎn)都按照以下步驟執(zhí)行,求該頂點(diǎn)為弧尾的第一個(gè)弧結(jié)點(diǎn)的弧頭頂點(diǎn),計(jì)算該弧頭頂點(diǎn)的入度,如果該弧頭頂點(diǎn)的入度大于1,則利用firstin域把以該弧頭頂點(diǎn)為弧頭的所有弧結(jié)點(diǎn)的弧尾頂點(diǎn)保存在temp2數(shù)組中,然后遍歷temp1數(shù)組和temp2數(shù)組找出兩個(gè)數(shù)組都包含的頂點(diǎn),把這些頂點(diǎn)合并成一個(gè)頂點(diǎn);其中,合并時(shí):
a)先聲明一個(gè)指向StrBiNode的指針pBiNode,把第一個(gè)頂點(diǎn)的BiNode字段賦值給pBiNode;b)然后取出下一個(gè)頂點(diǎn),分配一個(gè)二叉樹(shù)結(jié)構(gòu),其指針為NewBiNode,把pBiNode賦值給NewBiNode的left字段,把頂點(diǎn)的BiNode字段賦值給NewBiNode的right字段,賦值NewBiNode的Operator字段為枚舉元素OR,把NewBiNode賦值給pNode,最后釋放該頂點(diǎn)的firstin和firstout指針?biāo)赶騼?nèi)容和該頂點(diǎn)指針?biāo)赶騼?nèi)容;c)重復(fù)步驟b)直到取出所有頂點(diǎn);
S23、重復(fù)步驟S21、S22,直到十字鏈表只剩下一個(gè)頂點(diǎn),該頂點(diǎn)的BiNode字段為一顆包含了梯形圖邏輯關(guān)系的二叉樹(shù)的根節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求1所述的一種將PLC梯形圖轉(zhuǎn)換成指令表并解釋執(zhí)行的方法,其特征在于,所述步驟S4,具體為:
S41、掃描物理輸入并存儲(chǔ)物理輸入狀態(tài);
S42、利用堆棧原理逐行解釋指令表,直到遇到END指令結(jié)束;
S43、把存儲(chǔ)的物理輸出狀態(tài)更新到物理輸出。
3.根據(jù)權(quán)利要求2所述的一種將PLC梯形圖轉(zhuǎn)換成指令表并解釋執(zhí)行的方法,其特征在于,所述步驟S42的利用堆棧原理逐行解釋指令表,利用堆棧先進(jìn)先出的特點(diǎn)來(lái)實(shí)現(xiàn)指令表的解釋,所述指令表的解釋分4種情況,包括:
(1)對(duì)于LD或LDI指令,將其操作數(shù)壓入堆棧;
(2)對(duì)于OUT指令,將其操作數(shù)從堆棧中取出;
(3)對(duì)于AND、ANI、OR、ORI、ANB、ORB指令,將其對(duì)象從堆棧中取出,經(jīng)過(guò)邏輯運(yùn)算后存入堆棧;
(4)對(duì)于SET、RST指令,改變其操作數(shù)的狀態(tài)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華南理工大學(xué),未經(jīng)華南理工大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710338944.3/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 上一篇:一種生物催化合成2-噻吩乙胺的方法
- 下一篇:一種光纖布線裝置
- 圖像轉(zhuǎn)換設(shè)備、圖像轉(zhuǎn)換電路及圖像轉(zhuǎn)換方法
- 數(shù)模轉(zhuǎn)換電路及轉(zhuǎn)換方法
- 轉(zhuǎn)換設(shè)備和轉(zhuǎn)換方法
- 占空比轉(zhuǎn)換電路及轉(zhuǎn)換方法
- 通信轉(zhuǎn)換方法、轉(zhuǎn)換裝置及轉(zhuǎn)換系統(tǒng)
- 模數(shù)轉(zhuǎn)換和模數(shù)轉(zhuǎn)換方法
- 轉(zhuǎn)換模塊以及轉(zhuǎn)換電路
- 熱電轉(zhuǎn)換材料、熱電轉(zhuǎn)換元件和熱電轉(zhuǎn)換模塊
- 熱電轉(zhuǎn)換材料、熱電轉(zhuǎn)換元件及熱電轉(zhuǎn)換模塊
- 熱電轉(zhuǎn)換材料、熱電轉(zhuǎn)換元件及熱電轉(zhuǎn)換模塊





