大家好,欢迎观看“每周都要SMART”系列视频,本期我们分享的内容:SMART运动控制单轴子例程的使用。
点击下方视频,立刻学起来吧!
运动向导根据所选组态选项创建**的指令子程序,从而使运动轴的控制更容易。各运动指令均具有“AXISx_”前缀,其中x代表轴通道编号。每条运动指令都是一个子程序,目前的版本中支持13个单轴运动控制指令,也就是13个子程序,每个子程序都需要占用一定的字节数来存储设定的参数,如果使用曲线包络更将占用大量的寄存器,所以要根据实际需求勾选要使用的例程。
运动控制子例程使用准则
√ 必须确保在同一时间仅有一条运动控制子例程激活。
√ 只要循环调用中断,便可在中断例程中执行AXISx_RUN和AXISx_GOTO。但是,如果运动轴正在处理另一个命令,则切勿尝试在中断例程中启动运动控制子例程。如果在中断例程中启动子例程,则可使用AXISx_CTRL子例程的输出来监视运动轴是否完成移动。
√ 运动控制向导根据所选的度量系统自动组态速度参数(Speed和C_Speed)和位置参数(Pos或C_Pos)的值。对于脉冲,这些参数为DINT值。对于工程单位,这些参数是所选单位类型对应的REAL值。例如:如果选择厘米(cm),则以厘米为单位将位置参数存储为REAL值并以厘米/秒(cm/sec)为单位将速度参数存储为REAL值。
运动控制子例程编程准则
√ 要在每次扫描时执行子例程,请在程序中插入AXISx_CTRL子例程并使用SM0.0触点。
√ 要指定运动到绝对位置,必须首先使用AXISx_RSEEK或AXISx_LDPOS子例程建立零位置。
√ 要运行通过运动控制向导组态的运动曲线,需要使用AXISx_RUN子例程。
常用运动控制指令介绍
1)AXISx_CTRL子例程,用于启用和初始化运动轴。
MOD_EN:该参数必须开启,才能启用其它运动控制子例程向运动轴发送命令。如果MOD_EN参数关闭,则运动轴将中止进行中的任何指令并执行减速停止。
Done:当运动轴完成任何一个子例程时,该参数会开启。
Error:该参数存储该子程序运行时的错误代码。
C_Pos:该参数反馈运动轴的当前位置。根据测量单位,该值为脉冲数(DINT)或工程单位数(REAL)。
C_Speed:该参数反馈运动轴的当前速度。针对脉冲组态运动轴的测量系统,C_Speed是一个DINT 数值,其中包含脉冲数/秒。针对工程单位组态测量系统,C_Speed是一个REAL数值,其中包含选择的工程单位数/秒 (REAL)。
C_Dir:该参数表示电机的当前方向:信号状态0=正向;信号状态1=反向。
2)AXISx_MAN子例程,用于将运动轴置为手动模式。该模式允许电机按不同的速度正反向运行。
RUN:该参数导通会命令运动轴沿指定速度和方向运动。
JOG_P/ JOG_N:参数会命令运动轴正向或反向点动。
Speed:参数决定启用RUN时的速度,根据所选的测量单位,该值是脉冲数/秒 (DINT) 或工程单位数/秒 (REAL),可以在电机运行时更改该参数。
Dir:该参数确定当 RUN 启用时移动的方向。可在RUN参数启用时更改该数值。
Error:该参数存储该子程序运行时的错误代码。
C_Pos:该参数反馈运动轴的当前位置。
C_Speed:该参数反馈运动轴的当前速度。
C_Dir:该参数表示电机的当前方向:信号状态0=正向;信号状态1=反向。
3)AXISx_GOTO子例程,命令运动轴转到所需位置。
START:该参数开启运动轴执行定位命令。
Pos:目标位置,绝对模式指定要到达的位置;相对模式指定要移动的距离。根据所选的测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL)。
Speed:该参数确定移动的最高速度。根据所选的测量单位,该值是脉冲数/秒 (DINT) 或工程单位数/秒 (REAL)。
Mode:参数选择移动的类型:
0:绝对位置
1:相对位置
2:单速连续正向旋转
3:单速连续反向旋转
Abort:该参数启动会命令运动轴停止当前包络并减速,直至电机停止。
4)AXISx_RUN子例程,命令运动轴按照存储在组态/曲线表的特定曲线执行运动操作。
START:该参数开启将向运动轴发出RUN命令。对于在START参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个RUN命令。
Profile:该参数包含运动包络的编号或符号名称。“Profile” 输入必须介于0-31,否则子例程将返回错误。
Abort:该参数会命令运动轴停止当前包络并减速,直至电机停止。
C_Profile:该参数包含运动轴当前执行的包络。
C_Step :该参数包含目前正在执行的包络步。
5)AXISx_RSEEK子例程,使用组态/曲线表中的搜索方法启动参考点搜索操作。运动轴找到参考点且运动停止后,运动轴将RP_OFFSET参数值载入当前位置,RP_OFFSET默认为0。
EN:该参数开启会启用此子例程,应确保EN位保持开启直至Done位指示子例程执行已经完成。
START:该参数开启运动轴将寻找参考点。
6)AXISx_LDPOS子例程,将运动轴中的当前位置值更改为新值。若新值为0则等同于以当前位置为原点回零。
START:该参数开启运动轴将执行加载新位置命令。
New_Pos:该参数提供新的当前位置值,用于取代绝对运动的当前位置值。根据测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL)。
运动指令的错误代码
每个子程序执行完成后,都会有一个Error字节用于显示运动指令的结果。通过该字节可判断指令是否执行有错误,可以根据对应的错误代码表来快速定位错误的所在。
错误代码 | 说明 |
0 | 无错误 |
1 | 被用户中止 |
2 | 组态错误(如果SDBO组态出错,则发生次错误) |
3 | 命令非法 |
4 | 因组态无效二中止(如果组态表出错,则发生此错误) |
5 | 保留 |
6 | 由于无定义的参考点而中止 |
7 | 由于STP输入激活而中止 |
8 | 由于LMT-输入激活而中止 |
9 | 由于LMT+输入激活而中止 |
10 | 由于执行运动时出现问题而中止 |
11 | 没有为指定曲线组态曲线块 |
12 | 操作模式非法 |
13 | 此命令不支持该操作模式 |
14 | 曲线块中的步数非法 |
15 | 方向更改非法 |
16 | 距离非法 |
17 | 达到目标速度前发生RPS/TRIG触发 |
18 | RPS有效区域宽度不足 |
19 | 速度超出范围 |
20 | 距离不足无法执行所需的速度更改 |
21 | 位置非法 |
22 | 零位置未知 |
23 | 未定义DIS输出 |
24 | 保留 |
25 | 因CPU进入停止模式而中止 |
26 | 因运动控制版面活动结束而中止 |
27-127 | 保留 |
128 | 运动轴无法处理此指令:要么是运行轴忙于执行另一指令,要么是没有此指令的启动脉冲。 |
129 | 保留 |
130 | 运动轴未启动 |
131 | 保留 |
132 | 保留 |
133 | 指定的曲线非法。AXISx_RUN和AXISx_CACHE指令曲线编号的取值范围必须在0到31之间。 |
134 | 在AXISx_GOTO指令中指定了非法模式 |