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
VARvmc_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文库

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

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

相关文章

habitat模型训练总结(一):点导航PPO

本文对habitat环境中的baseline点导航PPO的模型的构建和训练进行总结 0 训练代码 这个代码在上一篇文章出现过,再粘贴过来,如下: import random import numpy as np from habitat_baselines.common.baseline_registry import baseline_registry from habitat_baselines.c…

pytest 测试常用功能

1. pytest基础功能 命名规则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类, 注意:类不能包含__init__构造函数 以test_开头的方法 所有的包pakege必须要有__init__.py文件常用命令 pytest --help # 查看帮助cmd执行pytest用例有三种方法…

【重温设计模式】备忘录模式及其Java示例

备忘录模式的概述 在软件设计的世界中,备忘录模式是一种行为设计模式,它的主要作用是保存对象的当前状态,以便在将来的某个时间点,可以将对象恢复到这个保存的状态。这种模式的命名源于生活中的备忘录,我们常常用它来…

俄罗斯方块h5源码

上传源码至服务器和空间即可使用,源码无后门,就一天html文件,一个两个css文件以及一个js文件 源码下载:https://download.csdn.net/download/m0_66047725/88897605 更多资源下载:关注我。

148个Chatgpt关键词汇总-有爱AI实战教程(二)

演示站点: https://ai.uaai.cn 技能模块 官方论坛: www.jingyuai.com 京娱AI 导读:在使用 ChatGPT 时,当你给的指令越精确,它的回答会越到位,举例来说,假如你要请它帮忙写文案,如…

devops-Maven【部署及配置】

1、准备maven工具包,Maven官网下载Maven的安装包 Maven – Download Apache Maven Index of /maven (apache.org) 选择后缀是.bin.tar.gz的文件下载,此处下载的版本是3.9.6。 2、安装maven的目录下,建一个Maven路径,然后把压缩…

JAVA虚拟机实战篇之内存调优[5](诊断和解决问题-两种方式总结)

文章目录 版权声明诊断和解决问题 - 两种方案在线定位问题步骤在线定位问题 – btrace 总结内存溢出&内存泄漏内存溢出原因解决内存泄漏方法 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权…

springboot项目docker分层构建

一、需求场景 在使用dockerfile构建springboot项目时&#xff0c;速度较慢&#xff0c;用时比较长&#xff0c;为了加快构建docker镜像的速度&#xff0c;采用分层构建的方式 二、构建配置 1、pom.xml配置 <properties><project.build.sourceEncoding>UTF-8<…

探索数据可视化:Matplotlib 基础指南

图形绘制 import numpy as np import pandas as pd import matplotlib.pyplot as pltx np.linspace(0,2 * np.pi,100)# 说明&#xff1a;正弦波。x&#xff1a;NumPy数组 # 所有的数据&#xff0c;进行正弦计算 y np.sin(x)plt.plot(x,y)# 指定x轴范围 plt.xlim(-1,10) # 指…

Python的requests库发送HTTPS请求时,SSL证书验证的流程

建立连接&#xff1a;当你使用requests库发送HTTPS请求时&#xff0c;它会尝试与目标服务器建立安全的SSL连接。 获取服务器SSL证书&#xff1a;服务器会将自己的SSL证书发送给客户端&#xff08;即你的请求&#xff09;。 验证证书&#xff1a;requests库会验证服务器返回的…

746. 使用最小花费爬楼梯 (Swift版本)

题目 给你一个整数数组 cost&#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 限制条件 2…

【嵌入式】揭秘嵌入式产品启动奥秘:从硬件上电到应用全速运行的精彩旅程

1. 概述 嵌入式产品的启动过程是一个复杂而有序的过程&#xff0c;涉及硬件初始化、引导加载程序&#xff08;bootloader&#xff09;的执行、操作系统的加载和初始化以及用户应用程序的启动等多个阶段。下面&#xff0c;我们将以常见的ARM芯片、U-Boot作为bootloader、Linux作…

智能合约语言(eDSL)—— proc_macro实现合约init函数

我们通过属性宏来实现合约的init函数&#xff0c;call函数其实和init是类似的&#xff1b; GitHub - XuHugo/xwasm 构建属性宏&#xff0c;要在cargo.toml里面设置一些参数&#xff0c;这是必须的。一般来说&#xff0c;过程宏必须是一个库&#xff0c;或者作为工程的子库&…

向爬虫而生---Redis 探究篇8<保障缓存和持久化数据一致性的研究与实现(初) `探索篇`>

前言: 随着我们的生活越来越数字化,我们对数据的依赖变得无所不在。无论是在购物网站上浏览商品、在社交媒体上与朋友互动,还是在工作中处理大量的业务数据,数据都成了我们生活的重要组成部分。 当我们使用应用程序或网站时,我们希望能够获得快速、即时的响应。这就是缓存出…

Rust基础教程

Rust基础教程 Rust简介安装RustRust rustup第一个Rust应用Rust项目管理工具Cargo使用RustRover开发Rust应用使用VSCode开发Rust应用Cargo项目结构分析Rust关键字和标识符Rust命名规范Rust注释Rust变量Rust不可变变量Rust可变变量Rust常量Rust常量和不可变变量的区别Rust隐藏变…

基于 HBase Phoenix 构建实时数仓(3)—— Phoenix 安装

目录 一、主机规划 二、Phoenix 安装 1. 解压、配置环境 2. 将 phoenix-server-hbase-2.5-5.1.3.jar 文件复制到 HBase 的 lib 目录中 3. 重启 HBase 集群 4. 安装验证 &#xff08;1&#xff09;连接 HBase &#xff08;2&#xff09;视图映射 &#xff08;3&#xf…

thingsboard如何自定义udp-transport

0、参考netty实现udp的文章 https://github.com/narkhedesam/Netty-Simple-UDP-TCP-server-client/blob/master/netty-udp/src/com/sam/netty_udp/server/MessageDecoder.java 调试工具使用的是:卓岚TCP&UDP调试工具 1、在common\transport下面创建udp模块,仿照mqtt的创…

Linux配置.bashrc文件导致各种命令(vim、sudo)失效。

Linux配置.bashrc文件导致各种命令&#xff08;vim、sudo&#xff09;失效。 起因是 nvcc-V一直报错&#xff1a;-bash&#xff1a;nvcc&#xff1a; command not found 踩坑记录&#xff1a;上网一查说是没有配置cuda的环境变量。于是去修改了bashrc文件&#xff0c;在最下面…

一次生产环境上的dockerd启动失败原因分析

今夜原计划对 生产环境 上的 SDN 组件进行一次紧急扩容操作的&#xff0c;但业务基础环境中的 Docker-Engine 启动不起来了、原定计划也就无法继续进行了。 尽管查清了基础业务环境中的故障原因&#xff0c;但金主DD说今天先不干了&#xff0c;那就整理整理思路写篇流水账吧 。…

【漏洞复现】帮管客 CRM jiliyu SQL注入漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…