APP下载

PLCopen多轴圆弧运动控制功能块的实现

2017-03-02王瀚博刘知贵范玉德

自动化仪表 2017年2期
关键词:功能块编程语言圆弧

罗 亮, 王瀚博, 刘知贵, 范玉德

(1.中国工程物理研究院电子工程研究院,四川 绵阳 621900;2.西南科技大学信息工程学院,四川 绵阳 621010;3.西南科技大学研究生院,四川 绵阳 621010;4.中国工程物理研究院化工材料研究所,四川 绵阳 621900)

PLCopen多轴圆弧运动控制功能块的实现

罗 亮1,2, 王瀚博2, 刘知贵3, 范玉德4

(1.中国工程物理研究院电子工程研究院,四川 绵阳 621900;2.西南科技大学信息工程学院,四川 绵阳 621010;3.西南科技大学研究生院,四川 绵阳 621010;4.中国工程物理研究院化工材料研究所,四川 绵阳 621900)

针对目前市场上运动控制器编程语言不兼容、编程方法繁琐等问题,深入研究了基于PLCopen规范的功能块模型设计及圆弧插补算法的工作原理。首先,在试验室现有的“多轴运动控制器+μC/OS-Ⅲ”平台上,选用目前工控界广泛推广的德国3S公司的Codesys软件作为开发平台,以多轴圆弧运动控制功能块作为编程对象,采用结构化文本语言和顺序功能图,设计运动控制功能块。其次,通过在嵌入式系统中移植Codesys SP内核,使硬件平台成为符合IEC编程标准的可编程逻辑控制器,实现底层功能块的接口设计。最后,将设计好的功能块下载到控制器中,在Matlab中进行速度与位移曲线的仿真。仿真结果表明,功能块可达到设计要求,能够完成多轴运动,并可被移植到其他硬件平台上,具有很好的兼容性与复用性。

IEC 61131-3; PLCopen; 运动控制; 编程语言;连续功能图

0 引言

近年来,随着PLC编程语言标准化程度的逐步提高,自动化产品的解决方案互补兼容,但运动控制产品的市场依旧各行其事,产品之间的编程语言存在差异,用户在使用不同产品时还需重新学习[1-2]。这会造成产品安装、维护上的不便,容易使不同运动控制设备的使用产生混乱,同时给制造商的运动控制产品集成带来困难,工程实施也因此更为复杂[3]。

PLCopen标准定义的运动控制功能块具有很强的移植性和通用性,其已成为工控界运动控制编程语言的首选[4]。目前,国内外对PLCopen运动控制功能块的研究主要集中在直线运动方面,且通常是直接在编程软件中进行设计[4],对多轴圆弧运动控制功能块的设计相对较少。本文以试验室的多轴运动控制器作为硬件平台,采用实时操作系统μC/OS-Ⅲ,并结合Codesys SP内核,将嵌入式硬件平台变成符合IEC国际标准的可编程逻辑器。同时,对圆弧插补运动控制原理进行研究,在软件中实现多轴圆弧运动控制功能块的设计。多轴运动功能块的接口编程分为两部分,其中Codesys软件采用ST编程,硬件平台采用C语言编写。

1 系统结构

系统上层软PLC采用德国3S公司开发的、符合IEC编程标准的可编程逻辑控制系统软件开发平台。基于Visual Studio 2010中的C语言平台,对符合PLCopen规范的运动控制功能块进行开发。硬件平台采用试验室开发的“多轴运动控制器+μC/OS-Ⅲ”。软PLC与运动控制器之间采用串口和工业以太网进行通信,功能块下载到运动控制器后,通过I/O模块输出。运动控制器系统的整体框架如图1所示。

图1 运动控制器系统框架示意图

2 PLCopen功能块的实现

2.1 功能块模型设计

PLCopen运动控制功能块提供的标准是以IEC 61131-3功能块概念为基础,主要包括类型名、输入引脚、输出引脚、内部控制算法[5]。任意的功能块都能构建多个实例,由用户编程来进行设置。其中,输入和输出引脚本质上是运动控制模块内部算法的接口,PLCopen标准根据运动控制算法所需要的位移、速度等运动控制参数,结合编程语言写入控制软件所需状态,给出输入、输出状态[6]。而功能块中的内部算法是隐藏的,通过输入引脚来获得使用者设定的运动参数,经过运算后,再由输出引脚反馈至用户编写的控制软件。

根据PLCopen的定义,功能块被分为三大类:单轴、多轴和轴组[7]。本文以多轴运动为研究对象。PLCopen标准功能块主要由管理类功能块和运动功能块两部分组成。管理类功能块主要负责电源模块的开关使能,轴的状态信息和运动参数的读写及报错功能等;运动类功能块主要负责与轴相关的信息运控[8]。

