NScada
文档中心 › 开发实践

Node.js / NestJS 搭建 PLC 数据采集网关

分类:开发实践 · 2026-09-07 · nscada 技术团队

如果你更想自己造轮子,本文给一套可复用的分层思路。nscada 本身即按此结构实现,公开仓库里可参考协议驱动与队列实现。

一、模块怎么切

drivers/    —— 协议驱动统一接口:connect/read/write/disconnect
scheduler/  —— 周期/cron 任务,失败退避
pipeline/   —— 缩放、质量、批量落库
storage/    —— SQLite(分表 + WAL)
forwarding/ —— Outbox 队列 + HTTP/MQTT 发送器
web/        —— 免登录配置界面

核心原则:驱动可插拔、数据先落库、转发走队列。协议再多也只是多实现一个 read(tags)

二、最小代码思路(伪码)

// 调度到点 →
const values = await driver.read(tags);       // 读回点位
saveBatch(samples);                            // ① 写 SQLite(事务批量)
outbox.enqueue(mq(deviceId, values));          // ② 写待发队列
// 发送器循环 →
const rows = outbox.due();
for (const r of rows) await publish(r);         // MQTT/HTTP
// 失败 → attempts+1, next_retry = now + 2^n·base

三、Node.js 做采集的取舍

四、给你的建议

先做 Modbus + 一个任务循环跑通闭环,再补队列与死信,最后加界面。想少走弯路可直接用 nscada:在线 Demo、源码仓库与文档均可复用,欢迎在社区/开源仓库交流。

想直接体验?打开 在线 Demo下载软件
扫码加客服获取完整《部署与联调手册》
客服
扫码联系客服

扫码咨询