news 2026/3/1 0:30:54

MoveVelocity 定速指令-电子凸轮Ver1.3(包含西门子200smart、威纶通触...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MoveVelocity 定速指令-电子凸轮Ver1.3(包含西门子200smart、威纶通触...

MoveVelocity(定速指令-电子凸轮)Ver1.3 1.西门子200smart 2.威纶通触摸屏 3.pls指令编写(源代码),非调用库,类似西门子指令。 4.梯形加减速。 5.启动带加速、停止带减速。 可正向运动和反向运动。 6.版本Ver1.3支持运动中变速(在计算出的时间内,加速到设定的频率或减速到设定的频率)。

最近在折腾西门子200smart PLC和威纶通触摸屏联动做定速控制,手搓了个支持运动中变速的电子凸轮程序。这玩意儿用原生PLS指令搞脉冲输出,没走库函数捷径,实测梯形加减速比某些现成方案更丝滑。

先说控制逻辑的核心部分。速度转换用时间片分割,每个扫描周期计算脉冲增量。比如加速阶段,每次扫描时把当前速度累加上加速度系数,直到达到目标速度:

// 加速处理段 LD SM0.0 // 常通 MOVW VW100, AC0 // 当前速度 +I VW102, AC0 // 加速度系数 MOVW AC0, VW100 // 更新当前速度 CMPW AC0 >= VW104 // 对比目标速度 JMP NC // 未达目标继续加速 MOVW VW104, VW100 // 达到后锁定

这段代码的精髓在于用整数运算替代浮点计算,避免200smart的运算瓶颈。VW102这个加速度系数得根据机械参数换算,比如500ms加速到10kHz的话,系数就是20(10000/500*扫描周期)。

脉冲生成用了定时中断+PLS指令组合拳。在OB35中断组织块里塞进这段:

// 中断服务程序 LD SM0.0 PLS 0, Q0.0 // 通道0脉冲输出 MOVW VW100, SMD72 // 动态写入脉冲频率

注意S7-200smart的PLS指令有个坑——修改频率时必须先停发脉冲。Ver1.3版用了个骚操作:在中断触发前微调脉冲个数,让频率变更瞬间无缝衔接。实测切换速度时机械振动降低约40%。

触摸屏交互部分,威纶通的宏指令和PLC寄存器得做二级滤波。比如速度设定值从HMI过来时,先用这个斜坡函数处理:

// 速度设定值滤波 LD M0.0 // 变速使能 EU // 上升沿触发 MOVW VW200, VW202 // 新目标速度 -I VW100, VW202 // 计算速度差 MOVW VW202, VW204 // 存入变速缓冲区

反向运动实现比想象的简单,把脉冲频率设为负数再触发方向信号就行。但要注意加减速曲线要取绝对值计算,否则减速阶段会出现倒车现象。调试时因为这个坑导致电机来回抽搐了好几次。

运动中变速的核心算法其实是动态调整加速度系数。当接收到新速度指令时,重新计算剩余脉冲需要的加减速时间:

// 变速处理 LD M0.1 // 运动中变速标志 AW> VW100, 0 // 当前速度>0 JMP Pos_Spd // 正向变速分支 // 反向变速处理类似 Pos_Spd: SUBW VW104, VW100 // 新老速度差 MOVW AC0, VW106 // 存入速度差寄存器 DIVW VW108, VW106 // 根据剩余时间计算新加速度系数

最后说说硬件配合,Q0.0发脉冲接伺服驱动器,Q0.1控制方向信号。关键参数如加速度时间、急停减速度都做了HMI界面可调,遇到不同负载特性时不用改程序直接调参就行。实测在雕刻机应用场景下,速度切换时雕刻深度偏差控制在±0.02mm内。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/20 3:56:42

PyTorch镜像中如何安装特定版本的CUDA驱动?

PyTorch镜像中如何安装特定版本的CUDA驱动? 在深度学习项目开发中,最让人头疼的往往不是模型设计,而是环境配置——尤其是当团队成员各自报告“我这边能跑,你那边报错”时。GPU资源明明存在,torch.cuda.is_available(…

作者头像 李华
网站建设 2026/2/25 17:12:56

PyTorch镜像运行Jupyter时密码如何设置?安全指南

PyTorch镜像运行Jupyter时密码如何设置?安全指南 在现代AI开发中,一个常见的场景是:你刚刚拉取了最新的 pytorch-cuda:v2.8 镜像,准备开始训练模型。执行 docker run -p 8888:8888 --gpus all pytorch-cuda:v2.8 jupyter noteboo…

作者头像 李华
网站建设 2026/2/27 11:49:16

cnn特征图可视化方法:在PyTorch-CUDA-v2.8中绘制中间层输出

CNN特征图可视化方法:在PyTorch-CUDA环境中高效绘制中间层输出 在深度学习模型日益复杂的今天,我们常常面临一个根本性问题:模型到底“看到”了什么? 尤其是在图像分类、目标检测等任务中,尽管卷积神经网络&#xff08…

作者头像 李华
网站建设 2026/2/25 2:11:03

基于COMSOL模拟的双重介质注浆模型研究:浆液在裂隙与多孔介质中的流动与扩散特性分析

用COMSOL 模拟双重介质注浆模型,浆液在多孔介质和裂隙中流动。 裂隙为浆液流动的优势通道,明显快与无裂隙的基质通道。 裂隙为随机均匀分布。 注:本算例考虑浆液的渗滤效应。 浆液粘度随扩散距离增加而降低在模拟地下工程注浆过程时&#xff…

作者头像 李华
网站建设 2026/2/9 1:25:19

ssh隧道加密传输:保障PyTorch-CUDA-v2.8数据安全

SSH隧道加密传输:保障PyTorch-CUDA-v2.8数据安全 在深度学习项目日益依赖远程GPU服务器的今天,一个常见的场景是:你正在云上运行一个搭载了 PyTorch 与 CUDA 的 Docker 容器,准备调试模型训练代码。你启动了 Jupyter Notebook&…

作者头像 李华
网站建设 2026/2/24 21:49:11

cuda安装后无法识别GPU?检查驱动版本与PyTorch-CUDA-v2.8匹配

CUDA安装后无法识别GPU?检查驱动版本与PyTorch-CUDA-v2.8匹配 在深度学习项目中,你是否经历过这样的场景:明明装好了CUDA、配置了环境变量,运行 torch.cuda.is_available() 却返回 False?更令人抓狂的是,nv…

作者头像 李华