当前位置:
文档之家› TON90B-1上位机MODBUS通讯协议(V1.1 20100209)
TON90B-1上位机MODBUS通讯协议(V1.1 20100209)
3.1.4 主机对信息处理的说明 3.2 设置功能码-0X80
此功能码用于上位机设置控制器的机型、地址和波特率。
3.2.1 上位机发送的数据格式
从机地址 功能码
ቤተ መጻሕፍቲ ባይዱ
机型
1 字节 1 字节(0x80) 1 字节
地址 1 字节
波特率 1 字节
机型列表:见4.2 控制器机型的定义; 地址:1~250。 254 为广播地址,0 代表不响应; 波特率:见4.3 波特率的定义。
气体单位使用如下定义: #define UNIT_NONE
0 //无单位
-6-
TON90B-1 与上位机的 MODBUS 协议说明
#define UNIT_LEL #define UNIT_PPM #define UNIT_VV #define UNIT_KPPM #define UNIT_PERCENT #define UNIT_01NONE #define UNIT_01LEL #define UNIT_01PPM #define UNIT_01VV #define UNIT_01KPPM #define UNIT_01PERCENT
4.2 控制器机型的定义
控制器代码
所代表的机型
-5-
0. 1. 2. 3. 4. 5. 6. 7.
其他
TON90B-1 与上位机的 MODBUS 协议说明
ES2000 TON80 TON90B ESC2000 ESC3000 TON96 ESC500 FGS1000 预留
4.3 波特率的定义
波特率代码
TON90B-1 与上位机的 MODBUS 协议说明
通道 5 的浓度值 通道 5 的状态 通道 6 的浓度值 通道 6 的状态 通道 7 的浓度值 通道 7 的状态 通道 8 的浓度值 通道 8 的状态 通道 1 的设置 高字节:气体类型,见4.4 气体类型的定义 低字节:气体单位,见4.5 气体单位的定义 通道 1 的设置 量程 通道 1 的设置 高字节:A1 报警点相对量程的百分比 低字节:A2 报警点相对量程的百分比 通道 2 的设置:类型和单位 通道 2 的设置:量程 通道 2 的设置:报警点 通道 3 的设置:类型和单位 通道 3 的设置:量程 通道 3 的设置:报警点 通道 4 的设置:类型和单位 通道 4 的设置:量程 通道 4 的设置:报警点 通道 5 的设置:类型和单位 通道 5 的设置:量程 通道 5 的设置:报警点 通道 6 的设置:类型和单位 通道 6 的设置:量程 通道 6 的设置:报警点 通道 7 的设置:类型和单位 通道 7 的设置:量程 通道 7 的设置:报警点 通道 8 的设置:类型和单位 通道 8 的设置:量程 通道 8 的设置:报警点
3 命令解释
3.1 查询功能码 0X03
此功能用于查询 TON90B-1 的设置信息和各支路的监控状态。
-1-
TON90B-1 与上位机的 MODBUS 协议说明
3.1.1 上位机发送的数据格式
03 命令的主机发送的帧格式:
从机地址 1 字节 说明:
功能码
寄存器开始地址
1 字节(03) 2 字节
寄存器个数 CRC 校验码
4.5 气体单位的定义
0 1 //可燃气体 2 //氢气 3 //一氧化碳 4 //硫化氢 5 //氨气 6 //氯气 7 //氧气 8 //一氧化氮 9 //二氧化硫 10 //二氧化氮 11 //二氧化碳 12 //臭氧 13 //环氧乙烷 14 //氢氰酸 15 //氯化氢 16 //可挥发液体
如果支路模块的量程和单位为:100%LEL,当前检测到的气体浓 度为 50,那么支路模块上传的公共模块时,将数据分解为:量程: 100, 单位:UNIT_LEL,当前气体浓度:50。
如果支路模块的量程和单位为:25.0ppm,当前检测到的气体浓度 为 5.1ppm,那么支路模块上传的公共模块时,将数据分解为:量程: 250, 单位:UNIT_01PPM,当前气体浓度:51。
如果 TON90B-1 收到错误的信息,返回帧格式如下:
地址
功能码 错误码
CRC 校验码
1 字节
1 字节 1 字节
2 字节
返回功能码在收到的功能码基础上加 0X80。 错误码的定义如下:
-2-
TON90B-1 与上位机的 MODBUS 协议说明
错误码 0X02 0X03
定义 校验码错。 数据错误,查询超过 100 个整形数时,会返回此 信息。
如果支路模块的量程和单位为:40.0%LEL,当前检测到的气体浓 度为 5.2%LEL,那么支路模块上传的公共模块时,将数据分解为:量 程:400, 单位:UNIT_01LEL,当前气体浓度:52。
如果支路模块的量程和单位为:5.0(无单位),当前检测到的气体 浓度为 1.2,那么支路模块上传的公共模块时,将数据分解为:量程: 50, 单位:UNIT_01NONE,当前气体浓度:12。
0.
9600
1.
4800
所代表的含义
4.4 气体类型的定义
气体类型使用如下定义: #define GAS_NONE #define GAS_FLA #define GAS_H2 #define GAS_CO #define GAS_H2S #define GAS_NH3 #define GAS_CL2 #define GAS_O2 #define GAS_NO #define GAS_SO2 #define GAS_NO2 #define GAS_CO2 #define GAS_O3 #define GAS_ETO #define GAS_HCN #define GAS_HCL #define GAS_VOC
利用通讯命令,可以进行读取每个 TON90B-1 各支路的状态信息和设置信 息等参数。
为了提高总线利用率,本协议规定,4800 波特率时,从机典型响应最大完 成时间为 200ms。如果主机在发送完一帧命令后,200ms 内没有收完从机的响 应信息,则可认为从机响应超时。
串行通信口 RS-485,异步通讯方式。 数据传输速率:4800/9600 B/S,可设置。设备出厂时默认为 9600B/S。8 位 数据位,1 位停止位,无校验。 当传送 2 字节数据时,高 8 位在前,低 8 位在后;传送 CRC16 校验码时, 也是高 8 位在前,低 8 位在后。 TON90B-1 在系统中的地址为:1~250 可设定。
5 CRC16 的校验算法 _______________________________________________7
-3-
TON90B-1 与上位机的 MODBUS 协议说明
1 适用范围
本协议适用于 ESC2000, TON80, TON90B-1, TON90B-8。
2 通讯约定
TON90B-1 控制器采用标准的 MODBUS RTU 模式(详细说明请参考标准 MODBUS 协议)。本协议定义了控制器能够认识使用的消息结构,制定了消息 域格局和内容的公共格式。
响应 03 命令的帧格式:
从机地址
1 字节 说明:
功能码 数据字节数 数据区
CRC 校验码
长度由数据字
1 字节(03) 1 字节 节数确定
2 字节
功能码固定为 03 。
数据字节数以字节为单位。即:主机读取 1 个整型数,TON90B-1 返回 2 个 字节;
地址表见4.1 地址表。
3.1.3 错误的处理
1 //%LEL 2 //ppm 3 //%V/V 4 //Kppm 5 //% 6 //无单位,带小数点 7 //%LEL,带小数点 8 //ppm,带小数点 9 //%V/V,带小数点 10 // Kppm,带小数点 11 //%,带小数点
从 6~10 的单位,表示气体量程和气体浓度带一位小数点。 比如:
目录
1 适用范围 _______________________________________________________1 2 通讯约定 _______________________________________________________1 3 命令解释 _______________________________________________________1
TON90B-1 与上位机的 MODBUS 协议说明
编写: 审核: 批准:
TON90B-1 与上位机的 MODBUS 协议说明
版本号 V1.0
V1.1 征求意见稿
版本历史
修改人 任善明 王平
修改日期 2010-01-04 2010-02-09
说明 初次版本 修改文档格式 字节定义有改
动。
-2-
TON90B-1 与上位机的 MODBUS 协议说明
第5位
通道 6 是否关闭:1:是;0:否
第6位
通道 7 是否关闭:1:是;0:否
第7位
通道 8 是否关闭:1:是;0:否
通道 1 的浓度值,高位在前
通道 1 的状态
数据位号 数据定义说明
第0位
是否预热:1:是;0:否
第1位
是否故障:1:故障;0:正常
第2位
是否 A1 报警:1:是; 0:否
第3位
是否 A2 报警:1:是; 0:否
0002 0003
0004 0005 0006 0007 0008 0009
通道关闭状态:
数据位号 数据定义说明
第0位
通道 1 是否关闭:1:是;0:否
第1位
通道 2 是否关闭:1:是;0:否
第2位
通道 3 是否关闭:1:是;0:否
第3位
通道 4 是否关闭:1:是;0:否
第4位
通道 5 是否关闭:1:是;0:否
第4位
是否自检:1:是;0:否