DT格式说明

主题

  • 上行主题:diting/v1/devices/{ESN}/data/rjson

  • 下行主题:diting/v1/devices/{ESN}/command/rjson

  • 案例diting/v1/devices/diting/v1/devices/ESN_21500104744EL6000050/command/rjson/data/rjson

一、配置格式

根对象

key value 描述
baseConfig <json对象:表2> 代表南向采集配置信息
taskConfig <json对象:表3> 代表北向任务和北向平台信息
mapSvrConfig <json数组,元素对象:表4> 这里主要是映射到服务地址,服务也是从这里开启

表2:baseConfig对象

key value 描述
equips <json数组,元素对象表2.1> 设备信息,关于南下设备的信息都在这个数组里头
gateway "fj_502" 备用
siteEn "00001" 站号,该网关的站号,也就是对于平台来说,找数据就是 站号.设备id.数据id
id "fj00000001" 备用
type "S_DataInfo" 固定值,代表南向数据采集信息

表2.1:equips对象

key value 描述
equipId "dev101" 设备ID。设备id,每台南下设备都分配一个id,全局唯一,用户自定义,上报数据会用到
equipName "dev101" 设备名称。设备别名,可以同名,只用来显示用,用户自定义
collectConf <json对象表2.1.1> 采集配置
interfaceParams <json对象表2.1.2> 连接配置
properties <json数组,元素对象表2.1.3> 设备的属性信息,也就是数据点,要采集设备的哪些数据点,数据点的信息
protocol <json对象表2.1.4> 用于和设备通讯的参数
表2.1.1:collectConf对象
key value 描述
isRunCmd true 启动。可不设置,默认启动。对这台设备是否运行,也就是你可以配置,但是不运行。
pollingCycleTime_ms 500 采集周期。可不设置,默认500。轮询周期时间,就是通讯完一次所有读数据的时间。若实际通讯200ms,则休息500ms-200ms后再进行下一次通讯周期。若实际通讯501ms,则休息50ms后再下一次周期。
intervalTime_ms 1 通讯间隔时间。可不设置,默认1。通讯与通讯之间的间隔时间,目的是在一个轮询周期内,能调节通讯的频率
isBlockRead true 块读。可不设置,默认块读(false就是点读)。有些例外的,例如(1)IEC104驱动,因为厂站是主动突发的,不需要去读,采集调用该驱动库时,块读可能还没有点读来的快,所以,对于104来说,这里为点读。(2)DLT地址没有块的说法,所以DLT也是点读
isBlockWrite true 块写。可不设置,默认块写
abnormalMax 3 异常允许最大次数。可不设置,异常的允许最大次数,默认1
collectWay "physical" 采集方式,可不设置,默认physical。采集器调用库时的采集方式,枚举型{physical,memory},默认是physical。也就是采集分为物理和内存方式。物理方式,则会防止串包,内存无需考虑串包
isWritePriority true 写优先,可不设置,默认true。如果设置写优先,则会暂停当前采集而转去写数据,写完数据再继续采集。反之,直到当前周期采集完再去写。
表2.1.2:interfaceParams对象
key value 描述
link "192.168.1.199:9900" 链接。南下设备的连接参数,可能是IP,可能是串口
physicalInterface "eth0" 物理接口。备用,暂时没用
表2.1.3:properties对象
key value 描述
dataAddress "4x0" 数据地址。设备的内存地址,例如4x0就是modbus设备的内存地址,也叫寄存器地址
authority "RW" 界面没有。对该数据的读写权限,枚举{RW,OW,OR}这三种。可不设置,默认RW,该字段是为了提高效率,如果设置OW,FW,就不读,可能是映射服务写过来的数据。
dataArea "" 数据区域。备用
dataDesc "b1" 描述。数据点的描述
dataDisplay "int16" 数据显示。数据点的类型,枚举,见文章末尾
dataName "b1" 测点别名。数据点的别名
dataUnit "n" 数据单位。数据的单位
id "b1" 测点名。数据的id,跟设备的id一个意思,该设备下唯一,上报时会用到
offset "0" 数据偏移。偏移,也就是kx+b的b
proportion "1" 数据比例。比例,也就是kx+b的k
表2.1.4:protocol对象
key value 描述
libName "ModbusTCP" 库名。该设备的通讯规约,枚举,见文章末尾
params <json对象表2.1.4.1>
表2.1.4.1:params对象
key value 描述
linkPar "1" 地址码。该设备的设备号

