软文采集系统(发那科(Fanuc)IP地址与FOCAS端口设置|巫迪科技)

优采云 发布时间: 2022-04-13 02:09

  软文采集系统(发那科(Fanuc)IP地址与FOCAS端口设置|巫迪科技)

  一、概述

  如前所述,发那科数控数据一般有两种方法采集:

  (1)通过FOCAS 1/2开发包二次开发采集数据(仅限windows系统)

  (2)通过纯TCP协议方式。此方式不限于CPU架构(x86、ARM、MIPS等),不限于操作系统(Windows、Linux、FreeRTOS、 RT-Thread等)、μC/OS、裸机等),不限于编程语言(Java、Python、C/C++、C#、Go等)。

  下面介绍了这两种方法。

  PS:建议直接使用纯协议方式。比如产品使用了ARM Cortex-M,可以达到非常高的性价比。

  二、FOCAS 1/2开发包方法

  1、SDK和Demo可以从以下地址下载

  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.Add(fos.p3.rel.name.ToString() + ": " + fos.p3.rel.data * Math.Pow(10, -fos.p3.rel.dec));

listBox2.Items.Add(fos.p1.dist.name.ToString() + ": " + fos.p1.dist.data * Math.Pow(10, -fos.p1.dist.dec));

listBox2.Items.Add(fos.p2.dist.name.ToString() + ": " + fos.p2.dist.data * Math.Pow(10, -fos.p2.dist.dec));

listBox2.Items.Add(fos.p3.dist.name.ToString() + ": " + fos.p3.dist.data * Math.Pow(10, -fos.p3.dist.dec));

}

}

public void duqu_position_ab_info()//获取绝对位置信息

{

short num = Fanuc.MAX_AXIS;

short type = -1; ;

short ret = Fanuc.cnc_rdposition(Fanuc.h, type, ref num, fos);

if (ret == 0)

{

listBox8.Items.Add(fos.p1.abs.name.ToString() + ": " + fos.p1.abs.data * Math.Pow(10, -fos.p1.abs.dec));

listBox8.Items.Add(fos.p2.abs.name.ToString() + ": " + fos.p2.abs.data * Math.Pow(10, -fos.p2.abs.dec));

listBox8.Items.Add(fos.p3.abs.name.ToString() + ": " + fos.p3.abs.data * Math.Pow(10, -fos.p3.abs.dec));

listBox7.Items.Add(fos.p1.dist.name.ToString() + ": " + fos.p1.dist.data * Math.Pow(10, -fos.p1.dist.dec));

listBox7.Items.Add(fos.p2.dist.name.ToString() + ": " + fos.p2.dist.data * Math.Pow(10, -fos.p2.dist.dec));

listBox7.Items.Add(fos.p3.dist.name.ToString() + ": " + fos.p3.dist.data * Math.Pow(10, -fos.p3.dist.dec));

}

}

public void get_postion()//获取位置信息

