硬件管理平台 - 引言(一)

硬件管理平台 - 引言(一)

它是什么

需求

  1. 平台需要集成很多协议不同或者调用方式不同的硬件设备,平台作为上位机与下位机的中间网关进行通信,原则上硬件管理平台不应该有逻辑只遵循数据数据交互即可。
  2. 需作为产品/系统发布并部署,现场只需要简单调试就可使用,已集成的硬件设备无需再次开发调试。对于新接入设备,尽可能在公司开发完成,减少驻场时间,减少开发成本。
  3. 待系统完善后,可进行傻瓜式部署,仅需要配置硬件设备即可完成调试和部署。
  4. 统一平台,便于升级和管理。
  5. 平台遵循统一标准,新设备接入时只需要遵循接口统一规范平台就可接入。
  6. 由于大部分硬件的SDK或协议都已C++/C或C#为主,应优先选择支持性好,且易上手的语言。
  7. 目前服务器已windows为主或有中间机,需开机自启,且使用Http协议对外暴露接口。
  8. 遇到需下位机主要上报数据的,硬件管理平台需配置上位机接收数据接口,无需每个硬件单独配置。
  9. 硬件管理平台需要有定时任务,且任务时间可配。

想法

在公司内部提供一个大而全的硬件平台,当某个项目使用时,可通选择不同的硬件设备进行导出。导出特定项目的设备集合,导入到硬件网关中进行硬件更新,并在网关中配置上位机系统接收地址和当前项目的相关信息,并添加实际的硬件信息,包括通信方式,地址,定时任务等信息。完成配置后可将设备提交至上位机,供上位机控制使用。硬件网关还可对添加的硬件信息进行测试,判断网关是否能正常控制或获取下位机信息。如果一旦出错,硬件网关应有自检机制,并有日志,可定位到出错的特定代码行。

求解思路

  1. 硬件管理平台应该是一个windows系统服务,并嵌套的WebApi,可直接暴露接口供上位机使用。

  2. 硬件平台使用反射机制完成硬件设备开发,并与硬件网关制定统一的设备类型代码和硬件功能码,因此需要创建一个公共的Utils类,其中需要包含硬件约定的相关数据信息。

  3. 项目应以硬件进行分类,不同硬件各占用一个唯一标识,用于识别硬件类型,通过硬件类型判断硬件功能,对于相同硬件类型不同功能的,取并集,不支持的功能告知上位机硬件不支持。

  4. 使用日志类,硬件网关应有独立的自启程序,保证在操作系统正常但网关宕机时可迅速重启。

  5. 加入调度任务,时间可配。

  6. 使用适配器模式,统一一个出口和入口,通过调用内部不同的适配器进行适配。

  7. 使用C#为开发语言。

本项目可能涉及的技术

  1. Topshelf: windows服务,比自带服务有优势的是可直接在命令行窗体安装/开启/关闭,不需要使用额外的应用程序进行注册。
  2. Nancy: 轻量级的Web框架,使用owin标准协议。
  3. Newtonsoft.Json:Json数据解析包
  4. log4Net:之前在做项目时使用的是log4j,因此使用了log4Net作为日志包工具。
  5. Thrift45:网关宕机检测工具,开发周期短,不需要关注底层,只需要实现即可
    • 创建一个Thrift45的客户端,对硬件网关进行心跳和部分数据的采集
    • 该服务可远程网关重启,可对网关目前的内存使用情况进行监控
    • 支持多语言,上位机的Thrift45客户端使用java开发。
  6. ICSharpCode.SharpZipLib:压缩包类,硬件平台导出的硬件集合需进行压缩,防止文件丢失。
  7. Quartz:调度任务
  8. Xml和INI操作类

因硬件网关要求稳定,也没有逻辑处理,目前暂未接入数据库。对于简单的数据目前是存到了缓存中或通过Thrift45的客户端进行保存。

项目暂定分布

UtilClassLibrary:底层依赖包,所有的依赖都放在该处,后期会将该包进行拆解,按照模块使用进行划分,不然将会非常非常的臃肿

HardwareGatewayConfig: 现场配置和调试硬件网关的配置程序,功能包含:更新硬件类型合集,配置硬件网关信息,对硬件信息进行增删改及调度任务的时间设置,最后需要能对网关进行功能测试。

HardwareGatewayProductization:硬件管理平台,所以硬件集合,可通过选择进行导出。

HardwareGatewayPlugin 网关组件,核心模块,用于初始化硬件类型集合,调用及任务调度。

HardwareGatewayRestful: 已弃用,原来使用restful与上位机交互,后改为了WebApi

HardwareGatewayService:硬件网关的主启动服务,启动后触发HardwareGatewayWebApi。

HardwareGatewayWebApi: web框架,调用HardwareGatewayRestful。

HardwaeGatewaySetup:打包程序

它能干什么

用途

作为非硬件的硬件网关,可起到中间件的作用。目前物联网已经逐渐成熟,硬件协议方式,类型,交互方式都有不同,可通过硬件网关进行统一的出和入。

现场实施方便,无需过多的关注硬件部分,只需要添加现场实际硬件信息即可。

项目可扩展

本项目如果只考虑window是系统,HardwareGatewayServiceHardwareGatewayWebApi可作为公共项目使用,作为系统服务的web平台。

posted @ 2023-07-29 23:49  摧残一生  阅读(87)  评论(0编辑  收藏  举报