用于与 PLC 通讯的字段
对于 .csv 文件中的每个字段,会在 PLC 上保留一个特定的内存区块。PLC 和插件都使用这些字段来写入和读取所需的数据。这些字段可在 PLC 的内存中分为两个区块。PLC 使用一个区块请求命令或定义执行参数。插件使用另一个区块写入视觉系统提供的信息,例如,视觉系统的一般信息或执行结果。PLC 可以读取和处理字段中提供的由插件写入的信息,反之亦然。每个字段都有预定义的名称。
一些字段是设置的固定部分,并且将始终提供,例如,包含视觉系统当前状态的字段。我们将这些类型的字段称为静态字段。相反,也存在一些动态字段(如结果值的字段),它们取决于插件的配置,并且只有在相应地设置了插件的各个参数时才会提供。在以下部分中,您可以找到属于协议中固定部分的静态字段和只有在相应地配置插件时才添加的动态字段的概述。
导出用于 PLC 的字段
该组字段可导出到 MERLIC RTE Setup 的“通讯”选项卡中。
- 在左侧选择所需的 MODICON®* 插件实例以显示该插件的配置。
- 如有必要,调整要导出的 .csv 文件的位置和文件名。相应的参数在参数类别 Export Symbols 中提供。
- 单击 MERLIC RTE Setup 底部的“
启动插件”按钮将字段导出到指定的 .csv 文件中。
此 .csv 文件会在插件启动后(即单击启动按钮后)立即自动导出。它包含有关所有需要的字段、相应数据类型和分配的内存地址的信息。该文件可以独立于 PLC 创建。导出不需要连接到 PLC。但是,如果尚未建立连接,则会出现一条错误消息,表明插件无法启动。如果只想导出 .csv 文件,可以忽略此错误。
在 EcoStruxure™ Machine Expert - Basic 中执行 PLC 程序时,导出的文件用作通讯所需的字段和内存区块的参考。
导入包含符号的文件
将插件配置的选定字段导出到 .csv 文件后,可将此文件导入 EcoStruxure™ Machine Expert - Basic,并使用相应的字段来执行 PLC 程序。您可以按照以下步骤导入文此件。
- 转到“Programming”窗口。
- 选择左侧的“Tools”选项卡并单击“Symbol list”。

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

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

我们文档中使用了 "EcoStruxure™ Machine Expert - Basic" 版本 1.2 SP1 Patch 1 build 65760。如果您使用不同版本的程序,则用户界面和参数名称可能与示例图像中所示有所不同。有关 EcoStruxure™ Machine Expert - Basic、其功能以及如何使用它对 Schneider Electric Modicon®* PLC 进行编程和监控的信息,请浏览 Schneider Electric 的网站。
静态字段
这种类型的字段始终可用于通讯。它们中的大多数都由插件写入,目的是提供有关视觉系统或当前执行的信息。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 |
所显示结果的状态:
|
由 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”的两个最低有效位为 但是,如果插件配置为数据类型 INT 定义了 16 个以上的结果,则“GMV_RESULTUSEARRAY_INT_W0”字段中的位数不足以指示每个结果的可用性。在这种情况下,将添加另一个字段“GMV_RESULTUSEARRAY_INT_W1”。然后,此字段可以用作数据类型 INT 的接下来 16 个结果的指示符。 可用的数据类型:
|
|
GMV_RESULT_<TYPE>_<INDEX> |
数据类型 BOOL、INT、DINT 和 REAL 的实际结果值。 每个结果将被写入其自身的字段中。结果字段的符号由前缀“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_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”的前两位设置为 但是,如果插件配置为数据类型 INT 定义了 16 个以上的迭代参数,则“GMV_ITPARAMUSEARRAY_INT_W0”中的位数不足以为每个迭代参数指示是否应将相应的值用于下一次执行。在这种情况下,将添加另一个字段“GMV_ITPARAMUSEARRAY_INT_W1”。然后,此字段可以用作数据类型 INT 的接下来 16 个迭代参数的指示符。 |
|
GMV_ITPARAM_<TYPE>_<INDEX> |
数据类型 BOOL、INT、DINT 和 REAL 的迭代参数值。 相应字段的符号由前缀“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_<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”。 |
|
|
|
OperationalAutomaticMode Initialized Ready SingleExecution ContinuousExecution |
如果该位数设置为 1,则MERLIC处于状态“OperationalAutomaticMode”。这意味着 MERLIC 的状态为“Initialized”、“Ready”、“SingleExecution”或“StartContinuous”。
|
|
|
|
Halted |
如果该位数设置为 1,则MERLIC处于状态“Halted”。 |
|
|
|
Error |
如果该位数设置为 1,则MERLIC处于状态“Error”。 |
|
|
|
OperationalFrontendAccessMode |
如果第 3 位数和第 8 位数已设置,则 MERLIC 处于手动状态。这意味着 MERLIC 只能通过 MERLIC Frontend 进行控制。有关手动模式的更多信息,请参阅 MERLIC 手册中的 Frontend 中的写入权限主题。 |
有关 MERLIC 的可用状态及其转换的更多信息,请参阅 MERLIC 手册中的 MERLIC 状态主题。
* Modicon® is a registered trademark of Schneider Electric USA, Inc.