基于DSP/BIOS的PLC執(zhí)行系統(tǒng)開發(fā)
摘要:分析了目前軟PLC在實時性方面存在的不足;提出采用基于DSP/BIOS實時內(nèi)核的嵌入式處理器的軟PLC執(zhí)行系統(tǒng)架構(gòu)。首先,通過分析軟PLC執(zhí)行系統(tǒng)的架構(gòu)及工作原理,給出了基于DSP/BIOS的任務(wù)調(diào)度方案;其次,建立PLC指令的執(zhí)行函數(shù)庫,確定PLC執(zhí)行系統(tǒng)的運行流程:最后,對該PLC執(zhí)行系統(tǒng)性能進(jìn)行的測試表明,基于嵌入式處理器的軟PLC執(zhí)行系統(tǒng)能有效地彌補(bǔ)軟PLC在實時性及穩(wěn)定性方面的不足,在自動控制方面具有相當(dāng)大的發(fā)展?jié)摿Α?br />關(guān)鍵詞:DSP/BIOS;軟PLC;執(zhí)行系統(tǒng);嵌入式處理器
目前工控領(lǐng)域中廣泛使用的可編程邏輯控制器(Programmable Logic Controller)大概可以分為兩類:傳統(tǒng)PLC與軟PLC。傳統(tǒng)PLC由于自身存在一些不足,例如封閉的硬件體系結(jié)構(gòu),主要由幾家廠商所壟斷,而軟PLC在開放性及低成本方面潛力巨大,目前歐美等很多西方國家已經(jīng)把軟件PLC作為一個重點對象進(jìn)行研究開發(fā)。
傳統(tǒng)PLC具有硬實時性,正因為如此它才能提供快速、確定而可重復(fù)的響應(yīng)。另一方面,由于軟PLC是基于PC而建立在一定的操作系統(tǒng)上,例如Windows NT,而這并不是一個硬實時的操作系統(tǒng),這使得以PC為基礎(chǔ)的控制引擎實時性問題成為制約軟PLC發(fā)展的主要因素之一。
針對軟PLC在實時性方面的不足,本項目采用基于嵌入式處理器的控制方案,軟PLC執(zhí)行系統(tǒng)作為一個任務(wù)在控制器固件內(nèi)。美國TI公司推出的C6000系列數(shù)字信號處理器(Digital Signal Processor)具有很高的處理能力,特別是為其TMS320C6000TM、TMS320C5000TM和TMS320 C28xTM系列DSP平臺所設(shè)計開發(fā)的一個尺寸可裁剪的實時多任務(wù)操作系統(tǒng)內(nèi)核DSP/BIOS,提供搶占式多線程、硬件抽象、實時分析和配置工具,可實現(xiàn)實時線程調(diào)度與同步、主機(jī)與目標(biāo)DSP間通信或?qū)崟r監(jiān)測。DSP是串行控制的,運算速度快。基于DSP/BIOS實時內(nèi)核的PLC執(zhí)行系統(tǒng),具有相當(dāng)好的實時性及穩(wěn)定性。下面著重介紹其設(shè)計及實現(xiàn)方法。
1 軟PLC的設(shè)計規(guī)劃
1.1 軟PLC的架構(gòu)分析
由PLC執(zhí)行系統(tǒng)控制的PLC程序劃分為一級程序和二級程序,它們的執(zhí)行周期不一致。一級程序每8 ms執(zhí)行一次,處理響應(yīng)快的短脈沖信號,例如外部的操作面板信號和報警信號,在程序末尾自動給出結(jié)束標(biāo)記END1。二級程序為一般的PLC指令,每8n ms執(zhí)行一次,n為第二級程序的分割數(shù)。在開始執(zhí)行二級程序時,PLC執(zhí)行系統(tǒng)模塊會根據(jù)執(zhí)行程序所需要的時間自動把二級程序分割成n塊,每個8 ms只執(zhí)行其中一塊,并在二級程序結(jié)束時自動給出結(jié)束標(biāo)記END2。
1.2 PLC執(zhí)行系統(tǒng)的工作原理
PLC采用循環(huán)掃描方式工作,首先進(jìn)行系統(tǒng)初始化,然后進(jìn)入循環(huán)工作過程包括輸入采樣、PLC指令執(zhí)行及輸出刷新幾個階段,其基本流程如圖1所示。
1)系統(tǒng)初始化:在循環(huán)執(zhí)行PLC程序前,首先要進(jìn)行執(zhí)行系統(tǒng)的初始化,包括參數(shù)的輸入及變量初值的設(shè)置;2)輸入的采樣:每次執(zhí)行PLC程序時,要讀取外部輸入狀態(tài)至緩沖區(qū)中,以備后面程序查詢;3)執(zhí)行用戶PLC程序:執(zhí)行用戶程序,就是CPU從PLC程序的首地址開始按順序逐個執(zhí)行編譯后的PLC指令,過程結(jié)果暫存在相應(yīng)的寄存器內(nèi);4)輸出的刷新:執(zhí)行完用戶程序后,需要把處理后需要輸出的結(jié)果進(jìn)行外部輸出。由于PLC控制的對象大都是變化緩慢的信號,而PLC每次掃描輸入和邏輯運算的時間很短,本PLC執(zhí)行系統(tǒng)設(shè)定為每執(zhí)行一個循環(huán),就進(jìn)行一遍輸出的刷新。
1.3 DSP/BIOS的線程調(diào)度
文中的PLC執(zhí)行系統(tǒng)的開發(fā)均在TI公司提供的集成開發(fā)環(huán)境CCS(Code Composer Studio)中進(jìn)行,CCS不僅集成了常規(guī)的開發(fā)工具,如源程序編輯器、代碼生成工具及調(diào)試環(huán)境,還提供DSP/BIOS開發(fā)工具。DSP/BIOS是一個精簡的實時操作系統(tǒng)內(nèi)核,具有實時操作系統(tǒng)功能。它提供搶占式多線程,支持多種不同優(yōu)先級,每種線程都有不同的執(zhí)行和搶占特性,分別是硬件中斷(HWI)包括時鐘函數(shù)(CLK)、軟件中斷(SWI)包括周期函數(shù)(PRD)、任務(wù)線程(TSK)、后臺線程(IDL)。線程類型的選取原則:HW1只用來處理對時間要求苛刻的關(guān)鍵任務(wù);SWI用來處理相對獨立的函數(shù),如果算法要求比較復(fù)雜則使用TSK。TSK提供了很多任務(wù)通信和同步的手段,并且擁有自己獨立的堆棧,因此比SWI更靈活。IDL用于執(zhí)行與時間無關(guān)的非關(guān)鍵任務(wù)。
在DSP/BIOS線程調(diào)度中,硬件中斷與軟件中斷的高優(yōu)先級線程可以暫停運行中的低優(yōu)先級任務(wù),而高優(yōu)先級的任務(wù)線程必須用特定的API才能搶占當(dāng)前運行的低優(yōu)先級任務(wù)線程,且只有任務(wù)線程才能暫停狀態(tài)?;赑LC執(zhí)行是一個循環(huán)執(zhí)行過程,且與其它運動線程有復(fù)雜的通訊交互,本執(zhí)行系統(tǒng)將其建立為一任務(wù)線程,由DSP/BIOS實時操作系統(tǒng)進(jìn)行調(diào)度。
評論