南京 网站建设模板价格,企业邮箱系统,怎么设置自己做的网站吗,深圳 网站设计公司价格文章目录 1.运动控制的两种方式1.1.SM3_CNC1.2.SM3_Robotics 2.两种运动控制方式的速度、加速度等参数的控制2.1.SM3_CNC2.2.SM3_Robotics 3.CNC的M指令的使用#xff08;实现#xff09;逻辑。4.SM3_Robotics中的坐标系5.SM3_Robotics如何实现插补并连续执行#xff1f;6.J… 文章目录 1.运动控制的两种方式1.1.SM3_CNC1.2.SM3_Robotics 2.两种运动控制方式的速度、加速度等参数的控制2.1.SM3_CNC2.2.SM3_Robotics 3.CNC的M指令的使用实现逻辑。4.SM3_Robotics中的坐标系5.SM3_Robotics如何实现插补并连续执行6.Jerk的意思 记录一下学习CodeSys遇到的一些知识点
1.运动控制的两种方式
在codesys中与运动控制有关的主要有两个库SM3_CNC、SM3_Robotics
假设我们对轴已经配置组态完毕那么SM3_CNC、SM3_Robotics对轴的操作逻辑上会有所不同。 简单来说SM3_CNC是逐个轴控制、SM3_Robotics是整个轴组一起控制。
1.1.SM3_CNC
SM3_CNC需要单独对每一个轴进行Power、move等操作。同时还需要引入一个运动学模型比如SMC_TRAFO_Gantry2。 运动学模型分为前向动力学模型、方向动力学模型。其中前向动力学是指输入各个电机的当前位置然后输出末端位姿的数学模型。反之反向动力学是指输入末端的位姿求解各个电机的位置的数学模型。
在codesys中正向动力学模型一般命名为SMC_TRAFOF_XXX而反向动力学一般命名为SMC_TRAFO_XXX。正向动力学求解肯定有且仅有唯一解但是反向动力学求解大多数情况下都存在多组解。
1.2.SM3_Robotics
对于SM3_Robotics则一般需要把各个轴绑定成一个轴组AxisGroup然后调用函数对轴组进行统一操作比如SMC_GroupPower、MC_GroupEnable等等。 SM3_Robotics在进行运动控制时也是需要进行反向动力学可能也需要正向动力学的配置并且也是使用前面提到的SMC_TRAFOF_XXX但是这个配置不用我们再单独使用SMC_TRAFOF/SMC_TRAFO之类的功能块而是在轴组的配置界面中配置即可。也就是当我们设置好轴组后轴组已经把自己封装、抽象成了一个运动控制对象后续我们需要操作就直接对这个对象进行操作即可而不用单独对其每一条轴进行操作。
从他们的函数使用关系来看SM3_Robotics可能是在SM3_CNC的基础上拓展而来
2.两种运动控制方式的速度、加速度等参数的控制
2.1.SM3_CNC
在CNC中通过解析G代码取得各个插值点以及其具体的速度、加速度等值存放在一个SMC_OUTQUEUE中。解析得到的代码可以这样查看到在你的CNC对象上右键、选择CNC信息。 然后在弹出的窗口中点击【显示生成的代码】。从下面可以看到的确是实例化了一个SMC_OUTQUEUE类型的变量。 通过把这个queue传递给插补器让插补器根据queue里面的离散点位进行更多点位的插补。通过查看SMC_OUTQUEUE的元素类型可以知道其包含了速度、位置等信息。
插补器功能块SMC_Interpolator通过插补后输出的piSetPosition包含当前需要执行的位置的相关参数。
2.2.SM3_Robotics
在SM3_Robotics中基本是手动设置目标位置的参数。但是不同的移动函数关于速度、加速度的使用是不同的。
假如使用的是MC_MoveCircular、MC_MoveLinear、SMC_GroupJog2那么是可以设置速度、加速度等参数的。 但是假如使用的是MC_MoveDirectAbsolute是无法直接设置具体数值只能设置比例系数xxxFactor。 具体情况请参考帮助手册。
3.CNC的M指令的使用实现逻辑。
参考【CODESYS运动控制之如何使用M功能.docx】
办法是监听SMC_Interpolator的wM输出可能还需要配合iStatus在检测到wM输出有效值时利用wM值进行相应的操作操作完后设置一下bAcknM,告知SMC_Interpolator让其继续执行后面的代码。 也就是说此时SMC_Interpolator只是当了个传话筒的作用具体的功能还是得自己根据SMC_Interpolator给过来的wM值来实现具体的功能。
4.SM3_Robotics中的坐标系
在机械手控制中有若干个坐标系类型
ACS axis coordinate system 轴坐标系当使用此坐标系时每个参数都表示对应的轴的当前角度/位置
MCSThe machine coordinate system (MCS) is defined by the applied kinematics which determine its position and orientation. 机器坐标系。参数一般是x, y, z, pitch, roll, yaw。机器坐标一般是以机械臂的底座为原点。
WCS world coordinate system 世界坐标系。一般来说机器坐标系和机器坐标系是平移关系。 引入世界坐标系的目的可能是为了多个机器/机械手/传感器等设备的配合。
TCStool coordinate system 工具坐标系也就是机械臂末端的坐标系。在进行一些特殊移动时比较方便。
5.SM3_Robotics如何实现插补并连续执行
不知道在机械手控制中能否使用插补假如可以的话那我就可以把ROS规划的路径trajectory发送给PLC执行了。 从理论上应该是可以的但是有个问题。插补器插补出来的数据虽然比原来的更加稠密但本质上还是位置点CNC那边是怎么解决点与点之间的连接、过渡的总不能走一个点停一下然后再走另外一个点吧 从例程看CNC使用的是SMC_ControlAxisByPos。这个功能块看起来是起到动态控制位置的也就是说它一直都在动态地检测传递过来的位置信息一旦与当前的位置不符就执行移动。这样哪怕不断地传递新的点位过来也可以保证运动是连续的。 而且从其使能参数bEnable来看它是在true之后一直在执行相当于一个状态。
但是对于轴组假如我调用MC_MoveLinearAbsolute 来执行那肯定不可以吧。因为这个功能块在走到了目标位置就会停下来。关于这点可以从它的执行是能参数Execute的介绍可以看到它是在此参数的上升沿才执行一次的。难道需要到一个点位后再继续传输下一个点位然后在同一个扫描执行周期内把Execute参数先设置为false然后再设置为true 假如调用了MC_MoveLinearAbsolute应该就不用插补器了。因为这个功能块应该内部已经插补了。
大概研究了一下SMC_GroupUpdateContinueData 这个功能块它可能是和其他功能块配合实现运动时暂停然后再继续原来的路径的。不是用来执行包含了若干个点的路径的。 所以只能先把需要经过的路径点保存起来然后用MC_MoveLinearAbsolute逐一把各个点位走完
6.Jerk的意思
在使用运动控制功能块时经常可以看到Jerk参数 之前还以为是什么急停参数。后来看了资料才知道是加加速度的意思。【运动控制中的Jerk】