4. 配方建模实战
在FactoryTalk Batch中,配方不是一张静态的工艺卡片,而是一套分层的、可参数化的生产指令集合。Recipe Editor(配方编辑器)是构建这套指令的核心工具,它把ISA-88标准中的主配方(Master Recipe)、控制配方(Control Recipe)以及配方参数、公式和设备要求串联成一个可执行的整体。本节以一个“双组分液体混合”场景为例,完整走一遍从建模到生成控制配方的过程。
一、先理解配方层级与Recipe Editor的对应关系
ISA-88把配方分为四个层次:通用配方(General Recipe)、现场配方(Site Recipe)、主配方(Master Recipe)和控制配方(Control Recipe)。在FactoryTalk Batch的实际工程中,最常操作的是后两者。主配方是“模板级”的工艺定义,它规定了要做什么、按什么顺序做、需要哪些设备能力,但不绑定具体设备;控制配方则是主配方在某一批次执行时,结合具体设备、具体参数值实例化出来的“执行副本”。
Recipe Editor中的主配方由若干Procedure(过程)组成,每个Procedure下挂Unit Procedure(单元过程),再往下是Operation(操作)和Phase(阶段)。Phase是真正与设备交互的最小逻辑单元,比如“加料”“搅拌”“升温”“排料”。设备要求(Equipment Requirement)则通过Unit Requirement和Phase Class的绑定关系,告诉Batch引擎“这个配方需要一台具备搅拌和加热能力的反应釜”。
二、创建主配方的关键步骤
打开Recipe Editor后,第一步是新建一个主配方,命名建议采用“产品名_工艺类型”的格式,例如“MixProduct_Blend”。接着在Procedure层级下添加Unit Procedure,此时需要指定Unit Requirement——这是设备要求的核心。Unit Requirement不是具体设备名,而是一组能力标签,比如“具备搅拌能力”“具备加热能力”“具备称重能力”。Batch引擎在运行时会在设备模型中查找满足这些能力的Unit,找到后才允许执行。
在Unit Procedure下继续添加Operation和Phase。Phase的命名要与Phase Class对应,Phase Class定义了该阶段可以接受的参数类型和数量。例如“Add_A”这个Phase Class可能定义了“目标重量”“加料速率”“快加/慢加切换点”三个参数。在Recipe Editor中,每个Phase实例都要填写这些参数的值或公式。
三、配方参数与公式的配置方法
配方参数是主配方中可变的输入量,公式则定义了参数之间的计算关系。在Recipe Editor的Parameters视图中,可以定义参数名、数据类型、默认值、上下限和工程单位。以双组分混合为例,定义以下参数:
- Batch_Size:批次总量,REAL类型,默认1000,单位kg,范围500~2000。
- A_Ratio:A组分比例,REAL类型,默认0.6,无量纲,范围0.1~0.9。
- B_Ratio:B组分比例,REAL类型,默认0.4,无量纲,范围0.1~0.9。
- Mix_Speed:搅拌转速,REAL类型,默认300,单位rpm,范围100~600。
- Mix_Time:搅拌时间,REAL类型,默认15,单位min,范围5~30。
公式在Formula编辑区定义。例如A_Amount的计算公式为“Batch_Size * A_Ratio”,B_Amount为“Batch_Size * B_Ratio”。这里有一个工程约束需要校验:A_Ratio + B_Ratio应等于1,否则配方总量会偏离Batch_Size。可以在公式中加入校验表达式,或者在Batch执行前由操作员确认。如果配方还涉及密度换算,比如A料以体积计量而配方以重量定义,则公式中还需引入密度参数:A_Volume = A_Amount / A_Density。
四、设备要求的绑定与校验
设备要求在Unit Procedure层级通过Unit Requirement表达,在Phase层级通过Phase Class的Equipment Requirement表达。两者是“与”的关系:Unit Procedure要求反应釜具备搅拌和加热能力,Phase“Add_A”可能额外要求具备称重能力。Batch引擎在生成控制配方时,会先做设备能力匹配,匹配不通过则控制配方无法创建,并给出类似“No eligible unit found for requirement: Agitation + Heating + Weighing”的提示。
实际项目中,设备能力标签要与设备模型中的Unit Attribute严格对应。例如设备模型里定义了“Agitation”属性为True,那么Unit Requirement中就必须写“Agitation”,不能写成“Stir”或“Mix”。这种命名一致性是配方能否成功实例化的关键。
五、从主配方生成控制配方
主配方保存并发布后,在Batch Viewer或Batch Client中创建批次时,选择该主配方并指定目标设备。系统会执行以下动作:读取主配方中的参数默认值,允许操作员在允许范围内修改;根据公式计算派生参数;校验设备能力;生成控制配方实例。控制配方中每个Phase的参数值都是“快照”式的,即一旦生成,后续主配方的修改不会影响已生成的控制配方,这保证了批次执行的可追溯性。
以BATCH-2024-001为例,操作员将Batch_Size改为1000,A_Ratio保持0.6,系统自动算出A_Amount=600 kg、B_Amount=400 kg。控制配方中“Add_A”阶段的目标重量被写为600 kg,“Add_B”为400 kg,“Mix”阶段的转速为300 rpm、时间为15 min。这些值在批次执行过程中被写入PLC或Batch Phase Logic,由设备层执行。
六、一个简单混合配方的完整参数表
下表给出该混合配方在Recipe Editor中的关键配置项,可作为建模时的对照参考。表中数值均为教学示例,实际项目需根据工艺验证确定。
| 层级 | 对象名称 | 关键配置 | 示例值/要求 |
|---|---|---|---|
| Procedure | Blend_Production | 包含单元过程 | 反应釜操作 |
| Unit Procedure | Reactor_Operation | Unit Requirement | Agitation + Heating + Weighing |
| Operation | Dosing_Mixing | 关联参数 | Batch_Size, A_Ratio, B_Ratio, Mix_Speed, Mix_Time |
| Phase | Add_A | Phase Class / 参数 | Add_A_Class;目标重量=A_Amount |
| Phase | Add_B | Phase Class / 参数 | Add_B_Class;目标重量=B_Amount |
| Phase | Mix | Phase Class / 参数 | Mix_Class;转速=Mix_Speed,时间=Mix_Time |
| Phase | Discharge | Phase Class / 参数 | Discharge_Class;目标设备=T-201 |
| 公式 | A_Amount | 表达式 | Batch_Size * A_Ratio |
| 公式 | B_Amount | 表达式 | Batch_Size * B_Ratio |
七、建模后的验证要点
主配方创建完成后,不要直接投入生产,先做三项验证。第一,参数边界验证:把Batch_Size设为2000、A_Ratio设为0.9,检查A_Amount是否超出设备称重上限;第二,设备能力验证:故意选择一个不具备加热能力的Unit,确认Batch引擎拒绝生成控制配方并给出明确提示;第三,公式一致性验证:检查A_Ratio + B_Ratio是否恒等于1,若允许不等于1,则需确认Batch_Size的定义是“总量”还是“A+B之和”,避免执行时出现总量偏差。