3. 轴指令(omron 机器自动化控制器)——>MC_MoveAbsolute
机器自动化控制器——第三章 轴指令 4
- MC_MoveAbsolute
- 变量
- ▶输入变量
- ▶输入输出变量
- ▶输入输出变量
- 功能说明
- ▶指令详情
- ▶时序图
- ▶重启运动指令
- ▶多重启动运动指令
- ▶异常
- 示例程序1
- ▶参数设定
- ▶动作示例
- ▶梯形图
- ▶结构文本(ST)
- 示例程序2
- ▶参数设定
- ▶动作示例
- ▶梯形图
- ▶结构文本(ST)
MC_MoveAbsolute
- 指定绝对坐标的目标位置,进行定位。
| 指令 | 名称 | FB/ FUN | 图形表现 | ST表现 |
|---|---|---|---|---|
| MC_MoveAbsolute | 绝对值定位 | FB | ![]() | MC_MoveAbsolute_instance ( Axis :=《参数》 , Execute :=《参数》 , Position :=《参数》 , Velocity :=《参数》 , Acceleration :=《参数》 , Deceleration :=《参数》 , Jerk :=《参数》 , Direction :=《参数》 , BufferMode :=《参数》 , Done =>《参数》 , Busy =>《参数》 , Active =>《参数》 , CommandAborted =>《参数》 , Error =>《参数》 , ErrorID =>《参数》 ); |
变量
▶输入变量
| 输入变量 | 名称 | 数据类型 | 有效范围 | 初始值 | 内容 |
|---|---|---|---|---|---|
| Execute | 启动 | BOOL | TRUE, FALSE | FALSE | 在上升沿开始指令。 |
| Position | 目标位置 | LREAL | 负数、正数、“0” | 0 | 指定绝对坐标的目标位置。 单位为[指令单位]。 *1 |
| Velocity | 目标速度 | LREAL | 正数 | 0 | 指定目标速度。*2 单位为[指令单位/s] 。*1 |
| Acceleration | 加速度 | LREAL | 正数或“0” | 0 | 指定加速度。 单位为[指令单位/s2]。*1 |
| Deceleration | 减速度 | LREAL | 正数或“0” | 0 | 指定减速度。 单位为[指令单位/s2]。*1 |
| Jerk | 跃度 | LREAL | 正数或“0” | 0 | 指定跃度。 单位为[指令单位/s3]。*1 |
| Direction | 方向选择 | _eMC_ DIRECTION | 0: _mcPositiveDirection 1: _mcShortestWay 2: _mcNegativeDirection 3: _mcCurrentDirection 4: _mcNoDirection | 0 *3 | 计数模式为[旋转模式]时,指定旋 转方向。 0:指定为正方向 1:指定为附近 2:指定为负方向 3:指定为当前方向 4:无方向指定 |
| BufferMode | 缓存模式选择 | _eMC_ BUFFER_ MODE | 0: _mcAborting 1: _mcBuffered 2: _mcBlendingLow 3: _mcBlendingPrevious 4: _mcBlendingNext 5: _mcBlendingHigh | 0 *3 | 指定多重启动运动指令时的动作。 0:中断 1:等待 2:以低速合并 3:以前一个速度合并 4:以后一个速度合并 5:以高速合并 |
- 1.关于指令单位,请参阅“NJ/NX系列CPU单元用户手册运动控制篇(SBCE-363)”或“NY系列工业用平板电脑/工业用台式电脑用户手册运动控制篇(SBCE-379)”的“单位转换设定”。
- 2.请务必设定目标速度。不作设定就执行动作,将发生异常。
- 3.有效范围为枚举体的变量,其实际初始值不是数值,而是枚举元素。
▶输入输出变量
| 输出变量 | 名称 | 数据类型 | 有效范围 | 内容 |
|---|---|---|---|---|
| Done | 完成 | 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 | *1 | 发生异常时,输出错误代码。16#0000为正常。 |
- 1.请参阅“A-1错误代码一览(P.A-2)”。
► 输出变量的反映时间
| 变量 | 变为TRUE的时间 | 变为FALSE的时间 |
|---|---|---|
| Done | 定位完成后 | • Execute为TRUE时,与Execute的FALSE同时 • Execute为FALSE时,1个周期后 |
| Busy | Execute的上升沿 | • Done变为TRUE时 • Error变为TRUE时 • CommandAborted变为TRUE时 |
| Active | 开始指令后 | • Done变为TRUE时 • Error变为TRUE时 • CommandAborted变为TRUE时 |
| CommandAborted | • 利用其它指令多重启动运动指令(中断),中止本 指令时 • 因发生异常,中止本指令时 • 发生异常过程中,启动本指令时 • MC_Stop指令执行中,启动本指令后 | • Execute为TRUE时,与Execute的FALSE同时 • Execute为FALSE时,1个周期后 |
| Error | 本指令的启动条件或输入参数中含有异常因素时 | 异常已解除时 |
▶输入输出变量
| 输入输出变量 | 名称 | 数据类型 | 有效范围 | 内容 |
|---|---|---|---|---|
| Axis | 轴 | _sAXIS_REF | - | 指定轴。 *1 |
- 1.请使用在SysmacStudio的轴基本设定画面中创建的用户定义变量的轴变量名称(默认“MC_Axis
”)或系统定义变量的轴变量名称(_MC_AX[],_MC1_AX[],_MC2_AX[])。
功能说明
- 指定绝对坐标的目标位置,进行定位。
- 在Execute(启动)的上升沿,开始绝对定位的动作。
- 即使原点未确定也可执行本指令。
- 可在输入变量中指定Velocity(目标速度)、Acceleration(加速度)、Deceleration(减速度)、Jerk(跃度)。
- 绝对定位的动作示例如下所示。
- 将加速度、或减速度指定为“0”并启动后,不作加减速而达到目标速度。
- 加速度为“0”时的动作示例如下所示。
- 需要平稳加减速时指定Jerk(跃度)。
- 指定Jerk(跃度)后的动作示例如下所示。
- 关于Jerk(跃度)的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
- 与指令当前位置相同,指定Position(目标位置)并启动后,轴不发生移动,但是Done(完成)将变为TRUE。
▶指令详情
- 下面对指令详细说明。
- 计数模式为[旋转模式]时,通过Direction(方向选择)指定开始定位的方向。
- 计数模式为[线性模式]时,忽略Direction(方向选择)。
- Direction(方向选择)为“指定为正方向”时,迎着正方向目标位置进行定位。
- 指令位置由“50”到“-20”定位时的动作示例如下所示。
- Direction(方向选择)为“指定为负方向”时,迎着负方向目标位置进行定位。
- 指令位置由“50”到“-20”定位时的动作示例如下所示。
- Direction(方向选择)为“无方向指定”时,迎着环计数器范围内的目标位置进行定位。
- 因此,移动方向取决于指令当前位置与目标位置的大小关系。
- 指令位置由“50”到“-20”定位时的动作示例如下所示。
- Direction(方向选择)为“无方向指定”时,可指定超出环计数器上下限设定值范围的Position(目标位置)。
- 指定了超过环计数器上限设定值的Position( 目标位置) 时,将超出设定值的移动量作为超过后的相对量进行定位。
- 因此,可实现环多圈定位。
- 指定了超过环计数器下限设定值的Position(目标位置)时,同样进行定位。
- 指令当前位置为“-20”、Position(目标位置)指定为“290”时的动作示例如下所示。
- Direction(方向选择)为“指定为附近”时,迎着指令当前位置和目标位置距离较短的方向进行定位。
- 指令位置由“50”到“-20”定位时的动作示例如下所示。
- 使用注意事项
- 正方向、负方向移动距离都相同时,动作与“指定为当前方向”时相同。
- 进行绝对值定位时,请在低于轴参数的[环计数器上限设定值]、及不低于[环计数器下限设定值]的范围内指定目标位置。
- 否则,将发生“超出目标位置设定范围(错误代码:5478Hex)”错误。
- 但是,Direction(方向选择)为“无方向指定”时,可指定超出环计数器上下限设定值范围的Position(目标位置)。
- Direction(方向选择)选择“3: _mcCurrentDirection(指定为当前方向)”时,沿着前一动作的指令方向进行动作。
- 因此,根据指令组合的不同,可能与前一动作的运动指令的输入发出指令的方向不一致。
- 使用“3: _mcCurrentDirection(指定为当前方向)”时,请通过轴变量的Dir.Posi(正方向指令中)、以及Dir.Nega(负方向指令中)确认当前方向。
► 到位检查
- 根据轴参数的[到位宽度]、[到位检查时间]的设定,进行本指令的到位检查。
▶时序图
- 在启动Execute(启动)的同时,Busy(执行中)变为TRUE。
- 在下一个周期Active(控制中)变为TRUE。
- 到达Position(目标位置)、定位完成时,Done(完成)变为TRUE。
- 利用其它指令中止本指令时,CommandAborted(执行中断)变为TRUE,Busy(执行中)、Active(控制中)变为FALSE。
▶重启运动指令
- 在定位动作中变更输入变量,再次将Execute(启动)设为TRUE,可变更本指令的动作。
- 重启运动指令可变更的输入变量有Position(目标位置)、Velocity(目标速度)、Acceleration(加速度)、Deceleration(减速度)。
- 重启运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
▶多重启动运动指令
- 多重启动运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
► 其它指令执行中的本指令启动
- 对当前正在执行的指令启动本指令,可切换或缓存到本指令。
- 各轴可缓存到1个。
- 多重启动时的本指令的动作由BufferMode(缓存模式选择)指定。
| 缓存模式选择 | 说明 | |
|---|---|---|
| 中断 | 立即中止当前正在执行的指令,切换为本指令。 轴的动作方向因指令切换而反转时,根据轴参数中的“反转时动作”进行反转。 | |
| 等待 | 当前正在执行的指令正常完成后,已缓存的本指令自动启动。 | |
| 合并 | 以当前正在执行的指令到达目标位置时的速度(中继速度)为启动速度,连续使已缓存的本 指令动作。变更当前正在执行的指令的动作,确保以中继速度到达目标位置。中继速度的 指定方法分为如下4种。 | |
| 以低速合并 | 当前正在执行的目标速度与已缓存的目标速度中,以速度较低者为中继速度。 | |
| 以前一个速度合 并 | 以当前正在执行的目标速度为中继速度。 | |
| 以后一个速度合 并 | 以已缓存的本指令的目标速度为中继速度。 | |
| 以高速合并 | 当前正在执行的目标速度与已缓存的目标速度中,以速度较高者为中继速度。 |
- 关于BufferMode(缓存模式选择),请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
► 本指令执行中的其它指令启动
- 对本指令进行多重启动运动指令时,可选择中断、等待、合并。
▶异常
- 在执行本指令中发生异常时,Error(错误)变为TRUE,轴停止动作。
- 可查看ErrorID(错误代码)的输出值,了解发生异常的原因。
► 发生异常时的时序图

