QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 3508|回复: 3
打印 上一主题 下一主题

[原创] Step函数曲线方程浅析

[复制链接]

大校

Rank: 8Rank: 8

115

主题

257

帖子

1万

积分
跳转到指定楼层
楼主
发表于 2020-11-2 20:26:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 muoubear* 于 2020-11-2 21:50 编辑

官方帮助文档关于STEP函数的表述如图1所示:

图1 STEP函数表述

官方将STEP函数称之为三阶混合函数,图1中对于STEP函数的表述译文如下:

STEP(u, xmin, ymin, xmax, ymax)

其中:
u<xmin,Step=ymin
u>xmax,Step=ymax
xmin<u<xmax, Step函数返回三阶函数值,使该点位于(xmin,ymin)和(xmax,ymax)两点之间,三阶函数在xmin和xmax处的斜率为0。

为了和软件中STEP函数的参数字符对应,并方便讲解,使用下面的表述:
y =STEP(x, x0, h0, x1, h1)

其中
x,时间变量,取值范围[0,t],t为解算方案中的时间。
x0,[0, t]时间区间上某个时间点;
h0,x<x0,Step=h0;
x1,[0, t]时间区间的另一个时间点;
h1,x>x1,Step=h1;;
(x0,h0)和(x1,h1)两点之间为三次函数值,三次函数在两点处的斜率为0。

从图1可以看出STEP函数的曲线可以分为3部分:
当 x<x0时,y1=h0,y1为一段水平直线
x0<x<x1时,y2=?y2为一段拟合曲线,拟合曲线两端分别相切于两段水平直线
x>x1时,y3=h1,y3为一段水平直线

这里我们并不知道拟合曲线的方程,图1资料仅指出该曲线为三阶函数曲线,这里我们先假设该曲线为二阶函数曲线,并将两点间的拟合曲线拆分成两部分,用一元二次方程顶点式分别表示这两段曲线的方程,表述如下:
y1 =h0,x∈[0, x0],y1为一段水平直线;
y2 = a*(x-x0)^2+h0,x∈[x0,x1],y2为一段开口向上的二次曲线,与y1相切于最低点(x0,h0),与y3相切于点((x0+x1)/2,(h0+h1)/2);
y3 =-a*(x-x1)^2+h1,x∈[x0,x1],y3为一段开口向下的二次曲线,与y3相切于最高点(x1,h1),与y2相切于点((x0+x1)/2,(h0+h1)/2);
y4 =h1,x∈[x1, t],y4为一段水平直线。

以上y1和y2曲线方程确定,y3和y4两段二次曲线方程系数a待求,两曲线形状完全相同,y4相当于y3绕点((x0+x1)/2,(h0+h1)/2)旋转了180度。

将已知点((x0+x1)/2,(h0+h1)/2)代入到y2,y3中,则

可得 a= 2*(h1-h0)/(x1-x0)^2

将a的值代入到y2,y3方程,则

可得        y2= 2*(h1-h0)/(x1-x0)^2 * (x-x0)^2+h0,x∈[x0,(x0+x1)/2]
                        y3=-2*(h1-h0)/(x1-x0)^2 * (x-x1)^2+h1,x∈[(x0+x1)/2,x1]

所以整段曲线的方程可表示为:
y=h0,x∈[0, x0]
•2*(h1-h0)/(x1-x0)^2 * (x-x0)^2+h0,x∈[x0,(x0+x1)/2]
•-2*(h1-h0)/(x1-x0)^2 * (x-x1)^2+h1,x∈[(x0+x1)/2,x1]
•h1,x∈[x1, t]

参考上述二次曲线的做法,我们也用方程顶点式分别表示这两段三次曲线的方程,表述如下:
y1 =h0,x∈[0, x0],y1为一段水平直线;
y2 =a*(x-x0)^3+h0,x∈[x0,x1],y2为三次曲线的凹曲线部分,与y1相切于最低点(x0,h0),与y3相切于点((x0+x1)/2,(h0+h1)/2);
y3 =a*(x-x1)^3+h1,x∈[x0,x1],y3为三次曲线的凸曲线部分,与y3相切于最高点(x1,h1),与y2相切于点((x0+x1)/2,(h0+h1)/2);
y4 =h1,x∈[x1, t],y4为一段水平直线。

以上y1和y2曲线方程确定,y3和y4两段三次曲线方程系数a待求,两曲线形状完全相同,y4相当于y3绕点((x0+x1)/2,(h0+h1)/2)旋转了180度。

将已知点((x0+x1)/2,(h0+h1)/2)代入到y2,y3中,则

得 a= 4*(h1-h0)/(x1-x0)^3

