嵌入式數(shù)控系統(tǒng)中的軟PLC的應(yīng)用與實(shí)現(xiàn)
點(diǎn)擊:1726
A+ A-
所屬頻道:新聞中心
1 引言
本文所論述是數(shù)控系統(tǒng)大課題中人機(jī)交互的外圍部分子課題中軟PLC的開發(fā)應(yīng)用。在數(shù)控系統(tǒng)中,PLC在處理開關(guān)量輔助控制問題時(shí)起著重要作用。在以前,需要根據(jù)數(shù)控系統(tǒng)的控制要求分析PLC與機(jī)床、主控機(jī)之間的信息交互種類和數(shù)量,來選用相應(yīng)的外部硬件PLC.采用這種方法設(shè)計(jì),產(chǎn)品一旦定型就很難更改.工控領(lǐng)域的研究人員一直在尋求解決這些問題的途徑。近年來,隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展以及PLC方面的國際性標(biāo)準(zhǔn)IECll31的制定,一項(xiàng)打破傳統(tǒng)PLC局限性的新興技術(shù)發(fā)展起來,這就是軟PLC技術(shù)?;赑c平臺的軟PLC在數(shù)控系統(tǒng)中正逐漸取代硬件PLC,成為該領(lǐng)域輔助功能控制的新方法。軟PLC提供了與硬PLC同樣的功能,而同時(shí)具備了Pc環(huán)境的各種優(yōu)點(diǎn)。
本文就嵌入式數(shù)控系統(tǒng)開發(fā)課題中人機(jī)交互部分所應(yīng)用到的軟PLC技術(shù)進(jìn)行論述,對在Linux環(huán)境下基于MatPLC開發(fā)工具的軟PLC具體實(shí)現(xiàn)過程,以及在實(shí)現(xiàn)過程中的注意事項(xiàng)上做了詳細(xì)介紹。
2 軟PLC技術(shù)簡介
硬PLC由于技術(shù)標(biāo)準(zhǔn)對外封閉,各廠商的硬PLC的軟硬件平臺各不相同。而軟PLC的技術(shù)標(biāo)準(zhǔn)對外開放,其硬件平臺一般是工業(yè)控制計(jì)算機(jī)或通用計(jì)算機(jī)或嵌入式控制器撳件平臺是商業(yè)性的操作系統(tǒng)。雖然兩者的軟硬件平臺不同,但實(shí)現(xiàn)PLC功能的軟件結(jié)構(gòu)相同,都可分為PLC開發(fā)系統(tǒng)和PLC運(yùn)行系統(tǒng)兩部分。PLC開發(fā)系統(tǒng)用于開發(fā)各種適用于工業(yè)控制的PLC程序。PLC運(yùn)行系統(tǒng)通過運(yùn)行PLC程序,與I/O板卡或現(xiàn)場總線或直接與I/O信號等配合完成邏輯控制,其控制方案根據(jù)PLC硬件平臺的不同,可分為以下三種:fl謹(jǐn)于IPC或PC的控制方案。在這種控制方案中,PLC開發(fā)系統(tǒng)和PLC運(yùn)行系統(tǒng)都是在同一臺計(jì)算機(jī)上運(yùn)行的。(2)基于嵌入式控制器的控制方案。在這種控制方案中,PLC開發(fā)系統(tǒng)獨(dú)立于嵌入式控制器,而PLC運(yùn)行系統(tǒng)被固化在嵌入式控制器中。(3)基于傳統(tǒng)PLC的控制方案。在這種控制方案中,PLC開發(fā)系統(tǒng)一般在普通PC上運(yùn)行,而PLC運(yùn)行系統(tǒng)在傳統(tǒng)PLC硬件上運(yùn)行。從以上3個(gè)方案可以看出,軟PLC和硬PLC的最大區(qū)別在于它們所采用的軟硬件平臺不同。
3 MatPLC開發(fā)軟件介紹
MatPLC是Linux下的軟PLC開發(fā)軟件,它是開放源代碼的,很容易對它進(jìn)行內(nèi)核定制,并嵌入到自己的程序中。MatPLC采用的是模塊化設(shè)計(jì)方法,其內(nèi)棱主要包含以下幾個(gè)部分:YO模塊、邏輯模塊和用戶界面模塊等。MatPLC的工作原理與硬件PLC類似,只是設(shè)計(jì)內(nèi)核控制由軟件實(shí)現(xiàn)。其結(jié)構(gòu)如圖1所示。
圖1 MatPLC及其模塊結(jié)構(gòu)
每個(gè)模塊都是一個(gè)進(jìn)程。PLC全局變量是MatPLC 中的用戶程序里所有模塊的公共數(shù)據(jù).由配囂文件設(shè)定,受MatPLC內(nèi)核控制,位于MatPLC的內(nèi)核中,各個(gè)模塊的私有數(shù)據(jù)不包含在內(nèi)。全局變量在每個(gè)模塊里都有副本,各個(gè)模塊通過副本的數(shù)據(jù)對本模塊進(jìn)行運(yùn)算,當(dāng)循環(huán)一次運(yùn)算后,就更新到全局變量中,這樣就實(shí)現(xiàn)了各個(gè)模塊之間的通信。每個(gè)模塊對全局變量的讀寫權(quán)限是不一樣的,只有對全局變量具有寫權(quán)限的模塊才可以更新全局變量里的相應(yīng)變量。
MatPLC中可以用梯形圖或指令表來進(jìn)行PLC邏輯設(shè)計(jì)。梯形圖輸入方式是建立在GTK基礎(chǔ)上的,指令表是MAT IL語言。對于用梯形圖或指令表設(shè)計(jì)的PLC邏輯,其執(zhí)行順序與硬件PLC完全一致。MatPLC對IL語言設(shè)計(jì)的程序的處理過程是:先調(diào)用f12c perlscript將其編譯成c代碼,然后再與其它c(diǎn)代碼一起編譯。因此在一般的設(shè)計(jì)中,很少去采用梯形圖或指令表來進(jìn)行PLC邏輯設(shè)計(jì),而直接用C語言來進(jìn)行設(shè)計(jì)。本文不涉及MatPLC軟件內(nèi)核的討論,只是用MatPLC來實(shí)現(xiàn)通過PCI接口卡對外圍IO進(jìn)行數(shù)據(jù)讀寫。
4 軟PLC的實(shí)現(xiàn)
4.1 總體設(shè)計(jì)思路
用MatPLC進(jìn)行開發(fā).核心的文件是MatPLC.conf文件,它決定了哪個(gè)模塊將被運(yùn)行、輸入模塊需要的參數(shù)、配置MatPLC內(nèi)核、配置全局變量等。在本沒計(jì)應(yīng)用中,設(shè)計(jì)了兩個(gè)模塊:一個(gè)是輸入模塊,另一個(gè)是輸出模塊。各模塊構(gòu)成和數(shù)據(jù)流如圖2所示。輸入模塊通過驅(qū)動程序從PCI接口卡中讀取數(shù)據(jù),然后更新到全局變量中;輸出模塊從全局變量讀取數(shù)據(jù),更新到自己的全局變量副本中,并用此數(shù)據(jù)進(jìn)行邏輯運(yùn)算,再將運(yùn)算結(jié)果輸出到PCI接口卡,從而實(shí)現(xiàn)了用MatPLC來讀寫外圍IO。
圖2模塊構(gòu)成和數(shù)據(jù)流
4.2 輸入、輸出模塊設(shè)計(jì)
編程語言可以是c、python或tcl.考慮到MatPLC本身是由C語言寫的,為了與該軟件更好地兼容,本用c語言編程。輸入、輸出模塊的程序流程圖如圖3所示。其中,打開設(shè)備文件、從設(shè)備中讀取數(shù)據(jù)、寫數(shù)據(jù)到設(shè)備由PCI接口卡設(shè)備驅(qū)動程序?qū)崿F(xiàn)。以下給出了輸出模塊的程序?qū)崿F(xiàn)代碼,輸入模塊程序?qū)崿F(xiàn)與輸出模塊類似。
圖3輸入、輸出模塊流程圖
4.3 配置文件設(shè)計(jì)
配置文件就是MatPLC.conf文件.它控制著在輸入模塊與輸出模塊之間的數(shù)據(jù)如何共享。在MatPLC開發(fā)中處于核心地位。MatPLC.conf一般分成幾個(gè)段,常用到的段包括:(1)PLC段:用來配置內(nèi)核和各個(gè)模塊的相關(guān)參數(shù)。(2)公共配置:設(shè)置一些各個(gè)模塊共同的屬性。(3)同步配置:配置各個(gè)模塊之間的同步性。由于各個(gè)模塊默認(rèn)是異步運(yùn)行的,為了保證數(shù)據(jù)的正確傳輸,必須讓這些模塊的運(yùn)行同步起來,以產(chǎn)生全局掃描周期。這在設(shè)計(jì)中顯得及其重要。(4)實(shí)時(shí)特性配置:配置整個(gè)MatPLC的實(shí)時(shí)性。MatPLC的模塊可以運(yùn)行在三種模式:正常模式、軟實(shí)時(shí)模式和硬實(shí)時(shí)模式。正常模式是默認(rèn)模式.它不保證響應(yīng)的時(shí)間問題;軟實(shí)時(shí)模式可以保證MatPLC模塊優(yōu)先于其它程序,但沒有超過操作系統(tǒng)級,所以也不能完全保證響應(yīng)的時(shí)間問題:硬實(shí)時(shí)模式可以保證響應(yīng)的時(shí)間問題,但需要特殊的操作系統(tǒng)內(nèi)核模塊支持,并且編碼時(shí)需要考慮到實(shí)時(shí)性問題。需要指H{的是,硬實(shí)時(shí)模式并不一定是響應(yīng)最快的。有些模塊由于其實(shí)現(xiàn)的功能的原因,是不能運(yùn)行在硬實(shí)時(shí)模式的;比如,一個(gè)向文件寫數(shù)據(jù)的模塊就不能運(yùn)行在硬實(shí)時(shí)模式。(5)[kbd]段:說明與鍵盤有關(guān)的操作。有些設(shè)計(jì)需要從鍵盤輸入控制信息,就需要實(shí)現(xiàn)鍵盤段。
對于每一個(gè)具體的設(shè)計(jì)來說,并不一定要全部實(shí)現(xiàn)以上五個(gè)段,也可以據(jù)需要加些其它段,比如掃描周期段等。還有一個(gè)需要注意的問題是實(shí)時(shí)性與同步的問題,MatPLC不允許將一個(gè)優(yōu)先級低的模塊同步到優(yōu)先級別高的模塊;可以將兩個(gè)優(yōu)先級相同的模塊同步,或者將優(yōu)先級高的模塊同步到優(yōu)先級低的模塊。
本設(shè)計(jì)中,主要實(shí)現(xiàn)的配置有:輸入模塊與輸出模塊的同步,全局變量的設(shè)定。
4.4 編譯與測試
將三個(gè)文件編碼好后,需要進(jìn)行編譯,用于編譯時(shí)要鏈接到MatPLC提供的文件,值得注意的是,不能用gcc直接編譯,而要用Makefile來編譯。產(chǎn)生Makefile文件有兩種方法.:一種是采用MatPLC軟件自帶的例子中Makefile文件,在此基礎(chǔ)上進(jìn)行修改;另外一種方法是采用autoscan }aclocal }li6toolize }autoconf}automake等工具來產(chǎn)生,其中還要自己編寫一些中間文件。編譯通過后進(jìn)行測試,任意修改輸人,觀察輸出是否與設(shè)計(jì)的邏輯相符。本設(shè)計(jì)采用修改Makefile示例的方法來產(chǎn)生Make}le文件,并制作了一個(gè)demo實(shí)現(xiàn)整個(gè)設(shè)計(jì)的運(yùn)行口
5 結(jié)束語
在數(shù)控系統(tǒng)中要用到PLC,通過計(jì)算機(jī)用軟件的方式來實(shí)現(xiàn)PLC成為了新的發(fā)展熱點(diǎn)。這項(xiàng)技術(shù)把自動化專業(yè)知識,以高附加值的方式,在PC行業(yè)規(guī)模經(jīng)濟(jì)的基礎(chǔ)上加以發(fā)展提升的新型技術(shù)。目前,世界各國都在進(jìn)行軟PLC的研究,我國有關(guān)部門也正在著手研究開發(fā)具有自主版權(quán)的中文軟PLC產(chǎn)品。本設(shè)計(jì)在Linux下基于MatPLC軟件實(shí)現(xiàn)了軟PLC來代替硬件PLC,實(shí)現(xiàn)了軟PLC通過PCI接口卡對外圍ID進(jìn)行數(shù)據(jù)讀寫,簡化了系統(tǒng)結(jié)構(gòu),降低了產(chǎn)品成本,并且運(yùn)行實(shí)踐表明,所設(shè)計(jì)的軟PLC在嵌人式數(shù)控系統(tǒng)中應(yīng)用穩(wěn)定,效果良好。
本文作者的創(chuàng)新點(diǎn):在數(shù)控系統(tǒng)中,PLC在處理開關(guān)量輔助控制問題時(shí)起著重要作用。近年來,基于PC平臺的軟PLC在數(shù)控系統(tǒng)中正逐漸取代硬件PLC,成為該領(lǐng)域輔助功能控制的新方法。作者在嵌人式數(shù)控系統(tǒng)開發(fā)課題中,對軟PLC技術(shù)進(jìn)行了實(shí)踐應(yīng)用,本文就Linux環(huán)境下基于MatPLC開發(fā)工具的軟PLC具體實(shí)現(xiàn)過程,以及在實(shí)現(xiàn)過程中的注意事項(xiàng)上做了詳細(xì)介紹。實(shí)現(xiàn)了軟PLC通過PCI接口卡對外圍IO進(jìn)行數(shù)據(jù)讀寫,簡化了系統(tǒng)結(jié)構(gòu),降低了產(chǎn)品成本,并且運(yùn)行實(shí)踐表明,所設(shè)計(jì)的軟PLC在嵌人式數(shù)控系統(tǒng)中應(yīng)用穩(wěn)定,效果良好。
(審核編輯: 智匯李)
分享