用于与 PLC 通讯的字段

MODICON®* 插件利用 Modbus 通讯协议与 PLC 进行通讯。传输的信息由该插件的配置定义。对于每种类型的信息,例如请求的命令或结果值,都会提供一个所谓的“字段”。当插件启动时,该组字段将导出到一个 .csv 文件,它代表可由 PLC 使用的一组全局符号。在 PLC 程序中构建变量列表时,导出的 .csv 文件可用作参考。

对于.csv 文件中的每个字段,会在 PLC 上保留一个特定的内存区块。PLC 和插件都使用这些字段来写入和读取所需的数据。这些字段可在 PLC 的内存中分为两个区块。PLC 使用一个区块请求命令或定义执行参数。插件使用另一个区块写入视觉系统提供的信息,例如,视觉系统的一般信息或执行结果。PLC 可以读取和处理字段中提供的由插件写入的信息,反之亦然。每个字段都有预定义的名称。

一些字段是设置的固定部分,并且将始终提供,例如,包含视觉系统当前状态的字段。我们将这些类型的字段称为静态字段。相反,也存在一些动态字段(如结果值的字段),它们取决于插件的配置,并且只有在相应地设置了插件的各个参数时才会提供。在以下部分中,您可以找到属于协议中固定部分的静态字段和只有在相应地配置插件时才添加的动态字段的概述。

导出用于 PLC 的字段

该组字段可导出到 MERLIC RTE Setup 的“通讯”选项卡中。

  1. 在左侧选择所需的 MODICON®* 插件实例以显示该插件的配置。
  2. 如有必要,调整要导出的 .csv 文件的位置和文件名称。相应的参数在参数类别 Export Symbols 中提供。
  3. 单击 MERLIC RTE Setup 底部的“ 启动插件”按钮将字段导出到指定的文件中。

当插件启动时,即点击启动按钮时,字段将自动导出到指定文件。导出的文件包含所有必填字段的信息、相应的数据类型以及分配的内存地址。

字段可独立于 PLC 导出。导出不需要连接到 PLC。但是,如果尚未建立连接,则会出现一条错误消息,表明插件无法启动。如果只想导出 .csv 文件,可以忽略此错误。

EcoStruxure™ Machine Expert - Basic 中执行 PLC 程序时,导出的文件用作通讯所需的字段和内存区块的参考。为此,您可以导入该文件,如下一部分中所述。

导入包含符号的文件

将插件配置的选定字段导出到 .csv 文件后,可将此文件导入“EcoStruxure™ Machine Expert - Basic”,并使用相应的字段来执行 PLC 程序。

我们文档中使用了“EcoStruxure™ Machine Expert - Basic EcoStruxure™ Machine Expert - Basic 是一款来自 Schneider Electric 的 PLC 工程软件,它可用于对来自 Schneider Electric 的 Modicon®* PLC 进行配置、编程和监视。”版本 1.2 SP1 Patch 1 build 65760。如果您使用不同版本的程序,则用户界面和参数名称可能与示例图像中所示有所不同。有关“EcoStruxure™ Machine Expert - Basic”、其功能以及如何使用它对 Schneider ElectricModicon®* PLC 进行编程和监控的信息,请浏览 Schneider Electric 的网站。

在“EcoStruxure™ Machine Expert - Basic”中,您可以按照以下步骤导入此文件。

  1. 转到“Programming”窗口。
  2. 选择左侧的“Tools”选项卡并单击“Symbol list”。

  3. 在“Symbol list”窗口中,单击“Import”按钮打开导入对话框。

  4. 选择 .csv 文件并单击“Import”。

静态字段

这种类型的字段始终可用于通讯。它们中的大多数都由插件写入,目的是提供有关视觉系统或当前执行的信息。PLC 仅写入几个静态字段。

由插件写入的静态字段

字段

数据类型

描述

GMV_VERSIONMAJOR

INT

插件的主要版本号。

GMV_VERSIONMINOR

INT

插件的次要版本号。

GMV_CURRENTSTATE

INT

MERLIC 的当前状态,例如,72 表示“SingleExecution”。

有关不同状态的值及其编码方式的更多信息,请参阅MERLIC状态部分。

GMV_LASTRESULTID

DINT

最新结果的 ID。

GMV_NUMBEROFRECIPES

DINT

可用配方的数量。

GMV_PREPARERECIPEIDS

ARRAY [0..31] OF BOOL

