Codesys.运动控制电子齿轮

文章目录

一. 电子齿轮概念应用

二. 电子齿轮耦合功能块

2.1. MC_GearIn

2.2. MC_GearInPos

2.3. MC_GearOut

三. 电子齿轮案例

3.1. 样例介绍

3.2. 引入虚轴

3.3. 程序框架

3.4. 程序编写

3.5. 程序监控


一. 电子齿轮概念应用

                                                                            

在很多应用场景中有多个牵引轴每个牵引轴要以一定的数据比例同步运行,由于存在机械误差,就需要设置齿轮比,根据物理学关系,假设齿轮1齿数为Z1,转速为n1,假设齿轮2齿数为Z2,转速为n2.则满足关系Z1/Z2=n2/n1

二. 电子齿轮耦合功能块

2.1. MC_GearIn

  • 设定从轴与主轴间的齿轮比,进行电子齿轮动作。

  • 详情可以查看Codesys运动控制手册。

  • 波形测试:

如图所示,设置主从轴齿轮比1:2,则其速度比为2:1,齿轮耦合不改变主轴状态,耦合后从轴状态进入6(同步运行),退出耦合后从轴状态进入5(连续运动)会以当前速度继续运行下去,可以用MC_Stop来停止轴。

2.2. MC_GearInPos

  • 设定主轴与从轴之间的电子齿轮比,进行电子齿轮动作。

  • 指定开始同步的主轴位置、从轴位置、主轴开始同步距离,并以此来完成切入电子齿轮动作。

详情可以查看Codesys运动控制手册。

  • 波形测试:

如图所示,指定开始同步的主轴位置400、从轴位置200、主轴开始同步距离100,并以此来完成切入电子齿轮动作。

2.3. MC_GearOut

  • 终止执行中的 MC_GearIn,MC_GearInPos 指令。

  • 详情可以查看Codesys运动控制手册。

注意:调用该指令只是退出耦合后从轴状态进入5(连续运动)会以当前速度继续运行下去,可以用MC_Stop来停止轴。

三. 电子齿轮案例

                                                                   

3.1. 样例介绍

下图设备设计使用了两个牵引轴,牵引轴的作用在于提供待加工带料的牵引力,如下图所示,每个牵引轴部分都是由两个齿轮啮合在一起,两个齿轮带动两个摩擦力较大的两个棍贴合在一起,带料从两辊之间穿过,,贴合在一起的这两个棍转动起来则可带动带料朝相应方向运转。

                                

  • 牵引轴部分简述

上图设备设计使用了两个牵引轴,牵引轴的作用在于提供待加工带料的牵引力。如右图所示,每个牵引轴部分都是由两个齿轮合在一起,两个齿轮带动两个摩擦力较大的两个辊贴合在一起,带料从两辊之间穿过,贴合在一起的这两个辊转动起来则可带动带料朝相应方向运转。

  • 为什么什么设计两个牵引轴

带料经过牵引轴A之后,带料又走过了很多中间棍,由于设备下侧部分是实现摆臂同步工艺所必须要的机械构造,所以若只有一个牵引轴必然会导致牵引力不均匀和牵引力不足。

  • 两个牵引轴的速度匹配与同步停止

速度匹配:理论上牵引轴A和牵引轴B的线速度应该是相等的。

同步启停:两个牵引轴应当同步启停。

  • 同步张力控制

如上侧图所示,系统中牵引A左侧部分材料的张力通过摆杆A施加,牵引B右侧部分材料张力通过摆杆B施加,在牵引AB之间材料的张力实际上是来源于AB之间材料的形变,即牵引轴AB在单位时间内的位移差。故若需要牵引AB之间材料具备可加工的张力,就需要牵引轴AB存在一定的速度差。

  • 根据左侧设备示意图,写一下牵引A和牵引B部分小例程(其他部分机构程序不用管),支持一键启动、一键停止,牵引AB之间要形成一定的张力,支持在切换方向(停机时有效)

3.2. 引入虚轴

                         

问题:这里为什么不直接让两个牵引轴的一个通过齿轮耦合跟随另一个牵引轴呢?直接耦合行不行?

直接耦合,其实也是可以的,但是一般我们项目上,涉及到多轴同步的场合(电子凸轮 & 电子齿轮)都不这么直接耦合,大都增加一个虚主轴,原因有以下几点:

  • 实轴速度会有波动,导致从轴也跟着波动,加虚轴可以消除抖动的问题,运行实际更平稳。

  • 还有一个响应滞后的问题,假如实轴A做主轴,实轴B做从轴,那么B始终是滞后A的;如果虚轴做主轴,实轴A与B做从轴,那么实轴A与B的参考对象是虚轴,

    就解决了B滞后A的问题。

  • 另外就是更方便的调整工艺需求,比如可以方便的调整虚主轴的速度,这样整机速度就同步调整了。

3.3. 程序框架

  • 新建一个虚轴(主轴)和两个实轴(做牵引,右牵引),轴配置参数如下:

  • 程序目录结构:

  • SCTY_INNER_IO:

  • GVL_Var:

