说明
图1显示了在组织块 OB "CountMain"中调用功能块 FB "Dcount" ,连接了全局DB "Count"中的变量. 计数程序是在FB块中实现的,并且有德语和英语的注释。
图1
在 -2147483648到 +2147483647 之间的向前和向后计数,是分别通过输入管脚的 "up" 和 "down"的变量沿变化触发的。
- 如果"up" 管脚有一个上升沿, "count"输出值加"1".
- 如果"down" 管脚有一个上升沿, "count"输出值减"1".
- 如果"lPreset" 管脚有一个上升沿,将预设值 "preset"中的值给到输出端"count" .
- 可以在输入端"compare"设置一个比较值.
- 如果输出的计数值"count" 大于等于比较值"compare" ,那么 "qCompare" 输出"1".
注意
FB "Dcount" 是用SCL创建的,例如下面的SCL程序:
IF #statCount >= #compare THEN
#qCompare := true;
ELSE
#qCompare := false;
END_IF;
为了优化程序,可以直接用大于等于的关系式代替IF指令结构,如下:
#qCompare := #statCount >= #compare;
下表列出了FB“Dcount”的输入输出参数详细说明和数据类型。
参数 | 接口 | 数据类型 | 描述 |
---|---|---|---|
up | 输入 | Bool | 计数增加 |
down | 输入 | Bool | 计数减少 |
compare | 输入 | DInt | 输入比较值 |
preset | 输入 | DInt | 预设计数值 |
lPreset | 输入 | Bool | 预设值使能 |
count | 输出 | DInt | 输出计数值 |
qCompare | 输出 | Bool | 当计数值大于等于比较值时为1 |
示例应用:
在传送带上将盒子从A点传送到B点。
- 探测器1 (Scan 1)检测到盒子进入传送带区域,输入点E0.0 (I0.0)接入计数增加,"count"输出计数加"1"。
- 探测器2(Scan 2)检测到盒子移出传送带区域,输入点 E0.1(I0.1) 接入计数减少,"count"输出计数减"1"。
- 如果盒子太短或由于运输原因被移除了,探测器2没有检测到盒子出传送区域,每次异常都会造成计数误差增加1,这样就可以在 "compare"比较中设定20个盒子,如果异常计数达到20, 输出A0.0(Q0.0)就会置1. 这个值就是异常的盒子数或者说丢失掉的盒子数。
通过一个插件(不包含在下载程序中)可以通过输出A0.0的信号使传送带停止。
图2
您可以添加库文件到S7-1200 / S7-1500和S7-300库中使用。库文件副本的文件夹包含两个文件夹。每个子文件夹中都包含FB“DCount”背景DB块,OB”countmain”和全局数DB“Count”。
- 如果使用的是 S7-1200 或S7-1500, 可以直接从 "S7-1200/S7-1500" 文件夹中将块拖进程序文件夹。
- 如果是s7-300, 可以从"S7-300" 文件夹中将块拖进程序,同样也适用 于S7-400。
下载
附件中包含 STEP 7 (TIA Portal)库文件 "39309294_Dcount_Lib_STEP7_TIA_Portal_V13.zip" ,文件夹详细见上文说明。将文件复制到电脑一个独立的目录中,然后就可以使用STEP 7 (TIA Portal) 项目打开和编辑解压的库文件了。
39309294_Dcount_Lib_STEP7_TIA_Portal_V13.zip (1,1 MB)
创建环境
图. 1 和FAQ 下载由STEP 7 (TIA Portal) V13+SP1创建。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322715.html