表3:taskConfig对象

key value 描述
PlatformPar <json数组,元素对象表3.1> 北向平台
gateway "fj_502" 备用
id "fj00000001" 备用
tasks <json数组,元素对象表3.2> 北向任务
type "N_Task" 固定值,代表北向信息

表3.1:PlatformPar对象

key value 描述
PlatformIp "125.77.188.90:40025 目标地址IP。mqtt的连接目标地址和端口号
passwd "admin" 密码。mqtt连接的密码
tasks" ["t1,t2"] 任务ID。任务。可以带多个任务。也就是该mqtt连接会处理的数据都是这些任务得来的。
type "SC-MQTT-DEFAULT" 类型。上报的格式说明,支持多种格式。也是枚举,见文章末尾
user "admin" 用户。mqtt连接用户名
pushConf <json对象表3.1.1>
表3.1.1:pushConf对象
key value 描述
isRun true 启动。可不设置,默认启用。是否启动。也就是mqtt是否要启动,可以配置好不启动
isUseResumeBrokenTransfer true 使用断点续传。可不设置,默认启用。是否使用断点续传功能。

表3.2:tasks对象

key value 描述
dataId_entire <json对象表3.2.1> 该任务所要带的数据点,每个数据点都可以独立设置上报模式
taskId "t1" 任务ID。任务id,每个任务都有一个id,北向平台会选择哪些任务,就是通过这个任务id
taskType "t1" 任务说明
uploadMode "timer 60 || change 10" 上传模式。若dataId_entire里面的uploadMode未设置,那么就采用这个上传模式
uploadParam1 "6" 备用
uploadParam2 "n" 备用
uploadParam3 "n" 备用
表3.2.1:dataId_entire对象
key value 描述
equipId "dev101" 设备ID。对应南向采集的设备id
idInfo <json数组,元素对象表3.2.1.1>
表3.2.1.1:idInfo数组
key value 描述
id "b1" 测点名。对应南向采集的数据id
uploadMode "timer 60 || change 10" 上传模式。比如这里的定时60s和变化死去超过10就上报

表4:mapSvrConfig对象

key value 描述
type "MapServer" 固定字符,和前面的南向数据信息、北向任务、北向数据、南向命令并列
mapServerType "MS_Modbus" MS_Modbus、MS_OpcUA、MS_EdgeComputing 这三种类型服务,分别对应界面的MODBUS OPCUA ADOGOS
ID "1" 服务ID。一个串口(端口)最多就一个ID,一个ID可以同时被串口、tcp、udp都拥有。这个信息是最基本的准则
interfaces <json对象表4.1>
mapConf <json对象表4.2>
dataMaps <json数组,元素对象表4.3> 数据映射,也叫通道映射,把服务地址和通道数据进行映射
devStatusMaps <json数组,元素对象表4.4> 设备状态映射。每台设备都有状态,状态映射到服务地址
taskMaps <json数组,元素对象表4.5> 任务映射,单向的,扫描完标签值判断后,把服务地址映射给任务。也就是标签触发的既可以用modbus服务地址,也可以用边缘计算服务地址,后续也可以用opc iec104服务地址。

表4.1:interfaces对象

key value 描述
serial <json对象表4.1.1>
tcp <json对象表4.1.2>
udp <json对象表4.1.3>
sharedMem <json对象表4.1.4>

表4.1.1:serial对象

key value 描述
listen "COM1" 只设置串口名称,参数由别的软件设置,此只负责打开,因为该口是服务,硬件由别的软件统一设置。也可设置波特率等,"COM1,9600,8,1,N",此情况要设置参数。
isRun true 默认启动,默认可不设置

表4.1.2:tcp对象

key value 描述
listen "127.0.0.1:502" 串口/端口
customerNum 30 客户连接数量,也就是开启多少个线程
isRun false 是否启动

表4.1.3:udp对象

key value 描述
listen "503" 即可只设置端口号,默认ip=127.0.0.1。也可以设置ip:port形式
customerNum 13 客户数,即线程池,若设置13个线程池,当客户端连接数<=13,则每个客户端都对应1个线程在服务。当第14个客户端连接,也支持,只是和其中一个客户端共用一个线程
isRun false

