一、最终成品
本系列博文所指的开发是指软件系统的开发,不包括硬件开发。由于网关软件系统是跨平台的,可以运行在Windows系统上,也可以运行在Linux系统上。所以,只要在一台小主机上安装了此软件系统,就形成了一个数据采集网关。
本系统用于测试的小主机如下图所示:
它的一些参数如下表所示:
项目 | 说明 |
---|---|
处理器 | ARM Cortex-A9 |
内存 | 512M |
操作系统 | Ubuntu 18.04 |
最终网关所支持的功能包括:系统配置、数据采集、设备反控、数据显示、数据存储、数据上传等。除了基本的网关功能,需要特别说明的是系统具有很强的灵活性。系统支持大量采集协议(Modbus、DLMS、DL645、OPC-UA等)和上传协议(MQTT、TLink、HJ212等),并且可以很方便地进行扩展。
系统管理界面如下图所示:
二、总体技术方案
2.1 跨平台能力
系统的跨平台能力,依赖于.NET的跨平台特性。本系统是基于.NET开发的,而.NET可以运行在Windows/Linux/Mac系统上,内核也支持x86/x64/ARM,所以本系统就可以运行在上述平台上(实际上中间还有很多问题需要解决)。
2.2 前后端
由于网关没有显示设备,对网关的操作通过Web页面完成。后台服务与Web页面的通信存在两种方式,Web API主要用于配置,WebSocket主要用于实时通信。Web前端没有使用nginx等服务器,而是直接使用.NET内置的Kestrel服务器。一方面是兼容性的考虑,由于系统是跨平台的,使用任何软件和组件都需要考虑是否兼容这些平台。另一方面是安装方便性的考虑,越少软件部署越方便。
如果是在Windows平台上,系统甚至可以提供C/S结构的客户端。实现这一点的方法是使用CefSharp做一个浏览器壳,把Web页面包含其中,实现类似于客户端的效果。
系统架构如下图所示:
2.3 扩展灵活性
系统的扩展灵活性体现在两方面,一是通信协议的灵活扩展,二是界面的灵活扩展。
系统对通信协议的解析定义了统一的接口。只要实现了接口,就能嵌入到系统中,完成数据的解析功能。主程序通过反射机制将外部开发的程序加载进来。
系统使用了配置驱动界面的方法,使得系统的配置界面不固定,能够根据配置内容进行动态变化。
2.4 开发技术
本系统分前后端。后端使用C#语言开发,需安装.NET6环境。前端使用Vue、TypeScript开发。