)
模块化系统ScadaSystem是一个由众多模块组装而成的低耦合系统其主程序没有对任何特定种类仪器设备、通信链路、平台、数据库的支持所有这些功能都在模块中实现。系统定义了以下种类的模块链路负责维持通信、收发字节流。存储负责对接数据库将数据持久化。采集负责数据采集。上传负责数据上传。中间件负责对采集到的数据进行处理触发定制化功能。主程序中对所有模块的调用流程如下图所示模块化技术为实现模块化其技术实现是使用.NET的反射技术。建立一个基础类库ScadaBase其中定义了所有模块的基类。继承对应的基类开发模块编译生成dll。主线程根据配置将需要的dll载入内存并实例化。调用模块方法。链路模块链路模块继承于以下接口为描述方便接口进行了简化下同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(); }在实际应用中触发存储的时机可分为以下几类定时或在特定时间点存储数据在数据发生改变时存储数据自定义存储时机对于每一类开发出具体的基类然后存储模块再继承这几个基类。