分享

Fanuc数据采集实战c#

 百科汇652 2020-09-05

上篇文章讲述了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。同时博主有多线程并发数据采集架构可供参考

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

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

 

 

加qq 验证入群

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多