張 翰,李 迪,王世勇
(華南理工大學(xué) 機(jī)械與汽車工程學(xué)院,廣東 廣州510640)
軟PLC系統(tǒng)運(yùn)行環(huán)境的設(shè)計(jì)
張 翰,李 迪,王世勇
(華南理工大學(xué) 機(jī)械與汽車工程學(xué)院,廣東 廣州510640)
軟PLC技術(shù)的發(fā)展解決了傳統(tǒng)PLC開放性差、通用性差以及難以形成開放式的硬件體系結(jié)構(gòu)等缺點(diǎn),其以PC機(jī)作為硬件平臺(tái),可以充分利用PC機(jī)豐富的軟硬件資源,且可以為用戶提供友好的編程界面。軟PLC技術(shù)的實(shí)現(xiàn)包括編輯環(huán)境及運(yùn)行環(huán)境。本文將介紹基于控制器平臺(tái)的運(yùn)行環(huán)境的設(shè)計(jì),論述了軟PLC系統(tǒng)的框架設(shè)計(jì)及運(yùn)行環(huán)境的硬件及軟件的框架設(shè)計(jì),并分析PLC運(yùn)行環(huán)境的執(zhí)行原理。為后續(xù)實(shí)現(xiàn)軟PLC系統(tǒng)運(yùn)行環(huán)境的功能奠定了基礎(chǔ)。
軟PLC;編輯環(huán)境;運(yùn)行環(huán)境;控制器
傳統(tǒng)PLC由于開放性差,通用性差等缺點(diǎn),難以形成開放式的硬件體系結(jié)構(gòu),已無法滿足數(shù)控系統(tǒng)的開放式發(fā)展趨勢(shì)。隨著計(jì)算機(jī)技術(shù)的發(fā)展及IEC61131標(biāo)準(zhǔn)的定制,軟PLC技術(shù)已成為發(fā)展主流[1-2]。軟PLC技術(shù)以PC機(jī)作為硬件平臺(tái),可以充分利用PC機(jī)豐富的軟硬件資源,且可以為用戶提供友好的編程界面[3-6]。軟PLC技術(shù)的實(shí)現(xiàn)包括編輯環(huán)境及運(yùn)行環(huán)境的設(shè)計(jì)和實(shí)現(xiàn),運(yùn)行環(huán)境作為其重要組成部分,對(duì)系統(tǒng)的可行性及性能起到關(guān)鍵性作用,其用于解析開發(fā)環(huán)境轉(zhuǎn)換出來的PLC程序的目標(biāo)代碼,使軟PLC系統(tǒng)可以按一定的邏輯順序控制設(shè)備的動(dòng)作流程。本文將介紹運(yùn)行環(huán)境執(zhí)行平臺(tái)的硬件及軟件的框架設(shè)計(jì)并分析PLC運(yùn)行環(huán)境的執(zhí)行原理。
1.1 架構(gòu)設(shè)計(jì)
軟PLC系統(tǒng)由開發(fā)環(huán)境及運(yùn)行環(huán)境兩部分內(nèi)容組成,其中運(yùn)行環(huán)境中集成了運(yùn)動(dòng)控制模塊,其系統(tǒng)架構(gòu)如圖1所示。開發(fā)環(huán)境實(shí)質(zhì)是一個(gè)用于編輯PLC程序的應(yīng)用軟件,需要提供程序編輯功能、程序編譯轉(zhuǎn)換功能、在線調(diào)試仿真功能及離線模擬仿真功能。該軟件將基于Visual Studio 2008平臺(tái)進(jìn)行開發(fā),運(yùn)行于Windows硬件平臺(tái),只提供LD語言,整個(gè)軟件系統(tǒng)包括編輯模塊、編譯模塊、在線仿真模塊及離線仿真模塊。運(yùn)行環(huán)境則是整個(gè)軟PLC系統(tǒng)的核心部分,包括PLC運(yùn)行內(nèi)核及運(yùn)動(dòng)控制模塊,其中PLC運(yùn)行核用于完成PLC程序的解析執(zhí)行工作而運(yùn)動(dòng)控制模塊用于完成運(yùn)動(dòng)控制功能塊的解析執(zhí)行[7-10]。整個(gè)運(yùn)行環(huán)境主要完成外部輸入的掃描、程序執(zhí)行、外部輸出的控制及電機(jī)脈沖的輸出等工作,通常由通信接口、I/O接口、脈沖輸出接口和運(yùn)行內(nèi)核組成。該運(yùn)行環(huán)境將基于Code Composer Studio平臺(tái)進(jìn)行開發(fā),運(yùn)行于控制器硬件平臺(tái)。
圖1 軟PLC系統(tǒng)架構(gòu)圖
1.2 工作原理
軟PLC系統(tǒng)的工作原理如圖2所示,用戶首先在開發(fā)環(huán)境中編輯PLC程序,然后對(duì)編輯完成的PLC程序進(jìn)行編譯仿真,編譯無誤后通過RS485串口通信接口將目標(biāo)代碼下載至軟PLC的運(yùn)行環(huán)境,即下載到控制器硬件平臺(tái)的FLASH。啟動(dòng)控制器后,控制器系統(tǒng)將從FLASH中加載目標(biāo)代碼,并周期性調(diào)用PLC運(yùn)行核任務(wù),PLC運(yùn)行核執(zhí)行內(nèi)容為掃描外部輸入信息、順序執(zhí)行解析目標(biāo)代碼、刷新外部輸出及拋出運(yùn)動(dòng)控制數(shù)據(jù)包。
圖2 軟PLC系統(tǒng)工作原理圖
本課題采用控制器作為PLC運(yùn)行環(huán)境的硬件平臺(tái),該控制器采用DSP+FPGA作為主控單元的方案,其中DSP采用TI公司生產(chǎn)的6000系列的通用DSP(TMS320C6713)芯片而FPGA則使用ALTERA公司的EP2C20可編程邏輯器件。DSP處理器集成了32位乘32位的乘法器,工作主頻200 MHz,最高可達(dá)300 MHz,支持32位單精度及64位雙精度浮點(diǎn)數(shù)操作[11-14]。其具有流水線及哈佛結(jié)構(gòu)的特點(diǎn),適合應(yīng)用于需要高速度的浮點(diǎn)運(yùn)算場(chǎng)合,但由于其控制方式為串行控制導(dǎo)致無法對(duì)多軸聯(lián)動(dòng)的邏輯控制進(jìn)行并行處理,因此主要負(fù)責(zé)運(yùn)動(dòng)控制算法的處理、PLC運(yùn)行核的執(zhí)行以及任務(wù)調(diào)度控制。FPGA的作用在于對(duì)DSP的硬件外部設(shè)備進(jìn)行擴(kuò)展以完成輔助性功能,其具有并行化處理強(qiáng)及系統(tǒng)時(shí)鐘高的特點(diǎn),但不擅長(zhǎng)進(jìn)行運(yùn)算處理,因此主要負(fù)責(zé)外部I/O接口的掃描輸出及并行控制各軸脈沖的發(fā)送等任務(wù)。
這種方案將DSP適合做高速高精浮點(diǎn)運(yùn)算的的特點(diǎn)和FPGA適合處理并行任務(wù)的特點(diǎn)充分結(jié)合起來,使控制器能夠高速可靠地執(zhí)行多任務(wù)并處理復(fù)雜的運(yùn)動(dòng)算法,滿足PLC運(yùn)行環(huán)境對(duì)執(zhí)行速度及進(jìn)行快速響應(yīng)的要求,同時(shí)也滿足了運(yùn)動(dòng)控制模塊對(duì)控制算法高精高速及多軸并行輸出的處理要求。使用控制器進(jìn)行PLC開發(fā),其硬件平臺(tái)搭建如圖3所示,控制器由外部電源供電,啟動(dòng)后執(zhí)行PLC運(yùn)行環(huán)境,對(duì)PLC程序目標(biāo)代碼進(jìn)行解析。端子板具備I/O輸入輸出端口及脈沖輸出端口,用于連接外部設(shè)備,控制電機(jī)運(yùn)動(dòng)及繼電器狀態(tài)。PC端運(yùn)行軟PLC開發(fā)環(huán)境,使用Windows操作系統(tǒng),用于編輯PLC程序、下載目標(biāo)代碼及在線仿真調(diào)試工作,通過RS485串口與控制器連接[15-16]。
3.1 運(yùn)行環(huán)境的軟件框架設(shè)計(jì)
整個(gè)運(yùn)行環(huán)境的軟件框架如圖4所示,其運(yùn)行過程如下:
1)PLC開發(fā)環(huán)境通過RS485串口將編譯完成的PLC程序目標(biāo)代碼進(jìn)行下載,由串口通訊線程進(jìn)行接收,并將下載的內(nèi)容存入到FLASH中進(jìn)行保存。
2)PLC線程啟動(dòng)后,從FLASH中讀取出目標(biāo)代碼的內(nèi)容并對(duì)目標(biāo)代碼進(jìn)行逐行解析,由目標(biāo)代碼解析出指令I(lǐng)D、指令參數(shù)等內(nèi)容。
3)對(duì)于非運(yùn)動(dòng)指令,直接根據(jù)指令類型及相關(guān)參數(shù)進(jìn)行處理,并根據(jù)結(jié)果對(duì)I/O或者內(nèi)部寄存器進(jìn)行操作。
圖3 硬件平臺(tái)連接圖
圖4 PLC運(yùn)行環(huán)境軟件框架圖
4)對(duì)于運(yùn)動(dòng)指令,先由運(yùn)動(dòng)指令打包線程將將解析出來的指令I(lǐng)D及運(yùn)動(dòng)參數(shù)按規(guī)定的格式進(jìn)行打包后發(fā)送到運(yùn)動(dòng)指令隊(duì)列中。運(yùn)動(dòng)指令解析線程則負(fù)責(zé)從運(yùn)動(dòng)指令隊(duì)列中依次取出運(yùn)動(dòng)指令數(shù)據(jù)包進(jìn)行解析并根據(jù)解析出來的指令I(lǐng)D及運(yùn)動(dòng)參數(shù)進(jìn)行初始化,最后由運(yùn)動(dòng)算法線程調(diào)用對(duì)應(yīng)的算法進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果發(fā)送至脈沖輸出環(huán)形隊(duì)列并由脈沖輸出線程周期性地調(diào)用FPGA的處理模塊將結(jié)果發(fā)送至伺服驅(qū)動(dòng)器。
3.2 PLC程序的執(zhí)行過程
為實(shí)現(xiàn)模塊化編程方式,本系統(tǒng)的PLC程序的架構(gòu)為分級(jí)架構(gòu),分為第一級(jí)程序、第二級(jí)程序及子程序,一級(jí)程序內(nèi)容結(jié)束時(shí)添加END1標(biāo)志位,二級(jí)程序內(nèi)容結(jié)束時(shí)添加END2標(biāo)志位,每級(jí)程序的執(zhí)行周期不一致,各級(jí)對(duì)應(yīng)的執(zhí)行周期如下所述。
1)第一級(jí)程序的執(zhí)行周期為4 ms,可以用于編寫一些需要快速響應(yīng)的功能程序,如急停處理功能或報(bào)警功能。
2)第二級(jí)程序的執(zhí)行周期為4*N ms,其中N為程序內(nèi)容被劃分的數(shù)量。啟動(dòng)第二級(jí)程序時(shí)程序內(nèi)容被劃分成N份,每份容量大小最多為2 000行基本指令。每4ms只執(zhí)行一份。因此每個(gè)周期內(nèi)將執(zhí)行完第一級(jí)程序的所有內(nèi)容及第二級(jí)程序的第N份內(nèi)容。
3)子程序的執(zhí)行周期根據(jù)其調(diào)用的位置而不同,若在第一級(jí)程序中調(diào)用,則執(zhí)行周期為4 ms;若在第二級(jí)程序中調(diào)用,則執(zhí)行周期為(4*N)ms。
3.3 運(yùn)行環(huán)境的執(zhí)行原理
運(yùn)行環(huán)境的執(zhí)行總流程示意圖如圖5所示。首先對(duì)系統(tǒng)進(jìn)行初始化,然后周期性調(diào)用PLC運(yùn)行核任務(wù),運(yùn)行核任務(wù)包括輸入采樣、解析并執(zhí)行程序內(nèi)容及輸出刷新幾個(gè)動(dòng)作。
1)初始化系統(tǒng)變量:在啟動(dòng)PLC運(yùn)行核任務(wù)前需要對(duì)操作系統(tǒng)定義的變量進(jìn)行初始化并設(shè)置初始值。
2)采集輸入信號(hào):每個(gè)執(zhí)行周期都需要對(duì)外部輸入的最新狀態(tài)進(jìn)行采集并存儲(chǔ)到緩沖區(qū)。
3)解析并執(zhí)行程序內(nèi)容:在程序內(nèi)容存放的內(nèi)存區(qū)中逐行解析目標(biāo)代碼并執(zhí)行相關(guān)指令動(dòng)作,同時(shí)將執(zhí)行結(jié)果存放于對(duì)應(yīng)的寄存器中,其中一級(jí)程序每周期執(zhí)行一次,二級(jí)程序分段執(zhí)行,每周期執(zhí)行一段,直到全部?jī)?nèi)容執(zhí)行完成則重新開始分段執(zhí)行。
4)輸出的刷新:執(zhí)行每個(gè)周期的PLC程序目標(biāo)代碼的內(nèi)容后,將最新的外部輸出結(jié)果刷新到硬件設(shè)備。
圖5 PLC運(yùn)行核執(zhí)行流程圖
根據(jù)PLC程序的分級(jí)架構(gòu),PLC程序目標(biāo)代碼需要進(jìn)行分級(jí)解析,圖6為目標(biāo)代碼的解析執(zhí)行過程,具體解析過程如下所述。
圖6 PLC程序目標(biāo)代碼解析流程圖
1)每個(gè)周期開始時(shí),使用一個(gè)位置指針指向目標(biāo)代碼存儲(chǔ)空間的首地址。
2)進(jìn)入第一級(jí)程序的解析過程,對(duì)目標(biāo)代碼進(jìn)行逐行解析直到執(zhí)行到END1標(biāo)志位的目標(biāo)代碼,則結(jié)束對(duì)一級(jí)程序的解析,進(jìn)入二級(jí)程序的解析。
3)進(jìn)入第二級(jí)程序的解析過程,對(duì)目標(biāo)代碼進(jìn)行逐行解析,每執(zhí)行完一個(gè)指令進(jìn)行時(shí)間累加,直到累計(jì)時(shí)間達(dá)到分段容量,則結(jié)束該周期的解析過程,并記錄下此時(shí)目標(biāo)代碼的位置,作為下個(gè)周期二級(jí)程序的起始位置。若執(zhí)行到END2標(biāo)志位的目標(biāo)代碼,則結(jié)束該周期的解析過程,并將下周期二級(jí)程序的起始位置設(shè)為原始位置。
4)解析指令過程中每解析完一個(gè)指令,則位置指針根據(jù)該指令轉(zhuǎn)換成的目標(biāo)代碼的行數(shù)進(jìn)行移動(dòng),指向下個(gè)指令目標(biāo)代碼的首行。
5)等待本周期的結(jié)束,進(jìn)入下個(gè)執(zhí)行周期,重復(fù)第一和第二個(gè)步驟。
3.4 目標(biāo)代碼的解析原理
目標(biāo)代碼是由PLC程序指令表轉(zhuǎn)換而成的具有特定格式的數(shù)據(jù)流,存儲(chǔ)方式為unsigned int數(shù)據(jù)類型的數(shù)組,單參數(shù)指令轉(zhuǎn)為目標(biāo)代碼后的存儲(chǔ)空間為一行,多參數(shù)指令的存儲(chǔ)空間根據(jù)參數(shù)數(shù)量存儲(chǔ)多行。
解析目標(biāo)代碼的過程就是按照目標(biāo)代碼的構(gòu)造原理進(jìn)行逆向拆分,還原指令的相關(guān)信息后再去執(zhí)行動(dòng)作。目標(biāo)代碼的每一行都存儲(chǔ)了相關(guān)指令的數(shù)據(jù)信息,解析時(shí)需要由指令對(duì)應(yīng)的目標(biāo)代碼的首行先獲取到指令的類型標(biāo)志,再根據(jù)指令類型將目標(biāo)代碼的一行或者多行轉(zhuǎn)換為對(duì)應(yīng)指令的數(shù)據(jù)結(jié)構(gòu)體,由結(jié)構(gòu)體的變量得到指令對(duì)應(yīng)的參數(shù)內(nèi)容。
根據(jù)目標(biāo)代碼的解析過程分析,需要為每個(gè)指令定義一個(gè)結(jié)構(gòu)體進(jìn)行數(shù)據(jù)存儲(chǔ),結(jié)合目標(biāo)代碼的數(shù)據(jù)類型定義,每個(gè)指令的結(jié)構(gòu)體大小需要為4字節(jié)大小的整數(shù)倍。每個(gè)指令的結(jié)構(gòu)體由指令的類型標(biāo)志及單個(gè)或者多個(gè)指令參數(shù)的寄存器地址號(hào)、寄存器位號(hào)或者常數(shù)值的變量進(jìn)行組合,表1為具體的參數(shù)變量對(duì)應(yīng)的數(shù)據(jù)類型。
表1 指令參數(shù)的數(shù)據(jù)類型表
目標(biāo)代碼的具體解析過程如下所述:
1)定義一個(gè)單參數(shù)指令結(jié)構(gòu)體的指針指向目標(biāo)代碼存儲(chǔ)空間的首地址:
PLC_BASE_INS*pc;//單參數(shù)結(jié)構(gòu)體指針
pc=(PLC_BASE_INS*)PLC_EXEC_CODE;//初始化為目標(biāo)代碼首地址
2)pc指針指向每條指令轉(zhuǎn)換成的目標(biāo)代碼的首行,通過pc->ins獲取到指令標(biāo)志類型,若為單參數(shù)圖元,則取出PLC_BASE_INS結(jié)構(gòu)體的其它參數(shù);若為多參數(shù)指令,則將pc指針轉(zhuǎn)為相應(yīng)指令的數(shù)據(jù)結(jié)構(gòu)體,通過該結(jié)構(gòu)體將指令的相關(guān)參數(shù)取出;
3)每完成一個(gè)指令的解析,根據(jù)指令目標(biāo)代碼的行數(shù)疊加pc指針的位置,使pc指針指向下個(gè)指令的目標(biāo)代碼的首行地址。
文中介紹了如何在控制器平臺(tái)下設(shè)計(jì)開發(fā)軟PLC系統(tǒng)的運(yùn)行環(huán)境,詳細(xì)分析了控制器硬件平臺(tái)的設(shè)計(jì),運(yùn)行環(huán)境的軟件框架設(shè)計(jì)及具體的執(zhí)行原理。為后續(xù)實(shí)現(xiàn)軟PLC系統(tǒng)運(yùn)行環(huán)境的功能奠定了基礎(chǔ)。
[1]姚家慶,陶耀東,鄭一麟.基于MiniGUI的梯形圖編程工具的設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2013(2):30-33+37.
[2]蘇淑芝,劉志維.軟PLC開發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2012(10):15-17,20.
[3]郭書杰.軟件PLC梯形圖編程系統(tǒng)的研究與實(shí)現(xiàn)[D].沈陽(yáng):中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所.2010
[4]王飛.開放式數(shù)控系統(tǒng)中軟PLC的開發(fā)及應(yīng)用[D].廣州:華南理工大學(xué).2011
[5]李龍.軟PLC開發(fā)系統(tǒng)的研究與實(shí)現(xiàn)[D].西安:陜西科技大學(xué),2013.
[6]陳浩,張躍文.軟PLC技術(shù)研究與開發(fā)[J].信息系統(tǒng)工程,2015(10):86.
[7]張丕鑫.基于PLCopen的運(yùn)動(dòng)控制功能塊研究與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2011.
[8]劉艷強(qiáng),宋永立.基于PLCopen的數(shù)控機(jī)械控制器研究與開發(fā)[J].制造業(yè)自動(dòng)化,2013,02:63-67
[9]金麗娟,嚴(yán)義,劉罡.基于IEC61131-3的運(yùn)動(dòng)控制模塊設(shè)計(jì)[J].機(jī)電工程,2013,06:759-763
[10]謝春杰.嵌入式軟PLC的研究與設(shè)計(jì)[D].南京:南京理工大學(xué),2014.
[11]馬志剛,趙麗平,李中西,等.一種高性能浮點(diǎn)DSP芯片TMS320C6713及其最小系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2010,29(10):24-27.
[12]Texas Instruments Inc.How to Get Started With the DSP BIOS Kernel[Z].Dallas,Texas:Texas Instruments Inc,2001:04-08.
[13]Texas Instruments Inc.Using the DSP/BIOS Kernel in Real-Time DSP Applications[Z].Dallas,Texas: Texas Instruments Inc,2001:02-16.
[14]張紅香.面向數(shù)控機(jī)床的嵌入式軟PLC開發(fā)系統(tǒng)的研究[D].蘭州:蘭州理工大學(xué),2014.
[15]胥貴萍.基于軟PLC技術(shù)的工程機(jī)械智能控制器[D].武漢:武漢科技大學(xué),2011.
[16]喻賽花.基于Windows的軟PLC系統(tǒng)開發(fā)[D].南京:南京航空航天大學(xué),2012.
Design of PLC ladder diagram programming environment
ZHANG Han,LI Di,WANG Shi-yong
(School of Mechanical and Automotive Engineering,South China University of Technology,Guangzhou 510640,China)
The development of soft PLC technology solved the poor openness and universality of traditional PLC as well as difficulty in forming hardware architecture of open mode.Soft PLC is based on PC hardware and make full use of hardware and software resources to provide a friendly programming UI. The implementation of Soft PLC include programming editing and running environment.This paper introduced how to design the runtime environment based on controller platform,discuss the design methods including the framework of soft PLC system and the framework of running environment's software and hardware.Besides, this paper also analyzed the implementation ofthe runtime environment,which laid solid foundation for the implementation of soft PLC running environment.
soft PLC;editing environment;runtime environment;controller
TN805
:A
:1674-6236(2017)08-0010-05
2016-07-05稿件編號(hào):201607026
國(guó)家科技支撐計(jì)劃項(xiàng)目資助 (2015BAF20B01);廣東省科技計(jì)劃項(xiàng)目資助(2012A090100012;2013B010134010;2014B090921003;2014A050503009);廣州市科技計(jì)劃項(xiàng)目資助(201508030007;201604010064)
張 翰(1991—),男,廣東汕頭人,碩士。研究方向:數(shù)控系統(tǒng)中軟件PLC技術(shù)。