跳到主要内容

连接列表 / 标签列表 (/ui/connect/list) — 列 / 操作完全指南

在同一画面中查看网关已知的全部 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
↻ (sync 图标)connect.search() — 重新查询列表(自动刷新由数据表自行处理 — 此按钮用于强制刷新)
+ 添加连接(蓝色按钮)/ui/connect/connect 跳转至新增连接画面

3. OPC 列表表格(14 列)

/connect/opc/list API 结果由 DataTables 绘制。

#含义 / 显示
1PLC | 协议各协议的 logo 图片 — 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)— 排序基准(default ASC)
4OPC 名称用户自定义名称
5说明自由备注
6PLC IPOPC 所连接的 PLC IP
7PLC 端口OPC 端口(LS 2004、S7 102、MODBUS 502 等)
8采集周期timecycle (ms) — 右对齐,千位逗号
9自动启动auto_collect=true 时显示 ✓,否则显示 -
10异步async=true 时显示 ✓,否则显示 -
11已连接标签数该 OPC 下注册的标签数量 — 右对齐
12采集件数累计 read 件数(point_count)— 数值较大时可横向滚动查看
13采集状态圆角徽标 — 🟢 正常(scan_status=START,旋转 sync 图标)/ 🟧 异常(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 到期前仍会保留,但不会再有新的 read 写入。

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

同一 OPC 上两种状态不一致的情形:

连接采集含义
🟢 已连接🟢 正常运行正常
🟢 已连接🟧 异常TCP 连接存活,但一定时间内没有 read 响应 — 怀疑 PLC 程序 / 地址笔误 / 权限问题
🟢 已连接⬜ 停止用户按下 ⏹ 停止的状态
🔴 断开⬜ 停止正常的 未启动 状态
🔴 断开🟧 异常曾经运行过但 PLC 断开 — 请巡检 IP/端口/防火墙
⬜ 未知⬜ 停止仅注册、从未启动过的新 OPC

4. 选中行 → 标签列表

点击 OPC 行时:

  1. 该行以 selected 样式高亮(其他行取消)
  2. 调用 connect.tag_list(opcId) → 取得该 OPC 的标签并绘制到下方 标签列表表格
  3. 若该 OPC 的 opc_typeMOTOR_SENSE,则显示 HEALTH INDEX / SIGNAL 卡片容器而非标签表格

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


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

显示所选 OPC 内的标签。最后值 / 时间 / read 状态会在页面内 周期性 刷新(writejs.value() — 独立轮询)。

#含义 / 显示
1(图标)标签图标(fa-tag)
2TAG ID唯一 ID(例如:TAG_LS_TEST_1000)
3TAG 名称用户自定义名称
4说明自由备注
5数据类型Integer / Boolean / Float / Long / String
6PLC 地址各 PLC 协议的地址(例如:D1000ns=2;s=...)
7PLC 数据格式格式选项(X / B / W / DW / Float 等 — 用于各驱动 read/write 的精细分支)
8计算计算公式(fomula)— 如 ${VALUE} * 10 般应用简单算术
9采集件数累计 read 件数 — 右对齐
10最后值最新值 — 绿色背景 + 白字。较长文本(STRING/数组)单元格可横向滚动
11最后更新时间深灰背景 + 白字,精确到 ms
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 후 화면의 마지막 값 셀도 자동 갱신

内部由 ConnectService.tagWriteByTagId() 按 PLC 协议分支处理(HTTP / OPC-UA / Modbus / MELSEC / S7 / LS / EIP 均支持)。

写入存在风险

在向实际设备标签写入前,请先用 模拟器 OPC测试标签 验证。write 权限仅限于与运维团队达成一致的标签。

🔄 立即读取(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 下没有注册标签。进入 编辑 添加标签
显示 已连接采集异常检查地址格式 / 数据类型(format) / PLC Write 权限
最后值单元格长时间不刷新采集周期(timecycle)过长,或 PLC 的值本身不变 — 用 立即读取 强制 read
✏ 写入后出现 读取结果不一致 警告PLC 程序在 1 秒内自行覆盖。这可能属于正常(如 lockout 线圈等)
最后值过长难以阅读该单元格会自动出现横向滚动条 — 在单元格内左右滚动
MOTOR_SENSE 卡片为空资产检索尚未完成(/connect/motor-sense/asset-list 未响应)— 稍候片刻或重启 OPC
启动后 采集状态 立即显示 未知scan loop 尚未完成第一个周期 — 等待 timecycle + α 时长
删除后重新添加,又以 未知 开始正常 — 若 auto_collect 为 on,会自动切换为 已连接 + 正常

8. 延伸阅读