关键字:
AFD-X05 FPGA SOC 五轴五联动 G代码 运动控制器摘要: 运动控制芯片AFD-X05是基FPGA实现的芯片,能够完成高速高精度的数控加工。其运动控制的稳定性和可靠性要比DSP系统或基于DSP技术的运动控制芯片如MCX314等要高一个等级。五轴五联动运动控制器支持大部分的G代码、M代码和宏指令,也具有可组配、模块化和开放式等特点。特别是它支持五轴直线插补,可以用计算机编写大型的五轴联动复杂软件,通过五轴五联动运动控制器控制数控机床完成加工,促进国产中数控系统软件水平的提高。本文介绍用它来快速开发一套五轴铣床数控系统。 一、引言 当前,各种运动控制卡的二次开发的比较复杂。目前国内比较多的工程师都熟悉数控系统的G代码,在ARM 32位单片机和国产运动控制芯片AFD-X05的基础上,研制成的可执行G代码的五轴联动运动控制器,使得二次开发变简单了。应用这种支持五轴直线插补的高速高精度的运动控制器,再开发各种专用的数控系统,工程师们只需将精力放在大型的复杂的软件开发上面,完全不需要去了解硬件。 二、G代码五轴联动运动控制器的硬件系统 2.1 AFDX05运动控制芯片 云山数控研发的AFDX05运动控制芯片,支持任意2~5轴直线插补,任意2轴圆弧插补,多达6级的运动指令缓冲区,特别适合高速多线段或圆弧连续插补的运动控制,另外,还有反向间隙补偿,速度控制,加减速控制,位置控制,通用输入输出口,8/16 位数据总线,中断发生,硬件限位,软件限位,紧急停止,暂停,编码器信号输入等功能,驱动脉冲频率高达8MPPS、插补精度±5LSB。用于控制以脉冲序列方式输入的伺服电机、步进电机。 “中国芯”AFDX05,更加符合中国人的使用习惯。可以控制zui多5轴的点位运动、连续轨迹运动、同步运动等应用。 2.2 ARM 32位单片机CPU为 S3C44B0X。32M Flash。脉冲方向差动输出驱动。60路光耦隔离输入42路集电极开路光耦隔离输出或 36路光耦隔离输入20路集电极开路光耦隔离输出 。 5路步进/伺服电机脉冲光耦隔离输出,zui高频率4MHz。32位逻辑位置和实际位置计数器。RS232通讯。硬件部分已模块化,无需任何硬件知识即可开发。 三、G代码五轴联动运动控制器的软件系统 3.1 支持的G代码G代码 | 分组 | 功能 |
*G00 | 1 | 定位(快速移动) |
*G01 | 1 | 直线插补(进给速度) |
G02 | 1 | 顺时针圆弧插补 |
G03 | 1 | 逆时针圆弧插补 |
G04 | 0 | 暂停,停止 |
*G17 | 2 | 选择X平面 |
G18 | 2 | 选择Z平面 |
G19 | 2 | 选择Y平面 |
G27 | 0 | 返回并检查参考点 |
G28 | 0 | 返回参考点 |
G29 | 0 | 从参考点返回 |
G30 | 0 | 返回第二参考点 |
*G40 | 7 | 取消刀具半径补偿 |
G41 | 7 | 左侧刀具半径补偿 |
G42 | 7 | 右侧刀具半径补偿 |
G43 | 8 | 刀具长度补偿+ |
G44 | 8 | 刀具长度补偿- |
*G49 | 8 | 取消刀具长度补偿 |
G52 | 0 | 设置局部坐标系 |
G53 | 0 | 选择机床坐标系 |
*G54 | 14 | 选用1号工件坐标系 |
G55 | 14 | 选用2号工件坐标系 |
G56 | 14 | 选用3号工件坐标系 |
G57 | 14 | 选用4号工件坐标系 |
G58 | 14 | 选用5号工件坐标系 |
G59 | 14 | 选用6号工件坐标系 |
G60 | 0 | 单一方向定位 |
*G64 | 15 | 切削方式 |
G65 | 0 | 宏程序调用 |
G66 | 12 | 模态宏程序调用 |
*G67 | 12 | 模态宏程序调用取消 |
*G90 | 3 | 值指令方式 |
*G91 | 3 | 增量值指令方式 |
G92 | 0 | 工件零点设定 |
*G98 | 10 | 固定循环返回初始点 |
G99 | 10 | 固定循环返回R点 |
M代码 | 功能 | |
M00 | 程序停止 | |
M01 | 条件程序停止 | |
M02 | 程序结束 | |
M03 | 主轴正转 | |
M04 | 主轴反转 | |
M05 | 主轴停止 | |
M06 | 刀具交换 | |
M08 | 冷却开 | |
M09 | 冷却关 | |
M18 | 主轴定向解除 | |
M19 | 主轴定向 | |
M30 | 程序结束并返回程序头 | |
M50 | 备用输出1开 | |
M51 | 备用输出1关 | |
M52 | 备用输出2开 | |
M53 | 备用输出2开 | |
M54 | 备用输出3开 | |
M55 | 备用输出3开 | |
M56 | 备用输出4开 | |
M57 | 备用输出4开 | |
… | … | |
M98 | 调用子程序 | |
M99 | 子程序结束返回/重复执行 |
变量号 | 变量类型 | 功能 |
#0 | “空” | 这个变量总是空的,不能赋值。 |
#1~#33 | 地方变量 | 地方变量只能在宏中使用,以保持操作的结果,关闭电 源时,地方变量被初始化成“空”。宏调用时,自变量分 配给地方变量。 |
#100~#149 #500~#531 | 公共变量 | 公共变量可在不同的宏程序间共享。关闭电源时变量 #100~#149被初始化成“空”,而变量#500~#531保持数 据。公共变量#150~#199和#532~#999可以选用,但是当 这些变量被使用时,纸带长度减少了8.5米。 |
#1000~ | 系统变量 | 系统变量用于读写各种NC数据项,如当前位置、刀具补偿值 |
#2000~#2059 | IO输入 | 60路光耦隔离输入信号 |
参数名称 | 参数设置 | 参数单位 |
脉冲当量 | P01=XXX.XXXXXX | 毫米 |
G00指令速度 | P02=XXXX | 毫米/分钟 |
G01指令速度 | P03=XXXX | 毫米/分钟 |
G02指令速度 | P04=XXXX | 毫米/分钟 |
G03指令速度 | P05=XXXX | 毫米/分钟 |
起始速度 | P06=XXXX | 毫米/分钟 |
加速时间 | P07=XXXX | 毫秒 |
正向软限位 | P08=XXXX | 毫米 |
负向软限位 | P09=XXXX | 毫米 |
反向间隙补偿 | P10=XXXX | 毫米 |
回零速度 | P11=XXXX | 毫米/分钟 |
手动速度 | P12=XXXX | 毫米/分钟 |
zui大进给速度 | P13=XXXX | 毫米/分钟 |
系统总刀数 | P14=XX | |
M代码等待时间 | P15=XXXX | 毫秒 |
回参考点坐标 | P16=XXX.XXXXXX | 毫米 |
主轴编码器线数 | P17=XXXX | (/R) |
归零方向 | P18=X | |
换刀基准位 | P19=XXX.XXXXXX | 毫米 |
换刀安全高度 | P20=XXX.XXXXXX | 毫米 |
换刀间隔 | P21=XXX.XXXXXX | 毫米 |
换刀速度 | P22=XXX.XXXXXX | 毫米/分钟 |
zui大行程 | P23=XXX.XXXXXX | 毫米 |
设置工件坐标系 | P25=XXX.XXXXXX | 毫米 |