基于WebAssembly 的跨平台SCADA 系统设计与实现*
2024-01-09谢悦海唐伯培常宝波
谢悦海,刘 猛,唐伯培,常宝波
(广州市扬新技术研究有限责任公司,广州 510540)
0 引言
在当今迅速变化的工业和技术环境中,监督和控制工业过程的重要性愈发凸显。SCADA系统作为实现这一目标的关键技术,在工业自动化领域扮演着不可或缺的角色[1]。Mercurio等[2]提出了一种基于IEC 61970 和IEC 61850 国际标准的能源管理/监控和数据采集系统。Alihussein和Abedalati[3]用以太网和RS485 通信介质对SCADA系统进行性能测试,得出RS485 更易于工业环境下的硬件互连和通信。Hamamatsu[4]也提出了通过在自动化系统中的继电保护器和间隔控制单元等智能电子设备应用互联网技术,实现Web服务器功能的SCADA系统。Durrani[5]提出了一种用于SCADA系统多层安全强化无线远程终端单元。
从上面对SCADA系统研究不难发现,系统设计得过于复杂,并且存在如下弊端:(1)平台依赖性,依赖特定的操作系统和硬件平台,这限制其在不同设备和操作系统上的可用性,增加系统的维护成本和难度[6];(2)性能限制,使用基于文本的协议和技术,其性能受限于网络带宽和数据处理能力,难以处理大量的实时数据和高频率的控制操作;(3)安全漏洞,传统SCADA 系统容易受到网络攻击和恶意操作的威胁,导致系统数据泄露和生产中断[7-8];(4)集成困难,难以与其他系统和设备无缝集成,导致信息孤岛,限制了企业的整体效率和生产力提升[9];(5)升级成本高,系统升级和扩展时需要投入大量的时间和资金,不利于系统的持续发展和创新[10-12];(6)可视化效果受限,可视化界面相对较为简单,难以满足现代用户对于交互性和图形表现力的需求[13]。
传统SCADA系统的这些弊端在适应多样化的操作系统、设备方面逐渐显露出来瓶颈和限制[14-15],这给现代工业的快速演进带来了新的挑战。因此本文引入了Wasm技术、WebSocket 技术,以及QWidget 设计SCADA系统。Wasm作为一种跨平台的二进制指令集,为Web应用程序提供高性能的运行环境[16]。将这一技术引入到SCADA系统中,能够突破传统限制,实现更高效、灵活、安全的监控、控制和数据分析功能[17-18]。本文系统设计的核心是将SCADA核心组件和用户界面转化为高性能的Wasm模块,以实现在不同操作系统和设备上无缝运行的特性,并且满足各种组网方式、报表内容可自定义、可扩展各种高级应用等。更为重要的是,本文设计和实现的SCADA系统,挖掘Wasm技术的潜力解决了在安全性、性能限制和实时性方面的痛点。结合工程应用情况,基于Wasm的跨平台SCADA系统能取代的重复软件开发工作,如数据库组态支持excel 导入/导出、支持批量修改配置、在线修改配置。
本文旨在向工程界提供一种新的范式,以促进工业自动化技术的创新和进步。
1 SCADA系统分析
随着工业自动化的不断发展,SCADA系统在现代工业中扮演着至关重要的角色。但是用于中小型工业SCADA系统的主要问题是较高的环境配置成本和系统的兼容性[19]。目前正在进行各种研究,以优化SCADA 系统的投资成本,同时不损害系统最基本和最关键需求。
本文致力于通过采用创新性的Wasm 技术,构建一款跨平台的SCADA系统,以实现高效、灵活的工业过程管理。在该系统设计中,融合了多项关键技术,包括QWidget、Redis、SQLite 和WebSocket,以构建一个全面优化的解决方案。
首先,选择使用QWidget 技术作为系统的用户界面框架。QWidget提供了丰富的界面元素,可用于创建交互性强、视觉一致的监控界面。这种技术使得用户能够通过直观的图形界面监视和控制工业过程,提升了用户体验和操作效率。
为了实现高效的数据管理与存储,在设计系统时本文引入了Redis 和SQLite 技术。Redis 作为内存数据库,用于快速存取实时数据,以确保系统的实时性和高性能。SQLite作为嵌入式关系型数据库,用于持久化存储历史数据和配置信息,以支持长期数据分析和管理。
此外,WebSocket 技术在系统通信方面起到了关键作用。WebSocket提供了实时、双向的通信机制,使得远程监控和控制成为可能。通过WebSocket,用户可以远程访问SCADA系统,实时获取数据、发送指令,以及与系统进行实时互动。
在系统整体架构中,SCADA系统将上述技术有机地融合在一起。前端界面采用QWidget 构建,与后端通过WebSocket实现实时通信,从而实现了即时的数据更新和控制响应。Redis 和SQLite 则为系统提供了高效的数据存储和管理手段,支持了系统的实时性和可扩展性。
综上所述,基于WebAssembly的跨平台SCADA系统的设计与实现在多个方面具有创新性和实用性。通过采用QWidget、Redis、SQLite和WebSocket等多种技术,本文从效率、维护、经济、数据采集和控制平台已使用的专有技术出发,从孤立的厂内网络设计和实现了使用标准软件、网络跨平台的SCADA系统。为工业自动化带来了更加智能和便捷的解决方案。这一系统的设计和实现在推动工业领域的现代化进程中将发挥重要作用。
2 SCADA系统整体框架设计
本文设计的SCADA 系统采用跨平台的C ++库QT,将SCADA系统拆分为多个独立的Wasm模块,包括数据采集、实时监测、控制逻辑等。这些模块可以独立部署和更新,提高系统的可维护性和扩展性。前端界面使用Qt Designer构建,通过Wasm 模块实现高性能的数据可视化。基于Wasm技术的跨平台SCADA系统将从如下几个方面开发设计。
(1)安全性与认证。采用Wasm 模块将应用程序运行在安全的沙盒环境中,限制其访问系统资源,提高系统的安全性。并且集成用户认证和权限管理机制,确保只有授权用户可以访问和操作系统。
(2)数据交换与通信。设计标准化的数据交换协议,确保模块间的高效通信和实时数据传输。利用WebSocket技术,实现实时数据更新,保证数据的准确性和实时性。
(3)性能优化。每个Wasm 模块都需要经过编译优化,提高代码执行效率和性能。利用浏览器的本地缓存机制,减少数据传输延迟,提高实时数据更新速度。
(4)界面设计和操作。提供直观而绚丽的界面,支持用户二次创建和编辑画面元素,无需复杂的编程知识。工程师可以从丰富的组件库中选择图形控件,实时预览和编辑画面效果,实现灵活的画面组态。
(5)数据连接与交互。设计工具支持配置数据源,如采用Redis数据库实现实时数据更新;采用嵌入式数据库SQLite,将应用程序可以直接与SQLite 数据库文件进行交互不需要独立的服务器进程。为控件添加事件触发,工程师可以自定义按钮点击、数值输入等交互操作,实现实时控制。
(6)导出与部署。工程师可以将设计好的画面导出为常见的文件格式,如XML 等,实现跨平台加载和显示。设计的画面可以通过Web浏览器进行访问,实现跨平台和远程监控控制。
本文设计的基于WebAssembly的跨平台SCADA系统是一个综合性的监督与控制平台,涵盖了多个关键组件[20],以实现对工业过程状态的全面监督、控制和管理,具体的框架设计如图1 所示。首先,通过各种传感器和数据源,系统实时采集各类数据,如电度、电压、电流和功率等。这些数据经过处理和分析,存储于数据库中,以供后续分析和查询。在数据展示方面,系统通过直观的图表、图形化界面等方式,将实时数据和历史数据可视化,帮助用户快速了解工业过程状态。最重要的是,SCADA系统支持远程控制,让用户能够通过网络远程操作设备、调整参数等。此外,系统还提供报警功能,及时通知用户工业运行过程中的异常情况。整体而言,SCADA系统框架融合了数据采集、处理、展示和远程控制,为企业提供了高效的监控、优化和决策支持工具。
图1 SCADA系统整体框架的图形化设计应用
3 实验设计与实现
在设计SCADA系统时,通过模块化、规范化设计几组独立的网站组件实现,而不是集成的软件程序。本次设计系统时充分考虑到应用程序低耦合、应用程序高内聚、降低升级成本、重用现有基础设施以及易于开发[21]。这不仅对企业的运营、工程、维护和工作人员至关重要,而且对企业的最高层管理人员也至关重要。在此次系统开发过程中还使用了Redis 数据库提高数据的读写能力。由于考虑到因目前利用QT的Wasm技术套件不支持所有的模块,如常见的SQL 数据库模块和网络中的UDP/FTP 也不支持。因此在开发时本文采用了WebSocket实现与服务器的通信。本次设计的SCADA 系统不仅健全,而且功能完善。在此节只展示广州地铁14号线的实际开发的几个示例功能实现:数据连接与交互的实现、画图编辑模块实现、实时数据监控实现和画面组态模块实现。
3.1 数据连接与交互实现
在进行数据连接和交互设计中,开发时使用Redis和SQLite作为数据连接与交互的技术组件。具体的数据连接交互过程如图2 所示。
图2 数据交互流程
系统将Redis 用作实时数据交换的中间件,以实现子模块之间的快速数据传输和通信。具体做法包括:数据发布与订阅,缓存数据,实时数据分析。SCADA 系统的功能子模块可以将实时数据发布到Redis的特定频道,其他需要获取数据的子模块可以订阅该频道,实现实时数据更新。并且功能子模块可以将一些常用的数据缓存到Redis中,减少数据库的访问压力,提高系统性能。
系统使用SQLite来存储一些持久化的数据,包括历史数据、配置信息等。具体做法包括:历史数据存储、配置信息、本地缓存。开发过程中首先将历史数据存储到SQLite数据库中,用于后续的数据分析和报表生成。其次将存储系统的配置信息和参数设置存放到SQLite 数据库中,以便在系统启动时进行自动读取和应用。
3.2 画图编辑模块实现
画面编辑系统导入动态库加载出画面编辑所需图元及各样参数,进而让用户进行灵活组态,保存后生成画面文件,图3 所示为编辑系统的画面元素。可以发现控件图元除了直线、矩形等基本图元,还有适用于SCADA
图3 画面元素组件
系统的开关控件,如断路器、手车、隔离开关等。同时还包含避雷器、互感器和热继电器等电力系统经典的器件。这也是该组态在电力方面友好性的体现。为了能适用于更多场景,组态软件还提供了进度条、仪表盘等更多扩展控件。利用QWidget 开发图元控件,很好地保留控件实际外观,同时可按照用户的需求,进行二次开发,编写所需的控件图元到动态库里,在启动编辑系统时加载动态库文件进而在控件列表中显示并提供给用户使用,无需用户自行组合拼接,降低了人力培训成本,方便用户入门。
3.3 数据健康功能模块实现
第3 个功能示例如图4 所示,实现了实时数据监控的功能,向运维人员提供定期更新的数据。本文在设计实时数据监控时按照以下步骤完成。
图4 数据监控功能组件
(1)界面设计。Qt Designer 中设计主界面,包括用于显示实时数据的图表或文本框等控件。
(2)数据采集和展示。获取Redis 缓存中的数据,使用图表库(如QCustomPlot)来绘制实时数据图表或更新文本框来显示实时数据。
(3)实时数据更新。使用定时器(例如QTimer)来定期刷新实时数据的展示,在定时器触发时,更新图表或文本框以显示最新的数据。
(4)界面交互。添加用户交互功能,如开始/停止监控按钮,允许用户控制数据采集和展示的状态。
在前端界面,利用电气一次主接线图,将保存在数据库服务器中的目标数据被标记并映射到Web 服务器中的XML文件(例如jxt_main.grh)。每当服务器中的目标数据更新时,数据库服务器就会自动用最新的数据更新数据连接点,来完成数据可视化,使用户直观了解地铁供电线路的运营过程。同时建立报警机制,一旦数据异常系统即时发出通知,帮助用户快速响应。这样的设计整合了数据采集、处理和展示,为用户提供了全面的数据监控功能,支持实时决策和异常处理。
3.4 画面组态模块实现
画面组态工具采用了组件式架构,最大程度满足用户对系统灵活性和可伸缩性的要求。图元也可以由第三方按照图元开发规范来自行开发,然后动态加载到本系统,从而使系统具有新增加的图元特性。画面组态工具界面如图5 所示。工具提供了完善便利的图形编辑环境和丰富的图元:(1)基本图元,包括文本、直线、四方形、圆形、图片、按钮;(2)基本控件,包括数显、遥信、状态、避雷器、带电显示、电缆头、熔断器、变压器、PT互感器、电容器、电抗器、整流器;(3)开关控件,包括就地/远方、断路器、隔离开关、手车、接地开关;(4)表格控件,包括遥测表、光字牌、饼状图、曲线图、柱状图、多维柱状图;(5)扩展控件,包括进度条、仪表盘等。
图5 画面组态工具界面
综上所述,在本节中设计和实现了直观易懂的用户界面,以图表、图像和实时数据显示工业的运行状态,帮助操作人员实时了解工业过程的运行情况。本次研发中,还设计了实时报警功能,当数据超出阈值时,系统触发报警机制。部分报警情况可以设定自动化响应,如切断电源、启动备用设备等,以减轻人工干预的负担。并且为了区分不同严重程度的报警,建立相应的处理流程,以便及时采取措施解决问题,设计了报警级别与处理流程。
4 结束语
本文为配电网设计和实现了一套数字化的SCADA系统。该系统相较于其他工业控制系统具有如下优势:(1)实时性高,SCADA系统可以对工业运行数据进行连续、高频次、大批量的数据采集和处理,保证了准确实时监督控制工业运行状态;(2)可靠性好,SCADA系统运行稳定,不会出现延时或访问异常等问题,即使在面对多用户同时访问时也能保持系统的高效运行;(3)灵活性高,SCADA系统可以根据客户的需求进行二次开发或者功能扩展,以及整合第三方设备和系统;(4)安全性高,SCADA系统可实现数据加密、验证、备份等安全机制,提高系统的安全防护能力。
当然,随着工业网络的扩展,网络安全和隐私问题变得更加重要。本文研究的SCADA系统将来需要关注网络防御、漏洞修复、数据加密等安全措施,以应对不断增加的网络威胁,并致力于开发基于深度学习和机器学习在SCADA系统中的异常检测、预测维护等技术,以提高系统的智能化和自适应能力。