3. 数控系统开放接口体系

远程诊断与维护系统能否落地,第一道门槛不是网络,而是“能不能把数控系统内部的数据取出来、把指令送进去”。不同数控系统厂商对开放性的态度和技术路线差异很大:FANUC 走的是专用库函数路线,西门子 828D/840D sl 走的是 OPC UA 与 PLC 变量访问路线,华中数控提供 IPC 接口,三菱、海德汉则各有自己的开放协议。理解这些接口的层次、访问对象和限制,是后续做数据采集、状态监控和远程运维的前提。

一、接口体系的分层认识

无论哪家系统,开放接口大体可以分成三层。最底层是系统内部总线与变量层,例如 FANUC 的 CNC 内部数据区、西门子的 PLC 数据块 DB、华中数控的寄存器区,这一层数据最全但通常不直接对外开放。中间层是厂商提供的开放接口层,如 FOCAS、OPC UA 服务器、IPC 动态库,它们把内部变量映射成可访问的句柄、节点或函数调用。最上层是应用集成层,由诊断软件、边缘网关或 MES 通过 TCP/IP、以太网或现场总线调用中间层接口。选型时首先要问:目标数据在哪一层、接口层是否支持读写、是否需要额外授权。

数控系统开放接口体系与访问路径对比 应用集成层 诊断软件 / 边缘网关 TCP/IP · OPC UA Client MES / 远程运维平台 REST · MQTT · 数据库 数据采集终端 轮询 · 订阅 · 事件触发 HMI / 手持终端 现场查看 · 报警确认 厂商开放接口层 FANUC FOCAS C 语言动态库 句柄 + 函数调用 以太网 / HSSB 西门子 OPC UA 828D / 840D sl 节点 ID + 订阅 PROFINET / 以太网 华中数控 IPC IPC 动态库 / 共享内存 寄存器读写 本地总线 / 以太网 三菱 / 海德汉 EZSocket / RemoTools 专用协议 + 授权 以太网 / 串口 系统内部数据层 CNC 状态 / 坐标 报警 · 程序 · 刀具 PLC 数据块 DB I/O · 标志位 · 定时器 寄存器 / 参数区 进给 · 主轴 · 补偿 驱动 / 伺服数据 电流 · 温度 · 负载 箭头表示数据访问方向:应用层通过接口层读写系统内部数据

二、FANUC FOCAS:函数库式访问

FOCAS 是 FANUC 提供的开放接口库,本质是一组 C 语言动态链接库(如 fwlib32.dll 或 libfwlib32.so),通过以太网或 HSSB 与 CNC 通信。它的访问模型是“句柄 + 函数”:先用 cnc_allclibhndl3() 建立连接并取得句柄,再用 cnc_rdposition()、cnc_rdalmmsg()、cnc_rdparam() 等函数读取坐标、报警、参数,用 cnc_wrparam() 等写入。FOCAS 的优点是数据粒度细、实时性较好,能拿到很多 HMI 上看不到的底层状态;缺点是必须用 C/C++ 或支持调用动态库的语言开发,且不同 CNC 型号、不同 FOCAS 版本支持的函数集有差异,需要查对应手册确认。

一个典型的连接与读取流程如下(示例参数,非实测):

// 示例:FOCAS 连接与读取绝对坐标
#include "fwlib32.h"
unsigned short h;
short ret = cnc_allclibhndl3("192.168.1.10", 8193, 10, &h);
if (ret != EW_OK) { /* 连接失败,检查 IP、端口、超时 */ }

ODBPOS pos;
ret = cnc_rdposition(h, 1, &num, &pos);   // 1 表示绝对坐标
// pos.data[i].data 为各轴坐标值,单位与系统设定一致

cnc_freelibhndl(h);   // 释放句柄

判断连接是否成功,关键看返回值是否为 EW_OK;若返回 EW_SOCKET 或 EW_HANDLE,通常是网络不通、端口被占用或句柄未正确释放。实际工程中建议把连接、读取、释放封装成独立函数,并加超时与重连逻辑。