表4.1.4:sharedMem对象

key value 描述
isRun false 是否启动

表4.2:mapConf对象

key value 描述
pollingCycleTime_ms 500 FW时、任务映射时,该周期。OR RW的周期是取决于采集周期

表4.3:dataMaps对象

key value 描述
addr "4x0" AdogOS地址。服务的起始地址,例如,数据类型为int32,这对于modbus来说,就需要两个寄存器地址。
quality "1x0" 质量。数据质量值,当方向为OR RW才有此属性。当方向为OW FW,该属性没用,为空就行。因为该值是存储映射过来的质量
display "int16" 数据类型。数据类型值,经过kx+b计算之后,都强制转换该类型给服务地址。也就是说,设备的类型不一定和该类型一致
direction "OR" 映射方向。数据映射方向,OR RW OW FW 这4种映射方向。(1)OR:只读,从设备只读到服务; (2)RW:读写,一般情况下从设备读到服务,当服务发生了来自客户端的写事件时,才写到设备;(3)OW:只写,从服务写数据到设备。(4)FW:强制写,从服务一直写数据到设备,是一直不断写,按照周期写,比如500ms写一次
k "1" 比例。kx+b的k
b "0" 偏置。kx+b的b
source <json对象表4.3.1> 数据来源
表4.3.1:source对象
key value 描述
equipId "dev101" 设备ID。对应南向设备id
id "b1" 数据ID。对应南向数据id

表4.4:devStatusMaps对象

key value 描述
addr "3x0" Adogos地址
source <json对象表4.4.1> 数据来源
表4.4.1:source对象
key value 描述
equipId "dev101" 设备ID。对应南向设备id

表4.5:taskMaps对象

key value 描述
addr "DI1" dogos地址。数据地址
display "bool" 数据类型
k "1" 比例。kx+b的k
b "0" 偏置。kx+b的b
taskId "t1" 北向任务ID。对应北向任务id

内容

