3. 程序迁移的源与目标分析

程序迁移不是把备份文件从一台控制器“搬”到另一台控制器那么简单。ROBOGUIDE 中的项目文件与真实控制器之间存在版本、选项、硬件配置和工艺数据四层耦合关系,任何一层不匹配,都可能在导入阶段报错,或者更隐蔽地在仿真运行阶段表现为轨迹偏移、信号丢失、负载计算异常。因此,在动手迁移之前,必须先完成源与目标的差异识别,把“哪些能直接带过去、哪些必须改、哪些必须重建”判断清楚。

一、源项目版本与目标控制器型号的对应关系

源项目版本通常由两部分构成:ROBOGUIDE 软件版本(如 V9.30、V9.40)和机器人控制器系统版本(如 V9.30P/12、V8.30P/32)。目标控制器型号则决定了可支持的系统版本上限和功能范围。例如,R-30iB Plus 控制器支持较新的系统版本,而 R-30iA 控制器无法直接运行高版本系统生成的项目。迁移时首先要确认:源项目使用的系统版本是否在目标控制器的支持列表内。

如果源版本低于目标控制器支持的最低版本,通常需要先升级源项目;如果源版本高于目标控制器支持的最高版本,则必须降级或重建。ROBOGUIDE 的“转换”功能可以在一定范围内完成版本转换,但转换后必须重新校验运动指令和选项相关配置。一个实用的判断原则是:版本差异越大,需要人工复核的指令和配置就越多,不能仅依赖自动转换结果。

二、软件选项差异识别

软件选项是迁移中最容易出问题的部分。源项目中启用的选项,目标控制器不一定具备;目标控制器已有的选项,源项目也不一定使用。常见的关键选项包括:

  • 运动选项:如 Coordinated Motion、Multi-Group Motion、Continuous Turn 等,影响运动指令的解析方式。
  • 通信选项:如 EtherNet/IP、PROFINET、DeviceNet、CC-Link 等,决定 I/O 映射和信号地址。
  • 工艺选项:如 Arc Welding、Spot Welding、Paint、Palletizing 等,影响专用指令和参数。
  • 视觉与传感选项:如 iRVision、Force Control、Line Tracking 等,涉及坐标系和触发信号。

识别方法是:在源项目导出选项清单,在目标控制器上读取已安装选项清单,逐项比对。对于源有目标无的选项,必须删除或替换相关指令;对于目标有源无的选项,通常不影响迁移,但可能需要在目标端重新配置。特别注意:某些选项之间存在依赖关系,例如 iRVision 依赖视觉硬件和通信选项,不能单独启用。

三、I/O 配置差异

I/O 配置差异主要体现在三个方面:I/O 类型、地址分配和信号极性。源项目可能使用 DeviceNet 远程 I/O,而目标控制器使用 EtherNet/IP;源项目数字输入从 1 开始编号,目标控制器从 0 开始;源项目某信号为常开,目标端为常闭。这些差异会直接导致程序中的 I/O 指令指向错误地址或逻辑反转。

迁移时应建立 I/O 映射表,把源项目的每个信号名称、类型、地址、极性,与目标控制器的实际配置逐条对应。对于无法直接对应的信号,需要修改程序中的 I/O 引用,或者通过中间变量做逻辑转换。ROBOGUIDE 的 I/O 配置界面可以导出和导入配置文件,但导入后必须逐条核对,不能默认“导入成功就等于配置正确”。

四、坐标系与负载数据差异

坐标系差异包括工具坐标系(UTOOL)、用户坐标系(UFRAME)和关节坐标系相关参数。源项目的工具坐标系可能基于旧版工具模型,目标控制器的工具安装法兰尺寸或工具重量不同,导致 TCP 位置和姿态发生变化。用户坐标系则可能因为工件装夹位置改变而需要重新示教。

负载数据差异更为关键。源项目的负载质量、重心位置和惯性矩是基于旧工具和旧工件设定的,目标控制器如果沿用这些数据,会导致伺服增益计算错误,表现为运动抖动、过载报警或轨迹精度下降。迁移时必须重新测量或根据目标工具的实际参数更新负载数据。ROBOGUIDE 中可以在“Payload”配置界面输入质量、重心坐标和惯性矩,并观察仿真运动是否平稳。

