S型速度曲线_博图+变频器+三相异步电机(以堆垛机控制系统举例)

1、 引入问题

在PLC+变频器+三相异步电机的控制结构下,如何实现被控制对象速度、位置的平滑过渡,并减少对机械系统造成的冲击?
本次项目采用西门子S7_1500、丹佛斯变频器FC302、SEW三相异步电机;程序的实现是基于 Sinx*Sinx 的 S 型速度曲线的生成并仿真测试运行 ,其有以下优点:
①由于 Sinx*Sinx 曲线具有的一阶二阶连续性,加速度和加加速度都符合正/余弦特性,相比传统的S曲线其加加速度并不连续而系统柔性受到一定限制的特点,尽可能的保证了加减速过程的平滑稳定。
②同时由于Sinx*Sinx 曲线加速度先增加后减小到的特征,整条曲线不用再分成七段或五段计算而采用传统速度曲线的三段速。

转载请先后台留言,大家一起支持原创!!!

2、 前置知识

前言:插补的本质是在执行环节用微小直线段来逼近曲线
1、数据采样插补又称为时间分割法:其原理是将加工一段曲线的时间划分 为若干个相等的插补周期,每经过一个插补周期就进行一次插补运算,计算出该插补周期内变频器的速度字。—本项目直接以曲线本身来进行插补,插补周期为1ms计算一次。
2、由于在[0,π /2] 内 ∫sinx*sinxdx 与 ∫(2/π )xdx 的积分是相等的,故梯形加速度与S型加速度间可以等效转换 即S_a=T_a * 2/Π (Π=3.1415926)
3、Vmin:保证堆垛机可靠停准的最小运行速度
4、滑行距离:设备接近目标点前的低速匀速运行距离
5、计算公式:

5.1、电机参数计算公式:(默认起始速度为0,加速度==减速度)
电机执行机构速度 m/s:(额定转速r/min*Π*执行轮直径/减速比)/60 
梯形速度曲线平均加速度 m/s^2:T_a=Vmax/t     
S形速度曲线平均加速度 m/s^2:S_a=T_a*2/Π  
最短减速距离mm:1000*(1/2S_a*t^2)+滑行距离 
注意:若电机为提升电机,则电机当量速度应在除以2
5.2、插补计算公式:
速度曲线V插补:v(t)=sin(x)*sin(x) == Sin(a*Π/2T)* Sin(a*Π/2T)*Vmax;
加速度曲线a插补:a(t)=sin(2x) == Sin(X*Π/T);
加加速度j插补:j(t)=2cos(2x);
加速度面积_积分:∫sin2xdx = 1/2(1-cos(2x)); x属于(0,Π/2)故积分面积为1;
位置曲线积分s(t)=∫v(t)dx=1/4(2x-sin2x);

6、曲线形状
曲线1:曲线速度能达到最大速度,曲线中存在匀速段
曲线2:曲线速度不能达到最大速度,曲线中不存在匀速段

在这里插入图片描述

3、思想及实现

