五、功能接口章节--Modbus协议接入讲解

五、功能接口章节--Modbus协议接入讲解


调用Modbus服务简介

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。

本接口主要针对采用Modbus协议接入本IOT中继平台的设备,用于通过http API向本IOT中继平台调用Modbus服务主动读取接入设备的物模型数据或向接入的设备写入物模型数据,例如:通过操作http API 接口获取接入设备的工作温度,或向设备寄存器写入数值等。
         说明:
Modbus协议在本IOT中继平台只支持读写物模型属性数据。

1、调用Modbus服务读取物模型属性数据

接口功能 本接口主要实现调用Modbus服务主动读取接入设备的物模型数据,例如:读取接入设备温度传感器的温度。

Request URL: http://192.168.0.105:18080/openApi/modbusReadModelProperties
域名访问URL: http://iotbox.iotrelay.cn:8080/api/openApi/modbusReadModelProperties

Request Method: GET

数据提交格式 Query String Parameters

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串“Bearer” +“token”组成, "token"为上述登录接口获取的属性值,如:请求头中

“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000001
propertiesIdstringIOT接入设备物模型属性ID标识,黄色为物模型属性ID标识值 “P_1696583483495” “P_1696583483496”

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": {
              "id": "null",
              "applyType": "1",
              "pointName": "温度",
              "deviceId": "44080000001111000015",
              "deviceSn": "1682824504262-1001111",
              "createTime": "2023-05-05 20:37:54",
              "readWriteType": "1",
              "dataValueDataType": "integer_value",
              "propertiesId": "P_1697276433454",
              "functionId": "null",
              "eventId": "null",
              "integerValue": "22",
              "longValue": "null",
              "floatValue": "null",
              "doubleValue": "null",
              "stringValue": "null",
              "booleanValue": "null",
              "dateValue": "null",
              "timeValue": "null",
              "jsonValue": "null"
        }
}

返回参数说明:

参数名类型描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000015”
applyTypeInteger数据主题应用类别(对应模型3个类别:1、属性;2、功能服务;3、事件) 此处黄色"1"对应属性
pointNamestring测点(数据点)名称
deviceSnstring设备编号
createTimestring数据时间
readWriteTypestring数据读写类型(1、读;2、写;3、上报 )
propertiesIdstringIOT接入设备物模型属性ID标识,黄色为物模型属性ID标识值 “P_1697276433454”
functionIdstringIOT接入设备物模型功能定义ID标识,黄色为物模型功能定义ID标识值
eventIdstringIOT接入设备物模型事件定义ID标识,黄色为物模型事件定义ID标识值
dataValueDataTypestring测点数据值数据类型(对应integer_value/float_value/string_value/boolean_value/date_value/time_value/json_value)
integerValueinteger测点数据整型值

错误响应结果示例:

{
      "code": "-1",
      "msg": "fail:Modbus服务读取物模型属性数据失败"
      "data": "null"
}



2、调用Modbus服务写入物模型功能操作

写入物模型功能操作简介

写入物模型功能操作 主要实现调用Modbus服务向接入设备写入物模型功能数据,通常用于向设备下发执行指令操作,在本IOT中继平台中,IOT中继平台作为主设备可以向从设备执行下面7个操作功能。 在本IOT中继平台中,物模型功能配置同MODBUS数据点写入功能向对应。
     特别说明:向设备写入数据前提必须是接入设备是可以写入的,物模型功能属性数据读写类型配置为写。

a)、调用Modbus服务 05H 写单个线圈

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于写单个线圈,例如:控制设备的开关等。
     特别说明:
向设备写入数据前提必须是接入设备是可以写入的,物模型属性数据读写类型配置为写。

Request URL: http://192.168.0.105:18080/openApi/writeCoil
域名访问URL: http://iotbox.iotrelay.cn:8080/api/openApi/writeCoil

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串“Bearer” +“token”组成, "token"为上述登录接口获取的属性值,如:请求头中

“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

{
   "deviceId": "44080000001111000018",
   "functionId": "F_1714449278021",
   "writeBooleanValue": "true"
}

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeBooleanValueboolean设备物模型数据写入数据类型值( 布尔类型:true/false 两个选项 ) 黄色标识值 “true

正确响应结果示例:

{
  "code": "0",
  "msg": "success",
  "data": "true",
}

错误响应结果示例:

{
  "code": "-1",
  "msg": "此设备非modbus协议接入,不可以写入"
  "data": "false"
}
b)、调用Modbus服务 07H 写多个线圈

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于写多个线圈,例如:向设备写入多个开关状态数据。

Request URL: http://192.168.0.105:18080/modbusOperate/writeCoils
域名访问URL: http://txb.iotrelay.cn:8080/api/modbusOperate/writeCoils

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串"Bearer" +"token"组成, "token"为上述登录接口获取的属性值,如:请求头中


“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

{
       "deviceId": "44080000001111000018",
       "functionId": "F_1714449278021",
       "writeBooleanValues": "[true,false]"
  }

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeBooleanValuesboolean[]设备物模型数据写入布尔类型数组值( 布尔类型:true/false 两个选项 ) 黄色标识值 “[true,false]

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": "true",
}

错误响应结果示例:

{
      "code": "-1",
      "msg": "此设备非modbus协议接入,不可以写入"
      "data": "false"
}
c)、调用Modbus服务 06H 写单个保持寄存器

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于写单个保持寄存器。

