<< 点击显示目录 >> 主页 轴控开发使用手册 > 轴控应用 > 18.ACOPOS功能块 > COUNT FB介绍 |
1.基本信息
编写人 |
穆珊珊 |
审核人 |
(检查,测试,注释) |
|
应用归属 |
运动控制 |
|||
软件信息 |
|
硬件信息 |
||
其他 |
|
|||
版本信息 |
修改内容 |
修改人 |
||
V1.00 |
创建 |
穆珊珊 |
||
|
|
|
2. 简介
COUNT:计数器
该功能块可以对事件进行计数。事件类型和计数方向由模式确定。
3. ParID
ParID名字 |
缩写 |
访问方式 |
数据类型 |
数据范围 |
初始值 |
描述 |
COUNT_MODE |
m |
RD,WR |
UI2 |
0..6 +16 +32 +256 |
0 |
功能模式,激活功能块 Bit0..5:事件模式 Bit8:计数模式,0:加计数,1:减计数 |
COUNT_ENABLE_PARID |
*en |
RD,WR |
UI2 |
<ParID> |
ONE |
使能输入的ParID(指向使能输入值,整数类型。 |
COUNT_EV1_PARID |
*ev1 |
RD,WR |
UI2 |
<ParID>,0 |
|
输入1计数事件的ParID(指向事件1,整数类型) |
COUNT_EV2_PARID |
*ev2 |
RD,WR |
UI2 |
<ParID>,0 |
|
输入2计数事件的ParID(指向事件2,整数类型) |
COUNT_SET_TRIG_PARID |
*set |
RD,WR |
UI2 |
<ParID>,0 |
|
触发输入的ParID(指向触发事件,整数类型) |
COUNT_SET_VALUE |
set_cnt |
RD,WR |
UI4 |
|
0 |
计数器的置位值。当触发输入为高电平时应用。 |
COUNT_MAX_VALUE |
max |
RD,WR |
UI4 |
|
2^32-1 |
计数器的最大值 |
COUNT_CMP_VALUE |
cmp |
RD,WR |
UI4 |
|
0 |
比较器,和计数器比较的值 |
COUNT_VALUE |
cnt |
RD,WR |
UI4 |
|
0 |
结果,计数值(输出) 写访问可以对该值初始化 |
COUNT_CMP_STATUS |
cmpst |
RD |
UI1 |
0,1 |
0 |
比较器状态。和计数值比较的结果(输出) |
COUNT_EV_STATUS |
evst |
RD |
UI1 |
0,1 |
0 |
事件状态,计数事件激活(输出) |
4. 功能
4.1 计数功能
加法计数:
Bit8=0:每个事件发生时,计数器会加1。当到达最大值时,会发生溢出,然后计数器重新从0开始计数。
减法计数:
模式Bit8=1:每个事件发生时,计数器会减1。当减到0时,会发生溢出,然后计数器重新从最大值开始计数。
比较输出:
如果计数值和比较值相同,那么输出cmpst会置1,否则置为0。
计数器置位:
trigger输入端*set的值不为0时,会将计数器置位为set_cnt设置的值,此时计数器的功能还是激活的。
trigger输入在事件计数前先行处理。因此,比较器输出cmpst直接反馈到trigger输入端就足以使预设值生效。计数器输出允许写访问,所以当计数器初始化时或者运算过程中执行复位时,允许写入任何值到计数器输出中。需要注意,当打开或关闭功能块时计数器值不会改变。
使能:
使能输入*en设置为0,会暂停已使能功能块的输入处理,从而“冻结”输出。这意味着,计数事件和设置计数器的trigger不会被处理。而即便在这种“关闭”状态下,计数器输出依然允许直接写入。
在没有通过m=0关闭功能块的情况下,*en输入端一个不为0的值会使能功能块输入的处理。从“关闭”到“使能”的转变,不会创建计数事件。默认设置*en=1.
4.2 事件产生和功能模式
可以设定比较运算符和边沿检测方式,来生成计数事件。*ev1和*ev2这两个输入的带符号整型值会进行比较。当关联无符号参数时,需要注意,这些无符号数会按带符号整型数处理,并且在231到232-1之间会呈现为负值。比较条件由Bit0..Bit3确定。边沿检测由Bit4和Bit5确定。
+0 电平检测:条件满足时,在每个扫描周期“Ta”内都会产生一个计数事件;
+16 上升沿检测:只有在条件最初满足时才会产生一个计数事件;
+32 下降沿检测:只有在条件最终结束时才会产生一个计数事件;
+16+32 边沿检测:在条件最初满足和最终结束时各产生一个计数事件;
模式 |
条件 |
电平,边沿检测 |
说明 |
计数方向 |
0 |
|
|
m=0时功能块将关闭,当前的结果值会“冻结” |
|
1 17 33 49 |
ev1 < ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1小于value2 |
加计数 |
2 18 34 50 |
ev1 == ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1等于value2 |
加计数 |
3 19 35 51 |
ev1 <= ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1小于等于value2 |
加计数 |
4 20 36 52 |
ev1 > ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1大于value2 |
加计数 |
5 21 36 52 |
ev1 != ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1不等于value2 |
加计数 |
6 22 38 54 |
ev1 >= ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1大于等于value2 |
加计数 |
257 273 289 305 |
ev1 < ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1小于value2 |
减计数 |
258 274 290 306 |
ev1 == ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1等于value2 |
减计数 |
259 275 291 307 |
ev1 <= ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1小于等于value2 |
减计数 |
260 276 292 308 |
ev1 > ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1大于value2 |
减计数 |
261 277 293 309 |
ev1 != ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1不等于value2 |
减计数 |
262 278 294 310 |
ev1 >= ev2 |
电平检测 上升沿检测 下降沿检测 边沿检测 |
value1大于等于value2 |
减计数 |
我们使用下面这样一条输入曲线来解释对于比较运算符ev1>ev2的模式设置,即不同的边沿检测下的事件状态输出结果。
对于二进制条件这样的简单使用,只需要配置第一个事件输入*ev1,第二个事件输入默认设置为0就可以了:
模式 |
说明 |
计数方向 |
0 |
功能块关闭 |
加计数 |
5 |
电平检测ev1 != 0 |
加计数 |
21 |
上升沿检测ev1从0变为非0 |
加计数 |
37 |
下降沿检测ev1从非0变为0 |
加计数 |
53 |
边沿检测 |
加计数 |
261 |
电平检测ev1 != 0 |
减计数 |
277 |
上升沿检测ev1从0变为非0 |
减计数 |
293 |
下降沿检测ev1从非0变为0 |
减计数 |
309 |
边沿检测 |
减计数 |
事件状态可以输出到事件状态输出端evst,计数器加1或减1的每个周期该输出都会等于1。
4.3 在线更改
当功能块使能时,所有写参数都允许在线更改。
ParID名称 |
说明 |
COUNT_MODE |
使能或关闭功能块,切换计数模式和事件模式。当使能功能块或切换模式时,边沿检测事件不会触发。 |
COUNT_ENABLE_PARID |
迅速切换使能的信号源 |
COUNT_EV1_PARID |
迅速切换事件1的信号源或关闭该事件输入(置为0)。注意:切换模式可能导致计数事件发生。 |
COUNT_EV2_PARID |
迅速切换事件2的信号源或关闭该事件输入(置为0)。注意:切换模式可能导致计数事件发生。 |
COUNT_SET_TRIG_PARID |
迅速切换计数器输出复位的trigger信号源 |
COUNT_SET_VALUE |
更改复位值,通常用于减计数 |
COUNT_MAX_VALUE |
更改计数器的最大值 |
COUNT_CMP_VALUE |
更改比较值 |
COUNT_VALUE |
用于初始化,和设定计数器状态 |
5. 例子
统计设定位置超过某个设定临界值的次数,当次数达到一定的数量后计数器复位。