{
    "baseConfig":{ //关键字,代表南向采集配置信息
        "equips":[ //设备信息,关于南下设备的信息都在这个数组里头
            {
                "equipId":"dev101",                //设备ID。设备id,每台南下设备都分配一个id,全局唯一,用户自定义,上报数据会用到
                "equipName":"dev101",              //设备名称。设备别名,可以同名,只用来显示用,用户自定义
                "collectConf":{                    //采集配置
                    "isRunCmd":true,               //启动。可不设置,默认启动。对这台设备是否运行,也就是你可以配置,但是不运行。
                    "pollingCycleTime_ms":500,     //采集周期。可不设置,默认500。轮询周期时间,就是通讯完一次所有读数据的时间。若实际通讯200ms,则休息500ms-200ms后再进行下一次通讯周期。若实际通讯501ms,则休息50ms后再下一次周期。
                    "intervalTime_ms":1,           //通讯间隔时间。可不设置,默认1。通讯与通讯之间的间隔时间,目的是在一个轮询周期内,能调节通讯的频率
                    "isBlockRead":true,            //块读。可不设置,默认块读(false就是点读)。有些例外的,例如(1)IEC104驱动,因为厂站是主动突发的,不需要去读,采集调用该驱动库时,块读可能还没有点读来的快,所以,对于104来说,这里为点读。(2)DLT地址没有块的说法,所以DLT也是点读
                    "isBlockWrite":true,           //块写。可不设置,默认块写
                    "abnormalMax":3,               //异常允许最大次数。可不设置,异常的允许最大次数,默认1
		    "collectWay":"physical",       //采集方式,可不设置,默认physical。采集器调用库时的采集方式,枚举型{physical,memory},默认是physical。也就是采集分为物理和内存方式。物理方式,则会防止串包,内存无需考虑串包
		    "isWritePriority":true         //写优先,可不设置,默认true。如果设置写优先,则会暂停当前采集而转去写数据,写完数据再继续采集。反之,直到当前周期采集完再去写。
                },
                "interfaceParams":{
                    "link":"192.168.1.199:9900",   //链接。南下设备的连接参数,可能是IP,可能是串口
                    "physicalInterface":"eth0"     //物理接口。备用,暂时没用
                },
                "properties":[                     //设备的属性信息,也就是数据点,要采集设备的哪些数据点,数据点的信息
                    {
                        "dataAddress":"4x0",       //数据地址。设备的内存地址,例如4x0就是modbus设备的内存地址,也叫寄存器地址
                        "authority": "RW",        //界面没有。对该数据的读写权限,枚举{RW,OW,OR}这三种。可不设置,默认RW,该字段是为了提高效率,如果设置OW,FW,就不读,可能是映射服务写过来的数据。
                        "dataArea":"",            //数据区域。备用
                        "dataDesc":"b1",          //描述。数据点的描述
                        "dataDisplay":"int16",    //数据显示。数据点的类型,枚举,见文章末尾
                        "dataName":"b1",          //测点别名。数据点的别名     
                        "dataUnit":"n",           //数据单位。数据的单位
                        "id":"b1",                //测点名。数据的id,跟设备的id一个意思,该设备下唯一,上报时会用到
                        "offset":"0",             //数据偏移。偏移,也就是kx+b的b
                        "proportion":"1"          //数据比例。比例,也就是kx+b的k
                    },
                    {
                        "dataAddress":"4x1",
                        "authority": "RW",
                        "dataArea":"",
                        "dataDesc":"b2",
                        "dataDisplay":"int16",
                        "dataName":"b2",
                        "dataUnit":"n",
                        "id":"b2",
                        "offset":"0",
                        "proportion":"1"
                    }
                ],
                "protocol":{                   //用于和设备通讯的参数
                    "libName":"ModbusTCP",     //库名。该设备的通讯规约,枚举,见文章末尾
                    "params":{
                        "linkPar":"1"         //地址码。该设备的设备号
                    }
                }
            }
        ],
        "gateway":"fj_502",   //备用
        "siteEn":"00001",     //站号,该网关的站号,也就是对于平台来说,找数据就是  站号.设备id.数据id
        "id":"fj00000001",    //备用
        "type":"S_DataInfo"   //固定值,代表南向数据采集信息
    },
    "taskConfig":{ //关键字,代表北向任务和北向平台信息
        "PlatformPar":[                               //北向平台
            {
                "PlatformIp":"125.77.188.90:40025",   //目标地址IP。mqtt的连接目标地址和端口号
                "passwd":"admin",                     //密码。mqtt连接的密码
                "tasks":[                             //任务ID。任务。可以带多个任务。也就是该mqtt连接会处理的数据都是这些任务得来的。
                    "t1"                              //任务id和设备id,数据id一个意思,这个从此处往下数28行"taskId":"t1"得来的
                ],
                "type":"SC-MQTT-DEFAULT",             //类型。上报的格式说明,支持多种格式。也是枚举,见文章末尾
                "user":"admin",                       //用户。mqtt连接用户名
                "pushConf":{                          
                    "isRun":true,                      //启动。可不设置,默认启用。是否启动。也就是mqtt是否要启动,可以配置好不启动
                    "isUseResumeBrokenTransfer":true   //使用断点续传。可不设置,默认启用。是否使用断点续传功能。
                }
            }
        ],
        "gateway":"fj_502", //备用
        "id":"fj00000001", //备用
        "tasks":[                                     //北向任务   
            {
                "dataId_entire":[                     //该任务所要带的数据点,每个数据点都可以独立设置上报模式     
                    {
                        "equipId":"dev101",          //设备ID。对应南向采集的设备id
                        "idInfo":[
                            {
                                "id":"b1",           //测点名。对应南向采集的数据id
                                "uploadMode":"timer 60 || change 10"  //上传模式。比如这里的定时60s和变化死去超过10就上报
                            },
                            {
                                "id":"b2",
                                "uploadMode":"timer 60 || change 10"
                            }
                        ]
                    }
                ],
                "taskId":"t1",                     //任务ID。任务id,每个任务都有一个id,北向平台会选择哪些任务,就是通过这个任务id
                "taskType":"t1",                   //任务说明
                "uploadMode":"timer 60 || change 10", //上传模式。若dataId_entire里面的uploadMode未设置,那么就采用这个上传模式
                "uploadParam1":"6",  //备用
                "uploadParam2":"n",  //备用
                "uploadParam3":"n"   //备用
            }
        ],
        "type":"N_Task"            ////固定值,代表北向信息
    },
    "mapSvrConfig":[                                       //这里主要是映射到服务地址,服务也是从这里开启
        {
            "type":"MapServer",                           // 固定字符,和前面的南向数据信息、北向任务、北向数据、南向命令并列
            "mapServerType":"MS_Modbus",                  // MS_Modbus、MS_OpcUA、MS_EdgeComputing    这三种类型服务,分别对应界面的MODBUS  OPCUA  ADOGOS
            "ID":"1",                                     //服务ID。一个串口(端口)最多就一个ID,一个ID可以同时被串口、tcp、udp都拥有。这个信息是最基本的准则
            "interfaces":{                                //有可能同时开这三种物理方式的服务,例如,对于modbus ID = 1来说,就有可能同时存在串口、tcp、udp服务。
                "serial":{
                    "listen":"COM1",                      //只设置串口名称,参数由别的软件设置,此只负责打开,因为该口是服务,硬件由别的软件统一设置。也可设置波特率等,"COM1,9600,8,1,N",此情况要设置参数。
                    "isRun":true                          //默认启动,默认可不设置
                },
                "tcp":{
                    "listen":"127.0.0.1:502",  //串口/端口
                    "customerNum":30, //客户连接数量,也就是开启多少个线程
                    "isRun":false   //是否启动
                },
                "udp":{
                    "listen":"503",                     //即可只设置端口号,默认ip=127.0.0.1。也可以设置ip:port形式
                    "customerNum":13,                   //客户数,即线程池,若设置13个线程池,当客户端连接数<=13,则每个客户端都对应1个线程在服务。当第14个客户端连接,也支持,只是和其中一个客户端共用一个线程
                    "isRun":false
                },
                "sharedMem":{                           //这种情况是用于边缘计算,边缘计算采用的方式的是共存内存而非tcp、udp或串口
                    "isRun":false  //是否启动
                }
            },
            "mapConf":{
                "pollingCycleTime_ms":500    //FW时、任务映射时,该周期。OR RW的周期是取决于采集周期
            },
            "dataMaps":[                     //数据映射,也叫通道映射,把服务地址和通道数据进行映射
                {
                    "addr":"4x0",            //AdogOS地址。服务的起始地址,例如,数据类型为int32,这对于modbus来说,就需要两个寄存器地址。
                    "quality":"1x0",         //质量。数据质量值,当方向为OR  RW才有此属性。当方向为OW FW,该属性没用,为空就行。因为该值是存储映射过来的质量
                    "display":"int16",       //数据类型。数据类型值,经过kx+b计算之后,都强制转换该类型给服务地址。也就是说,设备的类型不一定和该类型一致
                    "direction":"OR",        //映射方向。数据映射方向,OR RW OW FW 这4种映射方向。(1)OR:只读,从设备只读到服务; (2)RW:读写,一般情况下从设备读到服务,当服务发生了来自客户端的写事件时,才写到设备;(3)OW:只写,从服务写数据到设备。(4)FW:强制写,从服务一直写数据到设备,是一直不断写,按照周期写,比如500ms写一次
                    "k":"1",       //比例。kx+b的k
                    "b":"0",       //偏置。kx+b的b
                    "source":{               //数据来源
                        "equipId":"dev101",  //设备ID。对应南向设备id
                        "id":"b1"            //数据ID。对应南向数据id
                    }
                }
            ],
            "devStatusMaps":[       //设备状态映射。每台设备都有状态,状态映射到服务地址
                {
                    "addr":"3x0",   //Adogos地址。
                    "source":{
                        "equipId":"dev101" //设备ID。
                    }
                }
            ],
            "taskMaps":[               //任务映射,单向的,扫描完标签值判断后,把服务地址映射给任务。也就是标签触发的既可以用modbus服务地址,也可以用边缘计算服务地址,后续也可以用opc iec104服务地址。
                {
                    "addr":"DI1",   //Adogos地址。数据地址
                    "display":"bool", //数据类型
                    "k":"1",   //比例。kx+b的k
                    "b":"0",   //偏置。kx+b的b
                    "taskId":"t1"  //北向任务ID。对应北向任务id
                }
            ]
        }
    ]
}