3.4. 程序编写

  • PRG_TaskEct任务程序逻辑:

// 内部变量与实例化:
PROGRAM PRG_TaskEct
VAR
	vmc_MasterPower				: MC_Power;
	vmc_MasterVelocity			: MC_MoveVelocity;
	vmc_MasterStop				: MC_Stop;
	
	vmc_LeftPower				: MC_Power;
	vmc_LeftGearIn				: MC_GearIn;
	
	vmc_RightPower				: MC_Power;
	vmc_RightGearIn				: MC_GearIn;	
END_VAR

// 程序代码:
vmc_MasterPower(
	Axis:= 						V_Master, 
	Enable:= 					TRUE, 
	bRegulatorOn:= 				TRUE, 
	bDriveStart:= 				TRUE, 
	Status=> , 
	bRegulatorRealState=> , 
	bDriveStartRealState=> , 
	Busy=> , 
	Error=> , 
	ErrorID=> );
	
vmc_MasterVelocity(
	Axis:= 						V_Master, 
	Execute:= 					gb_MasterVelocityExecute, 
	Velocity:= 					gf_MasterVelocityValue, 
	Acceleration:= 				gf_TotalAccDec, 
	Deceleration:= 				gf_TotalAccDec, 
	Jerk:= , 
	Direction:= 				gi_MasterDirection, 
	BufferMode:= , 
	InVelocity=> , 
	Busy=> , 
	Active=> , 
	CommandAborted=> , 
	Error=> , 
	ErrorID=> );
	
vmc_MasterStop(
	Axis:= 						V_Master, 
	Execute:= 					gb_MasterEmyStop, 
	Deceleration:= 				gf_TotalAccDec, 
	Jerk:= , 
	Done=> 						gb_MasterEmyStopDone, 
	Busy=> , 
	Error=> , 
	ErrorID=> );	
	

vmc_LeftPower(
	Axis:= 						R_LeftAxis, 
	Enable:= 					TRUE, 
	bRegulatorOn:= 				TRUE, 
	bDriveStart:= 				TRUE, 
	Status=> , 
	bRegulatorRealState=> , 
	bDriveStartRealState=> , 
	Busy=> , 
	Error=> , 
	ErrorID=> );	
	
vmc_LeftGearIn(
	Master:= 					V_Master, 
	Slave:= 					R_LeftAxis, 
	Execute:= 					gb_LeftCoupler, 
	RatioNumerator:= 			gdi_LeftNumerator, 
	RatioDenominator:= 			gudi_LeftRightDenominator, 
	Acceleration:= 				gf_TotalAccDec, 
	Deceleration:= 				gf_TotalAccDec, 
	Jerk:= , 
	BufferMode:= , 
	InGear=>					gb_LeftSyn, 
	Busy=> , 
	Active=> , 
	CommandAborted=> , 
	Error=> , 
	ErrorID=> );
	
vmc_RightPower(
	Axis:= 						R_RightAxis, 
	Enable:= 					TRUE, 
	bRegulatorOn:= 				TRUE, 
	bDriveStart:= 				TRUE, 
	Status=> , 
	bRegulatorRealState=> , 
	bDriveStartRealState=> , 
	Busy=> , 
	Error=> , 
	ErrorID=> );
	
vmc_RightGearIn(
	Master:= 					V_Master, 
	Slave:= 					R_RightAxis, 
	Execute:= 					gb_RightCoupler, 
	RatioNumerator:= 			gdi_RightNumerator, 
	RatioDenominator:= 			gudi_LeftRightDenominator, 
	Acceleration:= 				gf_TotalAccDec, 
	Deceleration:= 				gf_TotalAccDec, 
	Jerk:= , 
	BufferMode:= , 
	InGear=> 					gb_RightSyn, 
	Busy=> , 
	Active=> , 
	CommandAborted=> , 
	Error=> , 
	ErrorID=> );	
  • PRG_TaskMain程序逻辑:

3.5. 程序监控

  • Trace跟踪:

 

 

  案例下载链接:Codesys.运动控制电子齿轮案例包资源-CSDN文库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何优雅地避免空指针异常(NullPointerException)

空指针异常是导致java程序运行中断最常见的原因,相信每个程序猿都碰见过,也就是NullPointException,我们通常简称为NPE,为了提高我们写的代码的健壮性,本文告诉大家如何优雅避免NPE。 出现空指针异常的情况 访问空对…

几大开源免费的 JavaScript 富文本编辑器测评

MarkDown 编辑器用的时间长了,发现发现富文本编辑器用起来是真的舒服。 一直以来写博客都是用的 MarkDown 编辑器,MarkDown 文档简单方便,使用几个简单的符号就可以定义出样式统一的富文本内容。写博客的时间长了,小玖就越来越排…

数据分析-Pandas数据画箱线图

数据分析-Pandas数据画箱线图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&#xff…

程序运行的基本流程

操作系统(应用程序): 装系统就是将操作系统安装到硬盘1中 计算机启动的基本过程: 总结: 程序一般保存在硬盘中,软件安装的过程就是将程序写入硬盘的过程程序在运行时会加载进入内存,然后由CPU…

