关于IOT 编码的说明以及功能改造
关于IOT 编码的说明以及功能改造
改造目标
鉴于在前期工作中旋思网关、巨控网关对接IOT 平台编码混乱,造成研发、实施工作量激增且无法形成标准化作业,现制定标准化业务编码规范,要求所有项目对接时均需要遵循此规范在网关上进行映射编码,保证网关通过 mqtt 通讯上传的编码是标准格式。同时对IOT 平台升级增强,实现根据标准编码自动化生成产品与设备的配置信息,提升对接自动化程度。
改造方案
网关与IOT 平台对接工作流程
在前期工作中对接流程一直不是非常顺畅,现整理工作对接流程如下:

1、采购网关并安装:
- 向公司指定供应商采购,在采购前应与智控厂家充分评估现场点位需求情况,避免在采购出错
- 现场安装网关设备并且进行以下工作:
- 连接PLC 控制体系(也可直接连接上位机,根据现场实际情况确认)
- 对接PLC 所有点位并且进行测试(如涉及到控制需求,则需要对控制点位进行专项测试)
- 确保网关已经和互联网连接,并且可以通过网关远程访问(开发)工具连接与正常操作
- 远程连接账号并且交回公司运维人员处备案
2、智控厂商提供原始点位表,由智控厂家在完成网关安装后将已经测试通过的原始点位表提供,必须包含点位的中文注释。
3、根据编码规则编写映射名称(此项直接影响到数据是否可以正常上报,非常重要):
- 由对接人员在原始点位表上新开一栏,根据编码规范要求一一进行业务映射编码
- 完成编写后交由IOT 平台负责人进行审核,审核通过后如再变更需重新审核。
4、在网关中将点位进行映射,将审核通过的点位表交给智控厂家,由厂家在网关上进行映射
5、IOT 平台根据上报数据自动工作,平台将根据上报的编码全自动生成设备分组、产品、设备并且开始正常接收数据
6、登录IOT 平台进行友好显示编辑,实施人员登录到iot 平台将自动生成的设备分组、产品等修改为中文名称,方便长久运维。
IOT 平台与业务平台对接工作流程
编码规范
全业务通用编码由以下内容共同组成,并且每段均具备特殊含义,在编码时必须严格遵循,禁止随意调换编码位置,修改编码格式。
1、编码解释:
本编码规范包含内容:网关类型、安装地点、产品类型、数据点、工艺段类型、数据点序号、保留值 1、保留值 2,其中两段保留值暂时无实际意义,业务处理过程中可根据实际情况进行截断。
2、编码类型:
本编码规范包含两种编码类型:点位编码、设备编码(其中设备编码为系统自动截取生成,实际工作中无需编制)
3、编码位置:
本编码采用下短横线方式进行分割,具体每段含义见下图:

