一,概述
前面介绍过,发那科CNC数据采集一般有两种方法:
(1)通过Focas开发包进行二次开发,Focas开发包支持win32、win64、linux32、linux64、arm linux 32
(2)通过TCP协议方法。该方法不局限于CPU架构(x86、ARM、MIPS等等),不局限操作系统(Windows、Linux、FreeRTOS、RT-Thread、μC/OS、裸机等等均可),不局限编程语言(Java、Python、C/C++、C#、Go等等均可)。
下面对两种方法都进行相应介绍。
PS:使用TCP协议方式。非常适合于ARM Linux 64位程序,以及单片机(STM32、GD32、ESP32等);也可以很方便集成到软件平台里。
二,FOCAS 1/2 开发包方式
1,使用SDK的Demo源码可以从下面地址下载
发那科CNCSDKDemo源码,Focas1_2SDKDemosourcecode,,C#-C#文档类资源-CSDN下载
主要的库是Fwlib32.dll以及fwlib1.dll。
(1)Fwlib32.dll是负责和fanuc通讯的组件,用来对客户端发送的数据进行转义加密再和数控系统通讯。
(2)fwlib32.dll是核心的函数操作库,封装了各类数据读取函数。
所以,采集程序是对fwlib32.dll进行函数调用,fwlib32.dll再将数据通过Fwlib32.dll库和数控系统进TCP通讯,数控系统响应数据返回给Fwlib21.dll,Fwlib21.dll再将数据返回给fwlib32.dll进行解析,最终反馈采集程序。
2,撸代码
namespace FANUC
{
public partial class control_axis : Form
{
public control_axis()
{
InitializeComponent();
}
Fanuc.ODBPOS fos = new Focas1.ODBPOS();
private void duqu_position_rel_info()//读取相对的位置信息
{
short num = Fanuc.MAX_AXIS;
short type = -1; ;
short ret = Fanuc.cnc_rdposition(Fanuc.h, type, ref num, fos);
if (ret == 0)
{
listBox1.Items.Add(fos.p1.rel.name.ToString() + ": " + fos.p1.rel.data * Math.Pow(10, -fos.p1.rel.dec));
listBox1.Items.Add(fos.p2.rel.name.ToString() + ": " + fos.p2.rel.data * Math.Pow(10, -fos.p2.rel.dec));
listBox1.Items.A