如何在S7-1200中编程判断程序是否被更改
菜谱相关说明介绍
菜谱函数主要使用4条指令。 READ_DBL 和WRIT_DBL 用于读取和写入配方数据块。 RecipeExport 和RecipeImport 用于在配方数据块和CSV 文件之间进行转换。下面介绍这四个指令的使用。
读_DBL
该指令的目的是将数据块变量的装载存储器部分的值传送到数据块变量的工作存储器部分。如图1所示。
通常在配方中用于将仅存储在装载存储器中的配方数据读取到活动配方中。
图1 READ_DBL和WRIT_DBL原理
表1 参数表
参数声明数据类型说明REQInputBoolREQ=1:读请求,通常建议触发要读取的SRCBLKInputVariant 数据块变量, RET_VALReturnInt 状态、错误消息BUSYOutputBoolBUSY=1:读取要写入的DSTBLKOutputVariant 数据块变量,与SRCBLK 数据类型一致,优化属性是一致的。以菜谱功能快速启动示例程序为例。
图2 READ_DBL应用
如图2所示,SRCBLK的实际参数为“DB1_cakerecipe”.Static_1['DB3_operation'.Index],其中DB1_cakerecipe“.Static_1是一个UDT类型(蛋糕菜谱)的数组,下面的['DB3_operation'.Index] '.Index]成为数组中的一个元素,也就是说,“DB1_cake Recipe”.Static_1['DB3_operation'.Index]是一个UDT类型(蛋糕菜谱)。
DSTBLK的实际参数是“DB2_Activity Recipe”,“DB2_Activity Recipe”是基于UDT类型(蛋糕配方)建立的DB,也就是说“DB2_Activity Recipe”可以被视为一个UDT类型。
SRCBLK和DSTBLK的实际参数都是UDT类型。您可以使用READ_DBL 指令将配方中的组“DB1_cake Recipe”.Static_1['DB3_operation'.Index] 读入活动配方中。
写_DBL
该指令的目的是将数据块变量中的工作存储器部分写入数据块变量中的装载存储器部分。如图1所示。
通常在配方中用于将活动配方写入仅存储在装载存储器中的配方数据。
表2 参数表
参数声明数据类型说明REQInputBoolREQ=1:写请求,通常建议触发要读取的SRCBLKInputVariant 数据块变量以及RET_VALReturnInt 状态、错误消息BUSYOutputBoolBUSY=1:读取要写入的DSTBLKOutputVariant 数据块变量,与SRCBLK 数据类型一致,优化属性是一致的。以菜谱功能快速启动示例程序为例。
图3 WRIT_DBL应用
如图3所示,SRCBLK的实际参数为“DB2_Activity Recipe”,“DB2_Activity Recipe”是基于UDT类型(蛋糕配方)建立的DB。也就是说,“DB2_Activity Recipe”可以被视为一个UDT类型。
DSTBLK的实际参数为“DB1_cakerecipe”.Static_1['DB3_operation'.Index],其中“DB1_cakerecipe”.Static_1是一个UDT类型(蛋糕菜谱)的数组,后面的['DB3_operation'.Index],就变成数组中的一个元素,也就是说“DB1_cake Recipe”.Static_1['DB3_operation'.Index] 是一个UDT 类型(蛋糕配方)。
SRCBLK和DSTBLK的实际参数都是UDT类型。您可以使用WRIT_DBL 指令将活动配方写入“DB1_cake Recipe”.Static_1['DB3_operation'.Index],它是配方中的一个组。
配方导出
该指令的目的是将仅存储在工作内存中的配方数据(UDT数组)导出为.csv文件,方便在计算机上的EXCEL或ASCII编辑器中进行编辑。
表3 参数表
参数声明数据类型说明REQInputBool 边沿触发:激活请求RECIPE_DBInOutVariant 要导出的配方数据块变量,通常是配方UDT 数组DONEOutputBoolDONE=1:导出完成,仅维持一个扫描周期BUSYOutputBoolBUSY=1:导出中ERROROutputBoolERROR=1:导出错误,仅持续一个扫描周期。错误代码请参见STATUSSTATUSOutputWord 状态或错误代码。该错误代码仅持续一个扫描周期。以菜谱功能快速启动示例程序为例。
图4 RecipeExport 应用程序
“DB1_cake Recipe”.Static_1是UDT类型(蛋糕食谱)的数组,导出后生成DB1_cake Recipe.csv文件。
菜谱导入
该命令的目的是将计算机上用EXCEL 或ASCII 编辑器编辑的.csv 文件导入仅存储在工作存储器中的配方数据(UDT 数组)。
表4 参数表
参数声明数据类型说明REQInputBool 边沿触发:激活请求RECIPE_DBInOutVariant 导入后的配方数据块变量,通常是配方UDT 数组DONEOutputBoolDONE=1:导入完成,仅维持一个扫描周期BUSYOutputBoolBUSY=1:导入中ERROROutputBoolERROR=1:导入错误,只持续一个扫描周期。错误代码请参见STATUSSTATUSOutputWord 状态或错误代码。该错误代码仅持续一个扫描周期。以菜谱功能快速启动示例程序为例。
图5 RecipeImport 应用程序
导入DB1_cakerecipe.csv文件后,需要覆盖UDT类型(蛋糕配方)数组“DB1_cakerecipe”.Static_1的值。
审稿人:刘庆