欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

語句表到梯形圖的轉(zhuǎn)換方法

文檔序號:6631402閱讀:4281來源:國知局
語句表到梯形圖的轉(zhuǎn)換方法
【專利摘要】本發(fā)明公開了語句表到梯形圖的轉(zhuǎn)換方法,以LD/LDN類指令,AND/ANDN類指令,OR/ORN類指令,ALD指令,OLD指令,LPS、LRD\LPP指令這五類指令為中,以及線圈(Coil)類與功能盒(Box)類指令則根據(jù)當(dāng)前邏輯棧頂?shù)闹祦頉Q定是否執(zhí)行或賦值,可根據(jù)需要任意擴(kuò)展;步驟有:步驟1:建立必要的數(shù)據(jù)結(jié)構(gòu);步驟2:創(chuàng)建路徑鏈表:步驟3:掃描語句表,生成路徑鏈表;步驟4:根據(jù)所掃描到的指令,按算法生成路徑鏈表;步驟5:從路徑鏈表中提起梯形圖。
【專利說明】語句表到梯形圖的轉(zhuǎn)換方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及工業(yè)控制領(lǐng)域,特別是語句表到梯形圖的轉(zhuǎn)換方法。

【背景技術(shù)】
[0002]梯形圖(Ladder Diagram)作為起源于早期繼電器邏輯控制電路的一種圖形化編程語言,由于其簡單易用,可高效直觀地實現(xiàn)復(fù)雜的邏輯控制功能,在工業(yè)控制領(lǐng)域當(dāng)中從簡單的PLC到復(fù)雜得系統(tǒng)如集散控制系統(tǒng)(DCS)、現(xiàn)場總線控制系統(tǒng)(FCS)中都作為一個必不可少且往往是最主要的編程語言。梯形圖一般會被編譯成為語句表,在具體實現(xiàn)中語句表往往就是IEC61131-3虛擬主機的基本指令,從虛擬主機的二進(jìn)制程序代碼與語句表指令一一對應(yīng)。出于調(diào)試維護(hù)的原因,有時需要上載已經(jīng)在運行的PLC內(nèi)部程序,上載的二進(jìn)制代碼可以很方便的轉(zhuǎn)換為語句表,語句表畢竟是文本化程序語言,沒有梯形圖看起來直觀簡單,因此需要將語句表轉(zhuǎn)化為梯形圖。


