机器自动化控制器——第一章 运动控制指令概要
1-1 运动控制指令
要从NJ/NX系列的用户程序执行运动控制功能,需要使用作为功能块定义的运动控制指令。
MC功能模块的运动控制指令以PLCopen®的运动控制用功能块的技术规格为基础。
运动控制指令有PLCopen®定义的指令和MC功能模块独有的指令两种。
下面对PLCopen®运动控制用功能块和运动控制指令的概要进行说明。
运动控制指令的详情请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”。
Ver.1.05以上的CPU单元和Ver.1.06以上的Sysmac Studio组合时,可使用NX系列位置接口单元。
使用NX系列位置接口单元时,请参阅 “NX系列 位置接口单元 用户手册(SBCE-374)”
PLCopen®运动控制用功能块
- PLCopen®对运动控制用功能块进行了标准化,制定了IEC 61131-3(JIS B 3503)规格语言程序接口的定义。
- 除了单轴定位、电子凸轮功能、多轴插补控制等功能,还对启动指令的基本步骤进行了定义。
- 利用PLCopen®运动控制用功能块,可以减小对硬件的依赖,提高用户程序的再利用率。 还能降低培训、支持等的成本。
参考
何谓PLCopen®
PLCopen®是总部在欧洲的IEC 61131-3推广团体,是一个全球性的会员组织。
IEC 61131-3是PLC编程的国际标准规格。
PLCopen®Japan是日本市场的推广委员会,由关注日本市场的会员构成。
• PLCopen®Japan的网址:http://www.plcopen-japan.jp/
• PLCopen®欧洲总部网址:http://www.plcopen.org/
运动控制指令概要
- 下面对PLCopen®运动控制用功能块技术规格所定义的项目和MC功能模块中的概要进行说明。
▶ 运动控制指令的种类
-
- 下表所示为运动控制指令的种类和概要。
种类 | 种类 | 功能项目 | 概要 |
---|---|---|---|
通用指令 | 通用的管理类指令 | 凸轮表 | 控制MC功能模块的通用状态、操作或监视各种数 |
参数 | |||
轴指令 | 单轴的动作类指令 | 单轴位置控制 | 使轴执行单轴动作的指令。 |
单轴速度控制 | |||
单轴转矩控制 | |||
单轴同步控制 | |||
单轴手动操作 | |||
单轴的管理类指令 | 单轴控制辅助 | 控制、监视轴状态的指令。 | |
轴组指令 | 多轴的动作类指令 | 多轴协调控制 | 使轴组执行协调动作的指令。 |
多轴的管理类指令 | 多轴协调控制辅助 | 控制、监视轴组状态的指令。 |
▶ 状态变化
-
- 对轴的状态、轴组的状态及指令启动引发的状态变化进行定义。
- 关于MC功能模块的状态和状态变化,请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制篇 (SBCE-363)”。
▶ 运动控制指令的启动和状态
-
- 将启动指令的变量及表示指令执行状态的变量作为指令的通用规则进行定义。
- 启动指令的输入变量有Execute和Enable两类。
- 表示指令执行状态的输出变量有Busy、Done、CommandAborted、Error等。
- 关于MC功能模块的详细规格,请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”。
使用注意事项
手册中记载的时序图可能与Sysmac Studio的数据跟踪中显示的时序不同。
关于数据跟踪的详情,请参阅 “NJ/NX系列 CPU单元 用户手册 软件篇(SBCA-359)”。
▶ 异常处理
-
- MC功能模块的运动控制通过运动控制指令执行。执行运动控制指令时,检查输入参数的错误及指令处理 导致的异常。
- 指令有异常时,指令的输出变量Error(错误)变为TRUE,并将异常代码输出到ErrorID(错误代码)。
- 运动控制指令可通过2种方法编写异常处理程序。
► 按指令进行异常处理
可利用指令的输出变量Error(错误)或ErrorID(错误代码),对每个发生异常的指令进行异常处理。
以下是判定实例名称为 “PWR1”的指令发生 “轴指定错误”的例子。程序编制为 “NoAxisErr”变为 TRUE时执行异常处理。
**► 按种类进行异常处理**
种类进行异常处理 可利用运动控制系统变量的异常状态,对每一类异常进行异常处理。
以下是判定 “MC_Axis000”的轴发生 “从站通信异常”的例子。程序编制为 “ConnectErr”变为TRUE时 执行异常处理
▶ 执行运动控制指令时输入变量的变更(指令重启)
-
- 在执行运动控制指令时变更相同指令实例的输入变量值,再次将Execute变为TRUE,即以变更后的值进行 动作。
- 关于MC功能模块的指令重启,请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”
▶ 通过选择缓存模式执行指令多重启动
-
- 可以在动作中执行其他指令实例。
- 可通过设定名为缓存模式选择(BufferMode)的输入来指定动作开始的时间。
- 缓存模式选择(BufferMode)中有以下模式可选。
-
- • 中断 :中断(Aborting)
- • 等待 :等待(Buffered)
- • 以低速合并 :低速合并(BlendingLow)
- • 以前一个速度合并 :以前一个速度合并(BlendingPrevious)
- • 以后一个速度合并 :以后一个速度合并(BlendingNext)
- • 以高速合并 :以高速合并(BlendingHigh)
- 若选择中断模式,则中断其他动作立即执行新指令。
- 选择其他缓存模式时,会一直等待,直到执行中的指令的输出变量Done及InVelocity变为TRUE。
- 在等待模式下,执行中的指令动作正常结束(Done = TRUE)后再执行下一个指令。
- 在合并模式下,不停止且连续执行两个指令的动作。连续执行动作的速度可从四种缓存模式中选择。
- MC功能模块中通过缓存模式选择(BufferMode)执行的指令多重启动只表述为指令多重启动进行说明。
- 关于MC功能模块的指令多重启动,请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”。
- MC功能模块的指令多重启动是否可以执行,取决于当前的轴状态或当前的轴组状态以及所执行的指令的 种类。相关详情请参阅 “A-3 多重启动可否(P.A-83)”
▶ 通过运动控制使用的结构体
-
- PLCopen技术资料对运动控制所需的信息作为结构体进行定义。对数据类型的名称及概要作出了定义, 但没有对结构体的内容作出定义。
- PLCopen中的主要数据类型和MC功能模块使用的数据类型如下所示。
数据类型 定义 PLCopen® MC功能模块 AXIS_REF _sAXIS_REF 包含对应轴信息的结构体。 AXES_GROUP_REF _sGROUP_REF 包含对应轴组信息的结构体。 TRIGGER_REF _sTRIGGER_REF 包含触发输入相关信息的结构体。
• 触发指定
• 检测模式信息(正、负、两者、边缘、电平、模式识别等)INPUT_REF - 包含输入规格相关信息的结构体。有时为虚拟数据。
MC功能模块中未使用。OUTPUT_REF _sOUTPUT_REF 与物理性输出相关的结构体。
MC功能模块中,Ver.1.06以上的CPU单元和Ver.1.07以上的
Sysmac Studio组合时使用。 -
- 如上表所示,MC功能模块使用一部分PLCopen定义的数据类型和MC功能模块独自定义的数据类型。
- 关于MC功能模块使用的数据类型和结构体的定义,请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制 篇(SBCE-363)”。
同步控制的主轴及辅轴的注意事项
- 以下是同步控制的主轴及辅轴在速度发生急剧变化时的注意事项和发生异常的条件。
▶ 速度急剧变化时
-
- 同步动作开始或动作过程中主轴及辅轴的速度发生急剧变化时,从轴的动作会急剧变化,可能对装置施 加过度的力。
- 在以下条件下,主轴及辅轴的速度有可能发生急剧变化,请予注意。
- • 主轴及辅轴执行以下4种指令时
- MC_ImmediateStop(立即停止)指令
- MC_SetPosition(变更当前位置)指令
- MC_ResetFollowingError(偏差计数器复位)指令
- MC_SyncMoveVelocity(周期同步速度控制)指令
- 请正确设置上述指令的输入参数及启动时间,或者在解除同步控制后再启动上述指令,以防止从轴急 剧动作。
- • 主轴及辅轴的立即停止输入信号、极限停止输入信号变为TRUE时
- • 主轴及辅轴从伺服ON状态变为伺服OFF状态时 主轴及辅轴为垂直轴等时,在变为伺服OFF的状态时速度可能会发生急剧变化。 请采取对主轴或辅轴设置制动器、或者在同步控制结束后再变为伺服OFF状态等对策,防止从轴急剧 动作
- • 切换伺服驱动器的控制模式时 请注意指令启动时的速度变化。 请恰当设置指令的输入参数
版本相关信息
Ver.1.10以上的CPU单元中,即使使用MC_SetPosition(当前位置变更)指令变更同步控制指令的主 轴或辅轴的指令当前位置,从轴的动作也不会急剧变化。
▶ 发生异常的条件
-
- 有NJ/NX系列CPU单元通用的条件和NX701CPU单元独有的条件。
► NJ/NX系列CPU单元通用的条件
开始同步动作时或同步动作过程中,主轴及辅轴发生以下四个条件时,从轴会发生“主轴位置读取异常” 或 “辅轴位置读取异常”。
同时,同步控制指令的输出变量 “CommandAborted(执行中断)”变为TRUE。 • EtherCAT的过程数据通信未建立时 • 在 “EtherCAT的通信未建立”的状态下发生 “从站通信异常”时
• 发生 “不能计算绝对值编码器当前位置”的异常时
• 从站脱离时 对从轴执行了同步控制指令多重启动时,如下所示。
• 多重启动时,即使主轴及辅轴发生上述4个条件中的任意一个,也将正常受理多重启动,进入缓冲 状态。
• 执行多重启动、缓冲状态的指令开始动作时,只要不发生上述4个条件中的任意一个,便可开始动作。
参考
对主轴及辅轴启动MC_Home或MC_HomeWithParameter、或者使用绝对值编码器的轴执行 MC_Power时,从轴会忽视主轴及辅轴的位置变化。
因此,由于原点确定时的处理,从轴不会急剧动作。
► NX701CPU单元的条件
将主轴及辅轴的任务和从轴的任务分配至不同任务时,从轴将会发生 “主轴指定错误(错误代码: 5462 Hex)”,同步控制指令的输出变量 “Error(错误)”变为TRUE。
1-2 运动控制指令的基本知识
下面对使用CPU单元内置的MC功能模块的运动控制指令编写程序的基本规格及限制事项进行说明。
关于运动控制指令的详情,请参阅 “第 3 章 轴指令”、 “第 4 章 轴组指令”、 “第 5 章 通用指 令”。
运动控制指令的名称
-
- MC功能模块的运动控制指令可以下述编程语言使用。
- • 梯形图(LD)
- • 结构文本(ST
▶ 梯形图(LD)
-
- 将运动控制指令的指令实例配置在梯形图上。
- 可以对每个指令实例设置实例名称。
- 以下是MC_MoveAbsolute(绝对值定位)指令的记述范例。
-
- • 向输入输出变量Axis指定要控制的伺服驱动器等的轴变量名称。
- • 向各输入变量指定目标位置及目标速度等的动作条件。
- • 向各输出变量输出指令的状态及伺服驱动器的状态。
- • 省略各输入参数时,变为各输入变量的初始值。
▶ 结构文本(ST)
-
- 指定指令实例名称。
- 指令变量按照从左上到左下、从右上到右下的顺序记述。
- 以下是MC_MoveAbsolute(绝对值定位)指令的记述范例。
MC_ABS_instance ( Axis := MC_Axis001 , Execute := PTP_Absolute , Position := PTP_Position , Velocity := PTP_Velocity , Acceleration := PTP_Acc , Deceleration := PTP_Dec , Jerk := PTP_Jerk , Direction := _mcNoDirection , BufferMode := _mcAborting , Axis => MC_Axis001 , Done => PTP_Done )
运动控制指令的配置
- 以下对运动控制指令可以配置在哪个任务中、以及配置在程序的哪个位置会出现什么样的动作进行 说明。
▶ 任务种类
-
- 运动控制指令可以在原始恒定周期任务、固定周期任务(执行优先度5)及固定周期任务(执行优先度16)中使 用。若在上述以外的任务中使用运动控制指令,实施编连时会发生异常。
任务种类 可否使用 备注 原始恒定周期任务 可以 • 不指定轴/轴组的通用指令
• 针对分配至原始恒定周期任务的轴/轴组的指令固定周期任务(执行优先度5) 可以 *1 • 不指定轴/轴组的通用指令
• 针对分配至固定周期任务(执行优先度5)的轴/轴组的指令固定周期任务(执行优先度16) 可以 • 不指定轴/轴组的通用指令
• 针对分配至原始恒定周期任务的轴/轴组的指令固定周期任务(执行优先度17) 不可 固定周期任务(执行优先度18) 不可 事件任务(执行优先度 8) 不可 事件任务(执行优先度 48) 不可 *1 仅NX701 CPU单元可使用。
*2 无法在NX1P2 CPU单元中使用。
▶ 功能块定义内
-
-
运动控制指令还可在用户创建的功能块定义内使用。
-
参考
将由多个动作组合而成的工序创建成一个功能块,可以通过程序结构化提高设计效率,改善程 序的识别性。
-
▶ 主站控制区域
-
- 在梯形图程序中,从MC指令(主站控制开始指令)到MCR指令(主站控制结束指令)的区域就是主站控制 区域。
- 在梯形图程序中,从MC指令(主站控制开始指令)到MCR指令(主站控制结束指令)的区域就是主站控制 区域。
运动控制指令配置到主站控制区域时,当MC的输入条件为FALSE时,执行以下动作。
• 从左母线直接输入到运动控制指令的输入变量Enable或Execute的指令作为FALSE动作。
• 内联ST部分如常动作。
• 运动控制指令的输入变量Enable或Execute作为FALSE动作时,输出参数值也如常更新。
► Enable型运动控制指令时
• 配置到主站控制区域的指令与下图右侧的回路等价。
• G0为TRUE时,如常动作。
• G0为FALSE时,Enable输入与FALSE相同。
使用注意事项
Execute型的运动控制指令是在上升沿开始动作,因此不推荐在主站控制区域内使用。 使用时请充分注意动作情况。
参考
• ST程序中,MC指令(主站控制开始指令)的功能无效。所有指令如常动作。
有关MC指令/MCR指令的详情,请参阅 “NJ/NX系列 指令基准手册 基本篇(SBCA-360)”
▶ ST语法指令中
-
- 下面对运动控制指令配置到IF指令、CASE指令、WHILE指令、REPEAT指令等的ST语法指令中时的情况 进行说明。
- 若与各 ST 语法指令的条件表达式的评价结果不一致,则不执行运动控制指令。也不更新指令的输出变量 值。
- 在 Execute 型指令开始执行之后,即使评价结果不一致,也会继续执行指令直到处理完成。这种情况下, 不更新指令的输出变量值。
使用注意事项
条件表达式的评价结果不一致时,由于执行中的Execute型指令的执行状态不明确,因此不建议在ST语法指令中使用。
使用时请充分注意动作情况。
参考
• 要根据条件表达式切换执行的Execute型指令,只需将Execute的输入参数配置到ST语法指令 中。Execute型指令自身配置到ST语法指令外。
关于ST语法指令的详请,请参阅 “NJ/NX系列 指令基准手册 基本篇(SBCA-360)”
▶ 实数(REAL型、LREAL型)的使用
-
- 实数(REAL型、LREAL型)是浮点型数据格式的数据类型。
- 下面对其表现方法和运算处理进行说明。
**►REAL型、LREAL型的数据大小 **
REAL型和LREAL型的数据大小不一样。
REAL型的数据大小为32位,LREAL型为64位。
► 浮点形式的数据格式
浮点形式是指通过符号、指数、尾数表示实数的形式。
某个实数以下式表示时,s的值为符号、e的值为指数、f的值为尾数。
-
REAL型
-
LREAL型
浮点形式的数据格式以IEEE754标准为依据。详见下例。
- (例) REAL型实数,表示为 “-86.625”时
1 符号的设定
由于是负数,因此s = 1。
2 2进制表示
将 “86.625”以2进制表示,为 “1010110.101”。
3 2进制数的标准化
上述值的标准化表示为 “1.010110101×26 ”。
4 指数部的表示
根据前式,e-127 = 6,因此e = 133。 “133”的2进制表示为 “10000101”,这就是指数部的表示。
5 尾数部的表示
“1.010110101”的小数点以后的数值为 “010110101”。 要将该小数点后的数值表示为23位,位数不足的部分需要附加0。以23位表示的数值为f部分。 因此,f = 01011010100000000000000。
- 也就是说,“-86.625”可以以下图表示。
► 有效范围
REAL型、LREAL型的有效范围如下表所示。
数据类型 | -∞ | 负数 | 0 | 正数 | +∞ |
---|---|---|---|---|---|
REAL | -∞ | -3.402823e+38~-1.175495e-38 | 0 | +1.175495e-38~+3.402823e+38 | +∞ |
LREAL | -∞ | -1.79769313486231e+308~ -2.22507385850721e-308 | 0 | +2.22507385850721e-308~ +1.79769313486231e+308 | +∞ |
► 特殊值
“+∞”、“-∞”、“+0”、“-0”、非数被称为特殊值。
非数是指不视为浮点数的数据,不作为数值处理。
“+0”和 “-0”虽然在数学上的含义都为 “0”,但运算处理的内容却不同。
详情将于下文阐述。
特殊值的符号s、指数e、尾数f的值请见下表。
数据类型 | 特殊值 | 符号s | 指数e | 尾数f |
---|---|---|---|---|
REAL | +∞ | 0 | 255 | 0 |
-∞ | 1 | 255 | 0 | |
+0 | 0 | 0 | 0 | |
-0 | 1 | 0 | 0 | |
非数 | - | 255 | 0以外 | |
LREAL | +∞ | 0 | 2047 | 0 |
-∞ | 1 | 2047 | 0 | |
+0 | 0 | 0 | 0 | |
-0 | 1 | 0 | 0 | |
非数 | - | 2047 | 0以外 |
► 非标准化数
浮点形式无法表示接近于 “0”的数值(绝对值非常小的值)。
因此,为扩大接近于 “0”的数值的有效范围而设置了非标准化数值。
比起以通常数据格式表示的数值,非标准化数可以表示绝对值很小的值。
参考
以通常数据格式表示的值叫做标准化数。
-
指数e=0、尾数f≠0的数值被看作非标准化数,其值如下表示。
-
REAL型
- LREAL型
(例) REAL型实数,表示为 “0.75×2-127”时
1符号的设定
由于是正数,因此s=0。
2 2进制表示
将 “0.75”以2进制表示,为 “0.11”。
3 尾数部的计算
根据(0.11)2 ×2-127 = 2-126(f×2-23) ,得出f = (0.11)2 ×222。
4 尾数部的表示
由上式可知:f = 01100000000000000000000。
- 也就是说,“0.75×2-127”可以以下图表示。
- 与标准化数相比,非标准化数的有效位数较少。因此,标准化数的运算结果转换为非标准化数、或者运 算途中的结果转换为非标准化数时,运算结果的有效位数可能达不到标准化数的有效位数。
**► 运算处理 **
浮点形式表示的是近似值,与实际值之间存在误差。值的有效范围也有限制。因此,在运算时应执行以 下处理。
取整
实际值超过尾数的有效位数时,按照以下规则对值进行取整。
• 将浮点形式表现的数值中最接近实际值的值作为运算结果。
• 在浮点形式表现的值中有两个最接近实际值的值时,将尾数最低位位值为“0”的值作为运算结果。 有两个最接近实际值的值时,实际值相当于两个近似值的中间值。
溢出、下溢
实际值的绝对值大于以浮点形式表示的值,叫做溢出。相反,若小于以浮点形式表示的值,则叫做下溢。
• 溢出时,如果实际值的符号为正,则运算结果为 “+∞”。 如果实际值的符号为负,则运算结果为 “-∞”。
• 下溢时,如果实际值的符号为正,则运算结果为 “+0”。 如果实际值的符号为负,则运算结果为 “-0”。
特殊值的运算
特殊值的运算应遵守以下规则。
关于特殊值,请参阅 “特殊值(P.1-15)”。
• “+∞”和 “-∞”的相加结果为非数。
• 符号相同、无穷大之间的减法运算结果为非数。
• “+0”和无穷大、“-0”和无穷大的乘法运算结果为非数。
• “+0”之间的除法运算结果、“-0”之间的除法运算结果、无穷大之间的除法运算结果均为非数。
• “+0”和 “-0”的相加结果为 “+0”。
• “+0”之间的减法运算结果、“-0”之间的减法运算结果为 “+0”。
• 含有非数的四则运算结果为非数。
• 在CMP指令等比较指令中,将 “+0”和 “-0”判断为相等。
• 在比较指令中,如果比较对象包括非数,则始终判断为不相等。
使用注意事项
MC功能模块中,电子齿轮的设定值及运动控制指令的目标位置等使用浮点(LREAL)的变量。因 此,运算结果包含取整误差。
例如,重复执行MC_MoveRelative(相对值定位)指令时,误差会不断累积。
若误差累积造成问题,请将指令单位设置为[pulse],或者指定类似于MC_MoveAbsolute(绝对值 定位)指令的绝对位置。
运动控制指令的同时启动
- 以下对在同一个任务周期内对同一个轴启动多个运动控制指令时的情况进行说明。
• 下图程序中,触点a “ON”时,指令实例[Move1]和[Move2]在同一个任务周期内同时启动。
• 程序中记述的指令实际上按从上往下的顺序启动,因此[Move1]先启动,[Move2]在[Move1]动作完成之 前启动。
• 这相当于运动控制指令的多重启动。在该程序中,[Move2]相对于[Move1]以Blending进行多重启动。
- 关于各运动控制指令的多重启动的详情,请参阅 “NJ/NX系列 CPU单元 用户手册 运动控制篇 (SBCE-363)”。
参考
若如上所示,同时启动MC_SetOverride(超调值设定)指令,则下侧的超调值生效。通过 MC_SetOverride(超调值设定)指令区别使用多个超调值时,建议按以下方式编程。
运动控制指令的在线编辑
- Sysmac Studio的在线编辑功能可以对于运动控制指令执行以下操作。
在线编辑操作 |
---|
删除运动控制指令 |
添加运动控制指令 |
添加运动控制指令的输入、输出、输入输出变量 |
变更运动控制指令的输入、输出、输入输出变量 |
删除运动控制指令的输入、输出、输入输出变量 |
使用注意事项
如果在轴动作中删除MC_Stop(强制停止)指令、MC_GroupStop(轴组强制停止)指令等停止轴动作 的指令,在某些用户程序内容下,轴的动作可能无法停止。
对运动控制指令执行在线编辑时,请确认安全后再使用。
CPU单元的动作模式切换
- NJ/NX系列的CPU单元的动作模式有程序模式和运行模式两种。
- 下面对切换动作模式时的MC功能模块的动作进行说明。
▶ 从运行模式切换到程序模式
-
-
• 会中断执行中的运动控制指令。输出变量CommandAborted(执行中断)保持FALSE,但轴的动作与 CommandAborted(执行中断)为TRUE时相同。
-
• 轴在动作中时,以最大减速速度减速并停止。伺服ON/OFF状态保持不变。
-
• 如果正在通过凸轮表保存指令执行凸轮表保存,则继续进行保存处理。
-
• 如果正在通过凸轮表生成指令执行凸轮表生成,则会继续执行生成处理。
-
• 配置到执行优先度为16的固定周期任务中的运动控制指令,在执行此任务的最终指令后再执行上述 处理。
-
▶ 从程序模式切换到运行模式
-
- • 运动控制指令的输出变量会被清除。
- • 从运行模式变更为程序模式时,轴会减速停止。如果在减速停止过程中返回运行模式,由于运动控 制指令的输出变量会被清除,已执行过的运动控制指令的CommandAborted(执行中断)会保持FALSE 不变。
标签:omron,概要,MC,控制指令,动作,指令,运动,执行 From: https://blog.csdn.net/qq_58801558/article/details/142146501参考
• 动作模式切换后想要浏览运动控制指令的输出变量时,请分配输出参数属性为保持属性的 变量。 浏览分配的输出参数,便可以查看切换动作模式前的输出变量。
• 即使切换动作模式,伺服ON/OFF的状态仍会保持不变。