一、 描述
该功能块具有分类统计功能,统计数组中相同元素的个数,将数字内容及数量保存到另一数组中。
编写此数据块的目的是应用于物料管理的编程。生产设备旁的物料架最多可放置20种装配零部件,产线管理需要实时监测机台物料的消耗情况。机械手(或人工)每取料一次时做一次统计,当某一种物料达到下限值时给以缺料提醒(显示所缺物料编号和当前剩余数量)。
二、 参数说明
Calculation:统计开始。数据类型:BOOL;
amountMax:参与统计的数组的最大长度。数据类型:INT;
numBerArray:参与统计的数组队列。数据类型:INT型数组;
Total:统计数组内有效元素的总数。数据类型:INT;
PlantInfo:统计结果保存。数据类型:STRUCT型数组;
CatID:统计元素内容;
CatNum:统计相同元素的数量;
三、 程序编写
1)编程思想:使用FOR循环嵌套,每次取出一个数,逐一向后比较,查找到相同数后累加。查找到的相同数后将其内容修改为“0”(在此程序中“0”为不参与比较的无效数,也可用“-1”或其它数代替)。
2)程序代码:
3)运行验证(举例)
待统计数组numberArray{11,22,33,0,44,33,33,22,11};
FB块调用:
统计结果:
后话:
此功能块虽不具有普适性,但在编写过程中也着实费了一些心思,加深了对FOR循环的理解。两个循环嵌套,若数组长度过大,可能会降低PLC的效率并延长循环扫描周期。各位老师能有更高效简捷的方法,给以指点。