王瀚博,罗 亮,刘知贵,范玉德
(1.西南科技大学 信息工程学院,四川 绵阳 621000;2.中国物理研究院 化工材料研究所,四川 绵阳 621000)
基于嵌入式软PLC技术的运动控制功能块的研究*
王瀚博1,罗 亮1,刘知贵1,范玉德2
(1.西南科技大学 信息工程学院,四川 绵阳 621000;2.中国物理研究院 化工材料研究所,四川 绵阳 621000)
嵌入式软PLC技术在以传统PLC技术、嵌入式系统及软PLC技术为基础发展而来。针对不同的运动控制器所需的编程语言不同的问题,深入研究了嵌入式软PLC技术和PLCopen准则,以广州创龙公司的omapl138开发板为硬件平台,移植基于Codesys SP为内核的操作系统,并以圆弧插补算法作为运动控制功能块的研究对象,实现了符合PLCopen规范的多轴运动控制功能块的开发。在Matlab软件中完成对功能块的仿真验证,并将功能块下载到不同运动平台上。结果表明,功能块执行正确,符合设计要求,具有良好的兼容性。
圆弧插补 ;PLCopen;运动控制功能块
目前,在工业控制领域自动化的程度不断提升,国内外的运动控制器得到了飞速的发展,运动控制器的主要表现形式为:基于通用单片机系统的运动控制器;基于运动控制卡的运动控制系统;基于PLC为核心的运动控制器以及以软PLC技术为核心的嵌入式运动控制器。多种多样的运动控制器的形式为用户选择与应用带来了极大的便利,用户根据本身的需求,选择合适的运动控制器,制定出满足指标的运动控制系统。长久以来,运动控制器市场上没有一个统一的运动控制编程语言标准,大大阻碍了其发展。随着IEC61131-3编程语言标准的出现,使得运动控制在工业中的兼容性、开放性、交互性及可循环使用与模块化程度得到了提升。通过将计算机技术领域的先进编程技术引入至可编程控制器中(PLC),为运动控制系统软件的开发提出了一种新的编程语言与编程方式。
本文在研究了工业IEC61131-3标准和开放式运动控制功能块规则的基础之上,对运动控制中的多轴圆弧运动进行了分析,在德国3S公司的Codesys软件平台上,实现了多轴圆弧插补算法功能块的程序设计,并结合MATLAB软件,对设计好的功能块进行了仿真验证。为解决运动控制编程语言不兼容的问题以及基于IEC61131-3标准运动控制算法功能块的推广提出了一种新的设计方式。
1993年国际电工委员会(IEC)正式颁布了可编程逻辑控制器的国际标准编程语言IEC61131-3,这一标准的颁布和实施,使得不同类型的可编程逻辑控制器的统一性和兼容性起了很大的用途。标准中规定了五种编程语言,除此之外,对数据的类型、变量的结构、语法规则和程序组织方面都做出了统一的定义。基于现代计算机领域的先进的编程技术,如结构化和模块化编程技术、面向对象编程技术、可视化编程技术等,与可编程控制器编程技术相结合,从而为可编程逻辑控制器工业装置和系统控制软件设计提供了新的设计方法。
对于运动控制算法功能块的设计,根据IEC61131-3标准,采用结构化文本(ST)与连续功能图(CFC)编程语言相结合,通过“Look and Feel”的设计理念定义,主要包括功能块名称的标识、输入变量、输出变量、以及内部的运动控制算法。同时,在Codesys软件中进行功能块的设计时,每生成一个功能块,就定义一个以该运动功能块标识为标识符的衍生数据类型,使用者可以根据此定义出一个或者多个对象,运动控制算法是功能块的功能核心,用户在调用时根据控制变量的需求,选择相应的功能块,并且设置输出输入变量值即可。
多轴运动控制算法功能块的设计当中,采用运动控制算法模块与Codesys软件所提供的单轴功能块所结合的设计方案,来完成多轴运动控制算法功能块的设计。在Codesys软件中采用IEC61131-3标准中的结构文本编程语言(ST)对圆弧插补算法进行编写,并完成插补功能块FBD的生成,调用Codesys软件SoftMotion功能包中的MC_MoveAbsolute功能块与MC_Power功能块,完成多轴圆弧插补CFC连续功能图的编程,最后对所设计的功能块进行参数设定,在MATLAB中完成仿真验证。
3.1 圆心偏移的圆弧插补算法
多轴圆弧运动从位移角度讲可以分为相对运动与绝对运动。圆弧插补算法的实质过程是将圆弧转化成为小段直线,采用圆弧的一组割线来逼近理论圆弧轨迹,得到插补点的坐标,然后求出每一次插补周期的各轴增加分量。为了避免圆弧插补由于象限不同的原因,造成算法运算量的增加和复杂性的加大。因此,本文中的圆弧插补算法是在极坐标下进行的。角度偏移圆弧插补算法主要步骤是:首先将起点和终点坐标转换成为起始角和终止角;计算圆弧插补运算中的常量,即进给速度和响应的圆心角;计算当前插补周期各个坐标轴的坐标常量;计算下一次插补点的坐标;最后完成终点的判断。
本文在进行圆弧插补运算模块的设计时,在传统圆弧插补运算模块的基础上,添加了圆心偏移的判断模块,对圆弧插补进行了修正,保证终点坐标能够准确的到达。圆心偏移法的算法流程如图1所示。
图1 圆心偏移插补算法的流程
图2 圆心偏移算法的圆心计算
3.2Codesys平台下的运动控制功能块开发
运动控制功能块的主要作用时将所有的接口变量进行初始化与运算,最后实例化为一个数据类型结构图。IEC61131-3标准的功能块模型如图3所示。运动控制功能块主要包括功能块的类型名、输入输出引脚变量、输入变量值、输出变量值和隐藏的内部运动控制算法。其中的输入/输出变量使功能块所定义的是一个全局的结构体数据Axis_REF,用来表示轴的参数和状态。德国3S公司将运动控制功能集成在Codesys编程系统和Codesys实时运行系统中,便形成了CodesysSoftMotion工具包。SoftMotion中的SM3_Basic.library库中,具有符合以上标准的PLCopen功能块,可以实现简单的单轴运动控制到多轴的同步控制。用户可以在其所提供的功能块基础之上,自行进行更为复杂的运动控制算法功能块的编写。
图3 运动控制功能块模型
结构化语句程序设计语言(ST)是用结构化的描述语句来表述系统中各种变量之间的多种运算关系,完成所需的功能操作。ST编程语言是一种类似于高级语言的程序设计语言,在大中型的可编程控制器中,常常采用结构化语言来表述各个控制系统中的变量。在Codesys软件中新建POU功能块,命名为Center_Offside,在变量声明部分对圆心偏移功能块中的输入输出变量进行声明,定义输入变量的初始坐标为(Xs,Ys),终点坐标为(Xe,Ye),圆心为(Xo,Yo)。输出变量为经过圆心偏移算法判断过后的偏移圆心坐标。调用ST编程语言中的平方根指令(SQRT)与幂指令(EXPT),计算起点与圆心距离L和理论圆半径D,通过IF语句来判断L和D的值,进行圆心偏移。部分代码如下所示:
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);
…
部分圆弧插补代码如下所示:
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
…
完成圆心偏移判别模块与圆弧插补模块的设计后,在Codesys软件中新建组织程序单元,编程语言中采用连续功能图设计语言(CFC)进行多轴圆弧插补功能块的程序设计。CFC编程主要基于功能块来表示其所具有的功能,通过功能块的软连接方式,完成运算或控制功能。声明多轴圆弧插补模块的名称为MC_MoveCircular2DAbsolute,将上述设计的圆心偏移判别模块和圆弧插补模块实例化:POU1:Center_Offside;POU2:yuanhuchabu;圆心偏移模块的输出引脚与圆弧插补模块的圆心输入引脚相连接,声明指令速度变量Velocity、加速度和减速度变量声明。调用SoftMotion功能包中符合IEC61131-3标准的功能块MC_MoveAbsolute。将圆弧插补模块的输出变量与MC_MoveAbsolute模块的Position引脚进行连接,作为各个轴运动的终点坐标。最后,将MC_MoveAbsolute模块的输出引脚通过逻辑与运算块进行逻辑运算,保证圆弧插补运算的结束标志。内部控制算法图设计如图4所示。
图4 多轴圆弧插补模块内部算法图
在程序组织单元中将上述设计的多轴圆弧运动功能块进行仿真验证。在程序指令部分将功能块实例化,如图5所示。
图5 设置控制参数的两周圆弧运动模块
根据Codesys软件所提供的SoftMotion功能包的要求,对于每一个坐标轴,要使其能够顺利的进行运动控制,在运动控制程序设计之前对每个周添加使能模块“MC_Power”。本程序需要添加两个“MC_Power”功能模块,用于分配给X、Y两个运动坐标轴,根据要求建立相应的逻辑控制关系。Codesys软件编程界面的变量声明模块进行运动参数的进行设定,见表1。
表1 参数设定表
多轴圆弧运动控制功能块执行过程中轴的速度、位移曲线利用MATLAB对Codesys软件中的数据进行绘制,如下图6、图7所示。
图6 位移曲线
图7 速度曲线
图8 传统圆弧插补方法与圆心偏移法的比较
如图7所示,多轴圆弧插补功能块的两轴运动的速度相对平滑,且没有突变,基本符合柔性控制的要求。图8为多轴圆弧运动的平面轨迹,传统圆弧插补方法不能保证精准的达到目标的终点位置,其终点坐标为(4232,23001),存在一定的误差,而使用基于圆心偏移法的圆弧插补功能块能够准确的达到插补的终点目标。
IEC61131-3编程语言通过现代计算机领域先进的编程技术和PLC编程相结合,为控制系统软件的开提供了一种新的编程方法,这种方法也正在改变着未来工业的控制思想。本文基于Codesys软件的平台,设计了基于结构化文本编程语言和CFC顺序功能图相结合的改进的多轴圆弧插补运动控制功能块。并通过Codesys软件中的SoftMotion运动功能包的编程标准,实现两轴圆弧运动的控制,保证了多轴运动模块的精准性,结合仿真软件对上述多轴圆弧运动控制功能块进行了测试,验证了其有效性和准确性,为运动控制器的控制算法功能块的设计提供了理论基础与解决方案。
[1] 吴玉香,周东霞,林锦赟. 嵌入式软PLC系统的研究和实现[J]. 计算机工程,2009,35(10):235-242.
[2] 巩向信,葛益军. IEC61131-3编程语言的现状[J]. 控制工程, 2007, 14(1): 100-101.
[3] 王晨升,徐新国,朱廷劭. IEC61131-3的通用工业组态软件系统设计研究[J].控制工程, 2010,17(z1):132-136.
[4] 王丽丽,康存锋,马春敏,等. 基于CoDeSys的嵌入式软PLC系统的设计与研究[J]. 现代制造工程, 2007, 3(1): 54-56.
[5] 童建林. CoDeSys在开放式PLC系统中的应用[J].电工技术,2013(7):38-39.
[6] 王伟. 基于CoDeSys的多轴机器人控制系统的研究[D].济南: 山东大学, 2015.
[7] 申华,卢健康,毕玉庆. LMC20型运动控制器的多轴直线联动程序设计[J]. 自动化仪表, 2009, 30(3): 19-21.
[8] 马永超.基于DSP+FPGA多轴运动控制器的研究与实现[D].绵阳:西南科技大学,2015.
[9] 郑仲谦.基于PLCopen的开放式运动控制器研究与实现[D]. 广州: 华南理工大学, 2014.
[10] 申超.基于嵌入式PLC运动控制器开发及其风机控制应用[D].湘潭:湘潭大学,2013.
[11] John K H.Tigelkamp M.IEC61131-3:Pro-garmming Industrail Automation Sys-tems[M].[S.1.]:SpringVerlag,2001.
[12] 张廷坤.基于CoDeSys平台的嵌入式软PLC研究[D].青岛:山东科技大学,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
四川省教育厅科技项目“基于Zynq SoC的六轴四联动焊锡机器人专用控制器设计”(16ZB0145);四川省研究生教育改革创新项目“控制工程专业学位硕士研究生教育实践基地建设”(14JGCX01)
王瀚博(1990—),男,石家庄人,西南科技大学硕士研究生,研究方向为运动控制系统的设计,(E-mail)490707648@qq.com。
TH166;TG659
A