更新时间:2024-09-02 GMT+08:00
分享

OT数采配置

添加数采模板

数采模板是描述数采配置项的元数据,数采配置包括数据源配置元数据、点位采集配置元数据。当用户添加自定义数采应用时,可通过添加自定义数采模板完成元数据的定义。

应用数据源模板导入

数据源模板描述了数据源配置项的元数据,用户在配置数据源之前,需要先导入数据源模板。IoT边缘服务当前已经预置通用数据源模板,可直接使用,系统也支持用户自定义导入模板。以下为用户添加自定义模板的详细流程及关键配置信息解释。

  1. 访问IoT边缘,单击“管理控制台”进入IoT边缘控制台。
  2. 在左侧导航栏选择边缘节点 > 应用管理进入页面,
  3. 选择 驱动应用 > 数采模板管理 > 添加数采模板

  4. 添加文件,单击“确认”。

    • 本地准备一份数采模板文件,文件内容合规。
    • IoT边缘云平台当前已经预制多个业界主流通用数采模板,可以通过导入通用模板后使用。
    • 支持用户自定义导入模板,导入模板后缀.json,满足json格式规范,样例及字段解释如下:

      示例

      {
      	"tpl_id": "sys_general_modbus_tcp",
      	"name": "ModbusTcp通用数采模板",
      	"description": "ModbusTcp通用数采模板",
      	"datasource_meta": {
      		"config_tabs": [{
      				"key": "connection_info",
      				"name": "连接信息",
      				"description": "连接信息",
      				"type": "object",
      				"config_items": [{
      					"key": "endpoint",
      					"name": "服务端点",
      					"description": "服务完整URL",
      					"data_type": "string",
      					"required": true,
      					"crypted": false,
      					"max_length": 128,
      					"example": "127.0.0.1:502"
      				}]
      			},
      			{
      				"key": "array_info",
      				"name": "组配置信息",
      				"description": "组配置信息",
      				"type": "array",
      				"quantity": 20,
      				"config_items": [{
      						"key": "slave_id",
      						"name": "从站号",
      						"description": "从站号",
      						"data_type": "int",
      						"required": false,
      						"crypted": false,
      						"max_length": 256,
      						"example": 1
      					},
      					{
      						"key": "coil_status_valid_address",
      						"name": "线圈有效地址范围",
      						"description": "线圈有效地址范围",
      						"data_type": "string",
      						"required": false,
      						"crypted": false,
      						"max_length": 65535,
      						"example": "0x0-0x10,0x1a-0x2f"
      					},
      					{
      						"key": "input_status_valid_address",
      						"name": "输入状态有效地址范围",
      						"description": "输入状态有效地址范围",
      						"data_type": "string",
      						"required": false,
      						"crypted": false,
      						"max_length": 65535,
      						"example": "0x0-0x10,0x1a-0x2f"
      					},
      					{
      						"key": "holding_registers_valid_address",
      						"name": "保持寄存器有效地址范围",
      						"description": "保持寄存器有效地址范围",
      						"data_type": "string",
      						"required": false,
      						"crypted": false,
      						"max_length": 65535,
      						"example": "0x0-0x10,0x1a-0x2f"
      					},
      					{
      						"key": "input_registers_valid_address",
      						"name": "输入寄存器有效地址范围",
      						"description": "输入寄存器有效地址范围",
      						"data_type": "string",
      						"required": false,
      						"crypted": false,
      						"max_length": 65535,
      						"example": "0x0-0x10,0x1a-0x2f"
      					},
      					{
      						"key": "byte_swap",
      						"name": "寄存器高低位交换",
      						"description": "寄存器高低位交换",
      						"data_type": "bool",
      						"required": false,
      						"crypted": false,
      						"max_length": 256,
      						"default": false,
      						"example": true
      					},
      					{
      						"key": "register_swap",
      						"name": "寄存器顺序交换",
      						"description": "寄存器顺序交换",
      						"data_type": "bool",
      						"required": false,
      						"crypted": false,
      						"max_length": 256,
      						"default": false,
      						"example": true
      					}
      				]
      			}
      		],
      		"default_values": {
      			"drivername": "ModbusTcp"
      		}
      	},
      	"point_meta": {
      		"data_type_enums": [
      			"bool",
      			"short",
      			"ushort",
      			"int",
      			"uint",
      			"long",
      			"ulong",
      			"float",
      			"double"
      		],
      		"config_items": [{
      				"key": "slave_id",
      				"name": "从站号",
      				"description": "modbus传感器从站号",
      				"data_type": "int",
      				"required": true,
      				"crypted": false,
      				"max_length": 256,
      				"example": 1
      			},
      			{
      				"key": "register_type",
      				"name": "寄存器类型",
      				"description": "寄存器类型",
      				"data_type": "string",
      				"required": true,
      				"crypted": false,
      				"max_length": 256,
      				"enum_value": "Coil_Status|Input_Status|Holding_Registers|Input_Registers",
      				"example": "Coil_Status"
      			},
      			{
      				"key": "register_address",
      				"name": "起始地址",
      				"description": "寄存器起始地址",
      				"data_type": "string",
      				"required": true,
      				"crypted": false,
      				"max_length": 256,
      				"example": "0x0"
      			},
      			{
      				"key": "cycle",
      				"name": "采集周期",
      				"description": "点位采集周期",
      				"data_type": "int",
      				"required": true,
      				"crypted": false,
      				"max_length": 65535,
      				"example": 10000
      			}
      		]
      	}
      }
      表1 OT数采模板

      key

      类型

      描述

      tpl_id

      String

      数采模板标识,租户下唯一

      pattern: '^[a-zA-Z0-9_-]*$'

      1-64。

      name

      String

      数据源模板名称,支持中英文

      1-64。

      description

      String

      数据源模板描述,支持中英文,0-128。

      datasource_meta

      point_meta

      Object

      Object

      数据源配置元数据

      点位采集配置元数据(内可配置data_typr_enums用来限制点位数据类型)。

      表2 datasource_meta

      key

      类型

      描述

      config_tabs

      Array

      数据源配置表格列表。

      default_values

      Object

      数据源默认的值,通常用于描述默认的驱动协议。

      表3 config_tabs

      key

      类型

      描述

      key

      String

      数据源配置表格键值,pattern: ‘connection_info|collection_paras’。

      name

      String

      数据源配置表格名称,1-64。

      description

      String

      描述,0-255。

      config_items

      Array

      配置项列表。

      type(非必填)

      String

      配置表类型,可为“object”或“array”,默认为“object”,为array”时可传输多组配置项列表。

      quantity(非必填)

      Int

      配置项列表组数量,当配置表类型为“array时有效”。

      表4 config_items

      key

      类型

      描述

      key

      String

      配置项key,1-32。

      name

      String

      默认项名称,1-64。

      description

      String

      配置项描述,0-128。

      data_type

      String

      配置项类型,受限于“data_type_enum”(非必填),支持short|ushort|int|int64|uint|long|ulong|float|double|bool。

      required

      Boolean

      配置项是否必传项。

      crypted

      Boolean

      配置项是否加密。

      max_length

      Integer

      当data_type= string时配置有效,校验输入的字符串最大长度。

      example

      String

      配置项举例,值在界面输入框作为示例灰色显示,0-256。

      enum_value(非必填)

      String

      配置项枚举量,可生成下拉框,减少手工输入错误。

      表5 default_values

      key

      类型

      描述

      drivername

      String

      用于描述默认的驱动协议,如OPCUA。

