查看: 6383|回复: 27
收起左侧

[应用问题] 速度模式下运行如何实时修改伺服转速?【已解决】

loopsun 2021-10-21 09:34:20 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 loopsun 于 2021-10-25 11:36 编辑

1. 拓扑

AM600---SV660N---400W伺服

2. 程序

MC_MoveVelocity功能块控制轴运行

3. 遇到问题

无法在运行过程中调整伺服轴转速

  1. PDO设置
  2. 全局变量状态,此时速度已经变更为200
  3. 监控数据,监控返回的轴速度依然在100
  4. 功能块监控,速度已赋值给功能块内部变量

4. 程序

附件:

1.PLC端程序.zip

5. 解决方案

IF f_saveVel <> g_xVel THEN
        Vel_TON1_IN := TRUE;
        Vel_TON1(IN := Vel_TON1_IN, PT := T#100MS,  Q => g_xVelExcute);
END_IF

Vel_TON2(IN := g_xVelExcute, PT := T#200MS);
IF Vel_TON2.Q THEN
        Vel_TON1_IN := FALSE;
        g_xVelExcute := FALSE;
        f_saveVel := g_xVel;
END_IF
  • 使用汇川官方提供的CmpHCAxisControl单轴运动库, 此功能块内部已对速度变化做了类似上述方案的处理,除了速度,加减速,方向,加加速度也监控了其变化,有变化,就内部自动脉冲一下,用起来非常方便
//速度运行
HMC_MoveVelocity_OBJ(
        Axis:= Master,
        xEnable:= g_xVelExcute,
        fVelocity:= g_xVel,
        fAcceleration:= g_xVel / 10.0,
        fDeceleration:= g_xVel / 10.0,
        fJerk:= ,
        eDirection:= g_MasterDir,
        xInVelocity=> g_xInVel,
        xBusy=> ,
        xAborted=> ,
        xError=> ,
        eErrorID=> );

1.PLC端程序.zip

341.39 KB, 下载次数: 161





上一篇:汇川HMI与其他品牌PLC通讯连接
下一篇:电子凸轮表的偏移PDF分享

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

zrhsd 2021-10-21 10:52:37 | 显示全部楼层

回帖奖励 +5

IF 设定速度=历史速度 THEN                        
        MC_MoveVelocity.Execute:=FALSE:    //速度运行功能块激活位为OFF
END_IF
IF 设定速度<>历史速度 THEN
        MC_MoveVelocity.Execute:=TRUE;     //速度运行功能块激活位为ON
END_IF
历史速度=设定速度                                     //将设定速度赋值到历史速度

点评

很好的回答  发表于 2021-10-21 16:04

评分

参与人数 1水滴 +10 收起 理由
loopsun + 10 很给力!

查看全部评分

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香! 鲜花榜单
回复 送花

使用道具 举报

黑曼巴舍 2021-10-21 11:31:40 | 显示全部楼层

回帖奖励 +5

zrhsd 发表于 2021-10-21 10:52
IF 设定速度=历史速度 THEN                        
        MC_MoveVelocity.Execute:=FALSE:    //速度运行功能 ...

这解释的非常到位,点赞
回复 送花

使用道具 举报

黑曼巴舍 2021-10-21 11:32:52 | 显示全部楼层
以前写机器人的程序,经常用IF...THEN指令,现在写PLC还是习惯于梯形图,
回复 送花

使用道具 举报

loopsun 2021-10-21 12:04:27 | 显示全部楼层
本帖最后由 loopsun 于 2021-10-21 12:10 编辑
zrhsd 发表于 2021-10-21 10:52
IF 设定速度=历史速度 THEN                        
        MC_MoveVelocity.Execute:=FALSE:    //速度运行功能 ...

通过, 完美
image.png

每次变更MC_MoveVelocity的输入变量,需要触发Execute上升沿,是否是为了减少CPU的计算时间,和减少EtherCAT的带宽占用与延迟?



回复 送花

使用道具 举报

loopsun 2021-10-21 12:15:45 | 显示全部楼层
zrhsd 发表于 2021-10-21 10:52
IF 设定速度=历史速度 THEN                        
        MC_MoveVelocity.Execute:=FALSE:    //速度运行功能 ...

大神,这个问题看下能不能也帮我解答下?也一直困扰我很久了
SV660N扭矩模式怎么切换至速度模式或者位置模式
回复 送花

使用道具 举报

zrhsd 2021-10-21 13:37:27 | 显示全部楼层
loopsun 发表于 2021-10-21 12:15
大神,这个问题看下能不能也帮我解答下?也一直困扰我很久了
SV660N扭矩模式怎么切换至速度模式或者位置 ...

采用驱动轴初始化指令
截图-20211021.png

评分

参与人数 1水滴 +10 收起 理由
loopsun + 10 很给力!

查看全部评分

回复 送花

使用道具 举报

loopsun 2021-10-21 19:28:07 | 显示全部楼层
zrhsd 发表于 2021-10-21 13:37
采用驱动轴初始化指令

测试成功,非常感谢,牛B。
请问下还有没有比这个更优雅点的解决方案?这个直接重新初始化驱动,有点暴力。
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部