(1)下发

{
	"type":"S_DataInfo,N_Task",                           //下发配置类型,根据下发内容(两大块 : 南向数据信息 和 北向任务, 以逗号分开)
	"totalCount":10,                                      //总共m包
	"index":1,                                            //第n包, n(1到totalCount)
	"messageId":123,                                      //msgId
        "content":"{\"baseConfig\":{....."    (配置内容分包)    //暂定100k大小
}

(2)响应

{
	"type":"S_DataInfo,N_Task",
	"respond":"succeed",//fail,overTime
	"messageId":"123",
	"index":1, 
	"msg":"下发成功"
}

注意:分包下发时,每次分包下载网关都需要响应,响应之后才继续发下一包,否则判定失败
备注:下一次升级,记得加校验码

二、命令格式(写值、设备启停、召唤(设备状态、数据、配置、软件版本号,其余目标平台mqtt状态信息))

(1)命令

{
	"type": "S_Control",
	"cmd": "devsCmd",//writeData, devsCmd, callData, callEquipSatus, callConf, callVersion, callDataPlatformStatus, callLog。召唤数据callData、召唤设备状态callEquipSatus、召唤平台状态callDataPlatformStatus等,都是最新数据最新状态。
	"messageId":"123",
	"param":[{
		//根据cmd进行填充
	}]


	//例子1.1:devsCmd  1个设备的启停
	"param":{
		"equipId":"dev101",
		"isStart":true
	}
	//例子1.2:devsCmd  多个设备的启停
	"param":[{
		"equipId":"dev101",
		"isStart":true
	},{
		"equipId":"dev102",
		"isStart":false
	}]

	//例子2.1:writeData  1个数据的写
	"param":{
		"equipId":"dev101",
		"id":"b1",
		"value":"20",
		"dataDisplay":"int16"
	}
	//例子2.2:writeData  多个数据的写
	"param":[{
		"equipId":"dev101",
		"id":"b1",
		"value":"20",
		"dataDisplay":"int16"
	},{
		"equipId":"dev101",
		"id":"b2",
		"value":"21",
		"dataDisplay":"uint32"
	},{
		"equipId":"dev102",
		"id":"b1",
		"value":"21.432",
		"dataDisplay":"float"
	}]

	//例子3.1:callData 1台设备数据召唤
	"param":{
		"equipId":"dev101"
	}
	//例子3.2:callData 多台设备数据召唤
	"param":[{
		"equipId":"dev101"
	},{
		"equipId":"dev201"
	}]

	//例子 4 :  callEquipSatus
	"param":

	//例子 5  : callDataPlatformStatus
	"param":

	//例子 6 : callVersion
	"param":

	//例子 7 : callConf
	"param":

	//例子 8 : callLog
	"param":

}