将a的值代入到y2,y3方程,则
y2= 4*(h1-h0)/(x1-x0)^3 * (x-x0)^3+h0,x∈[x0,(x0+x1)/2]
y3= 4*(h1-h0)/(x1-x0)^3 * (x-x1)^3+h1,x∈[(x0+x1)/2,x1]

所以整段曲线的方程可表示为:
y=h0,x∈[0, x0]
•4*(h1-h0)/(x1-x0)^3 * (x-x0)^3+h0,x∈[x0,(x0+x1)/2]
•4*(h1-h0)/(x1-x0)^3 * (x-x1)^3+h1),x∈[(x0+x1)/2,x1]
•h1,x∈[x1, t]

官方帮助没有给出STEP函数(x0,h0)和(x1,h1)两点之间的曲线方程,以上关于STEP曲线方程纯属推测,下面我们在软件中进行验证。
在草图中绘制一个边长为100的正方形,正方形左下角再绘制一个直径为5的圆,如图2所示。

图2 绘制草图

选择这个圆作为连杆,选该连杆进行驱动,x方向使用多项式驱动,速度为10,y方向使用函数驱动,其STEP函数表示为:
STEP(x, 1, 10, 9, 90),表示前1s时,y=10,9s后,y=90,两点间则为三次混合曲线。

对圆心创建标记并追踪,可以得到该函数的曲线轨迹,如图3所示。

图3 STEP函数曲线轨迹

版权声明  
本人声明此帖为本人原创帖,未经允许,不得转载!

有奖推广贴子: 

工厂一线拧螺丝10余年,工作经验仅限于此,喜欢玩运动仿真,how-it-works是我的微信公众号,欢迎大家关注。
回复

使用道具 举报

大校

Rank: 8Rank: 8

115

主题

257

帖子

1万

积分
沙发
 楼主| 发表于 2020-11-2 20:40:46 | 只看该作者
首先验证我们二次曲线方程,我们使用IF函数驱动,曲线的IF函数表示为:
IF(x<x0, h0, IF(        x<(x0+x1)/2, 2*(h1-h0)/(x1-x0)^2 * (x-x0)^2+h0,IF(        x<x1, -2*(h1-h0)/(x1-x0)^2 * (x-x1)^2+h1, h1)))

重新求解,可发现二次拟合曲线的追踪点轨迹和STEP函数的轨迹不一致,如图4所示。

图4 二次函数拟合曲线轨迹

再验证三次曲线方程,使用IF函数驱动,曲线的IF函数表示为:
IF(x<x0, h0, IF(        x<(x0+x1)/2, 4*(h1-h0)/(x1-x0)^3 * (x-x0)^3+h0,IF(        x<x1, 4*(h1-h0)/(x1-x0)^3 * (x-x1)^3+h1, h1)))

重新求解,可发现三次拟合曲线的追踪点轨迹和STEP函数的轨迹仍不一致,如图5所示。

图5 三次函数拟合曲线轨迹

部分书籍和教程上有给出STEP函数的方程,其表示如下:
y= h0 ,x∈[0, x0]         h0+((x-x0)/(x1-x0))^2*(h1-h0),x∈[x0, x1]         h1,x∈[x1, t]

验证上述方程,使用IF函数驱动,曲线的IF函数表示为:
IF(x<x0, h0, IF(        x<x1, h0+((x-x0)/(x1-x0))^2*(h1-h0),h1))

重新求解,可发现上述拟合曲线的追踪点和STEP函数轨迹不符,是一条方向向上的二次曲线,曲线仅在最低点(x0,h0)处和第一段水平线相切,如图6所示。

图6 其他二次方程拟合曲线轨迹






总结:根据上面分析可以看出,STEP函数拟合段的曲线方程并非上述这些方程,以上关于STEP函数拟合曲线的分析为个人观点,仅供参考。

STEP函数官方在线文档链接:https://docs.plm.automation.siemens.com/data_services/resources/nx/12/nx_help/common/zh_CN/graphics/fileLibrary/nx/tdoc_motion/simcenter_motion_expressions.pdf

工厂一线拧螺丝10余年,工作经验仅限于此,喜欢玩运动仿真,how-it-works是我的微信公众号,欢迎大家关注。
回复 支持 反对

使用道具 举报

中校

Rank: 7Rank: 7Rank: 7

11

主题

659

帖子

1万

积分
地板
发表于 2021-10-28 14:20:48 | 只看该作者
讲的太好了。最近学运动仿真,网上搜到的STEP函数都是如何运用,学到的也是一知半解。经过楼主这么讲解,对STEP函数的认识加深了一层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-4-20 06:08

返回顶部