操作多个轴

<< 点击显示目录 >>

主页  轴控开发使用手册 > ACP10/ARNC0帮助信息 > 示例 > 运动控制 >

操作多个轴

这个例子显示了如何使用全局命令结构体对多个轴进行操作,以及如何在一个集中式任务中进行错误处理。

使用这个例子时,必须在项目中找到一个名为 "acp10etxen"(运动向导)的错误文本模块。默认情况下,软件包中使用的轴的名称是 "gAxis01"、"gAxis02"、"gAxis03"、"gAxis04"和 "gAxis05"(运动向导)。可以在 "配置 "任务的初始化子程序中为各轴指定不同的名称。

 

如果添加该包的项目已经包含其他轴,那么错误处理将不再正确工作。出于这个原因,所有使用的轴都应该被整合到这个包中。

如果使用了电源模块的任务,那么只有在事先启用了电源模块的情况下,其他轴的控制器才能在本地打开。

如果这个包被添加到一个项目中,控制器上的全局内存区域必须在CPU属性中扩大大约6 kB。

要求

本例可与下列配置示例一起使用:

目标系统

描述

X20CP148x

X20 SG4 CPU

8V1xxx.x0-2或8BVxxxxxxxx.xxx-x

ACOPOS和ACOPOSmulti

任务名称

AxisConfiguration  ;         配置,轴参考的分配
ErrorHandling  ;          所有伺服轴的集中式 错误处理
PowerSupply  ;                 电源轴模块的控制任务
Axis_00 ;                         单个轴的控制任务
Axis_01 ;                         单个轴的控制任务
Master_00 ;                 主轴的控制任务
Slave_00 ;                         从轴的控制任务

集中控制结构体的描述

使用集中式 "GlobalCommand"命令结构体可以对所有轴发出以下命令

功能

变量

开启所有伺服控制器

GlobalCommand.Power

对所有轴执行回零

GlobalCommand.Home

停止所有轴正在进行的运动并阻止新的运动开始

GlobalCommand.Stop

确认个别轴的错误

GlobalCommand.ErrorAcknowledge

电源模块

操作电源模块的例子(程序:PowerSupply)。

使用预定义的 "PowerSupply[i].Command"命令结构可以执行以下功能。

功能

变量

开启控制器

PowerSupply[i].Command.Power

启用电源模块的功率测定

PowerSupply[i].Command.StartPowerMeter

禁用电源模块的功率测定

PowerSupply[i].Command.StopPowerMeter

重新启动功率测定的观察时间间隔

PowerSupply[i].Command.RestartInterval(重新启动时间间隔)。

libacp10_multi_power

单个轴

用于驱动控制的各种基本功能以统一的序列结构组成(程序:Axis_00,Axis_01)。

使用预定义的 "Axis[i].Command"命令结构可以执行以下功能。

功能

变量

开启伺服控制器

Axis[i].Command.Power

对轴执行回零

Axis[i].Command.Home

只要命令变量被置位,就在正方向上执行一个运动

Axis[i].Command.MoveJogPos

只要命令变量被置位,就在负方向上执行一个运动

Axis[i].Command.MoveJogNeg

以定义的结束位置开始一个绝对定位运动

Axis[i].Command.MoveAbsolute

开始一个有定义距离的相对定位运动

Axis[i].Command.MoveAdditive

以定义的速度开始一个恒速运动

Axis[i].Command.MoveVelocity

停止一个活动的运动

Axis[i].Command.Halt

停止一个正在进行的运动并阻止一个新的运动开始

Axis[i].Command.Stop

 

libacp10_multi_axis

主轴

用于驱动控制的各种基本功能是按统一的顺序结构组织的(程序:Master_00)。

可以使用预定义的命令结构 "Master[i].Command" 在观察窗口的帮助下,执行以下功能。

功能

变量

开启伺服控制器

Master[i].Command.Power

对轴执行回零

Master[i].Command.Home

只要命令变量被置位,就在正方向上执行一个运动

Master[i].Command.MoveJogPos

只要命令变量被置位,就在负方向上执行一个运动。

Master[i].Command.MoveJogNeg

开始一个有定义结束位置的绝对定位运动

Master[i].Command.MoveAbsolute

开始一个有定义距离的相对定位运动

Master[i].Command.MoveAdditive

以定义的速度开始恒速运动

Master[i].Command.MoveVelocity

停止一个正在进行的运动

Master[i].Command.Halt

停止一个正在进行的运动并阻止一个新的运动开始

Master[i].Command.Stop

 

libacp10_multi_master

从轴

