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ÿ…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...











