SCADA系统开发关键技术(三)
2026/9/23 11:44:32 网站建设 项目流程

模块化系统

ScadaSystem是一个由众多模块组装而成的低耦合系统,其主程序没有对任何特定种类仪器设备、通信链路、平台、数据库的支持,所有这些功能都在模块中实现。系统定义了以下种类的模块:

  • 链路:负责维持通信、收发字节流。
  • 存储:负责对接数据库,将数据持久化。
  • 采集:负责数据采集。
  • 上传:负责数据上传。
  • 中间件:负责对采集到的数据进行处理,触发定制化功能。

主程序中对所有模块的调用流程如下图所示:

模块化技术

为实现模块化,其技术实现是使用.NET的反射技术。

  1. 建立一个基础类库ScadaBase,其中定义了所有模块的基类。

  2. 继承对应的基类,开发模块,编译生成dll。

  3. 主线程根据配置,将需要的dll载入内存并实例化。

  4. 调用模块方法。

链路模块

链路模块继承于以下接口(为描述方便,接口进行了简化,下同):

class LinkBase { void Initialize(); void Open(); void Close(); void Send(byte[] data); byte[] Receive(); }

大多链路原生支持的就是字节流的收发,但某些链路,SDK原生支持的是特定的格式。例如MQTT,要求有主题、负载,而且是订阅模式,这需要在模块中进行转换以适配系统的运行。

采集模块

采集模块继承于以下接口:

class AcquireBase { void Initialize(); void AcquireData(); }

在实际应用中,被采集的设备可分为以下几类:

  • 需要请求,然后回复数据

  • 无需发送请求,主动发送数据

  • 请求和回复并存,不一定存在关联

对于每一类,开发出具体的基类,然后采集模块再继承这几个基类。

上传模块

上传模块继承于以下接口:

class UploadBase { void Initialize(); void UploadData(); }

在实际应用中,上传情况可分为以下几类:

  • 定时或在数据发生改变时,主动上传数据
  • 需要平台请求,才回复数据

对于每一类,开发出具体的基类,然后上传模块再继承这几个基类。

存储模块

存储模块继承于以下接口:

class StoreBase { void Initialize(); void StoreData(); void QueryData(); }

在实际应用中,触发存储的时机可分为以下几类:

  • 定时或在特定时间点存储数据
  • 在数据发生改变时存储数据
  • 自定义存储时机

对于每一类,开发出具体的基类,然后存储模块再继承这几个基类。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询