Request URL: http://192.168.0.105:18080/modbusOperate/writeRegister
域名访问URL: http://txb.iotrelay.cn:8080/api/modbusOperate/writeRegister

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串"Bearer" +"token"组成, "token"为上述登录接口获取的属性值,如:请求头中


“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

 {
       "deviceId": "44080000001111000018",
       "functionId": "F_1714449278021",
       "writeShortValue": "1"
  }

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeShortValueshort设备物模型数据写入数据类型值(short类型) 黄色标识值 “1

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": "true",
}

错误响应结果示例:

{
      "code": "-1",
      "msg": "此设备非modbus协议接入,不可以写入"
      "data": "false"
}
d)、调用Modbus服务 08H 写多个保持寄存器

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于写多个保持寄存器。

Request URL: http://192.168.0.105:18080/modbusOperate/writeRegisters
域名访问URL: http://txb.iotrelay.cn:8080/api/modbusOperate/writeRegisters

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串"Bearer" +"token"组成, "token"为上述登录接口获取的属性值,如:请求头中


“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

 {
       "deviceId": "44080000001111000018",
       "functionId": "F_1714449278021",
       "writeShortValues": "[1,0]"
  }

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeShortValuesshort[]设备物模型数据写入整型数组值(short数组类型: [1,0] ) 黄色标识值 “[1,0]”

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": "true",
}

错误响应结果示例:

{
      "code": "-1",
      "msg": "此设备非modbus协议接入,不可以写入"
      "data": "false"
}
e)、调用Modbus服务 09H 写入数字类型的模拟量

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于写入数字类型的模拟量。

Request URL: http://192.168.0.105:18080/modbusOperate/writeHoldingRegister
域名访问URL: http://txb.iotrelay.cn:8080/api/modbusOperate/writeHoldingRegister

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串"Bearer" +"token"组成, "token"为上述登录接口获取的属性值,如:请求头中


“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

 {
       "deviceId": "44080000001111000018",
       "functionId": "F_1714449278021",
       "writeNumberValue": "1"
       "dataType": "2"
  }

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeNumberValuenumber设备物模型数据写入数字类型值,写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long) 黄色标识值 “1
dataTypestring设备Modbus数据类型值,(1、布尔类型;2、整型;3、短整型;4、长整型;8、float)

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": "true",
}

错误响应结果示例:

{
      "code": "-1",
      "msg": "此设备非modbus协议接入,不可以写入"
      "data": "false"
}
f)、调用Modbus服务 串口Rtu模式 写保持寄存器

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于串口Rtu模式 写保持寄存器。

Request URL: http://192.168.0.105:18080/modbusOperate/writeRegisterByRtuSerial
域名访问URL: http://txb.iotrelay.cn:8080/api/modbusOperate/writeRegisterByRtuSerial

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串"Bearer" +"token"组成, "token"为上述登录接口获取的属性值,如:请求头中


“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

 {
       "deviceId": "44080000001111000018",
       "functionId": "F_1714449278021",
       "writeIntValue": "1"
  }

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeIntValueint设备物模型数据写入数据类型值为整型值 黄色标识值 “1

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": "true",
}

错误响应结果示例:

{
      "code": "-1",
      "msg": "此设备非modbus协议接入,不可以写入"
      "data": "false"
}
g)、调用Modbus服务 写入一个String数据

接口功能 本接口主要实现调用Modbus服务向接入设备写入物模型功能数据,用于写入一个String数据。

Request URL: http://192.168.0.105:18080/modbusOperate/writeString
域名访问URL: http://txb.iotrelay.cn:8080/api/modbusOperate/writeString

Request Method: POST

数据提交格式 application/json

请求头参数 Authorization

请求头参数说明:

参数名类型必须描述
AuthorizationHeader固定值:字符串"Bearer" +"token"组成, "token"为上述登录接口获取的属性值,如:请求头中


“Authorization” : “Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiNjE3OGVlN2ZhNWM0OWU2ODlmMGEzNjIxNzkxYzk2OCIsInN1YiI6IntcInVzZXJJZFwiOlwiNDlcIixcInVzZXJOYW1lXCI6XCIxMzQzNzE1NjU2OVwiLFwibmlja05hbWVcIjpcIjQ0MDgwMDAwMDAxMTExMDAwMDE3XCJ9IiwiaXNzIjoic2oiLCJpYXQiOjE2OTcxNTk2NjgsImV4cCI6MTY5NzE2MTQ2OH0.4C3GJIF5ejmySHy9l_LmheoCs5jknq17h9tPsZB3dIM”

请求体格式 Content-Type

 {
       "deviceId": "44080000001111000018",
       "functionId": "F_1714449278021",
       "writeStringValue": "test"
  }

请求体参数说明:

参数名类型必须描述
deviceIdstring接入设备ID标识,黄色为接入设备ID标识值 “44080000001111000018
functionIdstringIOT接入设备物模型功能ID标识,黄色为物模型功能ID标识值 “F_1714449278021
writeStringValuestring设备物模型数据写入字符串类型值 黄色标识值 “test

正确响应结果示例:

{
      "code": "0",
      "msg": "success",
      "data": "true",
}

错误响应结果示例:

{
      "code": "-1",
      "msg": "此设备非modbus协议接入,不可以写入"
      "data": "false"
}


IOT中继宝盒 长按关注宜联科技公众号

QQ在线咨询

点击这里给我发消息 咨询客服专员

QQ咨询

专业咨询

199-4502-1328

电话咨询

微信扫一扫

IOT中继宝盒

微信咨询
返回顶部