► 错误代码
- 关于指令发生的异常,请参阅“A-1 错误代码一览(P.A-2)”。
示例程序1
- 下面,对基于反复多重启动的定位方法中的示例程序进行说明。
▶参数设定
- 该示例程序中使用的最少的必要设定如下所示。
► 轴参数的设定
轴种类
| 轴 | 轴种类 |
|---|---|
| 轴1 | 伺服轴 |
计数器模式
| 轴 | 计数器模式 |
|---|---|
| 轴1 | 线性模式 |
坐标单位选择
| 轴 | 坐标单位 |
|---|---|
| 轴1 | mm |
▶动作示例
- 利用MC_MoveAbsolute(绝对值定位)指令将BufferMode(缓存模式选择)设为[等待],在多重启动运动指令的同时,移动到最终目标位置。
- 到达最终目标位置后,请利用MC_ZeroPosition(高速原点复位)指令返回原点。
- 在之前的指令输出变量“Active(控制中)”为TRUE的状态下进行多重启动。
► 动作模式

1 动作开始开关的 “ON”
- 在原点开启动作开始开关,则轴1正方向50.00mm定位
2 其次,动作开始开关的 “ON”
- 接着,每当开启动作开始开关,轴1正方向100.00mm、200.00mm定位,返回原点并停止动作。
▶梯形图
► 主要变量
| 名称 | 数据类型 | 初始值 | 注释 |
|---|---|---|---|
| MC_Axis000 | _sAXIS_REF | - | 轴1的轴变量。 |
| MC_Axis000.MFaultLvl.Active | BOOL | FALSE | 轴1发生轻度故障等级的异常时变为TRUE。 |
| MC_Axis000.Details.Homed | BOOL | FALSE | 轴1为原点确定状态时变为TRUE。 |
| Pwr_Status | BOOL | FALSE | 分配给MC_Power的实例PWR的输出变量Status的变 量。进入伺服ON状态时,该变量变为TRUE。 |
| StartPg | BOOL | FALSE | 如果该变量为TRUE,EtherCAT的过程数据通信已 建立,则进入伺服ON状态。 |
► 时序图

