跳到主要内容

网关监控

一、网关监控概述

网关监控是 ThingsGateway 系统的核心管理界面,提供了通道、设备、变量的配置管理功能,以及实时状态监控和日志查看功能。通过网关监控页面,用户可以完成系统的所有配置和监控工作。

1.1 监控功能

  • 配置管理:添加、修改、删除、导出、导入通道、设备和变量配置
  • 状态监控:查看每个设备的运行情况、连接状态、交互日志等监控信息
  • 实时数据:查看变量的实时值和状态变化
  • 日志查看:查看通道、设备和变量的运行日志
  • 批量操作:支持批量编辑、导出、导入等操作,提高配置效率

1.2 界面布局

网关监控页面采用树形结构展示通道、设备和变量的层次关系,右侧显示详细信息或日志内容。

主要区域

  • 左侧树形结构:显示通道、设备和变量的层次关系
  • 右侧内容区域:显示配置表单、变量列表或日志内容
  • 顶部工具栏:提供常用的操作按钮,如添加、删除、导出、导入等

二、配置管理

2.1 配置页面概览

点击显示类型切换 变量页面日志页面

右键点击树节点,弹出操作菜单,提供以下操作:

  • 添加:添加新的通道、设备或变量
  • 修改:编辑选中的通道、设备或变量
  • 删除:删除选中的通道、设备或变量
  • 复制:复制选中的配置项
  • 导出:导出选中的配置项或整个配置
  • 导入:导入之前导出的配置

2.2 通道配置

建立通道需绑定唯一的插件,通道是设备与外部系统通信的基础。

添加通道

通道配置

通道配置项

属性说明默认值
名称通道名称(全局唯一)-
插件名称选择对应的交互插件-
启用是否启用通道true
启用调试日志是否启用调试日志false
日志等级调试日志等级Information
通道类型选择 TcpClient/TcpService/SerialPortClient/UdpSession/OtherTcpClient
远程地址对于TcpClient/UdpSession作为客户端有效,填入服务端的Url信息,比如192.168.0.1:502-
本地地址对于TcpClient/TcpService/UdpSession有效,作为本机的绑定地址,可选择填入,为空时是随机绑定端口-
COM口对于SerialPortClient有效,串口名称-
波特率对于SerialPortClient有效,串口波特率9600
数据位对于SerialPortClient有效,串口数据位8
校验位对于SerialPortClient有效,串口校验位None
停止位对于SerialPortClient有效,串口停止位One
启用Dtr对于SerialPortClient有效,串口DtrEnablefalse
启用Rts对于SerialPortClient有效,串口RtsEnablefalse
接收缓存超时流式数据拼包的最大间隔时间(毫秒)100
连接超时Tcp连接超时(毫秒)5000
最大并发数并发数量,大部分插件都支持1,默认值为11
最大连接数对于TcpService有效,最大连接数10
客户端连接滑动过期时间对于TcpService有效,客户端连接滑动过期时间(秒)60
心跳内容对于TcpService,检测到心跳内容时,会自动返回相同内容到客户端。对于TcpClient,相隔心跳时间后,会自动发送心跳内容到服务端-
心跳时间对于TcpClient有效,相隔心跳时间(秒)后,会自动发送心跳内容到服务端60
默认Dtu注册包对于TcpClient有效,初始连接时,发送一次注册包-

通道类型说明

通道类型说明适用场景
TcpClientTCP客户端,主动连接到服务器连接Modbus TCP服务器等
TcpServiceTCP服务器,被动接受客户端连接作为Modbus TCP服务器等
SerialPortClient串口客户端连接串口设备,如PLC、传感器等
UdpSessionUDP会话UDP通信场景
Other其他类型非Foundation驱动的其他方式,比如opc,kafka,mqtt等等

其他通道操作功能

除了基本的添加/修改/删除操作外,网关监控页面还包含以下通道配置操作:

  • 批量编辑通道:批量修改通道的属性
  • 导出/导入:导出通道配置为JSON文件,或从JSON文件导入通道配置
  • 复制:复制现有通道,快速创建相似的通道

2.3 设备配置

设备是通道下的逻辑单元,用于组织和管理变量。

设备配置

设备配置项

