李建偉,賴乙宗,李 松,王世勇
(華南理工大學 機械與汽車工程學院,廣東 廣州 510640)
目前工控領域中廣泛使用的可編程邏輯控制器(Programmable Logic Controller)大概可以分為兩類:傳統PLC與軟PLC。傳統PLC由于自身存在一些不足,例如封閉的硬件體系結構,主要由幾家廠商所壟斷,而軟PLC在開放性及低成本方面潛力巨大,目前歐美等很多西方國家已經把軟件PLC作為一個重點對象進行研究開發。
傳統PLC具有硬實時性,正因為如此它才能提供快速、確定而可重復的響應。另一方面,由于軟PLC是基于PC而建立在一定的操作系統上,例如Windows NT,而這并不是一個硬實時的操作系統,這使得以PC為基礎的控制引擎實時性問題成為制約軟PLC發展的主要因素之一。
針對軟PLC在實時性方面的不足,本項目采用基于嵌入式處理器的控制方案,軟PLC執行系統作為一個任務在控制器固件內。美國TI公司推出的C6000系列數字信號處理器(Digital Signal Processor)具有很高的處理能力,特別是為其TMS320C6000TM、TMS320C5000TM和TMS320C28xTM系列DSP平臺[1]所設計開發的一個尺寸可裁剪的實時多任務操作系統內核DSP/BIOS[2],提供搶占式多線程、硬件抽象、實時分析和配置工具,可實現實時線程調度與同步、主機與目標DSP間通信或實時監測。DSP是串行控制的,運算速度快。基于DSP/BIOS實時內核的PLC執行系統,具有相當好的實時性及穩定性[3]。下面著重介紹其設計及實現方法。
由PLC執行系統控制的PLC程序劃分為一級程序和二級程序,它們的執行周期不一致。一級程序每8 ms執行一次,處理響應快的短脈沖信號,例如外部的操作面板信號和報警信號,在程序末尾自動給出結束標記END1。二級程序為一般的PLC指令,每8n ms執行一次,n為第二級程序的分割數。在開始執行二級程序時,PLC執行系統模塊會根據執行程序所需要的時間自動把二級程序分割成n塊,每個8 ms只執行其中一塊,并在二級程序結束時自動給出結束標記END2。
PLC采用循環掃描方式工作[4],首先進行系統初始化,然后進入循環工作過程包括輸入采樣、PLC指令執行及輸出刷新幾個階段,其基本流程如圖1所示。

圖1 PLC執行系統模塊的基本工作原理Fig.1 Basic operational principles of the Soft-PLC execution system module
1)系統初始化:在循環執行PLC程序前,首先要進行執行系統的初始化,包括參數的輸入及變量初值的設置;2)輸入的采樣:每次執行PLC程序時,要讀取外部輸入狀態至緩沖區中,以備后面程序查詢;3)執行用戶PLC程序:執行用戶程序,就是CPU從PLC程序的首地址開始按順序逐個執行編譯后的PLC指令,過程結果暫存在相應的寄存器內;4)輸出的刷新:執行完用戶程序后,需要把處理后需要輸出的結果進行外部輸出[5]。由于PLC控制的對象大都是變化緩慢的信號,而PLC每次掃描輸入和邏輯運算的時間很短,本PLC執行系統設定為每執行一個循環,就進行一遍輸出的刷新。
文中的PLC執行系統的開發均在TI公司提供的集成開發環境CCS(Code Composer Studio)中進行,CCS不僅集成了常規的開發工具,如源程序編輯器、代碼生成工具及調試環境,還提供DSP/BIOS開發工具。DSP/BIOS是一個精簡的實時操作系統內核,具有實時操作系統功能。它提供搶占式多線程[6],支持多種不同優先級,每種線程都有不同的執行和搶占特性,分別是硬件中斷(HWI)包括時鐘函數(CLK)、軟件中斷(SWI)包括周期函數(PRD)、任務線程(TSK)、后臺線程(IDL)。線程類型的選取原則:HWI只用來處理對時間要求苛刻的關鍵任務;SWI用來處理相對獨立的函數,如果算法要求比較復雜則使用TSK。TSK提供了很多任務通信和同步的手段,并且擁有自己獨立的堆棧,因此比SWI更靈活。IDL用于執行與時間無關的非關鍵任務[7]。
在DSP/BIOS線程調度中,硬件中斷與軟件中斷的高優先級線程可以暫停運行中的低優先級任務,而高優先級的任務線程必須用特定的API才能搶占當前運行的低優先級任務線程,且只有任務線程才能暫停狀態[8]。基于PLC執行是一個循環執行過程,且與其它運動線程有復雜的通訊交互,本執行系統將其建立為一任務線程,由DSP/BIOS實時操作系統進行調度。
1)PLC指令代碼數據結構的定義。PLC用戶程序在系統內部以一定的二進制格式存放,采用如下指令開辟一個a字節的內存區存放編譯后的PLC指令代碼,內存區大小a根據實際情況設定。

