Difference between revisions of "Single Axis Motion/zh-hans"

From SoftMC-Wiki
Jump to: navigation, search
(BackToTop button)
 
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Languages}}
+
<div id="BackToTop"  class="noprint" style="background-color:; position:fixed; bottom:32px; left:95%; z-index:9999; padding:0; margin:0;">
 +
<span style="color:blue; font-size:8pt; font-face:verdana,sans-serif; border:0.2em outset:#ceebf7; padding:0.1em; font-weight:bolder; -moz-border-radius:8px; ">
 +
[[Image:TOP2.png|50px|link=#top]] </span></div>
 +
{{Languages|Single_Axis_Motion}}
 
{{Out-of-date}}
 
{{Out-of-date}}
 
= 简介 =
 
= 简介 =
Line 12: Line 15:
 
由于运动总线通信,所有的运动命令都会受到固有的系统延迟。发送命令需要一个周期时间。需要第二个周期时间来接收位置反馈。 因此,最小系统延迟'''至少为2个'''运动总线周期(对于EtherCAT,通常为4个周期)。 如果在驱动器中启用了微插补,则会有1个周期时间的延迟。另外,不确定的延迟可能来自伺服系统依赖于机械系统的驱动调谐和动力学。
 
由于运动总线通信,所有的运动命令都会受到固有的系统延迟。发送命令需要一个周期时间。需要第二个周期时间来接收位置反馈。 因此,最小系统延迟'''至少为2个'''运动总线周期(对于EtherCAT,通常为4个周期)。 如果在驱动器中启用了微插补,则会有1个周期时间的延迟。另外,不确定的延迟可能来自伺服系统依赖于机械系统的驱动调谐和动力学。
  
= Motion Generator =
+
= 运动发生器 =
The basis of all motion in the softMC is the motion generator. When you issue a motion command such as '''JOG''' or '''MOVE''' to an axis, a motion generator is created in software. That motion generator controls the position and velocity commands of the axis specified in the move command. At regular intervals (normally 2 or 4 ms), the motion generator updates these commands. At the end of motion, the motion generator is terminated. The figure below shows the normal operation of a motion generator.
+
softMC中所有运动的基础是运动发生器。当您发出运动命令(如'''JOG''''''MOVE''')到一个轴上时,运动生成器是在软件中创建的。 该运动发生器控制在运动命令中指定的轴的位置和速度命令。每隔一定时间(通常为2或4 ms),运动发生器更新这些命令。 在运动结束时,运动发生器被终止。 下图显示了运动发生器的正常运行。
  
 
[[Image:Axystems;UserManual-41MotionGenerator.png|caption]]
 
[[Image:Axystems;UserManual-41MotionGenerator.png|caption]]
  
== Motion Conditions ==
+
== 运动条件 ==
Several conditions must be met before the softMC generates motion:
+
在softMC生成运动之前,必须满足几个条件:
  
The controlling task must attach to the controlled axis.
+
控制任务必须关联到受控轴上。
  
The controlled axis must be enabled.
+
控制轴必须使能。
  
The system and axis motion flags must be enabled.
+
系统和轴运动标志开启。
  
Before a task can send motion commands to an axis, '''the axis must be attached to the task'''. Attaching is also required for gearing. This prevents other tasks from attempting to control the axis. To attach an axis, issue '''ATTACH''' from the controlling task:
+
在任务可以向轴发送运动命令之前,'''轴必须关联到任务上'''。传动装置也需要关联到做任务上。这可以防止其他任务尝试控制轴。要关联轴,在控制任务使用 '''ATTACH''' 命令:
 
<pre>
 
<pre>
 
Program
 
Program
Line 32: Line 35:
 
</pre>
 
</pre>
  
If no other task is attached to the axis, the axis is immediately attached. If another task has already attached the axis, an error is generated. A '''TRY CATCH '''can be used to wait for an axis to be unattached.
+
如果轴上没有关联其他任务,则立即关联轴。 如果另一个任务已经关联了轴,则会产生错误。可以使用'''TRY CATCH '''来等待轴未关联。
  
As long as the task has the axis attached, no other task can control the axis. When a task is finished with an axis, it should detach the axis:
+
只要任务有轴关联,任何其他任务都不可以控制该轴。当关联轴的任务完成时,它应该与轴分离:
 
<pre>
 
<pre>
 
Detach A1
 
Detach A1
 
</pre>
 
</pre>
  
If you issue '''DETACH''' while profile motion for that axis is in progress, '''DETACH''' delays execution until that motion is complete. If a task ends with some axes still attached, all axes are automatically detached.
+
如果在该轴的运动轨迹正在进行时发出'''DETACH''',则'''DETACH'''将延迟执行直到该运动完成。 如果任务以某些轴为依据结束,则所有轴都将自动分离。
  
One exception for the requirement that an axis be attached is if the motion command is issued from the terminal window. In this case, assuming the axis is not attached by any other task, the axis is automatically attached to the terminal window for the duration of the motion command.
+
如果从终端窗口发出运动命令,则要关联轴的要求是一个例外。 在这种情况下,假设轴未关联任何其他任务,轴将在运动命令的持续时间内自动关联到终端窗口。
  
'''Enable the drive''' by typing the following commands in the terminal window:
+
'''通过在终端窗口中键入以下命令来'''使能驱动器''':
 
<pre>
 
<pre>
 
System.Enable = ON
 
System.Enable = ON
Line 49: Line 52:
 
</pre>
 
</pre>
  
'''Enable''' is also necessary for simulated axis although there is no drive connected.
+
尽管没有连接驱动器,但模拟轴也需要'''使能'''。启用驱动器还需要两个其他信号:'''DRIVEON ''''''HALTRESTART'''''。 这些信号通常为ON。 这些信号保持符合SERCOS协议。 在非SERCOS应用程序中,它们不能被softMC程序使用。
There are two other signals that are required to enable the drive: '''DRIVEON '''and '''HALTRESTART'''''. ''These signals are normally ON. These signals are kept to comply with SERCOS. They shall not be used by softMC programs in non-SERCOS applications.
+
<br>有关访问驱动器控制位的更多详细信息,请参见此处:
<br>More details about access to drive control bits can be found here:
 
 
* [[:EtherCAT:Drive Control Bits|Drive Control Bits]] - Implementation of Drive Control Bits under EtherCAT
 
* [[:EtherCAT:Drive Control Bits|Drive Control Bits]] - Implementation of Drive Control Bits under EtherCAT
  
 
+
准备运动系统的最后一步是打开运动标志。 有两个运动标志必须在:系统运动标志和轴运动标志。
The last step in preparing a system for motion is turning on the '''motion flags'''. There are two motion flags which must be on: the system motion flag and the axis motion flag. For example:
+
例如:
 
<pre>
 
<pre>
 
System.Motion = ON
 
System.Motion = ON
Line 61: Line 63:
 
</pre>
 
</pre>
  
These lines of code are included in the ControlStudio auto setup program.
+
这些代码行包含在ControlStudio自动安装程序中。
  
In many applications, a '''hardware switch''' is tied to the motion flag. The softMC does not have a hardware motion input. However, you can use softMC events to create this function. The following example shows a task that uses input external data input 1 to control the system motion flag:
+
在许多应用中,'''硬件开关'''与运动标志相关。 softMC没有硬件运动输入。 但是,您可以使用softMC事件来创建此功能。 以下示例显示了使用输入外部数据输入1来控制系统运动标志的任务:
 
<pre>
 
<pre>
 
Program
 
Program
Line 75: Line 77:
 
</pre>
 
</pre>
  
The purpose of the motion generators is to convert motion commands ('''JOG''' or '''MOVE''') into a regularly updated series of position and velocity commands. That series is called a '''motion profile'''. The position and velocity commands are sent via motion bus (EtherCAT, CAN, SERCOS) to the controlled drive. All the servo loops (position, velocity, and current) are closed in the drives. The next figure shows the profile for the velocity portion of a '''JOG''' command.
+
运动发生器的目的是将运动命令('''JOG''''''MOVE''')转换为定期更新的位置和速度命令系列。 该系列称为'''运动曲线'''。 位置和速度命令通过运动总线(EtherCAT,CAN,SERCOS)发送到受控驱动器。 驱动器中的所有伺服回路(位置,速度和电流)都被关闭。 下图显示了JOG命令的速度部分的曲线。
  
 
[[Image:Axystems;UserManual-411MotionConditions.png|caption]]
 
[[Image:Axystems;UserManual-411MotionConditions.png|caption]]
  
 
<span style="color:#ff0000">
 
<span style="color:#ff0000">
The profile must be updated at regular intervals. The softMC usually updates the profile every motion bus cycle (1 ms '''update rate''', if possible when the drive supports this update rate). The cyclic data between softMC and the drives also gets longer with more axes, therefore EtherCAT applications with more than 20 axes may require reconfiguration of PDOs in order to remove unused objects from PDOs. TBD.
+
运动曲线必须定期更新。 softMC通常每个运动总线周期更新运动曲线(如果驱动器支持此更新速率,则可能时更新速率为1 ms)。 softMC和驱动器之间的循环数据随着轴数量的增加而变长,因此具有20个以上轴的EtherCAT应用可能需要重新配置PDO才能从PDOs. TBD中删除未使用的对象。
 
</span>
 
</span>
  
== Motion Buffering ==
+
== 运动缓存 ==
The motion generator for each axis can process only one motion command at a time because the axis can process only one position or velocity command. However, you can send a second motion command to the generator where it is held until the current motion command is complete (motion buffering).
+
每个轴的运动发生器一次只能处理一个运动指令,因为轴只能处理一个位置或速度指令。 但是,您可以向发生器发送第二个运动命令,直到当前运动命令完成(运动缓存)为止。
  
Motion buffering is controlled with '''STARTTYPE'''. If '''STARTTYPE '''is set to GENERATORCOMPLETED, the buffered profile starts immediately after the current profile is complete. If '''STARTTYPE''' is set to INPOSITION, the buffered profile starts after the current profile is complete and the position feedback has settled out to the position command. In both cases, the second command is held in the motion generator to begin immediately after the appropriate conditions are met.
+
运动缓冲由 '''STARTTYPE'''控制。 如果 '''STARTTYPE'''设置为GENERATORCOMPLETED,缓冲的运动曲线将在当前运动曲线完成后立即开始。 如果 '''STARTTYPE'''设置为INPOSITION,则缓冲的运动曲线将在当前运动曲线完成并且位置反馈已稳定后启动。 在这两种情况下,第二个命令保持在运动生成器中,以在满足适当条件之后立即开始。
  
You can also specify that the motion generator not buffer, but process the new motion command immediately. This is useful when you want to make realtime changes to the profile (changing the end position of the current command). For this, set '''STARTTYPE''' to IMMEDIATE (IMMED) or SUPERIMMEDIATE (SIMM).
+
您还可以指定运动生成器不缓存,立即处理新的运动命令。 当您要对运动曲线进行实时更改(更改当前命令的结束位置)时,这很有用。 为此,将 '''STARTTYPE''' 设置为IMMEDIATE(IMMED)或SUPERIMMEDIATE(SIMM)。
  
== Override versus Permanent ==
+
== 覆盖与固定 ==
Axes have numerous properties such as acceleration and deceleration. These properties are normally set directly:
+
轴有许多特性,如加速度和减速度。 这些属性通常是直接设置的:
 
<pre>
 
<pre>
 
ConveyorAxis.Acc = 100
 
ConveyorAxis.Acc = 100
 
</pre>
 
</pre>
This setting is permanent. It persists until the next time the property is assigned a value. For convenience, the softMC also supports override values where the property is set as part of a command. In this case, the setting is used only for the current command.
+
此设置是永久性的。它一直持续到下一次该属性被赋值为止。为了方便起见,softMC还支持将属性设置为命令的一部分的覆盖值。在这种情况下,该设置仅用于当前命令。
  
For example:
+
例如:
 
<pre>
 
<pre>
 
ConveyorAxis.Acc = 100
 
ConveyorAxis.Acc = 100
Line 103: Line 105:
 
</pre>
 
</pre>
  
Even though the acceleration rate of the conveyor axis is specified at 100 in the first line, '''JOG''' accelerates at 10 (the override value). Motion commands that do not specify an override acceleration rate accelerate at the permanent value.
+
即使传送带轴的加速度在第一行规定为100,'''JOG'''加速度为10(覆盖值)。运动命令没有指定覆盖加速度,加速度为固定值。
  
Override values are used extensively in motion commands. The values that can be overridden are specified below as well as in the Reference Manual.
+
覆盖值在运动命令中广泛使用。 可以覆盖的值在下面以及参考手册中进行了说明。
  
== Acceleration Profile ==
+
== 加速度曲线 ==
The single-axis motion commands, '''MOVE''' and '''JOG''', produce acceleration curves that are limited by:
+
单轴运动命令'''MOVE''''''JOG'''产生加速度曲线由以下限制:
  
 
'''ACCELERATION''' ('''ACC''')
 
'''ACCELERATION''' ('''ACC''')
Line 116: Line 118:
 
'''SMOOTHFACTOR''' ('''SMOOTH''')
 
'''SMOOTHFACTOR''' ('''SMOOTH''')
  
Limit '''ACCELERATION''' and '''DECELERATION''' to less than the acceleration capabilities of the motor and load. '''SMOOTH''' helps limit or reduce mechanical wear on the machine by smoothing motion.
+
'''加速''''''减速'''限制到小于电机和负载的加速能力。SMOOTH通过平滑运动有助于限制或减少机器上的机械磨损。
  
There are two types of acceleration profiles – sinus-curve profile and trapezoidal profile. In the sinus profile the acceleration is smoothly increased while in the trapezoidal profile, the acceleration is increases in one sample. Setting the acceleration increasing smoothness is done using '''SMOOTHFACTOR'''.
+
有两种类型的加速度曲线 - 正弦曲线和梯形曲线。 在正弦曲线中,加速度平滑地增加,而在梯形轮廓中,加速度在每个样本中的增加。 使用SMOOTHFACTOR设置加速度增加平滑度。
  
== Jog ==
+
== 手动 ==
When you want to command the motor to move at a constant velocity independent of the current position, use '''JOG'''. Velocity can be negative to produce motion in the reverse direction. For example:
+
当您要使电机以与当前位置无关的恒定速度移动时,请使用'''JOG'''。速度可以为负,以产生相反方向的运动。例如:
 
<pre>
 
<pre>
 
Jog ConveyorAxis 2000
 
Jog ConveyorAxis 2000
 
</pre>
 
</pre>
produces this profile:
+
生成以下曲线:
  
 
[[Image:Axystems;UserManual-415Jog.png|caption|480px]]
 
[[Image:Axystems;UserManual-415Jog.png|caption|480px]]
  
You can optionally limit the amount of time '''JOG''' runs using '''TIMEJOG'''. '''TIMEJOG''' must be placed on the same line with '''JOG'''. '''TIMEJOG''' is specified in milliseconds and includes acceleration time. Deceleration starts when the time expires. When '''TIMEJOG''' is -1, '''JOG '''continues indefinitely. '''TIMEJOG''' defaults to ‑1. For example:
+
您可以选择使用'''TIMEJOG'''限制'''JOG'''运行的时间。'''TIMEJOG'''必须放在与JOG相同的行上。 '''TIMEJOG'''以毫秒为单位指定,包括加速时间。 时间到期后,减速开始。 当'''TIMEJOG'''-1时,'''JOG'''将无限期地继续。 '''TIMEJOG'''默认为-1。 例如:
 
<pre>
 
<pre>
 
Jog ConveyorAxis 2000 TimeJog = 1000
 
Jog ConveyorAxis 2000 TimeJog = 1000
 
</pre>
 
</pre>
produces the profile below.
+
生成以下曲线。
  
 
[[Image:Axystems;UserManual-415Jog2.png|caption]]
 
[[Image:Axystems;UserManual-415Jog2.png|caption]]
 
+
以下轴属性可以作为 '''JOG'''的一部分覆盖:
The following axis properties can be overridden as part of '''JOG''':
 
  
 
'''TIMEJOG'''
 
'''TIMEJOG'''
Line 157: Line 158:
 
'''JERKRATE'''
 
'''JERKRATE'''
  
== Stop ==
+
== 停止 ==
'''STOP '''stops motion in the motion buffer. In the command, you must specify the axis. For example:
+
'''STOP '''在运动缓存中停止运动。在命令中,必须指定轴。例如:
 
<pre>
 
<pre>
 
Stop ConveyorAxis
 
Stop ConveyorAxis
 
</pre>
 
</pre>
Normally, '''STOP''' is set to stop motion immediately at the rate of '''DECELERATIONMAX'''. However, you can modify the effects of '''STOP''' with '''STOPTYPE'''. '''STOPTYPE''' can take three values:
+
通常,'''STOP'''设置为以'''DECELERATIONMAX'''的速率立即停止运动。 但是,您可以使用'''STOPTYPE'''修改STOP的影响。 '''STOPTYPE'''可以取三个值:
  
'''''StopType'' = ''Immediate'' or ''IMMED'''''Stop axis immediately at '''DECELERATIONMAX''' rate
+
'''''StopType'' = ''Immediate'' ''IMMED''''''''DECELERATIONMAX'''立即停止轴。
  
'''''StopType'' = ''EndMotion'''''Stop axis at end of current motion command and clear buffered motion
+
'''''StopType'' = ''EndMotion'''''当前运动命令结束时停止轴清除缓存运动。
  
'''''StopType'' = ''Abort'''''Stop the current motion immediately without ability to restore the stopped movements. Only the current motion command is stopped, the commands coming after are generated.
+
'''''StopType'' = ''Abort'''''立即停止当前动作,无需恢复停止的动作。 只有当前运动命令停止,才能生成命令。
  
'''STOPTYPE''' defaults to IMMED. If '''STOPTYPE''' = ENDMOTION, the current move is completed before '''STOP''' is executed. For '''JOG''' with '''TIMEJOG '''<nowiki>= -1 (continue</nowiki> indefinitely), '''STOPTYPE''' = ENDMOTION has no meaning because '''JOG''' never ends. During '''STOP''', the current and pending movements in the buffer are stored to allow recovery of these movement using '''PROCEED'''.
+
'''STOPTYPE'''默认为IMMED。 如果'''STOPTYPE''' = ENDMOTION,则执行'''STOP'''之前,当前运动完成。 对于'''JOG''''''TIMEJOG '''<nowiki>= -1 (无限期继续)</nowiki>'''STOPTYPE''' = ENDMOTION没有意义,因为'''JOG'''永远不会结束。 在'''STOP'''期间,存储缓存中的当前和未决移动,以允许使用'''PROCEED'''恢复这些运动。
  
'''STOP''' uses the modal maximum deceleration and maximum jerk. '''STOPTYPE''' is overridden as part of a '''STOP'''.
+
'''STOP'''使用模态最大减速度和最大加加速度。 '''STOPTYPE'''作为'''STOP'''的一部分被覆盖。
  
== Proceed ==
+
== 继续 ==
When a task stops motion in axes it has attached, restarting the motion is simple. The logic is contained inside the task. However, when motion is stopped from another task, the situation is more complex. For example, the system should prevent any task from restarting the motion except the task that stopped it. To control the restarting of motion after a '''STOP''', the softMC supports '''PROCEED'''.
+
任务停止关联到轴上的运动时,重新启动运动很简单。逻辑包含在任务内,但是当另一个任务停止运动时,情况更加复杂。例如,系统应该防止任何任务重新启动运动,除了停止它的任务。 为了控制'''STOP'''后的运动重新启动,softMC支持'''PROCEED'''
  
'''PROCEED''' has two purposes: to enhance safety and to allow motion to continue along the original path. The safety enhancement is provided by not allowing motion on an axis to restart without the task that stopped the motion issuing a''' PROCEED'''. The path control is provided by '''''<nowiki><''axis''>.</nowiki>''PROCEEDTYPE'''. '''PROCEEDTYPE''' can be set in one of three modes: CONTINUE, NEXT MOTION, and CLEARMOTION. The key rules of operation are:
+
'''PROCEED'''有两个目的:提高安全性,并允许运动继续沿着原始路径。提高安全性是通过不允许没有停止发出''' PROCEED'''的动作的任务轴的运动重启。 路径控制由'''''<nowiki><''axis''>.</nowiki>''PROCEEDTYPE'''提供。 '''PROCEEDTYPE'''可以设置为以下三种模式之一:CONTINUE,NEXT MOTION和CLEARMOTION。 关键的操作规则是:
  
# When a task stops the motion of axes to which it is attached, a '''PROCEED''' is allowed, but not required.
+
# 当任务停止与其关联的轴的运动时,允许'''PROCEED''',但不是必需的。
# When '''STOP''' is issued from the terminal window and the axis being stopped is attached to a task, motion is stopped and the task is suspended upon execution of the next motion or '''DETACH'''. The task and the motion it commands can restart only after a '''PROCEED '''is issued from the terminal window. Motion is commanded from the terminal window before '''PROCEED''' is issued.
+
# 当从终端窗口发出'''STOP'''并且被停止的轴被关联到任务时,运动停止,并且在执行下一个动作或DETACH时该任务被暂停。 命令的任务和动作只有在从终端窗口发出'''PROCEED '''之后才能重新启动。 在'''PROCEED '''发出之前,从终端窗口命令运动。
# When '''STOP '''is issued from one task and the axis being stopped is attached to another task, motion is stopped and the task is suspended upon execution of the next motion or '''DETACH'''. The task and the motion it commands restart only after '''PROCEED '''is issued from the task that stopped motion. Motion ''cannot ''be commanded from the task that stopped motion.
+
# 当从一个任务发出'''STOP '''并且被停止的轴被关联到另一个任务时,运动停止,并且在执行下一个动作或'''DETACH'''时该任务被暂停。 只有在从停止运动的任务发出'''PROCEED '''之后,它所命令的任务和动作才会重新启动。 不能从停止运动的任务中指定运动。
# When '''STOP''' is issued from the terminal window for a command given from the terminal window, the motion is stopped and cannot proceed. In this case, the only available proceed type is CLEARMOTION''' '''from the terminal.
+
# 当从终端窗口发出'''STOP'''命令,从终端窗口发出命令时,运动停止,无法继续。 在这种情况下,唯一可用的继续类型是来自终端的'''CLEARMOTION'''
  
There are three ways for '''PROCEED''' to restart motion. Use '''PROCEEDTYPE''' to specify how the motion generator should proceed:
+
'''PROCEED'''有三种方式重新启动动作。使用 '''PROCEEDTYPE'''指定运动生成器应如何进行:
  
'''''ProceedType'' = ''Continue'''''This causes the motion generator to continue the motion command that was stopped followed by the pending motion in the stopped buffer.
+
'''''ProceedType'' = ''Continue'''''这将导致运动发生器继续停止的缓冲区中的挂起的运动命令。
  
'''''ProceedType'' = ''NextMotion'''''This causes the motion generator to abort the current move and go directly to the move in the stopped motion buffer.
+
'''''ProceedType'' = ''NextMotion''''这使运动发生器中止当前运动并直接进入停止的运动缓存中的运动。
  
'''''ProceedType'' = ''ClearMotion'''''This clears the motion buffer. All motion commands in the stopped motionbuffer are aborted. This is the default.
+
'''''ProceedType'' = ''ClearMotion'''''这将清除运动缓存区。 停止的运动缓存区中的所有运动命令都将中止。 这是默认值。
  
== Move ==
+
== 运动 ==
'''MOVE''' is the most common of point-to-point moves. The basic move is a three-segment motion:
+
'''MOVE'''是最常见的点到点移动。 基本运动是三段运动:
  
Accelerate Go from zero speed to VelocityCruise
+
从零速度加速到VelocityCruise
  
Cruise Continue at VelocityCruise.
+
在VelocityCruise继续巡航
  
Decelerate Go from VelocityCruise to VelocityFinal
+
从VelocityCruise减速到VelocityFinal
  
The critical part of a three-segment move is starting the deceleration at the right time so that the motor speed becomes zero (if '''VELOCITYFINAL''' = 0) just as the position command reaches the final position. For example, the following command:
+
三段运动的关键部分是在正确的时间开始减速,使电机速度变为零(如果'''VELOCITYFINAL''' = 0),就像位置指令到达最终位置一样。 例如,以下命令:
 
<pre>
 
<pre>
 
Move ConveyorAxis 100 VCruise = 2000
 
Move ConveyorAxis 100 VCruise = 2000
 
</pre>
 
</pre>
produces the next profile.
+
生成以下曲线
  
 
[[Image:Axystems;UserManual-418Move.png|caption]]
 
[[Image:Axystems;UserManual-418Move.png|caption]]
  
=== Position Final and Incremental Versus Absolute Moves ===
+
=== 最终和增量与绝对移动的位置 ===
'''POSITIONFINAL''' (the end of a move), is always specified in '''MOVE'''. The meaning of '''PFINAL''''' ''depends on '''ABSOLUTE''' ('''ABS'''). This allows point-to-point moves to be specified two ways:
+
'''POSITIONFINAL'''(移动结束)始终在'''MOVE'''中指定。 PFINAL的含义取决于ABSOLUTE(ABS)。 这允许点对点运动指定两种方式:
  
'''Absolute Moves (''Absolute = TRUE)'''''Final position is specified as actual motor position at the end of the move. The final position is equal to '''PFINAL'''.
+
最终位置被指定为运动结束时的实际电机位置。 最终的位置等于 '''PFINAL'''
  
'''Incremental (''Absolute = FALSE)'''''Final position is referenced to the start position. The final position is equal to the sum of '''PFINAL''' and '''PCMD''''' ''from the start of the move. So:
+
'''Incremental (''Absolute = FALSE)'''''最终位置参考起始位置。 最终位置等于从运动开始的PFINAL和PCMD的总和。所以:
 
<pre>
 
<pre>
 
CutAxis.Absolute = TRUE
 
CutAxis.Absolute = TRUE
Line 220: Line 221:
 
</pre>
 
</pre>
  
moves CutAxis to position 100. On the other hand:
+
将CutAxis移动到位置100.另一方面:
 
<pre>
 
<pre>
 
CutAxis.Absolute = FALSE
 
CutAxis.Absolute = FALSE
Line 226: Line 227:
 
</pre>
 
</pre>
  
moves CutAxis a distance of 100 units from the current position.
+
将CutAxis从当前位置移动100个单位。
  
'''ABSOLUTE''' defaults to FALSE. You can change '''ABSOLUTE''' at any time, although the effect does not take place until you issue the next '''MOVE'''.
+
'''ABSOLUTE'''默认为FALSE。 您可以随时更改'''ABSOLUTE''',虽然效果不会发生,直到您发出下一个'''MOVE'''
  
=== Settling Time ===
+
=== 稳定时间 ===
The softMC actively watches to see if axes are settled into position. In almost all applications, the motor position feedback is slightly delayed from the position command. After a move is complete, some time is required for the actual position to settle out to the commanded position; this time is called settling time.
+
softMC主动查看轴是否稳定到位置。 在几乎所有应用中,电机位置反馈从位置指令稍微延迟。运动完成后,实际位置需要一段时间才能到达指定位置;这个时间叫做稳定时间。
  
Consider the point-to-point move shown below. The '''VELOCITYCOMMAND''' ('''VCMD''') is shown in solid line and '''VELOCITYFEEDBACK''' ('''VFB''') is shown in thin line. The area between the two curves is the following error. As you can see, it takes a small amount of time at the end of the move for '''VFB''' to settle out to zero. The actual amount of time required for this varies from one system to another. Higher bandwidth systems have shorter settling times, but all systems need some time to settle. Typical times range from a few milliseconds to tens of milliseconds.
+
考虑如下所示的点对点动作。 '''VELOCITYCOMMAND''' ('''VCMD''')以实线显示,'''VELOCITYFEEDBACK''' ('''VFB''')以细线显示。两条曲线之间的区域是跟随误差。正如你所看到的,在 '''VFB'''结束时需要很少的时间来解决这个问题。 实际所需时间因系统而异。更高的带宽系统具有较短的建立时间,但是所有的系统都需要一些时间来解决。典型的时间范围从几毫秒到几十毫秒。
  
 
[[Image:Axystems;UserManual-4182SettlingTime.png|caption]]
 
[[Image:Axystems;UserManual-4182SettlingTime.png|caption]]
  
Ideally, settling time allows the motor to move to approach zero position error. However, you must allow for the condition where the position error never quite reaches zero. On the softMC , you specify how low you consider to be low enough with '''''<nowiki><''axis''>.</nowiki>''POSITIONERRORSETTLE''' ('''''<nowiki><''axis''>.</nowiki>''PESETTLE'''):
+
理想情况下,稳定时间允许电机移动到逼近零位置误差。 但是,您必须允许位置误差从不达到零的条件。 在softMC上,您可以使用<''axis''>.POSITIONERRORSETTLE (<''axis''>.PESETTLE)指定低到足够低:
 
<pre>
 
<pre>
 
CutAxis.PESettle = 0.01
 
CutAxis.PESettle = 0.01
 
</pre>
 
</pre>
After the motion generator has completed a move which ends with zero speed, it actively monitors the position error on the axis to see when it is between ±'''PESETTLE'''.
+
在运动发生器完成以零速度结束的运动之后,它主动监视轴上的位置误差,以查看它是否在±'''PESETTLE'''之间。
  
In some applications, you must ensure that the position error remains below '''PESETTLE''' for a specified period of time before the axis is considered settled. The softMC allows you to specify this time period with '''''<nowiki><''axis''></nowiki>'''.'''''TIMESETTLE '''(given in milliseconds). '''TIMESETTLEMAX''' sets the maximum time allowed for the axis to settle. If the position error exceeds '''PESETTLE''' during this time, the timer is reset. If position error is within the '''PESETTLE''' range for the time specified by '''TSETTLE''', the '''''<nowiki><''axis''></nowiki>'''''.'''ISSETTLED''' flag is TRUE (1). Otherwise, it is FALSE(0).
+
在某些应用中,必须确保位置误差保持在'''PESETTLE'''以下一段指定的时间之后,轴才能被认定为轴。 softMC允许您使用'''''<nowiki><''axis''></nowiki>'''.'''''TIMESETTLE '''(以毫秒为单位)指定此时间段。 '''TIMESETTLEMAX'''设置允许轴达到最大时间。 在此期间,如果位置误差超过'''TSETTLE''',则定时器被复位。 如果位置错误在'''TSETTLE'''指定的时间内在'''PESETTLE'''范围内,则'''''<nowiki><''axis''></nowiki>'''''.'''ISSETTLED'''标志为TRUE(1)。 否则为FALSE(0)。
  
=== Point-to-Point Moves ===
+
=== 点到点的运动 ===
When the motion buffer is empty, point-to-point moves begin immediately. If you need to delay the start of the next motion command, you have two options: use '''DELAY''' to insert a fixed delay time, or use '''STARTTYPE''' to delay depending on a condition.
+
当运动缓存区为空时,点对点运动立即开始。 如果需要延迟下一个运动命令的开始,您有两个选项:使用 '''DELAY'''插入固定的延迟时间,或根据条件使用'''STARTTYPE'''来延迟。
  
Use '''DELAY''' to force the motion generator to wait a fixed period of time between moves. For example:
+
使用'''DELAY''' 强制运动发生器在运动之间等待一段固定的时间。例如:
 
<pre>
 
<pre>
 
Move MainAxis 100
 
Move MainAxis 100
Line 254: Line 255:
 
Move MainAxis 200
 
Move MainAxis 200
 
</pre>
 
</pre>
 +
在两个运动之间强制延迟1秒。 '''DELAY'''的单位为毫秒,必须大于零。'''DELAY'''不会延迟执行您的程序。 如果要延迟执行程序,请使用 '''SLEEP'''。
  
A 1 second delay is forced between the two moves. '''DELAY''' has units of milliseconds and must be greater than zero. '''DELAY''' does not delay the execution of your program. If you want to delay your program, use '''SLEEP'''.
+
如果要延迟新运动的开始,直到上一个运动满足条件,请使用'''STARTTYPE''',有四个选择:
 
 
If you want to delay the start of a new move until a condition has been met by the previous move, use '''STARTTYPE'''. There are four choices:
 
  
'''''StartType'' = ''GeneratorCompleted'' (GCom)'''When STARTTYPE = GCOM, the new move starts as soon as the motion generator has completed the motion for the current move. GENERATORCOMPLETED is constant equal to 3. This command incurs a system delay of 2 SERCOS cycle times.
+
'''''StartType'' = ''GeneratorCompleted'' (GCom)'''当STARTTYPE = GCOM时,一旦运动生成器完成当前的运动,新的运动就会开始。 GENERATORCOMPLETED等于3.该命令引起系统延迟2个SERCOS周期时间。
  
'''''StartType'' = ''InPosition'' (''InPos)'''''When STARTTYPE = INPOS, the motion generator delays executing the new motion command until the current move has completed and the position error is settled to near zero. '''INPOSITION''' is constant equal to 2. This command is not subject to additional system delays, but any delay associated with the command is due to user-specified parameters for settling time.
+
'''''StartType'' = ''InPosition'' (''InPos)'''''当STARTTYPE = INPOS时,运动发生器延迟执行新的运动命令,直到当前的运动完成并且位置误差被设定为接近零。'''INPOSITION'''等于2.该命令不受额外的系统延迟,但与命令相关的任何延迟都是由于用户指定的用于运动稳定时间的参数。
  
'''''StartType'' = ''Immediate (Immed)'''''When STARTTYPE = IMMED, the new move overwrites the current move. Use this when making realtime changes to the profile such as changing the end-point of the current move without bringing the system to rest. For example, registration applications frequently use this function. IMMEDIATE is constant equal to 1. This command incurs a system delay of 5 SERCOS cycle times each execution. This time is required to blend the previous move with the new move.
+
'''''StartType'' = ''Immediate (Immed)'''''当STARTTYPE = IMMED时,新的移动将覆盖当前的移动。 在对配置文件进行实时更改时使用此功能,例如更改当前移动的终点,而不会使系统停止。 例如,配准应用程序经常使用此功能。 IMMEDIATE恒定等于1.该命令每次执行引起系统延迟5 SERCOS周期。 这次需要将上一个运动与新的运动相结合。
  
'''''StartType'' = ''SuperImmediate (Simm)'''''SUPERIMMEDIATE is a variation of IMMEDIATE. The main difference is that SUPERIMMEDIATE eliminates the 5 SERCOS cycles delay by doing pre-calculation online, rather than offline in the motion manager. SUPERIMMEDIATE'' ''is constant equal to 5. The numbers of SUPERIMMEDIATE changes at a time in the system is limited by the load of the system and the type of move. SUPERIMMEDIATE is best used for short, high-speed movements.
+
'''''StartType'' = ''SuperImmediate (Simm)'''''SUPERIMMEDIATE是IMMEDIATE的变体。主要区别在于SUPERIMMEDIATE通过在线进行预先计算来消除5个SERCOS周期的延迟,而不是在运动管理器中离线处理。 SUPERIMMEDIATE恒定等于5.系统中一次SUPERIMMEDIATE的数量受系统负载和运动类型的限制。
 +
SUPERIMMEDIATE最适合短,高速运动。
  
When '''chaining multiple moves''' which all end at zero speed, you normally want STARTTYPE = INPOS. This forces the motion generator to wait for the position to settle out before starting the next move. If the position profile starts too soon on the second move, the motor may never come to rest. For example, the next figure shows this problem when '''STARTTYPE''' is incorrectly set to GCOM rather than INPOS.
+
'''链接多个运动'''都以零速度结束时,通常需要STARTTYPE = INPOS。 这迫使运动发生器在开始下一个运动之前等待位置稳定。 如果位置曲线在第二次运动时启动太早,则电机可能永远不会停下来。 例如,下图显示了当'''STARTTYPE'''未正确设置为GCOM而不是INPOS时出现此问题。
  
 
[[Image:Axsystems;UserManual-7-PointToPointMoves.png|caption]]
 
[[Image:Axsystems;UserManual-7-PointToPointMoves.png|caption]]
  
As you can see, the motor speed never gets to zero because the second move takes the velocity command positive before the velocity feedback settles to zero.
+
正如你所看到的那样,电机速度不会变为零,因为在速度反馈稳定在零之前,第二个运动速度指令为正。通常,期望的性能是在第二次运动开始之前速度达到零。 为此,控制器需要等待轴位置误差在开始第二次运动之前稳定。 这通过将 '''STARTTYPE'''设置为INPOS来完成。 如下图所示。
 
 
Normally, the desired performance is for the velocity to reach zero before the second move starts. To do this, the controller needs to wait for the axis position error to be settled before starting the second move. This is done by setting '''STARTTYPE''' to INPOS. This is shown in the following figure.
 
  
 
[[Image:Axsystems;UserManual-8-PointToPointMoves.png|caption]]
 
[[Image:Axsystems;UserManual-8-PointToPointMoves.png|caption]]
  
As you can see, the motor comes to rest because the softMC waits for the following error to be small enough before proceeding to the next command.
+
如您所见,电机会停止,因为在继续下一个命令之前,softMC等待的跟随误差足够小。
 
<pre>
 
<pre>
 
MainAxis.PESettle = 0.01
 
MainAxis.PESettle = 0.01
Line 284: Line 283:
 
</pre>
 
</pre>
  
Normally, the ending speed of '''MOVE''' defaults to zero. However, you can specify an end speed other than zero ('''Non-Zero End Moves)'''. To do this, use '''''<nowiki><''axis''>.</nowiki>''VELOCITYFINAL'''. '''VELOCITYFINAL''' must be specified on the same line as '''MOVE'''. For example,
+
通常,'''MOVE'''的结束速度默认为零。 但是,您可以指定非零结束速度('''Non-Zero End Moves''')。 为此,请使用'''''<nowiki><''axis''>.</nowiki>''VELOCITYFINAL'''。 必须在与MOVE相同的行上指定'''VELOCITYFINAL'''。 例如,
 
<pre>
 
<pre>
 
A1.VelocityCruise = 2000
 
A1.VelocityCruise = 2000
Line 295: Line 294:
 
</pre>
 
</pre>
  
both produce the next profile.
+
同样生成以下曲线。
  
 
[[Image:Axsystems;UserManual-9-PointToPointMoves.png|caption]]
 
[[Image:Axsystems;UserManual-9-PointToPointMoves.png|caption]]
  
You seldom want to use a single move with a non-zero final velocity because motion continues until the specified ending position and abruptly begins decelerating to zero. The final position is not specified. Normally, moves with non-zero final velocities are used to build multi-step profiles.
+
您很少想要使用非零最终速度的单次运动,因为运动持续到指定的结束位置并突然开始减速为零。 最终位置未指定。 通常,使用非零最终速度的运动来构建多步骤曲线。
  
Combining non-zero end-point moves in the motion buffer produces '''multi-step moves'''. For example:
+
在运动缓存区中组合非零终点运动可产生多步运动。 例如:
 
<pre>
 
<pre>
 
Program  
 
Program  
Line 326: Line 325:
 
</pre>
 
</pre>
  
produces the following profile.
+
生成以下曲线。
  
 
[[Image:Axsystems;UserManual-10-PointToPointMoves.png|caption]]
 
[[Image:Axsystems;UserManual-10-PointToPointMoves.png|caption]]
  
In the above example, A1.STARTTYPE = GCOM. The second move begins when the first move is generated. You must use STARTTYPE = GCOM when chaining a non-zero end-point move to another move. You cannot use STARTTYPE = IMMED or SIMM because the new move immediately overwrites the old move. You cannot use STARTTYPE = INPOS because you want the second part of the profile to begin immediately after the first. The delay from waiting for INPOS adds error if the second move is incremental. For any move type, the move may be delayed indefinitely because moving motors never come in position unless the system is specifically tuned to do that.
+
在上面的例子中,A1.STARTTYPE = GCOM。当第一个运动生成时,第二个运动开始。当链接非零终点运动到另一个运动时,必须使用STARTTYPE = GCOM。 您不能使用STARTTYPE = IMMED或SIMM,因为新的运动会立即覆旧的运动。 您不能使用STARTTYPE = INPOS,因为您希望运动曲线的第二部分在第一部分完成后立即开始。如果第二次运动是增量的,等待INPOS的延迟会增加错误。 对于任何运动类型,运动可能无限期地延迟,因为运动的电机永远不会到位置,除非系统被专门调整为这样做。
  
You can combine non-zero end point moves to produce profiles with as many steps as you need. However, there are a few restrictions:
+
您可以组合非零终点运动,以根据需要执行多个步骤来生成运动曲线。 但是,有一些限制::
  
# <nowiki>STARTTYPE for all non-zero end-point moves (VELOCITYFINAL<>0) must be GCOM.</nowiki>
+
# <nowiki>STARTTYPE为非零终点运动时(VELOCITYFINAL<>0)必须为GCOM。</nowiki>
# '''VELOCITYCRUISE''' and '''VELOCITYFINAL''' are always positive. The direction is set by target position.
+
# '''VELOCITYCRUISE''''''VELOCITYFINAL'''总为正值。方向由目标位置设置。
# '''PFINAL''' of the succeeding move must be far enough in front of '''PFINAL''' of the current move that the profile is possible with the acceleration limits. The generated profile always reaches the target position. If the acceleration and smooth limitations prevent attaining the required final velocity, the motion is terminated with the final velocity as close as possible to the required value.
+
# 在当前运动的'''PFINAL''' 之前,后续运动的'''PFINAL'''必须足够远,以便加速度限制可以实现曲线。生成的曲线总是到达目标位置。如果加速度和smooth限制阻止达到所需的最终速度,则以最终速度尽可能接近所需值终止运动。
  
You can change the end position or velocity of a move that is in progress. You do this by setting STARTTYPE = IMMED and issuing the second move. For example, if you want to issue a move, wait a few seconds, change the end position without changing the velocity. For this, you would write:
+
您可以更改正在进行的运动的结束位置或速度。 您可以通过设置STARTTYPE = IMMED并发出第二个运动来执行此操作。例如,如果要发出运动,请等待几秒钟,更改结束位置,而不更改速度。为此,你可以写成:
 
<pre>
 
<pre>
 
CutAxis.StartType = Immed
 
CutAxis.StartType = Immed
Line 347: Line 346:
 
</pre>
 
</pre>
  
This generates the profile shown below.
+
生成的曲线如下
  
 
[[Image:Axsystems;UserManual-11-PointToPointMoves.png|caption]]
 
[[Image:Axsystems;UserManual-11-PointToPointMoves.png|caption]]
  
As a second example, if you wanted to change the cruise velocity without changing the end-position, you would write:
+
作为第二个例子,如果你想改变巡航速度而不改变最终位置,你可以写为:
 
<pre>
 
<pre>
 
CutAxis.StartType = IMMED
 
CutAxis.StartType = IMMED
Line 359: Line 358:
 
</pre>
 
</pre>
  
You can change the final position, cruise velocity, and final velocity of any move that is executing. However, you must observe a few rules:
+
您可以更改正在执行的任何运动的最终位置,巡航速度和最终速度。 但是,您必须遵守以下规则:
  
# STARTTYPE must be IMMED or SIMM
+
# STARTTYPE必须为IMMED或SIMM
# Direction is set according to the target position. For Jog, according to the sign of the velocity.
+
# 方向根据目标位置设定。对于手动操作,根据速度的标志。
# New and old VELOCITYCRUISE and VELOCITYFINAL must be positive in case of move command.
+
# 运动命令中新的和旧的VELOCITYCRUISE和VELOCITYFINAL必须为正。
# If the succeeding move changes PFINAL or VFINAL, it must remain possible to create the profile with the axis acceleration limits
+
# 如果后续运动更改了PFINAL或VFINAL,则必须仍然可以使用轴加速度限制创建运动曲线
  
=== Synchronizing Multiple Axes ===
+
=== 多轴同步 ===
The softMC is abile to synchronize many single-axis '''MOVE'''s so they all start simultaneously. This is useful when you have multiple axes with moves that are largely independent, but must start at the same time. It is also useful for coordinating more than three axes. Group motion, which is covered later, provides tighter coordination, but with one movement profile.
+
softMC可以同步许多单轴'''MOVE''',以便它们都同时启动。当您有多个轴具有大部分独立的运动,但必须同时启动时,这很有用。 它也可用于三个轴以上的协作。 组运动(稍后介绍)提供更紧密的协调,但有一个运动曲线。
  
Synchronization is controlled with STARTTYPE = SYNCSTART (SYNC). The feature works by allowing you to load the motion generator with a motion command, but delaying the generation of motion until a SYNCSTART command is issued. For example, the following sequence:
+
同步由STARTTYPE = SYNCSTART(SYNC)控制。 该功能允许您使用运动命令加载运动生成器,但生成延迟运动,直到发出SYNCSTART命令。 例如,以下顺序:
 
<pre>
 
<pre>
 
Move MainAxis 300 VCruise = 1200 StartType = Sync
 
Move MainAxis 300 VCruise = 1200 StartType = Sync
Line 379: Line 378:
 
SyncStart MainAxis AuxAxis
 
SyncStart MainAxis AuxAxis
 
</pre>
 
</pre>
generates the following profiles.
+
生成以下曲线
  
 
[[Image:Axsystems;UserManual-12-SynchronizingMultipleAxes.png|caption]]
 
[[Image:Axsystems;UserManual-12-SynchronizingMultipleAxes.png|caption]]
  
You can synchronize as many axes as you want, including simulated axes. Since each SYNCSTART specifies the axes it synchronizes, you can synchronize multiple sets of axes independently.
+
您可以根据需要同步多个轴,包括模拟轴。 由于每个SYNCSTART指定其同步的轴,因此可以独立同步多组轴。
  
This command incurs a minimum system delay of 2 SERCOS cycle times, but the delay may be greater, depending on the number of moves synchronized together and the total load of the system.
+
该命令引起2个SERCOS周期时间的最小系统延迟,但是延迟可能更大,这取决于同步在一起的运动数量和系统的总负载。
  
If you have loaded a synchronized move into the motion generator and need to delete it, use '''SYNCCLEAR'''. For example, if you entered the following command before issuing '''SYNCSTART''':
+
如果您已将同步运动加载到运动生成器中并需要将其删除,请使用'''SYNCCLEAR'''。 例如,如果在发出'''SYNCCLEAR'''之前输入了以下命令:
 
<pre>
 
<pre>
 
SyncClear MainAxis
 
SyncClear MainAxis
 
</pre>
 
</pre>
the MainAxis move is deleted. This only affects subsequent moves. You can only use '''SYNCCLEAR''' to clear pending moves. '''SYNCCLEAR''' has no effect once the move is executing. Stopping the axis in this case is performed as for a non-synchronized move.
+
MainAxis运动被删除。 这只会影响后续的运动。 您只能使用'''SYNCCLEAR'''清除待处理的运动。 一旦运动执行,'''SYNCCLEAR'''就没有任何效果。 在这种情况下停止轴就像非同步运动那样执行。
  
You can override the following axis properties as part of a '''MOVE''':
+
您可以重写以下轴属性作为“MOVE”'的一部分:
  
 
'''ABSOLUTE'''
 
'''ABSOLUTE'''
Line 417: Line 416:
 
'''JERKRATE'''
 
'''JERKRATE'''
  
== Velocity Override ==
+
== 速度覆盖 ==
The softMC can speed up or slow down all motion commands. This can be applied to the entire machine at once, or to individual axes, independently. This capability is used extensively in machine development as it enables you to adjust the entire machine speed in a single command. Since the command can be issued from the terminal, you can observe the operation of the machine at a variety of speeds without modifying your program.
+
softMC可以加速或减慢所有运动命令。 这可以单独应用于整个机器,也可以单独应用于各个轴。 该功能在机器开发中广泛使用,因为它可以在单个命令中调整整个机器速度。 由于可以从终端发出命令,您可以在不修改程序的情况下以各种速度观察机器的操作。
  
All axes on an softMC are controlled with '''SYSTEM.VELOCITYOVERRIDE''' ('''SYSTEM.VORD'''). For example:
+
softMC上的所有轴都由'''SYSTEM.VELOCITYOVERRIDE''' ('''SYSTEM.VORD''')控制。例如:
 
<pre>
 
<pre>
 
System.VelocityOverride = 25
 
System.VelocityOverride = 25
 
</pre>
 
</pre>
immediately reduces the velocity commands of all currently executing '''MOVE'''s and '''JOG'''s and any subsequent commands to 25% of the current values. Since the velocities are controlled by '''VORD''', the acceleration rates of all axes are proportionally adjusted. The final positions of '''MOVE'''s are not affected.
+
立即将所有当前正在执行的 '''MOVE''''''JOG'''以及任何后续命令的速度命令降低到当前值的25%。 由于速度由'''VORD'''控制,所以所有轴的加速度都按比例调整。 '''MOVE'''的最终位置不受影响。
  
If you want to override the velocity of a single axis rather than the entire machine, you can use '''''<nowiki><''axis''></nowiki>''.VORD.VELOCITYOVERRIDE''' ('''''<nowiki><''axis''></nowiki>''.VORD'''). It is used in the same way as '''SYSTEM.VORD''' except it applies only to one axis. '''''<nowiki><''axis''></nowiki>''.VORD''' can be applied to as many or as few axes as desired and the amount of override specified for one axis is independent of the others. If you use '''SYSTEM.VORD''' and '''''<nowiki><''axis''></nowiki>''.VORD''' simultaneously, the axis speed is reduced by the product of both override properties as shown below:
+
如果要覆盖单个轴而不是整个机器的速度,可以使
 +
 
 +
'''''<nowiki><''axis''></nowiki>''.VORD.VELOCITYOVERRIDE''' ('''''<nowiki><''axis''></nowiki>''.VORD''')。它以与SYSTEM.VORD相同的方式使用,但它仅适用于一个轴。'''''<nowiki><''axis''></nowiki>''.VORD'''可以根据需要应用于多个或少数轴,并且为一个轴指定的倍率不依赖于其他轴。如果您同时使用 '''SYSTEM.VORD''''''''<nowiki><''axis''></nowiki>''.VORD''' ,则轴速度会被减小到两个覆盖属性的乘积,如下所示:
 
<pre>
 
<pre>
System.VOrd = 66 ‘Reduce entire system to 2/3 speed
+
System.VOrd = 66 ‘将整个系统降低到2/3速度
  
MainAxis.VOrd = 50 ‘Reduce MainAxis to 1/3 speed
+
MainAxis.VOrd = 50 ‘将MainAxis减少1/3的速度
 
</pre>
 
</pre>
In this example, the entire system is reduced to 66% and the MainAxis is reduced to 50% of the system speed which is 33%. There is a delay of 5 samples until the velocity start to change that to insure a smoothness velocity exchange.
+
在这个例子中,整个系统减少到66%,而MainAxis的系统速度减少50%,则降低到33%。 直到速度开始改变有5个周期的延迟,以确保速度平滑改变。
  
= Motion Examples =
+
= 运动示例 =
This section provides a few examples that apply the motion control techniques discussed in this chapter to common machine functions.
+
本节提供了应用于常见机器功能的运动控制技术几个示例。
  
 
<!-- == Position Capture ==
 
<!-- == Position Capture ==
Line 474: Line 475:
  
  
== Homing ==
+
== 回零 ==
Most machine-axes need to establish a soft home reference position. This user-specified homing program is generally run with the power-up cycle of the machine or with a manual-mode. The soft home reference position (0000….) is established by a homing program for the hard-home plus any marker-pulse (for the integrity between the controller and axis-mechanics) with '''HOMEOFFSET''' (the distance from the hard home).
+
大多数机器轴需要建立一个软件的回零参考位置。用户指定的回零程序通常在机器的上电周期或手动模式下运行。 软件回零参考位置(0000 ...)由使用'''HOMEOFFSET'''(与硬件零位置距离)的任何标记脉冲(用于控制器和轴线力学之间的完整性的回零程序建立)。
  
The hard-home position on a direct drive axis is usually assigned by the once-per-revolution marker pulse of the encoder (incremental, sine encoder or ENDAT encoder) or the zero-crossing position of a resolver. However, for the machine-axis with a gear-ratio (geared, belted, or ball screw, etc.), a more complicated procedure is required for the relationship (integrity) between the controller and axis-mechanics of the homing program. In these cases, it is common to place a micro-switch or proximity-switch on the axis for the indication of the hard-home-reference position.
+
驱动器直接驱动的轴上的硬件零位置通常由编码器(增量,正弦编码器或ENDAT编码器)的每转一次的标记脉冲或旋转变压器的过零位置分配。 然而,对于具有齿轮比(齿轮,皮带或滚珠丝杠等)的机床,控制器与引导程序的轴向力学之间的关系(完整性)需要更复杂的过程。 在这些情况下,通常在轴上放置一个微动开关或接近开关,用于指示硬件零位的参考位置。
  
{{Note|This home-position switch is placed on one end of the axis (inside the mechanical end of the travel-limits of the axis) with the switch tripping mechanism designed such that switch-circuit is closed on one side of the hard home-position and open on the other side of the hard home-position.}}
+
{{Note|零点位置开关放置在轴的一端(轴的行程限制在内部),开关跳闸机构设计成使得开关电路在硬件零点起始位置的一侧闭合,并且在另一边的硬件零点位置打开。}}
  
The switch-circuit (high/low) provides the controller-input information for the direction of the home position.) Other machine axes may use absolute-position-device designs, so the integrity between the controller and axis mechanics is established automatically on the power-up of the machine . The machine position-integrity is established similarly to an axis that only rotates 360°.
+
开关电路(高/低)为零位置方向提供控制器输入信息。其他机床轴可以使用绝对位置设备设计,因此控制器与轴力学之间的完整性将自动建立在机器上电期间。机器位置完整性的建立与仅旋转360°的轴类似。
  
The homing process itself is done by the drive and the softMC is just initiating it. All home parameters and commands are defined by the drive command set and can differ depending on the used motion bus. For EtherCAT please see also:
+
回零过程本身由驱动器完成,softMC只是初始化。 所有的回零参数和命令由驱动命令集定义,并且可以根据所使用的运动总线而有所不同。对于EtherCAT,请参考:
  
 
* [[EtherCAT:EC SLAVE HOME|EC SLAVE HOME]]
 
* [[EtherCAT:EC SLAVE HOME|EC SLAVE HOME]]
Line 556: Line 557:
 
-->
 
-->
  
== Registration ==
+
== 配准 ==
Registration applications are those that start motion and then modify the profile, based on a subsequent event. These applications generally involve discrete product processing, such as are common in the packaging, printing and converting industries. The event is usually generated by sensing a position on the product being processed (usually a mark is printed on the product and detected by an optical sensor). The mark is normally referred to as a registration mark.
+
配准应用是基于后续事件开始运动然后修改运动曲线。 这些应用通常涉及离散产品处理,例如在包装,印刷和转换行业中常见的。该事件通常通过测量待处理产品上的位置(通常是印在产品上的标记并由光学传感器检测)来产生。 标记通常被称为配准标记。
  
A common registration application is cutting a product package, such as a bag or label from a web (reel). The web is printed with many copies of the product package. The controller begins to unwind the product package from the web. During this motion, the controller waits for a registration mark to be detected. After the mark is detected, the profile is modified, based on the position at which the mark was detected. Commonly, the profile comes to rest a fixed distance after the mark position where the package can be cut. There are numerous variations of this type of application. The key element is that the end position of the move cannot be calculated until after the move starts. This requires that the profile be started and then modified on-the-fly.
+
常见的配准应用是从网(卷)切割产品包装,例如袋子或标签 网格上印有产品包装的许多副本。 控制器开始从网格展开产品包装。 在此运动期间,控制器等待检测到注册标记。 检测到标记后,基于检测到标记的位置修改运动曲线。 通常,轮廓在可以切割包装的标记位置之后静止一段距离。 这种类型的应用有许多变化。 关键因素是运动开始后才能计算运动的结束位置。这要求启动运动曲线,然后即时修改。
  
The softMC combines the ability to change the position end points on-the-fly and the ability to command the drive to capture a position. Registration is similar to homing except that in homing you go back to the mark, but in registration you go forward to a fixed distance after the mark. The following example shows a typical registration example:
+
softMC结合了即时更改位置终点的能力和命令驱动器捕获位置的能力。 配准类似于回零,但在回零时回到标记零位,而在配准时是前进到标记后的一个固定位置。 以下示例显示了典型的配准示例:
 
<pre>
 
<pre>
 
Program
 
Program
Line 568: Line 569:
 
End Program
 
End Program
 
</pre>
 
</pre>
 
+
此示例生成下一个运动曲线。
This example generates the next profile.
 
  
 
[[Image:Axsystems;UserManual-13-Registration.png|caption]]
 
[[Image:Axsystems;UserManual-13-Registration.png|caption]]
  
  
The move starts and the registration mark is detected about 40% of the way to the end. After a small amount of processing time, the second move is loaded over the current move. The axis comes to rest at a fixed offset after the registration mark.
+
运动开始,配准标记被检测到最后的40%。 经过少量的处理时间后,第二个运动将在当前运动中加载。 轴在配准标记后以固定的偏移量静止。
  
The more accurately the position is determined, the more accurate the cut is with respect to the registration mark. If the process is feeding material at 10 ft/s, and the capture accuracy is ±3 microseconds, the mark is:
+
确定位置越准确,切割对准标记越准确。 如果加工是以10 ft / s进给材料,并且捕获精度为±3微秒,则标记为:
  
 
10 (ft/sec) * 3 µs = 3.225e-5 ft or about 0.0004 in.
 
10 (ft/sec) * 3 µs = 3.225e-5 ft or about 0.0004 in.
  
The original line was set to go much farther than the actual resultant move. This technique is commonly used because you can monitor the end position and, if the move is completed before the registration mark is detected, it indicates the mark was missed.
+
原来的曲线比实际的走势更远。 通常使用这种技术,因为您可以监视结束位置,如果在检测到配准标记之前完成运动,则表示标记已被丢失。
  
== Gating ==
+
== 门控 ==
Many applications require motion to be gated to an external switch. In these cases, you need to start a move after the gating input transitions with as little delay as possible. One way you can accomplish this on the softMC is by starting the move with events containing synchronized motion. For example:
+
许多应用需要运动来选择外部开关。 在这些情况下,您需要在门控输入转换尽可能少的延迟之后开始运动。 您可以在softMC上完成此操作的一种方法是启动包含同步运动的事件。例如:
 
<pre>
 
<pre>
 
Program
 
Program
 
Attach MainAxis
 
Attach MainAxis
 
Move MainAxis 100 Absolute=FALSE StartType<nowiki>=SYNC</nowiki>
 
Move MainAxis 100 Absolute=FALSE StartType<nowiki>=SYNC</nowiki>
While System.Din.1=False; ‘Wait for input to change
+
While System.Din.1=False; ‘等待输入改变
 
  Sleep 1
 
  Sleep 1
 
End While
 
End While
SyncStart MainAxis ‘Start the axis up by disable
+
SyncStart MainAxis ‘通过禁用启动轴
 
End Program
 
End Program
 
</pre>
 
</pre>
  
This program moves MainAxis 100 units when DIN.1 transitions high. Motion on MainAxis starts as soon after the transition of DIN.1 as possible. '''OnEvent '''can also be used.
+
当DIN.1转换为高电平时,该程序运动MainAxis 100个单元。MainAxis上的运动尽可能在DIN.1过渡之后开始,也可以使用'''OnEvent '''
  
== Clamping ==
+
== 装夹 ==
Clamping applications typically process discrete parts but the end point of a move is unknown. Clamping is often applied when the length of the part is not accurately known or when the thickness of material is unknown. In clamping, the controller moves an axis at low torque until the end of the material is detected. Then the torque level is increased, either to measure the part more accurately or to hold the part for another axis to process.
+
装夹应用通常处理离散零件,但运动的终点是未知的。 当部件的长度不准确或材料的厚度未知时,通常应用装夹。 在装夹时,控制器以低扭矩运动轴,直到检测到材料的末端。 然后,扭矩增加,要么更精确地测量零件,要么保持零件以供另一轴处理。
  
The softMC allows you to change torque limits on the drive and uses events to monitor position error to sense the end of the piece (below).
+
softMC允许您更改驱动器上的转矩限制,并使用事件来监视位置误差,以检测部件的末端(下图)
 
<pre>
 
<pre>
 
Program
 
Program
Line 622: Line 622:
 
</pre>
 
</pre>
  
This program works by starting a slow move with low torque. The move continues until position error is greater than 0.25 units. When the axis runs into a stop, position error accumulates because the profile continues. You must be careful to set the threshold of the event greater than the position error of normal operation. The threshold of the event must also be smaller''' '''than the drive's maximum following error to avoid drive error before the event is triggered. Disable '''OnEvent''' during the acceleration of the move to avoid nuisance PartFound events.
+
该程序通过以低扭矩启动缓慢运动来工作。 运动持续到位置误差大于0.25个单位。 当轴进入停止状态时,由于运动曲线继续而导致位置错误累积。 您必须小心设置事件的阈值大于正常操作的位置误差。 事件的阈值也必须小于驱动器的最大跟随误差,以避免事件触发之前的驱动器错误。 在运动加速期间禁用'''OnEvent'''以避免造成PartFound事件的干扰。
 +
 
  
 
[[Category:Motion Control|Single Axis Motion]]
 
[[Category:Motion Control|Single Axis Motion]]

Latest revision as of 09:03, 8 August 2017

TOP2.png
语言: English  • 中文(简体)‎
IMPORTANT.svgIMPORTANT
This entry is outdated and requires revision.

简介

softMC主要支持三种类型的运动:

  • 单轴运动
  • 主从轴运动
  • 多轴运动

运动发生器控制softMC中的所有运动。该软件设备从softMC任务接收命令,并在每个伺服周期为驱动器生成位置和速度命令。 两个主要的单轴运动命令是JOGMOVE。softMC还提供了同步运动命令的执行以及即时更改运动配置文件的方法。此外,softMC提供了启动和停止运动的多种模式。

由于运动总线通信,所有的运动命令都会受到固有的系统延迟。发送命令需要一个周期时间。需要第二个周期时间来接收位置反馈。 因此,最小系统延迟至少为2个运动总线周期(对于EtherCAT,通常为4个周期)。 如果在驱动器中启用了微插补,则会有1个周期时间的延迟。另外,不确定的延迟可能来自伺服系统依赖于机械系统的驱动调谐和动力学。

运动发生器

softMC中所有运动的基础是运动发生器。当您发出运动命令(如JOGMOVE)到一个轴上时,运动生成器是在软件中创建的。 该运动发生器控制在运动命令中指定的轴的位置和速度命令。每隔一定时间(通常为2或4 ms),运动发生器更新这些命令。 在运动结束时,运动发生器被终止。 下图显示了运动发生器的正常运行。

caption

运动条件

在softMC生成运动之前,必须满足几个条件:

控制任务必须关联到受控轴上。

控制轴必须使能。

系统和轴运动标志开启。

在任务可以向轴发送运动命令之前,轴必须关联到任务上。传动装置也需要关联到做任务上。这可以防止其他任务尝试控制轴。要关联轴,在控制任务使用 ATTACH 命令:

Program
Attach A1

如果轴上没有关联其他任务,则立即关联轴。 如果另一个任务已经关联了轴,则会产生错误。可以使用TRY CATCH 来等待轴未关联。

只要任务有轴关联,任何其他任务都不可以控制该轴。当关联轴的任务完成时,它应该与轴分离:

Detach A1

如果在该轴的运动轨迹正在进行时发出DETACH,则DETACH将延迟执行直到该运动完成。 如果任务以某些轴为依据结束,则所有轴都将自动分离。

如果从终端窗口发出运动命令,则要关联轴的要求是一个例外。 在这种情况下,假设轴未关联任何其他任务,轴将在运动命令的持续时间内自动关联到终端窗口。

通过在终端窗口中键入以下命令来使能驱动器:

System.Enable = ON
A1.Enable = ON

尽管没有连接驱动器,但模拟轴也需要使能。启用驱动器还需要两个其他信号:DRIVEON HALTRESTART。 这些信号通常为ON。 这些信号保持符合SERCOS协议。 在非SERCOS应用程序中,它们不能被softMC程序使用。
有关访问驱动器控制位的更多详细信息,请参见此处:

准备运动系统的最后一步是打开运动标志。 有两个运动标志必须在:系统运动标志和轴运动标志。 例如:

System.Motion = ON
A1.Motion = ON

这些代码行包含在ControlStudio自动安装程序中。

在许多应用中,硬件开关与运动标志相关。 softMC没有硬件运动输入。 但是,您可以使用softMC事件来创建此功能。 以下示例显示了使用输入外部数据输入1来控制系统运动标志的任务:

Program
OnEvent MOTION_ON System.DIn.1 = ON
 System.Motion = ON 
End OnEvent
OnEvent MOTION_OFF System.DIn.1 = OFF
 System.Motion = OFF 
End OnEvent
End Program

运动发生器的目的是将运动命令(JOGMOVE)转换为定期更新的位置和速度命令系列。 该系列称为运动曲线。 位置和速度命令通过运动总线(EtherCAT,CAN,SERCOS)发送到受控驱动器。 驱动器中的所有伺服回路(位置,速度和电流)都被关闭。 下图显示了JOG命令的速度部分的曲线。

caption

运动曲线必须定期更新。 softMC通常每个运动总线周期更新运动曲线(如果驱动器支持此更新速率,则可能时更新速率为1 ms)。 softMC和驱动器之间的循环数据随着轴数量的增加而变长,因此具有20个以上轴的EtherCAT应用可能需要重新配置PDO才能从PDOs. TBD中删除未使用的对象。

运动缓存

每个轴的运动发生器一次只能处理一个运动指令,因为轴只能处理一个位置或速度指令。 但是,您可以向发生器发送第二个运动命令,直到当前运动命令完成(运动缓存)为止。

运动缓冲由 STARTTYPE控制。 如果 STARTTYPE设置为GENERATORCOMPLETED,缓冲的运动曲线将在当前运动曲线完成后立即开始。 如果 STARTTYPE设置为INPOSITION,则缓冲的运动曲线将在当前运动曲线完成并且位置反馈已稳定后启动。 在这两种情况下,第二个命令保持在运动生成器中,以在满足适当条件之后立即开始。

您还可以指定运动生成器不缓存,立即处理新的运动命令。 当您要对运动曲线进行实时更改(更改当前命令的结束位置)时,这很有用。 为此,将 STARTTYPE 设置为IMMEDIATE(IMMED)或SUPERIMMEDIATE(SIMM)。

覆盖与固定

轴有许多特性,如加速度和减速度。 这些属性通常是直接设置的:

ConveyorAxis.Acc = 100

此设置是永久性的。它一直持续到下一次该属性被赋值为止。为了方便起见,softMC还支持将属性设置为命令的一部分的覆盖值。在这种情况下,该设置仅用于当前命令。

例如:

ConveyorAxis.Acc = 100
Jog ConveyorAxis 1000 ACC = 10

即使传送带轴的加速度在第一行规定为100,JOG加速度为10(覆盖值)。运动命令没有指定覆盖加速度,加速度为固定值。

覆盖值在运动命令中广泛使用。 可以覆盖的值在下面以及参考手册中进行了说明。

加速度曲线

单轴运动命令MOVEJOG产生加速度曲线由以下限制:

ACCELERATION (ACC)

DECELERATION (DEC)

SMOOTHFACTOR (SMOOTH)

加速减速限制到小于电机和负载的加速能力。SMOOTH通过平滑运动有助于限制或减少机器上的机械磨损。

有两种类型的加速度曲线 - 正弦曲线和梯形曲线。 在正弦曲线中,加速度平滑地增加,而在梯形轮廓中,加速度在每个样本中的增加。 使用SMOOTHFACTOR设置加速度增加平滑度。

手动

当您要使电机以与当前位置无关的恒定速度移动时,请使用JOG。速度可以为负,以产生相反方向的运动。例如:

Jog ConveyorAxis 2000

生成以下曲线:

caption

您可以选择使用TIMEJOG限制JOG运行的时间。TIMEJOG必须放在与JOG相同的行上。 TIMEJOG以毫秒为单位指定,包括加速时间。 时间到期后,减速开始。 当TIMEJOG为-1时,JOG将无限期地继续。 TIMEJOG默认为-1。 例如:

Jog ConveyorAxis 2000 TimeJog = 1000

生成以下曲线。

caption 以下轴属性可以作为 JOG的一部分覆盖:

TIMEJOG

ACCELERATION

DECELERATION

SMOOTHFACTOR

JERK

VELOCITYRATE

ACCELERATIONRATE

DECELERATIONRATE

JERKRATE

停止

STOP 在运动缓存中停止运动。在命令中,必须指定轴。例如:

Stop ConveyorAxis

通常,STOP设置为以DECELERATIONMAX的速率立即停止运动。 但是,您可以使用STOPTYPE修改STOP的影响。 STOPTYPE可以取三个值:

StopType = ImmediateIMMEDDECELERATIONMAX立即停止轴。

StopType = EndMotion当前运动命令结束时停止轴清除缓存运动。

StopType = Abort立即停止当前动作,无需恢复停止的动作。 只有当前运动命令停止,才能生成命令。

STOPTYPE默认为IMMED。 如果STOPTYPE = ENDMOTION,则执行STOP之前,当前运动完成。 对于JOGTIMEJOG = -1 (无限期继续), STOPTYPE = ENDMOTION没有意义,因为JOG永远不会结束。 在STOP期间,存储缓存中的当前和未决移动,以允许使用PROCEED恢复这些运动。

STOP使用模态最大减速度和最大加加速度。 STOPTYPE作为STOP的一部分被覆盖。

继续

任务停止关联到轴上的运动时,重新启动运动很简单。逻辑包含在任务内,但是当另一个任务停止运动时,情况更加复杂。例如,系统应该防止任何任务重新启动运动,除了停止它的任务。 为了控制STOP后的运动重新启动,softMC支持PROCEED

PROCEED有两个目的:提高安全性,并允许运动继续沿着原始路径。提高安全性是通过不允许没有停止发出 PROCEED的动作的任务轴的运动重启。 路径控制由<''axis''>.PROCEEDTYPE提供。 PROCEEDTYPE可以设置为以下三种模式之一:CONTINUE,NEXT MOTION和CLEARMOTION。 关键的操作规则是:

  1. 当任务停止与其关联的轴的运动时,允许PROCEED,但不是必需的。
  2. 当从终端窗口发出STOP并且被停止的轴被关联到任务时,运动停止,并且在执行下一个动作或DETACH时该任务被暂停。 命令的任务和动作只有在从终端窗口发出PROCEED 之后才能重新启动。 在PROCEED 发出之前,从终端窗口命令运动。
  3. 当从一个任务发出STOP 并且被停止的轴被关联到另一个任务时,运动停止,并且在执行下一个动作或DETACH时该任务被暂停。 只有在从停止运动的任务发出PROCEED 之后,它所命令的任务和动作才会重新启动。 不能从停止运动的任务中指定运动。
  4. 当从终端窗口发出STOP命令,从终端窗口发出命令时,运动停止,无法继续。 在这种情况下,唯一可用的继续类型是来自终端的CLEARMOTION

PROCEED有三种方式重新启动动作。使用 PROCEEDTYPE指定运动生成器应如何进行:

ProceedType = Continue这将导致运动发生器继续停止的缓冲区中的挂起的运动命令。

ProceedType = NextMotion'这使运动发生器中止当前运动并直接进入停止的运动缓存中的运动。

ProceedType = ClearMotion这将清除运动缓存区。 停止的运动缓存区中的所有运动命令都将中止。 这是默认值。

运动

MOVE是最常见的点到点移动。 基本运动是三段运动:

从零速度加速到VelocityCruise

在VelocityCruise继续巡航

从VelocityCruise减速到VelocityFinal

三段运动的关键部分是在正确的时间开始减速,使电机速度变为零(如果VELOCITYFINAL = 0),就像位置指令到达最终位置一样。 例如,以下命令:

Move ConveyorAxis 100 VCruise = 2000

生成以下曲线

caption

最终和增量与绝对移动的位置

POSITIONFINAL(移动结束)始终在MOVE中指定。 PFINAL的含义取决于ABSOLUTE(ABS)。 这允许点对点运动指定两种方式:

最终位置被指定为运动结束时的实际电机位置。 最终的位置等于 PFINAL

Incremental (Absolute = FALSE)最终位置参考起始位置。 最终位置等于从运动开始的PFINAL和PCMD的总和。所以:

CutAxis.Absolute = TRUE
Move CutAxis 100

将CutAxis移动到位置100.另一方面:

CutAxis.Absolute = FALSE
Move CutAxis 100

将CutAxis从当前位置移动100个单位。

ABSOLUTE默认为FALSE。 您可以随时更改ABSOLUTE,虽然效果不会发生,直到您发出下一个MOVE

稳定时间

softMC主动查看轴是否稳定到位置。 在几乎所有应用中,电机位置反馈从位置指令稍微延迟。运动完成后,实际位置需要一段时间才能到达指定位置;这个时间叫做稳定时间。

考虑如下所示的点对点动作。 VELOCITYCOMMAND (VCMD)以实线显示,VELOCITYFEEDBACK (VFB)以细线显示。两条曲线之间的区域是跟随误差。正如你所看到的,在 VFB结束时需要很少的时间来解决这个问题。 实际所需时间因系统而异。更高的带宽系统具有较短的建立时间,但是所有的系统都需要一些时间来解决。典型的时间范围从几毫秒到几十毫秒。

caption

理想情况下,稳定时间允许电机移动到逼近零位置误差。 但是,您必须允许位置误差从不达到零的条件。 在softMC上,您可以使用<axis>.POSITIONERRORSETTLE (<axis>.PESETTLE)指定低到足够低:

CutAxis.PESettle = 0.01

在运动发生器完成以零速度结束的运动之后,它主动监视轴上的位置误差,以查看它是否在±PESETTLE之间。

在某些应用中,必须确保位置误差保持在PESETTLE以下一段指定的时间之后,轴才能被认定为轴。 softMC允许您使用<''axis''>.TIMESETTLE (以毫秒为单位)指定此时间段。 TIMESETTLEMAX设置允许轴达到最大时间。 在此期间,如果位置误差超过TSETTLE,则定时器被复位。 如果位置错误在TSETTLE指定的时间内在PESETTLE范围内,则<''axis''>.ISSETTLED标志为TRUE(1)。 否则为FALSE(0)。

点到点的运动

当运动缓存区为空时,点对点运动立即开始。 如果需要延迟下一个运动命令的开始,您有两个选项:使用 DELAY插入固定的延迟时间,或根据条件使用STARTTYPE来延迟。

使用DELAY 强制运动发生器在运动之间等待一段固定的时间。例如:

Move MainAxis 100
Delay 1000
Move MainAxis 200

在两个运动之间强制延迟1秒。 DELAY的单位为毫秒,必须大于零。DELAY不会延迟执行您的程序。 如果要延迟执行程序,请使用 SLEEP

如果要延迟新运动的开始,直到上一个运动满足条件,请使用STARTTYPE,有四个选择:

StartType = GeneratorCompleted (GCom)当STARTTYPE = GCOM时,一旦运动生成器完成当前的运动,新的运动就会开始。 GENERATORCOMPLETED等于3.该命令引起系统延迟2个SERCOS周期时间。

StartType = InPosition (InPos)当STARTTYPE = INPOS时,运动发生器延迟执行新的运动命令,直到当前的运动完成并且位置误差被设定为接近零。INPOSITION等于2.该命令不受额外的系统延迟,但与命令相关的任何延迟都是由于用户指定的用于运动稳定时间的参数。

StartType = Immediate (Immed)当STARTTYPE = IMMED时,新的移动将覆盖当前的移动。 在对配置文件进行实时更改时使用此功能,例如更改当前移动的终点,而不会使系统停止。 例如,配准应用程序经常使用此功能。 IMMEDIATE恒定等于1.该命令每次执行引起系统延迟5 SERCOS周期。 这次需要将上一个运动与新的运动相结合。

StartType = SuperImmediate (Simm)SUPERIMMEDIATE是IMMEDIATE的变体。主要区别在于SUPERIMMEDIATE通过在线进行预先计算来消除5个SERCOS周期的延迟,而不是在运动管理器中离线处理。 SUPERIMMEDIATE恒定等于5.系统中一次SUPERIMMEDIATE的数量受系统负载和运动类型的限制。 SUPERIMMEDIATE最适合短,高速运动。

链接多个运动都以零速度结束时,通常需要STARTTYPE = INPOS。 这迫使运动发生器在开始下一个运动之前等待位置稳定。 如果位置曲线在第二次运动时启动太早,则电机可能永远不会停下来。 例如,下图显示了当STARTTYPE未正确设置为GCOM而不是INPOS时出现此问题。

caption

正如你所看到的那样,电机速度不会变为零,因为在速度反馈稳定在零之前,第二个运动速度指令为正。通常,期望的性能是在第二次运动开始之前速度达到零。 为此,控制器需要等待轴位置误差在开始第二次运动之前稳定。 这通过将 STARTTYPE设置为INPOS来完成。 如下图所示。

caption

如您所见,电机会停止,因为在继续下一个命令之前,softMC等待的跟随误差足够小。

MainAxis.PESettle = 0.01
MainAxis.Tsettle = 10
Move MainAxis 100Move MainAxis 200 StartType=InPos

通常,MOVE的结束速度默认为零。 但是,您可以指定非零结束速度(Non-Zero End Moves)。 为此,请使用<''axis''>.VELOCITYFINAL。 必须在与MOVE相同的行上指定VELOCITYFINAL。 例如,

A1.VelocityCruise = 2000
Move A1 100 VelocityFinal = 1000

or

Move A1 100 VelocityCruise = 2000 VelocityFinal = 1000

同样生成以下曲线。

caption

您很少想要使用非零最终速度的单次运动,因为运动持续到指定的结束位置并突然开始减速为零。 最终位置未指定。 通常,使用非零最终速度的运动来构建多步骤曲线。

在运动缓存区中组合非零终点运动可产生多步运动。 例如:

Program 
Attach A1 
Call AxisSetup 
Call SercosSetup
Sys.En = On
A1.En = On
Sys.Motion = On
A1.Motion = On
A1.Abs = Off
A1.StartType = Gcom
‘Do Two-step Move
Move A1 100 VCruise = 20 VFinal = 10
Move A1 100 VCruise = 10 VFinal = 0
‘Wait for move to complete and axis to settle out
While A1.IsSettled = 0
Sleep 10‘Sleep in loop to keep from overloading CPU resources
End While
‘Disable, detach and exit
A1.En = Off
Detach A1
End Program

生成以下曲线。

caption

在上面的例子中,A1.STARTTYPE = GCOM。当第一个运动生成时,第二个运动开始。当链接非零终点运动到另一个运动时,必须使用STARTTYPE = GCOM。 您不能使用STARTTYPE = IMMED或SIMM,因为新的运动会立即覆旧的运动。 您不能使用STARTTYPE = INPOS,因为您希望运动曲线的第二部分在第一部分完成后立即开始。如果第二次运动是增量的,等待INPOS的延迟会增加错误。 对于任何运动类型,运动可能无限期地延迟,因为运动的电机永远不会到位置,除非系统被专门调整为这样做。

您可以组合非零终点运动,以根据需要执行多个步骤来生成运动曲线。 但是,有一些限制::

  1. STARTTYPE为非零终点运动时(VELOCITYFINAL<>0)必须为GCOM。
  2. VELOCITYCRUISEVELOCITYFINAL总为正值。方向由目标位置设置。
  3. 在当前运动的PFINAL 之前,后续运动的PFINAL必须足够远,以便加速度限制可以实现曲线。生成的曲线总是到达目标位置。如果加速度和smooth限制阻止达到所需的最终速度,则以最终速度尽可能接近所需值终止运动。

您可以更改正在进行的运动的结束位置或速度。 您可以通过设置STARTTYPE = IMMED并发出第二个运动来执行此操作。例如,如果要发出运动,请等待几秒钟,更改结束位置,而不更改速度。为此,你可以写成:

CutAxis.StartType = Immed
CutAxis.Absolute = On
Move CutAxis 150
Sleep 3000
Move CutAxis 100

生成的曲线如下

caption

作为第二个例子,如果你想改变巡航速度而不改变最终位置,你可以写为:

CutAxis.StartType = IMMED
Move CutAxis 150
Sleep 3000
Move CutAxis 150 VCruise = 1500

您可以更改正在执行的任何运动的最终位置,巡航速度和最终速度。 但是,您必须遵守以下规则:

  1. STARTTYPE必须为IMMED或SIMM
  2. 方向根据目标位置设定。对于手动操作,根据速度的标志。
  3. 运动命令中新的和旧的VELOCITYCRUISE和VELOCITYFINAL必须为正。
  4. 如果后续运动更改了PFINAL或VFINAL,则必须仍然可以使用轴加速度限制创建运动曲线

多轴同步

softMC可以同步许多单轴MOVE,以便它们都同时启动。当您有多个轴具有大部分独立的运动,但必须同时启动时,这很有用。 它也可用于三个轴以上的协作。 组运动(稍后介绍)提供更紧密的协调,但有一个运动曲线。

同步由STARTTYPE = SYNCSTART(SYNC)控制。 该功能允许您使用运动命令加载运动生成器,但生成延迟运动,直到发出SYNCSTART命令。 例如,以下顺序:

Move MainAxis 300 VCruise = 1200 StartType = Sync

Sleep 1000 ‘Program delayed between Move Commands

Move AuxAxis 100 VCruise = 1000 StartType = Sync

SyncStart MainAxis AuxAxis

生成以下曲线

caption

您可以根据需要同步多个轴,包括模拟轴。 由于每个SYNCSTART指定其同步的轴,因此可以独立同步多组轴。

该命令引起2个SERCOS周期时间的最小系统延迟,但是延迟可能更大,这取决于同步在一起的运动数量和系统的总负载。

如果您已将同步运动加载到运动生成器中并需要将其删除,请使用SYNCCLEAR。 例如,如果在发出SYNCCLEAR之前输入了以下命令:

SyncClear MainAxis

MainAxis运动被删除。 这只会影响后续的运动。 您只能使用SYNCCLEAR清除待处理的运动。 一旦运动执行,SYNCCLEAR就没有任何效果。 在这种情况下停止轴就像非同步运动那样执行。

您可以重写以下轴属性作为“MOVE”'的一部分:

ABSOLUTE

ACCELERATION

DECELERATION

SMOOTHFACTOR

VELOCITYCRUISE

VELOCITYMAX

STARTTYPE

VELOCITYRATE

ACCELERATIONRATE

DECELERATIONRATE

JERKRATE

速度覆盖

softMC可以加速或减慢所有运动命令。 这可以单独应用于整个机器,也可以单独应用于各个轴。 该功能在机器开发中广泛使用,因为它可以在单个命令中调整整个机器速度。 由于可以从终端发出命令,您可以在不修改程序的情况下以各种速度观察机器的操作。

softMC上的所有轴都由SYSTEM.VELOCITYOVERRIDE (SYSTEM.VORD)控制。例如:

System.VelocityOverride = 25

立即将所有当前正在执行的 MOVEJOG以及任何后续命令的速度命令降低到当前值的25%。 由于速度由VORD控制,所以所有轴的加速度都按比例调整。 MOVE的最终位置不受影响。

如果要覆盖单个轴而不是整个机器的速度,可以使

<''axis''>.VORD.VELOCITYOVERRIDE (<''axis''>.VORD)。它以与SYSTEM.VORD相同的方式使用,但它仅适用于一个轴。<''axis''>.VORD可以根据需要应用于多个或少数轴,并且为一个轴指定的倍率不依赖于其他轴。如果您同时使用 SYSTEM.VORD<''axis''>.VORD ,则轴速度会被减小到两个覆盖属性的乘积,如下所示:

System.VOrd = 66 ‘将整个系统降低到2/3速度

MainAxis.VOrd = 50 ‘将MainAxis减少1/3的速度

在这个例子中,整个系统减少到66%,而MainAxis的系统速度减少50%,则降低到33%。 直到速度开始改变有5个周期的延迟,以确保速度平滑改变。

运动示例

本节提供了应用于常见机器功能的运动控制技术几个示例。


回零

大多数机器轴需要建立一个软件的回零参考位置。用户指定的回零程序通常在机器的上电周期或手动模式下运行。 软件回零参考位置(0000 ...)由使用HOMEOFFSET(与硬件零位置距离)的任何标记脉冲(用于控制器和轴线力学之间的完整性的回零程序建立)。

驱动器直接驱动的轴上的硬件零位置通常由编码器(增量,正弦编码器或ENDAT编码器)的每转一次的标记脉冲或旋转变压器的过零位置分配。 然而,对于具有齿轮比(齿轮,皮带或滚珠丝杠等)的机床,控制器与引导程序的轴向力学之间的关系(完整性)需要更复杂的过程。 在这些情况下,通常在轴上放置一个微动开关或接近开关,用于指示硬件零位的参考位置。

NOTE-Info.svgNOTE
零点位置开关放置在轴的一端(轴的行程限制在内部),开关跳闸机构设计成使得开关电路在硬件零点起始位置的一侧闭合,并且在另一边的硬件零点位置打开。

开关电路(高/低)为零位置方向提供控制器输入信息。其他机床轴可以使用绝对位置设备设计,因此控制器与轴力学之间的完整性将自动建立在机器上电期间。机器位置完整性的建立与仅旋转360°的轴类似。

回零过程本身由驱动器完成,softMC只是初始化。 所有的回零参数和命令由驱动命令集定义,并且可以根据所使用的运动总线而有所不同。对于EtherCAT,请参考:


配准

配准应用是基于后续事件开始运动然后修改运动曲线。 这些应用通常涉及离散产品处理,例如在包装,印刷和转换行业中常见的。该事件通常通过测量待处理产品上的位置(通常是印在产品上的标记并由光学传感器检测)来产生。 标记通常被称为配准标记。

常见的配准应用是从网(卷)切割产品包装,例如袋子或标签 网格上印有产品包装的许多副本。 控制器开始从网格展开产品包装。 在此运动期间,控制器等待检测到注册标记。 检测到标记后,基于检测到标记的位置修改运动曲线。 通常,轮廓在可以切割包装的标记位置之后静止一段距离。 这种类型的应用有许多变化。 关键因素是运动开始后才能计算运动的结束位置。这要求启动运动曲线,然后即时修改。

softMC结合了即时更改位置终点的能力和命令驱动器捕获位置的能力。 配准类似于回零,但在回零时回到标记零位,而在配准时是前进到标记后的一个固定位置。 以下示例显示了典型的配准示例:

Program
'Prepare drive to captureVCruise = 3000
Cycle:Move FeedAxis 50 'wait for captureMove FeedAxis [capture position] + 10 StartType=IMMED
End Program

此示例生成下一个运动曲线。

caption


运动开始,配准标记被检测到最后的40%。 经过少量的处理时间后,第二个运动将在当前运动中加载。 轴在配准标记后以固定的偏移量静止。

确定位置越准确,切割对准标记越准确。 如果加工是以10 ft / s进给材料,并且捕获精度为±3微秒,则标记为:

10 (ft/sec) * 3 µs = 3.225e-5 ft or about 0.0004 in.

原来的曲线比实际的走势更远。 通常使用这种技术,因为您可以监视结束位置,如果在检测到配准标记之前完成运动,则表示标记已被丢失。

门控

许多应用需要运动来选择外部开关。 在这些情况下,您需要在门控输入转换尽可能少的延迟之后开始运动。 您可以在softMC上完成此操作的一种方法是启动包含同步运动的事件。例如:

Program
Attach MainAxis
Move MainAxis 100 Absolute=FALSE StartType=SYNC
While System.Din.1=False; ‘等待输入改变
 Sleep 1
End While
SyncStart MainAxis ‘通过禁用启动轴
End Program

当DIN.1转换为高电平时,该程序运动MainAxis 100个单元。MainAxis上的运动尽可能在DIN.1过渡之后开始,也可以使用OnEvent

装夹

装夹应用通常处理离散零件,但运动的终点是未知的。 当部件的长度不准确或材料的厚度未知时,通常应用装夹。 在装夹时,控制器以低扭矩运动轴,直到检测到材料的末端。 然后,扭矩增加,要么更精确地测量零件,要么保持零件以供另一轴处理。

softMC允许您更改驱动器上的转矩限制,并使用事件来监视位置误差,以检测部件的末端(下图)

Program
Dim Shared PartFoundFlag As Long
OnEvent PartFound Abs(ClampingAxis.pe ) > 0.25
Stop ClampingAxis
[Set torque for heavy torque]
Sleep 30 ‘allow 30 ms for settling
PartFoundFlag=TRUE
Return
End OnEvent
eventon PartFound
[set torque for light torque]
PartFoundFlag=FALSE
Move ClampingAxis Vcruise=10
While (PartFoundFlag=FALSE)
Sleep 10End While
REM Process part here
Return
End Program

该程序通过以低扭矩启动缓慢运动来工作。 运动持续到位置误差大于0.25个单位。 当轴进入停止状态时,由于运动曲线继续而导致位置错误累积。 您必须小心设置事件的阈值大于正常操作的位置误差。 事件的阈值也必须小于驱动器的最大跟随误差,以避免事件触发之前的驱动器错误。 在运动加速期间禁用OnEvent以避免造成PartFound事件的干扰。