对于S7-1200V4.0及其以后版本的CPU,可以使用指令RecipeExport和RecipeImport对配方数据块进行导入和导出,在电脑上使用EXCEL、ASCII编辑器等工具编辑。
对于S7-1200V4.0以前的版本,一般建议直接在配方数据块的起始值输入配方,这一部分用户可以直接跳过下面4-6步,直接看第7步。
在本例中,直接在OB1使用LAD语言调用RecipeExport和后面的RecipeImport块,实际使用时可以在FC/FB,或者FB的多重背景中使用,语言也可以使用FBD、SCL。
新建DB块,用于调用块的请求与状态位等,名称为"DB3_操作",建立结构体"Export",以及相关变量,如图7所示。
▲ 图7. 建立结构体
在 OB1 调用RecipeExport,以及捕捉是否完成及错误代码等程序,如图8所示。
▲ 图8.调用RecipeExport指令
5.配方csv文件的导入和导出
可以使用Web服务器或者存储卡的方式对csv文件进行导入和导出,在电脑上的Excel等软件上进行配方数据的编辑,具体操作详见配方数据的管理。
6.导入配方数据块
当配方文件通过WEB上载完成,或通过存储卡重新导入文件后,就可以导入配方数据块。和第4步类似,在DB块"DB3操作",中建立结构体"Import",以及相关变量,结构同"Export",如图9所示,用于RecipeImport的请求与状态位。
▲ 图9. 建立结构体
在 OB1 调用RecipeImport,以及捕捉是否完成及错误代码等程序,如图10所示。思路同第4步。
▲ 图10.调用RecipeImport指令
7.读取配方数据
经过使用配方指令或者直接在配方数据块的编辑,此时配方数据已经保存在PLC的装载存储器中,需要使用READ_DBL指令读取出来。可以在DB块"DB3操作",建立一个Int类型变量Index用作配方编号。对于本例,配方数组限值为0-7,该配方编号变量取值范围也是0-7,可以在HMI画面上设置该值,也可以在程序中设置该值。同样在DB块"DB3_操作",建立结构体"Read",以及相关变量,用于READ_DBL的请求与状态位,如图11所示。
▲ 图11.建立Index变量及结构体
利用数组的索引寻址功能,将配方数组指定索引的变量读取到活动配方,即如果需要配方0送到活动配方数据块,则Index赋值为0,需要配方1送到活动配方数据块,则Index赋值为1,......,具体程序如图12所示。
▲ 图12.读配方
就可以直接使用活动配方了,不论是程序中,还是HMI画面中。例如本例中,当Index=0时,读出的活动配方DB,如图13所示。
▲ 图13.活动配方数据