属性说明默认值
名称设备名称(全局唯一)-
描述当前设备描述-
设备使能启动/停用采集设备true
启用调试日志是否启用调试日志false
日志等级调试日志等级Information
通道选择对应的通道-
默认执行间隔执行间隔,对于采集设备,这个属性是默认的采集间隔,对于业务设备,这个属性是执行业务的间隔时间(毫秒)1000
启用冗余启动/停用设备冗余false
冗余设备备用设备选择-
冗余操作模式Offline/Script,默认为Offline:设备离线后切换冗余,Script模式为检测脚本返回值Offline
冗余检测脚本返回true时,切换设备,传入参数raw为DeviceRuntime类型-
备用字段存储自定义信息-

设备冗余配置

设备冗余可以提高系统的可靠性,当主设备离线时,自动切换到备用设备。

冗余模式

  • Offline模式:设备离线后自动切换到备用设备
  • Script模式:根据检测脚本的返回值决定是否切换设备

冗余检测脚本示例

// 当设备通讯失败并且 某个变量等于true 时,切换到备用设备

var dev=(DeviceRuntime)raw;
if (dev.DeviceStatus == DeviceStatus.Offline&& GlobalData.GetVariable("dev1","var1").Value.ToBoolean()==true )
{
return true;
}
return false;

其他设备操作功能

除了基本的添加/修改/删除操作外,网关监控页面还包含以下设备配置操作:

  • 批量编辑设备:批量修改设备的属性
  • 导出/导入:导出设备配置为JSON文件,或从JSON文件导入设备配置
  • 复制:复制现有设备,快速创建相似的设备

2.4 变量配置

变量是设备的基本数据单元,用于采集或发送数据。

变量基础属性配置

属性名称属性描述备注
名称当前变量名称,当前设备唯一(变量)-
描述当前变量描述-
分组名称一些插件的分组依据-
单位变量值单位-
采集组采集组唯一的作用就是额外设置报文分包,例如当采集400001和400060时,不想改动最大打包数,又想单独采集400001和400060,那可以把这两个变量的采集组设置成不一样的值默认空
业务组上传分组值,插件启用分组上传时的筛选值,具体可查看插件说明默认空
读写权限读写/只写/只读读写
变量使能启用/停用变量true
远程写入对于变量的写入使能配置false
初始值初始值-
保存初始值当运行系统退出时会将退出时刻的值保存到变量定义的初始值中,作为下次运行时的初始值false
采集设备当前采集设备选择的设备,通过级联选择器选择对应设备名称设置-
数据类型对应的数据类型注意除了特殊驱动,一般不应该选择object
执行间隔读取时间间隔/执行特殊方法读取的间隔(毫秒)-
特殊方法某些插件特有的方法对于不同的插件,特殊方法配置不相同,查看对应的插件说明
变量地址PLC寄存器等对于不同插件的设备,变量地址配置不相同,查看对应的插件说明,点击右侧按钮也可以弹出可视化编辑框(如果插件支持),鼠标悬停也会提示寄存器格式说明
数组长度数组长度,默认11
读取表达式动态解析的表达式,原始值的代码为raw示例:raw.ToInt()*10+3 结果:原始值raw为8,输出实时值83
写入表达式动态解析的表达式,在写入值时转化,原始值的代码为raw示例:raw.ToInt()/10 结果:写入值为230时,会下发23到PLC
备用字段存储自定义信息-
表达式说明

raw是object类型,需要在脚本内自行转换

如果是已知类型,可以强转,比如 ((int)raw)*10

也可以直接转换,自带扩展方法如下

ToInt()
ToBoolean()
ToDouble()
ToDecimal()
ToLong()

读取表达式示例

示例1:简单转换

// 将整数转换为小数
raw.ToDecimal() / 10

示例2:单位转换

// 将温度从华氏度转换为摄氏度
(raw.ToDouble() - 32) * 5 / 9

示例3:条件处理

// 根据原始值返回不同的状态
if (raw.ToInt() == 0)
{
return "关闭";
}
else if (raw.ToInt() == 1)
{
return "开启";
}
else
{
return "未知";
}

写入表达式示例

示例1:简单转换

// 将小数转换为整数
raw.ToInt() / 10

示例2:范围限制

// 限制写入值在0-100之间
var value = raw.ToInt();
if (value < 0) return 0;
if (value > 100) return 100;
return value;

报警属性配置

说明

