<< 点击显示目录 >> 主页 轴控开发使用手册 > 轴控应用 > 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(边沿触发)
比较器所有模式下的输出状态可以用一个输入曲线来说明。比较器输出信号上的点表示了在临界值(比较器临界值或迟滞临界值)的输出值。
当使用边沿触发比较器的时候,最开始时比较器的输出将保持原值直到第一次出现边沿改变(下图的斜线阴影部分)。
其中,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