使用Solidworks、ADAMS、Simulink进行机电联合仿真

我在做课设、大作业的时候经常要做机电联合仿真,这个过程中遇到了许多不同的困难,现在将这些问题记录下来,以备不时之需,也能和同志们分享学习。

后来的补充:强烈建议没有强制要求的同志不要用ADAMS仿真了,在这篇文章里你会看到我从各个角度吐槽这个软件难用,但是当时的课程设计要求我们使用ADAMS进行仿真。现在我本人已经转用Recurdyn进行机电联合仿真了,Recurdyn的仿真性能更强,人机交互也更加优秀,还支持柔性零部件的有限元分析,有机电联合仿真需求的同志都可以尝试。我还犹豫过要不要把这个文章写完,但是转念一想还是得有始有终,因此把怎么使用ADAMS进行机电联合仿真补完。

将Solidworks模型导入ADAMS

第一种方法是Solidworks模型直接另存为Parasolid(.x_t)文件,然后在ADAMS中File -> Import...。但是这样导入的装配体没有装配关系,需要在ADAMS中重新添加,很繁琐。

第二种方法是在Solidworks插件中选择Solidworks Motion,然后在下面Motion Study中选择Motion分析,稍微拖动一下时间轴,点击计算,随后右键装配体选择输出到ADAMS,这样会生成一个.adm文件,在ADAMS中直接Open即可。这样导入的装配体装配关系已经设置完成了,直接进行下一步仿真即可。

从Solidworks Motion中导出的步骤

在ADAMS中建立机械系统和接口

在用了一段时间ADAMS之后,我只能说ADAMS非常难用,它的许多设计是违反用户的使用习惯的,界面的冗余太多,而真正有用的功能却往往藏在看不见的地方,更不必说匮乏又模糊的错误提示了。所以在使用ADAMS中,要特别小心,不然可能就得从导入模型开始重做。(这也是为什么我要从Solidworks中导入带装配关系的模型,仿真也要用Simulink联合仿真,就是为了避开ADAMS这个折磨人的东西)

第一步自然是打开ADAMS。在ADAMS的使用过程中务必注意ADAMS的工作路径,一般来说ADAMS的默认工作路径都是C盘的Users文件夹,而Files->Open Database不会自动切换工作路径。如果工作路径不对,输出的所有控制框图和算例结果都不会出现在ADAMS模型文件夹内,所以设置好工作路径非常非常重要。除了开始界面能选择工作路径以外,Files->Select Directory也能变更ADAMS的工作路径。

为什么是Users?简直莫名其妙
### 实现SimulinkAdams联合仿真中的足端轨迹跟踪并显示 在SimulinkAdams联合仿真的环境中,为了实现在Adams中对足端轨迹的跟踪并在物体上显示,可以采用以下方法和设置: #### 1. 创建机械系统模型 在Adams中建立所需的机械系统模型。对于涉及足端运动的应用场景,确保该模型能够精确表示实际系统的几何结构及其动力学特性[^1]。 #### 2. 定义传感器测量变量 针对要追踪的对象(即“足部”),定义相应的传感器来捕捉其位置变化数据。这通常涉及到创建标记点(marker)或使用现有的关节坐标作为输出量。这些测得的数据将会被传递给Matlab/Simulink用于进一步处理[^2]。 #### 3. 配置接口连接 通过Dymola、FMI或其他支持的方式配置好两者之间的通信桥梁,使得来自Adams的结果可以直接输入到Simulink模块内;反之亦然,允许控制系统指令反馈至物理模拟器当中去影响后续动作的发展过程。 #### 4. 编写脚本绘制路径图 利用MATLAB强大的绘图功能编写一段简单的M文件代码片段,读取由上述步骤获得的位置序列信息,并将其可视化成连续曲线附着于目标实体表面之上。下面给出了一段Python风格伪代码示意如何操作这一部分逻辑: ```python import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def plot_trajectory(trajectory_data, object_surface): fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Assuming trajectory_data is a list of tuples/lists containing x,y,z coordinates xs, ys, zs = zip(*trajectory_data) ax.plot(xs, ys, zs, label='Foot Trajectory', color="red") # Plot the object surface here using appropriate data and methods ax.legend() plt.show() # Example usage with fabricated trajectory points and placeholder for actual object surface plotting code example_traj_points = [(0, 0, 0), (1, 1, 1), ... ] # Replace this line with real trajectory point extraction from simulation results. object_surface_placeholder = None # Implement proper method to visualize your specific object's surface. plot_trajectory(example_traj_points, object_surface_placeholder) ``` 请注意这段代码仅作概念展示用途,在具体应用时需依据实际情况调整适应不同软件环境下的API调用方式。 #### 5. 同步更新视窗内容 最后一步是要保证整个动画播放期间图像能实时反映出最新的状态改变情况。这意味着每当完成一轮迭代计算之后就要立即刷新一次图形窗口内的所有元素,从而达到流畅自然的效果呈现目的。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值