基于PLCopen规范中轴组的设计理念实现多轴功能块,并建立轴组状态图。在轴组状态图中,对轴组的每个指令进行描述;轴组的状态位于每个单轴状态的顶部,其主要由单轴状态图构成。在轴组状态中,各个单轴状态被同时激活。轴组状态分为:静立状态、运动状态、停止状态、静止状态、报错状态、回零状态[9]。

2.2 圆弧插补原理

基于圆弧插补算法进行多轴圆弧运动。圆弧插补实质上是将圆弧转换成若干小段直线,采用圆弧割线或切线来进行理论圆弧的插补,并通过每个插补点的位置来确定插补周期过程中各个轴的增量[10]。圆弧插补主要是在极坐标下完成的。

对于圆弧PsPe,圆弧圆心为O,起点坐标为Ps(xs,ys),终点坐标为Pe(xe,ye),合进给速度为V,圆心角θ=V/R,φ为插补补点角度。第一象限逆圆弧如图2所示。

图2 第一象限逆圆弧

圆弧插补算法的步骤如下。①进行坐标角的变换,将圆弧插补运算的初始坐标和终止坐标换算为与之对应的起始角fs和终止角fe。②计算插补运算中的合进给速度V和圆心角θ。③计算每个插补周期横纵坐标增量dxi与dyi。④将坐标增量累计到当前插补点的坐标。⑤与终点判别条件进行对比,若满足条件则停止,否则继续进行圆弧插补运算[11]。

2.3 运动控制功能块的实现

根据德国3S公司Codesys软件的规定,用户可以选择不同方式进行PLCopen标准功能块的开发。一种是在实时运行系统中进行设计,即外部进行开发;另一种是采用IEC 61131-3标准的编程语言完成开发,即内部实现。这两种方式的实现都需要Codesys软件中的Propertie选项。内部实现除了包括利用IEC语言实现功能块输入、输出接口的定义外,还包括运动控制算法的具体代码实现,如图4所示。相比于外部实现,内部实现更加简洁、易于理解。

图4 内部功能块开发示意图

因此,本文选用内部实现的方式完成多轴运动控制功能块的开发。即在不同的硬件平台中实现Codesys SP内核的移植和功能块的接口定义,以实现功能块的调用。

Codesys软件将功能块中设计好的接口文件和源代码文件编译生成二进制文件,在硬件平台启动过程中加载到运动控制器的内存中。硬件平台中多轴圆弧运动功能块对应的结构体如下所示。

Typedef struct tag mc_movecircular_list_create_struct

{

Void*__VFTABLEPOINTER;

//虚拟函数指针

RTS_IEC_DBOOL Execute;

//输入参数

RTS_IEC_DREAL Acceleration;

RTS_IEC_DREAL Deceleration;

RTS_IEC_DREAL Jerk;

RTS_IEC_DBOOL SpeedMode;

RTS_IEC_DREAL Xs;

RTS_IEC_DBOOL Done;

//输出参数Done

RTS_IEC_DBOOL Busy;

RTS_IEC_DBOOL Error;

RTS_IEC_DWORD ErrorID;

} mc_movecircular_list_create_struct;

上述结构体是多轴运动功能在底层的存在方式,实时操作系统中通过对结构体的调用来完成对输入、输出接口的定义和操作。

2.4 运动控制功能块的开发

在Codesys软件中新建程序组织单元(program organization unit, POU),采用IEC 61131-3标准中的结构化语句程序设计语言ST来实现功能块的内部算法。新建功能块Center_Offside,在变量定义界面对圆心偏移功能块中的输入、输出变量进行声明,定义输入变量的初始坐标为(xs,ys),终点坐标为(xe,ye),圆心为(x0,y0)。输出变量为经过圆心偏移算法计算后的偏移圆心坐标。调用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在圆弧的内侧,则:

