机器自动化控制器------第三章 轴指令 11
MC_SetPosition
- 将轴的指令当前位置和反馈当前位置变更为任意值。
指令 | 名称 | FB/ FUN | 图形表现 | ST表现 |
---|---|---|---|---|
MC_SetPosition | 当前位置变更 | FB | ![]() |
MC_SetPosition_instance ( Axis :=《参数》 , Execute :=《参数》 , Position :=《参数》 , ReferenceType :=《参数》 , Relative :=《参数》 , ExcutionMode :=《参数》 , Done =>《参数》 , Busy =>《参数》 , CommandAborted =>《参数》 , Error =>《参数》 , ErrorID =>《参数》 ); |
变量
▶输入变量
输入变量 | 名称 | 数据类型 | 有效范围 | 初始值 | 内容 |
---|---|---|---|---|---|
Execute | 启动 | BOOL | TRUE, FALSE | FALSE | 在上升沿开始指令。 |
Position | 目标位置 | LREAL | 负数、正数、"0" | 0 | 指定绝对坐标的目标位置。 单位为[指令单位]。 *1 |
ReferenceType | 位置类型选择 | eMC REFERENCE_ TYPE | 0: _mcCommand 1: _mcFeedback | 0 *2 | 指定位置类型。 0:指令位置(伺服轴、虚拟伺服轴) 1:反馈位置(编码器轴、虚拟编码器 轴) |
Relative (Reserved) | 相对位置选择 | BOOL | TRUE, FALSE | FALSE | (Reserved) |
ExecutionMode (Reserved) | 执行模式 选择 | eMC EXECUTION_ MODE | 0: _mcImmediately | 0 *2 | (Reserved) |
- 1.关于指令单位,请参阅"NJ/NX系列CPU单元用户手册运动控制篇(SBCE-363)"或"NY系列工业用平板电脑/工业用台式电脑用户手册运动控制篇(SBCE-379)"的"单位转换设定"。
- 2.有效范围为枚举体的变量,其实际初始值不是数值,而是枚举元素。
▶输出变量
输出变量 | 名称 | 数据类型 | 有效范围 | 内容 |
---|---|---|---|---|
Done | 完成 | BOOL | TRUE, FALSE | 指令执行完毕时变为TRUE。 |
Busy | 执行中 | BOOL | TRUE, FALSE | 接收指令后变为TRUE。 |
CommandAborted | 执行中断 | BOOL | TRUE, FALSE | 指令中止时,变为TRUE。 |
Error | 错误 | BOOL | TRUE, FALSE | 发生异常时变为TRUE。 |
ErrorID | 错误代码 | WORD | *1 | 发生异常时,输出错误代码。16#0000为正常。 |
-
- 请参阅 "A-1 错误代码一览(P.A-2)"
► 输出变量的反映时间
变量 | 变为TRUE的时间 | 变为FALSE的时间 |
---|---|---|
Done | 指令当前位置和反馈当前位置的变更已完成时 | • Execute为TRUE时,与Execute的FALSE同时 • Execute为FALSE时,1个周期后 |
Busy | Execute的上升沿 | • Done变为TRUE时 • Error变为TRUE时 |
CommandAborted | • 因发生异常,中止本指令时 • 发生异常过程中,启动本指令时 • 执行MC_Stop指令中,启动本指令时 | • Execute为TRUE时,与Execute的FALSE同时 • Execute为FALSE时,1个周期后 |
Error | 本指令的启动条件或输入参数中含有异常因素时 | 异常已解除时 |
▶输入输出变量
输入输出变量 | 名称 | 数据类型 | 有效范围 | 内容 |
---|---|---|---|---|
Axis | 轴 | _sAXIS_REF | - | 指定轴。 *1 |
- 1.请使用在Sysmac Studio的轴基本设定画面中创建的用户定义变量的轴变量名称(默认 "MC_Axis***")或系统定义变量的 轴变量名称(_MC_AX[], _MC1_AX[], _MC2_AX[*])。
功能说明
- 将伺服轴的指令当前位置变更为指定的目标位置。
- 此外,对编码器轴执行指令后,将反馈当前位置变更为指定的目标位置。
- 以绝对坐标的位置指定目标位置。
- 在指令当前位置变更的同时,反馈当前位置也会变更,保持该时的位置偏差进行变更。
- 对指令伺服轴执行指令后,保持当前位置和反馈当前位置的差,进行变更。
- 因此,执行本指令后,轴的反馈当前位置变为下列计算公式所示的值。
- 变更后的反馈当前位置 = 目标位置 - 变更前的位置偏差 对伺服轴指定反馈位置时,或者对编码器轴指定指令位置时,发生位置类型选择异常。
- 计数模式为[旋转模式]时,在环计数器下限值以上、低于环计数器上限值的范围内设定目标位置。
- 如果目标位置超出该范围,则环计数器发生异常。
- 计数模式为[线性模式]时,即使超出软件限制的范围,也可设定目标位置。
- 无论轴停止还是动作中,均可使用本指令。
- 使用注意事项
- 本指令完成后,指定轴的原点未确定。
- 因此,本指令完成后,无法使用如下功能和指令,敬请注意。
- 软件限制功能
- MC_MoveZeroPosition(高速原点复位)指令
- 多轴协调动作指令(直线插补和圆弧插补)
► ReferenceType(位置类型选择)
- 使用伺服轴或虚拟伺服轴时,请选择"0: _mcCommand(指令位置)"。
- 使用编码器轴或虚拟编码器轴时,请选择"1: _mcFeedback(反馈位置)"。
► 轴种类与位置类型的关系
- 可监控的轴种类和要监控的位置类型的关系如下所示。
| 轴种类 | ReferenceType ||
轴种类 | _mcCommand | _mcFeedback |
---|---|---|
伺服轴 | ○ | × |
编码器轴 | × *1 | ○ |
虚拟伺服轴 | ○ | × |
虚拟编码器轴 | × *1 | ○ |
- 1.启动指令时,发生"超过位置类型选择范围(错误代码:5430Hex)"错误。
▶时序图
► 轴处于停止状态下使用本指令时
- 在Execute(启动)的上升沿,开始当前位置的变更。
- 在启动Execute(启动)的同时,Busy(执行中)变为TRUE。
- 当前位置的变更完成时,Done(完成)变为TRUE。
► 轴动作中使用本指令时
- 在绝对位置定位中执行本指令后,随着位置的变更,动作的目标值也会变更。
- 例如,利用MC_MoveAbsolute(绝对值定位)指令,在移动到400(mm)的过程中,将当前位置由200(mm)变更为800(mm)后的轴的动作和时序图如下所示。
- 此时,由于当前值为800(mm)、目标值为400(mm),因此轴反转。
- 如下图所示,即使利用MC_MoveAbsolute(绝对值定位)指令变更了当前位置,在从新的当前位置向MC_MoveAbsolute(绝对值定位)指令指定的目标位置定位完成后,Done(完成)也变为TRUE。
- 参考
- 在MC_MoveRelative(相对值定位)指令动作中或MC_MoveVelocity(速度控制)指令动作中执行本指令后,当前位置发生变更。
- 但是,对MC_MoveRelative(相对值定位)指令和MC_MoveVelocity(速度控制)指令的动作没有影响。
- 存在已缓存指令时,切换缓存时相对变更后的位置进行定位。
▶重启动运动指令
- 无法重启本指令。
- 重启后,将发生"无法重启运动指令(错误代码:543B Hex)"错误。
▶多重启运动指令
- 多重启动运动指令的详情,请参阅"NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)"或"NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)"。
► 其它指令执行中的本指令启动
- 不能对下一个指令执行中的轴使用MC_SetPosition(当前位置变更)指令。
- 否则,会发生多重启动异常。
MC_MoveJog(微动移动)指令 | MC_MoveLink(梯形模式凸轮)指令 |
---|---|
MC_Home(原点复位)指令 | MC_CombineAxes(加减运算定位)指令 |
MC_HomeWithParameter(参数指定原点复位)指令 | MC_MoveZeroPosition(高速原点复位)指令 |
MC_CamIn(凸轮动作开始)指令 | MC_TorqueControl(转矩控制)指令 |
MC_GearIn(齿轮动作开始)指令 | MC_SyncMoveVelocity(周期同步速度控制)指令 |
MC_GearInPos(位置指定齿轮动作)指令 |
- 使用注意事项
- Ver.1.09以下版本的CPU单元时
- 请勿对MC_GearIn(齿轮动作开始)指令等的同步用指令的Master(主轴)使用MC_SetPosition(当前位置变更)指令。
- 如果对Master(主轴)使用了该指令,Master(主轴)的指令当前位置和反馈当前位置变化时,将判断为Master(主轴)发生了移动。
- 此时,Slave(从轴)将根据Master(主轴)的移动量进行动作。
- 因此,可能出现Slave(从轴)的动作急剧变化、或者凸轮结束动作等情况。
- 要对Master(主轴)使用MC_SetPosition(当前位置变更)指令时,请解除Master(主轴)和Slave(从轴)的关系后执行该指令。
- 要解除Master(主轴)与Slave(从轴)的关系时,请执行MC_GearOut(齿轮动作解除)指令等。
- 有关对于主轴的注意事项,请参阅"同步控制的主轴及辅轴的注意事项(P.1-6)"。
► 本指令执行中的其它指令启动
- 在MC_SetPosition(当前位置变更)指令执行中,执行其它的MC_SetPosition(当前位置变更)指令时,优先执行后一个MC_SetPosition(当前位置变更)指令。
- 此时,已处于执行中的前一个MC_SetPosition(当前位置变更)指令的Done(完成)变为TRUE,但是无法变更为先前设定的位置。
- 敬请注意。
▶异常
- 在执行本指令中发生异常时,Error(错误)变为TRUE,轴停止动作。
- 可查看ErrorID(错误代码)的输出值,了解发生异常的原因。
- 参考
- 在轴动作中执行本指令时,将会重启当前动作中轴的指令,重新计算定位用数据。
- 此时,如果发生异常,则当前动作中轴的指令也发生异常,本指令不会异常。
► 发生异常时的时序图
► 错误代码
- 关于指令发生的异常,请参阅"A-1 错误代码一览(P.A-2)"。