侵权投诉

搜索
更多>> 热门搜索:
订阅
纠错
加入自媒体

研控运动控制卡的编程小技巧!

2020-11-21 09:06
研控科技
关注

运动控制卡开发应用中,运动顺序执行是最常见的编程问题之一,关系到设备后续控制动作能否正常运行。

下面,我们分享研控运动控制卡的编程小技巧!

希望对你有所帮助!

运动顺序执行——编程技巧

1.1

问题描述

我们使用上位机编程软件对控制卡进行点位、插补等多段轨迹运动时,轨迹间需判断上段轨迹运动停止状态(YK_check_done(CardNo,axis_no)),上段轨迹运动停止则立即启动下段轨迹运动。

如果编程时只是单独使用While循环,执行后会发现上位机界面被卡死,按键不能响应。

如以下用例程序,将出现上述问题:

研控控制卡MCC800从位置dist_0运动到位置dist_1,程序如下:

//设定运动速度参数

rtn =YK_set_profile(mCardNo,Axis,atof(mMinVel),atof(mMaxVel),atof(mAccTime),atof(mDecTime),atof(mEndVel));

//设定S段时间

rtn =YK_set_s_profile(mCardNo,Axis,0,atof(mSmoothTime));

//启动第一段运动轨迹

rtn= YK_pmove(mCardNo, Axis, dist_0, 0);

//判断当前轴状态

status= YK_check_done(mCardNo, Axis );

//循环判断当前轴运动状态

while (status ==0)

// "当前状态:运动",继续循环判断;

status = YK_check_done(mCardNo,Axis );

//启动第二段运动轨迹

rtn= YK_pmove(mCardNo, Axis, dist_1, 0);

//指令执行完成

1.2

原因分析

上述程序,在启动 运动位置到dist_0过程中需不断循环判断运动是否停止,在条件不满足即运动没有停止时程序一直处于循环中,程序将会占用整个软件的进程时间资源,即进入了死循环,其它进程消息不能及时响应,导致上位机界面卡死。

因此我们需要软件在循环判断运动状态的同时还需响应其它进程消息。

1.3

解决方案

软件多 线程可解决上述问题,但多线程较麻烦。可以使用软件自动函数实现。

1.3.1 VB编程

VB编程软件中有系统自动线程函数“DoEvents”。

//循环判断当前轴运动状态

while (status ==0)

// "当前状态:运动",继续循环判断;

status = YK_check_done(mCardNo,Axis );

// 使用VB编程中自带线程函数“DoEvents”

DoEvents

1  2  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号