本案例采用信捷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 ,