No Description

051907 1021b54f1a Merge branch 'master' of http://hihi.fun:60033/zhangqi/ecsadmin 1 week ago
Admin.NET 1021b54f1a Merge branch 'master' of http://hihi.fun:60033/zhangqi/ecsadmin 1 week ago
DebugSoftware 8f915d0571 feat:first commit 1 month ago
Doc a8493eb925 feat:调整调度接口 1 week ago
docker 8f915d0571 feat:first commit 1 month ago
.$ECS设备平台架构图.drawio.svg.bkp 8f915d0571 feat:first commit 1 month ago
.gitignore 46e8942c71 fix:修改ignore 1 month ago
ECS设备平台架构图.drawio.png 8f915d0571 feat:first commit 1 month ago
ECS设备平台架构图.drawio.svg 8f915d0571 feat:first commit 1 month ago
LICENSE 8f915d0571 feat:first commit 1 month ago
README.md 8f915d0571 feat:first commit 1 month ago
package-lock.json 8f915d0571 feat:first commit 1 month ago
package.json 8f915d0571 feat:first commit 1 month ago

README.md

平台架构图

1、分支介绍

添加IotFun模块,该模块为ecs设备数据管理系统,包含监听服务端,采集客户端等,对ecs进行重构

2、GrpcModule

grpc客户端封装类,连接服务端使用

3、IotFunModule

ecs重构模块。重构完成

功能设计:

  • 采集客户端模块,客户端绑定设备。可以分布式部署多个客户端。
  • web客户端模块,使用web api与第三方对接。
  • 监听服务端同时也是调度服务端模块,用来处理客户端的数据。
  • IotFun类库为admin.web使用,ecs界面和业务在其中。
  • IotFunClient为采集客户端解决方案文件夹,包含IotClientService(客户端采集服务业务)、IotClientConsole(客户端采集程序)、IotClientWeb(web客户端)SyncSocketModuleCore等程序集
  • IotFunServer为监听服务解决方案文件夹,包含IotContract(公用model)、IotServer(grpc服务端),IotServerService(服务端操作逻辑、数据库访问等)
  • IotProcess为调度程序解决方案文件夹,包含扩展的调度项目,调度和数据处理都在该项目中。生成后部署到ProcessExtensions文件夹中(支持多个项目同时启动)。
  • 集成SignalR服务,传输各个客户端的日志。

集成扩展:

  • IotClientService(客户端采集服务业务)包含不同设备的数据采集功能,设备以协议维度进行扩展,扩展步骤如下:

    集成IotClient第三方库,支持大多数设备,可以参考SiemensS7Manager
    1. 实现设备的Manager和Operation,继承 EquipBaseManager<T,K>和IEquipOperation<T>,
    T是设备采集的dto对象,横向扩展采集属性。
    K是推送到服务端的dto对象,只推送需要用到的关键属性。
    
  • IotServerService(服务端数据存储业务)包含不同设备的数据仓储,数据以协议维度进行扩展,扩展步骤如下:

    1. 实现数据的DataManager,继承 ServerDataBaseManager<K>
    K是推送到服务端的dto对象,只推送需要用到的关键属性。
    

采集逻辑:

  • 提交状态(持久化)并拉取控制指令,执行指令(已实现)
  • 获取程序绑定设备数据,设备manager-operation-handle(已实现)
  • 设备推送数据到服务端 ServerDataBaseManager接收(已实现)
  • 加载扩展程序集,执行IServerMainProcess接口方法,进行数据解析、调度、报警(F29已实现)
  • SignalR实时日志和历史日志展示(已实现)
  • 解析后的数据通过Mqtt服务对外发布(已实现)。

  • mqtt数据管理(已实现)

    功能如下:
    1. 服务端默认 生成 以协议为维度的 发布对象(时间间隔,设备集合(默认全部),是否启动等)前端可展示,默认不启动,前端可点击执行 启动、停止,并且可以配置选择 发布的设备集合。发布的数据为默认的 push 设备数据,包括 Tag 点位。
    备注:tag点位需要新增是否发布 数据。
    2. 在 process调度程序中,默认生成 已 设备类型为维度的 发布对象(点位整合后的横向数据,如堆垛机和物流线,process中需要新增 获取发布对象 的接口。
    3. 前端新增 发布管理 界面,控制mqtt服务端的数据发布,并且可以配置发布对象。
    

Mqtt功能:

1.发布:

  • 引入MqttServerService,
    • 在要使用Mqtt发布的类中引入接口IMqttServerService _mqttServerService,
    • 在appSetting文件中配置,MqttConfig信息,
    • 调用_mqttServerService.StartAsync(_mqttConfig)方法启动服务,
    • 调用_mqttServerService.PublishData("topic","content",1,true,"Server")方法发布信息。

2.订阅:

  • 设置配置选项 var optionsBuilder = new MqttClientOptionsBuilder() .WithTcpServer("127.0.0.1", 10086) // 要访问的mqtt服务端的 ip 和 端口号 .WithCredentials("admin", "123456") // 要访问的mqtt服务端的用户名和密码 .WithClientId("testclient01") // 设置客户端id .WithCleanSession() .WithTlsOptions(new MqttClientTlsOptions { UseTls = false // 是否使用 tls加密 }); var clientOptions = optionsBuilder.Build();
  • 在连接前配置相关事件方法 _mqttClient.ConnectedAsync += _mqttClient_ConnectedAsync; // 客户端连接成功事件 _mqttClient.DisconnectedAsync += _mqttClient_DisconnectedAsync; // 客户端连接关闭事件 _mqttClient.ApplicationMessageReceivedAsync += _mqttClient_ApplicationMessageReceivedAsync; // 收到消息事件
  • 在连接成功事件中设置订阅主题,设置服务质量(QoS) _mqttClient.SubscribeAsync("scEnterJob", MqttQualityOfServiceLevel.AtLeastOnce);