CodeSys学习笔记

文章目录

  • 1.运动控制的两种方式
    • 1.1.SM3_CNC
    • 1.2.SM3_Robotics
  • 2.两种运动控制方式的速度、加速度等参数的控制
    • 2.1.SM3_CNC
    • 2.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
轴坐标系,当使用此坐标系时,每个参数都表示对应的轴的当前角度/位置

MCS:The 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
世界坐标系。一般来说,机器坐标系和机器坐标系是平移关系。
引入世界坐标系的目的,可能是为了多个机器/机械手/传感器等设备的配合。

TCS:tool 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】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Linux源码趣读》| 好书推荐

目录 一. 🦁 前言二. 🦁 像小说一样趣读 Linux 源码三. 🦁 学习路线 一. 🦁 前言 最近、道然科技给狮子送了两本书:一本是付东来的《labuladong的算法笔记》、一本是闪客著的《Linux源码趣读》,《labulado…

回文日期

//每次枚举前四位,把前四位反转拼接到后面去,这样就是在回文数里判断一个数是不是合法日期 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int n,m,res;static BufferedReader in new BufferedRead…

前端性能优化的一些方法和策略

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【EI征稿中|ACM出版】2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023)

2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023) 2023 International Conference on Artificial Intelligence, Systems and Network Security 由西南科技大学计算机科学与技术学院主办的2023人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff…

实现跨VLAN通信、以及RIP路由协议的配置

一、如下图片: 1. 按照拓扑图所示,将8台计算机分别配置到相应的VLAN中。(20分) 2. 配置实现同一VLAN中的计算机可以通信。(22分) 3. 配置实现PC1,PC2,PC3,PC4可以互相通信,PC5,PC6,PC7,PC8可以互…

数组指针与函数指针

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

超参数优化的多功能贝叶斯优化包SMAC3

地址 关键词 Bayesian optimization, hyperparameter optimization, SMAC3 文章概述 本文介绍了SMAC3,一个用于超参数优化的多功能贝叶斯优化包。SMAC3使用随机森林作为代理模型,并结合了多样性的BO和强化策略,如积极竞赛和多样性方法…

Python编程技巧 – 异常处理

Python编程技巧 – 异常处理 Python Programming Skills – Exception Handling By JacksonML 每一个程序都未必是健壮的,有时候很脆弱。只有在人的理想思维状况下,返回的结果才是正确的,如意的。 1. 错误发生及异常输出 面对种种编写有疏…

PR剪辑视频做自媒体添加字幕快速方式(简单好用的pr视频字幕模板)

如何选择合适的字幕添加进短视频呢?首先要先确定增加的视频风格,简约、商务、科技感、炫酷;再确定用途,注释、标记、语音翻译、引用、介绍;最后在相应的模板中挑选几个尝试,悬着一个最切合主题的使用&#…

推荐的国外自动控制原理优秀教材:现代控制系统

推荐国外著名高等院校信息科学与技术优秀教材《现代控制系统》(Modern Control Systems),全书930页。自动控制原理课程教程,控制系统基础教材,涵盖控制工程方法,大量例题详细演示设计流程,电子版教学PPT和教学辅导手册供师生使用。 现代控制…

23、文件上传漏洞——Web容器及IIS

文章目录 一、常见web容器1.1 名词解释1.2 什么是web容器 二、IIS简介2.1 什么是IIS2.2 什么是文件解析 三、IIS6.0 文件解析漏洞3.1 漏洞利用 一、常见web容器 1.1 名词解释 服务器:一种管理资源并为用户提供服务的计算机。 web服务器,即www服务器或h…

C语言三种循环输出9*9乘法表

解题思路&#xff1a; 1、外层循环控制1~9循环 2、内层控制循环的次数 比如&#xff1a; 1 * 1 1 循环一次 1 * 1 1 1 * 2 循环两次 依此类推 int i, j;printf("for 打印9*9乘法表\r\n");for(i 1; i <10; i) {for(j 1; j < i;j) {printf("%d * %d %d…

QT----自定义信号和槽

第二天 2.1自定义信号和槽 新建一个Qtclass 自定义信号&#xff1a;返回值是void &#xff0c;只需要声明&#xff0c;不需要实现&#xff0c;可以有参数&#xff0c;可以重载 自定义槽&#xff1a;返回值void &#xff0c;需要声明&#xff0c;也需要实现&#xff0c;可以有…

学习设计模式的一个好网址

常用设计模式有哪些&#xff1f; (refactoringguru.cn)https://refactoringguru.cn/design-patterns

如何处理3dmax渲染完成后阴影部分?

使用3dmax软件&#xff0c;对效果图进行渲染过程中&#xff0c;有不少小伙伴&#xff0c;在渲染完成后出现问题。 较为常见的3dmax渲染问题有3dmax渲染有阴影&#xff1f; 对于一些新手伙伴遇到这类问题&#xff0c;不知如何解决&#xff0c;就会苦恼3dmax渲染有阴影怎么办&am…

【实战oj题】——相同的树及二叉树的最大深度

前言&#xff1a;二叉树是我们数据结构中一个比较重要的内容&#xff0c;它的oj题自然也就很多类型&#xff0c;那么我们今天就来解决二叉树中的oj题——相同的树。 这个题我们就得分情况了&#xff0c;如果两个树的根节点都为空的话&#xff0c;那么两棵树就会相等&#xff0c…

西南科技大学C++程序设计实验十一(泛型程序设计与C++标准模板库)

一、实验目的 1. 掌握泛型程序设计概念; 2. 掌握vector、deque、list容器使用方法; 3.了解set、map容器使用方法。 二、实验任务 1.分析完善以下程序,理解vector容器使用方法: #include <iostream> __#include <vector>_______ //补充vector模板头文件 …

【开源】基于Vue.js的学生综合素质评价系统

文末获取源码&#xff0c;项目编号&#xff1a; S 086 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S086。} 文末获取源码&#xff0c;项目编号&#xff1a;S086。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生功能2.2 教师功能2.3 教务处功能…

YB4052 充满电压可调SOT23有防反接功能的线性锂离子电池充电芯片

YB4052 充满电压可调SOT23有防反接功能的线性锂离子电池充电芯片 描述&#xff1a; YB4052是一款完整的单节钾高子申池采用恒定申流恒定申乐线件充电器。其S0T封装与较少的外部元件数目使得B4052成为便携式应用的理想洗择。YB4052可以话合SB申源和活配器电源工作。由于采用了…

深度解读 | 搭载谷歌最强大模型Gemini的Bard能否赶上ChatGPT

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 昨天早上看到了相关的报道&#xff0c;谷歌昨天发布了 "号称最强的大模型" Gemini&#xff0c;还是熟悉的字眼、还是熟悉的配方。之前谷歌一直在 AIGC 的竞争相…