亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于發(fā)電機組控制器的plc指令表轉(zhuǎn)梯形圖的方法

文檔序號:6308903閱讀:537來源:國知局
一種基于發(fā)電機組控制器的plc指令表轉(zhuǎn)梯形圖的方法
【專利摘要】本發(fā)明提供一種基于發(fā)電機組控制器的PLC指令表轉(zhuǎn)梯形圖的方法,包括以下步驟:步驟1:根據(jù)PLC指令表構建中間樹;步驟2:遍歷中間樹;步驟3:輸出步驟2中生成的梯形圖。本發(fā)明方法提供了一種由PLC指令表生成梯形圖的方法,可自動檢測錯誤和冗余,由PLC指令表生成中間樹結構,然后由中間樹生成梯形圖。
【專利說明】—種基于發(fā)電機組控制器的PLC指令表轉(zhuǎn)梯形圖的方法

【技術領域】
[0001]本發(fā)明涉及一種指令表轉(zhuǎn)梯形圖的方法,具體的說,涉及了一種基于發(fā)電機組控制器的PLC指令表轉(zhuǎn)梯形圖的方法。

【背景技術】
[0002]PLC的編程語言一般采用梯形圖語言(LD)、指令表語言(IL)、功能模塊語言(FBD)、順序功能流程圖語言(SFC)和結構化文本語言(ST)五種,然而,在使用的過程中,有時候需要將現(xiàn)有的指令表轉(zhuǎn)為梯形圖,普通的方法在轉(zhuǎn)梯形圖的過程中不能糾錯,并且容易出現(xiàn)翻譯錯誤或者冗余。
[0003]為了解決以上存在的問題,人們一直在尋求一種理想的技術解決方案。


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

[0004]本發(fā)明的目的是針對現(xiàn)有技術的不足,提供了一種易于實現(xiàn),能自動檢測錯誤和冗余的基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法。
[0005]為了實現(xiàn)上述目的,本發(fā)明所采用的技術方案是:一種基于發(fā)電機組控制器的PLC指令表轉(zhuǎn)梯形圖的方法,包括以下步驟:
步驟1:根據(jù)PLC指令表構建中間樹:
定義一個棧來保存節(jié)點,從上到下逐步翻譯PLC指令表每一行的指令;
a、若是LD或LDNOT指令,新建一個葉子節(jié)點X,并將新建的葉子節(jié)點X推進棧;
b、如果碰到AND或ANDNOT指令,生成一個葉子節(jié)點X,然后判斷棧頂節(jié)點的類型;如果是串聯(lián)節(jié)點,將該葉子節(jié)點X設置為棧頂節(jié)點的子節(jié)點;如果棧頂節(jié)點是葉子節(jié)點或并聯(lián)節(jié)點,則新建一個串聯(lián)節(jié)點S,將生成的葉子節(jié)點X和棧頂節(jié)點設置為新建的串聯(lián)節(jié)點S的子節(jié)點,棧頂節(jié)點出棧,新建的串聯(lián)節(jié)點S進棧;
C、如果碰到OR和ORNOT指令,生成一個葉子節(jié)點X,然后判斷棧頂節(jié)點的類型;如果是并聯(lián)節(jié)點,直接將生成的葉子節(jié)點X設置為棧頂節(jié)點的子節(jié)點;如果是葉子節(jié)點或串聯(lián)節(jié)點,新建一個并聯(lián)節(jié)點P,將葉子節(jié)點X和棧頂節(jié)點設置為該并聯(lián)節(jié)點P的子節(jié)點,棧頂節(jié)點出棧,該并聯(lián)節(jié)點P進棧;
d、如果碰到ANDLD指令,新建一個串聯(lián)節(jié)點S,將棧的前兩個節(jié)點出棧,并將這兩個節(jié)點設置為該串聯(lián)節(jié)點S的子節(jié)點,該串聯(lián)節(jié)點S進棧;
e、如果碰到ORLD指令,新建一個并聯(lián)節(jié)點P,將棧的前兩個節(jié)點出棧,并將這兩個節(jié)點設置為該并聯(lián)節(jié)點P的子節(jié)點,該并聯(lián)節(jié)點P進棧;
f、碰到OUT指令,新建輸出節(jié)點;
g、碰到END指令,則結束,中間樹生成完成;
其中,所述中間樹的節(jié)點包括葉子節(jié)點X和關系節(jié)點,所述關系節(jié)點為梯形圖邏輯節(jié)點的父節(jié)點,包括串聯(lián)節(jié)點S和并聯(lián)節(jié)點P ;所述葉子節(jié)點X為梯形圖中邏輯節(jié)點開關量;每個葉子節(jié)點X必須有個關系父節(jié)點,如果關系節(jié)點的子節(jié)點為關系節(jié)點,關系子節(jié)點不能與父節(jié)點類型相同。
[0006]步驟2:遍歷中間樹:
a、遍歷中間樹,如果是關系節(jié)點,那么繼續(xù)遞歸下去,直到遍歷到葉子節(jié)點X,則繪制成梯形圖的一個邏輯節(jié)點;
b、遍歷到下一個葉子節(jié)點X,該葉子節(jié)點X與上一個節(jié)點有一個共同的關系節(jié)點,判斷該關系節(jié)點的類型,如果是串聯(lián)節(jié)點S則繪制在上一個節(jié)點的X軸方向的后面,如果是并聯(lián)節(jié)點P則繪制在上一個節(jié)點Y軸方向的下面;
C、依次遍歷完中間樹的所有葉子節(jié)點X,根據(jù)步驟a、步驟b將中間樹中每一個葉子節(jié)點X都繪制成梯形圖中的一個邏輯節(jié)點。
[0007]步驟3:輸出步驟2中生成的梯形圖。
[0008]本發(fā)明相對現(xiàn)有技術具有突出的實質(zhì)性特點和顯著進步,具體的說,本發(fā)明方法提供了一種由PLC指令表生成梯形圖的方法,可自動檢測錯誤和冗余,由PLC梯形圖生成中間樹結構,然后由中間樹生成指令表。

