浅谈几种主流数控机床的数据采集技术

       马上即将毕业了,就自己在学校做的项目中包含有几种主流数控系统需要进行数据采集,总结一下之前的一些经验和开发工作,也希望后面再做相关技术研究的时候少踩点坑,同时也算是一个阶段的总结吧,毕竟马上要从事一个与这个行业不太相关的领域了,记录一下,以后翻翻还能记起以前做过什么。

1.1 Fanuc数控系统机床数据采集方法

   以下介绍的为带有以太网接口的Fanuc数控系统的数据采集方法,如果不带有以太网接口,需要采用串口通讯进行采集。

1.1.1 FOCAS简介和基本功能

采集Fanuc系列的机床数据,我们需要用到FOCAS1/2开发包,FOCAS是FANUC Open CNC API Specifications version 1 or 2的缩写,FOCAS1主要应用于0i和16i/18i/21i/系列,FOCAS2则针对30i/31i/32i系列CNC。

CNC/PMC数据窗口功能可以通过HSSB或以太网(TCP/IP)接口在PC和CNC之间完成交换数据和信息共享,他的主要功能包括以下几部分:

1:CNC:NC控制的伺服轴、主轴相关数据的读写。

         包括绝对坐标、相对坐标、机床坐标、剩余移动量以及实际进给速度等。

2:CNC:加工程序的相关操作。

         这些操作包括NC程序的上传/下载、程序校检、查找以及删除。读取CNC程序目录以及通过电脑实现CNC加工。

3:CNC:读写CNC文件数据。

         这些数据包括刀具偏置、工件坐标系偏置、参数、设定、用户宏程序变量、P-Code宏程序变量以及螺距误差补偿数值。

4:CNC:读写刀具寿命管理信息。

5:CNC:读取历史信息记录。

         这些信息包括操作历史记录和报警历史记录。

6:CNC:读取伺服、主轴数据。

7:CNC:读写数据服务器、DNC1、DNC2、OSI-Ethernet(只能使用HSSB)相关信息。

8:CNC:读写波形诊断数据。

9:CNC:读写冲床CNC数据。

10:CNC:读写激光器CNC数据。

11:CNC:读写伺服学习控制相关数据(只能使用HSSB)。

12:CNC:读写其他数据。

13:PMC:读写PMC相关数据。

          这些数据包括G、F、Y、X、A、R、T、C、D地址等。

14:PMC:读写PROFIBUS-DP相关内容。

1.1.2使用以太网方式连接的相关设定

FOCAS 通过以太网方式连接电脑和 CNC 系统时,使用 TCP/IP 通讯协议。在 CNC 上通常使用 FANUC 以太网板,或者 FANUC 快速以太网板。对于 16i/18i/21i 系列或者 30i/31i/32i系列,还可以使用内嵌以太网功能。

使用 FOCAS 通讯时,可以按照以下步骤进行设定:

  1. 设定电脑 ip,网上邻居 -> 本地连接 -> Internet 协议(TCP/IP)。

                                               

 

   2. 在 CNC 上设定以太网功能或者内嵌以太网功能相关参数,MDI 上 system 键 ->“向右” 扩展键 -> “ETHPRM”软键 -> “(操作)”软键 -> “板卡”软键

 

       在这个画面设定端口号(TCP)8193,时间间隔10。

  3 . 使用网线连接电脑和 CNC。一般使用交叉线,如果通过集线器、交换机等设备,则使用直通线。

1.1.3详细开发流程

  1. 准备工作:FOCAS2开发包(包含Fwlib32.dll等需要用到的dll);

       VisualStudio 2017;

      FOCAS说明文档(所有机床相关数据函数调用方法 )

       FOCAS_Api_Help;(以XML文件形式提供一些接口上的帮助)

    2、开发流程

 (1)连接方式:采用以太网连接,实验采用的CNC的IP地址为192.168.0.1,端口号为8193,PC侧IP只要配在同一个局域网即可,实验用的PC机的IP为192.168.0.10。IP的配置方法这里不再赘述。

(2)PC端工程搭建操作:使用visual studio 2017新建一个C# Windows窗体应用程序,如下图:

    然后进入工程文件,部署FOCAS文件,如下图所示:

       如上图所示,首先将将fwlib32.cs文件添加至工程文件,该文件在FOCAS2_Libraries\Fwlib\Dot NET sample路径下。然后在你新建的项目的bin\Debug目录下将要用到的动态链接库全部考进去。如下图所示,所用到的dll在FOCAS2_Libraries下的Fwlib文件夹中,直接全部拷到工程目录下即可。 

  做完以上的所有准备工作后就可以正式开始开发了。 

3、API函数的使用方法:API具体的函数调用方法可以参见FOCAS说明文档,如下图所示:

     这里只对一些常用的API函数进行介绍。

    与CNC建立连接:参考FOCAS说明文档中的Function related to library handle, node文件夹中的Function Reference related to library handle, node_cnc_allclibhndl3.doc.在测试与机床连接函数时,要首先建立机床与PC机的物理连接,保证他们之间能够ping通,具体方法这里不再赘述。参考代码如下:

