国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

PLCopen多軸圓弧運動控制功能塊的實現(xiàn)

2017-03-02 05:29王瀚博劉知貴范玉德
自動化儀表 2017年2期
關(guān)鍵詞:功能塊編程語言圓弧

羅 亮, 王瀚博, 劉知貴, 范玉德

(1.中國工程物理研究院電子工程研究院,四川 綿陽 621900;2.西南科技大學(xué)信息工程學(xué)院,四川 綿陽 621010;3.西南科技大學(xué)研究生院,四川 綿陽 621010;4.中國工程物理研究院化工材料研究所,四川 綿陽 621900)

PLCopen多軸圓弧運動控制功能塊的實現(xiàn)

羅 亮1,2, 王瀚博2, 劉知貴3, 范玉德4

(1.中國工程物理研究院電子工程研究院,四川 綿陽 621900;2.西南科技大學(xué)信息工程學(xué)院,四川 綿陽 621010;3.西南科技大學(xué)研究生院,四川 綿陽 621010;4.中國工程物理研究院化工材料研究所,四川 綿陽 621900)

針對目前市場上運動控制器編程語言不兼容、編程方法繁瑣等問題,深入研究了基于PLCopen規(guī)范的功能塊模型設(shè)計及圓弧插補算法的工作原理。首先,在試驗室現(xiàn)有的“多軸運動控制器+μC/OS-Ⅲ”平臺上,選用目前工控界廣泛推廣的德國3S公司的Codesys軟件作為開發(fā)平臺,以多軸圓弧運動控制功能塊作為編程對象,采用結(jié)構(gòu)化文本語言和順序功能圖,設(shè)計運動控制功能塊。其次,通過在嵌入式系統(tǒng)中移植Codesys SP內(nèi)核,使硬件平臺成為符合IEC編程標準的可編程邏輯控制器,實現(xiàn)底層功能塊的接口設(shè)計。最后,將設(shè)計好的功能塊下載到控制器中,在Matlab中進行速度與位移曲線的仿真。仿真結(jié)果表明,功能塊可達到設(shè)計要求,能夠完成多軸運動,并可被移植到其他硬件平臺上,具有很好的兼容性與復(fù)用性。

IEC 61131-3; PLCopen; 運動控制; 編程語言;連續(xù)功能圖

0 引言

近年來,隨著PLC編程語言標準化程度的逐步提高,自動化產(chǎn)品的解決方案互補兼容,但運動控制產(chǎn)品的市場依舊各行其事,產(chǎn)品之間的編程語言存在差異,用戶在使用不同產(chǎn)品時還需重新學(xué)習(xí)[1-2]。這會造成產(chǎn)品安裝、維護上的不便,容易使不同運動控制設(shè)備的使用產(chǎn)生混亂,同時給制造商的運動控制產(chǎn)品集成帶來困難,工程實施也因此更為復(fù)雜[3]。

PLCopen標準定義的運動控制功能塊具有很強的移植性和通用性,其已成為工控界運動控制編程語言的首選[4]。目前,國內(nèi)外對PLCopen運動控制功能塊的研究主要集中在直線運動方面,且通常是直接在編程軟件中進行設(shè)計[4],對多軸圓弧運動控制功能塊的設(shè)計相對較少。本文以試驗室的多軸運動控制器作為硬件平臺,采用實時操作系統(tǒng)μC/OS-Ⅲ,并結(jié)合Codesys SP內(nèi)核,將嵌入式硬件平臺變成符合IEC國際標準的可編程邏輯器。同時,對圓弧插補運動控制原理進行研究,在軟件中實現(xiàn)多軸圓弧運動控制功能塊的設(shè)計。多軸運動功能塊的接口編程分為兩部分,其中Codesys軟件采用ST編程,硬件平臺采用C語言編寫。

1 系統(tǒng)結(jié)構(gòu)

