MBTCP协议说明

协议概述

MBTCP即MODBUS TCP的简称,MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。平台的MBTCP协议是建立在TCP协议之上的应用层协议。自带MODBUS TCP协议的设备一般为TCP server端(只能由客户端主动连接,不能主动连接平台),所以需要一个TCPserver转TCPclient的透明转发模块,来连接设备和平台。当然,如果设备本身支持client模式,可直连。

连接地址

每一种协议的连接服务器地址和端口号都不一样,请登录平台>设备管理>进入设置连接界面查看。

序列号

1.主动发送模式

在平台创建设备时需要一个序列号,该序列号由塔石提供,设备建立TCP连接之后应第一时间发送序列号。设备连接上后需在3秒内发送设备序列号给平台。

2.请求应答模式

如果在连接上平台后3秒内没有主动发送设备序列号,平台会主动向设备请求序列号,设备收到请求指令(00 01 00 00 00 06 01 03 1F 40 00 08)之后,可将序列号填入对应寄存器并响应平台(00 01 00 00 00 13 01 03 10 57 34 42 33 38 35 50 59 5A 59 54 32 36 34 49 34)。

心跳包

心跳包用户维持链接的长连接,空闲时一般为一分钟发送一次。平台识别的心跳包为Q,当平台收到心跳包Q时,会立即响应A发送给设备,设备可通过心跳包交互来判断与设备的连接情况。

设备定位数据

其他协议可以对传感器发送经纬度数据,MBRTU协议不会对传感器进行经纬度数据的解析。但是,平台提供了独立的定位数据格式(GPS:24.03,113.75),在空闲时发送定位数据。

读写指令说明

登陆平台,选择进入MBTCP协议设备的设置连接页面。

1.从站地址

平台支持一个DTU接入多个设备(通过RS485),所以要求每个设备的从站地址各不相同。

2.功能码

01读写:对开关量(bit位)进行读写,写入默认使用05功能码(不需要单独设置),该功能码一般针对PLC的开关输出点(比如西门子PLC的Q点)。

02只读:对开关量(bit位)进行读,是只读的,不允许写入,一般针对PLC的开关输入点(比如西门子PLC的I点)。

03读写:对整形/浮点型数据进行读写,写入默认使用06功能码(16位整形数据)和10功能码(32位和64位整形和浮点型数据),也就是对单个寄存器写入使用06,多个寄存器使用10。

04只读:对整形/浮点型数据进行读,只读不写。

3.偏置

偏置表示的是数据地址。如果数据地址是16进制表示(0x0000开始),则需要把16进制转为十进制并加1,才是偏置的值。如果地址使用区号+序号表示(比如40001),则偏置只取序号就可以了(也就是1)。

4.数据格式

Bit:二进制位

16位有符号数:占用1个偏置,2个字节,表示正负整数,数据范围-32768~32767。

16位无符号数:占用1个偏置,2个字节,表示正整数,数据范围0~65535。

16位按位读写:占用1个偏置,表示16位二进制,通过数据位(1~16)指定具体的位。

32位有符号数:占用2个偏置,4个字节,表示正负整数,数据范围- 2147483648~ 2147483647。

32位无符号数:占用2个偏置,4个字节,表示正整数,数据范文0~ 4294967295。

32位浮点型数:占用2个偏置,4个字节,可表示正数、负数、正数、小数。

64位浮点型数:占用4个偏置,8个字节,可表示正数、负数、正数、小数。

5.字节顺序

表示字节的高低位顺序。

6.采集周期

表示读取传感器数据的周期时间,由于MODBUS协议是请求应答式协议,每次读数据都会等待接收,等待的过程会产生延时,最长等待20秒,所以越多数据不响应,采集周期会越长。