- 设备类型:编码位置 1,指网关的品牌,采用拼音首字母大写,举例:旋思(XS),巨控(JK)等
- 安装地点:编码位置 2,指网关安装的实际地点位置,三个字及以下的地名采用全拼大写,四个字及以上采用拼音首字母大写,举例:三台(SANTAI),乌鲁木齐(WLMQ)
- 产品类型:编码位置 3,指一个较大的产品类型,不特指某个品牌,采用拼音首字母大写,举例:流量计(LLJ),水质在线检测仪(SZZXJCY)
- 数据点位:编码位置 4,指一个产品下所含有的数据点位,采用拼音首字母大写,举例:瞬时流量(SSLL),总磷(ZL)
- 工艺类型:编码位置 5,指水厂里的一个工艺段类型,不特别指向相同工艺段的某一个,举例:风机房(FJF),生化池(SHC)
- 设备序号:编码位置 6,指在同一个安装地点下的同一个工艺段类型里相同产品类型的设备序号,举例:生化池 1 号流量计(01),生化池 2 号流量计(02)
- 保留值 1:编码位置 7,保留项无意义,可根据实际情况赋予其意义。
- 保留值 2:编码位置 8,保留项无意义,可根据实际情况赋予其意义。
4、特别说明:
设备序号为简化工艺类型和产品类型所设计,所以在编码过程中可能与现场实际编码情况有差异,例如:
| 现场智控编码方案 | 业务要求编码方案 |
|---|---|
| 生化池 1 流量计 1 | 生化池流量计 1 |
| 生化池 1 流量计 2 | 生化池流量计 2 |
| 生化池 2 流量计 1 | 生化池流量计 3 |
| 生化池 3 流量计 1 | 生化池流量计 4 |
5、对照示例
| 原始编码 | 业务映射编码 | 中文注释 |
|---|---|---|
| ZXCDNSJ1_A_V | XS_SANTAI_DNB_ADY_ZXCDNSJ_01_00_00 | 中心传动浓缩机1A相电压 |
| ZXCDNSJ1_B_V | XS_SANTAI_DNB_BDY_ZXCDNSJ_01_00_00 | 中心传动浓缩机1B相电压 |
| ZXCDNSJ1_C_V | XS_SANTAI_DNB_CDY_ZXCDNSJ_01_00_00 | 中心传动浓缩机1C相电压 |
| ZXCDNSJ1_A_I | XS_SANTAI_DNB_ADL_ZXCDNSJ_01_00_00 | 中心传动浓缩机1A相电流 |
| ZXCDNSJ1_B_I | XS_SANTAI_DNB_BDL_ZXCDNSJ_01_00_00 | 中心传动浓缩机1B相电流 |
| ZXCDNSJ1_C_I | XS_SANTAI_DNB_CDL_ZXCDNSJ_01_00_00 | 中心传动浓缩机1C相电流 |
| ZXCDNSJ1_P | XS_SANTAI_DNB_YGGL_ZXCDNSJ_01_00_00 | 中心传动浓缩机1总有功功率 |
| ZXCDNSJ1_E | XS_SANTAI_DNB_YGDN_ZXCDNSJ_01_00_00 | 中心传动浓缩机1正向有功电能 |
| ZXCDNSJ2_A_V | XS_SANTAI_DNB_ADY_ZXCDNSJ_02_00_00 | 中心传动浓缩机2A相电压 |
| ZXCDNSJ2_B_V | XS_SANTAI_DNB_BDY_ZXCDNSJ_02_00_00 | 中心传动浓缩机2B相电压 |
| ZXCDNSJ2_C_V | XS_SANTAI_DNB_CDY_ZXCDNSJ_02_00_00 | 中心传动浓缩机2C相电压 |
| ZXCDNSJ2_A_I | XS_SANTAI_DNB_ADL_ZXCDNSJ_02_00_00 | 中心传动浓缩机2A相电流 |
| ZXCDNSJ2_B_I | XS_SANTAI_DNB_BDL_ZXCDNSJ_02_00_00 | 中心传动浓缩机2B相电流 |
| ZXCDNSJ2_C_I | XS_SANTAI_DNB_CDL_ZXCDNSJ_02_00_00 | 中心传动浓缩机2C相电流 |
| ZXCDNSJ2_P | XS_SANTAI_DNB_YGGL_ZXCDNSJ_02_00_00 | 中心传动浓缩机2总有功功率 |
| ZXCDNSJ2_E | XS_SANTAI_DNB_YGGL_ZXCDNSJ_02_00_00 | 中心传动浓缩机2正向有功电能 |
IOT升级方案
在编码方案变更以后,同一识别网关上报数据并且自动化生成设备分组、产品、设备,IOT 平台需要对应进行以下改造。
整体流程
整体流程如下图所示:
- 接受网关上报数据并且处理:
- 根据下短横线拆分业务映射编码,并且采用不同的组装方式进行分组
- 设备分组:位置 1+位置 2 数据,举例:XS_SANTAI
- 产品唯一编码:位置 1+位置 2+位置 3,举例:XS_SANTAI_DNB(特别注意,在需要根据工艺段进行区分时则划分到工艺段,即位置 1+位置 2+位置 3+位置 5,举例:XS_SANTAI_DNB_ZXCDNSJ)
- 产品下物模型:物模型是每个产品对应到的测点信息,采用位置 3+位置 4,例如:DNB_YGGL
- 设备唯一编码:由于在产品编码上已经携带了一部分信息,所以设备编码不需要过于负责,位置 3+位置 5+位置 6,举例:DNB_ZXCDNSJ_02
- 自动化新建设备分组、产品、设备:
- 根据上述的方式拆分完毕以后,即可调用相关功能生成,顺序是,1、设备分组,2 、产品,3、设备
- 接受数据并且存储
技术方案
目前IOTKIT采用插件实现热插拔方式对接设备,对接旋思网关则使用 mqtt协议监听 进行数据解析,具体插件 zh-iot-plugin-xuansi
监听TOPIC
目前插件所监听的TOPIC:**/zhxx/+/device/#,例如:/zhxx/SN2_30101_001936_00086_MQTT/device/#** 其中 SN2_30101_001936_00086_MQTT 表示具体的网关设备ID
模型构建
IOTKIT平台将会以 SN2_30101_001936_00086_MQTT 作为设备dn创建一个网关设设备,网关子设备的定义则参考上方定义的编码规范通过工艺段+编号进行创建

代码改造
- 根据产品前缀查询出所有的产品信息,例如:XS_SANTAI开头的产品
- 遍历所有的产品信息
- 查询当前产品的物模型数据,如果没有物模型数据则将后续的点位按照产品名称前缀查询出来后自动创建模型
- 将物模型的数据名称和产品的编码信息进行拼接,例如:XS_SANTAI_LLJ_SSLL
- XS_SANTAI_LLJ:表示产品名称
- SSLL:则代表抽象的物模型点位名称(瞬时流量)
- 将拼接好的数据去根据上报的点位前缀进行匹配;例如:XS_SANTAI_LLJ_SSLL_FFJ_01_00_00
- 其中匹配出的数据 FFJ_01 就为设备的id,表示风房机01号设备
- 构建好数据进行数据上报
流程图





