当前位置: 首页 > news >正文

Softmotion in CoDeSys2.3 User Manual-5

5. SM_PLCopen.lib库

5.1 概述

"SM_PLCopen.lib"库提供的模块遵循PLCopen规范:《运动控制功能块 1.0 版》。

本说明基于该规范编写,并补充了 PLCopen 规范中未涵盖的功能特性。

严格遵循IEC61131-3标准编程的功能块可分为以下三类:

  1. 单驱动器通用操作、控制与参数化模块
    用于对单个驱动器进行基础操作和配置(详见第5.3章说明)
  2. 单驱动器独立运动控制模块
    支持以多种方式自主控制单轴运动(详见第5.3章说明)
  3. 主从驱动器的协同运动控制模块
    实现电子凸轮、电子齿轮和相位同步功能(详见第5.4章说明)
  • 附加模块参见第5.5章。
  • 此外,该库为所有重要模块提供可视化模板。这些模板可与对应模块的实例绑定,实时显示其输入/输出状态,在应用程序编程和测试阶段具有重要辅助作用。

前置条件:本库基于"Drive_Basic.lib"库构建。该库提供了AXIS_REF 结构体,供本库模块调用访问。

5.2 PLCopen规范《运动控制功能块 1.0 版》

建议在阅读本说明的同时,参考PLCopen规范《运动控制功能块 1.0 版》。其核心要点简要归纳如下:

模块激活两种方式:

  1. 使能输入(Enable-Input)
    若模块具备使能输入(例如MC_ReadParameter),则其仅在使能信号为TRUE期间持续激活。
  2. 执行输入(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库,根据轴的当前状态提供两种工作模式:

  1. 离散运动模式(discrete_motion)
    当前轴上有其他运动功能块正在执行时,Distance值将被叠加到该模块的目标位置上,运动将转向新的目标位置继续执行。
  2. 连续运动/静止模式(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_pairsINT0轨迹位置点数量
IsAbsoluteBOOLTRUE绝对位置还是相对位置
MC_TP ArrayARRAY[1..100] OF MC_TP位置点

MC_TP包括以下变量

变量类型初始值描述
delta_timeTIMEt#0s相邻位置点间的时间周期
positionREAL0

该模块通过给定的位置点生成路径,形成由三次多项式构成的双连续可微曲线。

需注意:轴在到达预定义轮廓终点时,通常具有非零的速度和加速度。可通过在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_pairsINT0轨迹位置点数量
IsAbsoluteBOOLTRUE绝对位置还是相对位置
MC_TV ArrayARRAY[1..100] OF MC_TV位置点

MC_TV包括以下变量

变量类型初始值描述
delta_timeTIMEt#0s相邻位置点间的时间周期
velocityREAL0

该模块通过给定的位置点生成路径,形成由直线段组成的连续曲线。

轴位置则由轮廓的起始位置和速度积分共同决定。

5.3.19 MC_AccelerationProfile

此功能块属于SM_PLCopen.lib库,是MC_PositionProfile模块的类比实现。不同之处在于:通过MC_TA_REF结构体类型的输入变量,各位置点需通过其加速度值来定义。

MC_TA_REF结构体包含以下变量:

变量类型初始值描述
Number_of_pairsINT0轨迹位置点数量
IsAbsoluteBOOLTRUE绝对位置还是相对位置
MC_TA ArraARRAY[1..100] OF MC_TA位置点

MC_TA包括以下变量

变量类型初始值描述
delta_timeTIMEt#0s相邻位置点间的时间周期
accelerationREAL0

该模块通过给定的位置点生成路径,形成由直线段组成的连续曲线。

曲线速度由轮廓起始速度和加速度积分共同决定,轴位置则由起始位置和速度积分计算得出。

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,用于详细描述触发输入的特性:

变量类型初始值描述
bFastLatchingBOOLTRUE快速锁存(通过驱动器接口实现)(TRUE)或 基于PLC周期的锁存(FALSE)
iTriggerNumberINT-1仅当bFastLatching=TRUE时有效:触发器ID(具体取值范围取决于驱动器接口类型)。
bInputBOOLFALSE仅当bFastLatching=TRUE 时有效:输入信号(TRUE触发锁存)。
bActiveBOOLFALSE内部变量

窗口功能(通过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

若驱动器处于"扭矩控制模式",该模块可用于生成扭矩。

http://www.dtcms.com/a/455091.html

相关文章:

  • 域名和网站不是一家怎么办湛江市网站建设
  • 免费asp网站源码广州市番禺区
  • Vue3-OptionsAPI 与 CompositionAPI以及setup概述
  • 电商设备网站怎么做吉林省建设工程造价信息网
  • 做网站建设多少钱网站域名年龄
  • 网站建设的行业资讯组建网站开发团队
  • 营销型网站方案国人原创wordpress cms模板:hcms
  • wordpress 站点维护社交网站开发意义
  • 网站flash网页设计基础教程结课论文
  • 无网站可以做cpc吗零基础学网站建设 知乎
  • 网站关于我们怎么做单页面乐昌网站建设
  • RK3568入门之VScode远程连接开发板,直接开发板上面编程和实验
  • 六安做网站seowordpress放在二级目录下
  • 大型网站建设兴田德润实惠个人网站毕业设计论文
  • 网站app开发平台成都seo专家
  • 网站备案不注销有什么后果怎样用模块做网站
  • 江西网站建设公司联系方式oss做网站
  • 查公司的网站有哪些龙岗网站推广
  • 网站百度排名提升竞价推广教程
  • 程序员做网站类的网站犯法吗好用的a站
  • 江苏赛华建设监理有限公司网站好2345浏览器主页
  • 专业制作网站公司哪家好在线公司网站查询
  • 懂网络维护和网站建设的专业网站的后台怎么做调查问卷
  • 充电桩安装 - 变压器容量怎么算-慧知开源充电桩平台
  • 网站建设分类方案深圳哪家网站建设
  • 西宁企业做网站网站备案多个域名
  • 网站开发全程实例食品科技学校网站模板
  • 东莞网站推广哪家好网站营销外包如何做
  • 北京定制网站建设做论坛网站好吗
  • 知名的网站制作东莞微网站