发那科机床采集数据

        前面两篇重点介绍了理论,从这篇开始,我们开始进行实战。首先从发那科机床开始,为何第一个将发那科。因为发那科系统机床有三最。最广泛(中国保有量最多)、 最多资料(发那科系统的开发包历史悠久,资料也最好找,出现问题最好解决)、最简单(可能也正是因为资料多,所以学起来对简单)。

        后面的介绍我会分为两部分,一部分为官方SDK介绍,一部分为专有协议采集介绍。照理说直接介绍专有协议采集就行了,为啥要介绍官方SDK。因为官方SDK就是我们后续抓包的标本啊,我们后续需要采集什么样的数据,最保险的方式,就是通过官方SDK将这个数据采集出来,然后查看数据包格式进行解析。市面上有公司或者同行,上来不管SDK,直接用专有协议采集,这样只会本末倒置,出现问题自己也解决不了,想新增加采集数据也解决不了,只能干瞪眼。所以不论是学习还是做产品,要步步为营,先将官方SDK搞懂(当然后面也会出现没有官方SDK包的情况,到时候我再告诉大家具体怎么处理)。       

一、通过官方SDK采集数据

1、Focas 简介

        首先Focas是发那科机床联网SDK的名称。其中包含了:连接说明、使用说明、常见问题。从官方文档上看,1996年应该就有这个SDK了。这点还是比较佩服发那科系统的,在30年前就能有这个意识。

2、资料使用

        拿到资料后,有以下几个文件夹:

        第一个文件夹是库文件,为后面我们我们要讲库拷贝到我们的项目,项目运行必备。

        SpecE这个文件夹是官方的说明文档,后面我们要靠它来调试程序,英文。c++ 程序调试必备

        TSUB-E034_v1.0 FOCAS说明文档,这个文件夹可以当做c#的辅助参考,全中文汉字。c# 调试必备

        对于每个文件的详细介绍可以看这个文档Focas 2\08_A02B-0207-K737 v4.0_FOCAS1_2 Libraries\A02B-0207-K737 (F)\README.TXT,下面我挑重点的讲,如何进行项目调试。

a.调试c++ 项目

        因为c++的程序都是有官方的示例,所以先要搞懂官方的说明文档。Focas+2\Focas 2\SpecE\FWLIB32.HTM,用浏览器打开这个HTML(注意这里要用微软官方的IE浏览器,不能用谷歌或者火狐内核的浏览器)。

打开后选择机床对应的连接方式(连接方式选择网口接口)和型号(按照采集系统选择)。

点击功能参考

你可以发现很多功能,其中能进一步点击进去的,就代表该系统支持这个功能。

我们点击cnc_actf就可以看到具体的c++代码和说明,包含:声明、描述、返回值、适用于的操作模式,示例代码等等。这些都是对你调试采集至关重要的。

c++项目需要导入的库文件:

给大家个示例参考

官方的说明:

  * 64 bit version FOCAS2 library.

      < FWLIB64.DLL >
        This is a library of data exchange functions between CNC/PMC and HSSB
        and Ethernet system.
        This is a dynamic link library, which is required at run-time of HSSB
        and Ethernet system.

      < FWLIBE64.DLL >
        This is the DLL for TCP/IP, which is called by FWLIB64.DLL at run-time.

      < FWLIB30i64.DLL >
        This is the DLL for FS30i/31i/32i/35i and PMi-A, which is called by
        FWLIB64.DLL at run-time.

      < FWLIB0iD64.DLL >
        This is the DLL for FS0i-D, which is called by FWLIB64.DLL at run-time.

      < FWLIBNCG64.DLL >
        This is the DLL for FOCAS2/HSSB of FS31i-A/B NCGuidePro, which is
        called by FWLIB64.DLL at run-time.

      < FWLIB0DN64.DLL >
        This is the DLL for FOCAS2/HSSB of FS0i-D NCGuidePro, which is called
        by FWLIB64.DLL at run-time.

      < FWLIB64.LIB >
        The import library to link with CNC/PMC Data window library
        (FWLIB64.DLL) in C/C++ language.

      < FWLIB64.H >
        C/C++ header file for CNC/PMC Data window functions and structures.
        This file is divided for each CNC model.

