S7-1500全系列CPU都支持数据记录功能,在用户程序中可使用数据记录指令,将过程值保存到数据日志文件中。
可以用 “Data Logging” 指令将过程数据值存储在永久性日志文件中,数据日志文件按照标准 CSV 格式存储在S7-1500 CPU 存储卡中。
使用S7-1500 CPU内置的 Web 服务器,可管理数据日志文件,实现数据日志文件的下载、清空和删除; 或将数据日志文件传送到PC,使用标准电子表格工具(如Excel)分析数据。还可以通过读卡器直接打开存储卡来访问和管理数据日志文件。
图1. 数据记录
在本应用实例中,通过以下产品进行数据记录功能组态,实现数据记录的创建以及管理日志文件。
软件:
TIA V15.1
Internet Explorer 11
硬件:
CPU 1511C-1PN V2.6
SIMATIC MC 24M
实验内容将数据日志文件存储在 S7-1500 CPU 装载存储器中,使用PLC Web 服务器进行管理为例,实现下述功能:
1.执行“DataLogging”指令集将产品型号“Type”,长度“Length”,宽度“Width”三个变量值写入到数据日志文件;
2.当写入的条数达到设定的3条记录条数时,自动关闭该数据日志文件 ;
3.当写入的条数达到设定的3条记录条数时,可选择以下两种情况之一再分别写入数据记录:
情况一:如果旧的变量值允许被新的变量值覆盖,再打开这个数据日志文件,循环写入1条数据记录;
情况二:如果想保存之前的变量值,创建一个新的数据日志文件,再写入1条新的数据记录。
1、数据记录创建
1.1、数据记录的程序指令 Data Logging 用于在程序中创建、打开、写入、清空、关闭、删除以及新建数据记录。从 “指令” →“扩展指令” →“Data Logging” 下可调用相关功能指令。如下图2所示
图2. Data Logging指令
1.2、创建全局数据块及变量
数据记录的输入数据值将存储在自定义结构体 “Data” 中:
- DataLogName (String):该变量包含同时用作 CSV 文件名的数据日志名称。
- DataLogID (DWord):调用 “DataLogCreate” 指令时,将数据记录 ID 写入该变量中。 “DataLogCreate” 指令会自动分配数据记录的 ID,在其它 DataLog 指令中,可使用变量 “DataLogID” 寻址该数据记录。
- Header (String):该变量中包含数据日志的标头,即数据记录的各列名称。
- Data (Struct):该变量中包含将写入数据日志的 3 个过程值。每次写入一个记录时,都会将当前值写入一个新记录中。
图3. 全局数据块
1.3、创建数据记录
调用指令 “DataLogCreate”,可在装载存储器的 “\DataLogs” 目录下创建一个新的数据记录文件,通过以下输入参数调用该指令:
- REQ (BOOL):REQ =“TRUE”上升沿时,创建数据日志。
- RECORD (3):在数据日志中,最多可写入 3 个数据记录。之后,将覆盖最旧的数据记录。
- FORMAT (1):将数据日志创建为 CSV 文件。
- TIMESTAMP (1):启用:将自动创建数据记录的两个附加列(日期和时间)。每次执行 “DataLogWrite” 时,都将当前时间戳写入数据记录中。
- NAME (VARIANT):指向数据块 “DataLog” 中变量 “DataLogName” 的指针。
- ID (DWORD):指向数据块 “DataLog” 中变量 “DataLogID” 的指针。
- HEADER (VARIANT):指向数据块 “DataLog” 中变量 “Header” 的指针。
- DATA (VARIANT):指向数据块 “DataLog” 中变量 “Data” 的指针。
图4. 创建数据记录
1.4、写入数据记录
通过 “DataLogWrite” 指令,可将数据记录写入当前的数据日志中。通过 ID 参数,可选择待写入数据记录的数据日志。该指令将创建一条新的数据记录,在创建数据记录时并通过 DATA 参数指定其格式。
- REQ (BOOL):REQ =“TRUE”上升沿时,创建数据日志。
- ID (DWORD):指向数据块“DataLog”中变量“DataLogID”的指针。
图5. 写入数据记录
1.5、当写入的条数达到设定的记录条数时,可选择以下两种情况之一再分别写入数据记录
情况一:循环写入数据记录,在指令 “DataLogCreate” 参数 RECORDS 中,可指定数据日志中所存储数据记录的最大数目,如果达到了数据日志中数据记录指定的最大数目,再次写入时则覆盖最早的数据记录,以此实现循环记录。
如果需要写入已关闭的数据日志,可使用指令 “DataLogOpen” 打开存储卡上的现有数据日志,可通过数据日志的 ID 或名称,选择需打开的数据日志, 最多可同时打开 10 个数据日志。 通过以下输入参数调用该指令:
- REQ (BOOL):REQ =“TRUE”上升沿时,创建数据日志。
- Mode(0):MODE=“0” 保留数据日志中的数据记录;MODE=“1” 删除数据日志的数据记录,但保留标题。
- NAME (VARIANT):指向数据块 “DataLog” 中变量 “DataLogName” 的指针。
- ID (DWORD):指向数据块 “DataLog” 中变量 “DataLogID” 的指针。
- DATA (VARIANT):指向数据块 “DataLog” 中变量 “Data” 的指针。
图6. 打开数据记录
情况二: 新建数据记录,
通过指令 “DataLogWrite” 状态位为 “16#0001” 来判断数据日志已满,执行指令 “DataLogClose” 来关闭已满数据日志,并使用指令 “DataLogNewFile” 来创建新的数据日志文件,可创建一个属性与现有数据日志相同的新数据日志,将允许保留现有数据记录的内容。调用时,该指令将在存储卡中创建一个新的数据记录,日志名称在 NAME 参数中已定义。ID 参数用于指定旧数据记录的 ID,该数据记录的属性将应用于新的数据记录。随后,新数据记录的 ID 将通过 ID 参数输出。创建新数据记录后,将自动打开该文件。
- REQ (BOOL):REQ =“TRUE” 上升沿时,创建数据日志。
- RECORD (3):在数据日志中,最多可写入 3 个数据记录。
- NAME (VARIANT):指向数据块 “DataLog” 中变量 “DataLogNewName” 的指针。
- ID (DWORD):指向数据块 “DataLog” 中变量 “DataLogID” 的指针。
- DATA (VARIANT):指向数据块 “DataLog” 中变量 “Data” 的指针。
图7. 新建数据记录
1.6、关闭数据记录
通过“DataLogClose”指令,可关闭一个打开的数据日志。使用 ID 参数,选择数据日志。当写入的条数达到设定的3条记录条数时,数据日志已满 “DataLogWrite” 指令的输出参数 STATUS=16#0001。因此,可编程使用该状态字节自动关闭该数据日志文件。
- REQ (BOOL):REQ =“TRUE”上升沿时,创建数据日志。
- ID (DWORD):指向数据块 “DataLog” 中变量 “DataLogID” 的指针。
图8. 关闭数据记录
1.7、清空数据记录
指令 “DataLogClear” 可删除现有数据记录中的所有数据记录。该指令不会删除 CSV 文件的标题。 通过参数 ID,可选择待删除数据记录的数据日志。要求删除数据记录前,必须打开数据记录。
- REQ (BOOL):REQ =“TRUE”上升沿时,创建数据日志。
- ID (DWORD):指向数据块 “DataLog” 中变量 “DataLogID” 的指针。
图9. 清空数据记录
1.8、删除数据记录
使用 “DataLogDelete” 指令,可以删除存储卡上的数据记录文件。仅当使用指令 “DataLogCreate” 或 “DataLogNewFile” 创建数据日志和包含的数据记录时,才能将其删除。
- REQ (BOOL):REQ =“TRUE”上升沿时,创建数据日志。
- NAME (VARIANT):指向数据块 “DataLog” 中变量 “DataLogName” 的指针。
- DelFile(1):0:将保留数据记录;1:将删除数据记录。
- ID (DWORD):指向数据块 “DataLog” 中变量 “DataLogID” 的指针。
图10. 删除数据记录
2、数据记录管理
2.1、配置Web服务器
图11. Web服务器配置
2.2、管理数据日志文件的两种方式
方式1:登录Web服务器进行管理,打开 IE 浏览器,输入 S7-1500 CPU 的 IP 地址(如192.168.0.6),进入Web管理界面。可以对创建的数据记录文件进行删除、下载和清空操作。
图12. 激活记录
方式2:通过读卡器直接访问存储卡中的数据日志文件,如下图:
图13. 存储卡文件
将上述两种方式获取的数据日志文件直接可以用 Excel 来打开查看数据,如下图:
图14. 记录文件
2.3、当写入的条数达到设定的记录条数时,两种情况的测试结果如下所示。
情况一结果:
如果旧的变量值允许被新的变量值覆盖,再次打开 “Product” 这个数据日志文件,写入一条新记录后,发生如下图15将变化,第一条旧记录将被覆盖。
图15. 新记录文件
情况二结果:
如果想保存之前的变量值,创建一个新的数据日志文件,再写入新的数据记录。如下图16所示:
图16. 创建新记录文件
1、调用 “DataLogCreate” 指令创建的数据日志文件个数是否有限制?
数据记录保存在存储卡或内部装载存储器的“\DataLogs”目录中。数据日志中可存储的数据量取决于存储卡上的可用空间,或所用 CPU 内部装载存储器中的存储空间。对于 S7-1200 CPU,生成的 CSV 文件的最大大小为 500,000,000 字节;而 S7-1500 CPU 为 1,000,000,000 字节。
2、对每个数据日志文件写入的最大数据记录条数是否有限制?
“DataLogCreate”指令的“RECORDS”输入参数是“UDINT” 数据类型,限值是4,294,967,295。 RECORD 参数的实际限值取决于单个记录的大小、其它数据日志的大小及装载存储器的可用资源。
3、对每个数据日志文件声明的最大数据元数个数是否有限制?
所声明数据元素的个数与标题参数中指定的列数相对应,数据结构可包含最多 256 个元素。
4、如何打开数据日志文件?打开的数据日志个数是否有限制?
执行“DataLogCreate”和“DataLogNewFile”操作后会自动打开数据日志文件。此外,对于已经关闭的数据日志文件,执行“DataLogOpen”指令可重新打开数据日志文件,最多可同时打开 10 个数据日志。
5、如何判断存储卡寿命到期?
SIMATIC 存储卡的使用寿命主要取决于以下因素:
- SIMATIC 存储卡的容量
- 写操作的频率
- 写入 SIMATIC 存储卡的数据量
写入或删除操作(尤其是通过用户程序对 SIMATIC 存储卡进行循环写入/删除),会缩短其使用寿命。 如下17图,可选择达到SIMATIC存储卡的使用寿命阈值时是否生成诊断中断和诊断缓冲区条目。
图17. 存储卡阈值