西门子S7-200SMAR圆形轨迹的算法及程序

电子说

1.3w人已加入

描述

(1)原理图:Q0.0为X轴脉冲,Q0.2为X轴方向;Q0.1为y轴脉冲,Q0.7为y轴方向

驱动器

(2)实物图:三个步进驱动器,三套电机配合丝杆,定义往电机方向移动为正方向,丝杆的逻辑为4mm,步进驱动的细分设置为3200个脉冲一转。如下图所示:

驱动器

(二)走圆轨迹算法

西门子S7-200SMART系列PLC不支持圆弧插补功能,所以需要自己根据算法进行计算后分别驱动X轴和Y轴的移动从而来实现画圆功能,要驱动XY轴画圆,可采用极限逼近法,把画圆弧变成画线段,如下图所示左侧为六等分,角度a=30°,右侧为十二等分,角度a=15°。

驱动器

从上图中可以看出,当等边多边形的边越多时,则多边形的轨迹就越和圆相近,所以当角度a足够小时,则得到的多边形轨迹就越与圆接近。根据以上分析需要完成画圆功能,我们需要知道“圆心坐标值”、“圆的半径”、“画圆的速度”,然后根据分为三部分来实现:

1、画笔移动到圆上

把XY轴分别回原点,回原点后的位置默认为XY平面坐标的原点,然后由原点移动到圆心坐标,如下图所示1#点为圆心,2#点为圆上点。

驱动器

假设1#点的坐标为(X1,Y1),速度为V,则X轴移动的距离为X1,Y轴移动的距离为Y1。根据勾股定理可计算出原点到圆心的距离“Y(0→1)”、X轴移动速度“VXaxis”和Y轴移动速度“VYaxis” ,计算公式如下所示:

驱动器

当画笔到达1#点后,然后Y轴不动,X轴以V的速度移动半径R的距离到达圆上2#点位置,假2#点的坐标为(X2,Y2)

2、画笔开始画圆

画笔从2#点位置开始移动画圆,假设下个圆上的点为3#点,坐标为(X3,Y3),从圆心到3#点和从圆心到2#点的角度为a,如下图所示:

驱动器

根据三角函数可计算出3#点的坐标(X3,Y3)的值分别为:

X3=Cos(a)*R+X1,Y3=Sin(a)*R+Y1

根据勾股定理可计算出XY轴要移动的距离 “Y(2→3)”的值。X轴移动速度“VXaxis”和Y轴移动速度“VYaxis” ,计算公式如下所示:

驱动器

注:此时X2和Y2为X轴和Y轴的当前位置,X3和Y3为X轴和Y轴要移动的目标位置,速度需要取绝对值。

同理:当画笔到达3#点后,角度变为2a,则对应的圆上点为4#点,坐标为(X4,Y4),如下图所示:

驱动器

根据三角函数可计算出4#点的坐标(X4,Y4)的值分别为:

X4=Cos(2a)*R+X1,Y4=Sin(2a)*R+Y1

根据勾股定理可计算出XY轴要移动的距离 “Y(3→4)”的值。X轴移动速度“VXaxis”和Y轴移动速度“VYaxis” ,计算公式如下所示:

驱动器

注:此时X3和Y3为X轴和Y轴的当前位置,X4和Y4为X轴和Y轴要移动的目标位置,速度需要取绝对值。

依次下去,每走完一次后,角度自加一次,当角度值大于360°时,则认为画圆完成。

(三)PLC程序

根据分析,对于S7-200SMART系列PLC的程序设计主要分为“运动向导的组态配置”、“初始与会原点程序”、“速度计算程序”、“开始画圆程序”

(1)初始化和回原点

驱动器

驱动器

(2)速度换算程序

驱动器

(3)画圆程序

驱动器

子程序结构

驱动器

驱动器

驱动器

程序运行

驱动器

驱动器

**【延伸阅读】S7-200 SMART 运动控制指令详解 **

S7-200 smart 运动控制指令由编程软件向导生成,运动控制指令有很多条构成,且每条指令都带有很多接口参数,想要使用这些指令,要先知道接口是什么意思,虽然帮助文章都有解释,但读懂帮助文件也很费劲,今天就详细给大家介绍运动指令的使用。

S7-200 SMRAT 运动控制指令如下图生成:

1、选择"运动"右键打开。

驱动器

2、本次就以"轴0"为例。

驱动器

3、命个名字。

驱动器

4、数字1位选择工程单位,可以使工程单位,也可以使用脉冲。

数字2是电机旋转一圈的脉冲量,我目前步进拨码设定是10000个脉冲旋转一周