报警属性中定义变量产生报警的规则所需的配置

属性名称属性描述备注
报警使能启用对应报警功能-
报警限值超限时产生报警,布尔量为固定-
报警文本对应显示的报警文本-
报警约束动态解析的表达式,原始值的代码为raw,计算值为true或者约束为空时才能产生报警,默认为空-
例子

数值高高报警

变量值大于报警限值,并且报警约束为true或者报警约束不存在时,产生报警

比如设置高高限值为1,其他默认,当变量值大于1时,产生报警

报警约束示例

示例1:基于单个变量的约束

// 当温度变量大于25度时,湿度报警才生效
GlobalData.GetVariable("环境监控", "温度").Value.ToDecimal() > 25

示例2:基于多个变量的约束

// 当testInt2>10且testInt3<5时,报警生效
GlobalData.GetVariable("设备名称", "testInt2").Value.ToInt() > 10 &&
GlobalData.GetVariable("设备名称", "testInt3").Value.ToInt() < 5

业务属性配置

选择业务设备,点击添加/刷新按钮,下方会显示出该业务设备对应的配置项

说明

上传属性中定义变量关联的上传设备所需的配置

对于不同的插件,插件属性项也不相同,查看对应插件章节中的详细说明。

其他变量操作功能

除了基本的添加/修改/删除操作外,网关监控页面还包含以下变量配置操作:

  • 批量编辑变量:批量修改变量的属性
  • 导出/导入:导出变量配置为JSON文件,或从JSON文件导入变量配置
  • 清空:清空设备下的所有变量
  • 一键添加测试变量:快速添加测试变量,用于调试和测试

2.5 内存变量配置

内存变量是一种特殊类型的变量,存储在系统内存中,不需要与外部设备通信,可以用于存储计算结果、中间值或系统状态等信息。

2.5.1 内存变量概述

内存变量与普通变量基本一致,但具有以下特点:

  • 无需外部通信:内存变量存储在系统内存中,不需要配置通信参数
  • 计算能力:支持复杂的表达式计算,可以引用其他变量的值
  • 触发方式:支持多种触发计算的方式

2.5.2 内存变量配置

内存变量的配置与普通变量类似,但不需要配置通信相关的参数(如变量地址、特殊方法等)。

属性名称属性描述备注
名称当前变量名称,当前设备唯一(变量)-
描述当前变量描述-
分组名称一些插件的分组依据-
单位变量值单位-
业务组上传分组值,插件启用分组上传时的筛选值默认空
读写权限读写/只写/只读读写
变量使能启用/停用变量true
远程写入对于变量的写入使能配置false
初始值初始值-
保存初始值当运行系统退出时会将退出时刻的值保存到变量定义的初始值中,作为下次运行时的初始值false
执行间隔读取时间间隔/执行特殊方法读取的间隔(毫秒)-
触发方式Tag()方法内的变量变化时,会触发变化-
读取表达式动态解析的表达式,原始值的代码为raw支持Tag("设备","变量")方式获取其他变量值
写入表达式动态解析的表达式,在写入值时转化,原始值的代码为raw-
备用字段存储自定义信息-

2.5.3 内存变量表达式支持

内存变量的读取表达式支持使用 Tag("设备","变量") 方式获取其他变量的值,这是内存变量的一个重要特性。

Tag函数使用示例

// 获取单个变量值
Tag("设备1", "变量1")

// 获取变量值并进行计算
Tag("设备1", "变量1").ToDouble() + Tag("设备2", "变量2").ToDouble()

// 基于条件计算
if (Tag("设备1", "变量1").ToDouble() > 100)
{
return "高值";
}
else
{
return "正常值";
}

表达式示例

  1. 简单计算

    // 计算两个变量的和
    Tag("温度传感器", "温度值").ToDouble() + Tag("湿度传感器", "湿度值").ToDouble()
  2. 复杂逻辑

    // 基于多个变量的状态计算系统状态
    if (Tag("设备1", "运行状态").ToBoolean() && Tag("设备2", "运行状态").ToBoolean())
    {
    return "系统正常运行";
    }
    else if (!Tag("设备1", "运行状态").ToBoolean() && !Tag("设备2", "运行状态").ToBoolean())
    {
    return "系统停止";
    }
    else
    {
    return "系统部分运行";
    }

2.5.4 内存变量触发方式

