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

3 篇文章 0 订阅
2 篇文章 0 订阅

目录

一、倍率是什么

二、如何控制倍率

三、倍率的数据存在哪

四、代码实现

说明 


一、倍率是什么

以主轴倍率为例

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

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

:主轴指令转速是指我们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+2
            Focas1.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 */

说明 

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

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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FANUC发那科仿真软件NC Guide是一款功能强大的数控仿真软件。它被广泛应用于制造业,用于模拟和优化数控机床的操作过程。NC Guide通过虚拟仿真技术,提供了真实的数控加工环境,帮助操作者在实际加工前验证程序的准确性和有效性。 首先,NC Guide具有直观的图形界面,用户可以通过鼠标和键盘行操作。它能够实时演示加工过程,包括工件、刀具的运动轨迹和加工表面等,使操作者能够全面了解加工细节和效果,提前发现潜在问题。 其次,NC Guide支持多种编程语言,包括FANUC自动编程语言和ISO标准G代码等。用户可以根据自身需要选择适合的编程方式,轻松创建和修改加工程序。同时,NC Guide还提供了丰富的编程工具和功能,如自动修剪、程序分析和错误检测等,帮助用户减少错误和提高编程效率。 此外,NC Guide还内置了FANUC数控系统的仿真模型,包括数控主轴、伺服驱动、刀库和工具传感器等。这使得用户能够在真实的数控环境中行仿真,更加准确地模拟各种操作场景和机床状态。 最后,NC Guide还提供了完善的教学功能,包括教学视频、实例工程和交互式指导等。这些资源能够帮助操作者快速掌握软件的使用方法和数控编程技巧,提高工作效率和加工质量。 总之,FANUC发那科仿真软件NC Guide是一款强大而全面的数控仿真工具。它通过虚拟仿真技术,为操作者提供真实的加工环境,并支持多种编程语言和丰富的编程功能。无论是初学者还是专业人士,都能够通过NC Guide提升自己的数控编程水平和工作效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值