系統(tǒng)上層軟PLC采用德國3S公司開發(fā)的、符合IEC編程標準的可編程邏輯控制系統(tǒng)軟件開發(fā)平臺?;赩isual Studio 2010中的C語言平臺,對符合PLCopen規(guī)范的運動控制功能塊進行開發(fā)。硬件平臺采用試驗室開發(fā)的“多軸運動控制器+μC/OS-Ⅲ”。軟PLC與運動控制器之間采用串口和工業(yè)以太網(wǎng)進行通信,功能塊下載到運動控制器后,通過I/O模塊輸出。運動控制器系統(tǒng)的整體框架如圖1所示。

圖1 運動控制器系統(tǒng)框架示意圖

2 PLCopen功能塊的實現(xiàn)

2.1 功能塊模型設(shè)計

PLCopen運動控制功能塊提供的標準是以IEC 61131-3功能塊概念為基礎(chǔ),主要包括類型名、輸入引腳、輸出引腳、內(nèi)部控制算法[5]。任意的功能塊都能構(gòu)建多個實例,由用戶編程來進行設(shè)置。其中,輸入和輸出引腳本質(zhì)上是運動控制模塊內(nèi)部算法的接口,PLCopen標準根據(jù)運動控制算法所需要的位移、速度等運動控制參數(shù),結(jié)合編程語言寫入控制軟件所需狀態(tài),給出輸入、輸出狀態(tài)[6]。而功能塊中的內(nèi)部算法是隱藏的,通過輸入引腳來獲得使用者設(shè)定的運動參數(shù),經(jīng)過運算后,再由輸出引腳反饋至用戶編寫的控制軟件。

根據(jù)PLCopen的定義,功能塊被分為三大類:單軸、多軸和軸組[7]。本文以多軸運動為研究對象。PLCopen標準功能塊主要由管理類功能塊和運動功能塊兩部分組成。管理類功能塊主要負責(zé)電源模塊的開關(guān)使能,軸的狀態(tài)信息和運動參數(shù)的讀寫及報錯功能等;運動類功能塊主要負責(zé)與軸相關(guān)的信息運控[8]。

基于PLCopen規(guī)范中軸組的設(shè)計理念實現(xiàn)多軸功能塊,并建立軸組狀態(tài)圖。在軸組狀態(tài)圖中,對軸組的每個指令進行描述;軸組的狀態(tài)位于每個單軸狀態(tài)的頂部,其主要由單軸狀態(tài)圖構(gòu)成。在軸組狀態(tài)中,各個單軸狀態(tài)被同時激活。軸組狀態(tài)分為:靜立狀態(tài)、運動狀態(tài)、停止狀態(tài)、靜止狀態(tài)、報錯狀態(tài)、回零狀態(tài)[9]。

2.2 圓弧插補原理

基于圓弧插補算法進行多軸圓弧運動。圓弧插補實質(zhì)上是將圓弧轉(zhuǎn)換成若干小段直線,采用圓弧割線或切線來進行理論圓弧的插補,并通過每個插補點的位置來確定插補周期過程中各個軸的增量[10]。圓弧插補主要是在極坐標下完成的。

對于圓弧PsPe,圓弧圓心為O,起點坐標為Ps(xs,ys),終點坐標為Pe(xe,ye),合進給速度為V,圓心角θ=V/R,φ為插補補點角度。第一象限逆圓弧如圖2所示。

圖2 第一象限逆圓弧

圓弧插補算法的步驟如下。①進行坐標角的變換,將圓弧插補運算的初始坐標和終止坐標換算為與之對應(yīng)的起始角fs和終止角fe。②計算插補運算中的合進給速度V和圓心角θ。③計算每個插補周期橫縱坐標增量dxi與dyi。④將坐標增量累計到當前插補點的坐標。⑤與終點判別條件進行對比,若滿足條件則停止,否則繼續(xù)進行圓弧插補運算[11]。

2.3 運動控制功能塊的實現(xiàn)