1、约束输入条件在正常计算范围内有效:系统最大速度Vmax、加减速度时间t、滑行距离mm
2、使能条件满足时计算一次:
(1)依据输入电机额定转速、减速比、执行机构直径参数计算出电机运行当量速度,再转化为m/s
(2)复位计算过程中间数据:中断循环次数、积分面积、S曲线动作步等
(3)依据剩余距离,判断当前所能达到的最大速度,分三段限制不同段长下的最大运行速度
(4)依据最大速度,计算出梯形速度曲线下平均加速度、等效成S速度曲线下平均加速度、计算出最短减速距离+滑行距离
(5)依据目标位置、当前位置、最短减速距离计算出 加速停止位置、减速开始位置
3、实时判断S曲线动作步
(1)依据当前位置与加减速位置的关系,当前位置与目标位置的关系、计算出S型曲线的动作步,并产生标志位—S曲线的大致轮廓
(2)停止复位中间数据,控制数据、仿真测试数据
(3)将插补值输出到速度控制字,且限定范围,减速时不小于3HZ、最大值<=16384
(4)实时监控变频器反馈的速度值,转换为常用单位HZ、m/s
3、中断内对速度曲线进行插补
(1)不同阶段的特性选择不同插值方式:①采用1ms为一个时间周期,对加速度曲线sin2x进行积分求出加速度在[0,π /2] 内的面积,在切分成N分(N=加减速时间1000倍),中断1ms循环一次,数值加1即增加N份中的一份。②将加速度等效为速度曲线sinxsinx中的变量,即加速度每增加,则速度增加,且加速度增加曲线平滑、速度曲线增加平滑。—加减速算法一致,匀速运行部分采用直线插补法。
(2)在加速段、匀速段、加速段分别对速度曲线的位置增量计算,保证速度曲线与位置曲线内在物理公式成立

4、实验仿真测试

4.1、S曲线的数据划分
在这里插入图片描述
4.2、FC函数块内程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.3、中断插补处理
在这里插入图片描述
在这里插入图片描述
4.4、仿真测试

在这里插入图片描述

在这里插入图片描述

5、总结

前期找资料见了一些步进电机的速度曲线、MATLAB仿真的、C语言的,一直没有适合自己用的。这次做个PLC的S型曲线案例并且结合实际工厂应用,多多分享,欢迎点评!参考“一种基于sinx*sinx的S型速度曲线的生成”一文。
程序及设计资料点击链接(已上传资源),感谢支持!

注意:
①电脑仿真没有实际CPU扫描的速度快,中断间隔时间<2ms,仿真时中断程序的执行时间不会减小!
②HMI仿真刷新频率最快为100ms,仿真曲线不能按程序实际刷新速率显示!

  • 26
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论
博图是西门子公司推出的一种PLC编程语言,程序块是博图中的一种编程元素,用于实现特定的功能。在博图中,可以使用数据类来定义变量,以便在程序块中使用。下面是关于博图和程序块数据类的介绍: 博图是一种基于图形化编程的PLC编程语言,它使用图形符号来表示程序块和变量,使得程序的编写更加直观和易于理解。博图中的程序块可以分为功能块和组态块两种类,其中功能块用于实现具体的功能,而组态块则用于配置PLC的硬件和软件环境。 程序块数据类博图中的一种数据类,它可以用于定义变量的类和结构。在程序块中,可以使用数据类来定义变量,以便在程序块中使用。程序块数据类可以包含多个变量,每个变量可以是不同的数据类,例如bool、int、real等。程序块数据类的定义可以在程序块中进行,也可以在全局数据块中进行。 下面是一个示例程序,演示了如何在博图中使用程序块数据类: ```ladder logic FUNCTION_BLOCK Motor VAR_INPUT motorRunning : BOOL; // 电运行状态 motorErr : BOOL; // 电故障状态 motorStart : BOOL; // 电启动状态 motorFrequence : REAL; // 电频率 END_VAR VAR_OUTPUT motorStop : BOOL; // 电停止状态 END_VAR VAR // 定义一个程序块数据类 TYPE motorType : STRUCT motorRunning : BOOL; // 电运行状态 motorErr : BOOL; // 电故障状态 motorStart : BOOL; // 电启动状态 motorFrequence : REAL; // 电频率 END_STRUCT END_TYPE // 定义一个变量,类为motorType motorData : motorType; END_VAR // 程序块的逻辑实现 IF motorStart THEN motorData.motorRunning := TRUE; motorData.motorFrequence := motorFrequence; ELSE motorData.motorRunning := FALSE; END_IF IF motorErr THEN motorData.motorErr := TRUE; motorData.motorRunning := FALSE; ELSE motorData.motorErr := FALSE; END_IF motorStop := NOT motorData.motorRunning; END_FUNCTION_BLOCK ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放青松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值