mappData 介绍 含Demo

<< 点击显示目录 >>

主页  mappServices帮助手册 > mapp Data: 数据记录  > 应用与测试例程 >

mappData 介绍 含Demo

1目录

1 目录

2 功能块功能描述        

3 功能块软件配置信息        

4 版本信息        

5 AS编程        

6 测试Demo程序(VC4)

 

2功能块功能描述

MpData提供了为给定过程变量(PV)记录历史数据的功能,数据存储在csv文件中。

并且提供了UI功能块,可以以表格的形式显示记录的变量值。

3功能块软件配置信息Introduction

AS版本

AS4.7.6

操作系统版本

C4.73

mapp版本

5.14

需要库

MpData

编写人

陈见埔

测试人

 

审核人

 

项目名称

mappDataTest

任务说明

DataCtrl:MpData组件测试。测试该组件的使用方法。

DataGen:生成测试数据

4版本信息

软件版本

修改内容

修改时间

修改人

V1.00.0

初版

2016.5.13

穆珊珊

V1.00.1

1.更新记录模式(“RecordMode”)说明;

2. 增加MpDataRecorder的Optional parameters- Header说明

3. 更新MpDataTableUIConnectType、MpDataTableUIPVType、MpDataPVItemLimitEnum等结构体说明

 

2021.8.16

陈见埔

 

5AS编程

(1)添加库

添加库:MpData。

clip0013

 

(2)添加配置文件

首先,添加mapp配置文件夹。在Configuration View中的X20CP1586文件夹下(根据实际PLC型号不同而改变)

mappServices文件夹中添加MpData所需的配置文件(默认名为Config.mpdatarecorder),该文件用于配置数据记

录的相关信息。添加配置文件后,相应的MpLink也会随之自动添加。打开配置文件,MpLink的名字显示在最顶

部。如果需要,可以修改各配置文件中的MpLink的名字。本例中,使用默认名字(gDataRecorder)。

clip0014

clip0015

:具体的配置文件的内容介绍将会在功能块MpDataRecorderConfig中介绍。

 

(3)设置FileDevice

在Physical View中右键CPU打开CPU Configuration,并根据需要设置相应FileDevice,用来作为配方文件存储的地方。

注意:路径不能是根目录,否则功能块调用会报错。

clip0016

(4)添加功能块MpDataRecorder并配置输入输出引脚

该功能块负责记录变量的值,并且存储在CSV或PDF文件中。

clip0017

连接MpLink:在“MpLink”这个输入端输入配方配置文件中的MpLink变量的地址。

使能功能块:Enable输入端置1后功能块运行。

数据存储设备:在“DeviceName”输入数据存储设备的设备名的地址。

采样周期:“SamplingTime”输入端设置了数据记录的周期。

记录模式(“RecordMode”)定义了数据保存的触发事件。有以下七种模式可用(前提是必须使能MpDataRecorder的Record引脚):

模式(Enum)

说明

mpDATA_RECORD_MODE_TIME

基于时间的模式。在这种模式中,“SamplingTime”输入端定义了变量值保存的间隔时间。为了防止抖动,采样时间应该是任务循环周期的整数倍。

mpDATA_RECORD_MODE_TRIGGER

外部触发模式。在Trigger的上升沿数据保存一次。用作触发的变量需要连接在MpDataRecorder功能块的“Trigger”输入端。

mpDATA_RECORD_MODE_VALUE

变量值变化时保存。当注册的任一变量值改变时,所有注册变量的值均会被重新保存。

mpDATA_RECORD_MODE_TIME_TRIGGER

在一段时间后(经测试为设置采样周期)或Trigger的上升沿后以采样周期持续保存注册变量(每捕捉到一次Trigger的上升沿,储存一次)。

mpDATA_RECORD_MODE_TIME_VALUE

在一段时间后(经测试为设置采样周期)或当注册的任一变量值改变时,所有注册变量的值均会被重新保存(期间每改变一次,储存一次)。

mpDATA_RECORD_MODE_TRIGGER_VALUE

在Trigger的上升沿或变量值变化时保存。(注意:此时采样周期不起作用,数据存储时机完全由Trigger的上升沿或变量值变化决定)

mpDATA_RECORD_MODE_TIME_TRIG_VAL

在一段时间后(经测试为设置采样周期)或Trigger的上升沿,或当注册的任一变量值改变时,所有注册变量的值均会被重新保存(此模式下当达到采样周期、Trigger触发、注册的任一变量值改变时均会存储相应数据,三者同步进行)。

