迪文科技论坛

 找回密码
 立即注册
搜索
查看: 201|回复: 0

【分享】数控车床插补算法演示

[复制链接]

0

主题

0

回帖

42

积分

新手上路

Rank: 1

积分
42
发表于 2023-7-3 22:00:16 | 显示全部楼层 |阅读模式
本帖最后由 chenwenjie 于 2023-7-4 20:26 编辑

一、 作品功能介绍
本产品是基于迪文串口屏内核开发,通过keil编写插补算法,控制对应电机引脚,并显示当前不同电机所处位置坐标,同时带有主轴速度调节功能。在项目中设置了直线插补算法和圆弧插补算法。在直线插补中,输入目标点坐标,电机“启动”按钮后,会进行直线插补运动。在圆弧插补中,输入目标点坐标、圆弧中心和半径,点击“启动”按钮后,程序会惊醒圆弧插补运动。
二、 工作原理
直线插补采用逐点比较法,在每次进给后都会得到一个新的当前坐标点,并和目标坐标点作比较,根据误差来判定进给方向,进行该方向移动一定单位量。循环执行这一过程,直至到达目标点坐标。直线插补虽然在每次运动时只会沿着某一轴方向移动,但可以将两轴的运动次序和运动量进行合理的调节,进而得到较高的加工效果。其运动原理如图所示:
图1 直线插补运动原理图
数学公式推导:
原点坐标O:(xs,ys)
终点坐标E:(xe,ye)
加工点坐标P:(xi,yj)(i j 为对应轴进给次数)
由于加工点只存在三种情况:在线段上方,在线段中,在线段下方。比较线段OP的斜率和OE的斜率即可知道加工点处于哪一种情况:KOP>KOE,位于线段上方;KOP=KOE:在线段中;KOE<KOP:在线段下方。公式如下:
   
化简公式并与 0 作比较
由此可以定义偏差函数:
  
以第一象限为例,当点P位于线段下方时,进给向上,沿着y轴进给;点P位于线段下方时,进给向前,沿着x轴进给;同时规定点P在线段中的情况,归属于位于线段上方,沿着x轴进给。
在运动后得到新的P点坐标,需要重新计算新的偏差,公式如下:
   
由公式(4)(5)可得:新的偏差函数只和原偏差函数和终点坐标有关,无需计算点P坐标。
关于终点的判断中,采用总步长法,即将得到的轨迹图本质上为x y轴向运动图,当步长达到一定时,即到达终点,公式如下:
   
同理,圆弧插补也是相应算法:
图1 圆弧插补运动原理图
当F>0时,加工点位于圆弧线段外;当F<0时,加工点位于圆弧线段内;当F=0时,加工点位于圆弧线段上。
同直线插补算法的偏差函数,圆弧的偏差函数也是与进给方向有关。
在逆圆插补中,偏差函数公式如下:
   
同理,在顺圆插补中,偏差函数如下:
   
在终点判别中,采用分别判断各坐标轴的进给步数:
   
三、 设计思路
1、 硬件部分
老师在课堂上提供的迪文屏幕,带有CPU_GUI和CPU_OS双核,可以同时满足运行程序和提供人机交互功能。同时由于芯片的输出电流较低,无法驱动步进电机正常运转, 添加电机驱动模块(L298),通过芯片引脚向驱动模块输出控制信号,来间接控制步进电机的启停与运转。本次项目中,需要用到三个步进电机,分别是主轴转速电机,X轴电机,Y轴电机。
2、  软件部分
通过keil编写直线插补算法,和圆弧插补算法,并且时刻监听屏幕按钮状态,当点击“启动”按钮后,读取屏幕中终点坐标和当前点坐标,进行插补运算。在圆弧插补中除了上述坐标,还会读取圆弧半径和圆弧中心点坐标,进行圆弧插补运算。
3、  GUI设计
首先设置了屏幕保护界面,点击固定按钮才会进入到主界面,可以避免相关人员在上电后误操作。在主界面中,设置了“转速调节”、“直线插补”、“圆弧插补”按钮,点击不同的按钮会进入到相应的界面中。在主轴转速界面,设置了不同倍率的调节按钮,并且通过“+”、“-”按钮对主轴转速以相应的倍率进行调节。在直线插补界面,点击坐标显示栏,可以调出键盘,输入终点坐标。在圆弧插补界面会可以输入终点坐标,圆弧半径,以及圆心坐标。
四、工程代码和演示视频
工程文件见附件,演示视频请点击连接:演示视频_哔哩哔哩_bilibili

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-23 01:29 , Processed in 0.066047 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表