【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的是提供一種語句表到梯形圖的轉(zhuǎn)換方法。
[0004]本發(fā)明是通過以下技術(shù)方案予以實現(xiàn)的:
語句表到梯形圖的轉(zhuǎn)換方法,以LD/LDN類指令,AND/ANDN類指令,0R/0RN類指令,ALD指令,OLD指令,LPS、LRD\LPP指令這五類指令為中,以及線圈(Coil)類與功能盒(Box)類指令則根據(jù)當(dāng)前邏輯棧頂?shù)闹祦頉Q定是否執(zhí)行或賦值,可根據(jù)需要任意擴(kuò)展;具體步驟如下:
步驟1:建立必要的數(shù)據(jù)結(jié)構(gòu);
步驟2:創(chuàng)建路徑鏈表:①創(chuàng)建一個鏈表結(jié)構(gòu),存儲這里稱之為“路徑”的對象,路徑對象描述了該組成該路徑的梯形圖元件、源節(jié)點號、目標(biāo)節(jié)點號的信息。路徑還可以包含子路徑,子路徑之間可以是串聯(lián)或并聯(lián)關(guān)系;②建立一種節(jié)點號申請機制,使得每次都可申請到一個新的節(jié)點號建立路徑的出發(fā)節(jié)點(源節(jié)點)機進(jìn)入節(jié)點(目標(biāo)節(jié)點)堆棧;
步驟3:掃描語句表,生成路徑鏈表;
步驟4:根據(jù)所掃描到的指令,按下面的算法生成路徑鏈表:
⑴LD/LDN類指令:
①.生成一個新的路徑,路徑中包含一個觸點類型的梯形圖元件;
②.申請新的節(jié)點號,壓入源節(jié)點號堆棧;
③.再次申請新的節(jié)點號,壓入目標(biāo)節(jié)點號堆棧;
④.新路徑的源節(jié)點號等于源節(jié)點號堆棧棧頂值;
⑤.新路徑的目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
⑥.新生成的路徑插入到鏈表的前端;
(2)AND/ANDN 類指令:
①.生成一個新的路徑,路徑中包含一個觸點類型的梯形圖元件;②.新路徑源節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
③.申請新的節(jié)點號,替換目標(biāo)節(jié)點號堆棧棧頂值;
④.新路徑的源節(jié)點號等于源節(jié)點號堆棧棧頂值;
⑤.新路徑的目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
⑥.新生成的路徑與鏈表最前端的路徑合并生成一個串聯(lián)復(fù)合路徑;
⑶OR/ORN類指令:
①.生成一個新的路徑,路徑中包含一個觸點類型的梯形圖元件;
②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值;
③.新路徑目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
④.新生成的路徑與鏈表最前端的路徑合并生成一個并聯(lián)復(fù)合路徑;
⑷ALD指令:
①.生成一個新的路徑,不包含任何元件;
②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值;
③.鏈表頭開始第2位置路徑的源節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
④.源節(jié)點號堆棧彈出,用新路徑源節(jié)點號替換源節(jié)點號堆棧棧頂值;
⑤.目標(biāo)節(jié)點號堆棧彈出;
⑥.新路徑目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
⑦.按順序?qū)㈡湵眍^開始的2個路徑移動到新路徑的子路徑;
⑧.新生成的路徑插入到鏈表的前端;
(5)OLD 指令:
①.生成一個新的路徑。不包含任何元件;
②.源節(jié)點號堆棧彈出;
③.目標(biāo)節(jié)點號堆棧彈出;
④.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值;
⑤.新路徑目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
⑥.鏈表頭開始第1、2位置路徑的源節(jié)點號等于源節(jié)點號堆棧棧頂值;
⑦.鏈表頭開始第1、2位置路徑的目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值;
⑧.按順序?qū)㈡湵眍^開始的2個路徑移動到新路徑的子路徑;
⑨.新生成的路徑插入到鏈表的前端;
(6)LPS指令:復(fù)制目標(biāo)節(jié)點號堆棧棧頂值并壓棧:
(7)LRD指令:復(fù)制目標(biāo)節(jié)點號堆棧第2位置的值到棧頂:
(8)LPP指令:目標(biāo)節(jié)點號堆棧彈出:
(9)線圈(Coil)類指令:
①.生成一個新的路徑,路徑中包含一個線圈類型的梯形圖元件;
②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值;
③.新路徑目標(biāo)節(jié)點號等于新節(jié)點號;
④.新生成的路徑插入到鏈表的前端;
(10)功能盒(Box)類指令:
①.生成一個新的路徑,路徑中包含一個功能盒(Box)類型的梯形圖元件; ②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值;
③.新路徑目標(biāo)節(jié)點號等于新節(jié)點號;
④.新生成的路徑插入到鏈表的前端;
步驟5:從路徑鏈表中提起梯形圖:
原始路徑為只有I個梯形圖元件,沒有子路徑的路徑;將路徑鏈表中的所有原始路徑中的梯形圖元件提出,就可得到語句表所對應(yīng)的梯形圖元件及連接相互之間的連接關(guān)系了 ;從原始路徑中提取梯形圖元件時,遵循以下原則:
①.梯形圖元件左側(cè)連接到路徑源節(jié)點號對應(yīng)的接入點,梯形圖元件右側(cè)連接到路徑門板節(jié)點號對應(yīng)的接入點;
②.按路徑在鏈表/子鏈表中的順序存放梯形圖元件。

【專利附圖】

【附圖說明】
[0005]圖1是本發(fā)明的梯形圖;
圖2是本發(fā)明的LD A生成對應(yīng)路徑的不意圖;
圖3是本發(fā)明的LD B生成對應(yīng)路徑的示意圖;
圖4是本發(fā)明的AND C生成對應(yīng)路徑的不意圖;
圖5是本發(fā)明的LD D生成對應(yīng)路徑的示意圖;
圖6是本發(fā)明的AND E生成對應(yīng)路徑的示意圖;
圖7是本發(fā)明的OLD建立路徑之間關(guān)系的示意圖;
圖8是本發(fā)明的OR F生成對應(yīng)路徑的示意圖;
圖9是本發(fā)明的ALD建立路徑之間關(guān)系的示意圖;
圖10是本發(fā)明的AND G生成對應(yīng)路徑的示意圖;
圖11是本發(fā)明的LPS處理路徑節(jié)點的示意圖;
圖12是本發(fā)明的AND H生成對應(yīng)路徑的示意圖;
圖13是本發(fā)明的ADD生成對應(yīng)路徑的示意圖;
圖14是本發(fā)明的LRD生成對應(yīng)路徑的示意圖。