内存变量支持三种触发计算的方式:

  1. 定时触发:按照设置的执行间隔定期计算变量值
  2. 引用变量变化触发:当内存变量表达式中引用的任何变量值发生变化时,自动重新计算
  3. 定时或者引用变量变化触发:同时启用定时触发和引用变量变化触发,两种方式都可以触发计算

触发方式配置

  • 在内存变量的配置界面中,选择对应的触发方式
  • 根据实际需求选择合适的触发方式,以平衡实时性和系统性能

触发方式选择建议

  • 定时触发:适用于需要定期计算的场景,如统计数据、平均值计算等
  • 引用变量变化触发:适用于需要实时响应变量变化的场景,如报警逻辑、状态判断等
  • 定时或者引用变量变化触发:适用于既需要定期计算又需要实时响应的场景

2.5.5 内存变量应用场景

内存变量适用于以下场景:

  1. 数据计算:存储计算结果,如平均值、总和、统计数据等
  2. 状态管理:存储系统状态、运行模式等信息
  3. 逻辑判断:基于多个变量的值进行逻辑判断,输出状态结果
  4. 中间值存储:存储复杂计算过程中的中间值
  5. 报警逻辑:实现复杂的报警逻辑,结合多个变量的状态

应用示例

  • 系统状态监控:基于多个设备的运行状态,计算整个系统的运行状态
  • 能源消耗统计:统计多个设备的能源消耗,计算总能耗和平均能耗
  • 生产效率分析:基于生产数据,计算生产效率和设备利用率
  • 复杂报警逻辑:结合温度、压力、流量等多个变量,实现复杂的报警逻辑

三、状态监控

3.1 状态页面概览

点击显示类型切换 变量页面日志页面

左键点击树节点,切换显示内容

当显示类型为 变量页面 时,左键点击树节点,可显示该节点下的全部变量

当显示类型为 日志页面 时,左键点击树节点,可显示通道/设备日志

3.2 通道日志

通道日志记录通道的通信状态和事件信息,包括连接建立、断开、数据传输等。

日志内容

  • 通道连接和断开事件
  • 数据发送和接收记录
  • 通信错误和异常信息
  • 心跳检测记录

3.3 设备日志

设备日志记录设备的运行状态和采集过程,包括采集成功、失败、变量值变化等。

日志内容

  • 设备启动和停止事件
  • 数据采集成功和失败记录
  • 变量值变化记录
  • 设备状态变化记录

3.4 变量页面

变量页面显示变量的实时值、状态、采集时间等信息,是监控数据的重要界面。

显示信息

  • 变量名称和描述
  • 变量实时值
  • 变量数据类型和单位
  • 变量采集时间
  • 变量状态(正常、离线、错误等)
  • 变量报警状态

五、常见问题与解决方案

5.1 通道连接失败

问题:通道无法连接到目标设备

解决方案

  • 检查网络连接是否正常
  • 验证远程地址和端口是否正确
  • 检查目标设备是否正常运行
  • 查看通道日志,了解具体错误信息

5.2 设备采集失败

问题:设备无法正常采集数据

解决方案

  • 检查通道连接是否正常
  • 验证设备配置是否正确
  • 检查变量配置是否正确
  • 查看设备日志,了解采集过程中的错误信息

5.3 变量值异常

问题:变量值不正确或不更新

解决方案

  • 检查变量地址是否正确
  • 验证读取表达式是否正确
  • 检查数据类型是否匹配
  • 查看设备日志,了解采集过程

六、总结

网关监控是ThingsGateway系统的核心管理界面,提供了完整的配置管理和状态监控功能。通过合理使用网关监控,可以:

  • 高效配置:快速配置通道、设备和变量,提高配置效率
  • 实时监控:实时监控设备和变量的运行状态,及时发现异常
  • 故障排查:通过日志和状态信息,快速定位和解决问题
  • 性能优化:分析监控数据,优化系统性能

作为系统管理员,应该:

  • 熟悉网关监控的各项功能和操作
  • 遵循配置管理和监控的最佳实践
  • 定期检查系统状态,及时发现和解决问题
  • 建立完善的故障排查流程,提高问题解决效率

通过有效的网关监控管理,可以使ThingsGateway系统更加稳定、可靠和高效,为工业物联网应用提供更好的支持。