在 OB1 调用RecipeImport,以及捕捉是否完成及错误代码等程序,如图9所示。思路同第4步。
图9.调用RecipeImport指令
7. 读取配方数据
配方数据在PLC装载存储器中编辑或设置后,需通过READ_DBL指令读取。在"DB3操作"DB块中定义Int型变量Index作为配方编号,范围限定在0至7,以匹配配方数组索引。此编号既可在HMI界面上设定,也可通过程序逻辑设置。在"DB3_操作"DB块中构建"Read"结构体及其变量,用于READ_DBL操作的请求与状态监控,如图10所示。
图10.建立Index变量及结构体
利用数组索引功能,通过设定Index变量的值来指定需从配方数组中读取的配方编号,并将其内容传输至活动配方数据块。例如,若需加载配方0至活动配方,则将Index设为0;若需配方1,则Index设为1,以此类推。具体实现程序如图11所示。
图11.读配方
就可以直接使用活动配方了,不论是程序中,还是HMI画面中。例如本例中,当Index=0时,读出的活动配方DB,如图12所示。
图12.活动配方数据
8. 在线修改配方
若需微调配方数据而非全面更新,可利用WRIT_DBL指令直接在PLC中修改。通过DB块"DB3_操作"的Index变量指定待修改配方,此变量亦可在HMI界面上设定。在HMI上,用户可选择配方编号,将活动配方映射至IO域以便修改,随后通过按钮触发READ_DBL读取配方,修改后,再触发WRIT_DBL将更新后的活动配方写回指定配方编号位置,如图13所示为操作界面示例。
图13.HMI画面
同样在DB块"DB3_操作",建立结构体"Write",以及相关变量,结构同"Read",用于WRIT_DBL的请求与状态位,如图14所示。
图14.建立结构体
Zui后,通过数组索引功能,将已修改的活动配方数据写入到配方数组中的指定位置。具体地,设置Index变量为欲修改的配方编号(如0表示配方0),修改活动配方数据块后,执行写入操作。如需修改其他配方,只需更改Index值并重复上述过程,如图15所示为相应程序示例。
图15.写配方
本例如图16所示,读出Index为0的配方,修改黄油数据为2.0,点击“写入配方”按钮即可修改配方DB的值。
图16.HMI修改数据