Adams驱动函数单位与符号d的解析

笔者在做Adams与Matlab联合仿真过程中,设置驱动函数发现与理想的情况不符合。最后通过与同学讨论与自己的实验找到了一点规律,希望对有同样的问题的同学有些帮助。

   同时,由于实验不充分,许多问题没有得到充分的验证,希望大家以怀疑与纠错的态度阅览本文,若其中有不正确的地方,望多多批评指正。

驱动函数单位与d的联系

  • 对于滑动关节,数值参数后均不加d
  • 转动关节,数值参数后不加d ,理解数值参数单位为弧度;数值参数后加d ,理解数值参数单位为角度。

虽然在软件中设置了默认角度单位值(一般机械设计行业默认MMKS,角度单位为度),但是在转动关节中若数值后不加符号d,默认为弧度。

例如,设置一个幅值为90度,周期为10s的驱动函数,有以下可能情况,但仅方法1满足要求:

# 方法1 (正解)
step (MOD( time , 10 ),0,0d,5,90d) + step (MOD( time , 10 ),5,90d,10,0d) -90d
# 方法2 (所有角度数值均理解为弧度单位)
step (MOD( time , 10 ),0,0,5,90) + step (MOD( time , 10 ),5,90,10,0) -90
# 方法3 (混合方法1与2)
step (MOD( time , 10 ),0,0,5d,90d) + step (MOD( time , 10 ),5,90d,10d,0) -90

关于d的理解

所有表达式、函数的输入、输出参数均无单位(角度无单位换算后即rad)。

   若要输入单位为角度的数值参数进行计算,通过将其乘以pi/180,换算为弧度大小,再代入函数实现。为了表述简便,令d = *pi/180

对于输入为角度参数的函数,有两种实现方法:

  1. 输入角度参数单位为弧度,直接代入函数进行计算。
  2. 输入角度参数单位为角度,将角度参数后加d,换算为弧度后,代入函数进行计算。 分别详细地有:
  • 在驱动函数表达式中,如果可以将[数值]d视为角度进行表达式的正常计算(调用的函数形参单位可以度时),可以认为d表示前一个数值参数单位为度。
30d  # --> 30度
30d * time  # --> 30*t 度*s
step(time, 0, 0d, 5, 90d)  # step中参数为单位为度
1 + 1d  # --> 1rad + 1度 = 58.296度 (交换律)
1 - 1d  # --> 1rad - 1度 = 56.296度 (交换律)
2 * 45d  # --> 90度 (交换律)
sin(90d)  # --> sin(90d) = 1 = 1rad = 57.296度
  • 在驱动函数表达式中,如果不可以直接视为角度进行表达式的计算(调用的函数形参单位不可为度时),将[角度数值]d(单位: 度)转化为[弧度数值](单位:rad)代入计算。可以理解为
# 除法
1 / 1d # --> 42.8064度
"""
计算过程:
∵d不可直接视为单位进行除法
∴1 / 1d
= 1 / (1 * (pi/180))
= 1 / (1 * (pi/180)) rad
= 180 / pi rad
= 180 / pi * (180/pi) 度
= 3282.80635 度
= 9 * 360度 + 42.806358 度
= 42.806358 度
"""
# 开方
sqrt(1d)  # --> 7.5694度
"""
计算过程:
∵d不可直接视为单位进行开方运算
∴sqrt(1d)
= sqrt(1 * (pi / 180) rad)
= sqrt(1 * (pi / 180))
= sqrt(1 * (pi / 180)) rad
= 0.1321109099 rad
= 7.569397566 度
"""
  • d表示时间微分结果(待研究)
DTOR * 779737d  # --> 0

驱动函数写法

  • 数值参数
# 期望得到180度
3.1415926  # --> 180度
pi # --> 180度
  • 数值参数 + d
# 期望得到180度
180d  # --> 180度
  • 数值参数 + d 并配合可用表达式
# 期望得到0~180度的动态变化
step(time, 0, 0d, 5, 180d)
  • DTOR * 非数值表达式(返回一个无单位数值参数)
# 期望得到一个度数为表达式的返回值的角度(expression = 180, 单位: 度)
# DTOR 为度单位变化为rad的值 = pi/180
DTOR * [expression] # --> 180度
[注意] 语法要求不可直接在表达式之后+d。 例如,表达大小等于10度的角度大小: 不可使用:sqrt(100)d 可替换为:DTOR * sqrt(100)

总结

  • 如果有一个确定的角度数值参数(实际的数值,如180,90之类的数),使用[数值参数]d的方法。
180d
180d * time
  • 如果有一个返回值单位为角度的表达式(例如varval(系统变量)),使用DTOR * [expression]的方法。
DTOR * varval(InputFromMatlab_UintInDegree)


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空