2、配方模板设计:创建配方模板、定义配方参数、设置参数数据类型与范围
配方模板,说白了就是一张「空白表格」。
你往里面填什么参数,它就管什么参数。我刚开始做配方系统时,总觉得模板设计很简单,不就是画个表格嘛。后来吃过几次亏才明白——模板设计的好坏,直接决定了后续批量控制能不能跑得顺。
2.1 创建配方模板
在Intouch里,配方模板是通过「Recipe Manager」来创建的。我个人习惯先建一个空模板,再逐步往里加参数。
具体步骤是这样的:
- 打开Intouch WindowMaker,进入「Special」→「Recipe」
- 点击「New」创建一个新配方文件(.csv或.mdb格式)
- 给模板起个名字,比如「Batch_Recipe_Template」
- 设置模板的存储路径
嗯,这里要注意:存储路径最好用相对路径。我见过有人用绝对路径,结果换台电脑就找不到文件了,那叫一个尴尬。
我的小技巧:模板文件名建议加上版本号,比如「Recipe_Template_v2.1」。这样后期迭代时,你还能找到历史版本。
2.2 定义配方参数
模板建好了,接下来就是往里填参数。参数分两类:
- 过程参数:温度、压力、流量、时间等
- 设备参数:搅拌速度、阀门开度、泵启停等
举个例子,一个简单的反应釜配方,我通常会定义这些参数:
| 参数名称 | 参数标识 | 数据类型 | 取值范围 |
|---|---|---|---|
| 反应温度 | React_Temp | 浮点数 | 0.0 ~ 200.0 °C |
| 反应时间 | React_Time | 浮点数 | 0.0 ~ 3600.0 秒 |
| 搅拌速度 | Agit_Speed | 整数 | 0 ~ 1500 RPM |
| 进料阀开度 | Feed_Valve | 整数 | 0 ~ 100 % |
| pH设定值 | pH_Setpoint | 浮点数 | 0.0 ~ 14.0 |
你看,每个参数都要有明确的标识符。标识符最好用英文,因为Intouch底层对中文支持不太好。我曾经吃过这个亏——用中文做标识符,结果脚本里死活调用不到,查了半天才发现是编码问题。
2.3 设置参数数据类型与范围
数据类型选不对,后面全是坑。我总结了几条经验:
- 整数型(Integer):用于阀门开度、泵转速、计数等离散量
- 浮点型(Float):用于温度、压力、流量等连续量
- 布尔型(Boolean):用于启停状态、开关信号
- 字符串型(String):用于批号、操作员ID等文本信息
范围设置更关键。你想想看,如果反应温度上限设成500°C,操作员手一抖输了个450°C,设备可能直接就炸了。所以范围一定要跟设备实际能力匹配。
警告:范围设置不是越宽越好。我曾经见过一个项目,把压力范围设成了0~100 bar,结果操作员误输入80 bar,而实际管道只能承受10 bar。幸好有硬限位保护,不然后果不堪设想。
设置范围时,我建议遵循「三限原则」:
- 软限:配方模板里设置的可输入范围
- 硬限:PLC程序里写的安全范围
- 机械限:设备本身的物理极限
三层保护,层层递进,这才叫安全设计。
2.4 模板设计中的避坑指南
做配方模板这么多年,我踩过的坑不少,挑几个典型的说说:
- 参数命名混乱:有人用Temp1、Temp2、Temp3,三个月后自己都分不清哪个是哪个。我习惯用「设备_参数_序号」的格式,比如「Reactor1_Temp_Set」。
- 缺少单位字段:模板里只写数值不写单位,换个人操作就可能把摄氏度当华氏度输。我每个参数后面都跟一个单位字段,虽然麻烦点,但安全。
- 默认值随意:默认值不是随便填的。我一般把默认值设成设备的安全启动值,比如搅拌速度默认0 RPM,防止一加载配方就飞车。
核心要点:配方模板不是一次性设计完就完事了。它需要随着工艺改进、设备更新不断迭代。我每半年会 review 一次模板,看看有没有参数冗余、有没有范围需要调整。
2.5 知识体系总览
下面这张图,是我自己总结的配方模板设计核心逻辑。你看一遍,基本就明白整个流程了。
这张图把整个流程串起来了。从创建模板开始,到定义参数、设置数据类型、划定范围,每一步都环环相扣。你照着这个逻辑走,基本不会出大问题。
最后说一句:模板设计这事,急不得。我一般会花整个项目20%的时间在模板设计上。前期想得越细,后期调试越省心。别像我刚开始那样,模板随便搞搞就上线,结果现场改配方改到崩溃。
公众号:蓝海资料掘金营,微信deep3321