基于微服务架构的简单的IOT系统

2023年3月29日

最近要配合MES采集和控制数控设备,又不想把这功能集成在MES中,另外也是为了提高扩展性,于是就用PowerDesigner设计了系统结构图,简单画了一下类图,经过初步研究,觉得可行,就动手。

系统设计主要技术:

Asp.net Core,RabbitMQ,MQTT,WebSocket,WebApi,MongoDB,Redis,SSO,OAuth,EChart,ModbusTCP

使用组件:

.net5.0,MQTTnet,RabbitMQ.Client

主要解决问题:

1、要能够接收不同的外部通讯协议,构建一个转换数据的工具类,此功能分两部分,一部分是基于树莓派的数据接收和发送功能,这个是系统自带的部分,可以支持基于net或者485的接入方式,更加灵活;树莓派中的程序,能够通过管理微服务下发程序,实现即时更新功能;另外一部分是在中转微服务中,这样可以支持MQTT以外的通讯,例如http,socket等。

2、建立一个中转服务器,其内部使用MQTT作为中转器,且支持WebSocket,可以直接提供给页面处理展示数据,此服务不能参杂任何个性化的功能,例如报警等。此服务主要是接收经过转换后的标准数据格式,下发设备控制指令,转发通知、警报等消息

3、构建基于Mongo的DAL层,实现框架的IDAL接口,方便接入现有系统开发框架。

4、构建中转消息的发送和接收组件,主要功能是为管理微服务、日志微服务、大屏微服务等提供数据接入基础。

5、构建设备数据处理的基类,用于针对性设备的报警、计算等功能,且以插件的形式出现。在管理微服务中设计一个热插拔功能,能够自动加载或者卸载插件。

6、与MES互相通讯的WebApi接口定义。此方法可以在现有开发框架上定义互相的API接口即可。

数据流大致说明

设备(PLC)-数据转换-中转-[日志微服务、管理微服务-(设备类型、设备、程序下发、插件管理、报警管理)、大屏微服务-(插件管理,数据计算)]

后台管理示例界面:

 

一下是一个简单的数据采集测试界面,后端是一个使用PLC采集两个温度计

http://gzxunhang.f3322.net:8084/

服务器托管,北京服务器托管,服务器租用 http://www.hhisp.net

hackdl

咨询热线/微信 13051898268