波盾智控网关-BD97
硬件参数
参数名称 | 说明 |
4G 速率 | LTE FDD Rel.13:10Mbps DL/5Mbps UL LTE TDD Rel.13:8.2Mbps DL/3.4Mbps UL |
GPRS 速率 | GPRS:85.6Kbps DL/85.6Kbps UL |
RS485 | 1路485,保护设计 |
指示灯 | 电源指示×1,网络指示×1,运行指示×1,数据通讯×1 |
SIM卡槽 | Nano SIM卡槽×1 |
SMA接口 | 2个SMA接口,左4G天线×1和右GNSS天线×1 |
接线端子 | 2EDG-3.81mm,5P×1 |
按键 | 恢复出厂按键×1 |
电源功耗 | DC 9~36V,12V@128mA |
工作温度 | -30℃~70℃ |
工作湿度 | 5%~95%相对湿度(非冷凝) |
尺寸重量 | 高100×宽45×厚40毫米,370克(不含配件、包装) |
配件 | 4G天线×1,GNSS天线×1; 2EDG-3.81mm,5P端子×1; DN35导轨背卡×1。 |
通讯协议
■ BD97为标准Modbus配置模式,Modbus点表配置好后,会把Modbus点表采集并通过Mqtt协议上传到物联网平台。同时还支持的协议有电表DLT645-2007,宇电温控器AIBUS。
■ 通过Modbus RTU协议对接,支持对信捷、西门子、松下、台达、南大傲拓、合信等PLC的采集;
Modbus TCP需要外接网络模块通讯。
配置网关
3.1. 配置工具
3.1.1. 新建配置工程
3.1.2. 打开配置工程
■ 创建模块,填写excel点表;路径:网关配置工具\project\工程名\prj_templates。
■ 添加从设备波特率,站地址等信息。
■ 生成配置文件。
3.2. 物联网平台配置
3.2.1. 创建网关设备产品
■ 创建网关产品,导入物模型,添加子设备。
■ 创建从设备产品,导入物模型添加子设备。
3.2.2. 创建直连设备产品
■ 创建直连产品,导入物模型,添加子设备。
3.3. 本地配置下发
3.3.1. 连接准备
■ 将USB转RS485数据线接入PC。
■ 上位机-“设置”-“串口设置”:
选择串口号,采用默认波特率115200,数据位8,停止位1,校验位None。
3.3.2. 下发准备
■ 上位机-“本地配置下发”,点击“下一步”,进入读秒等待。
■ 将端子插入网关,通电并连接PC;等待上位机进入下发配置界面。
3.3.3. 本地下发配置。
■ 输入网关设备的三元组;再下一步输入子设备三元组(直连设备模式则默认)。
3.3.4. 下发配置。
3.3.5. 重启完成,使网关进入正常工作模式。
3.4. 管理中台配置
3.4.1. 模型配置
■ 输入实例ID,如阿里云IOT实例ID或私有平台ID。
■ 输入物模型ID,如阿里云product key或私有平台product key。
■ 输入物模型名称。
■ 物联网平台物模型如有更新,则需要同步物模型配置。
3.4.2. 模型列表
■ 隐藏不需要显示在前端的模型属性。
3.4.3. 智控配置
■ 模型:选择物模型。
■ 配置版本号:输入配置工具生成配置文件的版本号。
■ 配置名称:输入物模型名称或自定义名称。
■ 是否强制升级:即对已部署的设备是否强制升级。
■ 是否重启:选择“是”。
■ 存储方式:选择“外部FLASH”。
■ 是否默认配置:启用则选择“是”,停用则选择“否”。
■ 上传配置文件:文件名.tar.gz;路径:配置工具\project\工程名称\CFG_OUTPUT。
3.4.4. 激活设备
■ 确认设备插入SIM卡,并通电。
■ 通过小程序扫描设别二维码或条码获取IMEI串号,或手动输入设备IMEI串号。
■ 按照提示选择物模型,并设置别名,添加激活设备。
■ 根据设备当地网络环境情况,约等待3-5分钟。
■ 设备完成下载配置文件并重启后,接入物联网平台。
事件上报
事件上报指网关和子设备断链发生断链,网关、子设备数据产生变化上送或者触发阈值时,网关将对应事件发送到阿里云物模型的事件中,对应的标识符是EdgeAlarm。
4.1. 数据上报格式
■ 事件以事件列表形式上报到云平台,事件上报的物模型数据格式定义如下:
{
"id": "15",
"version": "1.0",
"sys": {
"ack": 1
},
"params": {
"value": {
"EventList": [{
"AlarmType": 9,
"AlarmID": "dev3_0425",
"EventTime": "1619334875000",
"Data": "1"
}]
}
},
"method": "thing.event.EdgeAlarm.post
}
■ 关心value 内的参数,实际业务关心的服务参数,其他字段为基本数据格式
{
"EventList": [{
"AlarmID": "dev3_0425",// 设备名称
"EventTime": "1619334875000",// 发生时间,utc 的毫秒
"AlarmType": 9,// 事件类型:9,表示网关和子设备的通讯状态
"Data": "1"// 事件状态:1,通讯故障发生,0,通讯故障恢复
}]
}
■ 服务器回复网关的数据格式,用户可不关心
{
"code":200,//错误码,200表示正常,其他表示失败
"data": {},//数据内容,默认为空
"id":"15",//复制接收的id
"message":"success",
"method":"thing.event.EdgeAlarm.post",
"version":"1.0"
}
4.2. 事件定义详情
字段 | 说明 | 备注 |
EventList | 事件列表标识符 | 固定 |
AlarmType | 事件类型 | 0:网关相关配置文件异常【网关支持】 1:子设备三元组信息异常,导致子设备上线失败【网关支持】 9:网关和子设备通讯断链【网关支持】 6:数据告警:数据预警和变化上报【网关+子设备均支持】 |
AlarmID | 参数内容 | 当AlarmType=0时,内容: “Config Files ErrorCode ${code}”设备号和三元组参数不对应时发生; 31(00011111B)表示以下4个文件均未配置: 0001网关配置文件异常,高4位0000, 低第1位为1,表示BUS_485_001异常; 低第2位为1,表示BUS_485_002异常; 低第3位为1,表示codes_template异常; 低第4位为1,表示SERVER_CODE异常。 示例: 配置文件BUS_485_001异常,表示为0x11=17(十位制), 则为Config Files ErrorCode 17; 当AlarmType=1时,内容: “devCode_001${Pk} $(Dn) auth invalid”; 001是设备号,PK、DN是三元组中的productkey,deviceName, 若子设备三元组中PK、DN为空时,null来替代; 若子设备三元组中存在参数,但实际上线3次都失败时,PK、DN部分填写实际参数; 当AlarmType=9时,内容:从设备的device_name; 当AlarmType=6时,内容:变化数据的标识符名称(identification),参数来自excel表格中。 |
Data | 仅AlarmID为9、6时有效, 告警内容:1发生,0恢复。 | |
EventTime | 发生时间,utc的毫秒 | Eg:1619334875000 |
属性设置
属性下发界面如下,对应物联网平台SetDeviceProperty接口。属性设置目前仅支持单个属性设置,不支持多个属性同时设置下发。网关固有属性的改变需要通过服务调用来实现,如改变DO的输出状态,网关的配置参数等。
服务调用采用异步接口实现,支持网关、子设备的服务写操作。
5.1. SetDeviceProperty使用说明
因为云端下发属性设置命令和设备收到并执行该命令是异步的,所以调用该接口时,返回的成功结果只表示云端下发属性设置的请求成功,不能保证设备端收到并执行了该请求。即需设备端SDK成功响应云端设置设备属性值的请求,设备属性值才能真正设置成功。
重要:物模型功能定义数据类型为float或double时,对应参数值(即使值为整数)至少携带一位小数位。例如10.0、11.1。
5.2. 调试
您可以在OpenAPI Explorer中直接运行该接口,民去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
5.3. 请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
Action | String | 是 | SetDeviceProperty | 系统规定参数。取值:SetDeviceProperty |
Items | String | 是 | {“Switch”:1,“Color”:“blue”} | 要设置的属性信息,数据格式为JSON。 每个属性信息由标识符与属性值(key:value)构成,多个属性用英文逗号隔开。 例如,设置只能等的如下两个属性: 标识符为Switch的开关属性,数据类型为Bool,设置值为1(开)。 标识符为Color的灯颜色属性,数据类型为String,设置值为blue。 那么要设置的属性信息,JSON格式如下: Items={“Switch”:1,“Color”:“blue”} 说明:如果设置自定义模块testFb(非默认模块)的属性,则格式为: Items={“testFb:Switche”:1,“testFb:Color”:“blue:} |
IotInstanceid | String | 否 | Iot-v64***** | 示例ID。 您可在物联网平台控制的实例概览页面,查看当前实例的ID。 重要: 若由ID值,必须传入该ID值,否则调用会失败。 若无实例概览页面或ID值,则无需传入。 |
ProductKey | String | 否 | A1BwAGV**** | 设备所属的产品ProductKey 重要:如果传入该参数,需同时传入。 |
DeviceName | String | 否 | IMEI:863763063139728 | 设备名称。 重要:如果传入该参数,需同时传入。 |
IotID | String | 否 | Q7uOhVRdZRRlDnTLv****00100 | 设备ID。 物联网平台为该设备办法的ID,设备的唯一标识符。 重要:作为设备唯一标识符,和ProductKey与DeviceName组合式一一对应的关系。 如果传入该参数,则无需传入ProductKey和DeviceName。 如果您同时传入IotID和ProductKey与DeviceName组合,则以IotID为准。 |
Qos | Integer | 否 | 1 | 指定调用本接口时,消息的发送方式。 取值: 0(默认):最多发送一次。 1:最少发送一次。 如果QoS=1消息未接收到PUBACK消息,会在设备重连时,重新推送给设备。 |
5.4. 返回数据
名称 | 类型 | 示例值 | 描述 |
Code | String | Iot.system.SystemException | 调用失败是,返回的错误码。 |
MessageID | String | Abcabc123 | 云端给设备下发属性设置的消息ID。 |
ErrorMessage | String | 系统异常 | 调用失败时,返回的出错信息。 |
RequestID | String | E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565 | 物联网平台为该请求生成的唯一标识符。 |
Success | Boolean | True | 表示是否调用成功。 True:调用成功。 False:调用失败。 |
5.5. 示例
■ 请求示例
https://gateway.purten.com/?Action=SetDeviceProperty
&ProductKey=a1BwAGV****
&DeviceName=device1
&Items={"Switch":1,"Color":"blue"}
&<公共请求参数>
■ 正常返回示例
XML格式:
<SetDevicePropertyResponse>
<RequestId>57b144cf-09fc-4916-a272-a62902d5b207</RequestId>
<Success>true</Success>
<Data>
<MessageId>abcabc123</MessageId>
</Data>
</SetDevicePropertyResponse>
JSON格式:
{
"RequestId":"57b144cf-09fc-4916-a272-a62902d5b207",
"Success": true,
"Data": {
"MessageId":"abcabc123"
}
}
服务调用格式
6.1. 服务调用格式如下:
{
"method": "thing.service.CommonService",
"id": "815332302",
"params": "{\"flag\":12,\"method\":2,\"params\":\"1\",\"seq\":\"123\"}",
"version": "1.0.0"
}
6.2. 关心params内的参数,其是实际业务关心的服务参数,其他字段为基本数据格式。
6.3. 注意params是JSON格式的字符串形式,以下描述改字符串内容JSON的字段。
参数 名称 | 数据类型 | 说明 |
Method | int | 服务方法, 1~99 网关相关参数修改; 100~149 子设备相关操作(保留,用于合并子设备和网关时才有效); 150~199 网关相关操作; 200~256 子设备相关参数设置 |
params | String,字符长度范围0~255 | 服务入参,根据method不同,对应不同的入参格式。 |
Flag | Int,范围0~999 | 自定义标记,用于平台业务恢复,网关相应服务下发时带回。 |
Seq | String,范围0~30个字符长度 | 自定义序号,用于平台业务异步操作,唯一标识,网关相应服务下发时带回。 |
6.4. 设备成功回复
{
"id": "815332302",
"code": 200,
"data": {
"method": 201,
"params": "0",
"flag": 12,
"seq": "123"
}
}
网关服务说明
7.1. 网关重启(method=1)
method | params | 功能说明 |
1 | 延时重启时间,单位毫秒, 0立刻重启,>0延时重启时间, string类型的数值0~10000 | 设备重启: { “flag”: 12, “method”:1, “params”:”1000″, “seq”: “123” } |
7.2. 设置日志等级(method=2)
method | params | 功能说明 |
2 | 日志等级,范围0~4 | 用于网关厂家调试日志,保留 |
7.3. 修改网关上报周期(method=3)
method | params | 功能说明 |
3 | 修改网关上报周期,单位s,范围,string类型数值1~1800 | //上报周期为10s, //当设置1s时可能会上传失败,因为网络传输限制。 { “flag”: 12, “method”:3, “params”:”10″, “seq”: “123” } |
7.4. 清除储存器数据(method=4)
method | params | 功能说明 |
4 | 清除存储器数据,无意义,默认写0,执行后会设备自动重启。 | //清除外部存储器数据 { “flag”: 12, “method”:4, “params”:”0″, “seq”: “123” } |
7.5. 修改模拟量AI死区参数(method=5)
method | params | 功能说明 |
5 | 修改AI变化上报死区参数,默认0 此参数用于防抖,不必每次AI采集发生抖动时误触发上报。 重启生效,需要手动重启。 AI1_threshold 对应 IN1 AI2_threshold 对应 IN2 | //修改AI变化上报死区参数, 范围(0~5000),单位mV { “flag”: 12, “method”:5, “params”:”{\“AI1_threshold\”:0}”, “seq”: “123” } |
7.6. 网关MQTT心跳时间修改(method=8)
method | params | 功能说明 |
8 | 单位s,默认1200s,范围30~1200s 服务器判断离线的时间是设置参数的2倍 | { “flag”: 12, “method”:8, “params”:”60″, “seq”: “123” } |
7.7. 修改子设备上报周期(method=201)
method | params | 功能说明 |
201 | 修改子设备上报周期,单位s,string类型数值1~1800 | { “flag”: 12, “method”:201, “params”:”300″, “seq”: “123” } |
7.8. 修改子设备轮询周期(method=202)
method | params | 功能说明 |
202 | 修改轮询周期 参数PORT代表总线端口名称, COM1; poll_period代表轮询周期,单位ms, string类型数值(20ms~5min)20~300*1000 | { “flag”: 12, “method”:202, “params”:”{\“PORT\”:\“COM1\”,\“poll_period\”:\“50\”}”, “seq”: “123” } |
7.9. 修改子设备从机地址(method=203)
method | params | 功能说明 |
203 | 修改从机地址 参数PK,DN, 表示从机产品名称和设备名称, slave_addr代表从机新地址, string 类型数据,0~32个字符。 | { “flag”: 12, “method”:203, “params”:”{\”PK\”:\”productkey\”,\”DN\”:\”devicename\”,\”slave_addr\”:\”1\”}”, “seq”: “123” } |
仅网关设备支持 |
7.10. 修改子设备写操作类型(method=204)
method | params | 功能说明 |
204 | 修改单个写入标志, 仅modbus协议支持 参数PK、DN, 表示从机产品名称和设备名称, 代表单个写入标志; single_write_flag枚举值, 字符类型, “1”写用0x06,0用0x10写入。 | { “flag”: 12, “method”:204, “params”:”{\”PK\”:\”productkey\”,\”DN \”:\”devicename\”, \”single_write_flag\”:\”1\”}”, “seq”: “123” } |
仅网关设备支持 |
7.11. 修改子设备串口参数(method=205)
method | params | 功能说明 |
205 | 修改串口参数 参数PK、DN, 表示从机产品名称和设备名称, uart_parameters代表串口参数。 波特率:1200,2400,4800,9600,115200 数据位:8 停止位:1 奇偶校验:0无,1奇,2偶 | { “flag”:12, “method”:205, “params”:”{\”PK\”:\”productkey\”,\”DN \”:\”devicename\”, \”uart_parameters\”: {\”baudrate\”:\”9600\”, \”bytebit\”:\”8\”,\”stopbit\”:\”1\”, \”parity\”:\”0\”}}”, “seq”:”123″ } |
仅网关设备支持 |
7.12. 修改子设备串口高级参数(method=206)
method | params | 功能说明 |
206 | 修改高级参数, 参数PK、DN, 表示从机产品名称和设备名称, advanced_parameters代表高级参数。 | { “flag”:12, “method”:206, “params”:”{\”PK\”:\”productkey\”,\”DN \”:\”devicename\”, \”advanced_parameters\”: {\”auto_package_flag\”:\”1\”, \”com_timeout\”:\”2\”, \”com_interval\”:\”3\”, \”com_max_fail\”:\”4\”, \”bit_interval\”:\”5\”, \”bit_max_register\”:\”6\”, \”word_interval\”:\”7\”, \”word_max_register\”:\”8\”, \”com_sequence\”:\”9\”}}”, “seq”:”123″ } |
仅网关设备支持 |
子设备服务说明
8.1. 测点读取(method=100,保留)
method | params | 功能说明 |
100 | 测点读取,保留 | 测点读取,保留 |
8.2. 测点写操作(method=101)
method | params | 功能说明 |
101 | 物模型数据中的写操作, 字符串格式json数据, {“key”:”value”} Key表示测点的标识符, value需要对改标识符写入的值。 | 测点写入,eg: { “flag”:123, “method”:101, “params”:”{\”ph\”:1.1}”, “seq”:”123″ } 其中ph是excel模板中自定义的测点标识符。 |
8.3. DLT645-2007拉合闸操作(method=102)
method | params | 功能说明 |
102 | 仅用于DL645-07协议中的 拉合闸命令 | 示例报文 { “flag”:12, “method”:102, “params”:”{\”PA\”:\”2\”,\”P0-P2\”:\”000000\”, \”C0-C4\”:\”11111111\”,\”N1\”:\”1AH\”,\”N2\”:\”0\”,\”N3-N8\”:\”001220170921\”}”, “seq”:”123″ } PA 密级 根据实际来写 P0-P2 密码 根据实际来写 C0-C4 操作者代码 根据实际来写 N1 拉合闸命令 “1AH”:跳闸 “1BH”:合闸 N2 保留 N3-N8 执行时间00秒12分20时17日09月21年 必须未来进行时间,过去的不能执行 |
服务调用返回代码
设备端通用code信息,用于表达云端下行推送时设备侧业务处理的返回结果。
错误码 | 消息 | 描述 |
200 | Success | 请求成功。 |
400 | Request error | 内部服务错误,处理时发生内部错误 |
429 | Too many requests | 请求过于频繁,设备端处理不过来时可以使用 |
460 | Request parameter error | 请求参数错误,设备入参校验失败 |
100001 | 服务响应错误码,南向和子设备处理超时 | |
100000-110000 | 自定义的错误信息 | 从100000到110000的错误码用于设备自定义错误信息, 和云端错误信息加以区分。 |