三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

三步搭建免费工业监控平台:Scada-LTS开源SCADA系统部署实战与避坑指南

三步搭建免费工业监控平台:Scada-LTS开源SCADA系统部署实战与避坑指南

三步搭建免费工业监控平台:Scada-LTS开源SCADA系统部署实战与避坑指南

【免费下载链接】Scada-LTSScada-LTS is an Open Source, web-based, multi-platform solution for building your own SCADA (Supervisory Control and Data Acquisition) system.项目地址: https://gitcode.com/gh_mirrors/sc/Scada-LTS

如果你正在为工厂设备、实验室仪器或智能楼宇寻找一套真正免费的工业监控方案,Scada-LTS 值得认真了解。它是一个开源的、基于 Web 的跨平台 SCADA 系统,无需昂贵的商业授权,就能完成设备数据采集、实时监控、报警通知和历史分析。无论是自动化工程师、系统集成商,还是刚接触工业物联网的开发者,都能用它在几天内搭建起可用的监控平台。这篇文章将按照"选型评估 → 环境准备 → 快速上手 → 深度定制 → 上线维护"的完整旅程,带你从零走通全流程。

第一章 为什么你需要一套开源SCADA系统,而不是从零写代码

先问自己一个问题:如果要在车间里监控 30 台设备的温度、电压和运行状态,你会怎么做?

常见的做法是买商业 SCADA 软件——稳定但价格不菲,且扩展功能往往要单独付费;另一种是自己写采集程序——数据采集、存储、图表、报警、权限管理全部从零实现,工作量惊人,还容易在稳定性上翻车。开源SCADA系统的价值恰恰在于:把工业监控中 80% 的通用能力提前做好,你只需要专注于自己的业务场景。

Scada-LTS 正是这类方案的典型代表。它基于 Java 技术栈,采用 Web 架构,意味着你不需要在每台电脑上装客户端,打开浏览器就能监控;它的跨平台特性让你可以自由选择 Linux 或 Windows 服务器;更关键的是,它内置了丰富的工业协议支持——Modbus TCP/RTU、SNMP、SQL、HTTP 轮询、虚拟数据源等,几乎覆盖了中小型项目的常见需求。

能力维度商业 SCADA从零自研Scada-LTS
采购成本高(按点数收费)人力成本高免费
协议支持全但常需另购驱动需逐个实现内置十余种
可视化界面需学习专用工具需自研Web 拖拽配置
社区与文档封闭开源可查可改

如果你正在评估选型,可以先去 webapp-resources/env.properties 看一眼它的配置组织方式,再决定是否继续往下走——这份文件是系统所有核心参数的入口。

第二章 开工前的三件套:把环境一次备齐

部署前,建议先花十分钟把"装备"准备好,后面会省去大量排错时间。

第一件:Docker 与 Docker Compose。这是最省事的部署方式,仓库根目录的 docker-compose.yml 已经编排好了三个服务:MySQL 数据库、Scada-LTS 应用和 HiveMQ(MQTT 消息服务器)。执行docker --version确认环境就绪即可。

第二件:一个可用的数据库。项目默认使用 MySQL,同时支持 PostgreSQL 和内置的 Derby 嵌入式数据库。快速体验时用 Derby 甚至可以跳过数据库安装;正式生产建议用 MySQL 或 PostgreSQL,数据更安全。注意docker-compose.yml中默认创建了scadalts数据库,账号密码均为root,首次体验无需修改。

第三件:理解配置文件的位置。系统启动后会读取webapp-resources/下的资源文件,其中 env.properties 控制数据库连接、API 鉴权、缓存策略;数据库建表脚本放在 WebContent/WEB-INF/db/ 目录,包含 MySQL、PostgreSQL、Oracle、Derby 等不同版本,后续若手动建库可以参考。

第三章 十分钟跑起来:从克隆到看到第一个监控界面

环境备齐后,上手速度会超出你的预期。整个启动过程大约只需 5 到 10 分钟,分三步走。

第一步:获取代码并启动服务。打开终端,执行:

git clone https://gitcode.com/gh_mirrors/sc/Scada-LTS cd Scada-LTS docker-compose up -d

首次启动会拉取镜像,耐心等一两分钟。docker-compose up -d会同时拉起数据库和应用,-d参数让它们在后台运行。

第二步:初始化数据库。应用容器启动后,需要执行一次初始化命令来创建系统表和数据:

