我是靠谱客的博主 无聊导师,最近开发中收集的这篇文章主要介绍请画出与上述代码对应的程序流程图;_研华运动控制卡程序开发——多轴回原点...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文主要介绍研华运动控制卡如何实现多轴回原点并将XYZ三轴走到对应待机位的动作流程,为了更好掌握回原点运动控制流程,这里详细介绍了XYZ三个轴先后回原点,回原点完成后清零及运动到待机位等程序流程开发。本文程序的开发以C#为例,其他的开发语言只是编写语言的区别,对于整体的开发流程无区别。

回原点流程

4c1df86485f00b68d161282ea36e0dfb.png

创建线程

由于回原点整体的动作属于运动流程,因此我们还是用Switch Case的架构来实现,关于线程的建立及相应各个功能,请查看研华运动控制卡程序开发——单轴往返运动一文中的创建线程章节,线程函数规划如下图。

726625d1c73f310c44f3ac966731ba34.png

动作流程编写

本文需要达到的就是所有的回原点动作流程均在Case:SysHomeState里面执行,为此我们只需要在对应的AdvHome()函数里实现回原点运动流程即可。

那AdvHome()函数里,我们又将每一步动作划分到每个Case来执行,如下图。

f641dd60eec5636ea5059422d842aa60.png

每执行完一个Case就跳出到外面大的While循环(上图线程函数中的While),然后再进入Case:SysHomeState,再进到AdvHome()函数里执行下一个Case。因此,在AdvHome()函数里不允许在Case里面增加Sleep来作为延时计算,这样会导致整个线程处在Sleep里面,没法响应其他异常。

代码实现

AdvHome()函数对应的动作流程

0d3d10a98603886716d7564d7840014d.png

0b034a7852929287d51fef3df3e0a74d.png

b5b1e479bb6315fea7a116101f113c7d.png

AdvAxSetHomeVelPar()函数代码

9a1414abebbdb40105135afc079387c8.png

AdvAxMoveHome()函数代码

d9a142fef4215a32a843041a22bc2202.png

AdvMotionDone()函数代码

4f7b705a22b323ddef4c995ac4aba92d.png

WaitTime()函数代码

62296bada5ca3569414206dbee63693d.png

AdvEctAxSetPos()函数代码

EtherCAT总线型驱动器,不支持SetActualPosition指令,调用SetCmdPosition指令后,会对驱动器执行CiA402中的Home mode35模式,将当前的位置设置为输入值。因为该方式是通过SDO方式进行读写设置,所以有一定几率发生调用失败的现象。因此,建议调用完该指令,需判断返回值是否成功以及轴状态是否Ready,若是返回值为失败或轴状态为ErrorStop则需再次重新调用该指令。可通过下图流程图及参考代码进行设置轴位置设置。

45fbc811e8847e67f52019b4b74cdb84.png

eeffd47dd3045674c0dd74f912565569.png

对于脉冲型驱动器模块从站(针对AMAX-3245/85上所控制的轴或者脉冲板卡),因为该模块不是CiA402模块,理论位置和反馈位置不需要同步,因此该模块支持SetCmdPosition和SetActualPosition,且可以分开设定,可通过如下程序代码实现。

8c41825be612d2ab4e9b4aecdfe4d0d9.png

AdvMoveAbs ()函数代码

a9e041a9601d486875feae26d78af237.png

界面Home按钮的响应函数代码

5d6453e083ad8cf1ff29dd3076186e2e.png

最终简单实现界面

f15bae3bbb9faf5583b68fc7cd11dc9c.png

最后

以上就是无聊导师为你收集整理的请画出与上述代码对应的程序流程图;_研华运动控制卡程序开发——多轴回原点...的全部内容,希望文章能够帮你解决请画出与上述代码对应的程序流程图;_研华运动控制卡程序开发——多轴回原点...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部