HQControl 现场排障

按安装、访问、服务、PLC、联邦和授权链路逐层排查。先确认 8080 是否可访问,再看数据库、Redis、模块和设备状态。

安装启动端口服务PLC / 联邦授权
基础核查

开始排障前先分层

不要把服务状态、PLC 连接、IO Owner、Tag 质量混在一起。先分清问题属于网页访问、管理端服务、PLC 连接、联邦路由还是授权。

CHECK 1. 先看网页入口

客户机只访问 `http://服务器:8080`。打不开时先在服务器本机打开,再看防火墙、主机名、反向代理和服务日志。

CHECK 2. 再看内部依赖

PostgreSQL 使用 15432,Redis 使用 6379,Integration Script 使用本机 19033;这些端口不对客户机开放。

CHECK 3. 最后看现场链路

PLC 连接、IO Owner、Tag 质量、报警趋势运行状态要分别判断,避免误报警和误切换。

Case 1

安装后服务未启动、重启后没有自启

先确认安装是否完成,再确认系统服务、启动项和 HQControl 控制面板状态。

Windows 检查顺序

先打开 HQControl 控制面板,看 PostgreSQL、Redis、HQControl 是否运行,再打开管理端确认 8080 可访问。

Linux 检查顺序

执行 `sudo hqserverctl status`、`sudo hqserverctl health`、`sudo hqserverctl ports`。health 不通时先看 `sudo hqserverctl logs all`。

覆盖安装后异常

确认安装目录不是只读路径,旧数据目录没有损坏,PostgreSQL 数据目录存在 `PG_VERSION`,配置文件仍指向 15432 和 6379。

Case 2

控制面板状态不准、勾选后未生效或重启后没有拉起

控制面板只做启动、停止、修复和打开入口;不要把它和管理端业务状态混在一起判断。

先区分进程和网页

进程运行不等于网页可访问。控制面板应分别显示进程状态和 `http://主机名:8080` 的网页就绪状态。

自启校验

勾选自启后,重启 Windows 或 Linux 后应先拉起 PostgreSQL/Redis,再拉起 HQControl,最后再打开浏览器入口。

状态不刷新

如果服务已经运行但控制面板仍显示未运行,先刷新进程检测逻辑,不要让用户反复重启主服务。

Case 2

管理端地址打不开或显示未就绪

网页打不开先看 8080,再看 HQControl 主服务,不要先怀疑 PLC。

本机与客户机分开测

服务器本机先打开 `http://127.0.0.1:8080`,再用客户机访问 `http://服务器IP:8080` 或 `http://主机名:8080`。

端口边界

正式交付只开放 8080。15432、6379、19033 是本机内部端口;IO State API 没有独立 19031。

服务运行但网页未就绪

看 HQControl 日志是否连不上 PostgreSQL、Redis、迁移失败、授权锁定或端口占用。不要只看进程存在就判断服务正常。

Case 3

数据库、TimescaleDB 或 Redis 异常

数据库异常会导致登录、迁移、报警趋势和配置页异常;Redis 异常会影响实时推送和热缓存。

PostgreSQL

内置数据库默认 `127.0.0.1:15432`。迁移报 TimescaleDB 不可用时,说明当前 PostgreSQL 没有 TimescaleDB 扩展或未加载离线包。

Redis

内置缓存默认 `127.0.0.1:6379`。Redis 停止后,实时推送和部分状态会降级,但不应该让主服务卡死。

慢查询与容量

大批量 Tag 场景优先检查 runtime_status、Tag 查询、tag_latest、报警趋势查询的索引和耗时。

Case 4

检查连接成功,但列表仍显示离线

把手动诊断结果和运行态结果分开:检查连接成功只说明链路可达,运行态还要看 IO Worker 是否接管并持续采集。

S7 TCP 可达

绝对地址模式先验证 102、Rack、Slot。手动检查成功后,等待 runtime-status 推送刷新运行态,不要只靠按钮结果覆盖长期状态。

符号地址可达

符号地址模式应验证 OPC UA endpoint,例如 `opc.tcp://PLC-IP:4840`,并确认 PLC 开启 OPC UA、DB 允许 OPC UA 访问。

运行态仍离线

检查 IO Worker 是否启动、该设备是否被当前站点选为 IO Owner、设备是否启用,以及采集线程是否因为坏 Tag 被阻塞。

Case 5

两个站点都在采集,或远端站点没有设备信息

联邦是有方向的;同一个 PLC 必须只有一个 IO Owner,远端只展示对方上报或可拉取的运行态。

方向判断

A 联邦 B 表示 A 能知道 B 并拉取 B 的数据,不代表 B 自动知道 A。反向需要单独配置。

Owner 选择

Owner 自动选举要基于站点启用、设备启用、心跳、PLC 可达性和优先级,不能让两个站点同时采集同一个 PLC。

远端无设备

远端页面没有设备信息时,先看远端站点是否推送 runtime-status、设备是否归属该站点、联邦拉取接口是否返回设备快照。

Case 4

PLC 连接、符号地址、IO Owner 或联邦状态异常

先确认当前站点是否能访问 PLC,再确认谁是 IO Owner,最后确认联邦远端是否可达。

S7 绝对地址

绝对地址走 S7 TCP,通常是 102,需要 Host、Port、Rack、Slot 与 PLC 实际配置一致。

S7 符号地址

符号地址走 OPC UA Endpoint,通常是 `opc.tcp://PLC-IP:4840`。不要用 102 或 Rack/Slot 判断符号地址是否可用。

IO Owner

同一 PLC 只允许一个站点采集。Owner 离线后应自动切换;PLC 本身离线时不应误判为联邦或服务异常。

状态分层

系统服务状态、PLC 连接状态、IO Worker 状态、Tag 质量、报警趋势运行状态要分开看。Tag BAD 不等于 IO 服务挂了。

Case 5

在线或离线激活失败

先确认授权服务地址、机器信息、离线请求文件和导入文件是否匹配。

在线激活

确认 `/settings` 中授权服务地址可达,授权码未过期,当前实例和机器指纹被授权服务接受。

离线激活

离线 `.hqreq` 文件必须来自当前机器当前实例;导入的授权文件必须对应该请求。旧请求或换机后的请求会被拒绝。

远程访问授权页

服务器本机可直接打开 `/license`;远程访问时需要先登录最高管理员账号。