跳到主要内容

连接列表与标签列表

🎬 Review your connections · 31초 · 2026.09 기준 화면

在一个画面中查看网关已知的所有 OPC(连接)列表 及其内部的 标签列表 — 启动 / 停止 / 编辑 / 删除 / 写入值 / 立即读取,这是操作的核心画面。

连接列表画面 — 左侧 OPC 列表,右侧标签列表

首页卡片 已连接列表 (N) → 点击,或直接进入 http://<gateway>/ui/connect/list。


1. 画面结构​

┌────────────────────────────────────────────────────────────────┐
│ ⊙ 연결 목록 [←] [↻] [+ 연결 추가] │
├────────────────────────────────────────────────────────────────┤
│ [OPC 목록 테이블 — 14개 컬럼] │
│ PLC | 프로토콜 연결상태 OPC ID ... 수집상태 액션 │
│ ───────────────────────────────────────────────────────── │
│ (행 클릭 → 아래 태그 테이블 채워짐 / 행 하이라이트) │
├────────────────────────────────────────────────────────────────┤
│ 선택된 연결의 TAG 목록을 표시합니다 │
│ [태그 목록 테이블 — 14개 컬럼] │
│ ▣ TAG ID TAG 명 ... 마지막 값 업데이트시간 액션 │
└────────────────────────────────────────────────────────────────┘

当选择 MOTOR_SENSE 协议的 OPC 时,代替标签表格的是 HEALTH INDEX / SIGNAL 卡片容器(请参考单独章节)。


2. 顶部栏 — 按钮​

按钮操作
←(返回图标)返回 /ui/main
↻(同步图标)connect.search() — 重新查询列表(数据表会自动更新 — 用于强制刷新)
+ 添加连接(蓝色按钮)转到 /ui/connect/connect 添加新连接的画面

3. OPC 列表表格(14 列)​

/connect/opc/list 数据表绘制 API 结果。

#列含义 / 显示
1PLC | 协议各协议的徽标图像 — MELSEC=mitsubishi.png / S7=siemens.png / MODBUS=modbus.svg / OPCUA=opcua.png / EIP=eip.png / LS=ls.png / GE=ge.png / PROFINET=profinet.png / FINS=fins.png / LOGIX=rockwell.png / CANOPEN=canopen.png / HTTP=http.png / OP=op.png / MOTOR_SENSE=MotorSense_Logo.svg
2连接状态圆形徽章 — 🟢 已连接 / 🔴 已断开 / ⬜ 未知(从未启动过)
3OPC ID唯一 ID(例如:OPC_LS_TEST) — 排序标准(默认升序)
4OPC 名称用户自定义名称
5描述自由备注
6PLC IPOPC 连接的 PLC IP
7PLC 端口OPC 端口(LS 2004, S7 102, MODBUS 502 等)
8采集周期timecycle(毫秒) — 右对齐,千位逗号分隔
9自动启动如果是 auto_collect=true 则 ✓,否则 -
10异步如果是 async=true 则 ✓,否则 -
11已连接标签数此 OPC 中注册的标签数量 — 右对齐
12采集数量累计读取次数(point_count) — 大数字通过水平滚动查看
13采集状态圆形徽章 — 🟢 正常(scan_status=START,旋转同步图标) / 🟧 异常(NOT COLLECT,警告三角形) / ⬜ 已停止(STOP,停止图标)
14操作▶ 启动 / ⏹ 停止 / 🔧 编辑 / 🗑 删除(4 个图标)

3.1 操作图标 — 详细信息​

图标操作调用
▶ 启动(fa-play)开始采集connect.start(opcId) → POST /connect/start
⏹ 停止(fa-stop)停止采集(保持 TCP 连接)connect.stop(opcId) → POST /connect/stop
🔧 编辑(fa-wrench)根据 OPC 类型转到编辑画面(例如:/ui/connect/ls 等,根据 opc_type 分支)connect.edit(opcId&opcType)
🗑 删除(fa-trash)确认对话框 → 批量删除 OPC 及其子标签connect.del(opcId&opcType)
删除不可恢复

删除 OPC 时,其底下的标签行也会一并消失。时序数据(Cassandra tm_tag_point) 在 TTL 到期前仍然保留,但不会再有新的读取数据进入。

3.2 连接状态 与 采集状态 的区别​

同一个 OPC 的两个状态可能不同:

连接采集含义
🟢 已连接🟢 正常正常运行
🟢 已连接🟧 异常TCP 连接仍存活,但读取响应在一定时间内未到达 — 怀疑 PLC 程序 / 地址拼写 / 权限问题
🟢 已连接⬜ 已停止用户按了 ⏹ 停止
🔴 已断开⬜ 已停止正常的 未启动 状态
🔴 已断开🟧 异常曾经运行过,但 PLC 断开 — 检查 IP/端口/防火墙
⬜ 未知⬜ 已停止仅注册但从未启动过的新 OPC

4. 选择行 → 标签列表​

点击 OPC 行时:

  1. 该行以 selected 类高亮(其他行取消)
  2. 调用 connect.tag_list(opcId) → 获取该 OPC 的标签并显示在下面的 标签列表表格 中
  3. 如果该 OPC 的 opc_type 为 MOTOR_SENSE,则显示 HEALTH INDEX / SIGNAL 卡片容器,而不是标签表格