C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码

1 微分方程 含有导数或微分的方程称为微分方程,未知函数为一元函数的微分方程称为常微分方程。 微分方程的阶数 微分方程中导数或微分的最高阶数称为微分方程的阶数。 微分方程的解 使得微分方程成立的函数称为微分方程的解。 微分方程的特解 微分方程的不含任意…

计算数据集的总体标准差pstdev()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算数据集的总体标准差 pstdev() [太阳]选择题 pstdev() 的作用是() import statistics a [0, 0, 8, 8] print("【显示】a ",a) print("【执行】st…

GPT-4 等大语言模型(LLM)如何彻底改变客户服务

GPT-4革命:如何用AI技术重新定义SEO策略 在当今快节奏的数字时代,客户服务不再局限于传统的电话线或电子邮件支持。 得益于人工智能 (AI) 和自然语言模型 (NLM)(例如 GPT-4)的进步,客户服务正在经历革命性的转变。 在这…

网络故障基本判断方法

1)电脑上使用winR键,打开运行窗口,输入CMD命令,点击回车键 2)在弹出的CMD运行窗口中输入ipconfig命令 通过该命令可以查看本机的IP地址,子网掩码和网关等信息。确认电脑中所有网卡配置是否正确。 3&…

UNIAPP微信小程序中使用Base64编解码原理分析和算法实现

为何要加上UNIAPP及微信小程序,可能是想让检索的翻围更广把。😇 Base64的JS原生编解码在uni的JS引擎中并不能直接使用,因此需要手写一个原生的Base64编解码器。正好项目中遇到此问题,需要通过URLLink进行小程序跳转并携带Base64参…

MySQL 学习笔记(基础篇 Day3)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. MySQL 学习笔记(基础篇 Day1) 2. MySQL 学习笔记&#xff08…

SpringBoot 多平台文件配置

目录 一 主配置文件和辅配置文件 二 具体使用 1. 通过直接修改 application.yml 中的属性值 2. 通过 maven 进行配置修改 当我们需要部署项目的时候, 肯定会遇到不同的部署环境下, 需要有不同的配置. 例如开发环境下和生产环境下的配置肯定就不会是完全相同的, 如数据库的…

找不到本地组策略编辑器解决办法

创建记事本写入以下命令 echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >gp.txtdir /b %systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-…

[java基础揉碎]方法的重写/覆盖

重写介绍 简单的说:方法覆盖(重写)就是子类有一个方法,和父类(也可能是爷爷,更上一级)的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法 覆盖了父类的方法 重写重载对比

【内推】新风口-大模型独角兽公司minimax

先上内推链接: MiniMax社招内推码: AK3XEJ6 投递链接: https://vrfi1sk8a0.jobs.feishu.cn/s/iFY5WFgE 岗位:前端、后端、算法,基础架构都有,大量hc 公司介绍: 国内同时拥有文本、语音、视觉三种基础大模型能力的创业…

软考高级:信息系统生命周期概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【Neo4j系列】Neo4j之CQL语句和函数介绍

本文将对Neo4j中的CQL语句和CQL函数进行详细介绍。 作者:后端小肥肠 目录 1. 前言 2. CQL语句 2.1. CQL简介 2.2. CREATE命令 2.3. MATCH命令 2.4. RETURN命令 2.5. MATCH和RETURN 2.6. CREATEMATCHRETURN命令 2.7. 关系基础 2.8. CREATE创建标签 2.9. WH…

【博士每天一篇文献-综述】Modular Brain Networks

阅读时间:2023-11-27 1 介绍 年份:2016 作者:Olaf Sporns,Richard Betzel,印第安纳大学心理与脑科学杰出教授 期刊: Annual review of psychology 引用量:1205 详细介绍了模块化大脑网络及其如…

ubuntu 卸载miniconda3

一开始安装路径错了,需要重新安一次,就一起记录了。 前提是这种方式安装: ubuntu安装miniconda3管理python版本-CSDN博客 删除Miniconda的安装目录 这目录就是你选择安装的时候指定的,如果记不得了,可以这样查看 which conda 这…

JavaWeb——013SpringBootWeb综合案例(事务管理、AOP)

事务&AOP 目录 事务&AOP1. 事务管理1.1 事务回顾1.2 Spring事务管理1.2.1 案例1.2.2 原因分析1.2.3 Transactional注解 1.3 事务进阶1.3.1 rollbackFor1.3.3 propagation1.3.3.1 介绍1.3.3.2 案例 2. AOP基础2.1 AOP概述2.2 AOP快速入门2.3 AOP核心概念 3. AOP进阶3.1 …

<商务世界>《第8课 Leads——MQL——SQL——商机——成交》

1 各种概念 英文缩写概念Traffic流量Leads潜在客户,销售线索;简称潜在线索MQLMarketing-Qualified Leads市场认可线索SQLSales-Qualified Leads销售认可线索OPPOpportunity商机Account成单客户 2 线索到商机 一般企业会把自身线索进行如下的划分&…