【具體實施方式】
[0006]下面結(jié)合附圖對本發(fā)明的實施例做進(jìn)一步描述:
如圖1所示的梯形圖對應(yīng)的語句表如下,后面的步驟描述將下面的語句表反編譯為圖1所示的梯形圖:
LD A //將A加載到邏輯棧頂
LD B //邏輯堆棧下壓I層,將B放到棧頂
AND C //邏輯棧頂與C相與,結(jié)果放到棧頂 LD D //邏輯堆棧下壓I層,將B放到棧頂 AND E //邏輯棧頂與C相與,結(jié)果放到棧頂 OLD //棧頂與其下一層相或,邏輯堆棧上彈,結(jié)果放在棧頂 OR F //邏輯棧頂與H相與
ALD //棧頂與其下一層相或,邏輯堆棧上彈,結(jié)果放在棧頂AND G Il邏輯棧頂與I相與,結(jié)果放到棧頂
LPS//下壓邏輯棧,并保持棧頂值不變
AND H //邏輯棧頂與J相與,結(jié)果放到棧頂
ADD//如果棧頂為真,則進(jìn)行加法運算
LRD//復(fù)制次層的值到棧頂
LD I //邏輯堆棧下壓I層,將I放到棧頂
LD J //邏輯堆棧下壓I層,將J放到棧頂
AND K //邏輯棧頂與K相與,結(jié)果放到棧頂
OLD//棧頂與其下一層相或,邏輯堆棧上彈,結(jié)果放在棧頂
ALD//棧頂與其下一層相與,邏輯堆棧上彈,結(jié)果放在棧頂
SUB//如果棧頂為真,則進(jìn)行減法運算
LPP //邏輯堆棧上彈
MUL//如果棧頂為真,則進(jìn)行乘法運算。
【權(quán)利要求】
1.語句表到梯形圖的轉(zhuǎn)換方法,以LD/LDN類指令,AND/ANDN類指令,OR/ORN類指令,ALD指令,OLD指令,LPS、LRD\LPP指令這五類指令為中,以及線圈(Coil)類與功能盒(Box)類指令則根據(jù)當(dāng)前邏輯棧頂?shù)闹祦頉Q定是否執(zhí)行或賦值,可根據(jù)需要任意擴(kuò)展;具體步驟如下: 步驟1:建立必要的數(shù)據(jù)結(jié)構(gòu); 步驟2:創(chuàng)建路徑鏈表:①創(chuàng)建一個鏈表結(jié)構(gòu),存儲這里稱之為“路徑”的對象,路徑對象描述了該組成該路徑的梯形圖元件、源節(jié)點號、目標(biāo)節(jié)點號的信息;路徑還可以包含子路徑,子路徑之間可以是串聯(lián)或并聯(lián)關(guān)系;②建立一種節(jié)點號申請機制,使得每次都可申請到一個新的節(jié)點號建立路徑的出發(fā)節(jié)點(源節(jié)點)機進(jìn)入節(jié)點(目標(biāo)節(jié)點)堆棧; 步驟3:掃描語句表,生成路徑鏈表; 步驟4:根據(jù)所掃描到的指令,按算法生成路徑鏈表; 步驟5:從路徑鏈表中提起梯形圖。
2.根據(jù)權(quán)利要求1所述的語句表到梯形圖的轉(zhuǎn)換方法,其特征在于,步驟4按以下算法生成路徑鏈表: ⑴LD/LDN類指令: ①.生成一個新的路徑,路徑中包含一個觸點類型的梯形圖元件; ②.申請新的節(jié)點號,壓入源節(jié)點號堆棧; ③.再次申請新的節(jié)點號,壓入目標(biāo)節(jié)點號堆棧; ④.新路徑的源節(jié)點號等于源節(jié)點號堆棧棧頂值; ⑤.新路徑的目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ⑥.新生成的路徑插入到鏈表的前端; (2)AND/ANDN 類指令: ①.生成一個新的路徑,路徑中包含一個觸點類型的梯形圖元件; ②.新路徑源節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ③.申請新的節(jié)點號,替換目標(biāo)節(jié)點號堆棧棧頂值; ④.新路徑的源節(jié)點號等于源節(jié)點號堆棧棧頂值; ⑤.新路徑的目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ⑥.新生成的路徑與鏈表最前端的路徑合并生成一個串聯(lián)復(fù)合路徑; ⑶0R/0RN類指令: ①.生成一個新的路徑,路徑中包含一個觸點類型的梯形圖元件; ②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值; ③.新路徑目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ④.新生成的路徑與鏈表最前端的路徑合并生成一個并聯(lián)復(fù)合路徑; ⑷ALD指令: ①.生成一個新的路徑,不包含任何元件; ②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值; ③.鏈表頭開始第2位置路徑的源節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ④.源節(jié)點號堆棧彈出,用新路徑源節(jié)點號替換源節(jié)點號堆棧棧頂值; ⑤.目標(biāo)節(jié)點號堆棧彈出; ⑥.新路徑目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ⑦.按順序?qū)㈡湵眍^開始的2個路徑移動到新路徑的子路徑; ⑧.新生成的路徑插入到鏈表的前端; (5)OLD 指令: ①.生成一個新的路徑,不包含任何元件; ②.源節(jié)點號堆棧彈出; ③.目標(biāo)節(jié)點號堆棧彈出; ④.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值; ⑤.新路徑目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ⑥.鏈表頭開始第1、2位置路徑的源節(jié)點號等于源節(jié)點號堆棧棧頂值; ⑦.鏈表頭開始第1、2位置路徑的目標(biāo)節(jié)點號等于目標(biāo)節(jié)點號堆棧棧頂值; ⑧.按順序?qū)㈡湵眍^開始的2個路徑移動到新路徑的子路徑; ⑨.新生成的路徑插入到鏈表的前端; (6)LPS指令:復(fù)制目標(biāo)節(jié)點號堆棧棧頂值并壓棧: (7)LRD指令:復(fù)制目標(biāo)節(jié)點號堆棧第2位置的值到棧頂: (8)LPP指令:目標(biāo)節(jié)點號堆棧彈出: ⑶線圈類指令: ①.生成一個新的路徑,路徑中包含一個線圈類型的梯形圖元件; ②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值; ③.新路徑目標(biāo)節(jié)點號等于新節(jié)點號; ④.新生成的路徑插入到鏈表的前端; (10)功能盒類指令: ①.生成一個新的路徑,路徑中包含一個功能盒(Box)類型的梯形圖元件; ②.新路徑源節(jié)點號等于源節(jié)點號堆棧棧頂值; ③.新路徑目標(biāo)節(jié)點號等于新節(jié)點號; ④.新生成的路徑插入到鏈表的前端。
3.根據(jù)權(quán)利要求1所述的語句表到梯形圖的轉(zhuǎn)換方法,其特征在于,步驟5從路徑鏈表中提起梯形圖的具體方法如下: 原始路徑為只有I個梯形圖元件,沒有子路徑的路徑;將路徑鏈表中的所有原始路徑中的梯形圖元件提出,就可得到語句表所對應(yīng)的梯形圖元件及連接相互之間的連接關(guān)系了 ;從原始路徑中提取梯形圖元件時,遵循以下原則: ①.梯形圖元件左側(cè)連接到路徑源節(jié)點號對應(yīng)的接入點,梯形圖元件右側(cè)連接到路徑門板節(jié)點號對應(yīng)的接入點; ②.按路徑在鏈表/子鏈表中的順序存放梯形圖元件。
【文檔編號】G06F9/45GK104317631SQ201410572477
【公開日】2015年1月28日 申請日期:2014年10月24日 優(yōu)先權(quán)日:2014年10月24日
【發(fā)明者】周曉峰, 胡炎良 申請人:湖南先步信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
游戏| 阜城县| 偏关县| 三门峡市| 怀来县| 丰城市| 广德县| 迁西县| 乐业县| 米泉市| 澳门| 子长县| 安乡县| 仁布县| 裕民县| 墨江| 图木舒克市| 安仁县| 桦川县| 金昌市| 芜湖县| 六盘水市| 岱山县| 怀集县| 上栗县| 靖安县| 石楼县| 义乌市| 安图县| 柏乡县| 琼结县| 常州市| 湄潭县| 平乡县| 京山县| 连州市| 建德市| 洮南市| 舒城县| 大关县| 万年县|