源项目与目标控制器差异识别总览 迁移前必须逐项比对,确认可迁移、需修改、需重建三类内容 源项目(Source) 项目版本 ROBOGUIDE V9.30 / 系统 V9.30P 软件选项 Arc / EtherNet-IP / iRVision I/O 配置 DeviceNet DI[1-32] DO[1-16] 坐标系 UTOOL[1] / UFRAME[1-3] 负载数据 质量 8.5kg / 重心 (120,0,85) 程序结构 主程序 + 12 个子程序 目标控制器(Target) 控制器型号 R-30iB Plus / 系统 V9.40 已装选项 Arc / PROFINET / iRVision I/O 配置 PROFINET DI[0-31] DO[0-15] 坐标系 UTOOL[1] / UFRAME[1-2] 负载数据 质量 9.2kg / 重心 (118,0,90) 程序结构 待导入 / 需重新映射 差异识别与处理决策 版本差异 V9.30 → V9.40,需转换后复核 选项差异 EtherNet-IP → PROFINET,需替换 I/O 差异 地址偏移 +1,极性需核对 坐标系差异 UFRAME[3] 目标无,需合并或删除 负载差异 质量 +0.7kg,重心偏移,需更新 程序结构差异 子程序调用关系需重新验证 迁移原则:版本可转换、选项可替换、I/O 可重映射、坐标系可重建、负载必须更新

五、差异识别的实际操作流程

建议按以下顺序执行差异识别,避免遗漏:

  1. 导出源项目配置清单:在 ROBOGUIDE 中打开源项目,导出系统版本、选项列表、I/O 配置、坐标系数据和负载数据。
  2. 读取目标控制器实际配置:连接目标控制器或打开目标 ROBOGUIDE 项目,读取对应配置项。
  3. 逐项比对并标记:对每一项差异标记为“可直接迁移”“需修改”“需重建”三类。
  4. 优先处理阻塞项:选项缺失、版本不兼容、I/O 地址冲突属于阻塞项,必须先解决。
  5. 更新负载和坐标系:即使差异很小,也建议重新测量负载并复核工具坐标系。
  6. 导入后逐程序验证:导入完成后,逐个运行关键程序,观察运动轨迹、I/O 信号和报警信息。
提示:ROBOGUIDE 的“项目比较”功能可以辅助识别部分差异,但它不会检查所有选项依赖关系和负载参数。建议把自动比较结果作为起点,再人工复核关键项。
注意:如果源项目使用了目标控制器不支持的选项,不要强行导入后删除指令,因为部分选项在程序加载阶段就会触发系统错误。正确做法是在源项目中先禁用或替换相关选项,再执行迁移。

六、差异识别检查表示例

下面是一份可直接使用的差异识别检查表,字段根据实际项目增减。表中数据为教学示例,实际迁移时请以现场配置为准。

检查项 源项目 目标控制器 差异判断 处理方式
系统版本 V9.30P V9.40P 低版本→高版本 使用转换功能,复核运动指令
通信选项 EtherNet/IP PROFINET 选项不匹配 替换 I/O 映射,修改通信配置
数字输入起始地址 DI[1] DI[0] 偏移 +1 批量修改 I/O 引用或做逻辑映射
用户坐标系数量 UFRAME[1-3] UFRAME[1-2] 目标少 1 个 合并或删除 UFRAME[3] 相关程序
工具负载质量 8.5 kg 9.2 kg 质量增加 0.7 kg 更新负载数据并重新校验运动
重心位置 (120, 0, 85) (118, 0, 90) Z 向偏移 5 mm 按实际工具重新测量并输入

完成上述差异识别后,迁移工作就有了明确的边界:哪些程序可以直接导入,哪些需要修改,哪些必须重建。这一步做得越细,后续导入和校核阶段返工就越少。特别是在多台控制器之间迁移时,建议把差异识别结果固化成文档,作为迁移记录和后续维护的依据。