- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.
. .
MODBUS-TCP
欢迎访问设备云门户网站 /注册用户,获取必威体育精装版文档。
版本号
修订日期
修订内容
说明
V1.0
2014.10.30
新增
V1.2
2015/8/5
Dtu设备登录传输项目ID
V1.3
2016/02/18
增加接入流程例子
V1.4
2016/07/06
实现01,02,03,04功能码周期查询
通过URL获取服务IP和PORT
设备定时发送心跳包
通过restfull api主动下发在线命令
说明
基于《modbus协议.pdf》实现01,02,03,04功能码周期查询。
适用于设备云定期主动发送modbus-tcp命令到设备查询寄存器值,设备回复寄存器值的情况。
名词解释
项目ID:在平台注册账号后,添加新项目平台生成数字ID;
Api-key:管理每个项目下资源,用于restful api鉴权。
设备接入
访问设备云门户注册用户,可以查看(项目ID)和master_key(api-key);
业务平台调用RESTFUL API 新增设备,并指定如下设备属性:
设备属性名
说明
interval
设备云主动查询设备的时间间隔,单位秒
auth_info
设备鉴权信息,格式如下:
{“登录报文的phone字段”:”登录报文的SVRPWD字段”}
设备上电,发送登录报文(52字节)到设备云接入服务器进行鉴权,设备通过链接 /s?t=6v=1拉取服务器IP和PORT,其中格式如下:
登录报文固定格式如下:(其中绿色三项为必填)
报文字段
固定长度
说明
type
11字节
设备类型字符串,以’\0’结尾,目前作为保留用途。
name
9字节
设备名称字符串,以’\0’结尾,目前作为保留用途。
phone
12字节
设备通信卡号码,以’\0’结尾。注册设备时作为auth_info属性子域json对象的key,用于鉴权。
svrpwd
9字节
服务器登录密码,以’\0’结尾。注册设备时作为auth_info属性子域json对象的value,用于鉴权。
id
11字节
项目ID,以’\0’结尾,平台申请项目时分配的项目ID字符串。
设备登录成功后,服务器不会返回数据,如果登录失败,服务器会主动断开连接。
数据流
业务平台调用restfull api为设备新增数据流,数据流需要指定如下属性:
数据流属性名
说明
cmd
设备云为获取数据定期下发访问寄存器的命令,用十六进制标示。如“83A245”表示三个字节的命令0x83A245。
formula
可选配置。对命令返回各个寄存器值的处理公式,多个公式用分号间隔。例如: (A0+A1)*A2,表示对命令返回的前两个寄存器值的和再乘上第三个寄存器的值得到综合结果。
注意:公式不能写成这样 (A0*A1),请去掉最外层的无效括号,否则公式会被认为不合法,不会生效
01、02命令返回结果(不支持formula属性)
{“起始地址”:”线圈值1,线圈值2,…,线圈值n”}
其中,每个线圈值对应设备返回数据的一个byte
起始地址、线圈值都以10进制表示
03命令返回结果(支持formula属性)
未设置formula属性
{“地址1”:”寄存器值1”, ”地址2”:”寄存器值2”, … ,”地址n”:”寄存器值n”}
其中,地址、寄存器值都以10进制表示
已设置formula属性
{“1”:”formula计算结果1”, “2”: “formula计算结果2”, … , “n”:”formula计算结果n”}
其中,计算结果为double类型值
formula属性可以有多个计算公式组合在一起,通过”;”隔开。
1、2、…、n,分别表示第1、2、…、n个计算公式
A0、A1、…、An, 分别表示第1、2、…、n个寄存器值
例如:(A0+A1)*A2 – (A3-A4)/A5 + (A6+A7)%A8 + A9fA10
目前formula支持运算符如下:
+ - * / % ()
f 表示前后操作数作为uint16,然后合并组成float
例如 A0fA1
union
{
uint32_t u32;
float f32;
} u_f;
u_f.u32 = (((uint32_t)(uint16_t)A0)16) | (uint16_t)A1;
u_f.f32 即为f运算符运算结果
04命令返回结果(不支持formula属性)
{“地址1”:”寄存器值1”, ”地址2”:”寄存器值2”, … ,”地址n”:”寄存器值n”}
其中,地址、寄存器值都以10进制表示
注意事项
数据流中定时下发的命令尽量保持不同
保持设备在线
当设备处于空闲的时候,为了保持与ONENET平台的连接不断开,需要定
文档评论(0)