Axis Setup Procedure/zh-hans
语言: | English • 中文(简体) |
---|
以下步骤说明如何在softMC控制器中创建和定义轴。
需要以下内容:
- 运行softMC(实际或模拟)
- 用户界面(ControlStudio)
Contents
步骤 1: 声明轴
在CONFIG.PRG文件的第一行指定要使用的轴数:
Sys.Naxes = <number> … Program … End Program
通过从终端窗口发出这两行将CONFIG.PRG文件发送到softMC并来运行它:
send config.prg reset all
现在您已经定义了轴,通过从终端窗口发出此命令很容易查看:
->?axislist A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17
步骤2:定义有意义的轴名称
系统默认轴名称不是很友好(a1,a2,a3等)。 给他们更有意义的名字是一个很好的做法。这只能在CONFIG.PRG文件中完成,通过<axis>.AxisName 为每个轴(无双引号)分配一个新名称。
Sys.Naxes = <number> … Program a1.AxisName = Xaxis a2.AxisName = Lift … End Program
步骤3:准备普通轴设置
要设置系统轴,必须准备设置程序。 我们称之为SETUP.PRG。
注意:
- 要访问(写入)轴属性,需要附加轴。
- 对于某些属性,轴需要禁用。
SETUP.PRG
Program Call SetAxis(a1) Call SetAxis(a2) … End Program Sub SetAxis(ax as generic axis) With ax Attach En = 0 … <stuff goes here> … Detach End With End Sub
步骤4:位置单位定义
<axis>.PositionFactor定义将在指定轴的所有位置变量(pcmd,pfb等)中使用的位置单位。 它包括以下内容:
- 通过运动总线看到的电机编码器分辨率(参见EtherCAT,SERCOS,CanOPEN)。 电机旋转一圈中有多少计数 - 存储在pos_units全局变量中(对于每个轴不同)。
- 齿轮比(M:N)和/或直线螺杆的螺距(mm / rev)。
- 旋转轴:
- 对于以度为单位的位置PositionFactor是:PFAC = Pos_Units *(M / N)/ 360
- 线性轴:
- 位置为毫米PositionFactor是PFAC = Pos_Units)/MPITCH
请参考运动总线设置pos_units和MPITCH设置
步骤5:运动方向
驱动器位置增量的正方向不必与用户轴的所需正方向(向上,向左,向右逆时针)匹配。 因此,将使用<axis> .direction标志:
<axis>.Direction = {1|-1}
-1的值表示方向反转。
步骤6:速度,加速度,加加速度单位
速度/加速度/加加速度单位不必与位置单位相匹配。 单位可以由用户定义。 对于所有派生单位(速度,加速度,加加速度),默认时间刻度以毫秒为单位,因此需要改变比例。
要使用每秒位置单位的速度,必须定义以下内容:
<axis>.VelocityFactor = <axis>.PositionFactor/1000
在这种情况下,如果用户以毫米为单位设置位置,则速度将为mm/sec
以RPM定义电机的速度
<axis>.VelocityFactor = Pos_Units /1000/60
加速度和加加速度单位是一样的; 它们的默认值以每毫秒的速度和加速度单位表示。 因此,为了每秒设置它们,它们需要设置为:
<axis>.AccelerationFactor = <axis>. VelocityFactor /1000 <axis>.JerkFactor = <axis>. AccelerationFactor /1000
步骤7:单位总结
位置,速度,加速度和加加速度单位由以下设置:
<axis>.PositionFactor = … <axis>.Direction = … <axis>.VelocityFactor = … <axis>.AccelerationFactor = … <axis>.JerkFactor = …
步骤8:位置限制
设定轴的位置范围。 设置最大位置:
<axis>.Pmax = … and enabling /disabling it: <axis>.PmaxEn = {0|1}
设置最小位置:
<axis>.Pmin = … and enabling /disabling it: <axis>.PminEn = {0|1}
设置轴类型:
<axis>.AxisType = 0 ‘ For linear axes <axis>.AxisType = 1 ‘ For rotary axes
可以定义旋转轴翻转: 启用/禁用它:
<axis>.PositionRollOverEnable = {0|1}
设置整个范围:
<axis>. PositionRollOver
设置低值:
<axis>. PositionRollOverMin
注意:如果未设置使能标志,则不需要设置相应的值。
步骤9:运动总线单元
根据运动总线(EtherCAT,SERCOS,CANopen)的类型和所使用的驱动器,可以使用多个参数进行调整(但不一定需要):
如果在驱动器中打开微插补,则发送到驱动器的速度必须适当地缩放; 这是完成的(每ms的计数):
<axis>.MotionBusVelocityScale = 0 <axis>.MotionBusVelocityBase = 1
如果使用有限的驱动器位置范围(不包括整数32位):
<axis>.CountMin = <drive min position value> <axis>.CountMax = <drive max position value>
步骤10:运动参数
运动参数分为速度,加速度和加加速度值。 所有这些都具有总体限制的最大值和运动执行时使用的运动默认值。
运动默认值为: | <axis>.VelocityCruise |
速度根据轴最大物理极限(驱动/电机性能和机械限制)设置:
<axis>.Vmax
运动默认值为: | <axis>.Acceleration <axis>.Deceleration |
加速度根据用户单位的最大轴物理极限(最大驱动/电机电流,轴负载)设置:
<axis>.Amax <axis>.Dmax
Motion default value is: | <axis>.Jerk |
Jerk是位置的第三次推导,如果使用平滑曲线,需要定义一个很好的经验法则是设置J = BW * A,其中J-加速度,A加速度,BW-控制带宽(Hz)。
<axis>.JerkMax
步骤11:安全参数
最大允许位置误差(PE)。 PE定义为位置指令和位置反馈之间的差异。由于运动总线的通信延迟以及将电流与当前获得的驱动器的位置反馈进行比较之前的几个样本的驱动(微插补)位置命令的处理时间:
<axis>.PositionErrorMax – 用户单位内最大允许位置错误。 <axis>.PositionErrorDelay – 用于延迟计算的样本数。
速度(失速)保护,每个样品检查电机的反馈速度(推荐设置为<axis>.VelocityMax的120%)
<axis>.VelocityOverSpeed
Sanity Threshold作为防止意外跳转的最终保护(建议设置为<axis> .VelocityMax的1000%):
<axis>.VelocitySafetyLimit
扭矩错误 - 仅当轴动态模型打开时
<axis>.TorqueMaxError
步骤12:平滑
可以使用不同的曲线类型,从非常平滑的S曲线(梯形加速度,正弦加速度)到不太平滑但更快的梯形速度,通过设置这两个参数来达到完全前进的曲线(恒速):
- <axis>.Smooth 定义自动(0-100)或手动平滑(-1)
- <axis>.PrfType 更精确地指定曲线(梯形速度,梯形加速度,正弦加速度)
步骤13:轴设置 - 完整示例:SetAxis子程序
sub SetRotAxis(ax as generic axis, byval minval as double , byval maxval as double) with ax attach En = 0 AxisType = 1 PositionFactor = pos_unit/360 VelocityFactor = PositionFactor /1000 AccelerationFactor = VelocityFactor /1000 Jerkfactor = AccelerationFactor /1000 VelocityMax = 1000 AccelerationMax = 10000 DecelerationMax= 10000 JerkMax = 20*amax VelocityCruise = 0.5*VelocityMax Acceleration = AccelerationMax Deceleration = DecelerationMax Jerk = JerkMax PrfType = -1 Smooth = -1 VelocityOverspeed = 1.2*VelocityMax VelocitySafetyLimit = 10*VelocityMax PositionErrorDelay = 2 PositionErrorMax = 1 PositionMax = maxval PositionMin = minval PositionMaxEn = 1 PositionMinEn = 1 PositionRolloverEnable = 0 detach end with end sub
步骤14:运动总线EtherCAT示例
位置单位
- 首先读取电机编码器分辨率(MENCRES – SDO:0x20F1:0)
- MENCRES = EC_SDO_READ(<addr>,0x20f1,0)
然后设置(值1)组态的电机轴转数和驱动轴转数。 齿轮比通过以下计算
- Fieldbus CANopen Gear Motor Shaft Scaling (FBGMS – SDO0x2091:0)
- Fieldbus CANopen Gear Driving Shaft Scaling (FBGDS – SDO0x2091:1)
- gear ratio = FBGMS / FBGDS
步骤15:超动态模型
扭矩缩放
- <axis>.TorqueFactor – 根据电机KT参数
限制
- <axis>.TorqueMax – 最大电机扭矩
动态模型参数
- axis.DYNAMICMODEL[..] = <…>