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通信链路正常,案例目标达成。