樊宏+劉賀
摘 要:PLC的編程標(biāo)準(zhǔn)包括5種PLC編程語(yǔ)言:梯形圖、功能塊圖,順序功能圖,結(jié)構(gòu)文本和指令表。其中梯形圖和指令表最為簡(jiǎn)單易用,應(yīng)用的范圍最為廣泛,并且其中梯形圖和工控圖比較相近,更加形象直觀,對(duì)于熟悉繼電器表示方式的編程人員來(lái)講,更加容易被接受,并且不需要特別深入的計(jì)算機(jī)知識(shí)作為基礎(chǔ)。
關(guān)鍵詞:PLC;PLC編譯功能實(shí)現(xiàn)
1.指令表和梯形圖的關(guān)系分析
指令表和梯形圖是PLC的兩種常用的編程語(yǔ)言,在PLC邏輯實(shí)現(xiàn)上是等效的。
1.1基本指令語(yǔ)言的分析
指令語(yǔ)言包括兩個(gè)部分:指令語(yǔ)句和操作數(shù)。以RD R0.1為例:其中RD指令語(yǔ)言的基本指令,后面的R0.1中的R表示的是信號(hào)的地址,表示不同的信號(hào)種類。0.1中的0表示的是地址號(hào),小數(shù)點(diǎn)后面的1表示的是位號(hào)。
1.2 梯形圖的分析
梯形圖因其形狀類似梯子而得名。典型的梯形圖由電力軌、中間部分的元件觸點(diǎn)橫線和豎線,還有功能塊組成。左右兩邊的兩條豎線稱為電力軌。對(duì)于某些帶有輸出的若干行,它們與這個(gè)整體和其他行沒(méi)有豎線鏈接,稱之為一個(gè)梯級(jí)。每個(gè)梯級(jí)又由一行或者由豎行鏈接的若干行構(gòu)成。梯形圖由元件觸點(diǎn)、橫線、線圈(或繼電器線圈)、功能塊(功能指令)等構(gòu)成。
1.3 梯形圖和指令語(yǔ)言的外在聯(lián)系
通過(guò)以上對(duì)梯形圖和指令語(yǔ)言的分析介紹中可以看出指令語(yǔ)言和梯形圖有一定的外在關(guān)系。不考慮邏輯部分的關(guān)系,可以得出,梯形圖和指令語(yǔ)言的信號(hào)地址,位號(hào)表示形式上是一致的。
2.梯形圖和指令語(yǔ)言的內(nèi)部邏輯關(guān)系
梯形圖和指令語(yǔ)言之間最大的區(qū)別主要表現(xiàn)在邏輯的表示形式上。梯形圖和指令語(yǔ)言都是PLC的編程語(yǔ)言,在PLC程序?qū)崿F(xiàn)的邏輯關(guān)系上是等同的,而任何邏輯關(guān)系都可以用一定的數(shù)據(jù)結(jié)構(gòu)形式描述。因此可以對(duì)他們的邏輯關(guān)系進(jìn)行分析,找到一個(gè)合適的數(shù)據(jù)結(jié)構(gòu)將梯形圖和指令語(yǔ)言聯(lián)系在一起,實(shí)現(xiàn)兩種編程語(yǔ)言的互譯。
2.1 指令語(yǔ)言的指令分析
在進(jìn)行梯形圖向指令語(yǔ)言轉(zhuǎn)化前,必須要對(duì)指令語(yǔ)言的有一定的了解,PLC的基本指令一共有14個(gè),這些基本指令都對(duì)應(yīng)著一定的邏輯關(guān)系?;局噶钍窃谠O(shè)計(jì)順序程序時(shí)最常用的指令,它們執(zhí)行一位的運(yùn)算。功能指令也和基本指令的表示形式類似,也是由指令和操作數(shù)構(gòu)成的。只不過(guò)操作數(shù)的個(gè)數(shù)和基本指令種類的操作數(shù)有一定的差別而已。
2.2 梯形圖內(nèi)部邏輯關(guān)系的描述
任何梯形圖都是由若干梯級(jí)組成的,梯階是梯形圖表達(dá)含義的最小單元,是梯形圖不可分割的組成部分,就像英文單詞與英文語(yǔ)句的關(guān)系一樣。梯形圖的元件和功能塊就像英文的26個(gè)字母,是組成梯級(jí)的最小單位。所以梯級(jí)邏輯的分析是梯形圖邏輯分析的關(guān)鍵,只要把任意形式的梯級(jí)的邏輯關(guān)系解決也就是解決了整個(gè)梯形圖的邏輯關(guān)系。在梯級(jí)中,梯形圖元件和各個(gè)元件之間的關(guān)系是梯級(jí)中最基本的關(guān)系。要分析清楚梯形圖,必須要對(duì)梯級(jí)中的元件的邏輯關(guān)系進(jìn)行研究。
2.3 基本元件之間的邏輯關(guān)系分析
梯形圖元件之間的邏輯關(guān)系主要可以分為兩部分,串聯(lián)和并聯(lián)。簡(jiǎn)單的說(shuō)存在橫線連接的部分為串聯(lián),豎線連接的部分為并聯(lián)。任何梯形圖都是由最基本的串并聯(lián)嵌套構(gòu)成的。因此梯形圖梯級(jí)內(nèi)部元件的串并、聯(lián)關(guān)系的處理是梯形圖向指令語(yǔ)言轉(zhuǎn)化編譯實(shí)現(xiàn)的關(guān)鍵。
2.4 功能塊邏輯關(guān)系的處理
功能塊本身是一個(gè)整體,在處理的時(shí)候,可以作為一個(gè)整體來(lái)進(jìn)行邏輯分析處理。梯形圖單元格的數(shù)據(jù)類型,功能塊的基本信息都存在1這個(gè)位置的單元格內(nèi)。以圖2.1為例,MOVE功能塊的m Kind值,功能塊的參數(shù)全部存在1這個(gè)位置,其他的15個(gè)格全部賦值為120是為了和空白單元格相區(qū)別和便于后期的邏輯處理。由于其他位置的單元格數(shù)據(jù)結(jié)構(gòu)有一定的空閑,可以將1這個(gè)信息存儲(chǔ)單元格的位置的坐標(biāo)存儲(chǔ)在其他單元格內(nèi)的空閑的數(shù)據(jù)結(jié)構(gòu)中。這樣,處理其他單元格的時(shí)候.就會(huì)對(duì)應(yīng)到相應(yīng)的功能塊的類型和參數(shù)的存儲(chǔ)單元,從而得到梯形圖功能塊的類型和參數(shù)信息,隨后即可對(duì)功能塊進(jìn)行進(jìn)一步的操作。
3.編譯模塊的實(shí)現(xiàn)
編譯器是軟件PLC的核心部分,PLC硬件部分不能夠識(shí)別梯形圖,因此需要將梯形圖轉(zhuǎn)化為硬件能夠識(shí)別的機(jī)器語(yǔ)言。PLC的指令語(yǔ)言和硬件識(shí)別的機(jī)器語(yǔ)言有一定的共性,因此將梯形圖轉(zhuǎn)化為指令語(yǔ)言,然后將指令語(yǔ)言轉(zhuǎn)化為機(jī)器識(shí)別的計(jì)算機(jī)語(yǔ)言是編譯過(guò)程的關(guān)鍵。其中梯形圖轉(zhuǎn)為指令語(yǔ)言是這一部分的重點(diǎn)。
3.1 梯級(jí)中行的分類
每一個(gè)梯級(jí)實(shí)際上由若干行組成的,現(xiàn)在將梯級(jí)內(nèi)的不同形式的行進(jìn)行分類,共分為4類:
1.該行存在輸出,并且與上一行之間不存在豎線(既并聯(lián)關(guān)系):
2.該行存在輸出,并且與上一行之間存在一個(gè)豎線:
3.該行存在輸出,并且與上一行之間存在多個(gè)豎線;
4.該行沒(méi)有輸出。
3.2 編譯模塊的實(shí)現(xiàn)
規(guī)范的梯形圖的邏輯關(guān)系都對(duì)應(yīng)著一種數(shù)據(jù)結(jié)構(gòu)。若要得到PLC梯形圖的相應(yīng)的指令語(yǔ)言,就要找到和梯形圖對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),并對(duì)這種數(shù)據(jù)結(jié)構(gòu)進(jìn)行遍歷。對(duì)串并聯(lián)邏輯的插入與否的判斷和對(duì)數(shù)據(jù)表進(jìn)行整理,將邏輯情況逐個(gè)壓入鏈表中,最終就實(shí)現(xiàn)了梯級(jí)的邏輯關(guān)系的轉(zhuǎn)化的過(guò)程。并且在這個(gè)過(guò)程中,對(duì)每一個(gè)元件進(jìn)行判斷,梯形圖在轉(zhuǎn)化成指令語(yǔ)言的同時(shí)可以對(duì)梯形圖進(jìn)行檢錯(cuò)。
3.3功能塊指令譯碼的實(shí)現(xiàn)
功能塊雖然占據(jù)了若干的存儲(chǔ)單元,但是功能塊內(nèi)的參數(shù)信息都存在第一個(gè)單元的數(shù)據(jù)結(jié)構(gòu)內(nèi)。功能塊其他位置的類型設(shè)置的值為120,并存儲(chǔ)了第一個(gè)單元格的位置坐標(biāo)。功能塊在譯碼的實(shí)現(xiàn)部分也采用類似的方法,將功能塊看成一個(gè)整體。在處理的時(shí)候,首先對(duì)功能塊進(jìn)行分類,分為單輸入和多輸入兩種類型。在處理的過(guò)程中,考慮到程序的緊湊和代碼實(shí)現(xiàn)的效率,將功能塊的邏輯轉(zhuǎn)化與基本元件的譯碼整合在一個(gè)函數(shù)內(nèi)。
單輸入類型的處理:MOVE指令就是典型的單輸入類型,在處理的過(guò)程中,第一行的類型就是1,處理的過(guò)程也加入到1的流程中。在判斷元件的時(shí)候,就將整個(gè)功能塊的信息轉(zhuǎn)化為指令語(yǔ)言。后面幾行就是處理簡(jiǎn)單的串并聯(lián)關(guān)系,遇到120類型的,做空格處理。圖3.1就是MOVE指令的譯碼實(shí)現(xiàn)的實(shí)例。
結(jié)論
梯形圖向指令語(yǔ)言的譯碼過(guò)程是上位機(jī)軟件的核心部分,本文分析了梯形圖的邏輯關(guān)系歸納為串聯(lián)和并聯(lián)這兩種邏輯關(guān)系形式,介紹了編譯模塊的實(shí)現(xiàn)過(guò)程,對(duì)PLC的發(fā)展有一定的意義。
參考文獻(xiàn)
[1] 王念春,趙陽(yáng),史國(guó)生等,電氣控制與可編程控制器技術(shù)(第三版),北京:化學(xué)工業(yè)出版社.