跳到主要内容

点位检索 (/ui/point) — 时序数据查询

按时间范围查询特定标签的已采集时序数据,并将结果以表格 / CSV 形式下载的界面。适用于操作员快速执行诸如确认昨天 09 时 ~ 11 时之间 PLC 值是否处于正常范围之类的巡检。

点击左侧边栏的数据库图标(fa-database)→ 或直接访问 http://<gateway>/ui/point


1. 界面结构

┌────────────────────────────────────────────────────────────────┐
│ ⊙ 포인트 검색 — 시계열 데이터 조회 · TM_TAG_POINT [←] [↻] │
├────────────────────┬───────────────────────────────────────────┤
│ [검색 조건] │ [포인트 목록 — 최신 순] [CSV 다운로드] │
│ ─ 검색 기간 │ ┌──────────────────────────────────────┐ │
│ ─ OPC ID * │ │ 시각 │ 태그 ID │ 값 │ 타입 │ 품질 │ 에러 │ │
│ ─ 태그 ID * │ └──────────────────────────────────────┘ │
│ [검색] │ … │
└────────────────────┴───────────────────────────────────────────┘

左侧面板宽度比标准的 col-md-2 增加 50px,以防止标签/下拉框被截断。


2. 顶部栏

按钮动作
← (fa-arrow-left)返回 /ui/main
↻ (fa-sync)重新调用 point.search()(保留现有条件,用于刷新)

3. 检索条件(左侧面板)

3.1 检索期间 (s_date_range)

  • 基于 daterangepicker — 格式 YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm
  • 进入界面时自动填充为最近 1 小时moment().subtract(1, 'hours') ~ moment()
  • 点击 → 弹出日历 + 时间选择框

3.2 OPC ID(必填)

  • POST /connect/opc/list 的结果填充下拉框 — 按 opc_id 字母升序排序
  • 标签格式:OPC_ID (OPC_NAME) — 若 name 为空则仅显示 OPC_ID
  • 更改选择后,下方的标签 ID 下拉框会重新加载该 OPC 所属的标签

3.3 标签 ID(必填)

  • 选择 OPC 前:disabled + 提示选项 — 选择 OPC 后加载 —
  • 选择 OPC 后以 POST /connect/tag/list { opc_id } 的结果填充 — 按 tag_id 升序排序
  • 标签格式:TAG_ID (TAG_NAME) — 若 name 为空则仅显示 TAG_ID
  • 加载失败时显示 — 加载失败 — 选项 + 弹出错误提示
未选择标签就点击检索时

将弹出 "请先选择 OPC 与标签。" 模态框(bootbox alert) — 这是防止因无数据而返回空结果、白白浪费时间的保护措施。


4. 结果表格(6 列)

由 DataTables 渲染 GET /point/search 的响应。默认排序为时刻 desc(从最新开始)。

#宽度排序显示 / 含义
1时刻180px默认 desctimestamp.iso 或原始 timestamp — 居中对齐
2标签 ID180px所检索的标签 ID — 居中对齐
3(可变)对齐方式随类型变化 — integer/long/float/double右对齐boolean/string 等为居中(UI-DESIGN 的表格数值对齐规则) — 粗体
4类型100pxformatTypeBadge() 生成的彩色徽标(例:STRING / INT / DOUBLE / BOOL)
5品质70pxOPC quality code(例:192=Good)。为空则显示空白
6错误70pxerror_code 为 0/null 时显示 (灰色),其他情况显示红色代码

每页条数:10 / 20 / 50 / 100 / 1000 — 默认 100。韩语界面(Korean.json)。


5. CSV 下载

右上角CSV 下载按钮 — 调用 point.csv()

  • 本地 export — 将最后一次检索结果(point._lastData)在客户端转换为 CSV → 立即下载。不产生额外的服务器调用
  • 文件名:point_<TAG_ID>_<TIMESTAMP>.csv 形式(例:point_TAG_LS_XBC_0001_20260510_1530.csv
  • 列:时刻 / 标签 ID / 值 / 类型 / 品质 / 错误 — 与 UI 表格一致
无检索结果时点击 CSV

弹出 "请先执行检索。" 提示模态框 — 防止生成空 CSV。


6. 数据来源

界面查询所经过的后端流程:

PLC → Collector → PointProcessor → Cassandra: tm_tag_point (TTL = edge.ttl 일)

/point/search?tag_id&from&to
  • TTL 过期的数据将无法再被查询。app.propertiesedge.ttl 默认为 30 天。
  • tm_tag_point 的 row 按 (tag_id, time_bucket, time) 聚簇 — 短时间范围的检索较快。一次性拉取一个月以上的数据可能导致响应变慢,建议以数十分钟 ~ 数小时为单位检索。

7. 运维技巧

  • 异常值追踪:将报警发生的时刻纳入检索期间并查询该标签 — 可发现突发 spike / 0 值 / quality 变化
  • PLC 通信中断:若同一标签的错误列在一段时间内持续显示红色代码,即为 PLC 响应失败区间 — 可在 /ui/connect/list 中与采集状态交叉确认
  • CSV 后用 Excel:在 Excel/LibreOffice 中打开下载的 CSV,用列绘制趋势图即可快速可视化 — 正式图表请使用实时值查看标签值趋势查看

8. 相关文档