高 琛,陳文薌
(廈門大學 物理與機電工程學院,福建 廈門 361005)
可編程控制器(Programmable logic Controller,PLC)是為工業(yè)控制應用而設計制造的,是一項實用性很強的成熟技術,然而,PLC也有一些不足,如:生產(chǎn)商之間的產(chǎn)品不兼容,造成難以構建開放的硬件體系結構;各廠商的編程方法差別很大,技術專有性較強,開發(fā)人員須專業(yè)培訓才能掌握某種產(chǎn)品的編程方法[1]。實際生產(chǎn)中常碰到這樣的情況:1)不需要PLC的全部功能,同時要求邏輯控制器的成本較低,這時若采用現(xiàn)成的PLC很難實現(xiàn)低成本的要求;2)要求配置控制器的輸入和輸出關系比較簡單,普通的操作人員就可以就進行輸入和輸出關系的配置。在碰到這類情況時,如果能有一種新型的邏輯控制能具備結構簡單,不需要復雜編程就能工作的話,傳統(tǒng)PLC有各自的編程方法,有其技術專有性,普通的操作人員比較難掌握,所以傳統(tǒng)的PLC難以到達要求。
本文以工控領域的一些低成本、分布式、易操作應用場合的需求為基礎,研究一種基于邏輯分析的分布式PLC實現(xiàn)方案。通過對工業(yè)設備信息流數(shù)學模型的分析,本系統(tǒng)采用邏輯表達式解析算法實現(xiàn)了PLC[2]的可編程邏輯功能;采用CAN總線拓展了網(wǎng)絡功能,實現(xiàn)分布式結構;采用向導式界面,增強其易操作性;通過強化軟件功能,裁剪硬件,降低成本以及系統(tǒng)的復雜性??刂破鞯拈_關量輸入輸出配置簡單方便,不需要掌握梯形圖等編程語言,只需了解輸入輸出的邏輯關系,即可進行相關的配置。
一個控制系統(tǒng)可以看成由若干個節(jié)點通過總線連接形成的,每一個節(jié)點帶有若干個輸入和若干個輸出,圖1表示了分布式PLC基本拓撲圖。
圖1 分布式PLC基本拓撲圖Fig.1 Basic topology of distributed PLC
圖中編程機是作為編程用的,編程結束后可脫離系統(tǒng)。假設任意一個節(jié)點的任意一個輸出都能響應任意一個節(jié)點的任意一個輸入,則這些輸出可表達為一個邏輯關系式:
Ujk=fjk(IN11,IN12, … IN1m,IN21,IN22, … ,IN2m, … ,INn1,INn2,INnm)
對于任意一個節(jié)點,只要能夠完成對該節(jié)點輸出的邏輯關系式的解析,就能完成他的編程。這樣,在設計一個實用的控制系統(tǒng)時,所要做的就是對每一節(jié)點的每一個輸出的邏輯解析式進行解析,我們稱這個邏輯解析程序為該輸出點的驅動程序。
為了實現(xiàn)這個思想,節(jié)點可按圖2設計。
圖2 節(jié)點設計框圖Fig.2 Diagram of node design
如圖,節(jié)點的工作任務可分為3大塊:
1)本節(jié)點輸入采集,并把采集到的數(shù)據(jù)打包后通過CAN通訊總線廣播到系統(tǒng)的其它節(jié)點。
2)CAN通訊管理[3-4],按照一定的節(jié)拍將本節(jié)點的輸入數(shù)據(jù)廣播道CAN總線,接收其它節(jié)點廣播的數(shù)據(jù),定期刷新輸入列表。
3)根據(jù)輸入列表進行輸出邏輯解析,解析結構經(jīng)由驅動電路輸出。
工業(yè)設備信息流模型如圖3所示。
圖3 工業(yè)設備信息流Fig.3 Information flow of industrial equipment
工業(yè)設備有各種形式的輸入和輸出,最典型的就是開關量的輸入和輸出,我們把輸入抽象成INi,輸出抽象成OUTi,輸入和輸出之間必然有某種函數(shù)關系。
如圖4所示,以某機床為例:此機床主軸由一臺籠型電動機帶動,潤滑油泵由另一臺電動機帶動。主軸需要在總開關按下并且油泵開動后才能開動;油泵需要在總開關按下后才能開動。邏輯表示為:
主軸電機=總開關+主軸開關+油泵開關;
油泵開關=總開關+油泵開關。
圖4 主軸控制器示意圖Fig.4 Schematic diagram of spindle controller
若將主軸電機定義為y1,潤滑油泵電機定義為 y2,總開關定義為x1,主軸開關定義為x2,潤滑油泵開關定義為x3,則:根據(jù)以上分析,任何一個輸出yi都是輸入xi的函數(shù),即
擴展到多個設備聯(lián)網(wǎng)的系統(tǒng),此時每個設備都有一組輸入和一組輸出,則所有輸入構成一個輸入矩陣X,所有輸出構成一個輸出矩陣Y,此時的系統(tǒng)數(shù)學模型變成如圖5結構。
圖5 系統(tǒng)數(shù)學模型Fig.5 Mathematical model of system
即:
假設有m個設備,每個設備有n個輸入,n個輸出,則展開變成:
分布式PLC系統(tǒng)在運行過程中的主要功能是完成自診斷、輸入處理、執(zhí)行解析程序和輸出處理等工作,實現(xiàn)最終的控制功能。運行過程中,節(jié)點間需要保持CAN通信的正常,所以需要進行自診斷判斷CAN通信是否正常,如果通信出現(xiàn)異常則停止系統(tǒng)的運行,并發(fā)出警報。節(jié)點掃描開關量輸入的狀態(tài),并把采集到的數(shù)據(jù)打包后通過CAN通訊總線廣播到系統(tǒng)的其它節(jié)點。為減少CAN總線的通信量,節(jié)點只有在檢測到開關量的輸入狀態(tài)發(fā)生變化時才向其他節(jié)點發(fā)送新的開關量輸入的狀態(tài)。當輸入狀態(tài)發(fā)生變化時,節(jié)點根據(jù)新的輸入列表進行邏輯解析,更新輸出狀態(tài)。
系統(tǒng)的運行流程如圖6所示。
圖6 運行流程圖Fig.6 Flow chart of operation
系統(tǒng)的運行流程包括初始化、自診斷、輸入采樣、執(zhí)行解析程序和輸出更新等部分。
1)初始化 初始化的主要功能是初始化中斷系統(tǒng)、定時器和IO系統(tǒng)等,在內存中規(guī)劃出程序存儲區(qū)和數(shù)據(jù)存儲區(qū),設定好正確的運行環(huán)境,為運行操作奠定基礎。
2)自診斷 自診斷的功能是節(jié)點之間的CAN通信是否正常。節(jié)點按順序向CAN總線廣播帶有本節(jié)點地址的標識幀。如果每個節(jié)點收到了全部其他節(jié)點的標識幀,就說明系統(tǒng)的通信正常。否則,說明CAN通信出現(xiàn)異常,系統(tǒng)就會發(fā)出警報,同時停止運行系統(tǒng)。
3)輸入采樣 輸入采樣的功能是采集開關量的輸入狀態(tài),并與前一次采樣結果進行比較,如果輸入狀態(tài)發(fā)生變化,則將新的輸入狀態(tài)打包后通過CAN通訊總線廣播到系統(tǒng)的其它節(jié)點。
4)執(zhí)行解析程序 解析程序其實就是根據(jù)控制需要所設置的開關量輸入輸出邏輯關系。當節(jié)點收到新的輸入狀態(tài)時,就表示出狀態(tài)需要更新。節(jié)點就會調用解析程序函數(shù),根據(jù)新的輸入狀態(tài)計算輸出要求,然后按照新的輸出要求更新輸出狀態(tài)。
5)輸出更新 當解析程序執(zhí)行完后,節(jié)點會根據(jù)執(zhí)行結果更新輸出狀態(tài),然后通過隔離電路,向外輸出24 V控制信號,從而驅動外部設備完成相應的控制功能。
輸入采集的功能是采集I/O端口的輸入狀態(tài),采集的是開關量信號,如按鈕、轉換開關、行程開關、繼電器觸點等開關量的輸入信號。在節(jié)點的存儲器內開辟了I/O映像存儲區(qū),用于存放I/O信號的狀態(tài),分別稱為輸入映像表和輸出映像表。I/O映像區(qū)的大小由PLC的系統(tǒng)程序確定,對于系統(tǒng)的每一個輸入點總有一個輸入映像表的某一位與之相對應,對于系統(tǒng)的每一個輸出點也都有輸出映像表的某一位與之相對應。在輸入采集階段,節(jié)點將采集到的輸入信號狀態(tài)存放在輸入映像表對應的位上,經(jīng)過邏輯解析之后將,運算結果存放到輸出映像表對應的位上。
I/O映像區(qū)的建立使PLC工作時只和存儲內有關地址單元內所存的狀態(tài)數(shù)據(jù)發(fā)生關系,而系統(tǒng)輸出也只是給內存某一地址單元設定一個狀態(tài)數(shù)據(jù)。這樣加快了程序執(zhí)行速度,而且使控制系統(tǒng)與外界隔開,提高了系統(tǒng)的抗干擾能力。
輸入采集按一定的周期循環(huán)采集I/O端口的輸入狀態(tài),并把采集到的數(shù)據(jù)打包后通過CAN通訊總線廣播到系統(tǒng)的其它節(jié)點。為了減少CAN總線的通信量,節(jié)點只有在檢測到輸入狀態(tài)發(fā)生變化時才將新的輸入狀態(tài)數(shù)據(jù)打包,通過CAN總線廣播給其他節(jié)點,通知其他節(jié)點I/O輸入狀態(tài)有發(fā)生變化,要進行輸入映像表的更新。
表達式有3種表示形式:前序式、中序式和后序式。人們已經(jīng)習慣了的表達式是中序式,即運算符放在兩個操作數(shù)之間,用戶進行用戶程序編程時所用邏輯表達式就是中序式[5]。
但對于計算機而言,中序式并不適合于求值計算,所以在編譯系統(tǒng)中往往將中序式轉化為前序式或后序式,然后對轉化后的前序式或后序式進行求值。本文是將中序的邏輯表達式轉化為后序式,然后將后序式進行存儲。在執(zhí)行用戶程序時,根據(jù)開關量輸入狀態(tài),對后序式進行求值,得出開關量輸出狀態(tài)。
中序式轉化為后序式[6-7]是基于堆棧進行的。轉化過程需要用到一個工作棧OPERATOR,用來存放操作符。和一個數(shù)組RESULT,用來存放轉化結果。中序式轉化為后序式的算法是:
1)創(chuàng)建并初始化工作棧和數(shù)組:OPERATOR和RESULT;
2)從左到右逐個字符的讀入中序表達式;
3)如果字符是數(shù)字,將數(shù)字字符存到RESULT中;
4)如果是“(”,直接存放到 OPERATOR 中;
5)如果是“)”,在遇到“(”之前,循環(huán)彈出 OPERATOR 中的運算符,并存放到RESULT中;
6)如果是運算符,循環(huán)將OPERATOR中的運算符彈出,直到該運算符比OPERATOR棧頂?shù)倪\算符優(yōu)先等級高或OPERATOR為空時,將該運算符存入OPERATOR中;
7)如果中序表達未掃描完成,則跳到3)繼續(xù)執(zhí)行;
8)如果中序表達掃描完成,OPERATOR中還有運算符,則依次將運算符彈出,存入RESULT中,直到OPERATOR為空。此時,中序表達式就轉化為后序表達式。
如表1所示的就是將中序邏輯表達式 (1&2|3)&4轉化為后續(xù)表達式的過程。
表1 中序式轉后序式實例Tab.1 Instance of infix expression into postfix expression
中序表達式轉化為后序表達式后,將后序表達式進行存儲。在執(zhí)行用戶程序時,對相應的后序式進行求值,即可得出開關量輸出狀態(tài)。對后序表達式求值只需要一個運算數(shù)棧OPERAND,后序表達式求值的算法是:
1)創(chuàng)建并初始化運算數(shù)棧OPERAND;
2)使用循環(huán)從左往右逐個掃描后序表達式;
3)如果是運算數(shù),則存入到OPERAND中;
4)如果是運算符,則從OPERAND中彈出所需的運算數(shù),執(zhí)行相應的邏輯運算,將運算結果再存入OPERAND中;
5)后序表達式掃描完成后,OPERAND中的值就是后序表達式求值的結果。
如表2所示的是對后序表達式123&|4&進行求值的過程,設各個運算數(shù)的邏輯狀是:1=1,2=0,3=1,4=0。
表2 后序式求值實例Tab.2 Instance of postfix expression evaluation
跟解析程序緊密相關的有兩張關鍵的表:輸入映象表和任務表(如表3和表4)。輸入映象表記錄了系統(tǒng)所有開關量輸入的狀態(tài),任務表則映射了每個開關量輸出跟所有開關量輸入的邏輯關系,每個開關量輸出都有一張跟自己相對應的任務表,表里存儲的是已經(jīng)轉化成后序表達式的用戶程序。
表3 任務表Tab.3 Task table
表4 輸入映象表Tab.4 Input image table
任務表和輸入映象表中,OUT1,OUT2,……,OUTn表示對應編號的開關量輸入,IN1,IN2,……,INn表示對應編號的開關量輸入,OP1,OP2,……,OPn表示邏輯運算符。編號為n的開關量輸入和所有輸出的關系可用表達式表示為:
OUTn=F(IN1,IN2,……INn)
式中F()表示的開關量輸出和開關量輸入的邏輯關系。
對開關量輸入輸出的邏輯關系進行配置時,是通過輸入相應的邏輯表達式實現(xiàn)的。如想設置OUT1的狀態(tài)由IN1和IN2相與的結果決定的,則可輸入表達式OUT1=IN1&IN2,設IN1=1,IN2=0,則OUT1=0。如圖7所示為用戶程序的執(zhí)行的框圖。
圖7 解析程序執(zhí)行框圖Fig.7 Implementation block diagram of analysis procedure
本文針對傳統(tǒng)PLC的一些局限性,提出一種以工控領域的一些低成本、分布式、易操作應用場合的需求為基礎的基于邏輯分析的分布式PLC實現(xiàn)方案[8-9],實現(xiàn)了開關量輸入/輸出、模擬采集和輸出控制等功能?;趯I(yè)設備信息流數(shù)學模型的分析,本系統(tǒng)采用邏輯表達式解析算法實現(xiàn)了PLC的可編程邏輯功能;提供向導式界面,增強其易操作性;采用CAN總線拓展了網(wǎng)絡功能,實現(xiàn)分布式結構。在一些要求成本低和操作簡便的工業(yè)控制場合,具有廣闊的應用前景。
[1]朱賢德.基于ARM嵌入式系統(tǒng)軟PLC的研究[D].北京:北京工業(yè)大學碩士論文,2006
[2]高春霞,張磊.基于C8051F單片機的嵌入式PLC系統(tǒng)研究[J].電氣自動化,2009,31(3):55-65.GAO Chun-xia,ZHANG Lei.Research on embedded PLC system based on C8051F[J].Electrical Automation,2009,31(3):55-65.
[3]高紅玉,徐建成,曾成奇.基于ARM的CAN總線智能節(jié)點的設計[J].電子應用技術,2005(4):24-26.GAO Hong-yu, XU Jian-cheng,ZENG Cheng-qi.The design of CAN bus intelligence node based on ARM[J].Application of Electronic Technique,2005(4):24-26.
[4]曹曉麗.將中綴表達式轉換為前綴表達式的三種方法[J].甘肅科技,2006,22(5):72-74.CAO Xiao-li.Three methods of converting infix expression to prefix expression[J].Gansu Science and Technology,2006,22(5):72-74.
[5]何云東,黃旭.復雜表達式解析和計算的研究實現(xiàn)[J].中國科技信息,2009(8):35-38.HE Yun-dong,HUANG Xu.Research on analysis and calculation of complex expression[J].China Science and Technology Information,2009(8):35-38.
[6]廖常初.PLC應用技術問答[M].北京:機械工業(yè)出版社,2006.
[7]資訊小組.數(shù)據(jù)結構C語言版[M].北京:中國鐵道出版社,2002.
[8]張明.PLC控制系統(tǒng)在火力發(fā)電廠的應用及注意事項[J].現(xiàn)代電子技術,2010(23):177-180.ZHANG Ming.Application and Precautions of PLC Control System in Power Plant[J].Modern Electronics Technique,2010(23):177-180.
[9]孫德輝,任振東,史運濤.基于研華WebAccess熱力系統(tǒng)優(yōu)化控制與遠程監(jiān)控的實現(xiàn)[J].現(xiàn)代電子技術,2009(04):50-52.SUN De-hui, REN Zhen-dong, SHI Yun-tao.Implementation of optimal control and remote monitoring system of the thermal system based on WebAccess[J].Modern Electronics Technique,2009(04):50-52.