3. 数控系统开放接口体系
远程诊断与维护系统能否落地,第一道门槛不是网络,而是“能不能把数控系统内部的数据取出来、把指令送进去”。不同数控系统厂商对开放性的态度和技术路线差异很大:FANUC 走的是专用库函数路线,西门子 828D/840D sl 走的是 OPC UA 与 PLC 变量访问路线,华中数控提供 IPC 接口,三菱、海德汉则各有自己的开放协议。理解这些接口的层次、访问对象和限制,是后续做数据采集、状态监控和远程运维的前提。
一、接口体系的分层认识
无论哪家系统,开放接口大体可以分成三层。最底层是系统内部总线与变量层,例如 FANUC 的 CNC 内部数据区、西门子的 PLC 数据块 DB、华中数控的寄存器区,这一层数据最全但通常不直接对外开放。中间层是厂商提供的开放接口层,如 FOCAS、OPC UA 服务器、IPC 动态库,它们把内部变量映射成可访问的句柄、节点或函数调用。最上层是应用集成层,由诊断软件、边缘网关或 MES 通过 TCP/IP、以太网或现场总线调用中间层接口。选型时首先要问:目标数据在哪一层、接口层是否支持读写、是否需要额外授权。
二、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 的开放程度通常更高,部分选项需要授权。
四、华中数控 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,由上层平台统一消费。这样既保留了原厂接口的数据完整性,又避免了上层直接适配多种私有协议。