docker-compose exec scadalts java -jar /opt/scadalts/ScadaBR.war -initdb

💡 小贴士:如果你用的是docker-compose-dev.yml(开发模式),初始化命令和端口略有差异,启动前先打开该文件确认挂载目录和端口映射,避免和本机 8080 端口冲突。

第三步:登录并验证。浏览器访问http://localhost:8080/ScadaBR,用默认账号admin/admin登录。登录后进入"数据源"页面,你会看到一个空白的列表——不用慌,这说明系统已正常运行,接下来就可以创建你的第一个数据源了。

⚠️ 注意:默认账号密码仅用于本地体验,上线前务必修改。修改入口在"系统设置"的"用户管理"中,也可以在 env.properties 中配置 API 层的账号密码。

第四章 核心能力拆解:数据源、数据点与可视化三位一体

跑起来之后,你需要理解 Scada-LTS 的三个核心概念,它们构成了整个系统的骨架。

数据源(Data Source)代表一个"设备或协议通道"。前端代码位于 scadalts-ui/src/views/DataObjects/DataSources/,后端驱动类则分布在 src/com/serotonin/mango/vo/dataSource/ 下,你能看到 modbus、snmp、http、sql、virtual、meta、jmx、mbus 等十余种类型的目录。创建数据源时需要指定协议类型、连接参数(如 IP、端口、轮询周期)。

数据点(Data Point)是挂在数据源下的具体监控参数,比如"1号电机的温度""车间电压"。每个数据点可以设置数据类型(数值、多态、二进制)、采集频率、报警阈值和历史存储策略。一个数据源可以挂多个数据点,类似"设备—寄存器"的映射关系。

可视化(Watch List 与图表)是数据点的"展示层"。你可以把多个数据点拖进同一张看板同时观察,系统支持实时折线图、阶梯图、多图对比等形态:

此外,GraphicalViews 提供了画布式的图形化视图,适合摆放设备示意图、指示灯、仪表盘;Alarms 和 Events 则负责报警与事件的集中管理。这三层结构一旦建立,后续扩展新设备只需要"加数据源、加点、加视图",思路非常统一。

第五章 实战案例:给一座小型车间搭一套温控与电力监控

理论知识讲完了,我们用一座真实的小型车间来做一次完整演练。假设车间有 4 台设备,需要监控每台的运行温度工作电流,并在温度越限时通知值班人员。

第一步:创建数据源。进入"数据源"页面,点击新建。如果现场没有真实的 Modbus 设备,可以先选Virtual Data Source(虚拟数据源)——它能模拟数据变化,非常适合练习全流程,之后再无缝切换到 Modbus TCP 真实设备。以 Modbus 为例,你需要填写设备 IP 和端口(默认 502),轮询周期建议先设为 1000ms 测试。

💡 小贴士:虚拟数据源是新手练手的神器,先跑通链路再替换真实协议,可以大幅降低调试难度。

第二步:创建数据点。在数据源下依次创建 8 个数据点:4 个温度点(数值类型,单位 ℃)和 4 个电流点(数值类型,单位 A)。如果通过 Modbus 读取,需要填写对应的寄存器地址与数据类型。创建完成后在列表中检查状态是否为"启用"。

第三步:配置历史与报警。对每个温度点开启历史记录,存储周期默认即可;然后设置报警规则——例如"温度高于 80℃ 触发紧急报警"。报警触发后,系统会自动产生事件,并按照 Alarms 页面中的级别显示。

第四步:搭建监控界面。在图形化视图中导入或绘制一张车间布局图(可以参考仓库里的 Loft.gif 这类平面示意图),把温度、电流数据点绑定到对应的仪表或指示组件上。这样值班人员一眼就能看出哪台设备异常,而不是面对密密麻麻的数字。

第五步:配置通知。在"事件处理器"中为紧急报警绑定邮件通知,填写 env.properties 中配置好的 SMTP 参数。保存后可以手动触发一次报警,验证邮件是否能收到——这一步在真实上线前务必演练一遍

第六章 进阶技巧:性能调优、开放接口与自定义驱动

系统稳定运行后,你可以从三个方向把它的能力再往上推一层。

