两轴插补速度怎么给定_如何正确计算及设置DMC1000插补的矢量速度
如何正确计算及设置DMC1000插补的矢量速度
一、问题现象
用户通过以下编程:
# define XCH 0
# define YCH 1
double fUnit[]={ 3200/5.0, 3200/5.0}; //脉冲当量,每毫米脉冲数
//每转脉冲数为3200,每转毫米数为5.0
short axisArray[]={ XCH, YCH };//选择XY两轴
long distArray[]={ x * fUnit[XCH], y*fUnit[YCH] }; //x和y为毫米单位的绝对位置
d1000_start_ta_line( 2, axisArray, distArray, 10, 10, 0.0);//匀速插补
通过实际运动发现以下情况:
No.1 当X=100,Y=0,即水平方向,所花时间为10.002秒
No.2 当X=0,Y=100,即垂直方向,所花时间为10.003秒
No.3 当X=100,Y=100,即45度斜线,所花时间为10.005秒
即三种情况下的运行时间几乎相当(当中的微小时间差可能由系统的多任务特性引起的),而实质上当走45度斜线时,其距离等于100*sqrt(2) = 100*1.414=141.4毫米,由此可见距离长了许多,故其速度也快了许多。此种情况在速度慢的情况下表现不明显,但是在激光切割时,速度不稳定,同样的能量切割出来的效果就不一致,质量也就不能过关。
二、原因分析
DMC1000的开发较早,对于直线插补的算法是采用三角函数进行合成,故以上设定的10,10,0.0的速度是对距离长的运动轴有效(即长轴),不是一个矢量的速度,由此可见,同样的速度设定会因为直线的斜率不同而快慢不一致。
三、解决方法
解决此问题也很简单,每次需要重新计算长轴的速度,以用于作为插补速度,下面给出原代码,以对上面的代码进行补充:
double fP1 = distArray[XCH] - (double)d1000_get_command_pos(XCH);
double fP2 = distArray[YCH] - (double)d1000_get_command_pos(YCH);
double fLen= sqrt( fP1*fP1 + fP2*fP2 );
if( fLen < 1 )//0脉个不要
return nAxises;
long nStart,nSpeed; //计算出新的速度
if( fabs(fP1)>fabs(fP2) )
{
double kx = fP1 / fLen;
double AP = kx * fP1;
kx = AP / fP1;
nStart = long(fUnit[XCH] * speed.start * kx );
nSpeed = long(fUnit[XCH] * speed.speed * kx );
}
else{
double ky = fP2 / fLen;
double AP = ky * fP2;
ky = AP/ fP2;
nStart = long(fUnit[YCH]*ky);
nSpeed = long(fUnit[YCH]*ky);
}
nStart和nSpeed是计算出来的最后设定的速度。
关于speed是一个速度结构,大致如下(单位:毫米/秒)
typedef struct tag_SPEED
{
double start;
double speed;
double accel;
};
四、附带声明
在DMC1000以后的系列控制卡,如:DMC2000,DMC3000,DMC5000,对矢量速度的设定都已进行充分的考虑,不再需要用户添加额外的代码进行计算了。
两轴插补速度怎么给定_如何正确计算及设置DMC1000插补的矢量速度相关推荐
- 两轴插补速度怎么给定_快速入门 | 篇十七:运动控制器多轴插补运动指令的使用...
以下是图文详解 本节内容主要分为三大部分:插补运动.轨迹前瞻以及SP速度指令. 一 插补运动 插补是机床数控系统依照一定方法确定刀具运动轨迹的过程,插补是一个实时进行的数据密化的过程,不论是何种插补算 ...
- 测试mysql的查询速度很慢_求助,mysql统计实时数据信息的,查询速度很慢?
CREATE TABLE `action_log` ( `pkid` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键Id', `enterpr ...
- 三菱FX5U,机床X轴Y轴工作台定位控制程序 全部使用两轴直线插补 有自动定位,手动定位!手动控制有,点动一次按钮每次走设置的距离
三菱FX5U,机床X轴Y轴工作台定位控制程序!使用三菱J4-A系列伺服驱动器绝对位置系统,程序大小27000多步 1.本程序最多可做20个定位工序,全部使用两轴直线插补! 2.有自动定位,手动定位!手 ...
- 三菱Q系列plc,11轴标准程序,包含轴回零,相对定位,绝对定位,程序有两轴直线插补
三菱Q系列plc,11轴标准程序,包含轴回零,相对定位,绝对定位,程序有两轴直线插补,一共有五组插补,整个程序的模块都有,程序框架符合广大编程人员思维,只要弄明白这个程序,一般的项目都不会无从下手,参 ...
- 插值法补齐缺失数据_一种挽救你缺失数据的好方法——多重补插
原标题:一种挽救你缺失数据的好方法--多重补插 缺失数据--研究中的绊脚石 在医学研究中,我们经常会碰到缺失数据.无论是因为实验设计的问题,或是检测手段精度,又或是医学实验中的不可抗力因素.一旦数据没 ...
- 信捷PLC程序插键槽机全套程序方案,用信捷plc触摸屏伺服驱动,绝对值伺服电机。 实现对两轴伺服进行插键槽控制,对刀快捷,调试简单
信捷PLC程序插键槽机全套程序方案,用信捷plc触摸屏伺服驱动,绝对值伺服电机. 实现对两轴伺服进行插键槽控制,对刀快捷,调试简单. PLC通讯绝对值伺服,回绝对值原点,绝对值伺服电池记忆零点,不用重 ...
- 两个矩阵是否相交的算法_收藏 | 计算机、数学、运筹学等领域的32个重要算法...
来源:大数据 本文约2500字,建议阅读5分钟. 本文为你分享计算机.数学.运筹学等领域的32个重要算法. [ 导读 ] 奥地利符号计算研究所(Research Institute for Symbo ...
- 插值法补齐缺失数据_关于数据清洗的常见方式
1. 探索性分析 探索性分析部分,对于整个数据来讲是获得对数据一个初步的认识以及对先验知识的一个探索分析过程,在我做相关数据挖掘的过程中,主要是利用python相关的科学计算库进行数据初步的探索,例如 ...
- 戴尔win10插耳机还外放_通州附近戴尔笔记本电脑维修哪家强-北京信维佳业科技有限公司...
通州附近戴尔笔记本电脑维修哪家强 [xwjywxkj] Win10版之后变成教育版的解决方法:首先我们点击开始菜单,下拉找到并展开Windows系统,右键点击命令提示符,选择更多,以身份运行,如下图所 ...
最新文章
- 简述Field,Attribute,Property的区别
- 学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点!
- cv2.VideoCapture().set(propId, value)设置摄像头图片大小的用法
- 奶块哪种服务器人最多,奶块什么服务器人多 | 手游网游页游攻略大全
- Oracle:ORA-01789: 查询块具有不正确的结果列数 分析原因和解决办法
- TensorFlow 第四步 多层神经网络 Mnist手写数字识别
- 疫情病毒全部“抹杀”?用数据模型来解读传播抑制的效果差异!
- javascript边角知识
- 从零基础入门Tensorflow2.0 ----六、30 kaggle 10 monkeys 基础模型搭建与训练
- 实体词典 情感词典_基于情感词典的情感分析
- vant中修改用户的头像
- Win10 新机,这些必装软件你拥有了吗?美化、写作、下载、效率神器...这篇攻略请收藏...
- 基于[三星6818]I2C驱动开发的0.96寸oled屏
- SEO精准搜索流量的玩法
- python提取excel指定关键词的行数据
- (20200410已解决)ValueError: Cannot convert non-finite values (NA or inf) to integer
- 阿里云OSS域名配置及简单上传
- android 缺少模拟器,Android模拟器缺少硬件配置文件(示例代码)
- 如何使QGraphicsItem不随QGraphicsView放大缩小而改变大小
- 软件测试流程、测试方法、测试软件
热门文章
- GetMessage PeekMessage
- (原创)C# LRC复读机-1
- 关于Altium AD20出现的Net NetU2_26 contains floating input pins (Pin U2-26)Net NetU2_26 has only one pin
- 一览印度区块链项目Matic Network的应用场景
- 任命额外的项目经理时要谨慎行事(转)
- 宗镜录略讲——南怀瑾老师——系列6
- 说说fanIn和fanOut
- WebRTC基础实践 - 5.通过RTCPeerConnection传输流媒体视频
- Unity 输出360图片
- debian常用命令整理