在这些模式中,当满足存储条件时,注册变量的当前值就会被保存,存储在内存中。使用MpDataRegPar功能块

来注册需要记录的变量。需要注意的是,只有在MpDataRecorder功能块Active(Active = TRUE)的时候,才能通

过MpDataRegPar功能块注册变量。

下载程序,把“Record”手动置为1,数据就开始记录了。可以从info中看到数据的记录信息。

clip0018

 

“Info” 结构体给出了当前状态的详细信息。

FileCount:表示当前已经记录了多少个文件;

CurrentFileName:当前数据存储的文件名;

CurrentFileSize:当前数据存储的文件大小,kB;

CurrentBufferSize:正在使用的内存大小,kB;

RegisteredPVCount:表示当前注册的变量有多少;

TotalSamples:从开始记录,每个注册变量记录了多少个数据;

ValueOutsideLimits:需搭配MpDataRegParLimits功能块使用,当MpDataRegParLimits注册变量值超出注册时指定上下限时,ValueOutsideLimits变为TRUE。

 

“Header”输入端是一个可选输入项,通过它可以给文件加一个header,例如说明一下变量名作为注释。

clip0019

clip0020

clip0021 clip0022

通过Notepad++打开发现,mappData头三行分别保存数据分隔符,Header. Name以及Header. Description。若程序

中不指定Header信息,则CSV文件默认留空,Notepad++仅保留数据分隔符。(若要删除头三行信息,仅能通过

自行编程改写,无法通过AS设置)

clip0023

 

clip0024

“SnapShot”命令可以把当前内存中的数据额外存成一个文件,当“SnapShotDone”输出端被置为TRUE的时候表示该

操作结束了。该命令存储的文件名与自动存储的文件名不一样。正常的记录和存储工作不会受到该命令影响。

clip0025

 

“RecordDone”输出端会在数据记录结束后置为TRUE。如果MpDataRecorder的数据记录被设置为环形内存,那么记

录就永远都不会结束。

掉电后的数据可以这样恢复:MpDataRecorder功能块必须以同样的“BufferSize”和

“TimePeriod”值启动。此外,注册变量也必须是一样的,而且配置不变。文件设备上已

经创建的文件将不受掉电影响。

如果掉电后要将数据丢掉,那么就把MpDataRecorder功能块disable。当重新Enable后,内部buffer就清空了,然后重新开始。

 

 

(5)添加功能块MpDataRegPar并配置输入输出引脚

该功能块用来注册需要记录的变量。

该功能块使用的MpLink和MpDataRecorder一样。

当功能块使能后,输入端指定的变量就注册成为需要记录的变量了。在MpDataRecorder功能块不激活时

(Active=FALSE),或者“Record”命令启动后,是不能注册新的变量的。功能块还需要配置以下输入端:

PVName:需要注册的变量名;

指定变量名时需要用以下格式:

Global PV:直接变量名(例如,“gTestVariable”,”gControl.Parameter.Distance”)

Local PV:任务名:变量名(例如,“Task:LocalTestVariable”,“AxisCtrl:Basic.Command.MoveVelocity”)

Unit:变量的单位,字符形式;

Description:简短描述,字符形式

程序中若不指定Description,CSV记录文件中抬头为变量名

clip0026

clip0027

程序中指定Description,CSV记录文件中抬头为Description信息

clip0028

clip0029

ScaleFactor:存储之前对变量值进行缩放的倍乘系数,默认值是1.0。

clip0030

clip0031

想要从已注册的记录变量中删除一个变量的话,可以将改变量对应的MpDataRegPar功能块disable

(Enable=FALSE)。如果在删除变量时,变量还处于记录状态,那么该变量会在记录结束后从变量注册表中删

除。每一个需要记录的变量都要用一个MpDataRegPar功能块来注册。

:数组、功能块、TIME_OF_DAY变量亦可注册为记录变量。

(6)添加功能块MpDataRecorderConfig

该功能块用来保存或读取MpDataRecorder功能块的当前配置

   推荐使用方法是通过config文件(Configuration View-mappServices-Config.mpdatarecorder)来定义,MpDataRecorderConfig功能块只用于在线更改配置而用。

   该功能块使用的MpLink和MpDataRecorder功能块一样。

  “Configuration”输入端用于指定配置变量;

“Save”命令用于为MpDataRecorder功能块保存配置;

“Load”命令用于读取MpDataRecorder功能块的当前配置。该命令会覆盖配置变量(MpDataRecorderConfigType)结构体中的参数。