行选择结果存储在 window.__connect_list_selected_opc_id — 标签内联写入时用作 opc_id 参数。


5. 标签列表表格(14 列)​

显示选定 OPC 内的标签。最后的值 / 时间 / 读取状态在页面内定期更新(writejs.value() — 单独轮询)。

#列含义 / 显示
1(图标)标签图标(fa-tag)
2TAG ID唯一 ID(例如:TAG_LS_TEST_1000)
3TAG 名称用户自定义名称
4描述自由备注
5数据类型Integer / Boolean / Float / Long / String 等
6PLC 地址各协议的 PLC 地址(例如:D1000, ns=2;s=...)
7PLC 数据格式格式选项(X / B / W / DW / Float 等 — 用于按驱动进行精确的读/写分支)
8计算计算公式(fomula) — 如 ${VALUE} * 10 这样的简单算术应用
9采集数量累计读取次数 — 右对齐
10最后的值最近的值 — 绿色背景 + 白色文字。长文本(STRING/数组)的单元格水平滚动
11最后更新时间深灰色背景 + 白色文字,精确到毫秒
12读取状态🟢 SUCCESS(绿色) / 🔴 ERROR(红色)
13读取错误消息仅当状态为 ERROR 时填充 — 红色背景 + 白色文字
14操作✏ 写入 / 🔄 立即读取(2 个图标)

5.1 标签操作 — 详细信息​

✏ 写入(fa-pen)​

一次性向该标签写入值的内联操作。

1. 클릭 → prompt 창: "태그 [<TAG_ID>] 에 쓸 값을 입력하세요"
2. 값 입력 후 OK → confirm: "<OPC_ID> / <TAG_ID> 에 [<VALUE>] 쓰기?"
3. POST /connect/write { tag_id, opc_id, value }
4. 성공 시 toastr: "쓰기 완료: <TAG_ID> = <VALUE>"
5. 서버가 write 직후 같은 connection 으로 즉시 read 한 결과를 함께 반환:
- 동일 ↔ 동일하지 않음 비교 후 추가 안내
"읽기 확인" (info) — 같음 → 정상
"읽기 결과 다름" (warning) — PLC 자체 프로그램이 즉시 덮어쓴 가능성
6. 약 800ms 후 화면의 마지막 값 셀도 자동 갱신

内部根据 PLC 协议进行分支的 ConnectService.tagWriteByTagId()(支持 HTTP / OPC-UA / Modbus / MELSEC / S7 / LS / EIP 全部)。

写入有风险

写入实际设备标签前,请先用 模拟器 OPC 或 测试标签 进行验证。写入权限仅授予与运维团队协商过的标签。

🔄 立即读取(fa-sync-alt)​

绕过采集器缓存,直接从 PLC 现在读取。

GET /api/v1/tag/<TAG_ID>/value?fresh=true
→ 성공: toastr.info "지금 읽기: <TAG_ID> = <VALUE>"
→ 값 없음: toastr.warning "읽음 (값 없음): <TAG_ID>"
→ 실패: toastr.error "읽기 실패: ..."

适用于长采集周期的 PLC(例如 30 秒)的手动更新。频繁使用会增加 PLC 负载。


6. MOTOR_SENSE 专用区域​

选择 opc_type=MOTOR_SENSE OPC 时,将显示以下内容,而不是标签表格。

6.1 状态信息区域​

项目含义
最后更新时间MOTOR_SENSE 资产的最新能源数据时间点
读取状态SUCCESS / ERROR

6.2 HEALTH INDEX 部分​

❤ 图标 + 按资产区分的卡片 — 水平滚动。每张卡片包含资产 ID + 测量指标(level, alarm 等)。卡片颜色:浅蓝色背景 + 深蓝色边框。

6.3 SIGNAL 部分​

📶 图标 + 按资产区分的卡片 — 水平滚动。时序信号指标。卡片颜色:浅灰色。

即使资产很多,两个部分都只允许水平滚动,禁止垂直滚动,使卡片无限向右延伸。


7. 常见陷阱​

症状原因 / 解决方法
单击行但标签表格为空该 OPC 中注册的标签不存在。通过编辑进入添加标签
已连接 但 采集异常检查地址格式 / 数据类型(格式)/ PLC 写入权限
最后的值单元格长时间不更新采集周期(timecycle)较长,或 PLC 值未变化 — 用立即读取强制读取
✏ 写入后出现读取结果不同警告PLC 程序在 1 秒内自发覆盖。可能正常(例如锁存线圈等)
最后的值太长难以阅读该单元格会自动出现水平滚动条 — 在单元格内左右滚动
MOTOR_SENSE 卡片为空资产检索尚未完成(/connect/motor-sense/asset-list 未响应) — 稍等片刻或重启 OPC
启动后立即显示采集状态为未知扫描循环尚未完成第一轮 — 等待 timecycle + α 的时间
删除后重新添加时以未知状态启动正常 — 如果 auto_collect 为开启,则自动转换为已连接 + 正常

8. 了解更多​