private void btnConc_Click(object sender, EventArgs e)
        {
            string ip = txtIp.Text;
            string port = txtPort.Text;
            string timeout = txtTimeOut.Text;
            int ret = Fanuc.cnc_allclibhndl3(ip, Convert.ToUInt16(port), Convert.ToInt32(timeout), out Fanuc.h);
            if (ret == Fanuc.EW_OK)
            {
                //“函数方法””
            }

    与CNC断开连接:参考FOCAS说明文档中的Function related to library handle, node文件夹中的Function Reference related to library handle, node_cnc_freelibhndl.doc,具体代码如下:

private void btnDisConn_Click(object sender, EventArgs e)
        {                  
            int ret = Fanuc.cnc_freelibhndl(Fanuc.h);
            if (ret == Fanuc.EW_OK)
            {
               MessageBox.Show(“与机床断开连接”);
            }
            else
            {
                MessageBox.Show(ret + "");
              
            }
        }

   采集坐标信息:我们需要参考FOCAS说明文档:

   FANUC related to controlled axis&spindle_cnc_absolute.doc;

   Function related to controlled axis&spindle_cnc_relative.doc;

   Function related to controlled axis&spindle_cnc_machine.doc;

   他们分别是机床的绝对坐标,相对坐标和机床坐标。以下为本人自己写的获取位置坐标信息的函数,可供参考。

Fanuc.ODBPOS fos = new Focas1.ODBPOS();

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

        {     

            short num = Fanuc.MAX_AXIS;

            short type = -1;

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

            if (ret == 0)

            {

             

                //相对坐标

                label12.Text = fos.p1.rel.name.ToString();

                label13.Text = fos.p2.rel.name.ToString();

                //label14.Text = fos.p3.rel.name.ToString();

                label15.Text = fos.p4.rel.name.ToString();

                label16.Text = fos.p5.rel.name.ToString();

                X_Relative.Text = Convert.ToString(fos.p1.rel.data * Math.Pow(10, -fos.p1.rel.dec));

                Z_Relative.Text = Convert.ToString(fos.p2.rel.data * Math.Pow(10, -fos.p2.rel.dec));

                //textBox10.Text = Convert.ToString(fos.p3.rel.data * Math.Pow(10, -fos.p3.rel.dec));

                C_Relative.Text = Convert.ToString(fos.p4.rel.data * Math.Pow(10, -fos.p4.rel.dec));

                V_Relative.Text = Convert.ToString(fos.p5.rel.data * Math.Pow(10, -fos.p5.rel.dec));

                //绝对坐标

                label21.Text = fos.p1.abs.name.ToString();

                label20.Text = fos.p2.abs.name.ToString();

                label18.Text = fos.p4.abs.name.ToString();

                label17.Text = fos.p5.abs.name.ToString();

                X_Absolute.Text = Convert.ToString(fos.p1.abs.data * Math.Pow(10
  • 35
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
引用[1]: 这段代码是一个使用QT框架开发的Windows应用程序的示例。它使用了QApplication和QLabel类来创建一个简单的窗口,并在窗口中显示一段文本。通过调用app.exec()来启动应用程序的事件循环,使窗口能够响应用户的操作。[1] 引用[2]: 在QT5.8中,如果你想开发一个浏览器并调用电脑中安装的插件软件,你可以使用QWebkit。其中一种方法是使用dumpcpp工具生成插件的QActive类库文件,然后创建一个QWidget来包裹这个QActiveX类,并重新实现其中的槽函数。最后,使用QWebPage::createPlugin()函数来创建自定义的浏览器插件来调用这个新建的QWidget。然而,这种方法可能会导致图层问题,即调用的插件会一直在网页图层的顶层且无法改变。为了解决这个问题,可以使用QRegion::setMask函数来勉强解决。但是,这种方法比较麻烦,还需要修改网页的js文件,因此比较繁琐。[2] 引用[3]: 在配置QT5.8时,可以使用以下命令:./configure -release -opensource -confirm-license -prefix /opt/Qt-5.8.0-x86 -xplatform linux-g -32 -nomake -examples -nomake -tests。这个命令将配置QT5.8的编译选项,包括使用开源和商业许可证、指定安装路径、选择平台、禁用示例和测试等。[3] 问题: QT5.8 webkit的使用方法是什么? 回答: 在QT5.8中,你可以使用QWebkit来开发浏览器应用程序并调用电脑中安装的插件软件。一种方法是使用dumpcpp工具生成插件的QActive类库文件,然后创建一个QWidget来包裹这个QActiveX类,并重新实现其中的槽函数。最后,使用QWebPage::createPlugin()函数来创建自定义的浏览器插件来调用这个新建的QWidget。然而,这种方法可能会导致图层问题,即调用的插件会一直在网页图层的顶层且无法改变。为了解决这个问题,可以使用QRegion::setMask函数来勉强解决。但是,这种方法比较麻烦,还需要修改网页的js文件,因此比较繁琐。[2]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值