600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Fanuc发那科法兰克数据采集实战c#——CNC数控系统数据采集 西门子免授权数据采集方案

Fanuc发那科法兰克数据采集实战c#——CNC数控系统数据采集 西门子免授权数据采集方案

时间:2019-09-14 22:22:31

相关推荐

Fanuc发那科法兰克数据采集实战c#——CNC数控系统数据采集 西门子免授权数据采集方案

上篇文章讲述了Fanuc数据采集的必备库的说明以及调用方式,此片文章开始真正的实战操作

首先看下上图,所有的公开函数都会有一个FlibHndl参数,次参数的含义为大家解释:

开发者开发客户端程序和Fanuc系统连接,客户端为TCP Client,Fanuc数控系统为TCP Server,那么我们将这里的FlibHndl参数定义为Socket实列,只不过Fanuc厂家为了我们开发方便,用数字代替了Socket,我们拿着FlibHndl去和函数做调用的时候,内部函数会根据和FlibHndl绑定的Socket进行和数控系统通讯,实际Socket是由fwlibe1.dll来进行统一管理。

那么既然我们用到一个句柄,我们就为句柄定义为一个静态变量,同时为了对fwlib32函数的扩展,我们写一个类继承f2lib32,如下图:

那么上图我们写了一个FanucOpe类,该类继承focas类库,这样我们又可以在FanucOpe添加我们想要的功能,同时可以通过FanucOpe类调用Focas类里面的所有方法、变量、枚举等,又不去改写原有的类库。

那么以上类库建立完成,下面开始做连接操作

fanuc连接函数为如下函数,

public static extern short cnc_allclibhndl3( [In,MarshalAs(UnmanagedType.AsAny)] Object ip,

ushort port,int timeout, out ushort FlibHndl);

ip代表数控系统的通讯IP,Port代表数控系统的通讯端口,timerout代表着连接超时,单位为秒,如设置为10S,则代表10秒钟没连接成功代表通信失败,类似socket中的阻塞模式下的waitone功能,

同时函数返回short类型的结果,以及out出来ushort类型的通讯句柄,以后每次和函数连接时候都拿着句柄和系统进行通讯。

开始调用此函数,如下

ret代表函数执行结果,与函数枚举进行匹配,FanucOpe.Handle代表函数返回值,

博主现在没有和数控系统进行连接,返回-16,代表socket通信错误,如果成功返回值是0。同时Handle的值>0

如果连接成功我们尝试读取一个加工总数测试一下

,如下图,cnc_rdparam是读取fanuc系统参数的公共函数,6712代表我们要读取的点在fanuc数控系统里面的参数位置,此方法返回一个IODBPSD_1,我们不用去管他是什么,我们就先去定义一个此类型的参数,让他从cnc_rdparam中回调出来,我们直接拿其结果即可。

以上就是fanuc函数的连接操作和读取操作方法,如有需要,可以在评论区留邮箱,我会将fanuc所有的函数库代表的是读取什么数据解释出来,如读取主轴倍率,就是pmc_rdpmcrng函数。调用方式是

以下demo解决了fanuc各种 坑:如负载内存泄漏、报警版本问题、程序新老版本指定目录问题、大文件传输丢包问题等

谢谢支持,有需要的留邮箱,有测试demo。同时博主有多线程并发数据采集架构可供参考

下一篇文章开始写西门子数控系统(无需opc)、新代数控系统、广数数控系统、三菱数控系统以及兄弟数控系统等。

西门子采集如下图:支持828D,840dsl,808,802dsl,840d,810d

加qq 验证入群

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。