基本信息
文件名称:《数字孪生技术及应用》课件7.2-指尖陀螺智能制造柔性产线数字孪生开发.pptx
文件大小:6.23 MB
总页数:18 页
更新时间:2025-06-18
总字数:约2.43千字
文档摘要

DigitalTwinFactory

第七章

典型应用案例

第一节

工业综合实训平台开发

芜湖安普机器人产业技术研究院有限公司

DesignedByJC

导入模型

基于数字孪生指尖陀螺智能制造示范线,抽取指尖陀螺装配工艺,设计模块化装配工作站。运用DTF数字孪生工厂软件、PLC、三维建模软件等工具,实现智能制造线与数字孪生镜像。

打开DTF软件后,单击“导入几何元”,选择“智能制造数字孪生实训台模型.STEP”文件,导入DTF软件,模型导入时间取决电脑性能。

调整模型姿态

导入几何模型后,发现几何模型姿态不合理,不方便操作。控制模型绕X轴转动90度,即可调节为正常姿态。

立体仓库模型拆分

针对较复杂产线数字孪生系统的开发,建议独立开发每台设备,保存为独立的项目文件。全部设备开发完成后,再集成独立的项目文件为一个整体项目,完成整条生产线数字孪生开发。

铆压工作站模型拆分

打螺丝工作站模型拆分

激光打标工作站模型拆分

成品装盒工作站模型拆分

AGV小车模型拆分

射线传感器定义

检测工装板到达特定区域,可以利用射线传感器“RaycastSensor”,其属性中有4个部分相对重要。

最大范围:沿Z轴呈射线状检测的距离范围

组件信号:显示检测到的组件对象

布尔信号:表示组件经过检测目标线

坐标框:设定检测目标点

在AGV外形中,创建1个布尔信号“AGV-BOOL”、1个组件信号“AGV-COMP”、1个射线传感器“RaycastSensor”、1个容器“ComponentContainer”、1个Python脚本“motion”、1个坐标框“工装板到达位置”,射线传感器属性栏,添加对应关系。

小车运动脚本编写

当完成所有准备工作后,可利用Python脚本定义抓取等动作。AGV小车运行状态,可利用传送带上的信号关联控制。当传送带正转信号“forward”亮时,意味AGV小车已到达接泊位置。

小车信号关联

小车Y方向属性修改

为了方便观察和操作每个定义轴,在建立3个Link链接的同时,在各链接下创建不同本体,与不同的运动状态和功能相对应。尽量错开3个部分本体,避免部分本体间相互影响,以及AGV小车运动姿态不符合设想。但需要注意,每个连接都需要一一对应,不可为空,否则在定义物体运动时,运动状态没有对应的物体,从而导致误判。

在Vehicle本体中创建3个链接,设置好3个链接父子级关系,分别更改名为Y方向、X方向、R角度。

根据以前章节介绍的操作步骤,设定符合此项目的链接属性,不再赘述。

双向输送线定义

双向输送线对应两种动作,即收料和送料,出现两种输送路径。为了方便理解和控制,可以共用两个坐标框,定义两条方向相反的路径,添加两个单向路径“OneWayPath”,“往顶升工位方向”和“加工后离开”两个布尔信号配合使用,触发两条输送路径,避免两个输送路径相互影响,导致仿真结果错误。

输送线起始点定义

使用单向路径还存在一个问题,即到达终点后物料组件便消失不见,这并不是想要的结果,与实际并不相符。所以,在定义传送带模块时,一般与其他模块相结合。比如,气缸顶升和下降动作,可以利用气缸的顶升运动,希望物料上升到终点,物料不会消失。所以,在设定起点和终点时,尽量让两个坐标框远离。

顶升对象处理

在工装板开始运动,即离开“RaycastSensor”检测范围时,“RaycastSensor”无法检测到物料。所以,在工装板被顶起之前,即“RaycastSensor”还可以检测物体时,借助“ComponentSignal”组件信号中转,保存已检测的组件名称,在后面路径中继续使用。关于射线传感器“RaycastSensor”操作,在前面定义AGV小车时已详细解释,不再赘述。那么,可以单独编写一个Python脚本,用于储存组件名称,同时添加一个射线传感器“RaycastSensor-03”,用于顶升气缸中心工装板检测和定义。

路径行为设定

每个路径都可创建一个对应的链接,“收料”路径对应工装板移动至顶升气缸位置;“送料”路径对应加工完成,工装板移到AGV停泊点。在链接下创建相应的射线传感器“RaycastSensor”和“RaycastSensor-02”,具体操作见AGV小车定义。利用射线传感器“RaycastSensor”抓取工装板至对应的单向路径。

输送线路径脚本

工装板添加至输送路径后,需要激活该路径,实现工装板上下料。为此,可以利用AGV小车的信号,协同运行。“Task-01”信号为AGV小车启动前往第一个上下料停泊点,即立体仓库模块。激活输送路径程序解释如下。

AGV=app.findComponent(AGV小车)#在虚拟世界坐标系中找到组件“AGV小车”

t01=AGV.findBehaviour(Task-01)#在