指示当前准备的配方。它包含一个数组,其中每个条目指示当前是否已准备对应于索引的配方。只有当定义的配方不超过 32 个时,此字段才有效。此外,使用 MERLIC 时只能准备一个配方。

GMV_RUNNINGJOBID

DINT

当前运行的工作的 ID。

GMV_ACQUISITIONDONECOUNT

DINT

为当前工作执行的图像采集次数。最初设置为 0,表示还没有采集到图像。对于每个新工作,此字段会重置。

GMV_ACKCOMMANDCODE

INT

插件最后确认的请求命令的代码。

GMV_ERRORCODE

DINT

数字错误代码。它提供有关错误性质、严重程度和受影响组件的信息。

有关如何返回错误的更多信息,请参阅错误处理

GMV_ERRORCAUSE

INT

导致错误的命令的代码。它具有与“GMV_REQCOMMANDCODE”和“GMV_ACKCOMMANDCODE”字段中给定的数值相同的数值。

有关如何返回错误的更多信息,请参阅错误处理

GMV_DROPPEDRESULTCOUNT

DINT

使用结果模式“Dequeue from buffer”时丢弃的结果数量。最初设置为 0,每丢弃一个结果则递增。

如果 PLC 没有足够快地将结果移出队列,并且超出了结果缓冲区容量,则缓冲区中最旧的结果(即本应下一个移出队列的结果)将被丢弃。

GMV_RESULTID

DINT

当前显示的结果的 ID。

GMV_RESULTRECIPEID

DINT

产生所显示结果的配方的 ID。

GMV_RESULTJOBID

DINT

产生显示结果的工作的 ID。

GMV_RESULTSTATE

INT

所显示结果的状态:

  • 1 = 已完成
  • 2 = 正在处理
  • 3 = 已中止
  • 4 = 失败

由 PLC 写入的静态字段

字段

数据类型

描述

GMV_REQCOMMANDCODE

INT

所请求命令的代码。

有关可用命令及其代码的更多信息,请参阅插件与 PLC 之间的通讯

GMV_COMMANDRECIPEIDINUSE

BOOL

指示“GMV_COMMANDRECIPEID”中定义的配方是否将用于“GMV_REQCOMMANDCODE”中请求的命令。

GMV_COMMANDRECIPEID

DINT

当“GMV_COMMANDRECIPEIDINUSE”的值设置为 TRUE 时,将用于“GMV_REQCOMMANDCODE”中所请求命令的配方的 ID。

动态字段

默认情况下不提供这种类型的字段。只有在相应地配置插件时,才会将它们添加到 PLC 内存。因此,插件的配置决定了哪些动态字段将用于通讯。与静态字段一样,一些动态字段是由插件写入的,其他一些是由 PLC 写入的。以下部分提供了动态字段的概述。

由插件写入的动态字段

字段

描述

GMV_RESULTUSEARRAY_<TYPE>_W0

指示是否可以查询相应数据类型的任何结果。

它包含一个数组,其中每个位都用作此数据类型特定结果的指示符。数组大小取决于插件的配置,即取决于 Writing Data to PLC Memory 类别中相应结果数据类型的设置。

例如,如果插件参数“INT (signed 16-bit integer) result allocation”设置为 2,则“GMV_RESULTUSEARRAY_INT_W0”字段将添加到 PLC 内存中。如果“GMV_RESULTUSEARRAY_INT_W0”的两个最低有效位为 1,则数据类型 INT 的两个结果都可用。

但是,如果插件配置为数据类型 INT 定义了 16 个以上的结果,则“GMV_RESULTUSEARRAY_INT_W0”字段中的位数不足以指示每个结果的可用性。在这种情况下,将添加另一个字段“GMV_RESULTUSEARRAY_INT_W1”。然后,此字段可以用作数据类型 INT 的接下来 16 个结果的指示符。

可用的数据类型:

  • BOOL
  • INT
  • DINT
  • REAL
  • STRING[80]

GMV_RESULT_<TYPE>_<INDEX>

数据类型 BOOLINTDINTREAL 的实际结果值。

每个结果将被写入其自身的字段中。结果字段的符号由前缀“GMV_RESULT_”加上数据类型和结果索引组成。

只有在类别 Writing Data to PLC Memory 中相应地设置了插件的配置,这些类型的字段才会添加到 PLC 内存中。