{

listBox3.Items.Clear();

listBox4.Items.Clear();

listBox5.Items.Clear();

listBox6.Items.Clear();

short num = Fanuc.MAX_AXIS;

short type = -1;

short ret = Fanuc.cnc_rdposition(Fanuc.h, type, ref num, fos);

if (ret == 0)

{

//绝对

listBox3.Items.Add(fos.p1.abs.name.ToString() + ": " + fos.p1.abs.data * Math.Pow(10, -fos.p1.abs.dec));

listBox3.Items.Add(fos.p2.abs.name.ToString() + ": " + fos.p2.abs.data * Math.Pow(10, -fos.p2.abs.dec));

listBox3.Items.Add(fos.p3.abs.name.ToString() + ": " + fos.p3.abs.data * Math.Pow(10, -fos.p3.abs.dec));

listBox3.Items.Add(fos.p4.abs.name.ToString() + ": " + fos.p4.abs.data * Math.Pow(10, -fos.p3.abs.dec));

listBox3.Items.Add(fos.p5.abs.name.ToString() + ": " + fos.p5.abs.data * Math.Pow(10, -fos.p5.abs.dec));

//相对

listBox4.Items.Add(fos.p1.rel.name.ToString() + ": " + fos.p1.rel.data * Math.Pow(10, -fos.p1.rel.dec));

listBox4.Items.Add(fos.p2.rel.name.ToString() + ": " + fos.p2.rel.data * Math.Pow(10, -fos.p2.rel.dec));

listBox4.Items.Add(fos.p3.rel.name.ToString() + ": " + fos.p3.rel.data * Math.Pow(10, -fos.p3.rel.dec));

listBox4.Items.Add(fos.p4.rel.name.ToString() + ": " + fos.p4.rel.data * Math.Pow(10, -fos.p4.rel.dec));

listBox4.Items.Add(fos.p5.rel.name.ToString() + ": " + fos.p5.rel.data * Math.Pow(10, -fos.p5.rel.dec));

//机器

listBox5.Items.Add(fos.p1.mach.name.ToString() + ": " + fos.p1.mach.data * Math.Pow(10, -fos.p1.mach.dec));

listBox5.Items.Add(fos.p2.mach.name.ToString() + ": " + fos.p2.mach.data * Math.Pow(10, -fos.p2.mach.dec));

listBox5.Items.Add(fos.p3.mach.name.ToString() + ": " + fos.p3.mach.data * Math.Pow(10, -fos.p3.mach.dec));

listBox5.Items.Add(fos.p4.mach.name.ToString() + ": " + fos.p4.mach.data * Math.Pow(10, -fos.p4.mach.dec));

listBox5.Items.Add(fos.p5.mach.name.ToString() + ": " + fos.p5.mach.data * Math.Pow(10, -fos.p5.mach.dec));

//距离

listBox6.Items.Add(fos.p1.dist.name.ToString() + ": " + fos.p1.dist.data * Math.Pow(10, -fos.p1.dist.dec));

listBox6.Items.Add(fos.p2.dist.name.ToString() + ": " + fos.p2.dist.data * Math.Pow(10, -fos.p2.dist.dec));

listBox6.Items.Add(fos.p3.dist.name.ToString() + ": " + fos.p3.dist.data * Math.Pow(10, -fos.p3.dist.dec));

listBox6.Items.Add(fos.p4.dist.name.ToString() + ": " + fos.p3.dist.data * Math.Pow(10, -fos.p4.dist.dec));

listBox6.Items.Add(fos.p5.dist.name.ToString() + ": " + fos.p5.dist.data * Math.Pow(10, -fos.p5.dist.dec));

}

}

Fanuc.ODBACT pindle = new Focas1.ODBACT();

public void get_pindle()//获取主轴的速度

{

short ret = Fanuc.cnc_acts(Fanuc.h, pindle);

if (ret == 0)

{

label5.Text = pindle.data.ToString();

}

else

{

MessageBox.Show(ret+"");

}

}

Fanuc.ODBSVLOAD sv = new Focas1.ODBSVLOAD();

Fanuc.ODBSPLOAD sp = new Focas1.ODBSPLOAD();

public void get_load()//主,伺服轴的加载计//测试成功

{

short a = 6;//伺服轴的数量

short ret = Fanuc.cnc_rdsvmeter(Fanuc.h, ref a, sv);

short type = Convert.ToInt16(textBox1.Text);//1朱轴压力,-1俩者都有,0主轴监控速度表

short ret2 = Fanuc.cnc_rdspmeter(Fanuc.h, type, ref a, sp);

if (ret == 0 && ret2 == 0)

{

listBox9.Items.Add("伺服的加载值:" + sv.svload1.data + " " + sv.svload2.data + " " + sv.svload3.data + " ");

listBox9.Items.Add("主轴的加载值:" + sp.spload1.spload.data);

}

else

MessageBox.Show(ret+"");

}

}

}

  

  三、协议方法

  从上面的代码可以看出,不再需要调用官方库文件,直接填充发送缓冲区,通过TCP连接发送,所以适用性很强。

  

  四、机器IP设置

  您可以参考下面的链接

  Fanuc CNC IP 地址和 FOCAS 端口设置 |无地科技

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线