4. PLCnext工程创建与硬件组态
PLCnext Engineer 的工程创建并不是“新建一个空项目”这么简单,它决定了后续机器人从站能否被正确识别、I/O 数据能否按预期映射到程序变量。本节围绕项目结构、设备描述、GSDML 导入、机器人从站配置、I/O 映射与变量命名规范展开,并以一台典型的六轴机器人为例,说明从空工程到可下载组态的完整过程。
一、工程结构与设备描述的组织方式
PLCnext Engineer 采用“项目—节点—设备—通道”的树形结构。新建工程后,首先在项目树中建立控制器节点,例如 AXC F 2152 或 AXC F 3152,再在其下挂载 PROFINET IO 子系统。控制器节点承载 PLC 程序、任务与全局变量;IO 子系统承载分布式从站及其模块。机器人通常作为 PROFINET IO 设备挂在控制器下方,而不是作为独立控制器存在。
设备描述分为两层:控制器自身的设备描述由 PLCnext Engineer 内置的设备库提供,选择具体订货号即可;第三方从站(机器人、远程 IO、变频器)则需要厂商提供的 GSDML 文件。GSDML 是 PROFINET 设备的“身份证 + 说明书”,其中包含设备标识、支持的模块、模块插槽、输入输出数据长度、诊断信息以及参数化选项。没有正确的 GSDML,工程中就无法把机器人从站实例化,也无法确定其 I/O 数据宽度。
GSDML 子文件夹,把机器人、远程 IO 等第三方设备的 GSDML 文件集中存放,并在文件名中保留版本号,例如 GSDML-V2.35-Robot-X6-20240115.xml,便于后续升级与回溯。二、GSDML 导入与设备库更新
导入路径为:菜单 工具 → 设备管理 → 导入 GSDML。选择 XML 文件后,PLCnext Engineer 会解析设备家族、设备名称与版本,并写入本地设备库。导入成功后,在“设备目录”中会出现对应的设备家族,例如 Robot Vendor → X6 Series。若同一设备存在多个版本,工程中应固定使用一个版本,避免不同版本模块结构不一致导致组态漂移。
导入时需注意三点:一是 GSDML 版本要与设备固件匹配,机器人固件升级后往往需要同步更新 GSDML;二是文件名与内部 DeviceIdentity 必须一致,否则可能导入失败;三是导入后建议重启一次工程环境,确保设备目录刷新完整。若导入报“Schema 校验失败”,通常是 XML 被编辑器改写过,应使用厂商原始文件。
三、机器人从站的添加与参数配置
在 IO 子系统中添加机器人从站时,需要设置设备名称(Device Name)和 IP 地址。设备名称是 PROFINET 运行期识别从站的唯一逻辑标识,必须与机器人侧配置一致,例如 robot-x6-01;IP 地址建议按网段规划,例如控制器 192.168.1.10,机器人 192.168.1.21。设备名称与 IP 一旦确定,应写入项目文档,避免现场重复分配。
添加从站后,按 GSDML 描述插入模块。典型机器人从站包含:状态字模块(输入 2 字节)、控制字模块(输出 2 字节)、机器人位置反馈模块(输入 12 字节,6 轴 × 2 字节)、笛卡尔坐标反馈模块(输入 12 字节)、以及若干数字量 I/O 模块。模块的插槽号、数据方向与长度由 GSDML 固定,工程中不能随意更改,只能选择是否启用。
示例:机器人从站模块配置(假设值)
Slot 1 Status Word Input 2 Byte
Slot 2 Control Word Output 2 Byte
Slot 3 Joint Feedback Input 12 Byte
Slot 4 Cartesian Feedback Input 12 Byte
Slot 5 Digital Input Input 4 Byte
Slot 6 Digital Output Output 4 Byte
参数化方面,机器人从站常提供“通信看门狗时间”“急停响应方式”“坐标单位”等选项。看门狗时间应大于 PLC 任务周期与网络抖动的总和,例如任务周期 10 ms、网络抖动约 5 ms,则看门狗可设为 50~100 ms。若设置过小,网络瞬时拥塞就会触发从站掉站。
四、I/O 映射与变量命名规范
组态完成后,需要把物理 I/O 地址映射到程序变量。PLCnext Engineer 支持在设备视图中直接为每个通道分配变量,也支持在变量表中集中声明。映射的核心原则是:地址与变量一一对应,方向明确,命名可读。例如机器人状态字映射为 stRobotX6_01_StatusWord,控制字映射为 cmdRobotX6_01_ControlWord。
命名规范建议采用“方向_对象_编号_功能”的结构:st 表示状态输入,cmd 表示命令输出,di/do 表示数字量,ai/ao 表示模拟量。对象名使用设备类型与编号,功能名使用英文缩写。这样在程序中出现 cmdRobotX6_01_ControlWord 时,可以立即判断它是发往 1 号 X6 机器人的控制字。
Data1、Var001 这类无意义名称,也不要把输入变量命名为 cmd...。方向前缀与数据方向不一致,会在后续调试中造成误判,尤其是状态字与控制字成对出现时。对于结构化数据,建议把机器人相关变量组织为结构体或功能块接口,例如 RobotX6_01 结构体包含 StatusWord、Joint[1..6]、Cartesian[1..6]、ControlWord、Command 等成员。这样在程序中以 RobotX6_01.Joint[3] 访问第三轴角度,语义清晰,也便于后续复制到第二台机器人。
五、从组态到可下载工程的检查要点
完成上述配置后,建议按以下顺序自检:设备名称与机器人实际配置是否一致;IP 地址是否在同一网段且无冲突;GSDML 版本与固件是否匹配;模块插槽与数据长度是否与 GSDML 描述一致;每个通道是否已分配变量且方向正确;变量命名是否符合规范;看门狗时间是否大于任务周期与网络抖动之和。全部通过后编译工程,若无错误即可下载。
下载后观察机器人从站的连接状态:在设备视图中应显示绿色“已连接”,状态字中“就绪位”应置 1。若显示红色或黄色,优先检查设备名称、IP 与 GSDML 版本,而不是先怀疑程序逻辑。只有组态层稳定,后续的机器人控制字交互与运动命令才有可靠基础。