(2)响应

{
	"type":"S_Control",
	"cmd": "callData",
	"messageId":"123",
	"respond":"succeed",//枚举 succeed ,fail, overTime
	"msg":"设备写值成功",//中文提示,可以忽略
	"data":{}

	//例子1 :devsCmd
	"data":[{
		"equipId":"dev101",
		"isStart":true
	},{
		"equipId":"dev102",
		"isStart":false
	}]

	//例子2 :writeData
	"data":{}

	//例子3 :callData
	"data":{
		"equips":[{
			"equipId":"001",
			"state":"good"
		}],
		"data":[{
			"dataId":"dev101_b1",
			"dataName":"KKS01",
			"value":"220",
			"timeStamp":"2022-03-14 08:48:00",
			"quality":"Good"
		},
		{
			"dataId":"dev102_02",
			"dataName":"KKS01",
			"value":"10"
			"timeStamp":"2022-03-14 08:48:00",
			"quality":"Good"
		}]
	}

	//例子4 :callEquipSatus       //召唤设备状态
	"data":[{
		"equipId":"dev101",   //设备id
		"state":"good",       //设备状态质量
		"isStart":false,      //设备是否启动采集
		"dataIdQualityNum":{  //该设备下的数据质量个数
			"good":100,
			"bad":0
		}	
	},
	{
		"equipId":"dev102",
		"state":"good",
		"isStart":true,
		"dataIdQualityNum":{
			"good":100,
			"bad":0
		}
	}],

	//例子5 :callDataPlatformStatus
	"data":[{
		"PlatformIp":"125.77.188.90:40025",
		"type":"HN-MQTT-BJ"
		"state":"good"
	},{
		"platformId":"125.77.188.91:40025",
		"state":"bad"
	}]

	//例子6 :callVersion
	"data":{
		"existFunction": "具备数据快速采集恢复",
		"repairedBug": "修复了xxxx问题",
		"version": "v1.9.0.0 20220704"
	}

	//例子 7 callConf
	"data":{
		"type":"S_DataInfo,N_Task",
		"totalCount":10,
		"index":1,
		"content":"{"baseConfig":{....." 
	}

	//例子 8 callLogCurWarning
	"data":{
		"count":123,
		"warning":["1111","2222"]
	}
}

