硬件管理平台 - 引言(一)
硬件管理平台 - 引言(一)
它是什么
需求
- 平台需要集成很多协议不同或者调用方式不同的硬件设备,平台作为上位机与下位机的中间网关进行通信,原则上硬件管理平台不应该有逻辑只遵循数据数据交互即可。
- 需作为产品/系统发布并部署,现场只需要简单调试就可使用,已集成的硬件设备无需再次开发调试。对于新接入设备,尽可能在公司开发完成,减少驻场时间,减少开发成本。
- 待系统完善后,可进行傻瓜式部署,仅需要配置硬件设备即可完成调试和部署。
- 统一平台,便于升级和管理。
- 平台遵循统一标准,新设备接入时只需要遵循接口统一规范平台就可接入。
- 由于大部分硬件的SDK或协议都已C++/C或C#为主,应优先选择支持性好,且易上手的语言。
- 目前服务器已windows为主或有中间机,需开机自启,且使用Http协议对外暴露接口。
- 遇到需下位机主要上报数据的,硬件管理平台需配置上位机接收数据接口,无需每个硬件单独配置。
- 硬件管理平台需要有定时任务,且任务时间可配。
想法
在公司内部提供一个大而全的硬件平台,当某个项目使用时,可通选择不同的硬件设备进行导出。导出特定项目的设备集合,导入到硬件网关中进行硬件更新,并在网关中配置上位机系统接收地址和当前项目的相关信息,并添加实际的硬件信息,包括通信方式,地址,定时任务等信息。完成配置后可将设备提交至上位机,供上位机控制使用。硬件网关还可对添加的硬件信息进行测试,判断网关是否能正常控制或获取下位机信息。如果一旦出错,硬件网关应有自检机制,并有日志,可定位到出错的特定代码行。
求解思路
-
硬件管理平台应该是一个windows系统服务,并嵌套的WebApi,可直接暴露接口供上位机使用。
-
硬件平台使用反射机制完成硬件设备开发,并与硬件网关制定统一的设备类型代码和硬件功能码,因此需要创建一个公共的Utils类,其中需要包含硬件约定的相关数据信息。
-
项目应以硬件进行分类,不同硬件各占用一个唯一标识,用于识别硬件类型,通过硬件类型判断硬件功能,对于相同硬件类型不同功能的,取并集,不支持的功能告知上位机硬件不支持。
-
使用日志类,硬件网关应有独立的自启程序,保证在操作系统正常但网关宕机时可迅速重启。
-
加入调度任务,时间可配。
-
使用适配器模式,统一一个出口和入口,通过调用内部不同的适配器进行适配。
-
使用C#为开发语言。
本项目可能涉及的技术
- Topshelf: windows服务,比自带服务有优势的是可直接在命令行窗体安装/开启/关闭,不需要使用额外的应用程序进行注册。
- Nancy: 轻量级的Web框架,使用owin标准协议。
- Newtonsoft.Json:Json数据解析包
- log4Net:之前在做项目时使用的是log4j,因此使用了log4Net作为日志包工具。
- Thrift45:网关宕机检测工具,开发周期短,不需要关注底层,只需要实现即可
- 创建一个Thrift45的客户端,对硬件网关进行心跳和部分数据的采集
- 该服务可远程网关重启,可对网关目前的内存使用情况进行监控
- 支持多语言,上位机的Thrift45客户端使用java开发。
- ICSharpCode.SharpZipLib:压缩包类,硬件平台导出的硬件集合需进行压缩,防止文件丢失。
- Quartz:调度任务
- Xml和INI操作类
因硬件网关要求稳定,也没有逻辑处理,目前暂未接入数据库。对于简单的数据目前是存到了缓存中或通过Thrift45的客户端进行保存。
项目暂定分布
UtilClassLibrary
:底层依赖包,所有的依赖都放在该处,后期会将该包进行拆解,按照模块使用进行划分,不然将会非常非常的臃肿
HardwareGatewayConfig
: 现场配置和调试硬件网关的配置程序,功能包含:更新硬件类型合集,配置硬件网关信息,对硬件信息进行增删改及调度任务的时间设置,最后需要能对网关进行功能测试。
HardwareGatewayProductization
:硬件管理平台,所以硬件集合,可通过选择进行导出。
HardwareGatewayPlugin
网关组件,核心模块,用于初始化硬件类型集合,调用及任务调度。
HardwareGatewayRestful
: 已弃用,原来使用restful与上位机交互,后改为了WebApi
HardwareGatewayService
:硬件网关的主启动服务,启动后触发HardwareGatewayWebApi。
HardwareGatewayWebApi
: web框架,调用HardwareGatewayRestful。
HardwaeGatewaySetup
:打包程序
它能干什么
用途
作为非硬件的硬件网关,可起到中间件的作用。目前物联网已经逐渐成熟,硬件协议方式,类型,交互方式都有不同,可通过硬件网关进行统一的出和入。
现场实施方便,无需过多的关注硬件部分,只需要添加现场实际硬件信息即可。
项目可扩展
本项目如果只考虑window是系统,HardwareGatewayService
和HardwareGatewayWebApi
可作为公共项目使用,作为系统服务的web平台。