用于与 PLC 通讯的字段

MELSEC Communication 插件利用 MELSEC 通讯 (MC) 协议与 PLC 进行通讯。传输的信息由该插件的配置定义。对于每种类型的信息,例如请求的命令或结果值,都会提供一个所谓的“字段”。当插件启动时,该组字段将导出到一个 .csv 文件,它代表 PLC 的一组全局“标签”。导出的 .csv 文件可导入 PLC 编程软件 GX Works,以用作 PLC 程序的基础。

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

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

导出用于 PLC 的字段

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

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

此 .csv 文件会在插件启动后(即单击启动按钮后)立即自动导出。它包含有关所有需要的字段、相应数据类型和分配的内存地址的信息。该文件可以独立于 PLC 创建。导出不需要连接到 PLC。但是,如果尚未建立连接,则会出现一条错误消息,表明插件无法启动。如果只想导出 .csv 文件,可以忽略此错误。

GX Works2 中执行 PLC 程序时,导出的文件用作通讯所需的字段和内存区块的输入。为此,您可以导入该文件,如下一部分中所述。

导入“Global Label”文件

将插件配置的选定字段导出到“Global Label”.csv 文件后,可将此文件导入 GX Works,并使用相应的字段来执行 PLC 程序。

我们文档中使用了 GX Works2 版本 1.612N。如果您使用 GX Works3 或不同版本的 GX Works2,则用户界面和参数名称可能与示例图像中所见有所不同。如需了解 GX Works 的一般信息、其功能以及如何与 GX Works 配合使用以对 MELSEC 系列 PLC 进行编程和监控,请浏览 Mitsubishi Electric 的网站。

GX Works2 中,您可以按照以下步骤导入此文件。

  1. 打开“Project”面板。
  2. 右键单击“Global Label”,然后选择“Read from CSV File...”菜单项。

静态字段

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

由插件写入的静态字段

字段

数据类型

描述

gMV_VersionMajor

WORD

插件的主要版本号。

gMV_VersionMinor

WORD

插件的次要版本号。

gMV_Heartbeat

WORD

用于心跳模式的计数器。当插件运行时,值会不断更新。该值可用于检查连接是否仍处于活动状态,并处理意外的断连情况。

gMV_CurrentState

INT

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

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

gMV_LastResultId

DWORD

最新结果的 ID。

gMV_NumberOfRecipes

DINT

可用配方的数量。

gMV_PreparedRecipeIds

ARRAY [0..31] OF BOOL

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

gMV_RunningJobId

DWORD

当前运行的工作的 ID。

gMV_AcquisitionDoneCount

DWORD

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

gMV_AckCommandCode

INT

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

gMV_ErrorCode

DINT

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

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

gMV_ErrorCause

INT

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

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

gMV_DroppedResultCount

DWORD

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

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

gMV_ResultId

DWORD

当前显示的结果的 ID。

gMV_ResultRecipeId

DINT

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

gMV_ResultJobId

DWORD

产生所显示结果的工作的 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>

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

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

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

可用的数据类型:

  • BOOL
  • WORD
  • DWORD
  • INT
  • DINT
  • REAL
  • LREAL
  • STRING[32]

gMV_Result_<TYPE>_<INDEX>

相应数据类型的实际结果值。每个结果将被写入其自身的字段中。结果字段的标签由前缀“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”的前两位将指示这些 INT 结果是否可用。

由 PLC 写入的动态字段

字段

描述

gMV_ItParamUseArray_<TYPE>

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

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

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

gMV_ItParam_<TYPE>_<INDEX>

相应数据类型的迭代参数的值。迭代参数字段的标签由前缀“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”的前两位将指示是否使用这些值来覆盖配方中定义的相应值。

MERLIC 状态

使用 MELSEC Communication 插件时,MERLIC 的内部状态通过“gMV_CurrentState”字段传输到 PLC。

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

位栏位置

数值

MERLIC 状态

描述

0

1

Preoperational

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

3

3, 4

3, 5

3, 6

3, 7

8

24

40

72

136

OperationalAutomaticMode

Initialized

Ready

SingleExecution

ContinuousExecution

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

  • 如果第 3 位数和第 4 位数已设置,则 MERLIC 处于“Initialized”状态。
  • 如果第 3 位数和第 5 位数已设置,则 MERLIC 处于 “Ready” 状态。
  • 如果第 3 位数和第 6 位数已设置,则 MERLIC 处于 “SingleExecution” 状态。
  • 如果第 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 的可用状态及其转换的更多信息,请参阅 MERLIC 手册中的 MERLIC 状态主题。