CMP FB介绍

<< 点击显示目录 >>

主页  轴控开发使用手册 > 轴控应用 > 18.ACOPOS功能块 >

CMP FB介绍

1. 基本信息

编写人

穆珊珊

审核人

(检查,测试,注释)

应用归属

运动控制

软件信息

 

硬件信息


其他

 

版本信息

修改内容

修改人

V1.00

创建

穆珊珊

 

2. 简介

CMP:比较器

该功能块创建了一个可以配置的比较器。比较器的具体形式由模式来设置。

 

3. ParID

ParID名字

缩写

访问方式

数据类型

数据范围

初始值

描述

CMP_MODE

m

RD,WR

UI2

0-15

0

功能模式

CMP_IN_PARID

*x

RD,WR

UI2

<ParID>,0

0

输入值的ParID(指向输入值)

CMP_THRESHOLD

th

RD,WR

R4

 

0.0

临界值(窗口位置)

CMP_WINDOW

w

RD,WR

R4

>=0.0

0.0

窗口

CMP_HYSTERESIS

h

RD,WR

R4

>=0.0

0.0

迟滞窗口

CMP_VALUE

y

RD

UI1

0,1

0

结果(输出)

 

4. 功能

比较器将输入信号*x与设定的临界值(level)th / 窗口(th-w, th+w)比较,根据设置的比较模式(<, <=, ==, !=, >=, >),输出一个逻辑值到输出端y。比较器可以设置为电平检测或是边沿检测。不管是比较模式还是检测模式都是通过m设置的。为了避免配置过程中产生错误,可以先通过设置m把输出置为0或1(m=0或m=7),或者将输出“冻结”(m=8或m=15)。

迟滞功能(施密特触发器):

为了防止输入信号抖动需要设置一个迟滞窗口h。设置h != 0可以激活迟滞比较器。设置的临界值(level)th / 窗口(th-w, th+w)作为switch on的临界值(窗口)。而关闭的临界值,则根据不同的比较器模式,在迟滞窗口附近变动。

比较器的模式不同,输出临界值(窗口)也会在开关迟滞窗口附近变动。

使用限制:

比较器运行时是按FLOAT型处理的。参数(th, w, h)都配置为FLOAT型,输入也会转换为FLOAT型。所以,INT32类型的上限临界值不能精确的设定。该模式不适合于会溢出的INT32类型的输入。

带溢出的INT32类型输入值的问题避免:

使用ARITH功能块(算数运算功能块有溢出处理)算数运算功能块来处理输入值。用输入值减去临界值,然后把差值输入比较器,比较器临界值设为0.0。

在线更改:

功能块激活时,在循环运行中的参数更改:

ParID名称

是否允许在线更改

说明

CMP_MODE

在开启迟滞时修改模式,临界值也会再次设置。

CMP_IN_PARID

-

CMP_THRESHOLD

-

CMP_WINDOW

-

CMP_HYSTERESIS

-

 

5. CMP_MODE参数设置

0-2位是模式设置位:

0:y = 0;

1:y = *x < threshold;

2:y = *x == threshold;

3:y = *x <= threshold;

4:y = *x > threshold;

5:y = *x != threshold;

6:y = *x >= threshold;

7:y = 1;

 

Bit3:

0:level sensitive(电平触发)

1:edge sensitive(边沿触发)

比较器所有模式下的输出状态可以用一个输入曲线来说明。比较器输出信号上的点表示了在临界值(比较器临界值或迟滞临界值)的输出值。

clip0172

当使用边沿触发比较器的时候,最开始时比较器的输出将保持原值直到第一次出现边沿改变(下图的斜线阴影部分)。

clip0173

 

其中,0~7是电平检测下的各种比较运算,8~15是边沿检测下的各种比较运算。

m = 7时,比较器输出恒为1;

m = 8,m = 15时,比较器处于“冻结”状态,继续输出之前的值。之前为0则继续输出0,之前为1则继续输出1。

举个例子来说明这个图。

m = 4时,比较器是“大于”比较符。

(1)w = 0, h = 0

 *x > th,y = 1;

 *x <= th,y = 0;

(2)w != 0, h = 0

       *x > th+w,y = 1;

       *x <= th+w,y = 0;

(3)w = 0, h != 0

       *x > th,y = 1;

       *x <= th-h,y = 0;

       th–h < *x <= th, y保持之前的值。

(4)w != 0, h != 0

       *x > th+w,y = 1;

       *x <= th+w-h,y = 0;

       th+w–h < *x <= th+w, y保持之前的值。

     

总结(3)和(4),在有迟滞的时候,比较器switch on(0->1)的临界值是th+w(在模式4下),而switch off(1->0)的临界值是th+w-h。

对于边沿检测来说,在相同模式下,和电平检测的区别就是在刚开始的时候,在第一次到达临界值之前,比较器的输出都是保持之前的值。

 

6. 例子

判断当前速度是否大于10000unit/s

clip0174