王瀚博,羅 亮,劉知貴,范玉德
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621000;2.中國物理研究院 化工材料研究所,四川 綿陽 621000)
基于嵌入式軟PLC技術(shù)的運(yùn)動(dòng)控制功能塊的研究*
王瀚博1,羅 亮1,劉知貴1,范玉德2
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621000;2.中國物理研究院 化工材料研究所,四川 綿陽 621000)
嵌入式軟PLC技術(shù)在以傳統(tǒng)PLC技術(shù)、嵌入式系統(tǒng)及軟PLC技術(shù)為基礎(chǔ)發(fā)展而來。針對(duì)不同的運(yùn)動(dòng)控制器所需的編程語言不同的問題,深入研究了嵌入式軟PLC技術(shù)和PLCopen準(zhǔn)則,以廣州創(chuàng)龍公司的omapl138開發(fā)板為硬件平臺(tái),移植基于Codesys SP為內(nèi)核的操作系統(tǒng),并以圓弧插補(bǔ)算法作為運(yùn)動(dòng)控制功能塊的研究對(duì)象,實(shí)現(xiàn)了符合PLCopen規(guī)范的多軸運(yùn)動(dòng)控制功能塊的開發(fā)。在Matlab軟件中完成對(duì)功能塊的仿真驗(yàn)證,并將功能塊下載到不同運(yùn)動(dòng)平臺(tái)上。結(jié)果表明,功能塊執(zhí)行正確,符合設(shè)計(jì)要求,具有良好的兼容性。
圓弧插補(bǔ) ;PLCopen;運(yùn)動(dòng)控制功能塊
目前,在工業(yè)控制領(lǐng)域自動(dòng)化的程度不斷提升,國內(nèi)外的運(yùn)動(dòng)控制器得到了飛速的發(fā)展,運(yùn)動(dòng)控制器的主要表現(xiàn)形式為:基于通用單片機(jī)系統(tǒng)的運(yùn)動(dòng)控制器;基于運(yùn)動(dòng)控制卡的運(yùn)動(dòng)控制系統(tǒng);基于PLC為核心的運(yùn)動(dòng)控制器以及以軟PLC技術(shù)為核心的嵌入式運(yùn)動(dòng)控制器。多種多樣的運(yùn)動(dòng)控制器的形式為用戶選擇與應(yīng)用帶來了極大的便利,用戶根據(jù)本身的需求,選擇合適的運(yùn)動(dòng)控制器,制定出滿足指標(biāo)的運(yùn)動(dòng)控制系統(tǒng)。長久以來,運(yùn)動(dòng)控制器市場上沒有一個(gè)統(tǒng)一的運(yùn)動(dòng)控制編程語言標(biāo)準(zhǔn),大大阻礙了其發(fā)展。隨著IEC61131-3編程語言標(biāo)準(zhǔn)的出現(xiàn),使得運(yùn)動(dòng)控制在工業(yè)中的兼容性、開放性、交互性及可循環(huán)使用與模塊化程度得到了提升。通過將計(jì)算機(jī)技術(shù)領(lǐng)域的先進(jìn)編程技術(shù)引入至可編程控制器中(PLC),為運(yùn)動(dòng)控制系統(tǒng)軟件的開發(fā)提出了一種新的編程語言與編程方式。
本文在研究了工業(yè)IEC61131-3標(biāo)準(zhǔn)和開放式運(yùn)動(dòng)控制功能塊規(guī)則的基礎(chǔ)之上,對(duì)運(yùn)動(dòng)控制中的多軸圓弧運(yùn)動(dòng)進(jìn)行了分析,在德國3S公司的Codesys軟件平臺(tái)上,實(shí)現(xiàn)了多軸圓弧插補(bǔ)算法功能塊的程序設(shè)計(jì),并結(jié)合MATLAB軟件,對(duì)設(shè)計(jì)好的功能塊進(jìn)行了仿真驗(yàn)證。為解決運(yùn)動(dòng)控制編程語言不兼容的問題以及基于IEC61131-3標(biāo)準(zhǔn)運(yùn)動(dòng)控制算法功能塊的推廣提出了一種新的設(shè)計(jì)方式。
1993年國際電工委員會(huì)(IEC)正式頒布了可編程邏輯控制器的國際標(biāo)準(zhǔn)編程語言IEC61131-3,這一標(biāo)準(zhǔn)的頒布和實(shí)施,使得不同類型的可編程邏輯控制器的統(tǒng)一性和兼容性起了很大的用途。標(biāo)準(zhǔn)中規(guī)定了五種編程語言,除此之外,對(duì)數(shù)據(jù)的類型、變量的結(jié)構(gòu)、語法規(guī)則和程序組織方面都做出了統(tǒng)一的定義?;诂F(xiàn)代計(jì)算機(jī)領(lǐng)域的先進(jìn)的編程技術(shù),如結(jié)構(gòu)化和模塊化編程技術(shù)、面向?qū)ο缶幊碳夹g(shù)、可視化編程技術(shù)等,與可編程控制器編程技術(shù)相結(jié)合,從而為可編程邏輯控制器工業(yè)裝置和系統(tǒng)控制軟件設(shè)計(jì)提供了新的設(shè)計(jì)方法。
對(duì)于運(yùn)動(dòng)控制算法功能塊的設(shè)計(jì),根據(jù)IEC61131-3標(biāo)準(zhǔn),采用結(jié)構(gòu)化文本(ST)與連續(xù)功能圖(CFC)編程語言相結(jié)合,通過“Look and Feel”的設(shè)計(jì)理念定義,主要包括功能塊名稱的標(biāo)識(shí)、輸入變量、輸出變量、以及內(nèi)部的運(yùn)動(dòng)控制算法。同時(shí),在Codesys軟件中進(jìn)行功能塊的設(shè)計(jì)時(shí),每生成一個(gè)功能塊,就定義一個(gè)以該運(yùn)動(dòng)功能塊標(biāo)識(shí)為標(biāo)識(shí)符的衍生數(shù)據(jù)類型,使用者可以根據(jù)此定義出一個(gè)或者多個(gè)對(duì)象,運(yùn)動(dòng)控制算法是功能塊的功能核心,用戶在調(diào)用時(shí)根據(jù)控制變量的需求,選擇相應(yīng)的功能塊,并且設(shè)置輸出輸入變量值即可。
多軸運(yùn)動(dòng)控制算法功能塊的設(shè)計(jì)當(dāng)中,采用運(yùn)動(dòng)控制算法模塊與Codesys軟件所提供的單軸功能塊所結(jié)合的設(shè)計(jì)方案,來完成多軸運(yùn)動(dòng)控制算法功能塊的設(shè)計(jì)。在Codesys軟件中采用IEC61131-3標(biāo)準(zhǔn)中的結(jié)構(gòu)文本編程語言(ST)對(duì)圓弧插補(bǔ)算法進(jìn)行編寫,并完成插補(bǔ)功能塊FBD的生成,調(diào)用Codesys軟件SoftMotion功能包中的MC_MoveAbsolute功能塊與MC_Power功能塊,完成多軸圓弧插補(bǔ)CFC連續(xù)功能圖的編程,最后對(duì)所設(shè)計(jì)的功能塊進(jìn)行參數(shù)設(shè)定,在MATLAB中完成仿真驗(yàn)證。
3.1 圓心偏移的圓弧插補(bǔ)算法
多軸圓弧運(yùn)動(dòng)從位移角度講可以分為相對(duì)運(yùn)動(dòng)與絕對(duì)運(yùn)動(dòng)。圓弧插補(bǔ)算法的實(shí)質(zhì)過程是將圓弧轉(zhuǎn)化成為小段直線,采用圓弧的一組割線來逼近理論圓弧軌跡,得到插補(bǔ)點(diǎn)的坐標(biāo),然后求出每一次插補(bǔ)周期的各軸增加分量。為了避免圓弧插補(bǔ)由于象限不同的原因,造成算法運(yùn)算量的增加和復(fù)雜性的加大。因此,本文中的圓弧插補(bǔ)算法是在極坐標(biāo)下進(jìn)行的。角度偏移圓弧插補(bǔ)算法主要步驟是:首先將起點(diǎn)和終點(diǎn)坐標(biāo)轉(zhuǎn)換成為起始角和終止角;計(jì)算圓弧插補(bǔ)運(yùn)算中的常量,即進(jìn)給速度和響應(yīng)的圓心角;計(jì)算當(dāng)前插補(bǔ)周期各個(gè)坐標(biāo)軸的坐標(biāo)常量;計(jì)算下一次插補(bǔ)點(diǎn)的坐標(biāo);最后完成終點(diǎn)的判斷。
本文在進(jìn)行圓弧插補(bǔ)運(yùn)算模塊的設(shè)計(jì)時(shí),在傳統(tǒng)圓弧插補(bǔ)運(yùn)算模塊的基礎(chǔ)上,添加了圓心偏移的判斷模塊,對(duì)圓弧插補(bǔ)進(jìn)行了修正,保證終點(diǎn)坐標(biāo)能夠準(zhǔn)確的到達(dá)。圓心偏移法的算法流程如圖1所示。
圖1 圓心偏移插補(bǔ)算法的流程
圖2 圓心偏移算法的圓心計(jì)算
3.2Codesys平臺(tái)下的運(yùn)動(dòng)控制功能塊開發(fā)
運(yùn)動(dòng)控制功能塊的主要作用時(shí)將所有的接口變量進(jìn)行初始化與運(yùn)算,最后實(shí)例化為一個(gè)數(shù)據(jù)類型結(jié)構(gòu)圖。IEC61131-3標(biāo)準(zhǔn)的功能塊模型如圖3所示。運(yùn)動(dòng)控制功能塊主要包括功能塊的類型名、輸入輸出引腳變量、輸入變量值、輸出變量值和隱藏的內(nèi)部運(yùn)動(dòng)控制算法。其中的輸入/輸出變量使功能塊所定義的是一個(gè)全局的結(jié)構(gòu)體數(shù)據(jù)Axis_REF,用來表示軸的參數(shù)和狀態(tài)。德國3S公司將運(yùn)動(dòng)控制功能集成在Codesys編程系統(tǒng)和Codesys實(shí)時(shí)運(yùn)行系統(tǒng)中,便形成了CodesysSoftMotion工具包。SoftMotion中的SM3_Basic.library庫中,具有符合以上標(biāo)準(zhǔn)的PLCopen功能塊,可以實(shí)現(xiàn)簡單的單軸運(yùn)動(dòng)控制到多軸的同步控制。用戶可以在其所提供的功能塊基礎(chǔ)之上,自行進(jìn)行更為復(fù)雜的運(yùn)動(dòng)控制算法功能塊的編寫。
圖3 運(yùn)動(dòng)控制功能塊模型
結(jié)構(gòu)化語句程序設(shè)計(jì)語言(ST)是用結(jié)構(gòu)化的描述語句來表述系統(tǒng)中各種變量之間的多種運(yùn)算關(guān)系,完成所需的功能操作。ST編程語言是一種類似于高級(jí)語言的程序設(shè)計(jì)語言,在大中型的可編程控制器中,常常采用結(jié)構(gòu)化語言來表述各個(gè)控制系統(tǒng)中的變量。在Codesys軟件中新建POU功能塊,命名為Center_Offside,在變量聲明部分對(duì)圓心偏移功能塊中的輸入輸出變量進(jìn)行聲明,定義輸入變量的初始坐標(biāo)為(Xs,Ys),終點(diǎn)坐標(biāo)為(Xe,Ye),圓心為(Xo,Yo)。輸出變量為經(jīng)過圓心偏移算法判斷過后的偏移圓心坐標(biāo)。調(diào)用ST編程語言中的平方根指令(SQRT)與冪指令(EXPT),計(jì)算起點(diǎn)與圓心距離L和理論圓半徑D,通過IF語句來判斷L和D的值,進(jìn)行圓心偏移。部分代碼如下所示:
L:=SQRT(EXPT((Xe-Xo),2)+EXPT((Ye-Yo),2));
D:=SQRT(EXPT(Xo,2)+EXPT(Yo,2));
…
L1:=SQRT(EXPT(Xe,2)+EXPT(Ye,2));
Yo1:=(EXPT(L1,2)*Ye+SQRT(EXPT(L1,4)*EXPT(Ye,2)-EXPT(L1,2)*(EXPT(L1,4)-4*EXPT(Xe,2)*EXPT(D,2))))/(2*EXPT(L1,2));
Yo2:=(EXPT(L1,2)*Ye-SQRT(EXPT(L1,4)*EXPT(Ye,2)-EXPT(L1,2)*(EXPT(L1,4)-4*EXPT(Xe,2)*EXPT(D,2))))/(2*EXPT(L1,2));
Xo1:=(EXPT(L1,2)-2*Ye*Yo1)/(2*Xe);
Xo2:=(EXPT(L1,2)-2*Ye*Yo2)/(2*Xe);
…
部分圓弧插補(bǔ)代碼如下所示:
E:=ABS(Xe-Xs)+ABS(Ye-Ys);
Xi:=Xs;
Yi:=Ys;
Fi:=EXPT(Xi,2)+EXPT(Yi,2)-EXPT(Xs,2)-EXPT(Ys,2);
WHILEE>0DO
IFFi>=0THEN
Xii:=Xi;
Yii:=Yi-1;
Fii:=Fi-2*Yi+1;
E:=E-1;
ELSE
Xii:=Xi+1;
Yii:=Yi;
Fii:=Fi+2*Xi+1;
E:=E-1;
END_IF
END_WHILE
…
完成圓心偏移判別模塊與圓弧插補(bǔ)模塊的設(shè)計(jì)后,在Codesys軟件中新建組織程序單元,編程語言中采用連續(xù)功能圖設(shè)計(jì)語言(CFC)進(jìn)行多軸圓弧插補(bǔ)功能塊的程序設(shè)計(jì)。CFC編程主要基于功能塊來表示其所具有的功能,通過功能塊的軟連接方式,完成運(yùn)算或控制功能。聲明多軸圓弧插補(bǔ)模塊的名稱為MC_MoveCircular2DAbsolute,將上述設(shè)計(jì)的圓心偏移判別模塊和圓弧插補(bǔ)模塊實(shí)例化:POU1:Center_Offside;POU2:yuanhuchabu;圓心偏移模塊的輸出引腳與圓弧插補(bǔ)模塊的圓心輸入引腳相連接,聲明指令速度變量Velocity、加速度和減速度變量聲明。調(diào)用SoftMotion功能包中符合IEC61131-3標(biāo)準(zhǔn)的功能塊MC_MoveAbsolute。將圓弧插補(bǔ)模塊的輸出變量與MC_MoveAbsolute模塊的Position引腳進(jìn)行連接,作為各個(gè)軸運(yùn)動(dòng)的終點(diǎn)坐標(biāo)。最后,將MC_MoveAbsolute模塊的輸出引腳通過邏輯與運(yùn)算塊進(jìn)行邏輯運(yùn)算,保證圓弧插補(bǔ)運(yùn)算的結(jié)束標(biāo)志。內(nèi)部控制算法圖設(shè)計(jì)如圖4所示。
圖4 多軸圓弧插補(bǔ)模塊內(nèi)部算法圖
在程序組織單元中將上述設(shè)計(jì)的多軸圓弧運(yùn)動(dòng)功能塊進(jìn)行仿真驗(yàn)證。在程序指令部分將功能塊實(shí)例化,如圖5所示。
圖5 設(shè)置控制參數(shù)的兩周圓弧運(yùn)動(dòng)模塊
根據(jù)Codesys軟件所提供的SoftMotion功能包的要求,對(duì)于每一個(gè)坐標(biāo)軸,要使其能夠順利的進(jìn)行運(yùn)動(dòng)控制,在運(yùn)動(dòng)控制程序設(shè)計(jì)之前對(duì)每個(gè)周添加使能模塊“MC_Power”。本程序需要添加兩個(gè)“MC_Power”功能模塊,用于分配給X、Y兩個(gè)運(yùn)動(dòng)坐標(biāo)軸,根據(jù)要求建立相應(yīng)的邏輯控制關(guān)系。Codesys軟件編程界面的變量聲明模塊進(jìn)行運(yùn)動(dòng)參數(shù)的進(jìn)行設(shè)定,見表1。
表1 參數(shù)設(shè)定表
多軸圓弧運(yùn)動(dòng)控制功能塊執(zhí)行過程中軸的速度、位移曲線利用MATLAB對(duì)Codesys軟件中的數(shù)據(jù)進(jìn)行繪制,如下圖6、圖7所示。
圖6 位移曲線
圖7 速度曲線
圖8 傳統(tǒng)圓弧插補(bǔ)方法與圓心偏移法的比較
如圖7所示,多軸圓弧插補(bǔ)功能塊的兩軸運(yùn)動(dòng)的速度相對(duì)平滑,且沒有突變,基本符合柔性控制的要求。圖8為多軸圓弧運(yùn)動(dòng)的平面軌跡,傳統(tǒng)圓弧插補(bǔ)方法不能保證精準(zhǔn)的達(dá)到目標(biāo)的終點(diǎn)位置,其終點(diǎn)坐標(biāo)為(4232,23001),存在一定的誤差,而使用基于圓心偏移法的圓弧插補(bǔ)功能塊能夠準(zhǔn)確的達(dá)到插補(bǔ)的終點(diǎn)目標(biāo)。
IEC61131-3編程語言通過現(xiàn)代計(jì)算機(jī)領(lǐng)域先進(jìn)的編程技術(shù)和PLC編程相結(jié)合,為控制系統(tǒng)軟件的開提供了一種新的編程方法,這種方法也正在改變著未來工業(yè)的控制思想。本文基于Codesys軟件的平臺(tái),設(shè)計(jì)了基于結(jié)構(gòu)化文本編程語言和CFC順序功能圖相結(jié)合的改進(jìn)的多軸圓弧插補(bǔ)運(yùn)動(dòng)控制功能塊。并通過Codesys軟件中的SoftMotion運(yùn)動(dòng)功能包的編程標(biāo)準(zhǔn),實(shí)現(xiàn)兩軸圓弧運(yùn)動(dòng)的控制,保證了多軸運(yùn)動(dòng)模塊的精準(zhǔn)性,結(jié)合仿真軟件對(duì)上述多軸圓弧運(yùn)動(dòng)控制功能塊進(jìn)行了測試,驗(yàn)證了其有效性和準(zhǔn)確性,為運(yùn)動(dòng)控制器的控制算法功能塊的設(shè)計(jì)提供了理論基礎(chǔ)與解決方案。
[1] 吳玉香,周東霞,林錦赟. 嵌入式軟PLC系統(tǒng)的研究和實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程,2009,35(10):235-242.
[2] 鞏向信,葛益軍. IEC61131-3編程語言的現(xiàn)狀[J]. 控制工程, 2007, 14(1): 100-101.
[3] 王晨升,徐新國,朱廷劭. IEC61131-3的通用工業(yè)組態(tài)軟件系統(tǒng)設(shè)計(jì)研究[J].控制工程, 2010,17(z1):132-136.
[4] 王麗麗,康存鋒,馬春敏,等. 基于CoDeSys的嵌入式軟PLC系統(tǒng)的設(shè)計(jì)與研究[J]. 現(xiàn)代制造工程, 2007, 3(1): 54-56.
[5] 童建林. CoDeSys在開放式PLC系統(tǒng)中的應(yīng)用[J].電工技術(shù),2013(7):38-39.
[6] 王偉. 基于CoDeSys的多軸機(jī)器人控制系統(tǒng)的研究[D].濟(jì)南: 山東大學(xué), 2015.
[7] 申華,盧健康,畢玉慶. LMC20型運(yùn)動(dòng)控制器的多軸直線聯(lián)動(dòng)程序設(shè)計(jì)[J]. 自動(dòng)化儀表, 2009, 30(3): 19-21.
[8] 馬永超.基于DSP+FPGA多軸運(yùn)動(dòng)控制器的研究與實(shí)現(xiàn)[D].綿陽:西南科技大學(xué),2015.
[9] 鄭仲謙.基于PLCopen的開放式運(yùn)動(dòng)控制器研究與實(shí)現(xiàn)[D]. 廣州: 華南理工大學(xué), 2014.
[10] 申超.基于嵌入式PLC運(yùn)動(dòng)控制器開發(fā)及其風(fēng)機(jī)控制應(yīng)用[D].湘潭:湘潭大學(xué),2013.
[11] John K H.Tigelkamp M.IEC61131-3:Pro-garmming Industrail Automation Sys-tems[M].[S.1.]:SpringVerlag,2001.
[12] 張廷坤.基于CoDeSys平臺(tái)的嵌入式軟PLC研究[D].青島:山東科技大學(xué),2012.
(編輯 李秀敏)
Codesys Platform Based Motion Control Function Block in the Research and Development
WANG Han-bo1, LUO Lang1,LIU Zhi-gui1,FAN Yu-de2
(1. College of Information Engineering, Southwest University of Science and Technology, Mianyang Sichuan 621000,China;2.China Academy of Physics, Institute of Chemical Materials, Mianyang Sichuan 621000, China)
According to different motion controller is needed for the programming language of different problems, in-depth study of the standard iec61131-3 programming, and the circular arc interpolation algorithm as the research object of movement control function block, this paper proposes a in current industrial control industry widely Codesys software as a development platform, adopt the method of ST combined with CFC programming language, realizes the migration method based on circle arc interpolation algorithm of motion control block design, finally in the MATLAB software simulation was carried out on the design of the function block. The results show that the function block performs correctly, comply with the design requirements, it has good compatibility, for the design of the motion control algorithm module provides the theoretical foundation and solution.
circular arc interpolation;PLCopen;motion control function block
1001-2265(2017)02-0094-04
10.13462/j.cnki.mmtamt.2017.02.023
2016-04-26
四川省教育廳科技項(xiàng)目“基于Zynq SoC的六軸四聯(lián)動(dòng)焊錫機(jī)器人專用控制器設(shè)計(jì)”(16ZB0145);四川省研究生教育改革創(chuàng)新項(xiàng)目“控制工程專業(yè)學(xué)位碩士研究生教育實(shí)踐基地建設(shè)”(14JGCX01)
王瀚博(1990—),男,石家莊人,西南科技大學(xué)碩士研究生,研究方向?yàn)檫\(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì),(E-mail)490707648@qq.com。
TH166;TG659
A