创建数采连接

  1. 访问IoT边缘,单击“管理控制台”进入IoT边缘控制台。
  2. 在左侧导航栏选择“边缘节点 > 节点管理”,节点名称选择“test_IoT10”进入页面。
  3. 在左侧导航栏选择数采配置 > 创建数采连接

  4. 填写“数采连接参数”后单击“确认”保存,此时配置仅在云平台存在,未下发到边侧,此时数采连接的“同步状态”为“待同步”。

    • 通道标识:ModbusTCP。
    • 通道名称:ModbusTCP。
    • 驱动模块:sys_ot_dc_modbus_tcp。
    • 服务端点:模拟器或Modbus服务器网关的ip地址+端口号,中间用“:”分隔,如“127.0.0.1:502”(半角)。
    • 配置信息:用于配置从站的寄存器地址可用范围与寄存器顺序等信息,共可以添加20组。不填写配置信息代表默认对应从站点位映射地址全部有效,同时对应从站字节序与寄存器顺序默认为大端。

      表6 配置信息说明

      配置项

      说明

      从站号

      配置项的从站号,范围0-255,需唯一。

      线圈有效地址范围

      地址量为十六进制,格式“0x”+地址量,起始地址与结束地址用“-”连接,地址范围间用“,”分隔,范围不可重叠。例如“0x0-0x20,0x2a-0xc5,0xd0-0xff”(半角)。

      输入状态有效地址范围

      地址量为十六进制,格式“0x”+地址量,起始地址与结束地址用“-”连接,地址范围间用“,”分隔,范围不可重叠。例如“0x0-0x20,0x2a-0xc5,0xd0-0xff”(半角)。

      保持寄存器有效地址范围

      地址量为十六进制,格式“0x”+地址量,起始地址与结束地址用“-”连接,地址范围间用“,”分隔,范围不可重叠。例如“0x0-0x20,0x2a-0xc5,0xd0-0xff”(半角)。

      输入寄存器有效地址范围

      地址量为十六进制,格式“0x”+地址量,起始地址与结束地址用“-”连接,地址范围间用“,”分隔,范围不可重叠。例如“0x0-0x20,0x2a-0xc5,0xd0-0xff”(半角)。

      寄存器高低位交换

      一个保持寄存器或输入寄存器对应2字节的寄存器空间,配置该项为true则交换对应寄存器内字节顺序。例如“byte1,byte2”交换后顺序为“byte2,byte1”。该项配置仅对32位及以上的数据有效。

      寄存器顺序交换

      Modbus协议默认为大端,配置该项为true则交换对应寄存器间顺序。例如“r1,r2,r3,r4”交换后顺序为“r4,r3,r2,r1”。该项配置仅对32位及以上的数据有效。

      服务端点:填写Modbus服务器所在的网关地址,本实验中为准备数据源处的Modbus salve 模拟器。

      寄存器高低位交换、寄存器顺序交换:Modbus协议默认寄存器顺序为大端,高低位交换与顺序交换同时配置为true时,数据部分传输顺序变为小端模式。以64bits的数据底层字节顺序为“0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8”为例,配置后数据转换结果如表7

      未添加配置信息,默认所有地址范围有效且寄存器顺序为大端模式。可以以从站为单位配置对应有效地址范围与寄存器顺序。

      表7 寄存器数据交换配置表

      配置

      数据顺序展示

      高低位交换false,顺序交换false(原始数据)

      0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8

      高低位交换true,顺序交换false

      0x2,0x1,0x4,0x3,0x6,0x5,0x8,0x7

      高低位交换false,顺序交换true

      0x7,0x8,0x5,0x6,0x3,0x4,0x1,0x2

      高低位交换true,顺序交换true

      0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1