数字3是单位,根据自己需要设定

数字4是电机旋转一圈的工程量,我设定的是360度,也就是说10000个脉冲对应360度。

驱动器

5、方向控制,我是用的脉冲加方向,所以选择单项2轴。

驱动器

6、正负极限根据需要设定,我这个没有正负极限就没有选择。

驱动器

驱动器

7、零电位使用,走绝对位置和相对位置之前一定要定义好原点,否则绝对位置和相对位置不运行。

驱动器

8、0脉冲位置,也可以使用此点定义0点。

驱动器

9、停止根据需要选择,通过阅读STP就能理解什么意思。

驱动器

10、停止根据需要选择,通过阅读TRIG就能理解什么意思。

驱动器

11、禁用根据需要选择,通过阅读DIS就能理解什么意思。

驱动器

12、最大速度和最小速度根据现场情况设定,我设定最大速度为360度/秒。

驱动器

13、JOG命令也就是手动运行,根据需要设定速度,建议设定小一些,看看运行速度再调整。

驱动器

14、此处设定加减速时间,也就是脉冲输出的加减速时间,根据现场情况设定。

驱动器

15、急停补偿。

驱动器

16、反冲补偿,也就是校准丝杠间隙。

驱动器

17、参考点设定

驱动器

18、找零点时速度和方向设定。

驱动器

19、偏移量设定

驱动器

20、搜索参考点方式选择

驱动器

21、从驱动器中读取绝对位置

驱动器

22、曲线设定,我这里没用曲线,没有生成曲线。

驱动器

23、点"建议"自动分配地址。

驱动器

24、组件

驱动器

25、映射显示

驱动器

26、完成,点击生成就完成了。

驱动器

1.启用并初始化轴

AXISx_CTRL子程序(控制)启用和初始化运动轴,方法是自动命令运动轴每CPU更改为RUN模式时加载组态/曲线表。在项目中只对每条运动轴使用此子程序一次,并确保程序会在每次扫描时调用此子程序。使用SM0.0(始终开启)作为EN参数的输入。

驱动器

管脚含义:

MODE:启用模块。1=可发送命令;0=中止进行中的任何命令

Done:完成标志位

Error:错误代码(字节)

C_Pos:轴的当前位置(绝对定位或者相对定位),工程单位:Real型数据;相对脉冲:DINT型数据

C_Speed:轴的当前速度,Real型数据

C_Dir:轴的当前方向(1=反向,0=正向)

2.手动控制轴

AXISx_MAN子例程(手动模式)将运动轴置为手动模式。这允许电机按不同的速度运行,或沿正向或负向慢进。在同一时间仅能启用RUN、JOG_P或JOG_N输入之一。

驱动器

管脚含义:

RUN:1=轴手动运行(速度和方向分别由Speed和Dir管脚控制)0=停止手动控制

JOG_P:1=正转点动控制

JOG_N:1=反转点动控制

Speed:RUN运行时的目标速度,Real型数据

Dir:RUN运行时的方向

Error:错误代码(字节)

C_Pos:轴当前位置(绝对定位或者相对定位),工程单位:Real型数据;相对脉冲:DINT型数据

C_Speed:轴当前速度,Real型数据

C_Dir:轴的当前方向(1=反向,0=正向)

3、查找参考点

走绝对位置和相对位置前需要找到真实的零点,绝对位置和相对位置才能根据零点运行。

AXISx_RSEEK子程序(搜索参考点位置)使用组态/曲线表中的搜索方法启动参考点搜索操作。运动轴找到参考点且运动停止后,运动轴将RP_OFFSET参数值载入当前位置。

驱动器

管脚含义:

START:每接通一个扫描周期,就执行一次查找参考点(参考点查找方式由轴组态确定)

Done:完成标志位

Error:错误代码(字节)

4.绝对或者相对定位

AXISx_GOTO子程序命令运动轴转到所需位置。

驱动器

管脚含义:

START:每接通一个扫描周期,就执行一次定位

Pos:目标位置(绝对定位为坐标点,相对定位为两点间距离),工程单位:Real型数据;相对脉冲:DINT型数据

Speed:目标速度,Real型数据

MODE:移动模式0:绝对位置 1:相对位置 2:单速连续 正向旋转 3:单速连续反向旋转

Abort:停止正在执行的运动

Done:完成标志位

Error:错误代码(字节)

C_Pos:轴当前位置(绝对定位或者相对定位),工程单位:Real型数据;相对脉冲:DINT型数据

C_Speed:轴当前速度,Real型数据

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分