Fanuc(发那科)机床读取主轴倍率和进给倍率

2024-01-26 23:20

本文主要是介绍Fanuc(发那科)机床读取主轴倍率和进给倍率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、倍率是什么

二、如何控制倍率

三、倍率的数据存在哪

四、代码实现

说明 


一、倍率是什么

以主轴倍率为例

主轴倍率可以通过以下公式计算:

主轴倍率 =主轴实际转速/主轴指令转速

:主轴指令转速是指我们NC程序文件中S Code,即指令转速

二、如何控制倍率

    一般通过机床外置的旋钮,来控制倍率。

三、倍率的数据存在哪

           Focas本身并不提供直接读取倍率的方法,故需要从其他地方来找倍率数据存放的地方。由于倍率是外置旋钮控制的,外围元器件的数据存放在PLC(Fanuc叫PMC)的地方,所以从PMC地址点位表中获取。

注:

1、主轴倍率的地址是G030,进给速度的倍率是G012。

2、加了*号的表示此数据需要取反,由于G地址是16位,故需要用65535减去获取的值。

四、代码实现

读取PMC

 public int? ReadPMC(string address){if (!IsConnected) return null;string addressKindStr = address.Substring(0, 1);short addressKindInt = 0;int addressNo = int.Parse(address.Substring(1, 4).TrimStart('0') == "" ? "0" : address.Substring(1, 4).TrimStart('0'));if(!Enum.TryParse<PMCAddressType>(addressKindStr,out PMCAddressType pMCAddressType)){//PMC地址类型转换不成功,这抛出异常throw new NCException(EQName,ClassName, "ReadPMC", $"ReadPMC fail,AddressType Convert fail,address:{address}");}addressKindInt = (short)pMCAddressType;short b = 1;ushort start = Convert.ToUInt16(addressNo);ushort end = Convert.ToUInt16(addressNo + 1);ushort f = 10;//8+2Focas1.IODBPMC1 iodbpmc0 = new Focas1.IODBPMC1();short ret = Focas1.pmc_rdpmcrng(_flibhndl, addressKindInt, b, start, end, f, iodbpmc0);//这边可能有点问题if (ret== Focas1.EW_OK){if(iodbpmc0.idata != null&& iodbpmc0.idata.Count()>0){return iodbpmc0.idata[0];}else{throw new NCException(EQName, ClassName, "ReadPMC", $"ReadPMC fail,Get PMCData is null,address:{address}");}}else{//如果有ret==-16 需要断开连接重新  从而获取Handle if (ret == -16){DisConnect();//直接断开连接,从而获得重连的机会}throw new FanucException(EQName, ClassName, "ReadPMC", ret, $"pmc_rdpmcrng  fail,address:{address}");}}

 主轴倍率:ReadPMC("G0030");

 进给倍率:65535 - ReadPMC("G0012");

注:

Focas的CS文件中的类IODBPMC1中的idata数据类型需要改成ushort[]

    [StructLayout(LayoutKind.Explicit)]public class IODBPMC1{[FieldOffset(0)]public short type_a;    /* PMC address type */[FieldOffset(2)]public short type_d;    /* PMC data type */[FieldOffset(4)]public short datano_s;  /* start PMC address */[FieldOffset(6)]public short datano_e;  /* end PMC address */[FieldOffset(8),MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]public ushort[] idata;//数据类型从short[]改成ushort[]} /* In case that the number of data is 5 */

说明 

本人专注机床的数据采集和程序传输,致力于机械加工行业的数字化系统开发

以下是自己开发的所支持的机床数据采集源代码类库(部分),

这篇关于Fanuc(发那科)机床读取主轴倍率和进给倍率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/648362

相关文章

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

Python读取TIF文件的两种方法实现

《Python读取TIF文件的两种方法实现》本文主要介绍了Python读取TIF文件的两种方法实现,包括使用tifffile库和Pillow库逐帧读取TIFF文件,具有一定的参考价值,感兴趣的可以了解... 目录方法 1:使用 tifffile 逐帧读取安装 tifffile:逐帧读取代码:方法 2:使用

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常

一、问题描述 一位同学反馈,他写的argo存过中调用了一个自定义函数,函数会加载hdfs上的一个文件,但有些节点会报FileSystem closed异常,同时有时任务会成功,有时会失败。 二、问题分析 argodb的计算引擎是基于spark的定制化引擎,对于自定义函数的调用跟hive on spark的是一致的。udf要通过反射生成实例,然后迭代调用evaluate。通过代码分析,udf在