► 示例程序







▶结构文本(ST)
► 主要变量
| 名称 | 数据类型 | 初始值 | 注释 |
|---|---|---|---|
| MC_Axis000 | _sAXIS_REF | - | 轴1的轴变量。 |
| MC_Axis000.MFaultLvl.Active | BOOL | FALSE | 轴1发生轻度故障等级的异常时变为TRUE。 |
| MC_Axis000.Details.Homed | BOOL | FALSE | 轴1为原点确定状态时变为TRUE。 |
| Pwr_Status | BOOL | FALSE | 分配给MC_Power的实例PWR的输出变量Status的变 量。进入伺服ON状态时,该变量变为TRUE。 |
| StartPg | BOOL | FALSE | 如果该变量为TRUE,EtherCAT的过程数据通信已 建立,则进入伺服ON状态。 |
| Hm_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_Home的实例 HM。 |
| Mv_Abs1_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS1。 |
| Mv_Abs2_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS2。 |
| Mv_Abs3_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS3。 |
| Mv_Zero_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveZeroPosition的实例MV_ZERO。 |
| InitFlag | BOOL | FALSE | 表示输入参数设定完成。 FALSE时,设定输入参数。输入参数设定完成后, 变为TRUE。 |
► 时序图

► 示例程序
// 未设定输入参数时的处理
IF InitFlag = FALSE THEN// MV_ABS1 参数Mv_Abs1_Pos := LREAL#50.0;Mv_Abs1_Vel := LREAL#10.0;Mv_Abs1_Acc := LREAL#1000.0;Mv_Abs1_Dec := LREAL#1000.0;Mv_Abs1_Dir := _eMC_DIRECTION#_mcNoDirection;// MV_ABS2 参数Mv_Abs2_Pos := LREAL#100.0;Mv_Abs2_Vel := LREAL#20.0;Mv_Abs2_Acc := LREAL#1000.0;Mv_Abs2_Dec := LREAL#1000.0;Mv_Abs2_Dir := _eMC_DIRECTION#_mcNoDirection;Mv_Abs2_Bm := _eMC_BUFFER_MODE#_mcBuffered;// MV_ABS3 参数Mv_Abs3_Pos := LREAL#200.0;Mv_Abs3_Vel := LREAL#30.0;Mv_Abs3_Acc := LREAL#1000.0;Mv_Abs3_Dec := LREAL#1000.0;Mv_Abs3_Dir := _eMC_DIRECTION#_mcNoDirection;Mv_Abs3_Bm := _eMC_BUFFER_MODE#_mcBuffered;// MV_ZERO 参数Mv_Zero_Vel := LREAL#250;Mv_Zero_Acc := LREAL#1000.0;Mv_Zero_Dec := LREAL#1000.0;Mv_Zero_Bm := _eMC_BUFFER_MODE#_mcBuffered;// 设定输入参数后,将 InitFlag 设为 TRUEInitFlag := TRUE;
END_IF;// 确认 StartPg 为 TRUE,且伺服驱动器处于伺服准备就绪状态,
// 则设为伺服 ON 状态。
// 如果未处于伺服准备就绪状态,则设为伺服 OFF。
IF (StartPg = TRUE) AND (MC_Axis000.DrvStatus.Ready = TRUE) THENPwr_En := TRUE;
ELSEPwr_En := FALSE;
END_IF;// 发生轻度故障等级异常时的处理
// 发生异常时的处理 (FaultHandler) 由客户根据装置进行编程。
IF MC_Axis000.MFaultLvl.Active = TRUE THENFaultHandler();
END_IF;// 在伺服 ON 状态下,且原点未确定时,进行原点复位。
IF (Pwr_Status = TRUE) AND (MC_Axis000.Details.Homed = FALSE) THENHm_Ex := TRUE;
END_IF;// 确定原点后,执行 MV_ABS1
IF Hm_D = TRUE THENMv_Abs1_Ex := TRUE;
END_IF;// 开始 MV_ABS1 后,多重启动 MV_ABS2
IF Mv_Abs1_Act = TRUE THENMv_Abs2_Ex := TRUE;
END_IF;// 开始 MV_ABS2 后,多重启动 MV_ABS3
IF Mv_Abs2_Act = TRUE THENMv_Abs3_Ex := TRUE;
END_IF;// 开始 MV_ABS3 后,多重启动 MV_ZERO
IF Mv_Abs3_Act = TRUE THENMv_Zero_Ex := TRUE;
END_IF;// MC_Power
PWR(Axis := MC_Axis000,Enable := Pwr_En,Status => Pwr_Status,Busy => Pwr_Bsy,Error => Pwr_Err,ErrorID => Pwr_ErrID
);// MC_Home
HM(Axis := MC_Axis000,Execute := Hm_Ex,Done => Hm_D,Busy => Hm_Bsy,CommandAborted => Hm_Ca,Error => Hm_Err,ErrorID => Hm_ErrID
);// MC_MoveAbsolute
MV_ABS1(Axis := MC_Axis000,Execute := Mv_Abs1_Ex,Position := Mv_Abs1_Pos,Velocity := Mv_Abs1_Vel,Acceleration := Mv_Abs1_Acc,Deceleration := Mv_Abs1_Dec,Direction := Mv_Abs1_Dir,Done => Mv_Abs1_D,Busy => Mv_Abs1_Bsy,Active => Mv_Abs1_Act,CommandAborted => Mv_Abs1_Ca,Error => Mv_Abs1_Err,ErrorID => Mv_Abs1_ErrID
);MV_ABS2(Axis := MC_Axis000,Execute := Mv_Abs2_Ex,Position := Mv_Abs2_Pos,Velocity := Mv_Abs2_Vel,Acceleration := Mv_Abs2_Acc,Deceleration := Mv_Abs2_Dec,Direction := Mv_Abs2_Dir,BufferMode := Mv_Abs2_Bm,Done => Mv_Abs2_D,Busy => Mv_Abs2_Bsy,Active => Mv_Abs2_Act,CommandAborted => Mv_Abs2_Ca,Error => Mv_Abs2_Err,ErrorID => Mv_Abs2_ErrID
);MV_ABS3(Axis := MC_Axis000,Execute := Mv_Abs3_Ex,Position := Mv_Abs3_Pos,Velocity := Mv_Abs3_Vel,Acceleration := Mv_Abs3_Acc,Deceleration := Mv_Abs3_Dec,Direction := Mv_Abs3_Dir,BufferMode := Mv_Abs3_Bm,Done => Mv_Abs3_D,Busy => Mv_Abs3_Bsy,Active => Mv_Abs3_Act,CommandAborted => Mv_Abs3_Ca,Error => Mv_Abs3_Err,ErrorID => Mv_Abs3_ErrID
);// MC_MoveZeroPosition
MV_ZERO(Axis := MC_Axis000,Execute := Mv_Zero_Ex,Velocity := Mv_Zero_Vel,Acceleration := Mv_Zero_Acc,Deceleration := Mv_Zero_Dec,BufferMode := Mv_Zero_Bm,Done => Mv_Zero_D,Busy => Mv_Zero_Bsy,Active => Mv_Zero_Act,CommandAborted => Mv_Zero_Ca,Error => Mv_Zero_Err,ErrorID => Mv_Zero_ErrID
);
示例程序2
- 计数模式为旋转模式时,为了向目标位置定位,自动识别左右哪边较近进行定位。
- 下面,对工具更换的附近控制中的示例程序进行说明。
▶参数设定
-
- 该示例程序中使用的最少的必要设定如下所示。
► 轴参数的设定
轴种类
| 轴 | 轴种类 |
|---|---|
| 轴1 | 伺服轴 |
计数器模式
| 轴 | 计数器模式 |
|---|---|
| 轴1 | 旋转模式 |
环计数器
| 轴 | 上限值 | 下限值 |
|---|---|---|
| 轴1 | 360 | 0 |
坐标单位选择
| 轴 | 坐标单位 |
|---|---|
| 轴1 | degree |
▶动作示例
- 利用绝对值定位指令的多重启动,在0~360的范围内动作的示例如下所示。
- 此外,如果当前位置超出0 ~ 360的范围,则返回0。
- 在之前的指令输出变量“Active(控制中)”为TRUE的状态下进行多重启动。
- 只有1个指令可执行单轴动作的指令多重启动。
- 本例中,将BufferMode(缓存模式选择)设为等待,使之多重启动
- 如果指定原点(0)、90、120、290等4个任意位置,则移动到该位置。
- 此时的旋转方向表现为较近方向。
- 并且,移动速度为250/s。
- 在示例程序中,按照指定为附近定位为290→90→120→原点(0)。
▶梯形图
| 名称 | 数据类型 | 初始值 | 注释 |
|---|---|---|---|
| MC_Axis000 | _sAXIS_REF | - | 轴1的轴变量。 |
| MC_Axis000.MFaultLvl.Active | BOOL | FALSE | 轴1发生轻度故障等级的异常时变为TRUE。 |
| MC_Axis000.Details.Homed | BOOL | FALSE | 轴1为原点确定状态时变为TRUE。 |
| Pwr_Status | BOOL | FALSE | 分配给MC_Power的实例PWR的输出变量Status的变 量。进入伺服ON状态时,该变量变为TRUE。 |
| StartPg | BOOL | FALSE | 如果该变量为TRUE,EtherCAT的过程数据通信已 建立,则进入伺服ON状态。 |
► 主要变量

