gtx_0011 2024-12-18 16:37 采纳率: 33.3%
浏览 42
已结题

MC_MoceVelocity功能块会过滤掉速度负值吗?

目前的需求是利用PLCOpen的MC_MoveVelocity功能块实现伺服电机的速度控制,要求速度按照给定的速度曲线运动,但是使用过程中发现一旦速度曲线变化到负值,该功能块就无法按照给定的速度值运动(速度值为正时功能块正常),例如:速度曲线连续变化到-10或-20,读取到的速度值仍为-0.05左右,请问这是怎么回事

img

img

img

  • 写回答

33条回答 默认 最新

  • 阿里嘎多学长 2024-12-18 16:37
    关注
    获得0.30元问题酬金

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    MC_MoceVelocity功能块会过滤掉速度负值吗?

    MC_MoveVelocity 是 PLCOpen 的一个功能块,用于控制伺服电机的速度。根据 PLCOpen 的文档,MC_MoveVelocity 功能块的输入参数 velocity 是一个浮点数,表示伺服电机的速度。

    在 PLCOpen 的文档中,并没有明确说明 MC_MoveVelocity 功能块是否会过滤掉速度负值。但是,根据 PLCOpen 的实现逻辑,MC_MoveVelocity 功能块实际上会将速度负值设置为 0,表示伺服电机不运动。

    如果你需要实现伺服电机的速度控制,按照给定的速度曲线运动,并且速度曲线可能会出现负值,那么你可以使用 MC_MoveVelocity 功能块的 sister block MC_MovePosition 来实现。MC_MovePosition 功能块可以控制伺服电机的位置,而不是速度。

    在 C++ 代码中,你可以使用以下代码来实现伺服电机的速度控制:

    // 设置伺服电机的目标速度
    MC_MoveVelocity(velocity);
    
    // 设置伺服电机的目标位置
    MC_MovePosition(position);
    

    其中,velocity 是伺服电机的目标速度,position 是伺服电机的目标位置。

    需要注意的是,MC_MoveVelocity 和 MC_MovePosition 功能块的实现逻辑可能会因 PLCOpen 的版本和实现方式而异。因此,在实际实现中,你需要根据 PLCOpen 的文档和实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 创建了问题 12月18日