添加点位映射

将点位上报转换为设备属性上报,将设备属性读写转换为点位读写操作,将设备命令转化为点位写操作。

  1. 访问IoT边缘,单击“管理控制台”进入IoT边缘控制台。
  2. 在左侧导航栏选择“边缘节点 > 节点管理”,节点名称选择“test_IoT10”进入页面。
  3. 在左侧导航栏选择数采配置 > 选择对应的数采连接

  4. 单击“添加点位”在“添加点位映射”弹窗中填写配置信息,如表8所示,然后单击“确认”。

    表8 添加点位映射

    基本信息

    点位标识

    点位的唯一标识。

    点位名称

    按照规范填写。

    设备ID

    边缘设备页签里添加设备的ID。

    点位数据类型

    当前支持如下数据类型:

    int(整型)

    uint(无符号整型)

    short(短整型)

    ushort(无符号短整型)

    long(长整型)

    ulong(无符号长整型)

    bool(布尔类型)

    float(单精度浮点型)

    double(双精度浮点型)

    取值范围:

    -2147483648~2147483647

    0~4294967295

    -32768~32767

    0~65535

    -2147483648~2147483647

    0~4294967295

    true/false

    -3.4*10^38~+3.4*10^38

    -1.7*10^-308~1.7*10^308

    设备属性

    设备属性由物模型中service_id/property_name格式构成。

    采集配置

    从站号

    点位所属从站号,范围0-255。

    寄存器类型

    点位对应寄存器类型,枚举字符串值,取值范围如右侧框。

    Coil_Status|Input_Status|Holding_Registers|Input_Registers

    起始地址

    点位对应数据起始地址,十六进制,格式:“0x”+(地址量)。

    例如:“0xa3”

    采集周期

    点位采集周期,最小200ms,低于200ms则默认为200ms。

    范围0-65535

    1. 不同点位请勿配置同一设备的相同属性。

    2. 同一个设备请勿配置在多个数采连接下。

  5. 单击“下发配置”,把点位配置下发至边缘侧。配置下发成功后启用通道,可以看到通道连接状态变为“已连接”,此时数采连接的“同步状态”为“已同步”。

    • 修改点位信息后需重新单击下发配置,配置才会生效。
    • 模块的运行状态由启用状态决定,当启用了数采连接后,模块会显示为运行中。

附录:批量导入/导出点位映射

批量导入点位映射

  1. 在左侧导航栏选择“边缘节点 > 节点管理”,节点名称选择“test_IoT10”进入页面。
  2. 在左侧导航栏选择数采配置->对应的连接通道。
  3. 单击“导入点位”选择”批量添加”,单击“下载模板文件”,打开“模板文件”内容填写。

  4. 选择“添加文件”导入步骤3下载的文件后,单击“确认”完成批量导入点位映射。

批量导出点位映射

  1. 在左侧导航栏选择“边缘节点 > 节点管理”,节点名称选择“test_IoT10”进入页面。
  2. 在左侧导航栏选择应用模块 > 数采配置 > 对应的连接通道
  3. 单击“导出点位”完成批量导出点位。

相关文档