1. 建立FOCAS连接并读取系统版本

任务目标

本案例实现一个最小可运行的C程序,通过FOCAS库与FANUC数控系统建立以太网连接,读取并打印系统软件版本号,以此验证通信链路是否正常。程序需处理连接失败、版本读取失败等常见错误,并给出明确的退出码供脚本判断。

环境与依赖

  • 硬件:FANUC数控系统(含以太网功能),PC机
  • 软件:FOCAS开发库(fwlib32.h、fwlib32.lib),Windows平台推荐Visual Studio,Linux平台需安装对应版本库
  • 网络:PC与数控系统处于同一局域网,系统IP地址已知

关键完整代码

// focas_connect.c
#include <stdio.h>
#include <string.h>
#include "fwlib32.h"

int main(int argc, char *argv[]) {
    if (argc != 3) {
        printf("用法: %s <IP地址> <端口号>\n", argv[0]);
        printf("示例: %s 192.168.1.50 8193\n", argv[0]);
        return 1;
    }

    const char *ip = argv[1];
    unsigned short port = (unsigned short)atoi(argv[2]);

    // 建立FOCAS连接
    short ret = cnc_allclibhndl3(ip, port, 10, &handle);
    if (ret != EW_OK) {
        printf("连接失败,错误码: %d\n", ret);
        return 2;
    }
    printf("连接成功,句柄: %d\n", handle);

    // 读取系统软件版本号
    char version[16];
    memset(version, 0, sizeof(version));
    ret = cnc_rdversion(handle, version);
    if (ret != EW_OK) {
        printf("读取版本失败,错误码: %d\n", ret);
        cnc_freelibhndl(handle);
        return 3;
    }

    printf("系统软件版本号: %s\n", version);

    // 断开连接
    cnc_freelibhndl(handle);
    printf("连接已释放\n");
    return 0;
}

编译与运行

Windows (Visual Studio):将上述代码与fwlib32.lib加入工程,编译生成exe。运行:

focas_connect.exe 192.168.1.50 8193

Linux:使用gcc编译并链接FOCAS库:

gcc -o focas_connect focas_connect.c -lfwlib32
./focas_connect 192.168.1.50 8193

验证方法与判定标准

  • 连接成功:程序输出连接成功,句柄: xxx,且无错误码返回。
  • 版本读取成功:输出系统软件版本号: 版本字符串,版本格式通常类似V8.20或30i-B系列标识。
  • 退出码为0:表示整个流程正常完成。
  • 异常验证:故意输入错误IP(如192.168.1.999),程序应输出连接失败错误码并返回2;若系统不支持FOCAS连接,版本读取可能返回错误码,程序返回3。

若程序能输出版本号且退出码为0,即可判定FOCAS通信链路正常,案例目标达成。