通常这些配方的参数数据存放在CPU工作存储器的DB块或M区,很多时候这些数据的数据量特别大,数值却是固定不变的,或者只是偶尔在需要的时候小做改动。
而对于S7-1200来说,工作存储器Zui大也只有150kB(S7-1217C),可以考虑将这些数据,放入更大的装载存储器。对于S7-1200,内置装载存储器有1MB(S7-1211C、S7-1212C)、2MB(S7-1214CV3.0以下)和4MB(S7-1214CV3.0以上、S7-1215C、S7-1217C)三种,如果通过存储卡扩展,理论上可以Zui多到32GB。
从 TIA PORTAL STEP 7 V11 SP2 开始,S7-1200 固件版本 V2.0开始,S7-1200支持将DB块仅存储在装载内存中。并且提供指令READ_DBL将仅存储在装载存储器的数据复制到工作存储器,WRIT_DBL将工作存储器的数据复制到仅存储在装载存储器的数据块。这样就可以在需要时获取配方数据与修改配方数据。这时通常只能在TIAPORTAL软件的DB块中编辑配方数据,不是很方便。
从 TIA PORTAL STEP 7 V13 开始,S7-1200 CPU 固件版本 V4.0开始,又提供了两条配方函数指令,使得配方数据可以导入、导出,得以在PC上使用EXCEL等软件更方便的编辑。
其中RecipeExport指令将完整的配方数据块导出,存储在 CPU装载存储器的yongjiu性配方数据文件中。配方数据文件按照标准 CSV 格式存储在 S7-1200 CPU装载存储器中。
而RecipeImport指令将配方数据从装载存储器上的 CSV文件导入到装载存储器上的配方数据块中。此过程会覆盖之前数据块中的值。
注意:以上四个指令都不支持使用PLCSIM进行仿真,只能使用真实CPU。
配方相关指令
PART 02
配方相关指令位于以下路径:扩展指令—>配方和数据记录—>配方函数以及扩展指令—>数据块控制,具体位置参见图 1红框。
▲ 图1.配方相关指令
配方功能快速入门
PART 03
配方数据文件按照标准 CSV 格式存储在 S7-1200 CPU 装载存储器或 S7-1200 SIMATIC存储卡“程序卡”中。分别可通过 PLC Web 服务器或对于存储卡文件操作,将数据文件传送到 PC进行管理和查看。也可将修改过后的配方数据文件上传至PLC,再通过“RecipeImport”配方导入指令更新PLC装载存储器中配方数据块的数值。
测试实例
PART 04
SIMATIC S7-1200 系列 CPU 使用配方数据功能,需要注意以下几两点:
程序中创建一个配方数据块,此 DB 块必须存储在 CPU 装载存储器中,可以使用 CPU 内部装载存储器或程序卡
程序中创建一个活动配方数据块,此 DB 块必须在 CPU工作存储器中,使用程序逻辑读取或写入一个活动配方记录
下面,举例说明用 S7-1200 实现配方的写入和读取功能。为方便配方数据操作,按照下图思路进行项目编程:
▲ 图1.配方项目框图
测试环境:
操作系统:Win 10 64bit Pro 1703
软件:TIA PORTAL V15 Update 4
测试软件:Notepad++ V7.5.8
硬件:S7-1215C DC/DC/DC V4.2.3
订货号:6ES7215-1AG40-0XB0
实现步骤
PART 05
1.定义一个 PLC 数据类型(UDT)
配方数据块必须包含数组,可以是一维的也可以是多维的,数组元素是 PLC 数据类型或结构。在这个配方实例中使用 PLC数据类型创建配方数据块。
在此,创建一个 PLC数据类型,以定义一个配方记录中的所有组成,以制造蛋糕为例,建立UDT过程参见链接,建好后如图2所示。
▲ 图2.定义 PLC 数据类型
数据类型是一个数据模板,它在每个配方数据块以及活动配方数据块中重复使用。输入所有实例配方共用的成分名称和数据类型,根据分配给配方成分的数值不同而产生不同的产品配方。
2.使用 PLC 数据类型创建配方数据块
创建一个配方数据块,为全局数据块,并启用数据块属性"仅存储在装载内存中",如图3红圈所示。本例中,配方数据 DB 块名称为"DB1_蛋糕配方”,如图4所示,插入一个数组类型变量,数组元素的数据类型为"蛋糕配方",本例中设置数组限值0..7,即可创建8个配方,可根据实际情况调整。
注意,如果需要使用RecipeExport和RecipeImport导入导出,配方DB块的名称中尽量不出现中文字符,否则在WEB页面操作会略微麻烦一些,具体详见配方数据的管理。本例为显示直观,使用了“DB1_蛋糕配方”的名字。
▲ 图3.定义数据块属性
▲ 图4.创建配方数据块
对于图3的优化的块访问选项,一般默认激活,因为从S7-1200V4.2起,对于仅存储于装载存储器的优化块的大小限制为256kB,而仅存储于装载存储器的非优化块仅有64kB,显然优化块可以存储更多的配方记录,如果单个配方数据太多,需要放在多个DB中,也可以减少DB块个数。
3.在工作存储器中创建活动配方DB,并通过“READ_DBL”和“WRIT_DBL”指令实现对装载存储区配方数据块的读写操作