亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于多叉樹的梯形圖向指令表轉(zhuǎn)換算法

        2017-11-01 07:17:43周偉強(qiáng)何通能陳德富
        計算機(jī)測量與控制 2017年8期
        關(guān)鍵詞:指令

        周偉強(qiáng),何通能,陳德富

        (浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州 310023)

        基于多叉樹的梯形圖向指令表轉(zhuǎn)換算法

        周偉強(qiáng),何通能,陳德富

        (浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州 310023)

        針對目前可編程邏輯控制器(PLC)編輯軟件中梯形圖向指令表轉(zhuǎn)化算法的缺陷,通過對梯形圖語言的分析與研究,并考慮到梯形圖和指令表在實際應(yīng)用時的優(yōu)劣點,提出了一種借助多叉樹來實現(xiàn)PLC梯形圖向指令表轉(zhuǎn)換的算法;該算法采取從左至右,從上至下的掃描原則將梯形圖構(gòu)建成多叉樹,借助多叉樹來反應(yīng)圖符間的邏輯關(guān)系,然后通過后序遍歷多叉樹來得到指令表程序;此算法在處理多重串并聯(lián)結(jié)構(gòu)梯形圖時具有更高的效率,同時適用于堆棧指令,使得該算法具有更好的通用性。

        可編程邏輯控制器;梯形圖;指令表;多叉樹

        0 引言

        可編程邏輯控制器即Programmable Logic Controller(以下簡稱PLC),是一種專門為在工業(yè)環(huán)境下應(yīng)用而設(shè)計的現(xiàn)代化自動控制設(shè)備[1],廣泛應(yīng)用于各種類型的控制系統(tǒng)中,主要功能包括控制、計數(shù)、數(shù)據(jù)采集和通信聯(lián)網(wǎng)等。

        為了適應(yīng)廣大工程設(shè)計人員的編程習(xí)慣,國際電工委員會設(shè)計制定了PLC編程語言的標(biāo)準(zhǔn)——IEC 61131-3。該標(biāo)準(zhǔn)規(guī)定了PLC的編程語言包括梯形圖(LD)、指令表(IL)、功能模塊圖(FBD)、順序功能流程圖(SFC)和結(jié)構(gòu)化文本(ST)共五種。其中主要由母線、觸點和線圈等構(gòu)成的梯形圖簡明易懂,使用梯形圖編寫的PLC程序易于理解,從而使梯形圖成為PLC的主要編程語言[2]。但是,梯形圖只是形象得展示了電器元件之間的組合邏輯關(guān)系,無法被PLC識別并直接運行,而PLC所能識別運行的目標(biāo)代碼一般由指令表轉(zhuǎn)化而來。因此通過轉(zhuǎn)換算法將梯形圖轉(zhuǎn)換為指令表,并將其運用在PLC上位開發(fā)系統(tǒng)中,這樣就省去了人工對梯形圖的翻譯工作,提高了開發(fā)的效率。

        通過對梯形圖設(shè)計規(guī)則和指令表編程規(guī)則進(jìn)行的研究分析,并參考了傳統(tǒng)的拓?fù)渑判蚝投鏄浔闅v等一系列算法的不足之后,提出了基于多叉樹的梯形圖向指令表轉(zhuǎn)換的算法。

        1 梯形圖和指令表

        梯形圖是以觸點符號代替?zhèn)鹘y(tǒng)電氣控制回路中的按鈕開關(guān)、接觸器、繼電器觸點等部件的一種編程語言,是目前使用最多的一種PLC編程語言。其設(shè)計與編寫梯形圖語言時應(yīng)注意以下規(guī)則:1)繼電器的觸點應(yīng)畫在橫線上,不可以畫在豎線上,繪制梯形圖時應(yīng)依照從左至右、從上至下的原則;2)沒有觸點的線路應(yīng)置于垂直方向,不能置于水平方向,這樣有利于分辨觸點的邏輯組合以及邏輯結(jié)果;3)依照左重右輕、上重下輕的原則,即出現(xiàn)若干串聯(lián)模塊并聯(lián)時應(yīng)將觸點最多的那條線路放在梯形圖的上方,而當(dāng)若干并聯(lián)模塊串聯(lián)時應(yīng)將觸點最多的那個并聯(lián)模塊放在梯形圖的左邊;4)線圈放在梯形圖的最右邊,觸點必須放在線圈的左邊[3]。

        指令表也稱為語句表,是一種助記符表達(dá)式,與匯編語言中的指令類似。它將一系列操作指令(助記符)組成的控制流程,通過編程器存入PLC中[4]。指令表的每條指令是由操作碼和操作數(shù)兩部分組成的,操作碼是指令的助記符,操作數(shù)是功能指令所作用的數(shù)據(jù),包括繼電器編號、定時器/計數(shù)器配置值和常數(shù)等。雖然梯形圖的優(yōu)點是形象、直觀、實用,為廣大電氣技術(shù)人員所接受,但是難以將其直接轉(zhuǎn)化為PLC能直接運行的代碼,而指令表可以直接編譯為PLC的可執(zhí)行代碼。在PLC軟件的開發(fā)過程中,實現(xiàn)梯形圖向指令表的轉(zhuǎn)換是必不可少的一部分,使得PLC軟件可以在最后通過對指令表的編譯或解釋執(zhí)行來實現(xiàn)PLC控制程序的運行[5]。

        目前已有一些文獻(xiàn)給出了梯形圖向指令表轉(zhuǎn)換的算法,如文獻(xiàn)[6]中先將梯形圖映射為AOV圖運用了拓?fù)渑判蛩惴?。該算法的?yōu)點是有良好的算法效率,時間復(fù)雜度為O(n+e),其中n表示AOV網(wǎng)頂點的個數(shù),e表示弧的個數(shù),但是該算法過于依賴梯形圖本身的圖符含義,當(dāng)梯形圖的串并聯(lián)關(guān)系較為復(fù)雜時轉(zhuǎn)化不穩(wěn)定,且存在誤判的可能,通用性較差。文獻(xiàn)[7]和文獻(xiàn)[8]提出了基于AOV網(wǎng)及二叉樹的轉(zhuǎn)換算法,該算法在處理串并聯(lián)結(jié)構(gòu)復(fù)雜的梯形圖時,借助二叉樹建立了過多的邏輯節(jié)點,占用了過多的空間,使得算法的遍歷效率也因此下降,同時該算法不適用于存在堆棧指令的梯形圖程序。文獻(xiàn)[9]中雖然借助串并聯(lián)歸并清晰地表示了梯形圖的層次,但并沒有提高遍歷的效率。

        通過研究傳統(tǒng)轉(zhuǎn)換算法的缺陷與不足,從而提出了一種基于多叉樹的梯形圖向指令表轉(zhuǎn)換的算法,從左至右,從上至下掃描梯形圖,將梯形圖各元件之間的邏輯關(guān)系轉(zhuǎn)換為多叉樹數(shù)結(jié)構(gòu),然后對多叉樹進(jìn)行后序遍歷得到指令表。該算法在多重串并聯(lián)梯形圖程序中,與使用二叉樹結(jié)構(gòu)相比,有效得減少了邏輯節(jié)點的個數(shù),從而提升了算法效率,同時也適用于具有堆棧指令的梯形圖程序,使得該轉(zhuǎn)換算法具有更好的通用性,且不會出現(xiàn)傳統(tǒng)拓?fù)渑判蛩惴ㄖ写⒙?lián)誤判的情況。

        2 多叉樹

        樹是一些節(jié)點(node)的集合。這個集合可以是空集;若不是空集,則樹由稱做根(root)的節(jié)點r以及0或多個非空的(子)樹T1,T2,…,Tk組成,這些子樹中每一棵的根都被來自根r的一條有向的邊(edge)所連接。當(dāng)樹的每個節(jié)點最多只有兩棵子樹時,稱為二叉樹,而任一節(jié)點的子樹多于兩棵時,稱為多叉樹。

        實現(xiàn)樹的一種方法是在每一個節(jié)點除數(shù)據(jù)外還要有一些鏈,使得該節(jié)點的每一個兒子都被一個鏈所鏈接。然而,由于每個節(jié)點的兒子樹可以變化很大并且事先不知道,因此在數(shù)據(jù)結(jié)構(gòu)中建立到各子節(jié)點的直接鏈接是不可行的,因為這樣會產(chǎn)生太多浪費的空間。解決方法為將每個節(jié)點的所有兒子都放在樹節(jié)點的鏈表中,一般的多叉樹數(shù)據(jù)結(jié)構(gòu)如下:

        struct TreeNode

        {

        Int NodeType; //多叉樹節(jié)點的基本信息

        TreeNode *firstChild; //指向兒子的指針

        TreeNode *nextSibling; //指向兄弟的指針

        }

        通過對PLC梯形圖程序編寫原則的分析可得,用梯形圖編程的過程實質(zhì)上就是利用梯形圖圖符來表示功能元件,借助圖符間的連接方式來表示功能元件之間的串并聯(lián)結(jié)構(gòu)及邏輯關(guān)系[10]。考慮到梯形圖的圖符元件代表著指令表中的功能指令,因此將PLC的梯形圖程序轉(zhuǎn)化為指令表程序一定是有規(guī)律可循的。

        通過研究發(fā)現(xiàn)梯形圖中每個梯級的圖符之間的串并聯(lián)關(guān)系是一種層次結(jié)構(gòu),而這種層次結(jié)構(gòu)可以用數(shù)據(jù)結(jié)構(gòu)中的樹來表達(dá),而且借助多叉樹表達(dá)一個梯級中圖符之間的邏輯關(guān)系之后,那么整個梯形圖就是多個樹的集合,也就是森林。而掃描梯形圖,就是一個構(gòu)建樹和森林的過程。樹由一個根節(jié)點和若干棵子樹構(gòu)成,這若干根子樹中每一棵都有一個根節(jié)點和它自己的子樹。這里用樹的葉節(jié)點代表具體的元件,而用非葉節(jié)點表示其左右子樹的邏輯結(jié)合方式[11]。

        3 由梯形圖建立多叉樹算法的主要步驟

        在梯形圖向指令表轉(zhuǎn)換的過程中,通過梯形圖建立多叉樹是最為關(guān)鍵的一部分[12]。構(gòu)造多叉樹以先左后右,先上后下為原則對每一行梯形圖進(jìn)行遍歷,當(dāng)掃描完一個節(jié)點后若沒有發(fā)現(xiàn)豎線就一直向右掃描,若掃描到豎線記錄其位置且處理完并聯(lián)節(jié)點后繼續(xù)向右掃描,直到掃描到最后一個節(jié)點為止。

        3.1 算法的主要步驟

        S1:自左向右進(jìn)行遍歷,每掃描到一條豎線就記下該豎線的位置以及之前遍歷的節(jié)點,記錄此時遍歷的節(jié)點數(shù)目,新建一個“與”節(jié)點(若此前只遍歷了1個節(jié)點則新建一個“或”節(jié)點),將之前遍歷的節(jié)點作為該“與”節(jié)點的子節(jié)點,這些子節(jié)點自左向右的排列順序必須與遍歷的順序一致。若該“與”節(jié)點不是所在行最后的節(jié)點,則將該新建的“與”節(jié)點視為后續(xù)節(jié)點的子節(jié)點,從而繼續(xù)構(gòu)造多叉樹,然后轉(zhuǎn)S2處理豎線;若該“與”節(jié)點是所在行最后的節(jié)點,則判斷是否還有記錄的豎線未處理,若無則終止算法,若有則說明出現(xiàn)了多重輸出的情況,轉(zhuǎn)S8。

        S2:當(dāng)掃描到豎線時,用標(biāo)志位記錄該列豎線的數(shù)量(豎線的數(shù)量即為豎線所占的行數(shù))。根據(jù)豎線位置,以先右后左的原則進(jìn)行遍歷。從豎線的位置(即豎線所在的坐標(biāo))開始向左掃描,判斷是否存在節(jié)點,若有則轉(zhuǎn)S3,否則轉(zhuǎn)S6。

        S3:新建一個“或”節(jié)點(該節(jié)點為上一個節(jié)點的父節(jié)點,即上一行梯形圖所構(gòu)建的子樹的根節(jié)點)并繼續(xù)向左掃描,當(dāng)掃描到豎線時,判斷該豎線是向上還是向下,若為向上的豎線,則轉(zhuǎn)S4,否則轉(zhuǎn)S5。

        S4:根據(jù)該行遍歷的節(jié)點數(shù)目,類比步驟S1的方式建立“與”節(jié)點,且該“與”節(jié)點作為之前“或”節(jié)點的子節(jié)點,然后轉(zhuǎn)S1繼續(xù)向右掃描。

        S5:記錄該豎線的位置,轉(zhuǎn)S7。

        S6:此時由于豎線的左邊沒有節(jié)點,表明豎線的右邊存在元件,新建一個“與”節(jié)點,并將該節(jié)點作為已經(jīng)構(gòu)建完成的多叉樹的根節(jié)點,記錄該豎線的位置,返回該豎線的上一行轉(zhuǎn)S1開始繼續(xù)向右掃描(將已經(jīng)構(gòu)建的多叉樹的根節(jié)點作為后續(xù)“與”節(jié)點的子節(jié)點)。

        S7:當(dāng)豎線標(biāo)志位的值(即該列豎線的數(shù)量)大于等于1時,將該標(biāo)志位減1,并將掃描的初始位置放至下一行,并轉(zhuǎn)S3;若標(biāo)志位的值等于0時,表明該并聯(lián)塊已經(jīng)處理完畢,根據(jù)記錄的豎線位置,轉(zhuǎn)S1開始繼續(xù)向右掃描(將已經(jīng)構(gòu)建的多叉樹的根節(jié)點作為后續(xù)“與”節(jié)點的子節(jié)點)。

        S8:判斷該豎線所占的行數(shù),添加堆棧節(jié)點并逐行掃描轉(zhuǎn)換節(jié)點,直至結(jié)束。

        注意:

        1) 在構(gòu)建多叉樹時,若是從左至右掃描,兄弟節(jié)點則按照掃描的順序從左至右依次排列;若是從右至左掃描,兄弟節(jié)點則是從右至左依次排列。

        2) 當(dāng)出現(xiàn)豎線嵌套時,類比堆棧的原則,優(yōu)先處理后掃描到的豎線所在的行,之后處理先掃描到的豎線所在的行。

        3) 當(dāng)父節(jié)點與子節(jié)點為同一種邏輯節(jié)點(即“與”節(jié)點和“或”節(jié)點)時,則刪去該邏輯子節(jié)點,并直接將被刪去的邏輯子節(jié)點的相應(yīng)葉節(jié)點作為邏輯父節(jié)點的子節(jié)點。

        4)S8中,在第一行豎線起始位置添加進(jìn)棧指令(MPS),中間行(行數(shù)小于3則不添加讀棧指令)起始位置添加讀棧指令(MPD),最后一行起始位置設(shè)置出棧指令(MPP)。

        通過以上方法就完成了梯形圖向多叉樹的結(jié)構(gòu)轉(zhuǎn)換,而構(gòu)建完成的多叉樹主要反映了梯形圖圖符間的串并聯(lián)關(guān)系,要得到指令表還需進(jìn)一步轉(zhuǎn)化。其中該多叉樹的葉子節(jié)點必定是圖符元件,而邏輯節(jié)點必定都是非葉節(jié)點。

        3.2 多叉樹轉(zhuǎn)化為指令表

        經(jīng)過掃描和錯誤檢查后,對構(gòu)建完成的多叉樹進(jìn)行遍歷即可將梯形圖轉(zhuǎn)化為指令表。根據(jù)構(gòu)造多叉樹時圖符元件與邏輯節(jié)點之間的位置關(guān)系可以得到,應(yīng)該對多叉樹采取后序遍歷的方式。即先遍歷左子樹,然后依次遍歷右子樹,最后遍歷根節(jié)點。但是在遍歷完成后需要考慮到堆棧指令的問題,即出現(xiàn)多重輸出指令時,需要自動識別并添加堆棧指令MPS與MPP。

        直接對多叉樹進(jìn)行后序遍歷得到原始指令表只是表明了圖符間的邏輯結(jié)構(gòu),但不符合指令表語言的編程規(guī)范,需要在遍歷時添加判斷條件,從而得到最終可以直接轉(zhuǎn)換為十六進(jìn)制目標(biāo)代碼的指令表程序,具體轉(zhuǎn)換原則見第4章。

        4 基于多叉樹的梯形圖向指令表轉(zhuǎn)換的實例

        如圖1所示為一個梯形圖程序,該程序中包含了多重串、并聯(lián)的關(guān)系,且由于是多重輸出(即包含了Y0和Y1),因此需要使用堆棧指令進(jìn)行入棧出棧的操作(傳統(tǒng)借助AOV圖進(jìn)行拓?fù)渑判蚧蛘咿D(zhuǎn)化為二叉樹的算法不能適用)。

        圖1 梯形圖程序

        根據(jù)第3章中說明的算法,從母線開始向右掃描,當(dāng)掃描到常開觸點X0右邊的豎線時,建立一個“或”節(jié)點,用符號“+”表示,并將節(jié)點“X0”作為該“或”節(jié)點的左子節(jié)點。由于掃描到的豎線占據(jù)兩行,因此本該新建一個“或”節(jié)點作為節(jié)點“X0”的兄弟節(jié)點,但由于父節(jié)點也為“或”節(jié)點,因此省略,接著依次掃描X1和X2建立元件節(jié)點并將其作為“或”節(jié)點的子節(jié)點。如圖2所示即為X0、X1和X2所構(gòu)成的第一個并聯(lián)塊所構(gòu)建的多叉樹。

        圖2 并聯(lián)塊X0X1X2構(gòu)建的多叉樹

        建立完圖2所示多叉樹后,繼續(xù)回到主線路向右掃描直至常開觸點X4右邊的豎線,此時新建一個“與”節(jié)點,用“*”表示,將之前由X0、X1和X2構(gòu)建的多叉樹作為該“與”節(jié)點的左子樹,之后建立元件節(jié)點“X3”和“X4”并分別將其作為該“與”節(jié)點的子節(jié)點。

        然后開始處理豎線,先建立一個“或”節(jié)點,并將之前構(gòu)建好的多叉樹作為該“或”節(jié)點的左子樹,然后掃描X5、X6和X7所在的行,當(dāng)掃描到向上的豎線時,該行的掃描結(jié)束。根據(jù)掃描結(jié)果新建一個“與”節(jié)點,將其作為處理豎線時新建的“或”節(jié)點的右子節(jié)點,然后將元件節(jié)點“X5”、“X6”和“X7”依次從左至右作為該“與”節(jié)點的子節(jié)點。如圖3所示即為并聯(lián)塊X0X1X2、串聯(lián)塊X3X4以及串聯(lián)塊X5X6X7共同構(gòu)建的多叉樹。

        圖3 并聯(lián)塊X0X1X2、串聯(lián)塊X3X4和串聯(lián)塊X5X6X7構(gòu)建的多叉樹

        回到主線路繼續(xù)向右掃描,當(dāng)掃描至常開觸點X10右邊的豎線時,新建一個“與”節(jié)點,將之前構(gòu)建的多叉樹作為該“與”節(jié)點的左子樹,同時將元件節(jié)點“X10”作為該“與”節(jié)點的右子節(jié)點。接著開始處理豎線,發(fā)現(xiàn)豎線左邊沒有元件,記錄該豎線位置后返回主線路繼續(xù)向右掃描直至Y0,此時發(fā)現(xiàn)Y0的右邊沒有豎線,表明出現(xiàn)了堆棧指令。因此新建進(jìn)棧指令節(jié)點“MPS”,元件節(jié)點“X11”以及輸出節(jié)點“Y0”,依次從左至右排列作為之前“與”節(jié)點的子節(jié)點。最后處理下一行,即新建出棧指令節(jié)點“MPP”,元件節(jié)點“X12”和輸出節(jié)點“Y1”。最終遍歷圖1梯形圖構(gòu)建的多叉樹如圖4所示。

        圖4 遍歷梯形圖構(gòu)建的多叉樹

        將梯形圖轉(zhuǎn)化為多叉樹之后,如果直接對圖4的多叉樹進(jìn)行后續(xù)遍歷而不加以區(qū)分的話,則會得到如下所示的原始指令表程序:

        LD X0

        LD X1

        LD X2

        OR

        LD X3

        LD X4

        AND

        LD X5

        LD X6

        LD X7

        AND

        OR

        LD X10

        MPS

        LD X11

        OUT Y0

        MPP

        LD X12

        OUT Y1

        AND

        該原始指令表程序雖然清晰的反應(yīng)了圖符間的邏輯結(jié)構(gòu),但是不符合指令表語言的編程規(guī)范,因此在后序遍歷時加入判斷條件,從而得到符合指令表語言編程規(guī)范的程序。具體的判斷原則的如下所示:

        1)若為觸點元件,且為父節(jié)點的第一個子節(jié)點,則其生成指令的操作碼為LD(若為常閉觸點則為LDI);

        2)若為觸點元件,且不為父節(jié)點的第一個子節(jié)點,則其生成指令的操作碼與父節(jié)點的邏輯類型相同,即父節(jié)點為“與”節(jié)點則為AND,父節(jié)點為“或”節(jié)點則為OR(若為常閉觸點則分別為ANI或ORI);

        3)若為邏輯節(jié)點,且為父節(jié)點的第一個子節(jié)點,則不生成指令(若沒有父節(jié)點,即為根節(jié)點時也不生成指令);

        4)若為邏輯節(jié)點,且不為父節(jié)點的第一個子節(jié)點,則其生成指令的操作碼與父節(jié)點的邏輯類型相同,即父節(jié)點為“與”節(jié)點則為ANB,父節(jié)點為“或”節(jié)點則為ORB。

        根據(jù)以上原則對圖4多叉樹進(jìn)行后序遍歷得到的符合編程規(guī)范的最終指令表如下所示:

        LD X0

        OR X1

        OR X2

        AND X3

        AND X4

        LD X5

        AND X6

        AND X7

        ORB

        AND X10

        MPS

        AND X11

        OUT Y0

        MPP

        AND X12

        OUT Y1

        5 結(jié)束語

        研究分析了梯形圖節(jié)點元件互相之間的邏輯關(guān)系,借助多叉樹特殊的數(shù)據(jù)結(jié)構(gòu)來反應(yīng)圖符之間的邏輯關(guān)系并完成梯形圖向指令表的轉(zhuǎn)換。在自主開發(fā)的梯形圖編譯軟件上成功應(yīng)用了該梯形圖向指令表轉(zhuǎn)換的算法,表明其能夠正確地將用戶的梯形圖程序轉(zhuǎn)換為指令表程序。該算法可用于邏輯復(fù)雜梯形圖向指令表的轉(zhuǎn)換,即使出現(xiàn)堆棧指令也能同樣適用,且梯形圖的掃描過程不重復(fù)、不遺漏。構(gòu)建完多叉樹之后的遍歷過程相較遍歷二叉樹等也更為高效。

        [1] 李金城. 三菱FX2NPLC功能指令應(yīng)用詳解[M]. 北京:電子工業(yè)出版社, 2011.

        [2] 呂俊白, 施敏芳. PLC梯形圖可視化編輯與語句表的自動生成[J]. 自動化儀表, 2005, 26(3): 28-30.

        [3] 韓雪濤, 韓廣興. 雙色圖解PLC梯形圖及語句表[M]. 北京:人民郵電出版社, 2012.

        [4] 陽俊將, 黃道平, 劉少君. 關(guān)于PLC梯形圖到指令表轉(zhuǎn)換算法的研究[J]. 信息技術(shù), 2012, (6): 75-78.

        [5] 未慶超, 蔡啟仲. 基于ARM的PLC編譯系統(tǒng)設(shè)計[J]. 計算機(jī)測量與控制, 2014, 22(4): 1225-1229.

        [6] 崔小樂, 周卓岑. 可編程控制器的梯形圖語言與語句表語言的互換算法[J]. 微電子學(xué)與計算機(jī), 2000(1): 26-30.

        [7] 葛 芬, 吳 寧. 基于AOV圖及二叉樹的梯形圖與指令表互換算法[J]. 南京航空航天大學(xué)學(xué)報, 2006, 38(6): 754-758.

        [8] 黃晶晶, 陳文薌. 基于二叉樹的PLC梯形圖轉(zhuǎn)化為指令表的算法[J]. 現(xiàn)代電子技術(shù), 2010(4): 125-134.

        [9] 傅 亮, 胡飛虎. 基于串并聯(lián)歸并的PLC梯形圖向指令表轉(zhuǎn)換算法[J]. 計算機(jī)工程與應(yīng)用, 2009, 45(27): 72-118.

        [10] 莫易敏, 章德平. PLC梯形圖轉(zhuǎn)化為指令表算法及實現(xiàn)[J]. 控制工程, 2006, 13(6): 573-576.

        [11] 石 銳, 周 雷, 楊正益. 軟PLC梯形圖到語句表轉(zhuǎn)換新策略的研究[J]. 計算機(jī)工程與應(yīng)用, 2010, 46(18): 244-248.

        [12] 譚錦潔, 程良鴻, 殷學(xué)鵬. 嵌入式PLC中梯形圖到AOV圖的映射[J]. 計算機(jī)測量與控制, 2004, 12(10): 993-1004.

        Transformation Algorithm from Ladder Diagram to Instruction List Based on Multi-tree

        Zhou Weiqiang, He Tongneng, Chen Defu

        (College of Information and Engineering, Zhejiang University of Technology, Hangzhou 310023, China)

        Aiming at the shortcomings of the transformation algorithm from ladder diagram to instruction list in the current programmable logic controller(PLC) editing software, this paper presents an algorithm to realize the transformation from PLC ladder diagram to instruction list based on multi-tree. Through the analysis and research of ladder diagram, shows the advantages and disadvantages of the ladder diagram and instruction list in practical application. The multi-tree data structure is created following the scanning principle that from left to right, from top to bottom. And the multi-tree is used to reflect the logical relationship between the diagrams. Then get the instruction list by post-traversing the multi-tree.This algorithm has higher efficiency when dealing with the ladder diagram which has multiple series-parallel structures. And it is also suitable for the stack instruction, which makes the algorithm more versatile.

        programmable logic controller; ladder diagram; instruction list; multi-tree

        2017-02-18;

        2017-03-05。

        周偉強(qiáng)(1990-),男,浙江海寧人,碩士研究生,主要從事控制科學(xué)嵌入式方向的研究。

        1671-4598(2017)08-0191-04

        10.16526/j.cnki.11-4762/tp.2017.08.049

        TP273

        A

        猜你喜歡
        指令
        聽我指令:大催眠術(shù)
        ARINC661顯控指令快速驗證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        殺毒軟件中指令虛擬機(jī)的脆弱性分析
        巧用G10指令實現(xiàn)橢圓輪廓零件倒圓角
        中斷與跳轉(zhuǎn)操作對指令串的影響
        科技傳播(2015年20期)2015-03-25 08:20:30
        基于匯編指令分布的惡意代碼檢測算法研究
        一種基于滑窗的余度指令判別算法
        歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
        家電科技(2014年5期)2014-04-16 03:11:28
        MAC指令推動制冷劑行業(yè)發(fā)展
        汽車零部件(2014年2期)2014-03-11 17:46:27
        亚洲中文字幕巨乳人妻 | 一本久道综合色婷婷五月| 成人黄色片久久久大全| 亚洲女人毛茸茸粉红大阴户传播| 在线成人爽a毛片免费软件| 精品国产高清a毛片无毒不卡| 国产精品一区二区午夜久久| 亚洲不卡av一区二区三区四区| 玩弄放荡人妇系列av在线网站| 国产精品卡一卡二卡三| 欧美亚洲尤物久久综合精品| 一本色道久久88加勒比综合 | 久久综合另类激情人妖| 欧美黑寡妇特a级做爰| 国产精品女同一区二区| 中文字幕在线观看国产双飞高清 | 成人免费视频自偷自拍| 国产黑色丝袜在线看片| 亚洲欧美国产国产综合一区| 欧美日韩亚洲色图| 青青草在线成人免费视频| 东北女人啪啪对白| 人妻av中文字幕无码专区| 伊香蕉大综综综合久久| 亚洲一区二区三区18| 色综合久久久无码中文字幕| 久久久久久久无码高潮| 国产精品亚洲美女av网站| 久久精品日本不卡91| 免费中文熟妇在线影片| 国产美女一级做a爱视频| 精品久久中文字幕一区 | 国产中文字幕一区二区视频| 欧美性猛交xxxx免费看蜜桃| 久久人人97超碰超国产| 蜜桃网站在线免费观看视频| 91精品国产综合久久熟女| 欧美黑人又粗又硬xxxxx喷水| 国内精品福利在线视频| 亚洲av产在线精品亚洲第三站 | 亚洲综合一|