机器自动化控制器——第三章 轴指令 16
MC_GearIn
- 设定主轴和从轴间的齿轮比,进行齿轮动作。
指令 | 名称 | FB/ FUN |
图形表现 | ST表现 |
---|---|---|---|---|
MC_GearIn | 齿轮动作开始 | FB | ![]() |
MC_GearIn_instance ( Master :=《参数》 , Slave :=《参数》 , Execute :=《参数》 , RatioNumerator :=《参数》 , RatioDenominator :=《参数》 , ReferenceType :=《参数》 , Acceleration :=《参数》 , Deceleration :=《参数》 , Jerk :=《参数》 , BufferMode :=《参数》 , InGear =>《参数》 , Busy =>《参数》 , Active =>《参数》 , CommandAborted =>《参数》 , Error =>《参数》 , ErrorID =>《参数》 ); |
变量
▶输入变量
输入变量 | 名称 | 数据类型 | 有效范围 | 初始值 | 内容 |
---|---|---|---|---|---|
Execute | 启动 | BOOL | TRUE, FALSE | FALSE | 在上升沿开始指令。 |
Ratio Numerator |
齿轮比分子 | DINT*1 | 正数或负数 *1 | 10000 | 指定主轴和从轴间的电子齿轮的分子。 |
Ratio Denominator |
齿轮比分母 | UDINT*2 | 正数 | 10000 | 指定主轴和从轴间的电子齿轮的分母。 |
Reference Type*3 |
位置类型 选择 |
_eMC_ REFERENCE _TYPE |
0: _mcCommand 1: _mcFeedback 2: _mcLatestCommand |
0 *4 | 指定位置类型。 0:指令位置(最近任务周期*5下的计算值) 1:反馈位置(同一任务周期 *5下的取值) 2:指令位置(同一任务周期*5下的计算值) |
Acceleration | 加速度 | LREAL | 正数、或“0” | 0 | 指定加速度。 单位为[指令单位/s2] *6 |
Deceleration | 减速度 | LREAL | 正数、或“0” | 0 | 指定减速度。 单位为[指令单位/s2] *3 |
Jerk (Reserved) |
跃度 | LREAL | 0 | 0 | (Reserved) |
BufferMode | 缓存 模式选择 |
_eMC_ BUFFER_ MODE |
0: _mcAborting 1: _mcBuffered |
0 *2 | 指定多重启动运动指令时的动作。 0:中断 1:等待 |
1.Ver.1.02以上的CPU单元和Ver.1.03以上的SysmacStudio组合时可使用。上述以下版本进行组合时,数据类型为“UINT”,有效范围为“正数”。
2.Ver.1.02以上的CPU单元和Ver.1.03以上的SysmacStudio组合时可使用。上述以下版本进行组合时,数据类型为“UINT”。
3.使用_mcLatestCommand时,必须在满足以下关系的条件下使用主轴、从轴。Master(主轴)设定的运动控制系统变量的轴号<Slave(从轴)设定的运动控制系统变量的轴号
4.有效范围为枚举体的变量,其实际初始值不是数值,而是枚举元素。
5.任务周期分为原始恒定周期任务的周期和固定周期任务(执行优先度5)的周期。
6.关于指令单位,请参阅“NJ/NX系列CPU单元用户手册运动控制篇(SBCE-363)”或“NY系列工业用平板电脑/工业用台式电脑用户手册运动控制篇(SBCE-379)”的“单位转换设定”。
▶输出变量
输出变量 | 名称 | 数据类型 | 有效范围 | 内容 |
---|---|---|---|---|
InGear | 齿轮比到达 | BOOL | TRUE, FALSE |
从轴达到目标速度时变为TRUE。 |
Busy | 执行中 | BOOL | TRUE, FALSE |
接收指令后变为TRUE。 |
Active | 控制中 | BOOL | TRUE, FALSE |
控制中变为TRUE。 |
CommandAborted | 执行中断 | BOOL | TRUE, FALSE |
指令中止时,变为TRUE。 |
Error | 错误 | BOOL | TRUE, FALSE |
发生异常时变为TRUE。 |
ErrorID | 错误代码 | WORD | * | 发生异常时,输出错误代码。16#0000为正常。 |
- 请参阅“A-1错误代码一览(P.A-2)”。
► 输出变量的反映时间
变量 | 变为TRUE的时间 | 变为FALSE的时间 |
---|---|---|
InGear | 以下关系成立时 • 加速中:从轴速度≥主轴速度×齿轮比 • 减速中:从轴速度≤主轴速度×齿轮比 |
• Error变为TRUE时 • CommandAborted变为TRUE时 |
Busy | Execute的上升沿 | • Error变为TRUE时 • CommandAborted变为TRUE时 |
Active | 开始指令后 | • Error变为TRUE时 • CommandAborted变为TRUE时 |
CommandAborted | • 利用其它指令多重启动运动指令(中断),中止本 指令时 • 因发生异常,中止本指令时 • 发生异常过程中,启动本指令时 • 执行MC_Stop指令中,启动本指令时 • 启动了MC_GearOut指令时 |
• Execute为TRUE时,与Execute的FALSE同时 • Execute为FALSE时,1个周期后 |
Error | 本指令的启动条件或输入参数中含有异常因素时 | 异常已解除时 |
▶输入输出变量
输入输出变量 | 名称 | 数据类型 | 有效范围 | 内容 |
---|---|---|---|---|
Master | 主轴 | _sAXIS_REF | - | 指定主轴。 *1 |
Slave | 从轴 | _sAXIS_REF | - | 指定从轴。*1 |
- 1.请使用在Sysmac Studio的轴基本设定画面中创建的用户定义变量的轴变量名称(默认 “MC_Axis***”)或系统定义变量的 轴变量名称(_MC_AX[], _MC1_AX[], _MC2_AX[*])。
- 使用注意事项
- 主轴和从轴指定同一轴时,会发生轻度故障等级的“主轴从轴相同(错误代码:5436 Hex)”的异常。
功能说明
- 通过Slave(从轴) 指定动作对象轴,指定RatioNumerator(齿轮比分子)、RatioDenominator( 齿轮比分母) 、ReferenceType(位置类型选择) 、Acceleration(加速度) 、Deceleration(减速度),进行齿轮动作。
- 可对Master(主轴)指定指令位置和反馈位置、最新的指令位置。
- 开始动作后,Slave(从轴)以Master(主轴)速度乘以齿轮比得到的速度为目标速度,进行加减速动作。
- 达到目标速度之前称为Catching phase(追赶中)、达到后称为InGear phase(齿轮同步中)。
- 齿轮比为正数时,Slave(从轴)沿Master(主轴)的同方向移动。
- 齿轮比为负数时,Slave(从轴)沿Master(主轴)的反方向移动。
- 在Execute(启动)的上升沿,开始电子齿轮动作。
- 使用注意事项
- Ver.1.09以下的CPU单元使用本指令时,请勿对Master(主轴)执行MC_SetPosition(当前位置变更)指令。
- 对Master(主轴)执行MC_SetPosition(当前位置变更)指令时,可能出现Slave(从轴)急速跟踪的情况,非常危险。
- 要对Master(主轴)使用MC_SetPosition(当前位置变更)指令时,请解除Master(主轴)和Slave(从轴)的关系后执行该指令。
- 有关对于主轴的注意事项,请参阅“同步控制的主轴及辅轴的注意事项(P.1-6)”。
► ReferenceType(位置类型选择)
- 可从下列选项中选择位置的类型。
- _mcCommand:指令位置(最近任务周期下的计算值)对当前周期,使用之前任务周期时计算的主轴指令位置。
- 在计算从轴指令位置之前的固定周期任务中,使用计算的主轴指令位置。
- _mcFeedback:同一任务周期下的取值使用同一任务周期时获取的主轴反馈位置。
- _mcLatestCommand:指令位置(同一任务周期下的计算值)使用同一任务周期时计算的主轴指令位置。
- 也可通过_mcCommand使用最新信息。
- 但是,设定时必须保证主轴编号比从轴编号小。
- 否则,本指令的Error(错误)将变为TRUE。
- ErrorID(错误代码)输出“主轴/从轴 轴号非升序(错误代码:5438 Hex)”。
- 使用注意事项
- 这里的任务周期分为原始恒定周期任务的周期和固定周期任务(执行优先度5)的周期。
- 同样,固定周期任务表示原始恒定周期任务或固定周期任务(执行优先度5)。
- 参考
- 相比选择之前任务周期时的计算值,选择同一任务周期时计算的指令位置时,同步精度更高。
- 但是必须使用主轴、从轴,确保“Master(主轴)设定的运动控制系统变量的轴号 < Slave(从轴)设定的运动控制系统变量的轴号”。
► 轴种类与位置类型的关系
- 可监控的轴种类和要监控的位置类型的关系如下所示。
轴种类 | ReferenceType | |
---|---|---|
_mcCommand、或 _mcLatestCommand |
_mcFeedback | |
伺服轴 | ○ | ○ |
编码器轴 | × *1 | ○ |
虚拟伺服轴 | ○ | ○ |
虚拟编码器轴 | × *1 | ○ |
- 1.启动指令时,发生“超过位置类型选择范围(错误代码:5430Hex)”错误。
- ○虚拟伺服轴○○虚拟编码器轴×○
▶时序图
- 在启动Execute(启动)的同时,Busy(执行中)变为TRUE。
- 在下一个周期Active(控制中)变为TRUE。
- 达到目标速度时,InGear(达到齿轮比)变为TRUE。
- 利用其它指令中断本指令时,CommandAborted(执行中断)变为TRUE,Busy(执行中)、Active(控制中)、InGear(达到齿轮比)变为FALSE。
- 要中途结束电子齿轮动作,可使用MC_GearOut(齿轮动作解除)指令、或MC_Stop(强制停止)指令。
- 可在输入变量中指定Acceleration(加速度)、Deceleration(减速度)。
- 将Acceleration(加速度)或Deceleration(减速度)指定为“0”并启动时,不作加减速而达到目标速度。
▶重启运动指令
- 在定位动作中变更输入变量,再次将Execute(启动)设为TRUE,可变更本指令的动作。
- 重启运动指令可变更的输入变量为,RatioNumerator(齿轮比分子)、RatioDenominator(齿轮比分母)、Acceleration(加速度)、Deceleration(减速度)。
- 重启运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
- 作为参考,通过Catching phase(追赶中)重启,变更Acceleration(加速度)时的时序图如下所示。
- 通过InGear phase(齿轮同步中)重启,变更RatioNumerator(齿轮比分子)、RatioDenominator(齿轮比分母)时的时序图如下所示。
- 动作与Acceleration(加速度)和Deceleration(减速度)均设为“0”时相同。
▶多重启动运动指令
- 多重启动运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
► 其它指令执行中的本指令启动
- 对当前正在执行的指令启动本指令,可切换或缓存到本指令。
- 各轴可缓存到1个。
- 多重启动指令时的本指令的动作由BufferMode(缓存模式选择)指定。
缓存模式选择 | 说明 |
---|---|
中断 | 立即中止当前正在执行的指令,切换为本指令。 轴的动作方向因指令切换而反转时,根据轴参数中的“反转时动作”进行反转。 |
等待 | 当前正在执行的指令正常完成后,已缓存的本指令自动启动。 |
- 关于BufferMode(缓存模式选择),请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
► 本指令执行中的其它指令启动
- 可对从轴以中断方式执行指令的多重启动。
- 此时,中止齿轮动作,开始多重启动的动作。
- 无法以非中断方式多重启动指令。
▶异常
- 在执行本指令中发生异常时,Error(错误)变为TRUE,轴停止动作。
- 可查看ErrorID(错误代码)的输出值,了解发生异常的原因。
- 参考
- 同步控制中,不受主轴的异常状态的影响。
- 主轴的异常状态解除,正常动作时,从轴继续进行电子齿轮动作。
- 启动本指令时以及执行本指令中,从轴发生异常时,不会对主轴产生影响。
► 错误代码
- 关于指令发生的异常,请参阅“A-1 错误代码一览(P.A-2)”。
示例程序
- 下面,对与齿轮比成正比动作的示例程序进行说明。
- 参考
- 作为保留(Reserved)处理的输入变量只能指定为初始值。
- 本例中,不指定参数。
▶参数设定
- 该示例程序中使用的最少的必要设定如下所示。
► 轴参数的设定
轴种类
轴 | 轴种类 |
---|---|
轴1 | 伺服轴(主轴) |
轴2 | 伺服轴(从轴) |
轴3 | 伺服轴(从轴) |
计数器模式
轴 | 计数器模式 |
---|---|
轴1 | 旋转模式 |
轴2 | 旋转模式 |
轴3 | 旋转模式 |
环计数器
轴 | 上限值 | 下限值 |
---|---|---|
轴1 | 360 | 0 |
轴2 | 360 | 0 |
轴3 | 360 | 0 |
坐标单位选择
轴 | 坐标单位 |
---|---|
轴1 | mm |
轴2 | mm |
轴3 | mm |
▶动作示例
1 主轴的开始
- 主轴(轴1)是实际上的伺服轴,控制速度进行动作。
2 从轴的启动
- 主轴的反馈速度达到目标速度后,相对主轴的反馈位置,从轴(轴2)以齿轮比1:2进行齿轮动作,从轴(轴3)以齿轮比2:3进行齿轮动作。
3 从轴的停止
- 主轴的反馈位置(MC_Axis000.Act.Pos)达到1000.0以上时,解除轴2的齿轮动作,以减速度DecRate使轴2减速停止。
- 此时,轴3继续进行齿轮动作。
▶梯形图
► 主要变量
名称 | 数据类型 | 初始值 | 注释 |
---|---|---|---|
MC_Axis000 | _sAXIS_REF | - | 是主轴轴1的轴变量。 |
MC_Axis000.Act.Pos | LREAL | - | 表示轴1的反馈当前位置。 |
MC_Axis001 | _sAXIS_REF | - | 是从轴轴2的轴变量。 |
MC_Axis002 | _sAXIS_REF | - | 是从轴轴3的轴变量。 |
Pwr1_Status | BOOL | FALSE | 分配给MC_Power的实例PWR1的输出变量Status的 变量。进入伺服ON状态时,该变量变为TRUE。 |
Pwr2_Status | BOOL | FALSE | 分配给MC_Power的实例PWR2的输出变量Status的 变量。进入伺服ON状态时,该变量变为TRUE。 |
Pwr3_Status | BOOL | FALSE | 分配给MC_Power的实例PWR3的输出变量Status的 变量。进入伺服ON状态时,该变量变为TRUE。 |
StartPg | BOOL | FALSE | 如果该变量为TRUE,EtherCAT的过程数据通信已 建立,则进入伺服ON状态。 |
Vel_InVel | BOOL | FALSE | 分配给MC_MoveVelocity的实例VEL的输出 InVelocity的变量。达到目标速度时,该变量变为 TRUE。 |
Gearin1_Act | BOOL | FALSE | 分配给MC_GearIn的实例GEARIN1的输出Active的 变量。GEARIN1变为控制中时,该变量变为 TRUE。 |
Gearout_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_GearOut的实 例GEAROUT。 |
► 时序图
► 示例程序
► 内联ST的内容
IF (Gearin1_Act=TRUE) AND (MC_Axis000.Act.Pos>=LREAL#1000.0) THEN
Gearout_Ex := TRUE;
END_IF
▶结构文本(ST)
► 主要变量
名称 | 数据类型 | 初始值 | 注释 |
---|---|---|---|
MC_Axis000 | _sAXIS_REF | - | 是主轴轴1的轴变量。 |
MC_Axis000.Act.Pos | LREAL | - | 表示轴1的反馈当前位置。 |
MC_Axis001 | _sAXIS_REF | - | 是从轴轴2的轴变量。 |
MC_Axis002 | _sAXIS_REF | - | 是从轴轴3的轴变量。 |
Pwr1_Status | BOOL | FALSE | 分配给MC_Power的实例PWR1的输出变量Status的 变量。进入伺服ON状态时,该变量变为TRUE。 |
Pwr2_Status | BOOL | FALSE | 分配给MC_Power的实例PWR2的输出变量Status的 变量。进入伺服ON状态时,该变量变为TRUE。 |
Pwr3_Status | BOOL | FALSE | 分配给MC_Power的实例PWR3的输出变量Status的 变量。进入伺服ON状态时,该变量变为TRUE。 |
StartPg | BOOL | FALSE | 如果该变量为TRUE,EtherCAT的过程数据通信已 建立,则进入伺服ON状态。 |
Vel_InVel | BOOL | FALSE | 分配给MC_MoveVelocity的实例VEL的输出 InVelocity的变量。达到目标速度时,该变量变为 TRUE。 |
Gearin1_Act | BOOL | FALSE | 分配给MC_GearIn的实例GEARIN1的输出Active的 变量。GEARIN1变为控制中时,该变量变为 TRUE。 |
Gearout_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_GearOut的实 例GEAROUT。 |
Vel_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_MoveVelocity 的实例VEL。 |
Gearin1_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_GearIn的实 例GEARIN1。 |
Gearin2_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_GearIn的实 例GEARIN2。 |
InitFlag | BOOL | FALSE | 表示输入参数设定完成。 FALSE时,设定输入参数。输入参数设定完成后, 变为TRUE。 |
► 时序图