方向一:用配置文件做性能调优。在 env.properties 中,有几个参数值得关注:abilit.cacheEnable控制缓存开关;abilit.CRONE_UPDATE_DATA_SOURCES_POINTS控制数据源与数据点的刷新频率(默认每分钟);js.optimizationlevel影响脚本执行优化级别。当监控点数增长时,适当降低非关键点的轮询频率、合理设置缓存,往往比盲目加内存更有效。

方向二:通过 REST API 与外部系统集成。项目提供了完整的 OpenAPI 3.0 规范文档 doc/RESTAPI/ScadaLTS_API_OAS3.yaml,doc/RESTAPI/README.md 说明了导入方式。你可以用它获取实时数据、历史数据、报警信息,甚至把数据接到自己的大屏或移动端。默认 API 鉴权可在 env.properties 的api.authenticationapi.usernameapi.password三项中配置。

方向三:开发自定义驱动。如果设备使用特殊私有协议,可以在 src/com/serotonin/mango/vo/dataSource/ 下参照现有驱动的结构新建一个数据源类型,核心是继承DataSourceVO并实现点定位器PointLocatorVO

public class CustomDataSourceVO extends DataSourceVO<CustomDataSourceVO> { @Override protected void initialize() { // 初始化设备连接与轮询任务 } // 实现轮询采集,把值写入对应数据点 }

开发完成后按现有驱动的方式注册进系统,就能像内置协议一样被前端页面调用。这类代码量不大,但需要你对采集流程有清晰认识,建议从虚拟数据源驱动源码开始读起。

第七章 新手最容易踩的六个坑

最后分享几个真实项目里高频出现的问题,帮你提前绕开。

数据库连接失败。先确认数据库服务是否启动、端口是否被占用,再核对 env.properties 中的db.typedb.urldb.usernamedb.password。Docker 部署时注意容器间要用服务名连接,而不是localhost

数据点没有数据。常见原因是数据源未启用,或轮询周期设置异常。去数据源列表确认状态图标,再看 DataObjects 页面中数据点是否报错。

数据采集延迟。排查顺序:网络质量 → 轮询频率是否过高 → 服务器 CPU/内存是否吃紧。非关键参数把轮询周期从 500ms 放宽到 5s,延迟问题往往立即缓解。

报警不触发或不通知。按四步排查:阈值设置是否合理、数据点是否开启报警检测、事件处理器是否绑定正确、邮件服务器参数是否可用。务必用"手动触发一次报警"来验证整条链路。

界面加载缓慢。优先清空浏览器缓存,再检查单个视图绑定的数据点数量是否过多。图表数据量大时,可以把历史查询范围缩小,或减少同屏图表数量。

默认端口被占用。8080 端口常被其他 Web 服务占用,修改 docker-compose.yml 中的端口映射为8081:8080即可,改完记得重启容器。

第八章 收尾:你的行动清单与延伸学习入口

到这里,你已经走完了从选型到上线维护的完整闭环。剩下的就是动手实践——把下面这份清单逐项打勾,你会发现自己离一套可用的工业监控平台越来越近:

  • 用 Docker 完成一次部署,登录系统并浏览各个菜单
  • 创建一个虚拟数据源和至少 3 个数据点,观察实时数据
  • 把数据点拖进 Watch List,尝试折线图与阶梯图两种形态
  • 设置一条报警规则,并手动触发一次验证通知链路
  • 在图形化视图中摆一张车间示意图并绑定数据点
  • 阅读 REST API 文档,调用一次接口获取实时数据
  • 修改默认密码,检查 env.properties 中的 API 鉴权配置

如果想继续深入,这几个入口值得收藏:接口定义文件 doc/RESTAPI/ScadaLTS_API_OAS3.yaml、数据库建表脚本 WebContent/WEB-INF/db/、压测脚本 jmeter/、单元测试与工具类 test/,以及 Docker 配置 docker-compose.yml 和 docker-compose-dev.yml。

工业监控这件事,难的不是技术本身,而是把采集、存储、报警、展示串成一条可靠链路。开源SCADA系统 Scada-LTS 已经帮你把这 80% 的脏活干完了,剩下的 20% 就是你的业务场景——现在就可以从克隆仓库、跑起一个容器开始。动手吧,十分钟后你就拥有了自己的第一套工业监控平台。

【免费下载链接】Scada-LTSScada-LTS is an Open Source, web-based, multi-platform solution for building your own SCADA (Supervisory Control and Data Acquisition) system.项目地址: https://gitcode.com/gh_mirrors/sc/Scada-LTS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表