b.调试c#项目

        如果你想用c#去调试你的采集,那么会简单的多,因为官方给我们做好了示例程序,并且说明都是汉语的。举个例子:

c#项目需要导入的库文件:

初学者不会引用以来的话,看下这篇文章:

https://www.cnblogs.com/snail1502/p/18068966

3、示例工程代码

c#代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Test
{class Program{static void Main(string[] args){// 获取库句柄 ( Ethernet ) 并进行连接ushort Flibhndl = 0;short ret = Focas1.cnc_allclibhndl3("10.178.67.13", 8193, 10, out Flibhndl);if (ret != Focas1.EW_OK){Console.WriteLine("发生异常,请检查!");return;}#region cnc_machineFocas1.ODBAXIS odbaxis = new Focas1.ODBAXIS();            for (short i = 0; i < 3; i++){ret = Focas1.cnc_machine(Flibhndl, (short)(i + 1), 8, odbaxis);Console.WriteLine(odbaxis.data[0]*Math.Pow(10,-4));}#endregionConsole.Write("read values");Console.Read();}}}

c++代码

#include "stdafx.h"
#include "Fwlib64.h"unsigned short h;int _tmain(int argc, _TCHAR* argv[])
{int status();int rddynamic();int rdopnlsgnl();int exeprgname2();int rdspmeter();int getdtailerr();//int rdmovrlap();int rdaxisdata();int rdloopgain();//int rdproginfo();int rdproctime();int modal();int rdopmsg();int rdpm_item();//int rdcommand();int rdprogdir4();int rdproginfo();int exeprgname2();int rdblkcount();int pmcrdpmcrng();//读PMCint cncsysinfo();//读系统信息int cncrdparainfo();int  cncrdparam();int  cncrdmain();status();rddynamic();rdopnlsgnl();//exeprgname2();rdspmeter();getdtailerr();//rdmovrlap();rdaxisdata();/*rdloopgain();*///rdproginfo();rdproctime();modal();rdopmsg();//rdcommand();rdpm_item();rdprogdir4();rdproginfo();exeprgname2();rdblkcount();pmcrdpmcrng();cncsysinfo();cncrdparainfo();cncrdparam();cncrdmain(); //读cnc主程序名//ODBSPLOAD sp[4];   /* 4 = maximum spinlde number *///   short num = 4;//   short reta = cnc_rdspmeter(h, 0, &num, sp);//   if(!reta) {//       int i;//       for(i = 0 ; i < num ; i++) {//           printf("%c%c = %d\n", //           sp[i].spload.name, sp[i].spload.suff1,//           sp[i].spload.data);//       }//   }//int MAX = 4;//struct odbdy2 buf2 ;//   unsigned int idx ;//   cnc_rddynamic2( h, -1, sizeof(buf2), &buf2 ) ;//   printf( "Current program = %d   Main program = %d\n",buf2.prgmnum, buf2.prgmnum ) ;//   printf( "Sequence number = %ld\n", buf2.seqnum ) ;//   printf( "actf = %ld   acts = %ld\n", buf2.actf, buf2.acts ) ;//   printf( "Alarm status = %ld\n", buf.alarm ) ;//   printf( "AXIS Absolute  Relative  Machine   Distance\n" ) ;//   printf( "----+---------+---------+---------+--------\n" ) ;//   for ( idx = 0 ; idx < MAX ; idx++ )//       printf( "  %u  %8ld  %8ld  %8ld  %8ld\n", idx,//          buf2.pos.faxis.absolute[idx],//           buf2.pos.faxis.relative[idx],//           buf2.pos.faxis.machine[idx],//           buf2.pos.faxis.distance[idx] ) ;return 0;
}

发那科的功能和参数非常多,前期千万别贪多求全。从自己业务需要的函数调起来,配合虚拟机系统或者真机进行调试。

二、通过专有协议采集需要注意的要点

1、采用TCP主从收发的模式。

2、有连接包,再未发送连接包前,发送其他值不会被接受。

3、不同系统,在不同参数上,发送的数据包略有不同。

4、处理报警时候,要注意字符集问题,注意返回长度问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——移动文件或目录,查找文件,which命令

移动文件或目录 作用 - mv命令用于剪切或重命名文件 格式 bash mv [选项] 源文件名称 目标文件名称 注意 - 剪切操作不同于复制操作&#xff0c;因为它会把源文件删除掉&#xff0c;只保留剪切后的文件。 - 如果在同一个目录中将某个文件剪切后还粘贴到当前目录下&#xff0c;…

CS144 Lab3 TCPSender复盘

一.基础概念 1.TCPSender在TCPSocket中的地位与作用 Lab0中实现了基于内存模拟的流控制-字节流&#xff08;ByteStream&#xff09;&#xff0c;底层使用std::deque实现&#xff0c;根据最大容量Capacity进行容量控制。个人理解它相当于应用层的输入输出缓存区&#xff0c;用户…

江协科技51单片机学习- p23 DS1302实时时钟

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

巴比达内网穿透:深度剖析其在解决远程连接挑战中的技术优势

在信息技术日新月异的今天&#xff0c;远程协作与管理的需求日益增长&#xff0c;但内网环境的隔离性一直是横亘在高效远程操作面前的一道坎。本文将深入探讨一款专为打破此壁垒而生的工具——巴比达内网穿透&#xff0c;如何以其技术创新和高效性能&#xff0c;成为解决远程连…

汽车内饰塑料件光照老化实验箱

塑料件光照老化实验箱概述 塑料件光照老化实验箱&#xff0c;又称为氙灯老化试验箱&#xff0c;是一种模拟自然光照条件下塑料材料老化情况的实验设备。它通过内置的氙灯或其他光源&#xff0c;产生接近自然光的紫外线辐射&#xff0c;以此来加速塑料及其他材料的光老化过程。…

数据挖掘常见算法(分类算法)

K&#xff0d;近邻算法&#xff08;KNN&#xff09; K-近邻分类法的基本思想&#xff1a;通过计算每个训练数据到待分类元组Zu的距离&#xff0c;取和待分类元组距离最近的K个训练数据&#xff0c;K个数据中哪个类别的训练数据占多数&#xff0c;则待分类元组Zu就属于哪个类别…

Python + OpenCV 酷游地址教学V鄋KWK3589

本篇文章汇整了一系列的Python OpenCV 教学&#xff0c;只要按照教学文的顺序阅读和实作&#xff0c;就可以轻松入门OpenCV&#xff0c;并透过OpenCV 实现许多影像相关的创意应用。 接下来我们来介绍OpenCV-- OpenCV 是一个跨平台的电脑视觉函式库( 模组) &#xff0c;可应用…

Python容器 之 字符串--字符串的常用操作方法

1.字符串查找方法 find() 说明&#xff1a;被查找字符是否存在于当前字符串中。 格式&#xff1a;字符串.find(被查找字符) 结果&#xff1a;如果存在则返回第一次出现 被查找字符位置的下标 如果不存在则返回 -1 需求&#xff1a; 1. 现有字符串数据: 我是中国人 2. 请设计程序…

Gavin大咖亲自授课:将大语言模型与直接偏好优化对齐

Gavin大咖亲自授课&#xff1a;将大语言模型与直接偏好优化对齐 Align LLMs with Direct Preference Optimization 直接偏好优化&#xff08; Direct Preference Optimization&#xff09;这绝对是天才性的算法。你会看到数学的巨大力量和巨大价值&#xff0c;你一定会很兴奋和…

【计算机网络期末复习】例题汇总(一)

重点例题选择填空简答题与传输媒体的接口的特性重点 计算机网络的性能指标计算机网络体系结构例题 选择

Linux高并发服务器开发(八)Socket和TCP

文章目录 1 IPV4套接字结构体2 TCP客户端函数 3 TCP服务器流程函数代码粘包 4 三次握手5 四次挥手6 滑动窗口 1 IPV4套接字结构体 2 TCP客户端 特点&#xff1a;出错重传 每次发送数据对方都会回ACK&#xff0c;可靠 tcp是打电话的模型&#xff0c;建立连接 使用连接 关闭连接…

泛微E9开发 根据故障来源新增明细行,并且初始化错误类型

根据故障来源新增明细行&#xff0c;并且初始化错误类型 1、需求说明2、实现方法3、扩展知识点3.1 批量修改字段值或显示属性3.1.1 格式3.1.2 参数3.1.3 演示 3.2 根据字段ID获取字段信息3.2.1 格式3.2.2 参数3.2.3 演示 1、需求说明 用户对出现故障的机器或设备进行判断问题判…

C++进阶 | [4.3] 红黑树

摘要&#xff1a;什么是红黑树&#xff0c;模拟实现红黑树 红黑树 &#xff0c;是一种 二叉搜索树 &#xff0c;但 在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red 或 Black 。 通过对 任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树…

分享一个在 WinForm 桌面程序中使用进度条展示报表处理进度的例子,提升用户体验

前言 在有些比较消耗时间的业务场景中&#xff0c;比如生成报表等&#xff0c;如果没有在操作的过程中向用户反馈操作进度&#xff0c;会让用户以为程序 “死” 掉了&#xff0c;用户体验非常不好。 WinForm 桌面程序项目与 Console 项目不一样&#xff0c;如果 Console 项目…

【C++】红黑树及其实现

目录 一、红黑树的定义1.为什么提出红黑树&#xff1f;2.红黑树的概念3.红黑树的性质 二、红黑树的实现1.红黑树的结构2.红黑树的插入2.1 uncle为红色2.2 uncle为黑色&#xff0c;且是grandfather的右孩子2.3 uncle为黑色&#xff0c;且是grandfather的左孩子 3.红黑树的验证 4…

虚拟机网络配置(静态网络)

解决问题&#xff1a;VMware中创建centOS虚拟机后使用ifconfig没有ip地址&#xff0c;但我想在主机&#xff08;Windows&#xff09;系统下使用shell连接虚拟机从而方便后续交互。 VMware中编辑->虚拟网络编辑器 &#xff08;注意需要管理员身份不然会无法修改&#xff09;…

PV操作经典例题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文☀️☀️☀️三、总结&#x1f353;&#x1f353;&#x1f353; 一、前言&#x1f680;&#x1f680;&am…

万字长文|下一代系统内存数据加速接口SDXI解读

本文内容分为5章节&#xff0c;总计10535字&#xff0c;内容较多&#xff0c;建议先收藏&#xff01; 1.SDXI技术产生的背景 2.SDXI相比DMA的优势 3.SDXI实现原理与架构 3.1 描述符环原理解读 3.2 上下文管理介绍 3.3 AKey与RKey解读 3.4 错误日志和状态管理 3.5 跨Function访…

ctfshow web入门 sqli-libs web552--web560

web552 宽字节注入 嗯原理我就不讲了&#xff0c;还是有点复杂后面有时间讲讲 总而言之就是用汉字把\的转义作用抵消了然后正常注入即可 ?id-1包 union select 1,2,3--?id-1包union select 1,(select group_concat(table_name) from information_schema.tables where tab…

事过无悔:人生中的释怀之道

在纷繁复杂的人生旅途中&#xff0c;我们常常会面临各种选择。这些选择&#xff0c;如同指引我们前行的路标&#xff0c;有时让我们欣喜&#xff0c;有时让我们遗憾。然而&#xff0c;我渐渐发现&#xff0c;事过无悔&#xff0c;是我们在面对这些选择时最顶级的释怀之道。 首…