一、案例简介
在PLC自动化编程场景中,数组数据采集、比对校验是极为常用的功能模块。无论是设备参数录入、条码信息采集、配方数据存储,都需要对数组内数据进行重复性校验,避免重复数据导致设备逻辑报错、工艺异常、数据统计失误。本文将深度解析一段实用的PLC数组重复检测程序,拆解其复位机制、遍历校验逻辑、代码优化思路,帮助开发者理解工业数据校验的核心编程思想。
二、PLC程序编辑
1.创建FB程序块
2.功能块接口定义
1)接口定义说明
2)FB接口定义
3.程序编写
1)程序代码
2)可复制程序代码
// 复位上升沿清空所有输出 IF Reset AND NOT LastReset THEN HasRepeat := FALSE; RepeatIndex1 := -1; RepeatIndex2 := -1; RepeatText := ''; END_IF; LastReset := Reset; // 无重复标记时才扫描数组 IF NOT HasRepeat THEN FOR i := 0 TO 60 DO // 当前元素为空,直接跳过不对比 IF arrStr[i] = '' THEN CONTINUE; END_IF; FOR j := i + 1 TO 60 DO // 同时排除对比对象为空,且文本相等才判定重复 IF arrStr[j] <> '' AND arrStr[i] = arrStr[j] THEN HasRepeat := TRUE; RepeatIndex1 := i; RepeatIndex2 := j; RepeatText := arrStr[i]; EXIT; // 跳出内层循环 END_IF; END_FOR; IF HasRepeat THEN EXIT; // 跳出外层循环 END_IF; END_FOR; END_IF;4.创建DB数据块
5.添加变量
6.主程序调用FB功能块并插入引脚变量
三、程序运行与说明
1.程序运行
2.程序说明
本段程序核心作用为实时扫描长度为61位(0~60下标)的字符串数组arrStr,自动检测数组内是否存在重复非空数据。程序具备完整的复位初始化、数据过滤、双重循环比对、结果标记功能,可精准定位重复数据的下标位置及具体内容,同时通过优化逻辑避免无效运算,是工业现场轻量化数据校验的经典实现方案。
程序最终会通过四类变量输出校验结果:HasRepeat(是否存在重复)、RepeatIndex1(重复数据第一个下标)、RepeatIndex2(重复数据第二个下标)、RepeatText(重复的具体文本内容),为后续逻辑判断、报警提示、数据修正提供精准依据。
如果觉得这篇内容对你有帮助,欢迎点赞、收藏、转发,评论区留言说说你在调试过程遇到的问题,一起交流学
延伸小知识:PLC-Recorder主要是满足快速采集的需求,这是与工业大数据系统显著的区别。