陳晨 王力生 賈廷綱 徐志明
摘要:可編程控制器(Programmable Logic Controller, PLC)是為廣大工程技術(shù)員所熟知并廣泛使用的,為了適應(yīng)廣大工程技術(shù)員的使用需求和習(xí)慣,可編程控制器并不采用微機的編程語言,而是使用了面向過程的,更直觀的編程語言,在PLC中,圖形化編程語言梯形圖極易上手,通俗易懂,與電氣控制原理圖相一致,所以成為了PLC的主要編程語言。但是,梯形圖并不能被可編程控制器識別,不能直接運行。所以,如何提高開發(fā)效率,使梯形圖直接轉(zhuǎn)化為PLC指令成為了嵌入式PLC的一個研究熱點。
關(guān)鍵詞:PLC;圖形化編程;編譯;梯形圖
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)21-0156-02
Research on Embedded PLC Graphical Programming
CHEN Chen1, WANG Li-sheng1, JIA Ting-gang2, XU Zhi-ming2
(1.Tongji University, Shanghai 200442,China; 2. Department of Automation, Shanghai Electric Group Company, Shanghai 200002,China)
Abstract: As most of the PLC users are engineers and technicians who are not professional computer programmers , control-oriented and problem-oriented natural language is used in PLC programming. Ladder Diagram is the main PLC programming language which is vivid,simple and correspondent with electrical control schematic diagram. PLC Ladder Diagram cannot be interpreted by the Computer directly,So how to translate the visualized ladder diagram into PLC instruction sequence and enhance the efficiency of system has become a hot debated topic in embedded PLC filed.
Key words: PLC; graphical programming; compiling; ladder diagram
隨著嵌入式領(lǐng)域的迅猛發(fā)展,PLC(Programmable Logic Controller,可編程邏輯控制器)技術(shù)得到了高速發(fā)展。PLC 采用可編程序的存儲器,用以在其內(nèi)部存儲執(zhí)行邏輯運算、順序控制、定時/計數(shù)和算術(shù)運算等操作指令,并通過數(shù)字或模擬的 I/0 接口控制各種類型的機械或生產(chǎn)過程。
PLC 的圖形化編程語言是一種面向生產(chǎn)、面向用戶的編程語言。當生產(chǎn)流程需要改變時,可以在控制電路不改變或者少改變的情況下,現(xiàn)場改變程序,使用方便、靈活。
1 PLC編程基礎(chǔ)
1)PLC的工作原理
PLC主要由 CPU模塊、輸入模塊、輸出模塊和編程器組成[1]。CPU 模塊主要由微處理器(CPU芯片)和存儲器組成,主要負責(zé)不斷地采集輸入信號、執(zhí)行用戶程序、刷新系統(tǒng)的輸出,存儲程序和數(shù)據(jù);I/O模塊是用來聯(lián)系外部現(xiàn)場設(shè)備和CPU模塊的橋梁;編程器用來生成用戶程序,并用它編輯、檢查、修改用戶程序,監(jiān)視用戶程序的執(zhí)行情況。
2)PLC編程語言
在IEC61131-3中,規(guī)定了控制邏輯編程中的語法、語義和顯示,并對以往編程語言進行了部分修改后形成目前通用的五種語言[2]。在這五種語言中,有三種圖形化語言,二種文本化語言。圖形化編程語言包括:梯形圖(Ladder Diagram,LD)、功能塊圖;文本化編程語言包括:指令表(Instruction List,IL)和結(jié)構(gòu)化文本(Structured Text,ST)
梯形圖編程語言是根據(jù)繼電器控制系統(tǒng)原理圖發(fā)展而來的,是PLC首先采用的編程語言,是PLC最普遍采用的編程語言。
功能塊圖基本沿用了半導(dǎo)體邏輯電路的邏輯圖的表達形式。這種方式易于描述較為復(fù)雜的控制功能,表達直觀,查錯都比較容易,因此它是編程時常用的一種方式,但它必須采用帶有顯示屏的編程器才能描述。
順序功能塊圖也稱為功能流程圖或狀態(tài)轉(zhuǎn)移圖,順序功能圖主要由“狀態(tài)”和“轉(zhuǎn)移”等基本元素組成,通過這些基本元素的不同組合,可以對具有并發(fā)、選擇等復(fù)雜結(jié)構(gòu)的系統(tǒng)進行編程。
指令表編程語言是一種與微機的匯編語言中的指令相似的助記符表達式,它是可編程控制器基礎(chǔ)的編程語言。所謂指令表編程,是用一個或幾個容易記憶的字符,即助記符來代表可編程控制器的某種操作功能。
結(jié)構(gòu)化文本是一種高級的文本語言,可以用來描述功能,功能塊和程序的行為,還可以在順序功能流程圖中描述步、動作和轉(zhuǎn)變的行為。
2 PLC程序設(shè)計原則
PLC程序的設(shè)計方法主要有經(jīng)驗法、翻譯法、解析法和流程圖法。梯形圖的設(shè)計原則主要有:
1)梯形圖程序起始于左母線,終止于右母線,應(yīng)該按照自上而下、自左向右的方式繪制,邏輯線圈應(yīng)該和右母線直接相連,中間不能有任何元件。
2)節(jié)點應(yīng)該畫在水平線上,不能畫在垂直分支上。
3)有串聯(lián)電路并聯(lián)時,應(yīng)將接點最多的那個串聯(lián)回路放在梯形圖最上面。有并聯(lián)電路相串聯(lián)時,應(yīng)將接點最多的并聯(lián)回路放在梯形圖的最左邊。
4)梯形圖中一般不宜出現(xiàn)雙線圈。
3 PLC梯形圖編程技術(shù)
3.1 編譯原理
編譯程序?qū)⒃闯绦蜃優(yōu)槟繕顺绦虻倪^程一般分為如下幾個階段[4]:
1)分析詞法: 掃描并識別輸入程序的字符串,將字符串變換成單詞的字符流。
2)分析語法:分解輸入的符號串,分析各個語法單位在語法上是否正確無誤。
3)分析語義:分析上一階段識別出的語法并,進行初步翻譯,并產(chǎn)生中間代碼。
4)生成中間代碼:將源程序編程一種“中間代碼”的內(nèi)部表示形式,用來存儲編譯程序臨時生成的名字和中間結(jié)果。
5)優(yōu)化代碼:對中間代碼進行優(yōu)化,使其更為高效易讀。
6)生成目標代碼: 翻譯優(yōu)化后的代碼,并將其轉(zhuǎn)換成機器語言程序或匯編語言程序。
3.2 PLC梯形圖編譯
3.2.1 梯形圖的文法
作為梯形圖的有窮字母表∑,每一個梯形圖元件即為∑上的一個符號串。∑*為∑上所以符號串的全體,則有:
∑*={常開觸點符號,常閉觸點符號,輸出符號,串聯(lián)線,并聯(lián)線?}
在梯形圖中,除了左右母線外,其他元件均為非終結(jié)符。根據(jù)文法形式化的定義,我們把梯形圖的文法G規(guī)定如圖 1所示。
3.2.2 PLC 梯形圖的詞法分析
梯形圖中,每個電路元件符號可以看成是該語言中的一個單詞,是組成梯形圖語言的基本字,因此梯形圖語言詞法分析器的目的就是要將梯形圖元件識別成一組單詞串。當詞法分析掃描器從梯形圖中掃描一個符號時,將其轉(zhuǎn)換為編譯器的內(nèi)部表示,編譯器根據(jù)內(nèi)部表示的約定在編譯時將其轉(zhuǎn)變成相應(yīng)的指令表語言輸出。
3.2.3 PLC 梯形圖的 LR 語法分析
LR語法分析是自底向上分析方法的一種,當分析的棧頂符號串形成句柄時就采取歸約行動。LR 分析法對文法限制最少,分析效率高,報錯能力強。一個完整的梯形圖句子由梯形圖的元件符號及其所控制的地址構(gòu)成,而完整的梯形圖又由多條這種句子按一定順序排列而成。
4 其他圖形化編程技術(shù)
LabVIEW(Laboratory Virtual Instrumentation Engineering Workbench,實驗室虛擬儀器工程平臺)是在圖形化編程方面最通用和強大編程環(huán)境,率先引入了特別的虛擬儀表的概念,用戶可通過人機界面直接控制自行開發(fā)之儀器。
Modkit編程語言是基于Web的,打開了網(wǎng)頁就可以直接開始編程,不需安裝額外軟件,它的每個程序模塊是一個拼圖(或者叫積木)模塊,搭在一起形成一個完整程序。它的模塊之間不需連接數(shù)據(jù)線,貼在一起就行。
Modkit使用顏色來區(qū)分不同種類的模塊,拼圖的形狀來保證數(shù)據(jù)類型安全。,插槽也是有形狀的,只有形狀匹配的積木才能放進相應(yīng)的插槽。它是專用來對Arduino這款硬件進行編程的。這種針對特定硬件設(shè)計的編程語言,最大優(yōu)勢就是效率高。
5 總結(jié)
本文在介紹PLC梯形圖,設(shè)計規(guī)則和語句表編程規(guī)則的基礎(chǔ)上,研究分析了PLC梯形圖編程技術(shù),包括梯形圖的繪制、存儲、識別和編譯過程,以及常用的圖形化編程工具和PLC梯形圖編程中的數(shù)據(jù)表示方式,最后介紹了其他圖形化編程技術(shù)。
參考文獻:
[1] 趙嬌.數(shù)控特種編程方法研究及編譯功能實現(xiàn)[D].上海: 上海交通大學(xué), 2008.
[2] 董武,王國慶.PLC 快速入門[M].北京:中國電力出版社, 2011:37.
[3] 陳雋.基于PC機的軟PLC的研究 [D].武漢: 華中科技大學(xué), 2003.
[4] 呂映芝,張素琴,蔣維杜.編譯原理[M].北京:清華大學(xué)出版社, 1998:6.
[5] 嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社, 1997:121.