專利名稱:可編程邏輯控制器的程序機械碼編譯方法
技術領域:
本發(fā)明涉及一種可編程邏輯控制器(PLC)的程序編譯方法,尤 其涉及一種PLC的程序機械碼編譯方法。
背景技術:
早期PLC控制程序開發(fā)軟件大多使用LD ( Ladder Diagram,梯形 圖)程序語言,其語法簡單易學,因此被廣泛用于PLC應用程序的開 發(fā)。但梯形圖程序欠缺許多高級語言的特色,例如變量數(shù)據(jù)結構、數(shù) 值運算能力、面向對象設計方式及程序執(zhí)行控制等。此外,在不同的 PLC硬件平臺上,梯形圖程序的語法及語意也不一樣。因此IEC (International Electrotechnical Commission,國際電工4關盟)制訂出IEC 61131-3的國際標準編程語言,該標準除了具備以上高級語言的特點 外,還定義了一組完整的程序開發(fā)工具。
IEC 61131-3定義了下列五種不同的程序語言
1. 梯形圖程序(LD)
梯形圖是在熟悉機械的動作順序并先行畫出控制回路后,將繼電 器控制電路中的a接點、b接點、電路串并聯(lián)及線圈符號化。
2. 功能才匡圖(Functional Block Diagram)
程序語言由一些事先定義好的功能框圖組成,并經由適當?shù)倪B接 構成完整電路,因此功能框圖程序特別適合于說明控制組件中的數(shù)據(jù) 或是數(shù)據(jù)的流程。
3. #旨令(Instructional List或是Statement List) 指令為一種低級語言,由布爾代數(shù)(Boolean Algebra)及其基本
還輯演變而來,主要是由一些記憶碼(Mnemonics code)組成。例如 與(AND)、或(OR)、非(NOT)等符號。
4. 結構式文件編程語言(Structure Text)
一些高級PLC具有高級程序語言,例如數(shù)學運算、子程序、循環(huán) 及條件判斷式,以通過通信網絡與計算機(PC)聯(lián)機操作。
5.力l頁序功能5危禾呈圖(Sequential Function Chart)
順序功能流程圖將機械動作或步驟逐步分解成順序功能流程圖的 組成元素,再根據(jù)其動作順序連接起來,以完成整體的機械動作。
IEC 61131-3的程序語言可以用PLC本身配置的程序書寫器輸入, 或是通過計算機聯(lián)機編程軟件輸入,前者僅適用于輸入指令碼,而后 者則可輸入所有類型的程序語言。
不管是人機界面上的外部輸出入接點(EXIO),或是PLC,都是 利用編輯軟件所產生的記憶碼,來執(zhí)行相對應的程序,且記憶碼要轉 換成機械碼。但是在執(zhí)行的速度上,會因為記憶碼的轉換跟辨識,而 受到影響,從而使執(zhí)行速度變慢,影響效率。
例如過去臺達PLC、三菱PLC以及各廠牌的PLC等等,他們的 PLC都有專屬的計算機畫面編輯器供使用者編輯。在這些設計中,先 將程序轉化成記憶碼,之后再將記憶碼下載到人機執(zhí)行程序。
這樣的缺點主要有兩點
(1 )需要一定的辨識時間來辨識記憶碼,因此會影響執(zhí)行的速度。 (2)所有變量跟常數(shù)都需要轉換,因此會影響執(zhí)行的速度。
發(fā)明內容
因此本發(fā)明的目的在于提供一種可編程邏輯控制器的程序機械碼 編譯方法,以提升^U械碼轉換效率。
為達到上述目的,本發(fā)明提供一種可編程邏輯控制器的程序機械 碼編譯方法,包括~
(a) 輸入可編程邏輯控制器程序;
(b) 尋找所述可編程邏輯控制器程序中的記憶碼(Mnemonics code );
(c) 若所述記憶碼的語法均符合邏輯,則將所述可編程邏輯控制 器程序轉換成C語言文件;
(d) 將所述C語言文件轉換成C語言目標文件;
(e) 將所述C語言目標文件與庫文件鏈接;
(f) 若鏈接成功,則將鏈接文件轉換成機械碼。
此外,若步驟(c)中存在不符合邏輯的記憶碼的語法,則回傳錯 誤的記憶碼。若步驟(f)鏈接不成功,則回傳錯誤的記憶碼。
圖1為根據(jù)本發(fā)明的優(yōu)選實施例的可編程邏輯控制器的程序機械
碼編^r方法流程圖2為說明本發(fā)明可編程邏輯控制器的程序機械碼編譯方法示意 圖;以及
圖3為說明本發(fā)明可編程邏輯控制器的程序機械碼編譯方法的另 一示意圖。
具體實施例方式
圖1為根據(jù)本發(fā)明的優(yōu)選實施例的可編程邏輯控制器的程序機械 碼編譯方法流程圖。本發(fā)明的機械碼編譯方法可以撰寫成程序,并且
由計算機執(zhí)行,以將可編程邏輯控制器的程序編譯成機械碼。 該方法包括下列步驟
首先開啟一個已經編輯好的PLC程序文件(步驟SIO),例如可 為通過臺達電公司的WPL人機界面(HMI)事先編輯好的梯形圖文件。 接著搜尋記憶碼所在位置(步驟S12),該記憶碼例如可為LD、 AND、 ANI等記憶碼;并判斷搜尋到的記憶碼是否符合邏輯(步驟S20)。若 搜尋到不符合邏輯的記憶碼,也就是不符合該PLC可執(zhí)行的語法的記 憶碼,則離開編譯流程并回傳錯誤的記憶碼(步驟S22),以供使用者 糾錯。
若搜尋到的記憶碼均符合邏輯,則將該PLC程序文件轉換成C語 言文件ladder.c (步驟S24 ),接著使用GCC編i奪軟件將該C語言文件 ladder.c編譯產生C語言目的碼(object code ) ladderC.o (步驟S26 ), 并將該C語言目的碼ladderC.o與庫文件(library file ) ladderh.o鏈接 (步驟S28 )。
隨后該編譯流程判斷編譯是否成功(步驟S30),也就是C語言目 的碼ladderC.o是否可與庫文件(library file) ladderh.o成功鏈接。若 編譯不成功,則離開并回傳錯誤的記憶碼(步驟S32);若編譯成功, 則產生機械碼ladder.o (步驟S34 )。
圖2及圖3為說明本發(fā)明的PLC程序機械碼編譯方法的示意圖, 在本發(fā)明的步驟S10讀取的文件例如可以為圖2所示的梯形圖文件。 若該PLC程序文件中的記憶碼均符合邏輯,則將該PLC程序文件轉 換成C語言文件ladder.c,如圖3所示。由于C語言文件可以直接轉 換成機械碼,因此在鏈接庫文件成功后,即可提供機械碼供PLC執(zhí)行, 從而大幅提升效率。
由上述說明可以看出,只要在控制PLC的人機界面(HMI)端讀 取PLC程序,且該PLC程序并沒有語法錯誤,即可利用本發(fā)明的方 法將PLC的程序編譯成機械碼,直接讓PLC執(zhí)行。也就是說,將要 執(zhí)行的指令編寫成C語言的程序文件后,利用編譯軟件對新產生的C 語言文件進行編譯,再跟相關的庫文件進行鏈接,最后則會產生出一 段機械碼,從而實現(xiàn)本發(fā)明的方法,而將這段機械碼下載到人機界面 上后可直接執(zhí)行,并不需要辨識跟轉換,從而提高執(zhí)行速度。
權利要求
1. 一種可編程邏輯控制器的程序機械碼編譯方法,包括:(a)輸入可編程邏輯控制器程序;(b)尋找所述可編程邏輯控制器程序中的記憶碼;(c)若所述記憶碼的語法均符合邏輯,則將所述可編程邏輯控制器程序轉換成C語言文件;(d)將所述C語言文件轉換成C語言目標文件;(e)將所述C語言目標文件與庫文件鏈接;(f)若鏈接成功,則將鏈接文件轉換成機械碼。
2. 如權利要求l所述的方法,進一步包括若步驟(c)中的所述記憶碼存在語法不符合邏輯之處,則回傳錯 誤的記憶碼。
3. 如權利要求l所述的方法,進一步包括 若步驟(f)鏈接不成功,則回傳錯誤的記憶碼。
4. 如權利要求l所述的方法,其中所述機械碼用于控制人機界面 上的外部輸出入接點(EXIO)。
5. 如權利要求l所述的方法,其中所述可編程邏輯控制器程序為 梯形圖程序。
全文摘要
一種可編程邏輯控制器(PLC)的程序機械碼編譯方法,在讀取PLC程序后,尋找程序中的記憶碼(Mnemonics code)。若該PLC程序中記憶碼的語法均符合邏輯,則將該PLC程序轉換成C語言文件。接著將該C語言文件轉換成C語言目標文件、將該C語言目標文件與庫文件鏈接。若鏈接成功,則將鏈接文件轉換成機械碼,供可編程邏輯控制器直接操作以控制人機界面上的外部輸出入接點(EXIO)。
文檔編號G05B19/05GK101382783SQ20071014600
公開日2009年3月11日 申請日期2007年9月3日 優(yōu)先權日2007年9月3日
發(fā)明者謝柏承 申請人:臺達電子工業(yè)股份有限公司