说明

<< 点击显示目录 >>

主页  mappServices帮助手册 > mapp Recipe:配方管理 > > 功能块 > MpRecipeCsv  >

说明

mapp Services V5.16

本功能块使用MpRecipeCsv配置的MpLink。

以下是该功能块的主要功能:

加载: 配方数据可以被加载到相应的过程变量中。

保存: 可以将注册PV的当前数据写入配方。

如果指定的配方还不存在,将被创建。如果没有为新配方指定扩展名,将自动添加.csv。可以在 MpRecipeCsv配置中的自动文件扩展 一节中 禁用自动添加扩展名 。

如果MpRecipeCsv的多个实例与不同的注册PV存在于由 MpComGroup创建的组中 ,那么如果 "保存 "设置为 TRUE该组中的所有PV将被写入配方中 。

版本控制: 读取标题信息使得检查当前使用的配方版本成为可能。

由该mapp组件处理的配方是CSV文件。关于CSV文件的结构信息,见 配方文件结构一节

CSV文件格式是开放的,如果没有加密,可以用基本的文本编辑器进行操作。

在设置命令时,必须确保输出参数 "CommandDone "被设置为 FALSE 。这意味着只有一个命令可以被激活("TRUE")!

例子:

如果一个配方应该被加载("Load = TRUE"),命令必须是 "Save = FALSE"。

Linux系统上工作时,不能访问受限制的系统文件夹。例如,文件夹 "lost+found "是受限制的。如果有人试图访问一个受限制的文件夹,就会触发错误 "无效的文件设备" 。所有带有EXT2/3/4文件系统的Linux设备,例如MP71xx或T30,都受到影响。

restricted folder

加载一个配方

在发出加载命令之前,必须指定一个有效的数据存储介质("DeviceName")和配方("FileName")。然后必须使用输入 "LoadType "来选择是否应加载整个配方或仅加载其标题信息。如果一个结构被连接到输入 "Header"(MpRecipeCsvHeaderType),那么配方的标题信息将被存储在那里。以下是 "LoadType "的可能模式。

mpRECIPE_FILE_LOAD_HEADER: 只读取配方头的内容,然后写入上面的结构中。如果一个变量没有连接到输入 "Header",那么什么也不会被写入。这种模式对版本控制特别有帮助(见下文)。

mpRECIPE_FILE_LOAD_ALL: 读取配方的全部内容。头部信息被写入输入 "Header"(如果存在)的结构中;配方数据被写入相应的PV中。

"Load "命令用于从配方中读取数据。一个成功的加载程序由 "CommandDone = TRUE"确认 。

如果加载的配方包含未注册的参数,则只加载当前已注册的参数。假设我们正在加载配方 "咖啡",它包含糖、牛奶、咖啡渣和水的参数。因为目前只有糖、牛奶和咖啡渣的参数被注册,水的参数没有被加载。 报告警告 mpRECIPE_WRN_LOAD_WITH_WARN

然而,如果加载的配方不包含所有当前注册的参数,那么未被重新加载的参数保持不变。例如,配方 "咖啡 "被加载了糖、牛奶和咖啡粉的参数。然而,目前注册的是糖、牛奶、咖啡渣和水的参数。在这种情况下,当前用于水参数的值保持不变。 还会报告警告 mpRECIPE_WRN_LOAD_WITH_WARN

如果加载的CSV文件使用了不同的分隔符("; "而不是","),那么该文件不能被正确读取。因此,该配方不能被加载。

在加载程序之后,所有 MpRecipeRegParMpRecipeRegParSync 功能块可以被告知已经从配方中读取了新的参数。这个命令必须在输入 "UpdateNotification "时手动启用。如果当前过程没有直接使用配方数据进行操作,而是必须首先应用这些数据,那么这个程序就很有用。如果加载了新的数据,并且用户传递了信号 "UpdateNotification",就会发生这种情况。

logo_use_case

用例 "用新配方数据安全地更新机器 " 解释了如何使用 "UpdateNotification "命令。

保存一个配方

当 "保存= TRUE"时,当前的PV数据被写入配方中。这个过程对于功能块 MpRecipeRegParMpRecipeRegParSync不同的

MpRecipeRegPar: 如果使用该功能块注册了一个过程变量,那么在发出保存命令时,新数据将直接存储在配方中。

MpRecipeRegParSync: 当使用此功能块时,必须确认从PV到配方的数据传输。"保存= TRUE"使 所有MpRecipeRegParSync功能块中状态 "SaveNotification= TRUE"可用。这表明当前的PV数据可以被写入配方中。然而,这必须首先被确认。保存程序通过MpRecipeRegParSync上的输入 "ConfirmSave "进行确认;只有在这时,数据才真正从PV中传输到配方中。这允许用户在保存数据之前对数据进行操作或防止潜在的数据不一致。只要数据没有得到 "SaveNotification "的确认,就不可能有新的保存命令。这意味着 "保存 "在保存过程中可以被禁用和重新启用。这并不影响保存过程。只有当 "SaveNotification "被设置为 "true "时,才能启动新的保存程序。

如果文件名("FileName")没有扩展名, .csv 将被自动添加。可以在 MpRecipeCsv配置中的 "自动文件扩展名" 部分 禁用自动添加扩展名 。

一旦保存成功,输出 "CommandDone = TRUE"。如果由于活动的MpRecipeRegParSync功能块导致保存延迟(没有通过 "ConfirmSave "进行确认),那么 "Save "命令仍处于活动状态,这将由 "CommandBusy = TRUE"表示 。只有在该过程被所有站点确认后,PV数据才会被保存。

MpRecipeCsv 配置中,可以 通过 "自动保存 " 来启用自动保存 。然后必须指定一个保存时间间隔。"立即开始 "定义了当 MpRecipeCsv 被启用 时是否应立即保存配方  。

如果在保存配方时发生错误,详细的信息总是列在记录器Logger中。

版本控制

版本控制可以通过输入 "Header "和 "LoadType "来实现。由于可以只加载配方的标题,所以很容易确定手头的配方是哪个版本。然后,用户可以加载另一个配方或加载完整的配方。有关其他信息,请参见 配方文件的结构一节

配方类别

不同的PV可以通过输入 "类别 "分割成几个配方。如果在注册变量(MpRecipeRegParMpRecipeRegParSync)和管理配方(MpRecipeCsv时指定了相同的类别,那么该变量值将与相同的类别一起存储在配方中。更多信息请见这里。 类别

每个PV都需要单独的 MpRecipeRegParMpRecipeRegParSync 功能块。