clip0032

配置MpDataRecorderConfigType(上图中Config变量)结构体。该结构体与配置文件内容一致,以下说明同样适用于配置文件中的参数配置。

clip0033

变量值保存到文件中

数据记录从“Record”命令的上升沿开始。变量值首先保存在内存中。内存的大小由参数“BufferSize”定义。“SaveInterval”参数决定了数据从内存传送到文件的频率。这个过程一直重复直到文件大小达到“MaxFileSize”。当文件大小达到最大后,会生成一个新的文件继续记录。当文件数量达到“MaxNumberOfFiles”时,数据记录就结束了。如果这时,内存中还有多余的数据,那么这些数据会保存在另外一个文件中(该文件不计入“MaxNumberOfFiles”)。如果使用了选项“OverwriteOldestFile=TRUE”,那么当文件数量达到最大值后,数据记录也不会停止,而是会将最先记录的文件覆盖,这样,数据记录就永远不会停止。

 

变量值保存在内存中

数据记录从“Record”命令的上升沿开始。量值首先保存在内存中。内存的大小由参数“BufferSize”定义。如果“AutoSave=TRUE”,那么内存中的buffer是一个环形buffer。当这个buffer满了之后(Info结构体中的CurrentBufferSize的值等于配置结构体中BufferSize的值),新的数据就会把最先保存的数据覆盖。

 

其他参数

“PowerFailSafe”参数用来设定掉电时是否保存参数。如果选择使能,则数据被存入文件前先记录在SRAM中(UserRAM),如果选择不使能,则存在DRAM中。

设定“BufferSize”参数时,要先保证RAM中有足够的内存大小。这些内存是不能用于其它功能的。

如果控制器没有足够的SRAM,那么数据就会存储在DRAM中,并且在logger中生成一条记录。当然掉电时也不能实现数据保存的功能。

注意:当使用电池保存的内存时,必须要为控制器配置足够的变量内存,如下图。

clip0034

“DecimalDigits”定义了保留几位小数位。

“FileNamePattern”参数定义了生成文件的命名格式。文件名由描述和时间戳组成:

Default format:默认格式,Datalog_%Y_%m_%d_%H_%M_%S.csv(例如,Datalog_1990_25_03_01_13_27.csv)

Adjusted format:调整格式 ,Datalog _%H_%M_%S_%d_%m _%Y.csv(例如,Datalog13_27_00_27_11_1989.csv)

 

每次记录数据都会带有时间戳。使用“TimeStampPattern”参数来设置,格式如下:

Default format:默认格式,%Y %m %d %H:%M:%S:%L(例如, 1990 25 03 13:27:03:253)

Adjusted format:调整格式 ,DD.MM.YYYY HH:mm:SS(例如,25.02.1991 13:27:03:561)

 

下表中是调整格式时的可用选项:

clip0035

保存数据到csv文件时,“ColumnSeparator”参数用来定义数据之间的分隔符。“DecimalMark”用来定义小数点的字符。

      AutoSave(Save automatically):当关闭时,数据会被连续记录至内部Buffer中,并可通过Snapshot引脚输出全部记录值。当打开时,Snapshot仅能输出当前记录的部分记录值。

      SaveInitialValues:当打开该开关时,MpDataRecorder功能块Record引脚一置TRUE即记录一次注册变量采样值,此后记录模式由程序定义的RecordMode决定。

 

(7)添加上位接口功能块MpDataTableUI

该功能块用来在上位界面中显示记录的数据表。

该功能块所使用的MpLink和MpDataRecorder一样。

MpDataTableUI在VC4和当前记录数据之间建立了连接,数据交换通过MpDataTableUIConnectType(下图中UIConnect变量)进行。

clip0036

以下数据类型可以通过表格显示:

BOOL

SINT

INT

DINT

USINT

UINT

UDINT

REAL

LREAL

结构体、由以上数据类型组成的数组

枚举变量

 

MpDataTableUIConnectType说明

该数据类型包含上位显示的必需信息。

参数

数据类型

描述

Status

MpDataUIStatusEnum

当前状态

Table

MpDataTableType

以表格形式显示变量及其值

AutoRefresh

BOOL

使能自动刷新。当变量值变化时表格会刷新。

Refresh

BOOL

手动刷新表格。

Language

STRING[20]

单位设置

 

MpDataUIStatusEnum说明:该参数提供了显示变量值的表格的当前状态。

枚举值

描述

MpDATA_UI_STATUS_IDLE

