3. 现场程序迁移前的资产盘点
现场程序迁移最怕的不是“搬不过去”,而是“搬过去才发现少东西”。机器人能手动运行,不代表程序能自动跑;能自动跑,不代表安全逻辑、外部设备通信和标定数据都完整。资产盘点的目的,就是在动手迁移之前,把控制器里所有会影响程序运行和现场行为的“家底”查清楚,形成一份可核对、可追溯、可交接的迁移清单。
RobotStudio 离线环境与真实控制器的差异,往往不在 RAPID 代码本身,而在代码之外的系统层资产。一个典型的 IRC5 或 OmniCore 控制器中,与迁移直接相关的资产至少分布在六个层面:RAPID 程序模块、系统参数、EIO 配置、示教器用户数据、备份文件、版本记录。它们不是并列的六个文件夹,而是有依赖关系的:RAPID 模块调用 EIO 信号,EIO 信号依赖系统参数中的总线与单元配置,系统参数又受控制器软件版本和选项约束,而备份文件和版本记录则是这一切的“快照”和“身份证”。
图中展示了六类资产与迁移清单之间的汇聚关系,以及它们之间的依赖方向。实际盘点时,建议按“版本记录 → 系统参数 → EIO 配置 → RAPID 模块 → 示教器用户数据 → 备份文件”的顺序推进,因为后一项的完整性往往依赖前一项的确认结果。
一、RAPID 模块:不只是复制 .mod 文件
RAPID 程序通常由多个模块组成,包括主程序模块(如 MainModule)、功能模块、通信模块、安全模块等。盘点时不能只看模块名称,要逐项确认以下内容:模块类型(程序模块 / 系统模块)、是否加密、是否被 UAS 或 SafeMove 引用、模块内是否包含 LOCAL 变量、是否使用了 PERS 持久变量、是否定义了中断程序、是否引用了外部轴或 MultiMove 配置。
一个容易被忽略的点是模块的“加载方式”。如果原系统使用 Load 指令在运行时动态加载模块,迁移后必须保证目标控制器中模块路径和文件权限一致。另外,如果模块中使用了 TPWrite 或 TPReadFK 等示教器交互指令,要确认目标示教器语言设置是否匹配,否则可能出现乱码或按键无响应。
盘点结果应记录为模块清单,至少包含:模块名、类型、文件路径、是否加密、依赖的全局变量、被哪些例行程序调用。示例记录如下:
模块名 类型 文件路径 加密 关键依赖
MainModule 程序模块 /HOME/Programs/Main.mod 否 socket1, gripper
GripperCtrl 程序模块 /HOME/Programs/Grip.mod 否 doGrip, diGrip
SafeZone 系统模块 /HOME/Programs/Safe.mod 是 SafeMove选项
CommTCP 程序模块 /HOME/Programs/Comm.mod 否 socket1
二、系统参数:迁移后最容易“水土不服”的部分
系统参数决定了机器人的运动学行为、通信行为和单元行为。盘点时重点检查四类参数:Motion(轴配置、关节限位、工具坐标系、工件坐标系、负载)、IO(信号定义、交叉连接、安全信号)、Man-machine(示教器语言、单位、日期格式)、Communication(总线类型、IP 地址、站号)。
其中,工具坐标系(tooldata)和工件坐标系(wobjdata)必须逐条核对。如果原系统使用了 ActUnit 或 DeactUnit 切换单元,还要确认目标控制器的单元配置是否一致。一个实用的做法是:在 RobotStudio 中打开原系统备份,导出 Motion 和 IO 参数为 .cfg 文件,再与目标控制器逐项比对。差异项要标注“需修改”“需确认”或“可忽略”。
RobotWare 选项(如 PC Interface、Multitasking、SafeMove)必须与目标控制器一致。如果目标控制器缺少某个选项,相关 RAPID 指令将无法编译或运行。三、EIO 配置:信号映射的“接线图”
EIO 配置定义了机器人控制器与外部设备之间的信号映射关系,包括总线类型(DeviceNet、PROFINET、EtherNet/IP 等)、设备地址、信号名称、信号类型(DI/DO/AI/AO)、信号方向、交叉连接(Cross Connection)和单元分配。盘点时,要逐条记录每个信号的名称、类型、地址和所属单元。
特别要注意的是“交叉连接”和“安全信号”。交叉连接用于在控制器内部建立信号之间的逻辑关系,如果迁移后遗漏,可能导致外部设备无法正确响应。安全信号(如 ESTOP、GS、AS)通常与安全 PLC 或安全继电器配合,必须确认目标控制器的安全配置与原系统一致。
建议在盘点时直接导出 EIO.cfg 文件,并生成一份信号对照表。示例片段如下:
信号名 类型 地址 单元 说明
diGripOpen DI 0-0 Board1 夹爪打开到位
doGripClose DO 0-1 Board1 夹爪闭合指令
diSafeDoor DI 0-2 Board1 安全门状态
doAlarmLamp DO 0-3 Board1 报警灯输出
aiPressure AI 0-0 Board1 气压模拟量
四、示教器用户数据:容易被忽视的“软资产”
示教器用户数据包括用户账号、权限等级、语言设置、自定义按键、屏幕布局、快捷菜单等。这些数据虽然不直接影响程序逻辑,但会影响操作人员的日常使用和故障处理效率。如果原系统设置了多级用户权限(如操作员、程序员、管理员),迁移后必须重新创建对应的用户和权限,否则可能出现“程序能跑但改不了”的尴尬局面。
盘点时,记录以下内容:用户列表及权限等级、当前语言、自定义按键映射、屏幕布局文件、是否有自定义的 FlexPendant 界面。如果原系统使用了 RobotStudio 的 ScreenMaker 功能,还要确认目标控制器是否安装了对应的 ScreenMaker 选项。
五、备份文件与版本记录:迁移的“底稿”和“身份证”
备份文件是迁移的底稿。盘点时,要确认备份的类型和完整性:完整备份(包含系统参数、RAPID 程序、EIO 配置、用户数据)、系统备份(仅系统参数)、程序备份(仅 RAPID 程序)。建议至少保留一份完整备份,并记录备份时间、备份人、备份文件大小和存放路径。
版本记录则是迁移的“身份证”。必须记录原控制器的 RobotWare 版本号、选项列表、补丁号、控制器序列号、机器人型号和序列号。这些信息决定了目标控制器需要满足的最低版本要求。如果目标控制器版本低于原系统,可能需要先升级 RobotWare,否则部分指令或选项无法使用。
六、形成迁移清单:从盘点结果到可执行文档
盘点的最终产出是一份迁移清单。清单不是简单的资产列表,而是一份可核对、可追溯、可交接的工作文档。建议清单包含以下字段:资产类别、资产名称、原系统位置/值、目标系统要求、差异说明、处理方式、负责人、确认状态。
示例迁移清单片段如下:
| 资产类别 | 资产名称 | 原系统值 | 目标系统要求 | 差异 | 处理方式 | 状态 |
|---|---|---|---|---|---|---|
| 版本记录 | RobotWare | 6.10.01 | ≥6.10.01 | 无 | 直接迁移 | 已确认 |
| 系统参数 | tooldata | tool0, tool1 | 需重建 | 坐标系偏移 | 重新标定 | 待处理 |
| EIO 配置 | diGripOpen | 0-0 | 0-0 | 无 | 直接迁移 | 已确认 |
| RAPID 模块 | SafeZone | 加密 | 需 SafeMove | 选项缺失 | 升级选项 | 待处理 |
| 示教器数据 | 用户权限 | 3 级 | 3 级 | 无 | 重建用户 | 待处理 |
清单完成后,建议进行一次“反向核对”:从目标控制器的角度出发,逐项确认每个资产是否已就位、是否可编译、是否可运行。例如,打开 RobotStudio 的虚拟控制器,导入 RAPID 模块和 EIO 配置,尝试编译并运行主程序。如果编译通过且信号映射正确,说明盘点基本到位;如果出现错误,则回到清单中定位缺失项。
资产盘点的价值,不在于“列了多少项”,而在于“迁移时能不能一次到位”。一份好的迁移清单,应该让接手的人不需要反复询问原系统的情况,就能独立完成迁移和校核。这也是现场程序迁移从“凭经验”走向“可复现”的关键一步。