倍福TwinCAT(贝福Beckhoff)应用教程13.1 TwinCAT控制松下伺服 NC高级
本节主要演示了使用自定义函数实现电机的运动(梯形曲线和S曲线都有实现),这里的JOG+和JOG-,针对单个关节实现了PTP的运动(跟贝福的MoveAbsolute功能块实现效果一致),在此没有介绍运动控制算法的具体原理,不理解的可以网上搜索梯形曲线和S曲线的文章,并不只是非标自动化需要用到控制电机的PTP运动,比如升降机,电梯,或者凡是需要匀滑启停的电机控制,都逃不过要用到这方面的知识,读者也可以自己测试5次或者7次等其他自定义加速曲线,每一种运动给出的位置,速度,加速度都会有不同的效果。
上一节我们提到了使用简单的Y=X+V*t的方式控制轴JOG正反转,并且位置曲线是折线(因为速度从0直接下一个周期就是目标速度,速度没有一个平滑过渡,导致位置也是不平滑的)。这里我们除了可以监控位置,还可以监控速度和加速度。可以发现给出的位置,速度都比较光滑,没有锐利的过渡(加速度是三角形,如果设置为不同的A,V,J参数,也可能是梯形,但是不管怎样,这样的运动效果是比较稳定可靠的)
为了让函数更加简单和通用,JOG运动可以认为是多轴联动的一种特殊情况。比如AB两轴,A_1和B_1是他们的起始位置,A_2和B_2是他们的结束位置,如果A_2=A_1+99999(一个很大的值),B_2=B_1,那就成了针对A轴的正向JOG运动,而如果A_2不等于A_1,B_2也不等于B_1,那么就是最一般的多轴的联动(可以参考机器人学导论,整个流程大致是计算最大关节差值,根据给定的速度,加速度,加加速度对每个轴均一化,然后在每个周期都给出针对每个轴的方程位置),因此在本程序的最后也给出了两点PTP运动的实现(标记A点,走到A点,标记B点,走到B点以及AB两点的循环运动),当然也可以人为的填写一个要走的目标位置,然后走(MOVEJHMI)。
JOG按钮按下的时候切换到一个状态,松开的时候再切换到另一个状态。由于没有使用贝福的运动功能块,停止的时候也不再使用贝福的Halt命令。而是采集当前的位置,速度,并以指定的加速度平滑的减速到0(读者可以自己尝试把减速度改大改小,看滑出去的距离,也可以取消这种平滑过渡,直接下个周期不给位置,看立即停下来的效果。尤其是当正在进行运动的时候,TWINCAT每个周期都会计算出来下一个周期的位置,速度,加速度,当切换状态的时候,不给位置或者给的位置和当前位置差异太大,都会造成机器的震动,停止不平滑对机器是有损伤的,不断测试状态切换的时候给位置的效果可以加深对运动控制和TWINCAT实时性的理解)
比上一节有所改进,除了标记零点,还实现了位置和速度的软限位(标记零点的数据文件是Bias.txt,限位的数据文件是Limit.txt,都在C盘根目录下,这些文件打开是乱码,但是实际上保存的确实是要保存的数据)。当位置或者速度超差的时候(一般软限位会做在硬限位前面一点,如果碰到硬限位开关再停止,万一速度太大撞过去也刹不住,还是会有损害)。需要注意的是,虽然我在控制的是直线模组,但是我还是可以认为每个轴指定的是角度(跟机器人一样看,我要限制的位置比如是-30弧度到50弧度,那么就是对应几百几千度,也可能对应了几百mm,只是一个限制值而已没有必要太精确,但是这样却可以统一单位,我控制两轴模组到某个目标点,也是发给他每个关节的弧度值,显示在HMI上是角度值)
此外还有很多其他额外的小功能可以研究,例如使用一个按钮对所有电机全部上下使能(上使能之后等一会就执行ExtFeed Enable),例如运动的暂停和继续,急停和解除急停。总而言是,进行到这里整个代码量已经比较大了,也比较容易构建成一个完整的两轴运动的项目,如果要继续扩充三轴或者更多轴,也是比较方便的。当然这里还没有涉及到运动学和动力学算法,比如没法控制机器画直线画圆,这些将在下一节继续讲,有了这部分的基础后续的算法就会比较好做(至少我们无须担心算法的错误导致电机飞车,因为有位置和速度的保护)
更多教学视频和资料下载,欢迎关注以下信息:
我的优酷空间:
http://i.youku.com/acetaohai123
我的在线论坛:
http://csrobot.gz01.bdysite.com/
问题交流:
QQ:910358960
倍福TwinCAT(贝福Beckhoff)应用教程13.1 TwinCAT控制松下伺服 NC高级的更多相关文章
- 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶
在前面一节,我们简单介绍了通过PLC+HMI实现完整控制松下伺服的上使能-运动,采集位置,速度等功能,这里我们会大量简化用到的贝福功能块(为了更加实用).首先依然是对单个轴的封装,我们之前的做法,例如 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程12.2 TwinCAT控制松下伺服 NC初步
在前面我们已经学会了使用贝福自带的调试软件完成试运行,接下来是使用TWINCAT PLC实现这个功能,右击PLC添加一个PLC项目 在VISUs上右击添加一个HMI人机界面 目前PLC程序和人 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程13.3 TwinCAT控制松下伺服 NC配合完整上位
这是TwinCAT教程的最后一节,简单讲述了以C#为上位,通过ADS控制TwinCAT下位,实现完整控制两轴模组的功能.可以发现,在上位层已经没有了运动控制的代码,不管是要执行哪种运动,无非是把目标参 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 CS说明
虚拟仿真上,要注意仿真只是为了可视化,可以看到数据的变动是否和实际一致,所以Robot2D才是主要因素,虚拟仿真采集机器人的关节位置或者TCP位置来显示而已,为了测试一些别的算法,我们还可以在虚拟仿真 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补
对于MOVEJ的关节运动来说,我们只关心每个电机的角度(只需要考虑多个电机协同开始运动和结束运动,关键是对每个电机加速度均一化,从而一起跑一起停,这部分内容可以参考机器人学导论以获取更加详细的说明), ...
- 倍福TwinCAT(贝福Beckhoff)基础教程1.2 TwinCAT安装配置
由于TC2和TC3都有可能用到,个人推荐都安装,但是注意必须是先安装的TwinCAT2,然后安装TwinCAT3,如果反了可能两个都没法用(打开TcSwitchRuntime提示Both TwinCA ...
- 倍福TwinCAT(贝福Beckhoff)基础教程1.1 TwinCAT背景知识
本节附件中有很多PPT介绍贝福TwinCAT和EtherCAT的相关技术,在此只做简单说明. 简单总结:EtherCAT就是一种总线技术,具有速度快,稳定性高,布线简单等优点,详细可以参考下面这个PP ...
- 倍福TwinCAT(贝福Beckhoff)应用教程12.1 TwinCAT控制松下伺服 连接和试运行
首先是用松下伺服自带的软件可以测试运行(驱动器,电机都连接好,然后用USB线连接到松下伺服驱动器的X1口),打开调试软件会自动提示连接到伺服 一般需要对驱动器清除绝对值编码器数据(驱动器可能报错4 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)
常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块) 常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL280 ...
随机推荐
- 【 Zabbix 】 — 基础安装
一.基础环境 (1)centos6.7 x64 (2)JDK1.8 and zabbix-2.4.8(JDK是为了后期可以监控tomcat) (3)虚拟机测试环境 二.安装LAMP环境 这里为了快速搭 ...
- DevExpress控件-GridControl根据条件改变单元格/行颜色(Dev GridControl 单元格着色) z
DevExpress控件-数据控件GridControl,有时我们需要根据特定条件改变符合条件的行或者单元格颜色达到突出显示目的,现在动起鼠标跟我一起操作吧,对的,要达到这个目的您甚至都不用动键盘. ...
- hdu 3870(平面图最小割转最短路)
Catch the Theves Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65768/32768 K (Java/Others) ...
- 【转】C#获取当前程序运行路径的方法集合
//获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (. ...
- AC日记——Card Game codeforces 808f
F - Card Game 思路: 题意: 有n张卡片,每张卡片三个值,pi,ci,li: 要求选出几张卡片使得pi之和大于等于给定值: 同时,任意两两ci之和不得为素数: 求选出的li的最小值,如果 ...
- bufferknife框架的正确使用方式 -终于他么知道了
1.由于ButterKnife从7.x到8.x后,运行时和编译器被分开来,你还需要配置 apt ‘com.jakewharton:butterknife-compiler:8.1.0’,在projec ...
- 1087: Common Substrings (哈希)
1087: Common Substrings Time Limit:3000/1000 MS (Java/Others) Memory Limit:163840/131072 KB (Java/ ...
- 数字 function
SELECT TRUNC(15.79), TRUNC(), ROUND(15.79), ), ), FLOOR(26.983), CEIL(26.123), ), ), ), MOD(,) FROM ...
- Miller-Rabin与Pollard-Rho备忘
Miller-Rabin素性测试算法: 根据费马小定理当p为素数时成立,所以如果存在一个a使x不满足此定理,则x必然不为素数. 但这是充分条件而不是必要条件,所以对于每个a,可能存在满足定理的x,这时 ...
- POJ 3168 Barn Expansion (几何基础)
[题目链接] http://poj.org/problem?id=3168 [题目大意] 给出一些矩形,没有相交和包含的情况,只有相切的情况 问有多少个矩形没有相切或者边角重叠 [题解] 我们将所有的 ...