根據(jù)德國3S公司Codesys軟件的規(guī)定,用戶可以選擇不同方式進行PLCopen標準功能塊的開發(fā)。一種是在實時運行系統(tǒng)中進行設(shè)計,即外部進行開發(fā);另一種是采用IEC 61131-3標準的編程語言完成開發(fā),即內(nèi)部實現(xiàn)。這兩種方式的實現(xiàn)都需要Codesys軟件中的Propertie選項。內(nèi)部實現(xiàn)除了包括利用IEC語言實現(xiàn)功能塊輸入、輸出接口的定義外,還包括運動控制算法的具體代碼實現(xiàn),如圖4所示。相比于外部實現(xiàn),內(nèi)部實現(xiàn)更加簡潔、易于理解。

圖4 內(nèi)部功能塊開發(fā)示意圖

因此,本文選用內(nèi)部實現(xiàn)的方式完成多軸運動控制功能塊的開發(fā)。即在不同的硬件平臺中實現(xiàn)Codesys SP內(nèi)核的移植和功能塊的接口定義,以實現(xiàn)功能塊的調(diào)用。

Codesys軟件將功能塊中設(shè)計好的接口文件和源代碼文件編譯生成二進制文件,在硬件平臺啟動過程中加載到運動控制器的內(nèi)存中。硬件平臺中多軸圓弧運動功能塊對應(yīng)的結(jié)構(gòu)體如下所示。

Typedef struct tag mc_movecircular_list_create_struct

{

Void*__VFTABLEPOINTER;

//虛擬函數(shù)指針

RTS_IEC_DBOOL Execute;

//輸入?yún)?shù)

RTS_IEC_DREAL Acceleration;

RTS_IEC_DREAL Deceleration;

RTS_IEC_DREAL Jerk;

RTS_IEC_DBOOL SpeedMode;

RTS_IEC_DREAL Xs;

RTS_IEC_DBOOL Done;

//輸出參數(shù)Done

RTS_IEC_DBOOL Busy;

RTS_IEC_DBOOL Error;

RTS_IEC_DWORD ErrorID;

} mc_movecircular_list_create_struct;

上述結(jié)構(gòu)體是多軸運動功能在底層的存在方式,實時操作系統(tǒng)中通過對結(jié)構(gòu)體的調(diào)用來完成對輸入、輸出接口的定義和操作。

2.4 運動控制功能塊的開發(fā)

在Codesys軟件中新建程序組織單元(program organization unit, POU),采用IEC 61131-3標準中的結(jié)構(gòu)化語句程序設(shè)計語言ST來實現(xiàn)功能塊的內(nèi)部算法。新建功能塊Center_Offside,在變量定義界面對圓心偏移功能塊中的輸入、輸出變量進行聲明,定義輸入變量的初始坐標為(xs,ys),終點坐標為(xe,ye),圓心為(x0,y0)。輸出變量為經(jīng)過圓心偏移算法計算后的偏移圓心坐標。調(diào)用ST編程語言中的平方根指令(SQRT)與冪指令(EXPT),計算起點與圓心距離L和理論圓半徑R,通過IF語句來判斷L和R的值,進行圓心偏移計算。部分代碼如下所示。

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);

(1)

當Fi<0時,插補點M在圓弧的內(nèi)側(cè),則:

(2)

部分圓弧插補代碼如下所示。

E:=ABS(Xe-Xs)+ABS(Ye-Ys);

Xi:=Xs;

Yi:=Ys;

Fi:=EXPT(Xi,2)+EXPT(Yi,2)-EXPT(Xs,2)-EXPT(Ys,2);

WHILE E>0 DO

IF Fi>=0 THEN 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

完成圓心偏移判別模塊與圓弧插補模塊的設(shè)計后,在Codesys軟件中新建組織程序單元,編程語言采用連續(xù)功能圖(continuous function charts,CFC)設(shè)計語言進行多軸圓弧插補功能塊的程序設(shè)計。CFC編程主要基于功能塊來實現(xiàn),通過功能塊的軟連接,完成運算或控制。聲明多軸圓弧插補模塊的名稱為MC_MoveCircular2DRelative,將上述設(shè)計的圓心偏移判別模塊和圓弧插補模塊實例化,如POU1: Center_Offside;POU2:yuanhuchabu;圓心偏移模塊的輸出引腳與圓弧插補模塊的圓心輸入引腳相連接,聲明指令速度、加速度和減速度變量。調(diào)用SoftMotion功能包中符合IEC 61131-3標準的功能塊MC_MoveRelative。將圓弧插補模塊的輸出變量與MC_MoveRelative模塊的Distance引腳進行連接,作為各軸運動的終點坐標。最后,將MC_MoveRelative模塊的輸出引腳通過邏輯與運算塊進行邏輯運算,從而結(jié)束圓弧插補運算。