例如,如果插件参数“INT (signed 16-bit integer) result allocation”设置为 2,则将有两个结果值字段添加到 PLC 内存中:“GMV_RESULT_INT_0”和“GMV_RESULT_INT_1”。带有符号“GMV_RESULT_INT_0”的字段将用于数据类型 INT 的第一个结果的值,带有符号“GMV_RESULT_INT_1”的字段将用于第二个 INT 结果。执行后,“GMV_RESULTUSEARRAY_INT_W0”的前两位将指示这些 INT 结果是否可用。

GMV_RESULT_STRING80_<INDEX>_W<WORD_INDEX>

数据类型 STRING[80] 的实际结果值。

对于数据类型 STRING[80] 的结果,会保留 40 个寄存器地址,因为它是通过单个 WORDS 序列映射的。这意味着单个 STRING[80] 结果的值有 40 个字段。这些字段的符号与其他数据类型结果的符号组成相似,但有一个附加后缀:“W<WORD_INDEX>”。附加后缀由字符“W”和索引号组成。此索引号指示相应字段引用包含 STRING[80] 值的 40 个 WORDS 中的哪一个,即哪些字节。

例如,为数据类型 STRING[80] 的第一个结果值保留的字段的符号如下:“GMV_RESULT_STRING80_0_W0”、“GMV_RESULT_STRING80_0_W1”、依此类推,直至“GMV_RESULT_STRING80_0_W39”。所有这些符号的第一个索引 0 指示这些字段引用类型 STRING[80] 的第一个结果值。第二个索引指的是单个 WORDS 序列内的相应字。因此,带有符号“GMV_RESULT_STRING80_0_W0”的字段用于第一个 STRING[80] 结果的前两个字节。带有符号“GMV_RESULT_STRING80_0_W1”的字段用于第一个 STRING[80] 结果的第三个和第四个字节,依此类推,直到带有符号“GMV_RESULT_STRING80_0_W39”的字段用于最后两个字节。

只有在类别 Reading Data from PLC Memory 中相应地设置了插件的配置,这些类型的字段才会添加到 PLC 内存中。

例如,如果插件参数“STRING[80] result allocation”设置为 2,则将有 80 个结果值字段添加到 PLC 内存中:40 个字段用于第一个 STRING[80] 结果的值(“GMV_RESULT_STRING80_0_W0”至“GMV_RESULT_STRING80_0_W39”),40 个字段用于第二个 STRING[80] 结果的值(“GMV_RESULT_STRING80_1_W0”至“GMV_RESULT_STRING80_1_W39”)。

由 PLC 写入的动态字段

字段

描述

GMV_ITPARAMUSEARRAY_<TYPE>_W0

指示相应数据类型的配方参数是否应在下一次执行时被相应迭代参数字段中定义的值覆盖。

它包含一个数组,其中每个位都用作此数据类型的特定迭代参数的指示符。数组大小取决于插件的配置,即取决于 Reading Data from PLC Memory 类别中相应迭代参数数据类型的设置。

例如,如果插件参数“INT (signed 16-bit integer) iteration parameter allocation”设置为 2,则字段“GMV_ITPARAMUSEARRAY_INT_W0”将与迭代参数值的“GMV_ITPARAM_INT_0”和“GMV_ITPARAM_INT_1”字段一起添加。如果“GMV_ITPARAMUSEARRAY_INT_W0”的前两位设置为 1,则数据类型 INT 的前两个配方值将在下一次执行时被“GMV_ITPARAM_INT_0”和“GMV_ITPARAM_INT_1”中定义的值覆盖。

但是,如果插件配置为数据类型 INT 定义了 16 个以上的迭代参数,则“GMV_ITPARAMUSEARRAY_INT_W0”中的位数不足以为每个迭代参数指示是否应将相应的值用于下一次执行。在这种情况下,将添加另一个字段“GMV_ITPARAMUSEARRAY_INT_W1”。然后,此字段可以用作数据类型 INT 的接下来 16 个迭代参数的指示符。

GMV_ITPARAM_<TYPE>_<INDEX>

数据类型 BOOLINTDINTREAL 的迭代参数值。

相应字段的符号由前缀“GMV_ITPARAM_”加上数据类型和迭代参数索引组成。

只有在类别 Reading Data from PLC Memory 中相应地设置了插件的配置,这些类型的字段才会添加到 PLC 内存中。

