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,一经查实,立即删除!

相关文章

h5或uniapp或微信小程序,实现左上角返回到指定页面,侧滑左滑返回指定页面,安卓物理返回键返沪指定页面解决思路的思考

h5或uniapp或微信小程序&#xff0c;实现左上角返回到指定页面&#xff0c;侧滑左滑返回指定页面&#xff0c;安卓物理返回键返沪指定页面 uniapp开发app,(非微信小程序)uniapp写的微信小程序 uniapp开发app,(非微信小程序) 自定义的左上角返回按钮 <i class"iconfon…

CentOS 7 mini 运行环境搭建与测试——CentOS Mini 安装ifconfig工具【云原生开发部署实践笔记】

云原生开发部署实践笔记 一、开发测试环境搭建与测试 1.1 Linux运行环境的搭建与测试 虽然CentOS已经更新到Stream 9 版本&#xff0c;但基于大多数企业和单位多数使用CentOS 7版本作为运行底座&#xff0c;7版本也一直在更行维护&#xff0c;此实践基于CentOS 7 Mini版本搭…

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

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

pgsql忘了登录免密,重置修改pgsql登录密码的方法

pgsql忘了登录免密&#xff0c;重置修改pgsql登录密码的方法 pgsql忘了登录免密&#xff0c;重置修改pgsql登录密码的方法一、修改pg_hba.conf配置文件&#xff0c;设置免密登录二、重置postgres账号密码三、还原pg_hba.conf文件内容四、登录验证五、psql 常用命令六、psql常用…

关于虚拟机共享文件夹问题

VM&#xff1a;16 Ubuntu&#xff1a;18.04 添加共享文件夹后仍无法显示文件 解决办法 进入/mnt/hgfs目录执行 sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 解释 /mnt/hgfs/ 是挂载点&#xff0c;我们也可以修改为其它挂载点 -o allow_other 表示普通用…

回文日期

//每次枚举前四位,把前四位反转拼接到后面去,这样就是在回文数里判断一个数是不是合法日期 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…

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

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

【华为OD题库-068】找出经过特定点的路径长度-java

题目 输入一个字符串&#xff0c;都是以大写字母组成&#xff0c;每个相邻的距离是1&#xff0c;第二行输入一个字符串&#xff0c;表示必过的点。 说明 每个点可过多次。求解经过这些必过点的最小距离是多少? 示例1 输入输出示例仅供调试&#xff0c;后台判题数据一般不包含示…

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

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

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

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

MetricBeat监控MySQL

目录 一、安装部署 二、开启mysql监控模块 三、编辑mysql配置文件 四、启动Metricbeat 五、查看监控图表 一、安装部署 metriceat的安装部署参考章节&#xff1a; Metricbeat安装使用&#xff0c;这里不再赘述。 二、开启mysql监控模块 进入metricbeat安装目录 ./metricb…

3D建模基础教程:宝箱案例

本篇文章将通过制作一个简单的宝箱案例&#xff0c;带大家入门3D建模的基础知识。我们将逐步学习如何使用3D建模软件&#xff0c;从建立基本几何体到组合、雕刻和纹理贴图&#xff0c;最终完成一个完整的3D模型。 1️⃣ 建立基本几何体 首先&#xff0c;我们需要创建一个长方…

数组指针与函数指针

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

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

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

《算法面试宝典》--数学基础知识

第一章 数学基础 ========================= 深度学习通常又需要哪些数学基础?深度学习里的数学到底难在哪里?通常初学者都会有这些问题,在网络推荐及书本推荐里,经常看到会列出一系列数学科目,比如微积分、线性代数、概率论、复变函数、数值计算、优化理论、信息论等等…

C++ 把引用作为参数

我们已经讨论了如何使用指针来实现引用调用函数。下面的实例使用了引用来实现引用调用函数。 #include <iostream> using namespace std;// 函数声明 void swap(int& x, int& y);int main () {// 局部变量声明int a 100;int b 200;cout << "交换前…

Python编程技巧 – 异常处理

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

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

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

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

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

[Java面试——Java 新版本]

Java 8版本特性&#xff0c;及Java8版本特性。 6.1 Java 8 特性 什么是函数式编程&#xff1f;Lambda表达式&#xff1f; 函数式编程 面向对象编程是对数据进行抽象&#xff1b;函数式编程是对行为进行抽象。 核心思想: 使用不可变值和函数&#xff0c;函数对一个值进行处理…