3 功能塊的執(zhí)行驗證

采用Codesys軟件,對MC_MoveCircular2DRelative功能塊進行驗證。將Codesys軟件中設(shè)計好的運動功能塊編程后下載至硬件平臺中。輸入?yún)?shù)設(shè)置如表1所示。

表1 參數(shù)設(shè)置表

將基于Codesys SP內(nèi)核的μC/OS-Ⅲ操作系統(tǒng)移植到 “OMAPl138+μC/OS-Ⅲ”開發(fā)板上,調(diào)用開發(fā)板的PWM驅(qū)動進行脈沖控制,修改I/O驅(qū)動代碼,以在硬件平臺中進行運動控制。在此,以脈沖p作為I/O口的計量單位。

采用Maltab和Codesys對多軸運動控制功能塊中各個軸的速度以及位移進行聯(lián)合仿真,通過Codesys軟件中的追蹤功能,在Matlab中實現(xiàn)數(shù)據(jù)曲線繪制,以插補周期S為計量單位,其運動曲線及運動空間曲線分別如圖5、圖6所示。

由圖5、圖6可知,圓弧運動功能塊速度平滑,無明顯突變現(xiàn)象,符合S形速度柔性控制要求,且圓弧插補算法能夠準確到達指定位置。

圖5 圓弧運動控制模塊的運動曲線圖

圖6 功能塊的運動空間曲線圖

4 結(jié)束語

本文基于分模塊的結(jié)構(gòu)設(shè)計了多軸運動功能塊模型;通過對硬件平臺驅(qū)動代碼的修改,根據(jù)上層Codesys軟件的統(tǒng)一功能塊接口編寫程序,并在“OMAPL138 +μC/OS-Ⅲ” 控制板中得到了實現(xiàn)。驗證表明,以Codesys為平臺所設(shè)計的多軸運動控制功能塊符合PLCopen標準中對于功能塊的要求。多軸運動功能塊能夠在不同的平臺中運行,可以解決PLC不同平臺編程語言不兼容的問題。

[1] 吳琳,譚營,唐建.運動控制技術(shù)發(fā)展與展望[J].機床與液壓,2007,35(7):231-233.

[2] 鞏向信,葛益軍.IEC61131-3編程語言的現(xiàn)狀[J].控制工程, 2007,14(1):100-101.

[3] 王晨升,徐新國,朱廷劭.IEC61131-3的通用工業(yè)組態(tài)軟件系統(tǒng)設(shè)計研究[J].控制工程, 2010, 17(1):132-133.

[4] 曹蘇雷.基于IEC6113103標準功能塊組態(tài)軟件設(shè)計與實現(xiàn)[D].大連:大連理工大學(xué),2007.

[5] 童建林.CoDeSys在開放式PLC系統(tǒng)中的應(yīng)用[J].電工技術(shù),2013(7):38-39.

[6] 金麗娟,嚴義,劉罡.基于IEC61131-3的運動控制模塊設(shè)計[J].機電工程,2013,30(6):759-763.

[7] 申華,盧健康,畢玉慶.LMC20型運動控制器的多軸直線聯(lián)動程序設(shè)計[J].自動化儀表, 2009, 30(3):19-21.

[8] 徐杰.伺服電機多軸聯(lián)動系統(tǒng)設(shè)計[D].杭州:浙江理工大學(xué),2015.

[9] 鄭仲謙.基于PLCopen的開放式運動控制器研究與實現(xiàn)[D].廣州: 華南理工大學(xué), 2014.

[10]申超.基于嵌入式PLC運動控制器開發(fā)及其風(fēng)機控制應(yīng)用[D].湘潭:湘潭大學(xué),2013.