(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

完成圆心偏移判别模块与圆弧插补模块的设计后,在Codesys软件中新建组织程序单元,编程语言采用连续功能图(continuous function charts,CFC)设计语言进行多轴圆弧插补功能块的程序设计。CFC编程主要基于功能块来实现,通过功能块的软连接,完成运算或控制。声明多轴圆弧插补模块的名称为MC_MoveCircular2DRelative,将上述设计的圆心偏移判别模块和圆弧插补模块实例化,如POU1: Center_Offside;POU2:yuanhuchabu;圆心偏移模块的输出引脚与圆弧插补模块的圆心输入引脚相连接,声明指令速度、加速度和减速度变量。调用SoftMotion功能包中符合IEC 61131-3标准的功能块MC_MoveRelative。将圆弧插补模块的输出变量与MC_MoveRelative模块的Distance引脚进行连接,作为各轴运动的终点坐标。最后,将MC_MoveRelative模块的输出引脚通过逻辑与运算块进行逻辑运算,从而结束圆弧插补运算。

3 功能块的执行验证

采用Codesys软件,对MC_MoveCircular2DRelative功能块进行验证。将Codesys软件中设计好的运动功能块编程后下载至硬件平台中。输入参数设置如表1所示。

表1 参数设置表

将基于Codesys SP内核的μC/OS-Ⅲ操作系统移植到 “OMAPl138+μC/OS-Ⅲ”开发板上,调用开发板的PWM驱动进行脉冲控制,修改I/O驱动代码,以在硬件平台中进行运动控制。在此,以脉冲p作为I/O口的计量单位。

采用Maltab和Codesys对多轴运动控制功能块中各个轴的速度以及位移进行联合仿真,通过Codesys软件中的追踪功能,在Matlab中实现数据曲线绘制,以插补周期S为计量单位,其运动曲线及运动空间曲线分别如图5、图6所示。

由图5、图6可知,圆弧运动功能块速度平滑,无明显突变现象,符合S形速度柔性控制要求,且圆弧插补算法能够准确到达指定位置。

图5 圆弧运动控制模块的运动曲线图

图6 功能块的运动空间曲线图

4 结束语

本文基于分模块的结构设计了多轴运动功能块模型;通过对硬件平台驱动代码的修改,根据上层Codesys软件的统一功能块接口编写程序,并在“OMAPL138 +μC/OS-Ⅲ” 控制板中得到了实现。验证表明,以Codesys为平台所设计的多轴运动控制功能块符合PLCopen标准中对于功能块的要求。多轴运动功能块能够在不同的平台中运行,可以解决PLC不同平台编程语言不兼容的问题。

[1] 吴琳,谭营,唐建.运动控制技术发展与展望[J].机床与液压,2007,35(7):231-233.

[2] 巩向信,葛益军.IEC61131-3编程语言的现状[J].控制工程, 2007,14(1):100-101.

[3] 王晨升,徐新国,朱廷劭.IEC61131-3的通用工业组态软件系统设计研究[J].控制工程, 2010, 17(1):132-133.

[4] 曹苏雷.基于IEC6113103标准功能块组态软件设计与实现[D].大连:大连理工大学,2007.

[5] 童建林.CoDeSys在开放式PLC系统中的应用[J].电工技术,2013(7):38-39.

[6] 金丽娟,严义,刘罡.基于IEC61131-3的运动控制模块设计[J].机电工程,2013,30(6):759-763.

[7] 申华,卢健康,毕玉庆.LMC20型运动控制器的多轴直线联动程序设计[J].自动化仪表, 2009, 30(3):19-21.

[8] 徐杰.伺服电机多轴联动系统设计[D].杭州:浙江理工大学,2015.

[9] 郑仲谦.基于PLCopen的开放式运动控制器研究与实现[D].广州: 华南理工大学, 2014.

[10]申超.基于嵌入式PLC运动控制器开发及其风机控制应用[D].湘潭:湘潭大学,2013.

[11]吴玉香,周东霞,林锦赟.嵌入式软PLC系统的研究和实现[J].计算机工程,2009,35(10):235-237.

[12]张廷坤.基于CoDeSys平台的嵌入式软PLC研究[D].青岛:山东科技大学,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)、四川省研究生教育改革创新项目(14JGCX01)

罗亮(1977—),男,博士,讲师,主要从事嵌入式系统的研究与装备控制器的研发。E-mail: luoliang@swust.edu.cn。 王瀚博(通信作者),男,在读硕士研究生,主要从事嵌入式软PLC技术的研究。E-mail: 490707648@qq.com。

TH-39;TP311

A

10.16086/j.cnki.issn 1000-0380.201702003

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

猜你喜欢

功能块编程语言圆弧
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
浅析圆弧段高大模板支撑体系设计与应用
外圆弧面铣削刀具
计算机软件开发的JAVA编程语言及其实际应用分析
基于IEC61131-3标准运动控制器的设计与应用*
基于PLCopen的六轴工业机器人运动控制功能块设计
浅谈不同编程语言对计算机软件开发的影响
自定义功能块编程在反渗透膜自动清洗设备中的应用
Ovation系统FIRSTOUT和FIFO跳闸首出比较
双圆弧齿同步带的载荷特性研究