传输、开始/停止运动、重新耦合和结束Cam Profile Automat(程序:Slave_00)的例子。

这个例子显示了如何使用定义的命令来初始化和启动一个Cam Profile Automat,停止运动,重新耦合和结束运动。来自ACP10_MC库的功能块被用来配置和控制Cam Profile Automat。这个例子还包含驱动控制的基本功能。

包括三种不同的凸轮自动序列配置。

贴标机

飞锯

切割单元

自动凸轮序列的参数配置在相应的函数中用ANSI C和结构化文本实现。在凸轮序列初始化发生之前,通过在STATE_AUTOMAT_INIT状态里面调用函数选择对应的凸轮自动序列配置参数。

观察窗口的帮助下,可以使用预定义的命令结构 "Slave[i].Command"执行以下功能

功能

变量

初始化一个凸轮轮廓自动序列

Slave[i].Command.StartAutomat

启动一个凸轮轮廓自动序列

Slave[i].Command.StartAutomat

停止凸轮轮廓自动序列

Slave[i].Command.StopAutomat

凸轮轮廓自动序列恢复耦合

Slave[i].Command.RestartAutomat

彻底结束凸轮轮廓自动序列的耦合

Slave[i].Command.EndAutomat

开启伺服控制器

Slave[i].Command.Power

轴回零

Slave[i].Command.Home

只要命令变量被置位,就在从轴上执行一个正方向的运动

Slave[i].Command.MoveJogPos

只要命令变量被置位,就在从轴上执行一个负方向的运动

Slave[i].Command.MoveJogNeg

在从轴上以定义的结束位置开始绝对定位运动

Slave[i].Command.MoveAbsolute

在从轴上以定义的距离开始相对定位运动

Slave[i].Command.MoveAdditive

在从轴上以定义的速度开始恒速运动

Slave[i].Command.MoveVelocity

停止一个活动的运动

Slave[i].Command.Halt

停止一个正在进行的运动并防止开始一个新的运动

Slave[i].Command.Stop

 

libacp10_multi_slave

自动序列配置:贴标机

当一个trigger触发边沿信号到达时,一个标签应该被分配出去。

标签带的进给运动包括一个补偿运动和一个同步段阶段,在这个同步段阶段它被贴到产品上。这是由一个产品传感器触发的。如果缺少一个产品,在等待状态下进行补偿运动。进入状态2和退出状态4,在每种情况下从轴都有一半的从动间隔距离。

对于这种自动序列配置,轴的周期必须这样设置:

主轴:1000

从轴:1000

libacp10_automat_labelerstatediagram

自动序列配置:飞锯

一旦主轴到达某个位置,从轴开始一个进入运动,使其与主轴同步移动一定的路径。一旦到达该路径的终点,从轴就会返回到其最初的起始位置。

对于这种自动序列配置,轴的周期必须这样设置:

主轴:3600

从轴:1000

libacp10_automat_flyingsawstatediagram

自动序列配置:切割单元

当信号1发生时,从轴从其静止位置到它将与主机同步移动的位置做一个补偿运动。

然后,每个状态State里面都是执行一个主轴周期。当信号2发生时,从轴跟随一个退出运动回到其静止位置,并等待信号1的下一次发生。

对于这种自动序列配置,轴的周期必须这样设置:

主轴:1000

从轴:3600

 

libacp10_automat_crosscutterstatediagram

错误处理

演示应用程序中使用的所有轴的集中错误处理方式的示例(程序:ErrorHandling)。

该程序持续检查项目中的所有轴,以了解以下事件。

是否发生了轴错误或轴警告?

一个PLCopen功能块是否为其中一个轴报告了错误?

某轴是否处于ErrorStop状态?

如果这些条件之一得到满足,在STATE_ERROR_HANDLING步骤中检查所有轴的轴状态。如果一个或多个轴处于ErrorStop状态,那么受影响的轴将被停止,并通过为这些轴设置停止命令(Xyz[i].Command.Stop)防止其重新启动。(如果这涉及到一个耦合轴(Master[i], Slave[i]),那么所有耦合轴都会停止。)

有关当前未决错误的信息被输出到全局错误结构(GlobalError),直到错误被确认(GlobalCommand.ErrorAcknowledge)。 然后输出下一个未决错误(如果存在的话)。一旦处于ErrorStop状态的轴的所有错误被确认,它们将被MC_Reset自动带出这个状态。但是,停止命令不会被这个任务重置;这将由用户来处理。

libacp10_error

1) 在这一步骤中,所有轴都是一个接一个地检查。

 

本节的主题:

扩展软件包来操作多个轴