例如,如果插件参数“INT (signed 16-bit integer) iteration parameter allocation”设置为 2,则将有两个结果值字段添加到 PLC 内存中:“GMV_ITPARAM_INT_0”和“GMV_ITPARAM_INT_1”。带有符号“GMV_ITPARAM_INT_0”的字段用于数据类型 INT 的第一个迭代参数值,带有符号“GMV_ITPARAM_INT_1”的字段用于第二个 INT 参数值。当请求“StartSingleJob”或“StartContinuous”命令时,“GMV_ITPARAMUSEARRAY_INT_W0”的前两位将指示是否使用这些值来覆盖配方中定义的相应值。

GMV_ITPARAM_<TYPE>_<INDEX>_W<WORD_INDEX>

数据类型 STRING[80] 的迭代参数值。

对于数据类型 STRING[80] 的迭代参数,会保留 40 个寄存器地址,因为它是通过单个 WORDS 序列映射的。这意味着单个 STRING[80] 参数的值有 40 个字段。这些字段的符号与其他数据类型的迭代参数的符号组成相似,但有一个附加后缀:“W<WORD_INDEX>”。附加后缀由字符“W”和索引号组成。此索引号指示相应字段引用 40 个 WORDS 中的哪一个,即哪些字节。

例如,为数据类型 STRING[80] 的第一个迭代参数保留的字段的符号如下:“GMV_ITPARAM_STRING80_0_W0”、“GMV_ITPARAM_STRING80_0_W1”、依此类推,直至“GMV_ITPARAM_STRING80_0_W39”。所有这些符号的第一个索引 0 指示这些字段引用类型 STRING[80] 的第一个迭代参数。第二个索引指的是单个 WORDS 序列内的相应字。因此,带有符号“GMV_ITPARAM_STRING80_0_W0”的字段用于第一个 STRING[80] 参数值的前两个字节。带有符号“GMV_ITPARAM_STRING80_0_W1”的字段用于第一个 STRING[80] 参数的第三个和第四个字节,依此类推,直到带有符号“GMV_ITPARAM_STRING80_0_W39”的字段用于最后两个字节。

只有在类别 Reading Data from PLC Memory 中相应地设置了插件的配置,这些类型的字段才会添加到 PLC 内存中。

例如,如果插件参数“STRING[80] iteration parameter allocation”设置为 2,则将有 80 个结果值字段添加到 PLC 内存中:40 个字段用于第一个 STRING[80] 参数的值(“GMV_ITPARAM_STRING80_0_W0”至“GMV_ITPARAM_STRING80_0_W39”),40 个字段用于第二个 STRING[80] 参数的值(“GMV_ITPARAM_STRING80_1_W0”至“GMV_ITPARAM_STRING80_1_W39”)。当请求“StartSingleJob”或“StartContinuous”命令时,“GMV_ITPARAMUSEARRAY_STRING80_W0”的前两位将指示是否使用这些值来覆盖配方中定义的相应值。

MERLIC 状态

使用 MODICON®* 插件时,MERLIC 的内部状态通过“GMV_CURRENTSTATE”字段传输到 PLC。

传输关于当前状态的信息的字节编码如下:

位栏位置

数值

MERLIC 状态

描述

0

1

Preoperational

如果该位数设置为 1,则MERLIC处于状态“Preoperational”。

3

8

OperationalAutomaticMode

如果该位数设置为 1,则MERLIC处于状态“OperationalAutomaticMode”。这意味着 MERLIC 的状态为“Initialized”、“Ready”、“SingleExecution”或“StartContinuous”。

3,4

24

Initialized

如果第 3 位数和第 4 位数已设置,则 MERLIC 处于“Initialized”状态。

3,5

40

Ready

如果第 3 位数和第 5 位数已设置,则 MERLIC 处于 “Ready” 状态。

3,6

72

SingleExecution

如果第 3 位数和第 6 位数已设置,则 MERLIC 处于 “SingleExecution” 状态。

3,7

136

ContinuousExecution

如果第 3 位数和第 7 位数已设置,则 MERLIC 处于“ContinuousExecution”状态。

1

2

Halted

如果该位数设置为 1,则MERLIC处于状态“Halted”。

2

4

Error

如果该位数设置为 1,则MERLIC处于状态“Error”。

3,8

264

OperationalFrontendAccessMode

如果第 3 位数和第 8 位数已设置,则 MERLIC 处于手动状态。这意味着 MERLIC 只能通过 MERLIC Frontend 进行控制。有关手动模式的更多信息,请参阅 MERLIC 手册中的 Frontend 中的写入权限

有关更多信息,请参阅MERLIC 状态


* Modicon® is a registered trademark of Schneider Electric USA, Inc.