三、西门子 828D/840D sl:OPC UA 与 PLC 变量

西门子 828D 和 840D sl 的开放接口以 OPC UA 为主。系统内置 OPC UA 服务器,把 CNC 和 PLC 的关键变量映射为节点,客户端通过节点 ID 访问。与 FOCAS 的函数调用不同,OPC UA 是面向对象的地址空间模型:每个变量有 NodeId、数据类型、访问权限,支持订阅(Subscription)和监控项(MonitoredItem),数据变化时主动推送,适合做报警和状态监控。

访问前需要在 HMI 上启用 OPC UA 服务器、配置用户权限和端口(默认 4840)。常见节点包括机床坐标、进给倍率、主轴转速、报警号、PLC 的 DB 块变量。例如读取某轴当前位置,需要先查到对应 NodeId,再建立会话和订阅。828D 与 840D sl 在节点命名和可用范围上有差异,840D sl 的开放程度通常更高,部分选项需要授权。

OPC UA 的优势是跨平台、语义清晰、支持订阅;劣势是节点配置依赖厂商文档,且部分高端功能需要额外授权。做选型时,若现场以西门子为主且需要与 MES 对接,OPC UA 通常是首选。

四、华中数控 IPC 接口

华中数控的开放接口以 IPC(Industrial PC)动态库和共享内存为主。系统运行在工控机上,应用可以通过调用 IPC 提供的库函数或直接访问共享内存区,读写寄存器、坐标、报警和 PLC 状态。它的特点是本地访问延迟低、数据更新快,适合做实时性要求较高的采集;但接口的跨平台性和标准化程度不如 OPC UA,通常需要在华中数控的软件框架内开发,或按其提供的 SDK 进行封装。

实际使用中,常见做法是写一个本地采集服务,通过 IPC 接口周期读取寄存器,再转成 MQTT 或 OPC UA 对外发布。这样既利用了本地接口的低延迟,又解决了远程访问的标准化问题。

五、三菱、海德汉等开放协议

三菱的开放接口主要有 EZSocket 和 MELSEC 通信协议,前者用于 CNC,后者更多用于 PLC;海德汉则提供 RemoTools SDK 和基于以太网的协议,用于访问 TNC 系统的状态和程序。这些接口的共同点是:厂商专用、文档相对封闭、部分功能需要授权或购买选件。选型时如果现场设备品牌单一,可以优先用原厂接口;如果品牌混杂,则更适合通过边缘网关做协议转换,统一成 OPC UA 或 MQTT 再上传。

六、对比与选型要点

接口 访问方式 数据粒度 实时性 标准化 典型适用场景
FANUC FOCAS 动态库函数调用 细,可到轴/参数级 较高 厂商专用 FANUC 单机或产线深度采集
西门子 OPC UA 节点订阅/读写 中,取决于节点配置 中高,支持订阅 国际标准 西门子设备与 MES/云平台对接
华中数控 IPC 动态库/共享内存 细,本地寄存器级 高 厂商专用 华中数控本地实时采集
三菱 EZSocket 专用协议/库 中 中 厂商专用 三菱 CNC 状态监控
海德汉 RemoTools SDK/以太网协议 中 中 厂商专用 海德汉 TNC 系统集成

选型时建议按以下顺序判断:第一,现场设备品牌和型号决定可用接口;第二,需要的数据类型和实时性决定接口层次;第三,是否需要与上层平台标准化对接决定是否加边缘网关;第四,授权和开发成本决定最终方案。对于多品牌混线场景,比较务实的做法是:在每台设备侧用原厂接口采集,再统一转换为 OPC UA 或 MQTT,由上层平台统一消费。这样既保留了原厂接口的数据完整性,又避免了上层直接适配多种私有协议。

无论选用哪种接口,都要注意:读写权限要最小化,写操作必须加确认和回滚机制;采集频率不宜过高,避免占用 CNC 资源影响加工;接口授权和版本兼容性要在项目前期确认,避免实施阶段才发现功能不可用。