► 示例程序



▶结构文本(ST)
► 主要变量
| 名称 | 数据类型 | 初始值 | 注释 |
|---|---|---|---|
| MC_Axis000 | _sAXIS_REF | - | 轴1的轴变量。 |
| MC_Axis000.MFaultLvl.Active | BOOL | FALSE | 轴1发生轻度故障等级的异常时变为TRUE。 |
| MC_Axis000.Details.Homed | BOOL | FALSE | 轴1为原点确定状态时变为TRUE。 |
| Pwr_Status | BOOL | FALSE | 分配给MC_Power的实例PWR的输出变量Status的变 量。进入伺服ON状态时,该变量变为TRUE。 |
| StartPg | BOOL | FALSE | 如果该变量为TRUE,EtherCAT的过程数据通信已 建立,则进入伺服ON状态。 |
| Hm_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动MC_Home的实例 HM。 |
| Mv_Abs1_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS1。 |
| Mv_Abs2_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS2。 |
| Mv_Abs3_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS3。 |
| Mv_Abs4_Ex | BOOL | FALSE | 该变量由FALSE→TRUE时,启动 MC_MoveAbsolute的实例MV_ABS4。 |
| InitFlag | BOOL | FALSE | 表示输入参数设定完成。 FALSE时,设定输入参数。输入参数设定完成后, 变为TRUE。 |
► 时序图