【專利附圖】

【附圖說明】
[0009]圖1是本發(fā)明方法具體說明的步驟e中依據(jù)采用的PLC指令表生成的中間樹。
[0010]圖2是本發(fā)明方法具體說明中依據(jù)采用的PLC指令表最終生成的中間樹。
[0011]圖3是本發(fā)明方法具體說明中依據(jù)采用的PLC指令表最終生成的梯形圖。

【具體實施方式】
[0012]下面通過【具體實施方式】,對本發(fā)明的技術方案做進一步的詳細描述。
[0013]一種基于發(fā)電機組控制器的PLC指令表轉(zhuǎn)梯形圖的方法,包括以下步驟:
步驟1:根據(jù)PLC指令表構建中間樹:
定義一個棧來保存節(jié)點,從上到下逐步翻譯PLC指令表每一行的指令;
a、若是LD或LDNOT指令,新建一個葉子節(jié)點X,并將新建的葉子節(jié)點X推進棧;
b、如果碰到AND或ANDNOT指令,生成一個葉子節(jié)點X,然后判斷棧頂節(jié)點的類型;如果是串聯(lián)節(jié)點,將該葉子節(jié)點X設置為棧頂節(jié)點的子節(jié)點;如果棧頂節(jié)點是葉子節(jié)點或并聯(lián)節(jié)點,則新建一個串聯(lián)節(jié)點S,將生成的葉子節(jié)點X和棧頂節(jié)點設置為新建的串聯(lián)節(jié)點S的子節(jié)點,棧頂節(jié)點出棧,新建的串聯(lián)節(jié)點S進棧;
C、如果碰到OR和ORNOT指令,生成一個葉子節(jié)點X,然后判斷棧頂節(jié)點的類型;如果是并聯(lián)節(jié)點,直接將生成的葉子節(jié)點X設置為棧頂節(jié)點的子節(jié)點;如果是葉子節(jié)點或串聯(lián)節(jié)點,新建一個并聯(lián)節(jié)點P,將葉子節(jié)點X和棧頂節(jié)點設置為該并聯(lián)節(jié)點P的子節(jié)點,棧頂節(jié)點出棧,該并聯(lián)節(jié)點P進棧;
d、如果碰到ANDLD指令,新建一個串聯(lián)節(jié)點S,將棧的前兩個節(jié)點出棧,并將這兩個節(jié)點設置為該串聯(lián)節(jié)點S的子節(jié)點,該串聯(lián)節(jié)點S進棧;
e、如果碰到ORLD指令,新建一個并聯(lián)節(jié)點P,將棧的前兩個節(jié)點出棧,并將這兩個節(jié)點設置為該并聯(lián)節(jié)點P的子節(jié)點,該并聯(lián)節(jié)點P進棧;
f、碰到OUT指令,新建輸出節(jié)點;
g、碰到END指令,則結束,中間樹生成完成; 其中,所述中間樹的節(jié)點包括葉子節(jié)點X和關系節(jié)點,所述關系節(jié)點為梯形圖邏輯節(jié)點的父節(jié)點,包括串聯(lián)節(jié)點S和并聯(lián)節(jié)點P ;所述葉子節(jié)點X為梯形圖中邏輯節(jié)點開關量;每個葉子節(jié)點X必須有個關系父節(jié)點,如果關系節(jié)點的子節(jié)點為關系節(jié)點,關系子節(jié)點不能與父節(jié)點類型相同。
[0014]步驟2:遍歷中間樹:
a、遍歷中間樹,如果是關系節(jié)點,那么繼續(xù)遞歸下去,直到遍歷到葉子節(jié)點X,則繪制成梯形圖的一個邏輯節(jié)點;
b、遍歷到下一個葉子節(jié)點X,該葉子節(jié)點X與上一個節(jié)點有一個共同的關系節(jié)點,判斷該關系節(jié)點的類型,如果是串聯(lián)節(jié)點S則繪制在上一個節(jié)點的X軸方向的后面,如果是并聯(lián)節(jié)點P則繪制在上一個節(jié)點Y軸方向的下面;
C、依次遍歷完中間樹的所有葉子節(jié)點X,根據(jù)步驟a、步驟b將中間樹中每一個葉子節(jié)點X都繪制成梯形圖中的一個邏輯節(jié)點。
[0015]步驟3:輸出步驟2中生成的梯形圖。
[0016]以下對上述PLC指令表轉(zhuǎn)梯形圖的方法做出具體說明:
PLC 指令表中的指令包括以下 10 種:LD、LDNOT, AND、ANDNOT, OR、ORNOT, ANDLD, ORLD,OUT、END。
[0017]具體說明時,擬采用如下表所示的PLC指令表:
LD Xl
LD X2 ORNOT X3 ANDLD OR X4 LD X5 LD X6 LD X7 OR X8 ANDLD ORLD
OR X9 ANDLD AND XlO OUT Fun#I
END。
[0018]a、定義一個棧來保存節(jié)點。
[0019]b、讀取上述PLC指令表中的第一行“LD XI”,讀取到LD指令,則新建一個葉子節(jié)點XI,葉子節(jié)點Xl進棧。
[0020]C、接著又讀取到“LD X2”指令,同步驟b,新建一個葉子節(jié)點X2,葉子節(jié)點X2進棧。
[0021]d、讀取到“0RN0T X3”,新建葉子節(jié)點X3。因為是ORNOT指令,所以要判斷棧頂節(jié)點的類型,即X2節(jié)點的類型。由于X2節(jié)點為葉子節(jié)點,所以要新建一個并聯(lián)節(jié)點P1,將X2節(jié)點和X3節(jié)點設置為并聯(lián)節(jié)點Pl的子節(jié)點,X2節(jié)點出棧,并聯(lián)節(jié)點Pl進棧,現(xiàn)在,棧中有兩個節(jié)點:葉子節(jié)點Xl和并聯(lián)節(jié)點Pl。
[0022]e、讀取到ANDLD,新建一個串聯(lián)節(jié)點SI,并將棧中的第一個和第二個節(jié)點設置為串聯(lián)節(jié)點Si的子節(jié)點,即:將葉子節(jié)點Xl和并聯(lián)節(jié)點Pl設置為串聯(lián)節(jié)點SI的子節(jié)點,葉子節(jié)點Xi和并聯(lián)節(jié)點Pi出棧,Si節(jié)點進棧,此時棧中只有一個串聯(lián)節(jié)點SI。此時的中間樹結構如圖1所示。
[0023]f、繼續(xù)讀取指令“OR X4”,因為是OR指令,所以要判斷棧頂節(jié)點的類型,由于SI為串聯(lián)節(jié)點,所以要新建一個并聯(lián)節(jié)點P2,將串聯(lián)節(jié)點SI和葉子節(jié)點X4設置為并聯(lián)節(jié)點P2的子節(jié)點,串聯(lián)節(jié)點SI出棧,并聯(lián)節(jié)點P2進棧。
[0024]g、讀取指令“LD X5”、“LD X6”和“LD X7”,如步驟b,分別新建葉子節(jié)點X5、葉子節(jié)點X6和葉子節(jié)點X7,依次推入到棧中。
[0025]h、讀取“OR X8”指令,新建葉子節(jié)點X8,判斷此時棧頂節(jié)點類型,因為是葉子節(jié)點X7,所以要新建一個并聯(lián)節(jié)點P3,將葉子節(jié)點X7和葉子節(jié)點X8設置為并聯(lián)接點P3的子節(jié)點,葉子節(jié)點X7出棧,并聯(lián)節(jié)點P3進棧。
[0026]1、讀取“ANDLD”指令,新建串聯(lián)節(jié)點S2,將棧中的第一個節(jié)點和第二個節(jié)點設置為串聯(lián)節(jié)點S2的子節(jié)點,葉子節(jié)點X6和并聯(lián)節(jié)點P3出棧,串聯(lián)節(jié)點S2進棧。讀取“0RLD”指令,新建一個并聯(lián)節(jié)點P4,將葉子節(jié)點X5和串聯(lián)節(jié)點S2設置為并聯(lián)節(jié)點P4的子節(jié)點,葉子節(jié)點X5和串聯(lián)節(jié)點S2出棧,并聯(lián)節(jié)點P4進棧。
[0027]j、同步驟i直到讀取到OUT指令,生成輸出節(jié)點Fun#l。
[0028]k、讀取END指令,指令表讀取完畢,生成的中間樹如圖2所示。
[0029]1、遍歷中間樹,如果是關系節(jié)點,那么繼續(xù)遞歸下去,直到遍歷到葉子節(jié)點,則繪制成梯形圖的一個邏輯節(jié)點。
[0030]m、遍歷到下一個葉子節(jié)點,該葉子節(jié)點與上一個節(jié)點有一個共同的關系節(jié)點,判斷該關系節(jié)點的類型,如果是串聯(lián)節(jié)點則繪制在上一個節(jié)點的X軸方向的后面,如果是并聯(lián)節(jié)點則繪制在上一個節(jié)點Y軸方向的下面。
[0031]η、依次遍歷完中間樹的所有葉子節(jié)點,根據(jù)步驟1、步驟m將中間樹中每一個葉子節(jié)點都繪制成梯形圖中的一個邏輯節(jié)點。
[0032]O、輸出生成最終的梯形圖。
[0033]最后應當說明的是:以上實施例僅用以說明本發(fā)明的技術方案而非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細的說明,所屬領域的普通技術人員應當理解:依然可以對本發(fā)明的【具體實施方式】進行修改或者對部分技術特征進行等同替換;而不脫離本發(fā)明技術方案的精神,其均應涵蓋在本發(fā)明請求保護的技術方案范圍當中。
【權利要求】
1.一種基于發(fā)電機組控制器的PLC指令表轉(zhuǎn)梯形圖的方法,其特征在于,包括以下步驟: 步驟1:根據(jù)PLC指令表構建中間樹: 定義一個棧來保存節(jié)點,從上到下逐步翻譯PLC指令表每一行的指令; a、若是LD或LDNOT指令,新建一個葉子節(jié)點X,并將新建的葉子節(jié)點X推進棧; b、如果碰到AND或ANDNOT指令,生成一個葉子節(jié)點X,然后判斷棧頂節(jié)點的類型;如果是串聯(lián)節(jié)點,將該葉子節(jié)點X設置為棧頂節(jié)點的子節(jié)點;如果棧頂節(jié)點是葉子節(jié)點或并聯(lián)節(jié)點,則新建一個串聯(lián)節(jié)點S,將生成的葉子節(jié)點X和棧頂節(jié)點設置為新建的串聯(lián)節(jié)點S的子節(jié)點,棧頂節(jié)點出棧,新建的串聯(lián)節(jié)點S進棧; C、如果碰到OR和ORNOT指令,生成一個葉子節(jié)點X,然后判斷棧頂節(jié)點的類型;如果是并聯(lián)節(jié)點,直接將生成的葉子節(jié)點X設置為棧頂節(jié)點的子節(jié)點;如果是葉子節(jié)點或串聯(lián)節(jié)點,新建一個并聯(lián)節(jié)點P,將葉子節(jié)點X和棧頂節(jié)點設置為該并聯(lián)節(jié)點P的子節(jié)點,棧頂節(jié)點出棧,該并聯(lián)節(jié)點P進棧; d、如果碰到ANDLD指令,新建一個串聯(lián)節(jié)點S,將棧的前兩個節(jié)點出棧,并將這兩個節(jié)點設置為該串聯(lián)節(jié)點S的子節(jié)點,該串聯(lián)節(jié)點S進棧; e、如果碰到ORLD指令,新建一個并聯(lián)節(jié)點P,將棧的前兩個節(jié)點出棧,并將這兩個節(jié)點設置為該并聯(lián)節(jié)點P的子節(jié)點,該并聯(lián)節(jié)點P進棧; f、碰到OUT指令,新建輸出節(jié)點; g、碰到END指令,則結束,中間樹生成完成; 其中,所述中間樹的節(jié)點包括葉子節(jié)點X和關系節(jié)點,所述關系節(jié)點為梯形圖邏輯節(jié)點的父節(jié)點,包括串聯(lián)節(jié)點S和并聯(lián)節(jié)點P ;所述葉子節(jié)點X為梯形圖中邏輯節(jié)點開關量;每個葉子節(jié)點X必須有個關系父節(jié)點,如果關系節(jié)點的子節(jié)點為關系節(jié)點,關系子節(jié)點不能與父節(jié)點類型相同; 步驟2:遍歷中間樹: a、遍歷中間樹,如果是關系節(jié)點,那么繼續(xù)遞歸下去,直到遍歷到葉子節(jié)點X,則繪制成梯形圖的一個邏輯節(jié)點; b、遍歷到下一個葉子節(jié)點X,該葉子節(jié)點X與上一個節(jié)點有一個共同的關系節(jié)點,判斷該關系節(jié)點的類型,如果是串聯(lián)節(jié)點S則繪制在上一個節(jié)點的X軸方向的后面,如果是并聯(lián)節(jié)點P則繪制在上一個節(jié)點Y軸方向的下面; C、依次遍歷完中間樹的所有葉子節(jié)點X,根據(jù)步驟a、步驟b將中間樹中每一個葉子節(jié)點X都繪制成梯形圖中的一個邏輯節(jié)點; 步驟3:輸出步驟2中生成的梯形圖。
【文檔編號】G05B19/05GK104460489SQ201410634281
【公開日】2015年3月25日 申請日期:2014年11月12日 優(yōu)先權日:2014年11月12日
【發(fā)明者】馮斌, 朱偉燕, 劉曉東, 彭長泓, 劉霞麗 申請人:鄭州眾智科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1