轴的组态
在组态运动控制逻辑前,需要先进行轴组态。本章节将对轴组态进行详细介绍。
新建轴配置
1、设备节点右键选择‘轴配置’。
2、点击确定后将在设备树上生成'Axis Pool'轴组节点。
Axis Pool配置页面
基本配置
关联任务:Axis Pool轴算法关联任务。由于运动控制对实时性要求很高,因此关联的任务优先级必须为0,且需要和被控制设备的总线任务相同,这样运动控制算法和被控设备的数据可实现同步。
轴选择
参与比较:勾选的轴会在'轴参数对比'页面生成对应轴的数据。
轴参数选择
参与比较:勾选的轴参数会在'轴参数对比'页面生成对应轴参数数据。
轴参数对比
在线时可观察参与比较轴的实时数据。
IEC对象
Axis Pool内部数据,用户可不用关心。
新建轴
1、右键'Axis Pool'轴组节点,选择'新建轴'。
2、点击确定后会弹出'添加设备'对话框,可以选择要添加的轴类型。
3、如下是选择'PositionControl_Axis'位置轴生成的轴节点。
轴配置页面
基本属性
轴名称:轴的名字。例如Axis_X、Axis_Y等。
单元ID:轴在运动控制算法中的ID号。范围0~65535。一般会自动分配,用户可不关心。但不允许重复。
虚拟轴:内部软轴,实现运动轨迹规划计算,但不对外输出或采集(即不控制实际的执行机构)。
旋转轴:轴的行程是循环模式,例如0~360度,轴在360度时继续向前转动就会回到0度继续累加。
线性轴:轴的行程是有范围的,例如-10000~10000,超出这个范围轴将超限报警停止运动。
位置单位:将轴位置单位转换为用户需要的单位所需的系数。例如电机转动一圈需要1048576个指令位置,用户单位希望是度,那么位置单位=1048576/360,这样轴位移1就表示1度。
模数起始:只对旋转轴有效。循环行程左限值。
模数长度:只对旋转轴有效。循环行程长度。例如模数起始= -10000,模数长度= 20000,那么轴的循环区间就是[-10000,10000)。
动态参数
编码器轴无此页面。
梯形:轴加减速阶段的速度曲线为梯形。
S型:轴加减速阶段的速度曲线为S形。
SIN二次方:轴加减速阶段的速度曲线为SIN二次方曲线。
以设定减速度停止:轴减速停止时按照设定减速度停止。
立即停止:轴减速停止时立即停止。
急停减速度:轴遇到限位、FE超限等错误时,按照此减速度停止。
驱动设备
编码器轴无此页面。
设备名称:选择轴要控制的伺服设备名称。例如:EtherCAT总线下的MADHT1505BA1_0。
设备类型:选择要控制伺服的类型。例如:直连型、EtherCAT总线型。
驱动方向反向:控制驱动方向反向。例如控制轴正向位移时,电机实际方向不对,可以勾选此项实现反向。
驱动使能关联信号:轴伺服使能关联的变量。轴使能状态将反馈到这个变量上。
驱动使能有效电平:轴使能信号有效电平,轴使能时关联信号的电平状态。
输出映射:轴与伺服电机输出变量映射关系,只有映射了变量才能使轴正确控制该伺服电机。
以下步骤可实现轴的输出映射
1、在伺服设备的I/O映射表中映射必要的变量,该变量可以是用户工程中已经存在的变量,也可以直接输入变量名,系统将自动创建该变量。
2、关联轴与被控伺服电机的输出映射。
必要输出参数说明:
轴对象成员 | 伺服电机变量 | 说明 |
---|---|---|
out.outputVelocity | Vpspeed | 目标速度,一般在伺服电机16#60FF:00索引下。(位置轴可不映射此参数) |
out.outputPosition | Dpos1 | 目标位置,一般在伺服电机16#607A:00索引下。(速度轴可不映射此参数) |
out.ControlWord | ControlWord1 | 控制字,一般在伺服电机16#6040:00索引下。(必须映射) |
out.ModesOfOperation | ModeOP1 | 控制模式, 一般在伺服电机16#6060:00索引下。(必须映射) |
编码器设备
启用编码器:勾选时轴实际位置来自编码器采集值。不勾选时轴实际位置等于轴解算位置。
编码器位宽:设定编码器位宽值。例如编码器是20位的,那么此处须填20。
编码器类型:增量:编码器采集值是以增量形式变化;绝对值:编码器位置是以绝对值形式变化。
反向编码器:当采集编码器的运动方向和轴显示方向不同时,可勾选此项。
比例缩放分子:编码器采集值缩放系数分子。
比例缩放分母:编码器采集值缩放系数分母。例如:分子=1,分母=2,编码器变化量为100,那么轴上显示的位置变化量=100*(1/2)=50。
以下步骤可实现轴的输入映射
1、在伺服设备的I/O映射表中映射必要的变量,该变量可以是用户工程中已经存在的变量,也可以直接输入变量名,系统将自动创建该变量。
2、关联轴与被控伺服电机的输入映射。
必要输入参数说明:
轴对象成员 | 伺服电机变量 | 说明 |
---|---|---|
in.input | Mpos1 | 实际位置,一般在伺服电机16#6064:00索引下。(不启用编码器可不映射此参数) |
in.StatusWord | Statusword1 | 状态字,一般在伺服电机16#6041:00索引下。( 编码器轴可不映射。 ) |
in.ModesOfOperationDisplay | ModeOpDis1 | 控制模式显示, 一般在伺服电机16#6061:00索引下。(编码器轴可不映射。) |
位置控制
编码器轴无此页面。
输出比例分子:位置轴有效。输出位置比例系数分子。
输出比例分母:位置轴有效。输出位置比例系数分母。例如:电机每1048576个指令位置转一圈360度,如果设置输出比例分子=1048576,输出比例分母=360,那么轴位移1就表示1度。
比例P增益:速度轴有效。位置闭环PID的比例P增益。
积分I增益:速度轴有效。位置闭环PID的积分I增益。
微分D增益:速度轴有效。位置闭环PID的微分D增益。
速度反馈增益:速度轴有效。位置闭环PID的速度反馈增益。
位置反馈增益:速度轴有效。位置闭环PID的位置反馈增益。
速度前馈增益:速度轴有效。位置闭环PID的速度前馈增益。
加速度前馈增益:速度轴有效。位置闭环PID的加速度前馈增益。
启用死区控制:速度轴有效。下限:死区下限。上限:死区上限。例如:有一个执行机构在PID输出-0.2~0.3之间执行机构无动作。为了使执行机构避开死区快速响应动作,那么此处死区下限设置为-0.2,死区上限设置为0.3。此时当PID计算值<0时,PID实际输出值=PID计算值+(-0.2),此时当PID计算值>0时,PID实际输出值=PID计算值+(0.3)。
回路输出系数:速度轴有效。PID输出系数。例如设置为1.1,实际PID输出值=PID计算值*1.1。
回路输出最大值:速度轴有效。PID输出最大限制值。例如设置为65535,当PID计算值<-65535时,实际输出为-65535;当PID计算值>65535时,实际输出为65535。
位置限制
编码器轴无此页面。
启用硬限位:启用硬限位后,轴将在遇到正负硬限位有效时快速减速停止。不启用时,将不受硬限位信号影响。
负向硬限位信号:负向硬限位关联的变量,当轴负向运动,遇到负向限位信号有效时,轴将快速减速停止。
负向硬限位有效电平:负向硬限位关联变量的有效电平。
正向硬限位信号:正向硬限位关联的变量,当轴正向运动,遇到正向限位信号有效时,轴将快速减速停止。
正向硬限位有效电平:正向硬限位关联变量的有效电平。
启用软限位:启用软限位后,轴在超出正负软限位位置时快速减速停止。不启用时,将不受软限位位置影响。
负向软限位位置:轴负向运动,超出此位置时快速减速停止。
正向软限位位置:轴正向运动,超出此位置时快速减速停止。
使用举例:
线性轴都有一个有限的运动范围。为了防止轴运动超出范围外造成设备损坏,就需要设置硬限位和软限位实现双重保护,使得轴在运动到范围外时能够快速停止避免损坏。例如:X轴极限范围为-120CM~120CM,有效范围为-100CM~100CM。那么负向硬限位开关就需要安装在-110的位置(要留一定的减速位置),正向硬限位开关就需要安装在110的位置(要留一定的减速位置)。负向软限位设定为-100,正向软限位设定为100。
位置监测
编码器轴无此页面。
跟随误差最大限值:轴目标位置(TargetValue.TargetPosition)与实际位置(ActualValue.ActualPosition)偏差(FollowErrorSetting.FollowError)绝对值的最大允许超出值。
容许超限连续周期数:跟随误差连续超限的最大允许次数。
位置超限处理方式:忽略:忽略该错误,轴运动不受任何影响。报警:轴状态(AxisStatus.FollowErrorExceed_Warning)被置TRUE,但轴运动不受任何影响。失能:轴伺服使能断开,电机动力线断电。轴进入PLCopen_STATE_Disabled状态,运动指令被终止(可通过重新触发MC_Power使能轴即可恢复)。停止:轴进入PLCopen_ErrorStop状态,运动指令被终止(可通过触发MC_Reset清除此错误)。
目标位置到位:只要轴目标位置到达,就认为轴运动结束,运动动指令结束标志Done将被置TRUE。
停止位置窗口:轴目标位置到达时,轴实际位置与目标位置偏差的绝对值还需小于此设定值,才认为轴运动结束,运动动指令结束标志Done才被置TRUE。
停止窗口区间最小滞留时间:当轴实际位置与目标位置偏差的绝对值在该设定时间内仍不小于停止窗口设定值,仍然认为轴运动结束,运动指令结束标志Done仍被置TRUE。
回零
编码器轴无此页面。
回零模式:轴回零的几种方式,具体要根据实际设备回零方式选择匹配的模式。
正向、负向、当前方向:轴回零的第一阶段运动方向。
逼近速度:轴在后期回零时使用的速度。一般此值设定较小,因为此时离零点已经很近,需要低速找到准确的零点位置。
回零输入标志信号:回零输入标志信号关联的变量。
回零标志信号有效电平:回零输入标志信号关联的变量有效电平。
辅助回零输入标志信号:辅助回零输入标志信号关联的变量。
辅助回零标志信号有效电平:辅助回零输入标志信号关联的变量有效电平。
回零的几种模式:
1、仅使用回零信号:轴按照设定速度(SetValue.SetVelocity)设定方向(正向、负向、当前方向)运动(阶段1),遇到回零输入标志信号有效时减速停止(阶段2),然后按照逼近速度(HomeSetting.CreepVelocity)反向运动(阶段3),遇到回零输入标志信号下降沿时,设定此处为原点位置并减速停止(阶段4),最后再反向回到原点位置(阶段5)。
特殊情况:一开始回零输入标志信号有效,则直接进入阶段3。
2、仅使用辅助回零信号:轴按照逼近速度(HomeSetting.CreepVelocity)设定方向(正向、负向、当前方向)运动(阶段1),遇到辅助回零输入标志信号有效时,设定此处为原点位置并减速停止(阶段2),最后再反向回到原点位置(阶段3)。
特殊情况:一开始辅助回零输入标志信号有效,则直接进入阶段2。
3、回零信号和辅助回零信号都使用:轴按照设定速度(SetValue.SetVelocity)设定方向(正向、负向、当前方向)运动(阶段1),遇到回零输入标志信号有效时减速停止(阶段2),然后按照逼近速度(HomeSetting.CreepVelocity)反向运动(阶段3),遇到回零输入标志信号下降沿后且遇到辅助回零信号上升沿时,设定此处为原点位置并减速停止(阶段4),最后再反向回到原点位置(阶段5)。
特殊情况:一开始回零输入标志信号有效,则直接进入阶段3。
IEC对象
此页面为轴所有运算数据,在线时可查看实时值,需要修改某个参数值时,除了组态逻辑中对其赋值外,还可添加到监视列表进行修改。
关键IEC对象数据表:
Basic | 类型 | 名称 | 含义 |
---|---|---|---|
Axis.AxisID | WORD | 轴ID | 系统为轴分配的号码,用户不用关心。 |
Axis.DriveControlMode | MC_DRIVE_CONTROL_MODE | 轴类型 | mcStepper:位置轴,mcServo:速度轴。 |
Axis.UserUnit | LREAL | 位置单位 | 将轴单位转换为用户期望单位的转换系数 |
Status | 类型 | 名称 | 含义 |
Axis.AxisState | MC_PLCopen_STATE | 轴状态 | 轴PLCopen状态,包含未使能、空闲、错误停止等 |
Axis.MotionCmdCurrent | MC_CMD_TYPE | 当前指令 | 轴缓存的第一条指令,例如:MoveRelative |
Axis.MotionCmdNext | MC_CMD_TYPE | 下一个指令 | 轴缓存的第二条指令,例如:MoveAbsolute |
Axis.AxisStatus.FollowErrorExceed | BOOL | FE偏差报警 | 当轴目标位置和实际位置偏差超设定值时置TRUE |
Axis.AxisStatus.HardwareLimit_Position | BOOL | 正向硬限位报警 | 当轴遇到正向硬限位时置TRUE |
Axis.AxisStatus.HardwareLimit_Negative | BOOL | 负向硬限位报警 | 当轴遇到负向硬限位时置TRUE |
Axis.AxisStatus.SoftwareLimit_Position | BOOL | 正向软限位报警 | 当轴遇到正向软限位时置TRUE |
Axis.AxisStatus.SoftwareLimit_Negative | BOOL | 负向软限位报警 | 当轴遇到负向软限位时置TRUE |
Axis.AxisStatus.FollowErrorExceed_Warning | BOOL | FE偏差警告 | 当轴目标位置和实际位置偏差超设定值时置TRUE |
SystemMark | BOOL | 轴解算标志 | 轴解算时置TRUE |
struct1~6 | BOOL | 备用 | 备用 |
Positions | 类型 | 名称 | 含义 |
Axis.TargetValue.TargetPosition | LREAL | 目标位置 | 轴目标位置(用户单位) |
Axis.ActualValue.ActualPosition | LREAL | 实际位置 | 轴实际位置(用户单位) |
Axis.FollowErrorSetting.FollowError | LREAL | 位置偏差 | 轴位置偏差(用户单位) |
Axis.FollowErrorSetting.FEMaxLimit | LREAL | 位置偏差最大允许值 | 轴位置偏差最大允许值(用户单位) |
Axis.AxisRotaryOrLinear | MC_ROTARY_OR_LINEAR | 位置行程模式 | 线性轴:有限行程;旋转轴:循环行程。 |
Axis.Modulo.StartingValue | LREAL | 循环行程起始值 | 循环行程左限值(用户单位) |
Axis.Modulo.Length | LREAL | 循环行程长度 | 循环行程长度(用户单位) |
Axis.MotionCmdCurrentValue.EndPosition | LREAL | 结束位置 | 指令结束位置(用户单位) |
Axis.MotionCmdCurrentValue.RemainPosition | LREAL | 剩余位置 | 指令剩余位置(用户单位) |
Velocity | 类型 | 名称 | 含义 |
Axis.SetValue.SetVelocity | LREAL | 设定速度 | 轴设定速度(用户单位) |
Axis.SetValue.SetAcceleration | LREAL | 设定加速度 | 轴设定加速度(用户单位) |
Axis.SetValue.SetDeceleration | LREAL | 设定减速度 | 轴设定减速度(用户单位) |
Axis.TargetValue.TargetVelocity | LREAL | 目标速度 | 轴目标速度(用户单位) |
Axis.ActualValue.ActualVelocity | LREAL | 实际速度 | 轴实际速度(用户单位) |
Axis.TargetValue.TargetDirection | MC_DIRECTION | 目标方向 | 轴目标方向(正向、负向) |
Axis.HomeSetting.CreepVelocity | LREAL | 回零逼近速度 | 轴回零逼近速度(用户单位) |
Axis.EmergentStopDecelreation | LREAL | 急停减速度 | 轴急停减速度(用户单位) |
Axis.SetValue.SetJerk | LREAL | 设定加加速度 | 轴设定加加速度(用户单位) |
Axis.RampType | MC_RAMP_TYPE | 速度斜坡类型 | 轴加减速类型(梯形、S形、SIN二次方) |
Axis.MotionEndSetting.MotionEndMode | MC_MOTION_END_MODE | 运动停止标志 | TargetPosOnly:仅目标位置到位 TargetPosAndFollowError:目标位置到位且位置偏差满足要求 |
Axis.MotionStopMode | MC_MOTION_STOP_MODE | 命令停止模式 | MC_STOP_MODE_DECEL:减速停止 |
Gains | 类型 | 名称 | 含义 |
Axis.PosClosedLoopGain.P | LREAL | 比例P增益 | 位置闭环PID比例P增益 |
Axis.PosClosedLoopGain.I | LREAL | 积分I增益 | 位置闭环积分I增益 |
Axis.PosClosedLoopGain.D | LREAL | 微分D增益 | 位置闭环微分D增益 |
Axis.PosClosedLoopGain.FeedForward_Velocity | LREAL | 速度前馈增益 | 位置闭环速度前馈增益 |
Axis.PosClosedLoopGain.FeedForward_Acceleration | LREAL | 加速度前馈增益 | 位置闭环加速度前馈增益 |
Axis.PosClosedLoopGain.FeedBack_Velocity | LREAL | 速度反馈增益 | 位置闭环速度反馈增益 |
Axis.PosClosedLoopGain.FeedBack_Position | LREAL | 位置反馈增益 | 位置闭环位置反馈增益 |
Axis.PosClosedLoopGain.PIDOutputValue | LREAL | PID计算值 | 位置闭环PID计算值 |
Axis.PosClosedLoopGain.OutputRatio | LREAL | 回路输出系数 | 位置闭环PID回路输出系数 |
Axis.PosClosedLoopGain.DirectionReverse | INT | 输出反向 | 1:不反向;-1:反向 |
Axis.PosClosedLoopGain.OutputMaxLimit | LREAL | 回路输出最大值 | 位置闭环PID回路输出最大值 |
Axis.PosClosedLoopGain.DeadBandControl.Enable | BOOL | 启用死区控制 | 启用后PID输出值会加上死区上下限值 |
Axis.PosClosedLoopGain.DeadBandControl.UpperBound | LREAL | 死区上限 | 死区上限:PID计算值>0时加此值 |
Axis.PosClosedLoopGain.DeadBandControl.LowerBound | LREAL | 死区下限 | 死区下限:PID计算值<0时加此值 |
Axis.PosClosedLoopGain.OutputValue | LREAL | PID输出值 | PID输出值:PID最终输出值 |
Axis.PosLoopType | MC_LOOP_TYPE | 开闭环模式 | 开闭:PID输出值=开环输出值 闭环:PID输出值=PID最终输出值 |
Axis.OpenLoopOutput | LREAL | 开环输出值 | 开环输出值:开环下PID输出值 |
Limits | 类型 | 名称 | 含义 |
Axis.FollowErrorSetting.FollowError | LREAL | 位置偏差 | 位置偏差实际值 |
Axis.FollowErrorSetting.TimesOfExceed | WORD | 容许超限连续周期数 | 位置偏差连续次数超此设定值时报错 |
Axis.FollowErrorSetting.FEMaxLimit | LREAL | 跟随误差最大限值 | 最大允许位置偏差设定值 |
Axis.FollowErrorSetting.FEExceedHandle | MC_FE_EXCEES_HANDLE | 位置超限处理方式 | 忽略、报警、失能、停止。 |
Axis.FollowErrorSetting.StopFEValue | LREAL | 停止位置窗口 | 位置偏差小于此设定值认为运动结束 |
Axis.FollowErrorSetting.StopFELastTime | TIME | 停止窗口最小滞留时间 | 位置偏差在此时间内仍未满足要求仍认为指令结束 |
Axis.SoftwareLimit.Enable | BOOL | 启用软限位 | 启动:软限位有效。 |
Axis.SoftwareLimit.PositivePosition | LREAL | 正向软限位位置 | 轴正向运动超过此设定位置将减速停止 |
Axis.SoftwareLimit.NegativePosition | LREAL | 负向软限位位置 | 轴负向运动超过此设定位置将减速停止 |
Axis.HardwareLimit.Enable | BOOL | 启用硬限位 | 启动:硬限位有效。 |
Axis.HardwareLimit.PositiveSignal | BOOL | 正向硬限位信号 | 轴正向运动遇到正向硬限位将减速停止 |
Axis.HardwareLimit.PositiveEffectiveLevel | BOOL | 正向硬限位有效电平 | 正向硬限位信号有效电平 |
Axis.HardwareLimit.NegativeSignal | BOOL | 负向硬限位信号 | 轴负向运动遇到负向硬限位将减速停止 |
Axis.HardwareLimit.NegativeEffectiveLevel | BOOL | 负向硬限位有效电平 | 负向硬限位信号有效电平 |
Home & Hold | 类型 | 名称 | 含义 |
Axis.HomeSetting.HomeMode | WORD | 回零模式 | 仅使用回零信号; 仅使用辅助回零信号; 回零信号和辅助回零信号都使用。 |
Axis.HomeSetting.Direction | MC_DIRECTION | 回零方向 | 第一阶段回零运动方向 |
Axis.HomeSetting.HomeSignal | BOOL | 回零输入标志信号 | 回零标志信号值 |
Axis.HomeSetting.HomeSignalEffectiveLevel | BOOL | 回零标志信号有效电平 | 回零标志信号有效电平 |
Axis.HomeSetting.HomeSubSignal | BOOL | 辅助回零输入标志信号 | 辅助回零标志信号值 |
Axis.HomeSetting.HomeSubSignalEffectiveLevel | BOOL | 辅助回零标志信号有效电平 | 辅助回零标志信号有效电平 |
Axis.HomeSetting.ReverselfHardwareLimit | BOOL | 遇到限位反向 | 回零遇到限位反向运动 |
Axis.HomeSetting.CreepVelocity | LREAL | 逼近速度 | 回零逼近速度 |
Axis.HoldSetting.Enable | BOOL | 启用速度保持 | 启动:速度保持功能有效 |
Axis.HoldSetting.Signal | BOOL | 速度保持信号 | 速度保持信号值 |
Axis.HoldSetting.EffectiveLevel | BOOL | 速度保持信号有效电平 | 速度保持信号有效电平 |
Axis.HoldSetting.HoldVelocity | LREAL | 保持速度值 | 保持速度值,一般设定为0,实现轴暂停功能。 |
Input & Output | 类型 | 名称 | 含义 |
Axis.in.Numerator | DINT | 编码器比例缩放分子 | 编码器采集值缩放系数分子 |
Axis.in.Denominator | DINT | 编码器比例缩放分母 | 编码器采集值缩放系数分母 |
Axis.in.DirectitionReverse | INT | 反向编码器 | 1:不反向;-1:反向 |
Axis.in.input | DINT | 编码器位置 | 编码器采集值(关联编辑器原始值) |
Axis.in.preInput | DINT | 上周期编码器位置 | 上周期编码器采集值 |
Axis.in.StatusWord | UINT | 状态字 | 状态字(关联伺服驱动器输入数据) |
Axis.in.ModesOfOperationDisplay | SINT | 控制模式显示 | 控制模式显示(关联伺服驱动器输入数据) |
Axis.in.DigitalInputs | DWORD | 数字量输入信号 | 数字量输入信号(关联伺服驱动器输入数据) |
Axis.in.reserved | ARRAY[0..7] OF BYTE | 备用 | 备用 |
Axis.out.Numerator | DINT | 输出比例分子 | 输出位置指令缩放系数分子 |
Axis.out.Denominator | DINT | 输出比例分母 | 输出位置指令缩放系数分母 |
Axis.out.DirectitionReverse | INT | 驱动方向反向 | 1:不反向;-1:反向 |
Axis.out.outputPosition | DINT | 目标位置输出 | 目标位置输出(关联伺服驱动器输出数据) |
Axis.out.outputVelocity | DINT | 目标速度输出 | 目标速度输出(关联伺服驱动器输出数据) |
Axis.out.outputTorque | DINT | 目标力矩输出 | 目标力矩输出(关联伺服驱动器输出数据) |
Axis.out.DeltaOutputIncrement | LREAL | 未输出位置量 | 未发送位置值(小于1个指令位置) |
Axis.out.ControlWord | UINT | 控制字 | 控制字(关联伺服驱动器输出数据) |
Axis.out.ModesOfOperation | SINT | 控制模式 | 控制模式(关联伺服驱动器输出数据) |
Axis.out.DigitalOutputs | DWORD | 数字量输出信号 | 数字量输出信号(关联伺服驱动器输出数据) |
Axis.out.reserved | ARRAY[0..7] OF BYTE | 备用 | 备用 |