备注:召唤配置时callConf,是分包的,流程是这样的
1:云端请求召唤配置命令
2:网关作出响应,主动发送第n包(totalCount,index,content等这些信息)
3:云端收到网关的,作出响应,
4:网关判断云端的反馈情况,然后重复第2步发送下一包数据 v网关和云端的响应格式是一样的,共用。

//—————————————————————————————————————————————–

三、上报数据格式

{
	"type":"N_data",
	"equips":[
		{
			"equipId":"dev101",
			"state":"good"
		},
		{
			"equipId":"dev102",
			"state":"good"
		}],
	"data":[
		{
			"dataId":"dev101_b1",
			"dataName":"KKS01",
			"value":"220",
			"timeStamp":"2022-03-14 08:48:00",
			"quality":"Good"
		},
		{
			"dataId":"dev101_02",
			"dataName":"KKS01",
			"value":"10"
			"timeStamp":"2022-03-14 08:48:00",
			"quality":"Good"
		},
		{
			"dataId":"dev101_03",
			"dataName":"KKS02",
			"value":"222"
			"timeStamp":"2022-03-14 08:48:00",
			"quality":"Good"
		},
		{
			"dataId":"dev101_04",
			"dataName":"KKS03",
			"value":"11"
			"timeStamp":"2022-03-14 08:48:00",
			"quality":"Good"
		}
	]
}

四、参数值

1、平台类型说明:
DT-MQTT/HTTP/UDP-DEFAULT(谛听标准默认上报数据格式,预留)
DT-MQTT-DEBUG (谛听格式,文件见《DT-MQTT-DEBUG格式V2.1.txt》)
HN-MQTT-BJ (华能用得上报数据格式,文件见《HN-MQTT-BJ格式V2.n.txt》)
SC-MQTT-DEFAULT(数采上报数据格式,文件见《SC-MQTT-DEFAULT格式V2.n.txt》)
WG-MQTT-DEFAULT(预留,用于动态库)

选项内容

{
	"physicalInterface":"eth0",//物理接口选项如下
	eth0
	eth1
	eth2
	eth3
	eth4
	eth5
	eth6
	eth7
	com1
	com2
	com3
	com4
	com5
	com6
	com7
	com8
}
{
	"dataDisplay":"int16",//数据类型如下选项
	bool
	int8
	uint8
	int16
	uint16
	int32
	uint32
	float
	int64
	uint64
	double
	string
	int16_AB
	int16_BA
	uint16_AB
	uint16_BA
	int32_ABCD
	int32_BADC
	int32_CDAB
	int32_DCBA
	uint32_ABCD
	uint32_BADC
	uint32_CDAB
	uint32_DCBA
	float_ABCD
	float_BADC
	float_CDAB
	float_DCBA
	double_ABCDEFGH
	double_BADCFEHG
	double_GHEFCDAB
	double_HGFEDCBA
}
{
	"libName":"libModbusRTU"//协议库选项
	ADogOS
	ModbusTCP
	ModbusRTU
	Siemens_S7
	Siemens_PPI
	Omron_FinsTCP
	Omron_HostLnk
	PineControl
	DTL645_2007
	DLT645_1997
	Fatek
	Mitsubishi_FxProgram
	IEC104
}
{
	"linkpar":"1"//驱动配置参数:
	ModbusTCP	设备地址:1
	DTL645_2007	设备地址:000000000000
}

上传策略

{
	1、定时 timer 10
	2、变化 change 10
	3、高低阈值 HLlimit 100/N 10/N 5  //大于100或小于10 上报,如果满足条件时每5s上一次
	4、标签触发:是modbus服务的地址或边缘计算的地址进行触发的,这服务在映射服务里面的
	           label 1.DI1/DI1/1x1/1.1x1 up/down/reversal
	
	            timer 10 || change 10 || label DI1 up
}