菜鸟科技网

如何在MCGS设备命令中实现多设备协同控制,如何处理命令冲突与异常,如何优化命令执行效率?

在 MCGS 组态软件中,“设备命令”是一个非常核心和强大的功能,主要用于实现从 MCGS 组态屏向外部硬件设备(如 PLC、仪表、变频器、智能模块等)发送特定的指令,以控制设备的运行或改变其工作状态。

如何在MCGS设备命令中实现多设备协同控制,如何处理命令冲突与异常,如何优化命令执行效率?-图1
(图片来源网络,侵删)

设备命令就是 MCGS 向下位机发出的“指令包”


设备命令的核心概念

理解设备命令需要先了解与之紧密相关的三个部分:

  1. 设备:在 MCGS 设备窗口中添加的硬件驱动程序。“三菱 FX 系列串口”、“西门子 S7-200 PPI”、“西门子 S7-1200/1500 MPI/DP”等,每个设备驱动都封装了与特定硬件通信的协议。
  2. 通道:设备驱动程序解析出来的,可以读写的数据点,PLC 的 M0、D100,或者仪表的测量值、设定值等,通道主要用于数据的读取
  3. 设备命令:当 MCGS 不仅需要读取数据,还需要主动控制设备时,就需要使用设备命令,它是一个完整的、符合设备通信协议的指令字符串。

三者关系: 设备驱动定义了如何与设备通信,通道是驱动中可读写的“数据点”,而设备命令是驱动中定义的“操作指令”,一个设备驱动可以包含多个通道和多个命令。


设备命令的工作原理

设备命令的工作流程通常如下:

如何在MCGS设备命令中实现多设备协同控制,如何处理命令冲突与异常,如何优化命令执行效率?-图2
(图片来源网络,侵删)
  1. 定义命令:在 MCGS 设备窗口中,为已添加的设备添加一个或多个设备命令,在这个命令中,你需要指定:

    • :具体要发送的指令字符串,对于三菱 PLC,可能是 [WR D100 K50] (将常数 50 写入 D100 数据寄存器)。
    • 通道参数:命令中可能需要包含动态变化的参数,这些参数通常来自 MCGS 的内部变量,写入的值不是固定的 50,而是来自 MCGS 的一个变量 !Set_Value
    • 返回信息:设备执行命令后,可能会返回一个状态(如成功/失败),你可以指定一个 MCGS 变量来接收这个返回信息,以便在界面上显示。
  2. 触发命令:在 MCGS 的用户窗口(也就是你的 HMI 界面)上,通过一个“按钮”或其他控件(如触摸键、脚本)来触发这个设备命令的执行。

  3. 执行与通信

    • 当用户点击按钮时,MCGS 系统会根据你在按钮属性中设置好的命令名称,找到对应的设备命令定义。
    • 系统将命令内容中的动态参数(如 !Set_Value)替换为当前的实际值。
    • 将最终生成的完整指令字符串通过串口、网口等通信接口发送给下位机设备。
  4. 处理响应

    如何在MCGS设备命令中实现多设备协同控制,如何处理命令冲突与异常,如何优化命令执行效率?-图3
    (图片来源网络,侵删)
    • 下位机接收到指令并执行。
    • 如果设备返回了响应信息,MCGS 的设备驱动会解析这个响应,并将结果存入你预先指定的返回信息变量中。
    • 你可以在界面上通过这个变量的值(如 0 表示成功,1 表示失败)来给用户反馈。

如何创建和使用设备命令(以 MCGS 通用版为例)

假设我们要实现一个功能:点击 HMI 界面上的一个按钮,将数值 123 写入到西门子 S7-200 PLC 的 VW100 数据区。

步骤 1:添加设备并设置通道

  1. 打开“设备窗口”。
  2. 添加相应的设备驱动,通用串口父设备”和“西门子_S7-200PPI”。
  3. 在“西门子_S7-200PPI”设备下,添加“通道”,你需要添加一个“读写 VW”通道,地址为 100,长度为 2,这个通道就是用于读写 VW100 的,注意,通道主要用于读操作,写操作通常通过命令来实现,但也可以通过通道的“写入”属性来实现。

