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