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

设备命令就是 MCGS 向下位机发出的“指令包”。
设备命令的核心概念
理解设备命令需要先了解与之紧密相关的三个部分:
- 设备:在 MCGS 设备窗口中添加的硬件驱动程序。“三菱 FX 系列串口”、“西门子 S7-200 PPI”、“西门子 S7-1200/1500 MPI/DP”等,每个设备驱动都封装了与特定硬件通信的协议。
- 通道:设备驱动程序解析出来的,可以读写的数据点,PLC 的 M0、D100,或者仪表的测量值、设定值等,通道主要用于数据的读取。
- 设备命令:当 MCGS 不仅需要读取数据,还需要主动控制设备时,就需要使用设备命令,它是一个完整的、符合设备通信协议的指令字符串。
三者关系: 设备驱动定义了如何与设备通信,通道是驱动中可读写的“数据点”,而设备命令是驱动中定义的“操作指令”,一个设备驱动可以包含多个通道和多个命令。
设备命令的工作原理
设备命令的工作流程通常如下:

-
定义命令:在 MCGS 设备窗口中,为已添加的设备添加一个或多个设备命令,在这个命令中,你需要指定:
- :具体要发送的指令字符串,对于三菱 PLC,可能是
[WR D100 K50](将常数 50 写入 D100 数据寄存器)。 - 通道参数:命令中可能需要包含动态变化的参数,这些参数通常来自 MCGS 的内部变量,写入的值不是固定的 50,而是来自 MCGS 的一个变量
!Set_Value。 - 返回信息:设备执行命令后,可能会返回一个状态(如成功/失败),你可以指定一个 MCGS 变量来接收这个返回信息,以便在界面上显示。
- :具体要发送的指令字符串,对于三菱 PLC,可能是
-
触发命令:在 MCGS 的用户窗口(也就是你的 HMI 界面)上,通过一个“按钮”或其他控件(如触摸键、脚本)来触发这个设备命令的执行。
-
执行与通信:
- 当用户点击按钮时,MCGS 系统会根据你在按钮属性中设置好的命令名称,找到对应的设备命令定义。
- 系统将命令内容中的动态参数(如
!Set_Value)替换为当前的实际值。 - 将最终生成的完整指令字符串通过串口、网口等通信接口发送给下位机设备。
-
处理响应:
(图片来源网络,侵删)- 下位机接收到指令并执行。
- 如果设备返回了响应信息,MCGS 的设备驱动会解析这个响应,并将结果存入你预先指定的返回信息变量中。
- 你可以在界面上通过这个变量的值(如
0表示成功,1表示失败)来给用户反馈。
如何创建和使用设备命令(以 MCGS 通用版为例)
假设我们要实现一个功能:点击 HMI 界面上的一个按钮,将数值 123 写入到西门子 S7-200 PLC 的 VW100 数据区。
步骤 1:添加设备并设置通道
- 打开“设备窗口”。
- 添加相应的设备驱动,通用串口父设备”和“西门子_S7-200PPI”。
- 在“西门子_S7-200PPI”设备下,添加“通道”,你需要添加一个“读写 VW”通道,地址为
100,长度为2,这个通道就是用于读写 VW100 的,注意,通道主要用于读操作,写操作通常通过命令来实现,但也可以通过通道的“写入”属性来实现。
步骤 2:创建设备命令
- 在“设备窗口”中,选中“西门子_S7-200PPI”设备。
- 在右侧的“设备属性”窗口中,切换到“设备调试”或“设备成员”标签页(不同版本可能名称略有差异)。
- 找到“设备命令”或“命令操作”部分,点击“增加”按钮。
- 在弹出的对话框中填写命令信息:
- 命令名称:给这个命令起一个唯一的名字,
Write_VW100。 - :这是关键,西门子 S7-200 PPI 协议写 VW 的指令格式通常是
A% VW100, ?,这里的 是一个占位符,代表要写入的值,所以你应该填写:A% VW100, ? - 通道参数:点击“增加”,选择一个通道参数,这里我们不使用通道地址作为参数,而是直接使用一个 MCGS 变量作为要写入的值,所以这里可以不选,或者选择一个虚拟通道,更常见的做法是直接在脚本中使用变量。
- 返回信息:选择一个 MCGS 内部变量(
!Write_Result)来接收执行结果,通常设备驱动会返回0表示成功,非0表示失败。
- 命令名称:给这个命令起一个唯一的名字,
步骤 3:在界面上添加按钮并关联命令
- 打开“用户窗口”,绘制一个按钮。
- 双击按钮,打开“属性设置”。
- 切换到“基本属性”选项卡。
- 在“操作属性”中,勾选“执行设备命令”。
- 在下方的下拉菜单中选择你刚刚创建的命令:
Write_VW100。 - (可选)设置参数:如果你的命令内容中有 占位符,并且你希望这个值来自按钮旁边的输入框,你可以在这里进行关联,将参数关联到一个数值输入框的变量
!Input_Value,这样,点击按钮时,!Input_Value的值就会被替换到命令的 位置。
步骤 4:测试
运行工程,点击按钮,MCGS 会自动将 A% VW100, 123 (假设输入框的值是 123) 发送给 PLC,你可以通过监控 PLC 的 VW100 区域来验证数据是否被成功写入。
设备命令 vs. 通道写入
在 MCGS 中,向设备写入数据有两种主要方式,它们各有优劣:
| 特性 | 设备命令 | 通道写入 |
|---|---|---|
| 本质 | 发送一个完整的、自定义的指令包。 | 通过驱动封装好的标准接口写入。 |
| 灵活性 | 极高,可以发送设备手册中任何合法的指令,如启停电机、复位报警、切换模式等,不局限于数据区。 | 较低,通常只能写入设备驱动支持的数据区(如 D, M, VW 等)。 |
| 复杂度 | 较高,需要了解设备协议,手动构造指令字符串。 | 极低,只需选择通道地址和写入值,驱动自动处理协议细节。 |
| 适用场景 | 控制设备的行为(启/停、复位等)。 写入复杂的参数。 协议未在驱动中完全开放的情况。 |
简单的数据写入。 驱动明确支持该数据区读写的情况。 追求开发效率和标准化的场景。 |
- 如果只是想修改 PLC 的一个寄存器值,用通道写入更简单直接。
- 如果你想让 PLC 执行一个动作(比如启动一个电机程序),或者写入一个设备特有的参数,就必须使用设备命令。
高级应用与注意事项
-
脚本中调用设备命令: 你可以在 MCGS 的脚本(如循环策略、窗口脚本)中,使用
!SetDevice()函数来执行设备命令,这比通过按钮触发更灵活,可以实现自动化控制。-- 在脚本中执行设备命令 -- !SetDevice(设备对象名, 命令名, 参数1, 参数2, ...) -- 假设设备对象名为"PLC_1",命令名为"Write_VW100",参数为数值变量!NewValue !SetDevice("PLC_1", "Write_VW100", !NewValue) -
调试: 在设备窗口的“设备调试”页面,你可以实时看到 MCGS 发送给设备的数据和从设备接收到的数据,这对于排查命令是否正确发送和响应是否正常至关重要。
-
错误处理: 始终关注“返回信息”变量,在脚本或界面逻辑中,根据返回信息进行判断,如果写入失败,可以给出提示或执行备用方案。
-
协议文档: 成功使用设备命令的关键在于仔细阅读你的硬件设备(PLC、仪表等)的通信协议手册,手册中会明确写出各种控制指令的格式、参数和返回码,没有协议文档,设备命令就成了无源之水。
希望这份详细的解释能帮助你全面理解和使用 MCGS 的设备命令功能!
