信捷CODESYS平台伺服电机转矩控制模式应用与切换

文章介绍了如何在信捷CODESYS平台上利用XSStudio和特定的控制器、伺服驱动器进行运动控制。重点讲解了SMC_SetControllerMode功能块用于切换控制器模式,如从扭矩模式切换到位置或速度模式,并强调了在切换模式时需要注意的条件和可能的误差处理。同时提到了SMC_SetTorque功能块的应用,以及转矩控制模式下确保安全的方法。
摘要由CSDN通过智能技术生成

本案例采用信捷CODESYS平台开发。

软件:XS Studio(基于IEC61131-3)

控制器:XSDH-60A32-E

伺服驱动器:DS5C-20P4-PTA(EtherCAT总线)

EtherCAT拓扑图:

指令介绍:

SMC_SetControllerMode(FB)  设置控制器模式

如果驱动器支持此功能块,则可以使用此功能块切换到另一个控制器模式。前提条件:

轴必须支持所需的控制模式。要对此进行检查,请参阅相应SoftMotion驱动程序库中的功能文档PDF。

必须映射所需的循环I/O数据(例如,扭矩模式:设置扭矩对象)。

调用此功能块时,轴不得处于错误停止、停止或归位状态。否则,将报告错误SMC_SCM_AXIS_IN_WRONG_STATE。

激活时的行为:

该功能块设置轴的byControllerMode(操作模式的命令值)参数,并等待直到参数byRealControllerMode的实际值反映该值。

如果在1000个周期内没有发生这种情况,则功能块将以错误中止。

当从较低级别切换到较高级别控制模式(例如,扭矩->速度、扭矩->位置、速度->位置)时,功能块计算较高级别信号的设定值。例如,当从扭矩模式切换到位置模式时,功能块使用轴的实际位置并添加预期的位置距离,根据实际速度和周期中的时间偏移(Axis.fSetActTimeLagCycles)补偿实际值和设定值之间的时间滞后。后一个值在很大程度上取决于系统(控制器硬件、现场总线、驱动器),可能需要调整。

SMC_SetControllerMode报告bDone后必须调用哪些功能块?

只要byRealControllerMode反映byControllerMode,功能块就会设置其完成输出并停止任何操作。这意味着应用程序立即负责从该周期开始计算正确的设定值。例如,轴是扭矩控制的,应切换到位置控制。启动功能块SMC_SetControllerMode时,轴仍在移动。在切换期间,功能块计算设定位置的正确值。但是,一旦设置了“完成”,就没有任何功能块继续提供设置值,并且轴将立即停止并报告错误。因此,例如功能块MC_Halt、MC_MoveVelocity或MC_MoveAbsolute可以由SMC_ControllerMode的完成输出触发,并接管轴的控制。

功能块展示:

LD:

ST:

SMC_SetControllerMode_0(

Axis:=Axis_1 ,

bExecute:=BControllerbExecute ,

nControllerMode:=ControllerbMode ,

bDone=> ,

bBusy=> ,

bError=> ,

nErrorID=> );

功能块InOut详细说明

Scope

Name

Type

Initial

Comment

Inout

Axis

AXIS_REF_SM3

Axis

Input

bExecute

BOOL

FALSE

TRUE:开始改变控制模式

nControllerMode

SMC_CONTROLLER_MODE

SMC_position

Output

bDone

BOOL

TRUE:模式切换完成

bBusy

BOOL

TRUE:FB未空闲

bError

BOOL

TRUE:函数块中发生错误表示

nErrorID

SMC_ERROR

错误识别

SMC_CONTROLLER_MODE:

枚举变量

类型

初始值

描述

SMC_torque

SMC_CONTROLLER_MODE

1

力矩

SMC_velocity

SMC_CONTROLLER_MODE

2

速度

SMC_position

SMC_CONTROLLER_MODE

3

位置

SMC_current

SMC_CONTROLLER_MODE

4

当前方式

SMC_SetTorque(FB)此功能块将给定的扭矩应用于轴。

在控制器模式SMC_torque中,这是驱动器将产生的设定扭矩。

在控制器模式SMC_velocity或SMC_position中,伺服驱动器可以使用转矩值来改善控制器环路。给定的扭矩应该是驱动器的预期扭矩。这也被称为扭矩前馈控制。

在控制器模式SMC_nocontrol中,功能块没有作用,没有错误报告

Scope

Name

Type

Comment

Inout

Axis

AXIS_REF_SM3

Axis

Input

bExecute

BOOL

TRUE:启用函数块的执行

nControllerMode

LREAL

转矩以Nm(旋转电机)或N表示(直线电机)

Output

bBusy

BOOL

TRUE:FB未空闲

bError

BOOL

TRUE:函数块中发生错误表示

nErrorID

SMC_ERROR

错误识别

功能块展示:

LD:

ST:

SMC_SetTorque_1(

Axis:=Axis_1 ,

bEnable:=SetTorquebExecute ,

fTorque:=Torque ,

bBusy=> ,

bError=> ,

nErrorID=> );

简单案例:

转矩控制相关程序

 

转矩模式切回位置模式或者速度模式,需要停止轴,不然伺服电机会有剧烈抖动,如过伺服电机报错,可通过SMC_Reset功能块复位清除错误。

可通过PDO映射Max Motor Speed来限制电机最高转速,保证安全。此参数只在转矩模式下生效。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
信捷PLC(可编程逻辑控制器)是一种用于自动化控制的电子设备,由于其灵活性和可编程性,可以用于控制各种类型的电机,包括伺服电机伺服电机是一种特殊类型的电机,可以根据系统的需求来调整运动的位置、速度和加速度。它通常由一个电机和一个伺服驱动器组成,通过PLC来控制。 下面是一个信捷PLC控制伺服电机的实例: 假设我们想控制一个机械臂,让它在水平方向上移动。我们可以使用信捷PLC来控制机械臂的伺服电机,让其实现预定的运动轨迹。 首先,我们需要连接PLC和伺服驱动器,并设置相应的通信参数。然后,我们可以使用PLC的编程软件来编写控制程序。 在编程中,我们可以定义输入和输出点,用于接收和发送信号。例如,我们可以定义一个输入点来接收启动信号,一个输出点来控制电机的方向,另一个输出点来控制电机的速度。 接下来,我们可以编写程序逻辑,例如使用PID(比例、积分、微分)控制算法,根据系统反馈的位置信息和预定的位置目标来调整电机的运动。 当接收到启动信号时,PLC会通过输出点向伺服驱动器发送方向和速度指令。伺服驱动器会根据指令调整电机的运动,直到达到预定的位置目标为止。 同时,PLC可以监测电机的运行状态和位置反馈,并根据需要进行调整和修正。 总之,通过信捷PLC控制伺服电机,我们可以实现精确的运动控制,提高系统的稳定性和准确性。这种控制方法在许多自动化领域都得到了广泛应用,例如机械加工、机器人和自动化生产线等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值