► 示例程序
// 未设定输入参数时的处理
IF InitFlag = FALSE THEN// MV_ABS1 参数Mv_Abs1_Pos := LREAL#290.0;Mv_Abs1_Vel := LREAL#250.0;Mv_Abs1_Acc := LREAL#1000.0;Mv_Abs1_Dec := LREAL#1000.0;Mv_Abs1_Dir := _eMC_DIRECTION#_mcShortestWay;// MV_ABS2 参数Mv_Abs2_Pos := LREAL#90.0;Mv_Abs2_Vel := LREAL#250.0;Mv_Abs2_Acc := LREAL#1000.0;Mv_Abs2_Dec := LREAL#1000.0;Mv_Abs2_Dir := _eMC_DIRECTION#_mcShortestWay;Mv_Abs2_Bm := _eMC_BUFFER_MODE#_mcBuffered;// MV_ABS3 参数Mv_Abs3_Pos := LREAL#120.0;Mv_Abs3_Vel := LREAL#250.0;Mv_Abs3_Acc := LREAL#1000.0;Mv_Abs3_Dec := LREAL#1000.0;Mv_Abs3_Dir := _eMC_DIRECTION#_mcShortestWay;Mv_Abs3_Bm := _eMC_BUFFER_MODE#_mcBuffered;// MV_ABS4 参数Mv_Abs4_Pos := LREAL#0.0;Mv_Abs4_Vel := LREAL#250.0;Mv_Abs4_Acc := LREAL#1000.0;Mv_Abs4_Dec := LREAL#1000.0;Mv_Abs4_Dir := _eMC_DIRECTION#_mcShortestWay;Mv_Abs4_Bm := _eMC_BUFFER_MODE#_mcBuffered;// 设定输入参数后,将 InitFlag 设为 TRUEInitFlag := TRUE;
END_IF;// 确认 StartPg 为 TRUE,且伺服驱动器处于伺服准备就绪状态,
// 则设为伺服 ON 状态。
// 如果未处于伺服准备就绪状态,则设为伺服 OFF。
IF (StartPg = TRUE) AND (MC_Axis000.DrvStatus.Ready = TRUE) THENPwr_En := TRUE;
ELSEPwr_En := FALSE;
END_IF;// 发生轻度故障等级异常时的处理
// 发生异常时的处理 (FaultHandler) 由客户根据装置进行编程。
IF MC_Axis000.MFaultLvl.Active = TRUE THENFaultHandler();
END_IF;// 在伺服 ON 状态下,且原点未确定时,进行原点复位。
IF (Pwr_Status = TRUE) AND (MC_Axis000.Details.Homed = FALSE) THENHm_Ex := TRUE;
END_IF;// 确定原点后,执行 MV_ABS1
IF Hm_D = TRUE THENMv_Abs1_Ex := TRUE;
END_IF;// 开始 MV_ABS1 后,多重启动 MV_ABS2
IF Mv_Abs1_Act = TRUE THENMv_Abs2_Ex := TRUE;
END_IF;// 开始 MV_ABS2 后,多重启动 MV_ABS3
IF Mv_Abs2_Act = TRUE THENMv_Abs3_Ex := TRUE;
END_IF;// 开始 MV_ABS3 后,多重启动 MV_ABS4
IF Mv_Abs3_Act = TRUE THENMv_Abs4_Ex := TRUE;
END_IF;// MC_Power
PWR(Axis := MC_Axis000,Enable := Pwr_En,Status => Pwr_Status,Busy => Pwr_Bsy,Error => Pwr_Err,ErrorID => Pwr_ErrID
);// MC_Home
HM(Axis := MC_Axis000,Execute := Hm_Ex,Done => Hm_D,Busy => Hm_Bsy,CommandAborted => Hm_Ca,Error => Hm_Err,ErrorID => Hm_ErrID
);// 绝对值定位(1)
MV_ABS1(Axis := MC_Axis000,Execute := Mv_Abs1_Ex,Position := Mv_Abs1_Pos,Velocity := Mv_Abs1_Vel,Acceleration := Mv_Abs1_Acc,Deceleration := Mv_Abs1_Dec,Direction := Mv_Abs1_Dir,Done => Mv_Abs1_D,Busy => Mv_Abs1_Bsy,Active => Mv_Abs1_Act,CommandAborted => Mv_Abs1_Ca,Error => Mv_Abs1_Err,ErrorID => Mv_Abs1_ErrID
);// 绝对值定位(2)
MV_ABS2(Axis := MC_Axis000,Execute := Mv_Abs2_Ex,Position := Mv_Abs2_Pos,Velocity := Mv_Abs2_Vel,Acceleration := Mv_Abs2_Acc,Deceleration := Mv_Abs2_Dec,Direction := Mv_Abs2_Dir,BufferMode := Mv_Abs2_Bm,Done => Mv_Abs2_D,Busy => Mv_Abs2_Bsy,Active => Mv_Abs2_Act,CommandAborted => Mv_Abs2_Ca,Error => Mv_Abs2_Err,ErrorID => Mv_Abs2_ErrID
);// 绝对值定位(3)
MV_ABS3(Axis := MC_Axis000,Execute := Mv_Abs3_Ex,Position := Mv_Abs3_Pos,Velocity := Mv_Abs3_Vel,Acceleration := Mv_Abs3_Acc,Deceleration := Mv_Abs3_Dec,Direction := Mv_Abs3_Dir,BufferMode := Mv_Abs3_Bm,Done => Mv_Abs3_D,Busy => Mv_Abs3_Bsy,Active => Mv_Abs3_Act,CommandAborted => Mv_Abs3_Ca,Error => Mv_Abs3_Err,ErrorID => Mv_Abs3_ErrID
);// 绝对值定位(4)
MV_ABS4(Axis := MC_Axis000,Execute := Mv_Abs4_Ex,Position := Mv_Abs4_Pos,Velocity := Mv_Abs4_Vel,Acceleration := Mv_Abs4_Acc,Deceleration := Mv_Abs4_Dec,Direction := Mv_Abs4_Dir,BufferMode := Mv_Abs4_Bm,Done => Mv_Abs4_D,Busy => Mv_Abs4_Bsy,Active => Mv_Abs4_Act,CommandAborted => Mv_Abs4_Ca,Error => Mv_Abs4_Err,ErrorID => Mv_Abs4_ErrID
);
相关文章:
3. 轴指令(omron 机器自动化控制器)——>MC_MoveAbsolute
机器自动化控制器——第三章 轴指令 4 MC_MoveAbsolute变量▶输入变量▶输入输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 示例程序1▶参数设定▶动作示例▶梯形图▶结构文本(ST) 示例程序2▶参数设定▶动作示例▶梯形图▶结构文…...
ai 回答HFS是什么 HTTP的文件服务器是什么
HFS(HTTP File Server)是一个基于HTTP协议的文件服务器软件,它允许用户通过浏览器访问和共享计算机上的文件。HFS的特点包括界面简洁直观、易于安装和配置、支持虚拟文件系统、多种权限设置等。用户可以轻松地在本地网络或互联网上共享文件和…...
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核启动】
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核(LiteOS-M) 轻量系统内核&#…...
若依笔记(六):前后端token鉴权体系
文章目录 前端/login后端生成token后端拦截前端的动态路由简单总结下若依的前后端token鉴权体系流程: 1、前端是通过/login接口来获取jwt-token的,jwt的配置在后端的application.yml中 2、后端处理/login请求时先检验redis中验证码然后使用spring-security内部机制(过滤链)…...
java框架
Oozie任务调度框架 Hue hadoop的WEB工具 seatunnel 数据同步框架 TIDB 大数据库支持事物 StreamX fink和spark的集成 OceanBase 阿里巴巴数据库 dooringx-lib、AntV 可视化H5工具 lowcode、Appsmith(推荐)、nocoBase 、Budibase、taskbuilder 低代…...
利器 | 测试必会之 Linux 三剑客 ( grep / awk / sed )
Linux 给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有 Windows 窗口界面直观方便。其实Linux 有自己的独特的法宝,称之为三剑客:grep,awk 和 sed。你可以用这三件法宝很方便的处理数据 :查找,分…...
【Git原理与使用】多人协作与开发模型(2)
目录 一、多人协作 (一)多人协作一 1、情景 2、 origin/master 3、git branch 4、远程链接 5、总结 (二)多人协作二 1、引言 2、情景 3、流程 4、解决方法 二、企业级开发模型 1、DevOps背景 2、DevOps是什么 3、DevCps与git的关系 4、系统开发环境 5、Git分支设计规范 6、企业…...
Linux vi常用命令
参考资料 viコマンド(vimコマンド)リファレンス 目录 一. 保存系命令二. 删除系命令三. 移动系命令四. 复制粘贴系命令 一. 保存系命令 ⏹保存并退出 :wq⏹强制保存并退出 :wq!⏹退出(文件未编辑) :q⏹强制退出(忽略已编辑内容) :q!⏹另存为 :w 新…...
天地伟业设备主动注册协议接入SVMSPro接入
天地伟业主动注册协议接入SVMSPro平台 ** 图文手册: ** 步骤一:进天地伟业网页或者NVR界面进参数配置选项,左边选网络参数-注册中心,填写平台信息 账号/密码:设备的账号密码 服务器名称:任意 IP地址&#…...
C++日期类详解 第二级支线任务
日期类的整体 class Date { public:// 构造函数Date(int year 0, int month 1, int day 1);// 打印函数void Print() const;// 日期天数Date& operator(int day);// 日期天数Date operator(int day) const;// 日期-天数Date& operator-(int day);// 日期-天数Date …...
java--通用启动/停止shell脚本
脚本 #!/bin/bash# 定义超时时间(秒) timeout10# 检查命令参数 case "$1" instart|stop|restart|help)action"$1"jar_file"$2";;*)echo "Usage: $0 {start|stop|restart|help} [jar_file]"exit 1;; esac# 定义…...
Flutter-底部选择弹窗(showModalBottomSheet)
前言 现在有个需求,需要用底部弹窗来添加定时的重复。在这里使用原生的showModalBottomSheet来实现 showModalBottomSheet的Props 名称 描述 isScrollControlled全屏还是半屏isDismissible外部是否可以点击,false不可以点击,true可以点击&a…...
Linux——k8s认识
计算资源隔离 - 更方便进行高并发架构的维护和升级 - 架构管理的灵活性更高,不再以单个节点的物理资源作为基础 技术: - 硬件辅助虚拟化 - 容器技术 在企业部署方案中,很少以单节点实现虚拟化和容器技术,一般以集群状态来运…...
EC Shop安装指南 [ Apache PHP Mysql ]
这个是软件测试课上老师布置的一个作业,期间老师也出现了不少错误,所以还是有必要记录一下吧,凑一篇文章 主要是老师的文档以及自己的一些尝试记录,试错记录,解决方案等 主要介绍了Apache的安装,MySQL的安…...
无线感知会议系列【3】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-1】
前言: 2020年北京智源大会 张大庆老师的一个报告 参考链接: 基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用_哔哩哔哩_bilibili 目录: 无线感知简介 无线感知的核心 研究方向 Frsenel 模型 基于Fresnel 感知的应用举例…...
Virtuoso服务在centos中自动停止的原因分析及解决方案
目录 前言1. 问题背景2. 原因分析2.1 终端关闭导致信号12.2 nohup命令的局限性 3. 解决方案3.1 使用 screen 命令保持会话3.2 使用 tmux 作为替代方案3.3 使用系统服务(systemd) 4. 其他注意事项4.1 网络配置4.2 日志监控 结语 前言 在使用Virtuoso作为…...
泽众P-One性能测试平台火焰图帮助定位产品性能问题
在软件开发过程中,性能问题往往是最头疼的问题之一。随着软件系统的日益复杂,快速准确地定位并解决性能问题变得尤为重要。泽众P-One作为一站式性能测试平台,通过引入火焰图性能分析可视化工具,极大地提升了性能问题的定位效率和解…...
数据结构修炼——顺序表和链表的区别与联系
目录 一、线性表二、顺序表2.1 概念及结构2.2 接口实现2.3 一些思考以及顺序表的缺点 三、链表3.1 概念及结构3.2 链表的分类3.3 链表的实现3.3.1 无头单向非循环链表3.3.2 带头双向循环链表 四、顺序表和链表的区别 一、线性表 线性表(linear list)是n…...
AD9854 为什么输出波形幅度受限??
🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…...
在grafana上配置显示全部node资源信息概览
在grafana上配置显示全部node资源信息概览,便于巡检 1,注册grafana官网账号:Grafana dashboards | Grafana Labs 2、寻找可以展示所有node资源概览信息的dashboard,并下载支持prometheus数据源的dashboardÿ…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...