由此,在初始化時定義一個plc_code_type類型的指針直接指向PLC指令代碼區,在進行PLC指令解析時,可直接移動該指針進行指令解析并輸出。
PLC執行系統的一個關鍵問題在于PLC指令的解析,利用DSP的C語言,建立相應的PLC指令的執行函數庫。PLC用戶程序可看成由多段執行塊組成,每個執行塊包括條件指令及執行指令。下面分為條件指令解析及執行指令解析來進行描述。
首先定義一個變量來保存條件指令解析結果,以便在解析執行指令時根據此條件指令解析結果進行執行指令處理。例如常開觸點(LD)可以用如下函數實現:

2.2.2 執行指令解析
執行指令則根據當前執行塊條件指令結果來判斷對元件地址進行相應處理。例如置位指令(SET)可以用如下函數實現:

這樣,逐個對PLC執行塊進行解析,輸入和輸出單元的刷新同樣利用函數來實現,最后通過輸出口送出控制量,實現對用戶PLC程序的執行控制。
首先在DSP/BIOS配置工具下的Sched uling項目中建立一個任務線程,比如為PLC_Deal_Task,并對該任務函數的優先級及其它相關內容進行設置,則可直接在PLC_Deal_Task線程中進行PLC指令解析處理,并實現PLC的循環掃描功能。
總體設計思想如下:設定一級程序的執行周期為m個指令計數執行一次,m與掃描周期有關。在進入二級循環后,首先判斷指令計數是否大于m,未到m,則進入執行二級程序。如果條件滿足,跳出循環,1周期完成,具體調度流程如圖2所示。

圖2 PLC任務調度流程Fig.2 Task scheduling process of PLC
根據上述設計方法構建出PLC執行系統,設計實際應用的PLC程序并在試驗機上進行測試,觀察設備的邏輯動作及執行系統性能情況。CCS提供了一系列可視化工具對運行系統的性能進行測試,“CPU負荷圖”用于分析CPU的利用率,“任務執行圖”可以檢測出系統是否符合實時性要求。現根據微鉆刃面檢測機的工藝過程設計了其PLC程序,下載到本軟PLC執行系統中運行[9],通過CCS監測工具監測其運行性能。圖3是CPU負荷圖,負荷峰值在25%左右,變化平穩;圖4是任務執行圖,圖中左邊欄最下面的Assertions項目用于指示某個實時性要求沒有達到,或是偵測到某個無效狀態,如果Assertions項目沒有出現小方塊則表示對應線程的調度滿足實時性要求。另外,經上機調試,設備整體運行邏輯也完全按照程序要求運行。此實驗表明,基于DSP/BIOS的軟PLC執行系統能夠滿足實時控制的要求且工作穩定。

圖3 DSP CPU負荷圖Fig.3 CPU load graph of DSP

