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ÿ…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
智警杯备赛--excel模块
数据透视与图表制作 创建步骤 创建 1.在Excel的插入或者数据标签页下找到数据透视表的按钮 2.将数据放进“请选择单元格区域“中,点击确定 这是最终结果,但是由于环境启不了,这里用的是自己的excel,真实的环境中的excel根据实训…...











