一種基于發(fā)電機組控制器的plc梯形圖轉(zhuǎn)指令表的方法
【專利摘要】本發(fā)明提供一種基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法,包括以下步驟:步驟1:根據(jù)PLC梯形圖構(gòu)建中間樹;步驟2:遍歷中間樹;步驟3:輸出步驟2中生成的指令表。本發(fā)明方法提供了一種由PLC梯形圖的生成指令表的方法,可自動檢測錯誤和冗余,由PLC梯形圖生成中間樹結(jié)構(gòu),然后由樹結(jié)構(gòu)生成指令表。
【專利說明】—種基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種轉(zhuǎn)指令表的方法,具體的說,涉及了一種基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法。
【背景技術(shù)】
[0002]PLC的編程語言一般采用梯形圖語言(LD)、指令表語言(IL)、功能模塊語言(FBD)、順序功能流程圖語言(SFC)和結(jié)構(gòu)化文本語言(ST)五種,然而,在使用的過程中,有時候需要在梯形圖與指令表之間進行互轉(zhuǎn),但是,普通的方法在梯形圖轉(zhuǎn)指令表的過程中不能糾錯,并且還容易出現(xiàn)指令翻譯錯誤或者指令冗余。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提供了一種易于實現(xiàn),能自動檢測錯誤和冗余的基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法。
[0004]為了實現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是:一種基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法,包括以下步驟:
步驟1:根據(jù)PLC梯形圖構(gòu)建中間樹:
其中,所述中間樹的節(jié)點包括葉子節(jié)點和關(guān)系節(jié)點,所述關(guān)系節(jié)點為PLC梯形圖邏輯節(jié)點的父節(jié)點,包括串聯(lián)節(jié)點S和并聯(lián)節(jié)點P ;所述葉子節(jié)點為PLC梯形圖中邏輯節(jié)點開關(guān)量;每個葉子節(jié)點必須有個關(guān)系父節(jié)點,如果關(guān)系節(jié)點的子節(jié)點為關(guān)系節(jié)點,關(guān)系子節(jié)點不能與父節(jié)點類型相同;
步驟2:遍歷中間樹;
a、如果PLC梯形圖中只有一個葉子節(jié)點和一個輸出,判斷該葉子節(jié)點的極性,如果是常開的,生成指令“LD”,如果是常閉的,則生成“LDN0T” ;
b、如果PLC梯形圖中有多個節(jié)點:
先判斷節(jié)點是否為關(guān)系節(jié)點的第一個子節(jié)點;如果是第一個子節(jié)點,根據(jù)節(jié)點的極性,生成“LD”指令或“LDNOT”指令;如果不是,當節(jié)點的父節(jié)點是串聯(lián)節(jié)點S時,根據(jù)節(jié)點的極性,生成“AND”指令或“ANDN0T”指令,當節(jié)點的父節(jié)點是并聯(lián)節(jié)點P時,根據(jù)節(jié)點的極性,生成“0R”指令或“ ORNOT ”指令;
當一個關(guān)系節(jié)點的所有子節(jié)點都遍歷后,判斷該關(guān)系節(jié)點是否是其父節(jié)點的第一子節(jié)點,如果是第一子節(jié)點,則不生成指令,如果不是第一子節(jié)點,則根據(jù)該節(jié)點的類型,串聯(lián)節(jié)點S生成“0RLD”指令,并聯(lián)節(jié)點生成“ANDLD”指令;
若某個關(guān)系節(jié)點的子節(jié)點也是關(guān)系節(jié)點,則遞歸調(diào)用步驟b ;
步驟3:輸出步驟2中生成的指令表。
[0005]本發(fā)明相對現(xiàn)有技術(shù)具有突出的實質(zhì)性特點和顯著進步,具體的說,本發(fā)明方法提供了一種由PLC梯形圖的生成指令表的方法,可自動檢測錯誤和冗余,由PLC梯形圖生成中間樹結(jié)構(gòu),然后由中間樹生成指令表。
【專利附圖】
【附圖說明】
[0006]圖1是本發(fā)明方法擬用的PLC梯形圖。
[0007]圖2是本發(fā)明方法依據(jù)圖1生成的中間樹。
[0008]圖3是本發(fā)明方法步驟2中分步驟a的PLC梯形圖和中間樹。
【具體實施方式】
[0009]下面通過【具體實施方式】,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
[0010]如圖1所示,一種基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法,包括以下步驟:
步驟1:根據(jù)PLC梯形圖構(gòu)建中間樹:
其中,所述中間樹的節(jié)點包括葉子節(jié)點和關(guān)系節(jié)點,所述關(guān)系節(jié)點為PLC梯形圖邏輯節(jié)點的父節(jié)點,包括串聯(lián)節(jié)點S和并聯(lián)節(jié)點P ;所述葉子節(jié)點為PLC梯形圖中邏輯節(jié)點開關(guān)量;每個葉子節(jié)點必須有個關(guān)系父節(jié)點,如果關(guān)系節(jié)點的子節(jié)點為關(guān)系節(jié)點,關(guān)系子節(jié)點不能與父節(jié)點類型相同。根據(jù)圖1所示PLC梯形圖生成的中間樹如圖2所示。
[0011 ] 步驟2:遍歷中間樹;
a、如果PLC梯形圖中只有一個葉子節(jié)點和一個輸出,那對應(yīng)的中間樹如圖3所示,判斷該葉子節(jié)點的極性,如果是常開的,生成指令“LD”,如果是常閉的,則生成“LDN0T” ;圖3所示PLC梯形圖生成的指令表結(jié)果為:
LD Xl OUT Fl END ;
b、如果PLC梯形圖中有多個節(jié)點,如圖1和圖2所示:
先判斷節(jié)點是否為關(guān)系節(jié)點的第一個子節(jié)點;如果是第一個子節(jié)點,根據(jù)節(jié)點的極性,生成“LD”指令或“LDN0T”指令,如圖2中的X1、X3、X6節(jié)點;如果不是,當節(jié)點的父節(jié)點是串聯(lián)節(jié)點S時,根據(jù)節(jié)點的極性,生成“AND”指令或“ANDN0T”指令,如圖2中的X8節(jié)點,生成指令“AND X8”,當節(jié)點的父節(jié)點是并聯(lián)節(jié)點P時,根據(jù)節(jié)點的極性,生成“0R”指令或“0RN0T”指令,如圖2中的X3、X4節(jié)點,父節(jié)點為并聯(lián)節(jié)點P,而且X3節(jié)點為父節(jié)點的第一子節(jié)點,所以生成的指令為“LD X3”、“0R X4”;
當一個關(guān)系節(jié)點的所有子節(jié)點都遍歷后,判斷該關(guān)系節(jié)點是否是其父節(jié)點的第一子節(jié)點,如果是第一子節(jié)點,則不生成指令,如果不是第一子節(jié)點,則根據(jù)該節(jié)點的類型,串聯(lián)節(jié)點S生成“0RLD”指令,并聯(lián)節(jié)點生成“ANDLD”指令;如圖2所示,X2節(jié)點遍歷完后,因為X2的父節(jié)點是其父節(jié)點的第一子節(jié)點,所以不生成“AND”指令;X9節(jié)點訪問完后,其父節(jié)點不是第一子節(jié)點,所以要生成“0RLD”指令,即:
LD X6
OR X7
AND X9
ORLD ;
若某個關(guān)系節(jié)點的子節(jié)點也是關(guān)系節(jié)點,則遞歸調(diào)用步驟b。
[0012]步驟3:根據(jù)步驟2,圖1和圖2所示的PLC梯形圖和中間樹,生成的指令表如下: LD Xl
OR X2 LD X3 OR X4 AND X8 OR X5 LD X6 OR X7 AND X9 ORLD ANDLD AND XlO OUT Counterl
最終,輸出步驟2中生成的指令表。
[0013]最后應(yīng)當說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當理解:依然可以對本發(fā)明的【具體實施方式】進行修改或者對部分技術(shù)特征進行等同替換;而不脫離本發(fā)明技術(shù)方案的精神,其均應(yīng)涵蓋在本發(fā)明請求保護的技術(shù)方案范圍當中。
【權(quán)利要求】
1.一種基于發(fā)電機組控制器的PLC梯形圖轉(zhuǎn)指令表的方法,其特征在于:包括以下步驟: 步驟1:根據(jù)PLC梯形圖構(gòu)建中間樹: 其中,所述中間樹的節(jié)點包括葉子節(jié)點和關(guān)系節(jié)點,所述關(guān)系節(jié)點為PLC梯形圖邏輯節(jié)點的父節(jié)點,包括串聯(lián)節(jié)點S和并聯(lián)節(jié)點P ;所述葉子節(jié)點為PLC梯形圖中邏輯節(jié)點開關(guān)量;每個葉子節(jié)點必須有個關(guān)系父節(jié)點,如果關(guān)系節(jié)點的子節(jié)點為關(guān)系節(jié)點,關(guān)系子節(jié)點不能與父節(jié)點類型相同; 步驟2:遍歷中間樹; a、如果PLC梯形圖中只有一個葉子節(jié)點和一個輸出,判斷該葉子節(jié)點的極性,如果是常開的,生成指令“LD”,如果是常閉的,則生成“LDNOT” ; b、如果PLC梯形圖中有多個節(jié)點: 先判斷節(jié)點是否為關(guān)系節(jié)點的第一個子節(jié)點;如果是第一個子節(jié)點,根據(jù)節(jié)點的極性,生成“LD”指令或“LDNOT”指令;如果不是,當節(jié)點的父節(jié)點是串聯(lián)節(jié)點S時,根據(jù)節(jié)點的極性,生成“AND”指令或“ANDNOT”指令,當節(jié)點的父節(jié)點是并聯(lián)節(jié)點P時,根據(jù)節(jié)點的極性,生成“ 0R”指令或“ ORNOT ”指令; 當一個關(guān)系節(jié)點的所有子節(jié)點都遍歷后,判斷該關(guān)系節(jié)點是否是其父節(jié)點的第一子節(jié)點,如果是第一子節(jié)點,則不生成指令,如果不是第一子節(jié)點,則根據(jù)該節(jié)點的類型,串聯(lián)節(jié)點S生成“0RLD”指令,并聯(lián)節(jié)點生成“ANDLD”指令; 若某個關(guān)系節(jié)點的子節(jié)點也是關(guān)系節(jié)點,則遞歸調(diào)用步驟b ; 步驟3:輸出步驟2中生成的指令表。
【文檔編號】G06F9/45GK104331314SQ201410599966
【公開日】2015年2月4日 申請日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】馮斌, 王向前, 王磊, 劉蕊, 董俊麗 申請人:鄭州眾智科技股份有限公司