圖4 DSP線程執行圖Fig.4 Execution graph of DSP
傳統PLC的一個缺點是硬件體系結構相對封閉,并且成本高,例如日本三菱PLC FX2N系列控制器本身未集成運動軸控制功能,每增加一個運動軸的控制均需額外擴展脈沖發生器單元(Pulse Generatint Unit,PGU),如果在多軸設備上應用可能會造成成本過高并且靈活不夠。本課題組開發的運動控制器IPMC8188可獨立控制8軸,軟PLC執行系統作為一個任務運行在該控制器的固件中。對比傳統PLC,有穩定強大的PLC功能的運動控制器可降低控制系統構建的復雜程度,提高控制效率及開發效率[10]。圖5所示為內嵌軟PLC執行系統的IMPC8188運動控制器,目前,該型運動控制器已在全自動刃面檢測機、自動貼片機及全自動微鉆磨尖機等自動化設備上使用并穩定運行。

圖5 內嵌軟PLC執行系統的IMPC8188運動控制器Fig.5 Embedded soft PLC executive system motion controller of IMPC8188
基于嵌入式處理器的軟PLC執行系統能有效的彌補軟PLC在實時性及穩定性方面的不足,并且由于自帶操作系統,有可靠地數據存儲和自恢復功能。文中論述的基于DSP/BIOS的PLC執行系統的設計,與運動控制相結合,在小中型自動化設備方面應用廣泛,另外在實現大規模系統的綜合性自動控制方面也有很大的發展潛力。
[1]張雄偉,曹鐵勇.DSP芯片的原理與開發應用[M].北京:電子工業出版社,2009.
[2]王軍寧,何迪.TI DSP/BIOS用戶手冊與驅動開發[M].北京:清華大學出版社,2007.
[3]周杰.DSP/BIOS實時多任務操作系統內核的研究[J].科技傳播,2010(12):220.ZHOU Jie.Research of DSP/BIOS real time multi task operating system kernel[J].Public Communication of Science&Technology,2010(12):220.
[4]馬遠佳,秦付軍.基于實時數據庫的軟PLC運行系統研究[J].微計算機信息,2010,26(4-1):55-56.MA Yuan-jia,QIN Fu-jin.Research of running system of soft-PLC based on the real time database[J].Microcomputer Information,2010,26(4-1):55-56.
[5]吳孜越,劉陸群,呂戰爭.基于CNC系統的嵌入式PLC組件的設計與實現[J].河南科技大學學報,2005,26(3):18-21.WU Zi-yue,LIV Lu-qun,LV Zhan-zheng.Design and realization of built-in PLC component based on CNC system[J].Journal of Luoyang Institute of Technology,2005,26(3):18-21.
[6]胡海龍,彭啟琮.TMS320C6713基于DSP/BIOS的二級Boot Loader開發[J].數控技術,2005(15):74-75.HU Hai-long,PENG Qi-cong.Development of a second-level boot loader based on DSP/BIOS on TMS320C6713[J].Numerical Control Technique,2005(15):74-75.
[7]高原,張文明.DSP/BIOS多任務環境下的實時焊縫位置檢測[J].現代焊接,2007(11)::22-24.GAO Yu,ZHANG Wen-ming.The inspection of real time welds position in DSP/BIOS multi-task environment[J].Modern Welding,2007(11)::22-24.
[8]程翔宇,李迪,馮壽庭.基于DSP/BIOS的運動控制系統設計[J].機床與液壓,2007,35(5):157-159.CHENG Xiang-yu,LI Di,FENG Shou-ting.The design of motion control system based on DSP/BIOS[J].Machine Tool&Hydraulics,2007,35(5):157-159.
[9]蘇淑芝,劉志維.軟PLC開發系統的設計與實現[J].現代電子技術,2012,35(10):15-17.SU Shu-zhi,LIU Zhi-wei.Design and implementation of soft PLC development system[J].Modern Electronic Technique,2012,35(10):15-17.
[10]陳偉娜.基于DSP的運動控制算法研究與實現[D].廣州:華南理工大學,2012.