[11]吳玉香,周東霞,林錦赟.嵌入式軟PLC系統(tǒng)的研究和實現(xiàn)[J].計算機工程,2009,35(10):235-237.

[12]張廷坤.基于CoDeSys平臺的嵌入式軟PLC研究[D].青島:山東科技大學(xué),2012.

Realization of the Multi-Axis Arc Motion Control Function Block Based on PLCopen

LUO Liang1,2, WANG Hanbo2, LIU Zhigui3, FAN Yude4

(1.Institute of Electronic Engineering,China Academy of Engineering Physics, Mianyang 621900,China;2. School of Information Engineering, Southwest University of Science and Technology, Mianyang 621010,China;3.Graduate School, Southwest University of Science and Technology, Mianyang 621010,China;4.Institute of Chemical Materials,China Academy of Engineering Physics, Mianyang 621900,China)

At present, the programming languages for commercial available motion controllers are not compatible and the programming methods are cumbersome; aiming at these problems, the model design of function module based on specification of PLCopen and the operational principle of arc interpolation algorithm are researched in-depth.Firstly, on the existing “multi-axis motion controller+ μC/OS-Ⅲ” platform in the laboratory, selecting the Codesys software of German 3S Gmbh, that is widely promoted currently in industrial control industry as the development platform, with the multi-axis arc motion control function block as the programming object, using structured text language and sequence function diagram, the motion control function block is designed. Then through transplanting the Codesys SP kernel provided into the embedded system, this makes the hardware platform use as programmable logic controller conforming to IEC programming standards, thus the design of interface for bottom layer function block is realized.Finally, the function block designed is downloaded into controller;then the simulation of speed curve and displacement curve are conducted in Matlab.The simulation results indicate that the function block can meet the design requirements, can complete multi-axis motion, and can be transplanted to other hardware platforms; it has the very good compatibility and reusability.

IEC61131-3; PLCopen; Motion control; Programming language; Continuous function charts(CFC)

資金項目:四川省教育廳科技項目(16ZB0145)、四川省研究生教育改革創(chuàng)新項目(14JGCX01)

羅亮(1977—),男,博士,講師,主要從事嵌入式系統(tǒng)的研究與裝備控制器的研發(fā)。E-mail: luoliang@swust.edu.cn。 王瀚博(通信作者),男,在讀碩士研究生,主要從事嵌入式軟PLC技術(shù)的研究。E-mail: 490707648@qq.com。

TH-39;TP311

A

10.16086/j.cnki.issn 1000-0380.201702003

修改稿收到日期:2016-06-13

猜你喜歡
功能塊編程語言圓弧
基于JavaScript編程語言之 閉包技術(shù)在焦點輪播上的應(yīng)用
淺析圓弧段高大模板支撐體系設(shè)計與應(yīng)用
外圓弧面銑削刀具
計算機軟件開發(fā)的JAVA編程語言及其實際應(yīng)用分析
基于IEC61131-3標準運動控制器的設(shè)計與應(yīng)用*
基于PLCopen的六軸工業(yè)機器人運動控制功能塊設(shè)計
淺談不同編程語言對計算機軟件開發(fā)的影響
自定義功能塊編程在反滲透膜自動清洗設(shè)備中的應(yīng)用
Ovation系統(tǒng)FIRSTOUT和FIFO跳閘首出比較
雙圓弧齒同步帶的載荷特性研究
沙洋县| 抚宁县| 南靖县| 库伦旗| 区。| 汶川县| 鸡东县| 平定县| 仙游县| 曲松县| 长春市| 方城县| 普格县| 读书| 青河县| 成安县| 正定县| 武清区| 宣化县| 手机| 江华| 榆社县| 大兴区| 广河县| 尼木县| 福鼎市| 秦安县| 南乐县| 吴桥县| 汶川县| 阿尔山市| 湘阴县| 仲巴县| 团风县| 靖边县| 烟台市| 常德市| 孟州市| 于都县| 冕宁县| 岳阳市|