当前没有操作

MpDATA_UI_STATUS_REFRESH

刷新表格

MpDATA_UI_STATUS_ERROR

上一个操作出错

 

Table(MpDataTableType)是主要的列表显示操作信息。

参数

数据类型

描述

PV

MpDataTableUIPVType数组[0..9]

变量相关信息

Index

UDINT类型数组[0..19]

一条记录的索引号

TimeStamp

STRING类型数组[0..19]

时间戳。显示格式由“TimeStampPattern”决定

PageUp

BOOL

跳到页面的最上端,之后每次向上滚动一页。

VC4连接:Button / Type: SetDatapoint的数据点。

PageDown

BOOL

跳到页面的最末端,之后每次向下滚动一页。

VC4连接:Button / Type: SetDatapoint的数据点

StepUp

BOOL

选择列表中上一个

VC4连接:Button / Type: SetDatapoint的数据点

StepDown

BOOL

选择列表中下一个

VC4连接:Button / Type: SetDatapoint的数据点

PageLeft

BOOL

跳到页面的最左端,之后每次向左滚动一页。

VC4连接:Button / Type: SetDatapoint的数据点

PageRight

BOOL

跳到页面的最右端,之后每次向右滚动一页。

VC4连接:Button / Type: SetDatapoint的数据点

StepLeft

BOOL

选择列表中左边一个

VC4连接:Button / Type: SetDatapoint的数据点

StepRight

BOOL

选择列表中右边一个

VC4连接:Button / Type: SetDatapoint的数据点

RangeStartRows

REAL

连接到进度条,用来表明当前显示的是哪一部分(行)。该参数连接的是范围的开始部分。总的范围应该对应于列表的长度,“Range”应该对应于一页中显示的长度。

VC4连接:Scale的StartDatapoint

RangeEndRows

REAL

连接到进度条,用来表明当前显示的是哪一部分(行)。该参数连接的是范围的结束部分。总的范围应该对应于列表的长度,“Range”应该对应于一页中显示的长度。

VC4连接:Scale的StartDatapoint

RangeStartColumns

REAL

连接到进度条,用来表明当前显示的是哪一部分(列)。该参数连接的是范围的开始部分。总的范围应该对应于列表的长度,“Range”应该对应于一页中显示的长度。

VC4连接:Scale的StartDatapoint

RangeEndColumns

REAL

连接到进度条,用来表明当前显示的是哪一部分(列)。该参数连接的是范围的开始部分。总的范围应该对应于列表的长度,“Range”应该对应于一页中显示的长度。

VC4连接:Scale的StartDatapoint

部分变量连接如下图所示:

clip0037

MpDataTableUIPVType结构体说明:它包含变量需要显示的描述信息。可以同时显示20个记录的变量值;

参数

数据类型

描述

Name

STRING[100]

变量名

Description

STRING[50]

变量描述

DescriptionIndex

UINT

该参数可以为每个变量对应一个文本组中的文本。该参数是自动赋值的,并且每个变量都不一样。

如果变量注册的顺序改变了,或者是在运行时动态注册的,那么每个变量的DescriptionIndex也会改变,会导致与文本组中的对应描述不符。

Unit

STRING[20]

变量单位

Value

LREAL类型数组[0..19]

在时间戳处的变量值

LowerLimit

LREAL类型数组[0..19]

变量上限

UpperLimit

LREAL类型数组[0..19]

变量下限

LimitMonitor

MpDataPVItemLimitEnum结构体变量数组[0..19]

指示当前值是否在定义范围内或超限

MpDataPVItemLimitEnum结构体说明:该结构体存储了注册变量是否超限信息。

枚举值

描述

mpDATA_NO_LIMITS_CONFIGURED

未定义限制值或定义值对变量无效(例如String变量)

mpDATA_WITHIN_LIMITS

变量值在限制范围内

mpDATA_UPPER_LIMIT_VIOLATED

变量值超出上限

mpDATA_LOWER_LIMIT_VIOLATED

变量值超出下限

 

MpDataTableUISetupType说明:该结构体用来配置页面的相关显示参数。

参数

数据类型

默认值

描述

ValueListSize

UINT

20

一页可以显示的注册变量记录值个数

ValueScrollWindow

USINT

1

翻页滚动时,表格中可以预览的变量值个数

PVListSize

UINT

10

一页可以显示的注册变量个数

PVScrollWindow

USINT

1

翻页滚动时,表格中可以预览的注册变量个数

 

6Demo程序

mappDataTest