Softmotion in CoDeSys2.3 User Manual-5
5. SM_PLCopen.lib库
5.1 概述
"SM_PLCopen.lib"库提供的模块遵循PLCopen规范:《运动控制功能块 1.0 版》。
本说明基于该规范编写,并补充了 PLCopen 规范中未涵盖的功能特性。
严格遵循IEC61131-3标准编程的功能块可分为以下三类:
- 单驱动器通用操作、控制与参数化模块
用于对单个驱动器进行基础操作和配置(详见第5.3章说明) - 单驱动器独立运动控制模块
支持以多种方式自主控制单轴运动(详见第5.3章说明) - 主从驱动器的协同运动控制模块
实现电子凸轮、电子齿轮和相位同步功能(详见第5.4章说明)
- 附加模块参见第5.5章。
- 此外,该库为所有重要模块提供可视化模板。这些模板可与对应模块的实例绑定,实时显示其输入/输出状态,在应用程序编程和测试阶段具有重要辅助作用。
前置条件:本库基于"Drive_Basic.lib"库构建。该库提供了AXIS_REF 结构体,供本库模块调用访问。
5.2 PLCopen规范《运动控制功能块 1.0 版》
建议在阅读本说明的同时,参考PLCopen规范《运动控制功能块 1.0 版》。其核心要点简要归纳如下:
模块激活两种方式:
- 使能输入(Enable-Input)
若模块具备使能输入(例如MC_ReadParameter),则其仅在使能信号为TRUE期间持续激活。 - 执行输入(Execute-Input)
模块通过执行输入端的上升沿(从FALSE到TRUE的跳变)激活,并且在满足以下任一条件之前不会再次激活:其运动已终止、其他模块已取得该轴(AXIS_REF)的控制权,或执行输入端收到新的上升沿信号以重新启动运动。请注意,所有输入变量仅在上升沿时被读取。
模块通过Done输出或其他逻辑输出来指示以下两种状态:输出数据的有效性(例如MC_ReadStatus)或运动过程的终止(例如 MC_MoveAbsolute)。
若运动生成模块被其他模块中断,将通过设置其CommandAborted输出来指示该中断状态。
由Execute启动的模块在设置其完成输出(Done-Output)后,只要执行输入保持置位(TRUE),其输出将保持不变。通过下降沿(信号从TRUE变为FALSE)这些输出将被清除。如果在运动终止之前检测到下降沿,输出将仅保持一个周期,并在随后的周期中被删除。
所有生成运动的模块均要求对应轴已使能控制器且制动器已释放,否则将触发错误报告。
5.3 单轴运动控制模块
5.3.1 MC_ReadStatus
此功能块属于SM_PLCopen.lib库,用于提供轴的特定状态信息。
5.3.2 MC_ReadAxisError
此功能块属于SM_PLCopen.lib库,用于提供驱动器的常规错误信息。
5.3.3 MC_Reset
此功能块属于SM_PLCopen.lib库,用于将轴状态(SMC_AXIS_STATE)从error_stop复位至standstill。
5.3.4 MC_ReadParameter,MC_ReadBoolParameter
这些功能块属于SM_PLCopen.lib库,可用于读取驱动器结构中的部分标准参数。这些参数的编号部分由PLCopen规范定义,部分由3S的驱动器接口定义。
模块也可用于从驱动器中读取制造商特定的数据。与特定驱动器库(XXXDrive.lib)配套的文档将详细说明驱动器专用参数编号的编码规则。
5.3.5 MC_WriteParameter,MC_WriteBoolParameter
这些功能块属于SM_PLCopen.lib库,可用于设置驱动器结构中的部分标准参数。这些参数的编号部分由PLCopen规范定义,部分由3S的驱动器接口定义。
模块也可用于向驱动器发送制造商特定的数据:此时必须传入带负号(-)的驱动器专用参数编号。与特定驱动器库(XXXDrive.lib)配套的文档将详细说明驱动器专用参数编号的编码规则。
5.3.6 MC_ReadActualPosition
此功能块属于SM_PLCopen.lib库,用于提供驱动器的当前位置数据。
5.3.7 MC_ReadActualVelocity
此功能块属于SM_PLCopen.lib库,用于提供驱动器的当前速度数据
5.3.8 MC_ReadActualTorque
此功能块属于SM_PLCopen.lib库,用于提供驱动器的当前扭矩/功率数据。
5.3.9 MC_Power
此功能块属于SM_PLCopen.lib库,用于控制驱动器的电源启停开关及制动器状态。若驱动器未通过此方式上电、控制器未解除阻塞或制动器未释放,则无法进行任何运动控制操作。
功能块输入参数
Enable : BOOL(默认值:FALSE)
当该变量为TRUE时,该功能块使能。
bRegulatorOn : BOOL(默认值:FALSE)
启用/禁用调节器控制。
bDriveStart : BOOL(默认值:FALSE)
施加/释放驱动器内部制动。
功能块输入输出参数
Axis : AXIS_REF
此处传递的结构体包含由驱动器接口(Drive_Basic.lib)定义的轴数据。
功能块输出参数
Status : BOOL(默认值:FALSE)
指示驱动器当前是否处于调节状态(TRUE:正在调节;FALSE:未调节)。
Error : BOOL(默认值:FALSE)
为TRUE时表示功能块运行中发生错误。
ErrorID : INT
错误代码ID。
5.3.10 MC_Home
此功能块属于SM_PLCopen.lib库,用于启动驱动器制造商特定的参考点定位运动。该运动仅由驱动器接口发起,当驱动器反馈定位完成时,输出信号'Done'将置为TRUE。
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿将启动驱动器的运动。
Position : REAL
检测到参考信号时驱动器的绝对位置
功能块输出参数
Done : BOOL(默认值:FALSE)
为TRUE时表示参考点定位运动已完成且驱动器处于静止状态。
CommandAborted : BOOL(默认值:FALSE)
若运动被其他指令中断,该变量将变为TRUE。
Error : BOOL(默认值:FALSE)
功能块运行过程中发生错误时,该变量将变为 TRUE。
ErrorID : INT
错误代码ID。
5.3.11 MC_Stop
此功能块隶属于 SM_PLCopen.lib库,用于将轴减速至零速。只要输入"Execute"为TRUE且轴尚未完全停止,该过程将不可中断且轴控制权将被锁定。
功能块输入/输出参数
Axis : AXIS_REF
该变量传递由驱动器接口(Drive_Basic.lib)填充的轴数据结构体。
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿将激活模块,即启动减速过程。
Deceleration : REAL
减速度值(电机能量递减速率),单位:[u/s²]。
功能块输出参数
Done : BOOL(默认值:FALSE)
当轴到达指令位置(即完全停止)时,该变量变为 TRUE。
Error : BOOL(默认值:FALSE)
功能块运行中发生错误时,该变量变为 TRUE。
ErrorID : INT
错误代码ID。
5.3.12 MC_MoveAbsolute
此功能块属于SM_PLCopen.lib库,用于根据预设的速度、减速度和加速度值将轴移动到绝对位置。对于直线轴,方向值将被忽略;对于旋转轴,该值将决定旋转方向。
功能块输入输出参数
Axis : AXIS_REF
该变量传递由驱动器接口(Drive_Basic.lib)定义的轴数据结构体。
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿将触发运动启动。
Position : REAL
运动的目标位置(技术单位 [u])
Velocity : REAL
目标速度值(无需强制达到)[u/s]
Acceleration : REAL
期望加速度(电机能量递增速率)[u/s²]
Deceleration : REAL
期望减速度(电机能量递减速率)[u/s²]
nDirection : MC_Direction(默认值:shortest)
指定期望运动方向(仅对旋转轴/模数轴有效,参见Drive_Basic.lib)。允许值:current(当前方向)、positive(正向)、negative(负向)、shortest(从当前位置出发的最短路径)、fastest(能最快完成运动的方向)。
功能块输出参数
Done : BOOL(默认值:FALSE)
一旦到达指令位置(即驱动器已停止),该变量变为TRUE。
CommandAborted : BOOL(默认值:FALSE)
一旦指令运动被同一轴上除MoveSuperImposed外的任何运动功能块中断,该变量变为TRUE。
Error : BOOL(默认值:FALSE)
当功能块中发生错误时,该变量变为TRUE。
ErrorID : INT
错误ID。
5.3.13 MC_MoveAdditive
此功能块属于SM_PLCopen.lib库,根据轴的当前状态提供两种工作模式:
- 离散运动模式(discrete_motion)
当前轴上有其他运动功能块正在执行时,Distance值将被叠加到该模块的目标位置上,运动将转向新的目标位置继续执行。 - 连续运动/静止模式(continuous_motion or standstill)
当轴处于连续运动状态或静止状态时,将以当前位置为基准,按照给定参数完成Distance值的相对位移。
功能块输入输出参数
Axis : AXIS_REF
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿触发运动启动。
Distance :REAL
运动相对距离(技术单位:[u])。
Velocity : REAL
与当前运动的最大允许速度差值(无需强制达到)[u/s]。
Acceleration : REAL
期望加速度(电机能量递增速率)[u/s²]。
Deceleration : REAL
功能块输出参数
Done : BOOL(默认值:FALSE)
一旦到达指令位置(即驱动器已停止),该变量变为TRUE。
CommandAborted : BOOL(默认值:FALSE)
一旦指令运动被同一轴上除MoveSuperImposed外的任何运动功能块中断,该变量变为TRUE。
Error : BOOL(默认值:FALSE)
当功能块中发生错误时,该变量变为TRUE。
ErrorID : INT
错误ID。
5.3.14 MC_MoveRelative
该功能块属于SM_PLCopen.lib库,用于控制轴按预设的速度、加速度和减速度移动指定的相对距离。距离值可为正(正向移动)或 负(反向移动)。
功能块输入输出参数
Axis : AXIS_REF
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿触发运动启动。
Distance :REAL
运动相对距离(技术单位:[u])。
Velocity : REAL
与当前运动的最大允许速度差值(无需强制达到)[u/s]。
Acceleration : REAL
期望加速度(电机能量递增速率)[u/s²]。
Deceleration : REAL
功能块输出参数
Done : BOOL(默认值:FALSE)
一旦到达指令位置(即驱动器已停止),该变量变为TRUE。
CommandAborted : BOOL(默认值:FALSE)
一旦指令运动被同一轴上除MoveSuperImposed外的任何运动功能块中断,该变量变为TRUE。
Error : BOOL(默认值:FALSE)
当功能块中发生错误时,该变量变为TRUE。
ErrorID : INT
错误ID。
5.3.15 MC_MoveSuperImposed
此功能块属于SM_PLCopen.lib库,其作用是在当前激活的运动基础上,叠加一段指定距离的附加运动。速度、加速度和减速度的设定值均为相对值,即独立于底层基础运动。原始激活模块不会被MC_MoveSuperImposed中断。若原始激活模块被其他模块中断,而MC_MoveSuperImposed仍在运行,则MC_MoveSuperImposed会继续执行已启动的叠加运动,并与新模块的运动叠加。
基础激活模块不会被MC_MoveSuperImposed中断。若基础激活模块在MC_MoveSuperImposed运行时被其他模块中断,则MC_MoveSuperImposed的运动将被中止。
请注意:必须在生成基础运动的模块之后调用 MC_MoveSuperImposed!
功能块输入输出参数
Axis : AXIS_REF
传递由驱动器接口(Drive_Basic.lib)定义的轴数据结构体。
功能块输入参数
Execute : BOOL(默认值:FALSE)
Distance :REAL
运动相对距离(技术单位:[u])。
Velocity : REAL
与当前运动的最大允许速度差值(无需强制达到)[u/s]。
Acceleration : REAL
期望加速度(电机能量递增速率)[u/s²]。
Deceleration : REAL
功能块输出参数
Done : BOOL(默认值:FALSE)
一旦到达指令位置(即驱动器已停止),该变量变为TRUE。
Busy : BOOL(默认值:FALSE)
该变量在叠加运动执行期间保持为RUE,运动完成后自动复位为FALSE。
CommandAborted : BOOL(默认值:FALSE)
一旦指令运动被同一轴上除MoveSuperImposed外的任何运动功能块中断,该变量变为TRUE。
Error : BOOL(默认值:FALSE)
当功能块中发生错误时,该变量变为TRUE。
ErrorID : INT
错误ID。
5.3.16 MC_MoveVelocity
该功能块属于SM_PLCopen.lib库,用于控制轴以预设速度(通过AXIS_REF结构体定义进行连续运动。为实现目标速度,MC_MoveVelocity功能块将调用预设的加速度和减速度值。目标速度始终为正值,运动方向由输入变量 nDirection 定义。
功能块输入输出参数
Axis : AXIS_REF
传递由驱动器接口(Drive_Basic.lib)定义的轴数据结构体。
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿触发运动启动。
Velocity : REAL
与当前运动的最大允许速度差值(无需强制达到)[u/s]。
Acceleration : REAL
期望加速度(电机能量递增速率)[u/s²]。
Deceleration : REAL
期望减速度(电机能量递减速率)[u/s²]。
Direction : MC_Direction(默认值:shortest)
指定运动方向(仅对旋转轴/模数轴有效,参见Drive_Basic.lib)。可选值:
- current:保持当前转向
- positive:正向旋转
- negative:负向旋转
功能块输出参数
InVelocity : BOOL(默认值:FALSE)
当设定速度达到时,该变量变为TRUE。
CommandAborted : BOOL(默认值:FALSE)
若运动被同一轴上的其他运动功能块(MoveSuperImposed 除外)中断,该变量变为 TRUE。
Error : BOOL(默认值:FALSE)
功能块运行中发生错误时,该变量变为TRUE。
ErrorID : INT
错误代码ID。
5.3.17 MC_PositionProfile
此功能块属于 SM_PLCopen.lib库,用于沿预定义位置轮廓运动。需预先定义并填充MC_TP_REF结构体变量以实现该功能。
MC_TP_REF结构体包含以下变量:
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
Number_of_pairs | INT | 0 | 轨迹位置点数量 |
IsAbsolute | BOOL | TRUE | 绝对位置还是相对位置 |
MC_TP Array | ARRAY[1..100] OF MC_TP | 位置点 |
MC_TP包括以下变量
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
delta_time | TIME | t#0s | 相邻位置点间的时间周期 |
position | REAL | 0 |
该模块通过给定的位置点生成路径,形成由三次多项式构成的双连续可微曲线。
需注意:轴在到达预定义轮廓终点时,通常具有非零的速度和加速度。可通过在MC_PositionProfile模块完成工作后,调用MC_MoveAbsolute或SMC_Stop模块进完全停止或精确定位。
功能块输入输出参数
Axis : AXIS_REF
传递由驱动器接口(Drive_Basic.lib)定义的轴数据结构体。
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿触发运动启动。
ArraySize : INT
位置点数组的长度(范围:1..100)。
Scale : REAL(默认值:1)
轮廓的全局缩放因子。
Offset : REAL
轮廓的全局偏移量 [u]。
TimePosition : MC_TP_REF
时间与位置值信息(参见上文定义)。
功能块输出参数
Done : BOOL(默认值:FALSE)
当指令位置到达时,该变量变为TRUE。
CommandAborted : BOOL(默认值:FALSE)
若运动被同一轴上的其他运动功能块(MoveSuperImposed 除外)中断,该变量变为TRUE。
Error : BOOL(默认值:FALSE)
功能块运行中发生错误时,该变量变为TRUE。
ErrorID : INT
错误代码ID。
5.3.18 MC_VelocityProfile
此功能块属于SM_PLCopen.lib库,是MC_PositionProfile模块的类比实现。不同之处在于:通过MC_TV_REF结构体类型的输入变量,各位置点需通过其速度值来定义。
MC_TV_REF结构体包含以下变量:
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
Number_of_pairs | INT | 0 | 轨迹位置点数量 |
IsAbsolute | BOOL | TRUE | 绝对位置还是相对位置 |
MC_TV Array | ARRAY[1..100] OF MC_TV | 位置点 |
MC_TV包括以下变量
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
delta_time | TIME | t#0s | 相邻位置点间的时间周期 |
velocity | REAL | 0 |
该模块通过给定的位置点生成路径,形成由直线段组成的连续曲线。
轴位置则由轮廓的起始位置和速度积分共同决定。
5.3.19 MC_AccelerationProfile
此功能块属于SM_PLCopen.lib库,是MC_PositionProfile模块的类比实现。不同之处在于:通过MC_TA_REF结构体类型的输入变量,各位置点需通过其加速度值来定义。
MC_TA_REF结构体包含以下变量:
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
Number_of_pairs | INT | 0 | 轨迹位置点数量 |
IsAbsolute | BOOL | TRUE | 绝对位置还是相对位置 |
MC_TA Arra | ARRAY[1..100] OF MC_TA | 位置点 |
MC_TA包括以下变量
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
delta_time | TIME | t#0s | 相邻位置点间的时间周期 |
acceleration | REAL | 0 |
该模块通过给定的位置点生成路径,形成由直线段组成的连续曲线。
曲线速度由轮廓起始速度和加速度积分共同决定,轴位置则由起始位置和速度积分计算得出。
5.3.20 MC_SetPosition
该模块对轴的零点进行偏移设置,具体规则如下:
- 绝对模式(Mode = FALSE;默认):
输入Position设定的值将直接作为新的实际设定位置。 - 相对模式(Mode = TRUE):
当前实际设定位置将按Position值的大小进行偏移。
该模块基本上可随时调用。但需注意:在路径控制运动中,若目标位置直接传递给模块(例如通过SMC_ControlAxisByPos功能块),可能导致目标位置跳变。
5.3.21 MC_TouchProbe
此功能块属于SM_PLCopen.lib库,可通过高速输入精确检测驱动器位置。由于该功能通常需要比普通PLC更快的处理速度,多数情况下会通过以下两种方式实现:要么由驱动器直接承担此功能,要么通过中断等机制独立于PLC周期执行。
输入参数TriggerInput类型为TRIGGER_REF,用于详细描述触发输入的特性:
变量 | 类型 | 初始值 | 描述 |
---|---|---|---|
bFastLatching | BOOL | TRUE | 快速锁存(通过驱动器接口实现)(TRUE)或 基于PLC周期的锁存(FALSE) |
iTriggerNumber | INT | -1 | 仅当bFastLatching=TRUE时有效:触发器ID(具体取值范围取决于驱动器接口类型)。 |
bInput | BOOL | FALSE | 仅当bFastLatching=TRUE 时有效:输入信号(TRUE触发锁存)。 |
bActive | BOOL | FALSE | 内部变量 |
窗口功能(通过WindowOnly、FirstPosition、LastPosition参数激活和定义)需要驱动器接口支持,否则将返回错误。
该模块独立于轴状态运行,其激活状态将持续到位置锁存完成或被MC_AbortTrigger强制中止为止。
5.3.22 MC_AbortTrigger
此功能块属于SM_PLCopen.lib库,用于中止当前正在触发器输入(trigger input)上进行的锁存操作。
5.4 同步运动控制模块
5.4.1 MC_CamTableSelect
使用该模块(由 SM_PLCopen.lib库提供),您可以选择凸轮曲线、设定该凸轮的主从轴关系并进行预设置。输出参数 CamTableID 将传递给凸轮模块 MC_CamIn 使用。
主轴可以是虚拟轴(无需物理实体)。若变量bRegulatorOn为TRUE,将使用主轴的目标值,否则使用实际值。
定义运动的凸轮曲线可通过两种方式创建:手动编程(使用MC_CAM_REF类型的结构体对象)或使用集成在CoDeSys编程系统中的凸轮编辑器(参见文档《SoftMotion CAM-Editor》)。
若变量Periodic为TRUE,凸轮在完成一个周期后将自动重启运行,否则仅执行单次运行。
变量MasterAbsolute和SlaveAbsolute用于定义凸轮映射的参考基准:TRUE表示采用绝对坐标,FALSE表示采用增量坐标。
功能块输入输出参数
Master : AXIS_REF
主轴
Slave: AXIS_REF
从轴
CamTable:MC_CAM_REF
凸轮曲线描述
功能块输入参数
Execute : BOOL(默认值:FALSE)
该变量的上升沿触发模块切换至新凸轮曲线。
Periodic : BOOL(默认值:TRUE)
周期性/非周期性凸轮控制
MasterAbsolute : BOOL(默认值:TRUE)
主轴位置参考基准,TRUE:凸轮映射参考主轴的绝对位置,FALSE:凸轮映射参考主轴的相对位置(以 MC_CamIn.Execute上升沿时刻的主轴位置为基准)
SlaveAbsolute : BOOL(默认值:TRUE)
从轴位置参考基准
功能块输出参数
Done : BOOL(默认值:FALSE)
值为 TRUE 时表示已完成预设距离的运动。
Error : BOOL(默认值:FALSE)
值为 TRUE 时表示功能块中发生错误。
ErrorID : SMC_Error (INT)
错误代码编号。
CAMTableID : MC_CAM_ID
描述凸轮曲线的输出标识,作为MC_CamIn功能块中同名输入参数的传递值。
5.4.2 MC_CamIn
使用该模块(由SM_PLCopen.lib库提供),可实现通过MC_CAMTABLESELECT选择的凸轮曲线。除偏移量和缩放比例外,还可定义启动模式。需注意,以下模式暂未实现:ramp_in、ramp_in_pos和ramp_in_neg(这些模式用于在启动时从轴实际值与凸轮目标值存在偏差的情况下,实现从轴目标值向凸轮目标值的连续逼近)。
该模块提供一项附加功能:可检测挺杆(tappets)并通过输出Tappets将挺杆信息传递至一个或多个MC_GetTappetValue功能块(参见SMC_GetTappetValue)。需注意,CamIn模块每个周期最多只能注册三个挺杆,而SMC_CAMRegister模块无此限制。
功能块输入输出参数
Master : AXIS_REF
主轴
Slave: AXIS_REF
从轴
功能块输入参数
Execute : BOOL(默认值:FALSE)
上升沿触发模块启动运动
MasterOffset : LREAL(默认值:0)
主轴附加位置偏移量
SlaveOffset : LREAL(默认值:0)
从轴附加位置偏移量
StartMode : MC_StartMode(默认值:absolute)
- absolute:绝对位置启动
- relative:相对位置启动
- ramp_in:缓入启动
- ramp_in_pos:正向缓入启动
- ramp_in_neg:负向缓入启动
CamTableID : MC_CAM_ID
来自MC_CamTableSelect模块的输出参数,用于传递凸轮曲线标识
Velocity, Acceleration, Deceleration: LREAL(默认值:0)
缓入模式专用的速度、加速度、减速度参数
TappetHysteresis: LREAL(默认值:0)
挺杆检测滞环宽度
功能块输出参数
InSync : BOOL(默认值:FALSE)
TRUE表示轴已同步至凸轮曲线
CommandAborted : BOOL(默认值:FALSE)
TRUE表示运动被同一轴的其他功能块中断(MoveSuperImposed除外)
Error : BOOL(默认值:FALSE)
TRUE表示功能块运行中发生错误
ErrorID : SMC_Error (INT)
错误代码ID
EndOfProfile : BOOL
凸轮周期结束脉冲信号(周期性凸轮运行时周期性触发)
Tappets : SMC_TappetData
挺杆数据输出,需通过SMC_GetTappetValue模块进行解析处理
5.4.3 MC_CamOut
使用该模块(由SM_PLCopen.lib库提供),可使从轴与主轴脱离同步关系。从轴将以当前速度继续保持运行。
5.4.4 MC_GearIn
使用该模块(由SM_PLCopen.lib库提供),可将从轴与主轴进行耦合。从轴速度将成为主轴速度的f倍,系数 f 由输入参数RatioNumerator与RatioDenominator的商值决定。
该模块将根据设定的Acceleration和Deceleration值对从轴进行加速或减速,直至其速度达到目标速比。一旦达到目标速比,从轴速度将由主轴速度直接派生。
若主轴的bRegulatorOn变量(AXIS_REF结构体,定义于Drive_Basic.lib)为TRUE,则使用主轴的目标速度值进行计算,否则使用主轴的实际速度值。
5.4.5 MC_GearOut
使用该模块(由 SM_PLCopen.lib库提供),可使从轴与主轴脱离耦合关系。从轴将以当前速度继续保持运行。
5.4.6 MC_Phasing
使用该模块(由SM_PLCopen.lib库提供),可实现主轴与从轴之间的恒定距离保持。在此模式下,主从轴具有完全相同的速度和加速度。实现方式为:从轴通过加速或减速达到与主轴相同的速度,当达到同步状态后,将在主轴上执行附加运动(类似于MC_MoveSuperImposed功能),从而实现所需的相位偏移。
5.5 附加功能模块
5.5.1 SMC_GetCamSlaveSetPosition
该模块用于计算从轴(Slave)的当前目标位置(假设该从轴通过凸轮曲线与主轴(Master)的运动耦合)。在此过程中,两个轴均不会实际移动或受影响。
该模块适用于以下场景:在从轴与凸轮正式连接前,需要将其移动到通过此计算得到的目标位置。
由于模块在每个周期内即可完成对应值的计算,因此无需设计"Done"完成信号输出。
功能块输入输出参数
CamTableID : MC_CAM_ID
凸轮曲线标识,由MC_CamTableSelect模块输出提供
Master : AXIS_REF
主轴,作为凸轮运动的基准轴
Slave : AXIS_REF
从轴,用于计算凸轮目标位置的轴
功能块输入参数
Enable : BOOL
模块使能信号,TRUE:激活位置计算功能;FALSE:模块暂停计算
其他未列出的输入参数与MC_CamIn模块相同
功能块输出参数
fStartPosition : LREAL
从轴目标位置计算结果(单位:[u])
Error : BOOL(默认值:FALSE)
模块运行中发生错误
ErrorID : SMC_Error (INT)
错误代码ID,用于诊断具体故障
5.5.2 SMC_CAMEditor,SMC_CAMVisu
使用这些模块可以创建在线凸轮编辑器。SMC_CAMEdito 必须在SoftMotion任务中调用,而SMC_CAMVisu 应在优先级较低的慢速任务中调用。
这两个模块应连接到对应的可视化模板(SMC_CAMEditor),该模板可显示给定的凸轮曲线,并允许用户在运行时修改该凸轮曲线。
红色圆圈标记的是当前凸轮点。可通过左下角的箭头按钮进行修改。右下角的按钮用于选择显示位置、速度或加速度参数。上方工具栏的箭头按钮可用于按特定增量调整主轴位置、从轴位置、从轴速度及从轴加速度。
5.5.3 SMC_CAMRegister
该功能块实现挺杆控制单元的功能。它基于MC_CAM_REF结构体运行(与MC_CamIn类似),但忽略原始路径信息,仅读取挺杆触发数据。
功能块输入输出参数
Master : AXIS_REF
主轴结构体定义(参见第2.4章),用于控制挺杆切换动作的轴。
CamTable : MC_CAM_REF
凸轮曲线描述结构体(可为空),包含挺杆位置参数定义。
bTappet : ARRAY [1..MAX_NUM_TAPPETS] OF BOOL
挺杆状态位数组,每个元素对应一个挺杆的触发状态(TRUE=触发/FALSE=未触发)。
功能块输入参数
Enable : BOOL(默认值:FALSE)
当值为 TRUE 时,功能块开始执行挺杆切换动作。
MasterOffset : REAL
主轴位置的附加偏移量。
MasterScaling : REAL(默认值:1)
主轴通用比例因子。
TappetHysteresis : REAL
挺杆检测滞环宽度。
DeadTimeCompensation : REAL
死区时间补偿(单位:秒)。通过线性外推法计算预期的主轴位置。
功能块输出参数
Error : BOOL(默认值:FALSE)
功能块运行中发生错误标志。
ErrorID : INT
错误代码编号。
EndOfProfile : BOOL
当运动轨迹从终点切换到起点 时,该输出在 一个周期内保持为TRUE。
5.5.4 SMC_GetTappetValue
该功能块用于解析MC_CamIn功能块的Tappets输出信号,实时反馈当前凸轮挺杆(tappet)的工作状态。
功能块输入输出参数
Tappets : SMC_TappetData
功能块输入参数
iID : INT
待检测挺杆的组别ID,用于指定需要监控的挺杆组编号
bInitValue : BOOL
挺杆初始状态值,在功能块首次调用时自动赋值用于初始化挺杆状态
bSetInitValueAtReset : BOOL
重启时初始化控制,TRUE:当MC_CamIn功能块重启时,挺杆状态重置为bInitValue,FALSE:当MC_CamIn功能块重启时,挺杆状态保持原值
功能块输出参数
bTappet : BOOL (Default: FALSE)
挺杆状态
5.5.5 SMC_ReadSetPosition
该模块用于读取驱动器的当前设定位置。
5.5.6 SMC_SetTorque
若驱动器处于"扭矩控制模式",该模块可用于生成扭矩。