1. 项目概述
威纶通触摸屏作为工业自动化领域的主流人机交互设备,其中文输入与配方管理功能在实际项目中经常遇到各种"水土不服"的问题。最近在一个食品包装产线改造项目中,我们团队就遇到了操作员无法快速输入中文品名、查找配方效率低下的痛点。经过两周的攻关,最终实现了支持拼音联想的中文输入法和基于模糊搜索的配方管理系统。
这个方案最让我惊喜的是,仅用威纶通内置的宏指令和标准控件就完成了所有功能开发,无需额外购买组件。下面将完整分享从需求分析到功能实现的全过程,包含那些官方手册里不会写的实战技巧。
2. 核心需求解析
2.1 工业场景的特殊性
与传统消费级触屏不同,工业触摸屏的操作环境存在三个典型特征:
- 操作者通常戴着手套作业,要求按钮尺寸不小于15mm×15mm
- 输入内容具有高度重复性(如产品型号、工艺参数)
- 强光环境下需要高对比度的界面设计
2.2 功能需求拆解
基于现场调研,我们将需求转化为具体技术指标:
- 中文输入:支持拼音首字母检索(如"巧克力"输入"qkl")
- 配方搜索:允许错别字匹配(如"鸡精"可搜索"肌精")
- 响应时间:从按键到结果显示不超过300ms
- 操作步骤:任何功能最多点击3次可达
3. 中文输入法实现方案
3.1 底层数据结构设计
采用威纶通EBPro软件的"字符串表"功能建立拼音库:
basic复制"a" = "啊,阿,吖"
"ai" = "爱,哎,艾,碍"
"qkl" = "巧克力,全颗粒"
注意:每个拼音码对应条目不宜超过20个汉字,否则会影响检索速度
3.2 输入界面开发要点
-
键盘布局优化:
- 采用T9键盘布局(3×4数字键盘)
- 长按数字键切换大小写/符号
- 右侧预留15%宽度显示候选字
-
动态筛选逻辑:
basic复制// 宏指令示例
IF KeyPress = "q" THEN
FilterString = "q*"
CALL ShowCandidate(FilterString)
ENDIF
- 性能优化技巧:
- 预加载常用字库到本地内存
- 使用"先显示后加载"策略
- 禁用不必要的动画效果
4. 配方搜索功能实现
4.1 模糊匹配算法
在有限的HMI性能下,我们采用改良的"编辑距离"算法:
basic复制FUNCTION FuzzyMatch(Input, Target)
Score = 0
FOR i = 1 TO LEN(Input)
IF INSTR(Target, MID(Input,i,1)) > 0 THEN
Score = Score + 1
ENDIF
NEXT
RETURN Score / LEN(Target)
END FUNCTION
4.2 配方数据库架构
| 字段名 | 类型 | 说明 |
|---|---|---|
| RecipeID | INT | 主键(隐藏) |
| Name | STRING | 配方名称 |
| PyCode | STRING | 拼音首字母(如qkl) |
| Parameters | ARRAY | 工艺参数集合 |
| LastUsed | TIME | 最后使用时间 |
4.3 搜索界面交互设计
-
三级缓存机制:
- 第一层:最近使用的5个配方
- 第二层:匹配名称的配方
- 第三层:相似度>60%的配方
-
视觉反馈优化:
- 实时显示匹配度进度条
- 用不同颜色区分完全匹配/模糊匹配
- 搜索结果按使用频率排序
5. 实战问题与解决方案
5.1 中文乱码问题
现象:从SQLite导出的中文显示为问号
解决方案:
- 在EBPro中设置工程属性→字体→勾选"嵌入GB2312字符集"
- 数据库连接字符串追加
Charset=GBK参数 - 所有文本控件统一使用"微软雅黑"字体
5.2 响应延迟问题
优化前后对比:
| 操作 | 优化前耗时 | 优化方案 | 优化后耗时 |
|---|---|---|---|
| 拼音输入 | 1200ms | 启用预加载字库 | 280ms |
| 配方搜索 | 2500ms | 建立内存索引表 | 450ms |
| 页面切换 | 800ms | 禁用未激活页面控件更新 | 150ms |
5.3 现场维护技巧
- 字库更新:通过U盘导入/导出CSV格式的字库文件
- 配方备份:设置自动双备份(本地+服务器)
- 操作日志:记录所有修改操作到加密日志文件
6. 扩展应用场景
这套方案经过验证可适用于:
- 药品生产中的批次记录查询
- 汽车装配线的工艺参数调用
- 仓储管理的物料名称检索
在某个纺织机械项目中,我们还衍生出"方言语音输入"的变种方案——通过预设地方方言发音与标准拼音的映射表,解决了操作员普通话不标准的问题。例如将"f"映射为"h"(福建口音常见),当输入"huan"时同样可以检索到"纺织"相关配方。