步骤 2:创建设备命令

  1. 在“设备窗口”中,选中“西门子_S7-200PPI”设备。
  2. 在右侧的“设备属性”窗口中,切换到“设备调试”或“设备成员”标签页(不同版本可能名称略有差异)。
  3. 找到“设备命令”或“命令操作”部分,点击“增加”按钮。
  4. 在弹出的对话框中填写命令信息:
    • 命令名称:给这个命令起一个唯一的名字,Write_VW100
    • :这是关键,西门子 S7-200 PPI 协议写 VW 的指令格式通常是 A% VW100, ?,这里的 是一个占位符,代表要写入的值,所以你应该填写:A% VW100, ?
    • 通道参数:点击“增加”,选择一个通道参数,这里我们不使用通道地址作为参数,而是直接使用一个 MCGS 变量作为要写入的值,所以这里可以不选,或者选择一个虚拟通道,更常见的做法是直接在脚本中使用变量。
    • 返回信息:选择一个 MCGS 内部变量(!Write_Result)来接收执行结果,通常设备驱动会返回 0 表示成功,非 0 表示失败。

步骤 3:在界面上添加按钮并关联命令

  1. 打开“用户窗口”,绘制一个按钮。
  2. 双击按钮,打开“属性设置”。
  3. 切换到“基本属性”选项卡。
  4. 在“操作属性”中,勾选“执行设备命令”。
  5. 在下方的下拉菜单中选择你刚刚创建的命令:Write_VW100
  6. (可选)设置参数:如果你的命令内容中有 占位符,并且你希望这个值来自按钮旁边的输入框,你可以在这里进行关联,将参数关联到一个数值输入框的变量 !Input_Value,这样,点击按钮时,!Input_Value 的值就会被替换到命令的 位置。

步骤 4:测试

运行工程,点击按钮,MCGS 会自动将 A% VW100, 123 (假设输入框的值是 123) 发送给 PLC,你可以通过监控 PLC 的 VW100 区域来验证数据是否被成功写入。


设备命令 vs. 通道写入

在 MCGS 中,向设备写入数据有两种主要方式,它们各有优劣:

特性 设备命令 通道写入
本质 发送一个完整的、自定义的指令包。 通过驱动封装好的标准接口写入。
灵活性 极高,可以发送设备手册中任何合法的指令,如启停电机、复位报警、切换模式等,不局限于数据区。 较低,通常只能写入设备驱动支持的数据区(如 D, M, VW 等)。
复杂度 较高,需要了解设备协议,手动构造指令字符串。 极低,只需选择通道地址和写入值,驱动自动处理协议细节。
适用场景 控制设备的行为(启/停、复位等)。
写入复杂的参数。
协议未在驱动中完全开放的情况。
简单的数据写入。
驱动明确支持该数据区读写的情况。
追求开发效率和标准化的场景。
  • 如果只是想修改 PLC 的一个寄存器值,用通道写入更简单直接。
  • 如果你想让 PLC 执行一个动作(比如启动一个电机程序),或者写入一个设备特有的参数,就必须使用设备命令

高级应用与注意事项

  1. 脚本中调用设备命令: 你可以在 MCGS 的脚本(如循环策略、窗口脚本)中,使用 !SetDevice() 函数来执行设备命令,这比通过按钮触发更灵活,可以实现自动化控制。

    -- 在脚本中执行设备命令
    -- !SetDevice(设备对象名, 命令名, 参数1, 参数2, ...)
    -- 假设设备对象名为"PLC_1",命令名为"Write_VW100",参数为数值变量!NewValue
    !SetDevice("PLC_1", "Write_VW100", !NewValue)
  2. 调试: 在设备窗口的“设备调试”页面,你可以实时看到 MCGS 发送给设备的数据和从设备接收到的数据,这对于排查命令是否正确发送和响应是否正常至关重要。

  3. 错误处理: 始终关注“返回信息”变量,在脚本或界面逻辑中,根据返回信息进行判断,如果写入失败,可以给出提示或执行备用方案。

  4. 协议文档: 成功使用设备命令的关键在于仔细阅读你的硬件设备(PLC、仪表等)的通信协议手册,手册中会明确写出各种控制指令的格式、参数和返回码,没有协议文档,设备命令就成了无源之水。

希望这份详细的解释能帮助你全面理解和使用 MCGS 的设备命令功能!

分享:
扫描分享到社交APP
上一篇
下一篇