搜档网
当前位置:搜档网 › 串口及通讯协议

串口及通讯协议

串口及通讯协议

1.1概述

新版TUF-2000具有强大的通讯功能,能够同时支持多种不同的协议,包括MODBUS协议、MBUS、海峰FUJI扩展协议、汇中流量计水表兼容协议。

海峰FUJI扩展协议是在日本FIJI超声波流量计协议的基础上扩展实现的,能够兼容FUJI超声波流量计协议,以及海峰第7版超声波流量计协议。

兼容协议还可以兼容海峰水表协议以及汇中水表协议。

位于M63窗口处的设置选项设置为“MODBUS-RTU ONLY”时,用来支持MODBUS-RTU协议。当此选项设置为“MODBUS ASCII+原协议”时,用来支持MODBUS ASCII、Meter-BUS、海峰FUJI扩展协议以及汇中流量计水表兼容协议。

不同的汇中流量计水表兼容协议的选择则也使用M63进行选择。在选择了“MODBUS-RTU”,“MODBUS-ASCII”之后进行选择。

M62菜单用于设置串行口参数。能够支持的波特率有19200,14400, 9600, 4800, 2400, 1200, 600, 300共8种,停止位1比特或2比特。校验位也可以选择。

使用各种组态软件自带的标准的MODBUS驱动程序可以方便地把TUF-2000连接到数据采集中。

通过使用MODBUS-PROFIBUS转换器,也可以方便地把TUF-2000连接到PROFIBUS总线中。

目前还已经有了多家第三方厂商的专门支持TUF-2000系列流量计的数据采集软件供用户选用,其中有些小的软件是免费的,特别方便小用户的组网使用。

§1.2 关于通讯方面问题的问答

(1) 问:为什么连接不上流量计?,接上后它不做任何反应?

答: A. 检查串口参数是否匹配;位于M63窗口的协议选择是否正确

B.检查物理连线是否接好

D.位于M46窗口的地址是否设置正确

C.把流量计重新上电,应该能接收到字符“AT”,否则A和B步存在问题

D.检查命令是否正确。在使用扩展协议时命令后面要紧跟者一个回车符号 (2) 问:为什么MODBUS读出的量值乱七八糟的,和显示值完全不一致?

答:一般来说如果MODBUS协议能够读出数据就表明协议本身没有问题了。乱七八糟的数据是因为存在如下错误:

A.数据格式错误; B.寄存器地址有误,导致数据发生了位移而产生错误。

比如REAL4这种实型变量(IEEE754格式的单精度浮点数),按照字和字节共有4种不

同的排列方式,TDS100使用的是最常规的一种,即低word和高byte在前格式。您可

以修改您的软件的数据存放格式解决这个问题。

使用C语言时的数据存放顺序请参考本节的问答(8)

如果使用通用的组态软件,则组态软件一般具有一个选择格式的方法。

(3) 问:我的系统要求每次1小时只发出一次命令然后要求同时收到多个变量,应该使用 那个协议?

答:一条MODBUS命令可以一次读出很多变量。如果MODBUS-RTU不能解决问题,可以使用使用“&”连接符号连接起来的海峰扩展协议。还可以使用简易兼容协议,或者Meter-BUS

协议。

(4) 问:为什么通过协议读出的量值和流量计显示的不一致?

答:A. 确认变量地址是否就是您要求的那个变量?因为流量计内部的变量太多,是否混淆了? 注意在读取数据时,REG 0001在命令字符串中表示为0000,而不是0001。0001在

命令字符串中表示读出REG 0002的内容。

B.对于累积量只能显示7位10进制数字,而通过MODBUS协议可以读出8位10进制数字。这种情况下,读出来的数值的后7位是一样的。

(5) 问:我的系统不能支持长整数以及实型变量格式,应该怎么办?

答:需要采用数值转换方式,或查找新驱动程序解决。

(6) 问:MODBUS有测试程序吗?

答:有!推荐使用MODSCAN这个软件,可以在网上搜到。这个程序很是方便,有助于方便检查读出的数据,理解各种类型数据的含义。

(7) 问:流量计是否具有模拟运行状态以方便测试,怎样设置?

答:有!在M11窗口中输入0值即启动模拟运行状态。模拟运行状态下总是设置流速为

1.2345678m/s,瞬时流量等于0,并且显示“R”状态。如果要求瞬时流量为设定值,则

可以通过在M44窗口中输入一个负的设定值实现。例如在M44窗口中输入-3600立方米/

秒。瞬时流量就会显示为3600立方米/秒。这时所有累积器也会做相应的累积。因此就

得到了变化的累积量输出。使用这个功能,能在不接传感器的条件下,特别方便与联网

软件的调试以及流量计功能的测试。

(8) 问:使用C时,浮点数存放顺序是怎样的?

答:例如3F 9E 06 51四个字节为1.2345678的IEEE754格式单精度浮点形式。在MODBUS 数据流中的顺序是06 51 3F 9E。在X86计算机中使用C语言时,按照内存从低到高存

放顺序51 06 9E 3F。

§1.3 MODBUS协议

MODBUS协议的两种格式都能支持。通过在菜单窗口M63中,选择使用MODBUS-RTU还是MODBUS-ASCII 格式。默认状态下支持MODBUS-ASCII格式。

TUF-2000型系列超声波流量计/热能表只能支持MODBUS功能代码03和06以及16三种功能代码,分别是读寄存器和写单一寄存器以及数据块写入功能。

例如在RTU方式下读取1号设备的流速,即读寄存器5,6共2个寄存器,命令如下:

01 03 00 04 00 02 85 CA (十六进制数字)

设备号 功能 起始寄存器 寄存器数目 效验和

其中85 CA 是16进制数值,是按照CRC-16 (BISYNCH,多项式是x16+ x15+ x2+ 1屏蔽字为0A001H)循环冗余算法得到的。请参考MODBUS有关资料了解进一步的算法。

返回的数据应该为(设定状态为模拟运行状态,流速=1.2345678m/s):

01 03 04 06 51 3F 9E 3B 32(十六进制数字)

设备号 功能 数据字节数 数据=1.234567 效验和

其中 3F 9E 06 51四个字节即为1.2345678的IEEE754格式单精度浮点形式。

再举例,读净累积流量,REG25,REG26两个寄存器命令如下:

01 03 00 04 00 18 00 02 44 0C(十六进制数字)

返回数据应该为(设净累积器=802609,其4字节16进制表示为 00 0C 3F 31)

01 03 04 3F 31 00 0C A7 ED(十六进制数字)

请注意上面例子中数据存放的顺序。对于使用C语言解释数值时,可以使用指针直接把所需的数据

放入相应的变量地址中即可,一般常用的存放顺序为低字节在前,例如上面的1.23456m/s例子中,3F 9E 06 51数据的存放顺序为 51 06 9E 3F。

在 ASCII方式下读取1号设备的从寄存器1开始的10个寄存器的命令如下

:010********AF2(回车换行)

其中“:”是ASCII方式下的引导符,“F2” 是双字节效验和。求法是把除“:”及回车换行以外的所有字符的二进制ASCII码值进行二进制加法得到的。

在MODBUS-RTU状态下,每次最多能够读出125个寄存器。而在MODBUS-ASCII状态下每次只能读出61个寄存器。如果多于这些数目,流量计就会返回出错信息。

有关MODBUS协议细节请参考有关资料。

在调试MODBUS协议时,推荐使用一种免费调试软件MODSCAN,这个软件可以在互联网上搜索到。当出现问题时,如果能够接受到效验和正确的数据包则说明通讯本身是不存在问题的。

在默认状态下通信的设置速率一般是9600、无效验、8数据位、1个停止位。

§1.3.1 MODBUS寄存器地址表

(注意与水表协议的不同之处)

变量名称 数据类型 说明

寄存器 寄存器

个数

0001-0002 2 瞬时流量 REAL4 单位:立方米/小时

0003-0004 2 瞬时热流量 REAL4 单位:GJ/小时

0005-0006 2 流体速度 REAL4 单位:米/秒

0007-0008 2 测量流体声速 REAL4 单位:米/秒

0009-0010 2 正累积流量 LONG 所有使用长整数的流量累积器,

其计量单位受M32(即REG1438)

控制

0011-0012 2 正累积流量小数部分 REAL4 REAL4是标准IEEE-754格式单精

度浮点数。该格式数据一般也称

为FLOAT格式

0013-0014 2 负累积流量 LONG LONG是低字在前带符号长整数

0015-0016 2 负累积流量小数部分 REAL4

0017-0018 2 正累积热量 LONG 所有使用长整数的热量累积器,

其计量单位受M84(即REG1441)

控制

0019-0020 2 正累积热量小数部分 REAL4

0021-0022 2 负累积热量 LONG

0023-0024 2 负累积热量小数部分 REAL4

0025-0026 2 净累积流量 LONG

0027-0028 2 净累积流量小数部分 REAL4

0029-0030 2 净累积热量 LONG

0031-0032 2 净累积热量小数部分 REAL4

0033-0034 2 温度1/供水温度 REAL4 单位:℃

0035-0036 2 温度2/回水温度 REAL4 单位:℃

0037-0038 2 模拟输入AI3量 REAL4 转换后无量钢数据

0039-0040 2 模拟输入AI4量 REAL4 转换后无量钢数据

0041-0042 2 模拟输入AI5量 REAL4 转换后无量钢数据

0043-0044 2 模拟输入AI3电流值 REAL4 单位:毫安

0045-0046 2 模拟输入AI4电流值 REAL4 单位:毫安

0047-0048 2 模拟输入AI5电流值 REAL4 单位:毫安

0049-0050 2 系统设置密码 BCD 可写。00H表示取消密码设置 0051 1 硬件设置密码 BCD 可写。“A55Ah”表示打开

0053-0055 3 仪表日期时间 BCD 可写。6字节BCD数分别表示秒分

时日月年,低位在前

0056 1 自动储存数据日小时 BCD 可写。2个字节表示定时储存数据

开始的时间和天,例如0312H表

示每月3日12时储存数据。0012H

表示每日12时储存数据。

0059 1 输入键值(可模拟键盘)INTEGER 可写。参看说明书键值表

0060 1 使显示器显示x号菜单 INTEGER 可写。

0061 1 输入背光点亮时间 INTEGER 可写。单位秒

0062 1 蜂鸣器剩余鸣响次数 INTEGER 可写。最大255次

0062 1 OCT剩余脉冲数目 INTEGER 可写。最大65536

0072 1 仪表工作错误代码 BIT 16比特位分别表示含义见备注4 0077-0078 2 供水电阻数 REAL4 单位欧姆

0079-0080 2 回水电阻数 REAL4 单位欧姆

0081-0082 2 超声波总传播时间 REAL4 单位微妙

0083-0084 2 超声波传播时间时差 REAL4 单位纳秒

0085-0086 2 超声波上游传播时间 REAL4 单位微妙

0087-0088 2 超声波下游传播时间 REAL4 单位微妙

0089-0090 2 当前电流环输出电流值 REAL4 单位毫安

0092 1 工作步骤和信号质量 INTEGER 高字节表示信号调整步骤

底字节表示信号质量,数值范围

0-9,数值大表示信号好

0093 1 上游信号强度 INTEGER 数值范围0-4095

0094 1 下游信号强度 INTEGER 数值范围0-4095

0096 1 操作界面语言类型 INTEGER 0表示中文,1表示英文

0097-0098 2 超声波信号传输比 REAL4 正常范围100+-3%

0099-0100 2 当前雷诺数 REAL4

0101-0102 2 当前雷诺修正系数 REAL4

0103-0104 2 工作定时器时间 LONG 无符号,单位秒

0105-0106 2 总工作时间 LONG 无符号,单位秒

0105-0106 2 总上电次数 LONG 无符号

0113-0114 2 净累积流量(浮点形式) REAL4 单位为立方米,7位有效数字 0115-0116 2 正累积流量(浮点形式) REAL4 单位为立方米,7位有效数字 0117-0118 2 负累积流量(浮点形式) REAL4 单位为立方米,7位有效数字 0119-0120 2 净累积热量(浮点形式) REAL4 单位为GJ,7位有效数字

0121-0122 2 正累积热量(浮点形式) REAL4 单位为GJ,7位有效数字

0123-0124 2 负累积热量(浮点形式) REAL4 单位为GJ,7位有效数字

REAL4 单位为立方米,7位有效数字 0125-0126 2 今天累积流量(浮点形

式)

0127-0128 2 本月累积流量(浮点形

REAL4 单位为立方米,7位有效数字

式)

0129-0130 2 手动累积器流量 LONG

0131-0132 2 手动累积器小数部分 REAL4

0133-0134 2 批量控制器累积流量 LONG

0135-0136 2 批量控制器小数部分 REAL4

0137-0138 2 今天累积流量 LONG

0139-0140 2 今天累积流量小数部分 REAL4

0141-0142 2 本月累积流量 LONG

0143-0144 2 本月累积流量小数部分 REAL4

0145-0146 2 今年累积流量 LONG

0147-0148 2 今年累积流量小数部分 REAL4

0158 1 当前显示所在菜单 INTEGER

0165-0166 2 故障运行时间 LONG 单位:秒

0173-0174 2 当前频率输出值 REAL4 单位:Hz

0175-0176 2 当前电流环输出值 REAL4 单位:mA

0181-0182 2 当前温差 REAL4 单位:℃

0183-0184 2 本次上电所补加的流量 REAL4 单位:立方米

0185-0186 2 频率系数 REAL4 应该小于0.1

0187-0188 2 自动储存总时间 LONG 储存时间由寄存器0056确定 0189-0190 2 自动储存正累积流量 REAL4 储存时间由寄存器0056确定 0191-0192 2 自动储存瞬时流量 REAL4 储存时间由寄存器0056确定 0221-0222 2 管道内经 REAL4 单位毫米

0229-0230 2 上游传播延迟 REAL4 单位微秒

0231-0232 2 下游传播延迟 REAL4 单位微秒

0233-0234 2 估算总传播时间 REAL4 单位微秒

0257-0288 32 显示器缓冲区 BCD 可读出

0289 1 显示器缓冲区存储指针 INTEGER

0311 2 今天已工作时间 LONG 无符号,单位秒

0313 2 本月已工作时间 LONG 无符号,单位秒

0315 2 今天最大瞬时流量 INTEGER 单位: m3/h

0317 2 当月最大瞬时流量 INTEGER 单位: m3/h

1437 1 当前瞬时流量计量单位 INTEGER 取值0-31见注5

1438 1 当前累积流量计量单位 INTEGER 取值0-7见注1

1439 1 当前累积流量倍乘因子 INTEGER n取值0-7, 见注解1

1440 1 当前累积热量倍乘因子 INTEGER n取值0-10,见注解1

1441 1 当前热能测量单位 INTEGER 取值0~3。0=GJ , 1=Kcal

2=KWh, 3=BTU

1442 1 仪表通讯地址号码 INTEGER

1491 1 仪表类型 INTEGER BIT0=0表示是流量计

BIT0=1表示是热能表

BIT3=1表示热能表装在供水口

BIT3=0表示热能表装在回水口 1451 2 用户标尺因子 REAL4

1521 2 厂家标尺因子 REAL4 不可改写

1529 2 设备电子序列号码 BCD 本设备电子序列号码

请注意高位在前 注:(1)内部累积量使用了长整数和小数组合的方式。一般使用时,只读整数部分即可,小数部分可以忽略。累积量的大小和 累积单位及倍乘因子有关系,它们之间的确切关系是,设累积整数部分N(对正累积而言是寄存器0009,0010中数值,32比特带符号长整数),累积的小数部分为Nf(对正累积而言是寄存器0011、0012中内容,4字节浮点数),而累积流量倍乘因子为n(寄存器1439) 则正累积流量=(N+Nf ) ×10n-3 (单位在累积流量单位1438寄存器中确定)。

寄存器1438中 取值0-7含义如下

0 立方米 (m3)

1 公升 (L)

2 美制加仑 (GAL)

3 英制加仑 (IGL)

4 美制兆加仑 (MGL)

5 立方英尺 (CF)

6 美制石油桶[42](OB)

7 英制石油桶 (IB)

累积热量=(N+Nf )×10n-4

其中: 对于净热量,N值在寄存器 0029,0030中

对于净热量,Nf值在寄存器 0031,0032中

n值在寄存器1440中确定,

累积热量单位在寄存器1441中确定。

(2)其他变量不再给出,如果您有需求可咨询我公司

(3)请注意上表格中的很多数据对于非热能表来说是无效的,在单独使用流量计时,可以忽略无关项。这些无关项主要是为了使我们的产品的通讯协议统一,便于用户使用。

(4)错误代码是16比特位其含义如下

Bit0 没有收到信号错误

Bit1 信号太低错误

Bit2 信号差错误

Bit3 管道空错误

Bit4 电路硬件错误

Bit5 正在调整电路增益

Bit6 频率输出超量程错误

Bit7 电流环输出电流过量程错误(一般情形下需要设置最大量程)

Bit8 内部数据寄存器效验错误

Bit9 主振频率或者时钟频率存在错误

Bit10 参数区存在效验和错误

Bit11 程序存储器数据效验和错误

Bit12 温度测量电路可能存在错误

Bit13 保留??

Bit14 内部计时器溢出错误

Bit15 模拟输入电路存在错误

注意如果对于流量计,使用此代码时请先注意屏蔽掉那些与热量测量有关的位,因为那些位的状态不是确定的。

(5)瞬时流量单位代码如下

0 立方米/秒 1 立方米/分 2 立方米/小时 3 立方米/天

4 公升/秒

5 公升/分

6 公升/小时

7 公升/天

8 美制加仑/秒 9 美制加仑/分 10美制加仑/小时 11美制加仑/天

12 英制加仑/秒 13 英制加仑/分 14英制加仑/小时 15英制加仑/天

16 美制兆加仑/秒 17 美制兆加仑/分 18美制兆加仑/小时19美制兆加仑/天

20 立方英尺/秒 21 立方英尺/分 22立方英尺/小时 23立方英尺/天

24 美制石油桶/秒 25 美制石油桶/分 26美制石油桶/小时27美制石油桶/天

28 英制石油桶/秒 29 英制石油桶/分 30英制石油桶/小时31英制石油桶/天

§1.3.2 年月日累积数据MODBUS地址表

(1) 日累积数据(注意与其它版本流量计的地址是不同的)

每日累积数据采用32个字节大小的数据块循环队储存,共有512个数据块,当前的数据块指针地址在寄存器0162中,其数值范围为0~511。当前指针指向“昨天”的数据,当前指针减1则指向“前天”的数据。数据指针等于0时再减1则指向数据块511。设0162中数为1,则昨天的累积数据在寄存器10257-10272中,前天的数据在10241-10256中,大前天的数据在18417-18432中。

注意:在组态软件中,对于浮点数据等变量的读出在前面需要添加“4”,这样可能在这类软件中填写寄存器地址时,10241这个寄存器应该写成“410241”。

地址表如下

数据 块号 寄存器地址 寄存

个数

变量名称 数据类型说明

n/a 0162 1 日累积数据指针 Integer 数值范围0-127 10241 1 状态字节和日 BCD 低字节中是状态,高字节是日10242 1 月和年 BCD 低字节中是月,高字节为年 10243-10244 2 总工作时间 LONG 用于检查全天工作时间

10245-10246 2 全天净累积流量 REAL4 当天的总量

10247-10248 2 净累积热流量值 REAL4 23:59:59秒时刻累积器值

10249-10250 2 正累积器值 LONG 23:59:59秒时刻累积器值

10251-10252 2 负累积器值 LONG 23:59:59秒时刻累积器值

10253-10254 2 热量正累积器值 LONG 23:59:59秒时刻累积器值

10255-10256 2 热量负累积器值 LONG 23:59:59秒时刻累积器值

10257 1 状态字节和日 BCD 低字节中是状态,高字节是日10258 1 月和年 BCD 低字节中是月,高字节为年 10259-10260 2 总工作时间 LONG 用于检查全天工作时间

10261-10262 2 全天净累积流量 REAL4 当天的总量

10263-10264 2 净累积热流量值 REAL4 23:59:59秒时刻累积器值

10265-10266 2 正累积器值 LONG 23:59:59秒时刻累积器值

10267-10268 2 负累积器值 LONG 23:59:59秒时刻累积器值

10269-10270 2 热量正累积器值 LONG 23:59:59秒时刻累积器值

1

10271-10272 2 热量负累积器值 LONG 23:59:59秒时刻累积器值 。。。。。。。。。。。。。。 。。。。 。。。。。。。。。。。。。。 。。。。。。 。。。。。。。。。。。。。。。。。。。。

511 18417-18432 16 第511块数据块 注:1.状态字节的含义请见状态字含义说明。

2.如果读出的数据全是0FFH,表明此寄存器为空。

(2) 月累积数据(注意与其它版本流量计的地址是不同的)

月累积数据具有和日累积数据相同的结构,请参考日累积数据说明。特别的是日期字节总是取0值,且只有128个数据块。

地址表如下

数据 块号 寄存器地址 寄存器

个数

变量名称 数据类型说明

n/a 0163 1 月累积数据指针 Integer 数值范围0-127

8193 1 状态字节 BCD 低字节是状态,高字节=0

8194 1 月和年 BCD 低字节中是月,高字节为年

8195-8196 2 总工作时间 LONG 用于检查全月工作时间

8197-8198 2 全月净累积流量 REAL4 当月的总量

8199-8200 2 净累积热流量值 REAL4 本月最后一秒时刻累积器值

8201-8202 2 正累积器值 LONG 本月最后一秒时刻累积器值

8203-8204 2 负累积器值 LONG 本月最后一秒时刻累积器值

8205-8206 2 热量正累积器值 LONG 本月最后一秒时刻累积器值

8207-8208 2 热量负累积器值 LONG 本月最后一秒时刻累积器值

8209 1 状态字节 BCD 低字节是状态

8210 1 月和年 BCD 低字节中是月,高字节为年

8211-8212 2 总工作时间 LONG 用于检查全月工作时间

8213-8214 2 全月净累积流量 REAL4 当月的总量

8215-8216 2 净累积热流量值 REAL4 本月最后一秒时刻累积器值

8217-8218 2 正累积器值 LONG 本月最后一秒时刻累积器值

8219-8220 2 负累积器值 LONG 本月最后一秒时刻累积器值

8221-8222 2 热量正累积器值 LONG 本月最后一秒时刻累积器值

1

8223-8224 2 热量负累积器值 LONG 本月最后一秒时刻累积器值 。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。 。。。。。。 。。。。。。。。。。。。。。。。。。。。

127 10225-10240 16 第127块数据块 注:1.状态字节的含义请见状态字含义说明。

2.如果读出的数据全是0FFH,表明此寄存器为空

(3) 年累积数据是从月累数据中导出来的。

§1.3.3上断电数据MODBUS地址表

断电时,TDS16流量计会纪录断电时刻时间和流量计当时工作状态字以及所有的累积器值,每个数据块有128个字节组成,共有32个数据块,可循环记录前32次断电。系统使用这些数据使流量计恢复到断电前的工作状态,用户可使用这些数据来检查

上电断电数据也是采用队列环结构存储,请注意当前数据所在位置和指针有关,并且和日月年累积数据不同的是指针减1才指向上此断电数据,参见日累积部分说明,上断电数据的MODBUS地址表如下(注意与其它版本流量计的地址是不同的)

数据 块号 寄存器地址 寄存器

个数

变量名称 数据类型说明

n/a 0164 1 上断电数据指针 Integer 数值范围0-31

6145 1 上电秒和分钟 BCD 低字节中是秒,高字节为分 6146 1 上电小时和天 BCD 低字节中是小时,高字节为天0

6147 1 上电月和年 BCD 低字节中是月,高字节为年 6148 1 上电状态字 BIT B13标志已补加,其他位参见

状态字说明

6149 1 断电秒和分钟 BCD 低字节中是秒,高字节为分 6150 1 断电小时和天 BCD 低字节为小时高字节

6151 1 断电月和年 BCD 低字节中是月,高字节为年 6152 1 断电状态字 BIT 参见状态字说明

6153 1 当前窗口号码 Integer 低字节中为断电时主窗口号码,高

字节为本地LCD菜单号码 6154 1 上电次数 Integer

6155-6156 2 流量计工作总时间 LONG 单位为秒

6157-6158 2 正累积流量 LONG 单位取决于M32,M33

6159-6160 2 正累积流量小数 REAL4 单位取决于M32,M33

6161-6162 2 负累积流量值 LONG 单位取决于M32,M33

6163-6164 2 负累积流量小数 REAL4 单位取决于M32,M33

6165-6166 2 热量正累积 LONG 单位取决于M32,M33

6167-6168 2 热量正累积小数 REAL4 单位取决于M32,M33

6169-6170 2 热量负累积值 LONG 单位取决于M32,M33

6171-6172 2 热量负累积小数 REAL4 单位取决于M32,M33

6173-6174 2 净累积流量 LONG 单位取决于M32,M33

6175-6176 2 净累积流量小数 REAL4 单位取决于M32,M33

6177-6178 2 热量净累积 LONG 单位取决于M32,M33

6179-6180 2 热量净累积小数 REAL4 单位取决于M32,M33

6181-6182 2 日累积流量 LONG 单位取决于M32,M33

6183-6184 2 日累积流量小数 REAL4 单位取决于M32,M33

6185-6186 2 月累积流量 LONG 单位取决于M32,M33

6187-6188 2 月累积流量小数 REAL4 单位取决于M32,M33

6189-6190 2 年累积流量 LONG 单位取决于M32,M33

6191-6192 2 年累积流量小数 REAL4 单位取决于M32,M33

6193-6194 2 断电时瞬时流量 REAL4 单位: 立方米/秒

6195-6196 2 故障运行时间 LONG 单位秒

6197-6198 2 日工作总时间 LONG 单位秒

6199-6200 2 月工作总时间 LONG 单位秒

6201-6202 2 M47密码 BCD

6203-6204 2 断电期间时长 LONG 单位秒

6205-6206 2 上次上电时瞬时流量REAL4 单位: 立方米/秒

6207-6208 2 上次断电应补加累积流量REAL4 单位:立方米

1 6209-627

2 64 第2块数据块

2 6273-7336 64 第3块数据块 。。。。。。。。。。。。。。 。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。

31 8129-8192 64 第32块数据块

§1.4 海峰FUJI扩展通讯协议

TUF-2000新版超声波流量计还可以使用海峰系列第七版超声波流量计TDS7-FUJI扩展协议。下表中,那些红色的命令为新添加的协议。

在这个协议中,所传输的数据都是ASCII码,便于调试及查看。

在只能发送一次命令需要多种数据的系统中应用时,可以使用‘&’符号把多个基本命令连接起来形成一个可以一次发送的复合命令。请参考参考后面的‘&’符号部分说明。

命 令 命令意义 数据格式

DQD(cr) 注0返回每天瞬时流量 ±d.ddddddE±dd(cr) 注1

DQH(cr) 返回每小时瞬时流量 ±d.ddddddE±dd(cr)

DQM(cr) 返回每分瞬时流量 ±d.ddddddE±dd(cr)

DQS(cr) 返回每秒瞬时流量 ±d.ddddddE±dd(cr)

DV(cr) 返回瞬时流速 ±d.ddddddE±dd(cr)

DI+(cr) 返回正累积量 ±dddddddE±d(cr)注2

DI-(cr) 返回负累积量 ±dddddddE±d(cr)

DIN(cr) 返回净累积量 ±dddddddE±d(cr)

DIE(cr) 返回热量累积量 ±dddddddE±d(cr)

DIE+(cr) 返回正热量累积量 ±dddddddE±d(cr)

DIE-(cr) 返回负热量累积量 ±dddddddE±d(cr)

DIT(cr)返回今天净累积流量 ±dddddddE±d(cr)

DIM(cr) 返回本月净累积流量 ±dddddddE±d(cr)

DIY(cr) 返回今年净累积流量 ±dddddddE±d(cr)

DID(cr) 返回仪器标识码(地址码) ddddd(cr) 5位长

E(cr) 返回每秒瞬时热流量 ±d.ddddddE±dd(cr)

DL(cr) 返回信号强度 UP:dd.d,DN:dd.d,Q=dd(cr)

DS(cr) 返回模拟输出AO的百分比值 ±d.ddddddE±dd(cr)

DC(cr) 返回当前错误代码 注3

DA(cr) OCT或RELAY报警号 TR:s,RL:s(cr)注4

DT(cr) 当前日期及时间 yy-mm-dd,hh:mm:ss(cr)

Time@TDS1=(cr) 设定日时间yy-mm-dd,hh:mm:ss

M@(cr) 发往TUF-2000模拟键值@ M@(cr)注5

LCD(cr) 返回当前LCD显示器显示内容

LOCK0(cr) 开锁(新加指令)与原密码无关

LOCK1(cr) 上锁(新加指令)

MENUXX(cr) 显示直接跳到窗口XX

LANGUAGEX(cr) 选择界面语言 X=0 英语, 1 简体中文

2 意大利, 如果有的话

3 朝鲜语, 如果有的话

4 法语,如果有的话

5 德语,如果有的话

6 西班牙语,如果存在

BAUDRATEX(cr) 改变波特率(数据位=8,无效验,停

止位=1) X=0~7, 分别对应19200, 14400, 9600,4800,2400,1200,600,300

C1(cr) OCT吸合

C0(cr) OCT断开

R1(cr) 继电器RELAY吸合

R0(cr) 继电器RELAY断开

FOdddd(cr) 使频率输出以n值输出 Fdddd(cr)(lf)

Aoa(cr) 使电流环输出电流值a AOa(cr)(lf)注6

BA1(cr) 返回温度T1的电阻值 ±d.ddddddE±dd(cr)(lf)

BA2(cr) 返回温度T2的电阻值 ±d.ddddddE±dd(cr)(lf)

BA3(cr) 返回AI3的电流数 (0~20mA) ±d.ddddddE±dd(cr)(lf)

BA4(cr) 返回AI4的电流数 (0~20mA) ±d.ddddddE±dd(cr)(lf)

BA5(cr) 返回AI5的电流数 (0~20mA) ±d.ddddddE±dd(cr)(lf)

AI1(cr) 返回温度输入T1值(温度) ±d.ddddddE±dd(cr)(lf)

AI2(cr) 返回温度输入T2值(温度) ±d.ddddddE±dd(cr)(lf)

AI3(cr) 返回模拟输入AI3值(温度压力等) ±d.ddddddE±dd(cr)(lf)

AI4(cr) 返回模拟输入AI4值(温度压力等) ±d.ddddddE±dd(cr)(lf)

AI5(cr) 返回模拟输入AI5值(温度压力等) ±d.ddddddE±dd(cr)(lf)

ESN(cr) 返回电子序列号 dddddddt(cr)(lf)注7

N 单字节地址组网命令前缀 注8

W 数字串地址组网命令前缀 注8

P 带校验回传命令前缀

所加字符长度不超过253字节

& 命令“加”功能符号,多个基本命令形

成一个复合命令,一次传送

RING(cr)(lf) 调制解调器请求握手命令 ATA(CR)(lf)

OK(cr) 调制解调器应答信号 无输出,

流量计请求握手信号 AT(CR)(LF)

GA(cr) GSM短信息通信专用命令A注9 注9

GB(cr) GSM短信息通信专用命令B注9 注9

GC(cr) GSM短信息通信专用命令C 注9

注:

0.(cr)表示回车,其ASCII 码值为0DH。(lf)表示换行,其ASCII 码值为0AH。

1.d表示0~9数字,0值表示为 +0.000000E+00

2.d表示0~9数字, ddddddd是整数,“E”前面整数部分其中无小数点。

3.1~6个字母表示的机器状态,字符含义见错误代码一节,例如“R”,“IH”

4.s表示ON/OFF/UD其中之一

例如“TR:ON,RL:ON”表示OCT和继电器处于吸合状态

例如“TR:UD,RL:UD”表示OCT和继电器没有使用

5.@表示键值,例如30H,表示“0”键,例如命令 “M4”相当按键“4”

6.a表示电流值,取值范围0~20,例如AO2.34567, AO0.2

7.dddddddd八位表示机器的电子序列号码,t表示机器类型

8.如果数据网中同时有多台 新版TUF-2000流量计则基本命令不能单独使用,必须加N或W前缀后方可使用,否则会造成多台流量计同时应答,导致系统混乱。

9. 用GSM模块配接流量计可实现利用手机短信息查看流量计流量参数的功能。具体内容请来电查询。 §1.4.1 功能前缀和功能符号

(1) P前缀

字符P可以加在每一个基本命令前,表示回传的数据带有CRC校验。校验和的求法是二进制加法得到的。

例如:命令 DI+(CR)(相应二进制数据为 44H,49H,2BH,0DH)回传的数据为 +1234567E+0m3 (CR)(相应二进制数据为2BH,31H,32H,33H,34H,35H, 36H,37H,45H,2BH,30H,6DH,33H,20H,0DH,0AH)则命令PDI+(CR) 回传的数据为 +1234567E+0m3 !F7(CR), “!”表示其前是求和的字符,其后两个字节的校验和(2BH+31H+32H+33H+34H+35H+ 36H+37H+45H+2BH+30H+6DH+33H+20H=(2)F7H)

注意“!”前可以没有数据,也可能存在空格符号。

(2) N前缀

N命令的用法是 N + 单字节地址码 + 基本命令。

例如欲访问第 88号流量计的瞬时流速,可发命令 ‘NXDV’(CR), 其中X的十进制码值为88。建议用户使用W命令。

(3) W前缀

W前缀的用法是 W+数字串地址码+基本命令,数字串取值范围0~65535除去 13(0DH回车),10(0AH 换行),42(2AH *),38(26H&)。如欲访问第 12345号流量计的瞬时流速,可发命令 W12345DV(CR), 对应二进制码为57H,31H,32H,33H,34H,35H,44H,56H,0DH。

(4) ‘&’ 功能符号

‘&’ 功能可以实现多个基本命令相加的功能,只要保证所有基本命令相加以后形成的总字符长度不超过250个字符即可。所形成的‘超级’命令能够一次传送至流量计,流量计则同时作出应答。

P前缀P也可以加在基本命令之前。

例如要求同时发回第4321号流量计的 1.瞬时流量 2.瞬时流速 3.正累计量 4.热量累计量 5. AI1模拟输入电流数值 6. AI2模拟输入数值,并且带校验,发送命令如下:

W4321PDQD&PDV&PDI+&PDIE&PBA1&PAI2(CR)

一次同时回传的数据可能如下

+0.000000E+00m3/d!AC(CR)

+0.000000E+00m/s!88(CR)

+1234567E+0m3 !F7(CR)

+0.000000E+0GJ!DA(CR)

+7.838879E+00mA!59

+3.911033E+01!8E(CR)

再例如,要求从串行口修改管道外直径为123.456毫米,然后回传显示器内容,可发送如下指令: MENU11&M1&M2&M3&M:&M4&M5&M6&M=&LCD(CR)

§1.5 兼容通讯协议

兼容通讯协议是为了方便用户把TUF-2000接入用户按照汇中通讯协议而开发的数据采集系统中。新开发项目请不要使用这些协议,因为我们将来新开发仪表很可能不能够支持这些协议。

新TUF-2000目前可以支持8种汇中的通讯协议。

为了使用汇中的通讯协议,用户需要在M63中,选择“MODBUS ASCII”选项后再选择下面协议的一种即可。

0. CRL-G ;LL=33字节

1. SCL-61D (D<50mm) ;LL=13字节,累积量缩小1000倍

2. SCL-61D (D≧50mm) ;默认选项,LL=13字节水表只兼容此协议,累积量缩小10倍

3. SCL-6

4. SCL-7x (D<50mm)

5. SCL-7x (D≧50mm)

6. CRL-G-DL (D<50mm)

7. CRL-G-DL(D≧50mm)

8. CRL-H

9. CRL-HL

10. CRL-G-D (D<50mm)

11. CRL-G-D (D≧50mm)

上面的协议中的D表示管道的直径。

如果用户是新开发工程建议选用MOSBUS协议。

其它详细细节请参考汇中有关资料。下面只给出一种SCL-61D(D≧50mm)的说明。这种协议海峰生产的电池供电型水表只兼容这一种协议,因此新版流量计把这种协议作为出厂默认选项。

§1.5.2 SCL-61D(D≧50mm)兼容协议

接口:RS485

波特率:默认9600,使用M62菜单可选择共8种不同的速率

校验位:无(NONE),偶(EVEN),奇(ODD)

数据位:8

停止位:1,2

在以下说明中:XXh 表示当前仪表通讯地址(也称为网络地址),数值范围00h-FFh。YYh 表示仪表新的通讯地址,数值范围00h-FFh。ZZh 校验和,是所有数据字节的字节累加和(注

意是二进制累加和,不包括控制及命令字节),不计超出FFh的进位部分。h表示此

数值为16进制数

命令格式

(1)读取水表数据(4A命令)

主机命令: 2Ah XXh 4Ah 仪表回答 26h XXh 4Ah LL(BCD码) ZZh

其中LL(BCD码)的内容如下表

位置 内容 字节数说明

1~4 瞬时流量 4 缩小1000倍为实际数值,单位为m3/h

5~8 正累计流量 4 缩小10倍为实际数值,单位为m3

9~12 累计运行时间 4 单位:小时

13 诊断信息代码 1 见诊断信息表格

(2)读取定时存储数据 (49命令)

主机命令: 2Ah XXh 49h 仪表回答 26h XXh 49h LL(BCD码) ZZh

该命令同(1)4A命令读取水表数据,唯一区别是该命令读出的数据是上一个定时时刻存储的数据,而(1)4A命令读取水表数据读出的是当前水表数据。

(3)更改通讯地址(4B命令)

主机命令: 2Ah XXh 4Bh YYh 仪表响应 26h XXh 4Bh YYh

如果选取 XXh=YYh,应用此命令可以循环检测通信线路是否正常,还可以扫描网络中存在的仪表数目,可以实现网络的自动配置

注:一般地,主机端需要确认仪表是否设置了正确的通讯地址。如果不检测的话,在误码率较高的网络中,请慎用此4B命令,因为如果主机发送的YYh如果发生了错误,就会发生“丢失”下位机,或者造成两台仪表具有同一通讯号码而发生冲突现象。

(4)更改(设定)定时数据记忆时间(4C命令)

主机命令: 2Ah XXh 4Ch DDh HHh

仪表回答: 26h XXh 4Ch DDh HHh MMh ZZh

其中 DDh 表示某天,HHh 表示某小时, MM 表示某分钟,BCD 码格式

DD 取值为某月的一天,例如 2Ah 86h 4Ch 12h 15h 表示设定86号仪表在每月的12号15时记忆

(存储)当时的瞬时流量、累计流量、工作时间和状态代码,此储存数据便于用49命令读出。 如果DD=0则表示每天的HHh 时刻进行储存记忆操作。

(5)广播校时 (4D 命令)

主机命令: 2Ah AAh 4Dh ssmmhhDDMMYY 仪表不作回答

其中ssmmhhDDMMYY 表示BCD 码格式的时间日期数值,分别是秒分时天月年。

诊断信息代码为 00h 时表示正常

02h 时表示管道空错误或者是仪表不正常工作

05h 时表示数据存储时错误,硬件故障,需要维修

(6)扩充的读取水表命令(50命令, 平顶山水资源监控用命令)

主机命令: 2Ah XXh 50h (*xxP) 仪表回答 26h XXh 50h LL(BCD 码) ZZh 其中LL(BCD 码)的内容如下表

例如 9~12字节数据为 12h,34h,56h,78h,而第17字节数值=2时,则实际的正累积量值是

12345678 X 0.01 =123456.78 立方米

例如接收的字符串为 26H,01H,50H,00H,00H,00H,90H,00H,00H,00H,65H,78H,56H,34H,12H,12H,34H,56H,80H,03H,00H,00H,12H,34H,00H,zz 则表示的水表数值如下

瞬时流速=00000.090 m/s 瞬时流量=00000.065 m3/h

正累积量=78563412x10-3=78563.412 m3 负累积量=12345680x10-3=12345.680 m3 总工作时间=00001234 小时 水表工作状态=00表示正常。

注意:对于替换升级换代使用的用户需要注意如下几点

(1)新版TUF-2000系列产品更多强调用户可编程更改,所以在协议中,并没有固定波特率以及校验位

的定义,用户需要自己查验,采用合适的波特率。

位置 内容 字节数

说明

1~4 瞬时流速 4 紧凑BCD 码,缩小1000倍为实际数值,单位为m/h

5~8 瞬时流量 4 紧凑BCD 码,缩小1000倍为实际数值,单位为m3/h 9~12 正累积流量 4 紧凑BCD 码表示的数值部分,单位为m3

13~16 负累积流量 4 紧凑BCD 码表示的数值部分,单位为m3

17 累积流量乘积系数值 1 数值范围N=0~6

0,1,2,3,4,5,6分别对应单位 1, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001立方米。

18~21 累计运行时间 4 紧凑BCD 码,单位:小时

22 诊断信息代码 1 见诊断信息表格

(2) 新版TUF-2000系列超声波流量计通信时,对时刻的要求低,可以任何时候采集数据。采集数据的时间间隔并没有特殊的要求。

(3) 新版TUF-2000系列超声波流量计出厂设置波特率一般为9600,无校验位。如果需要替换同类仪表,需要更改串行口参数。用户可以在订货时提出此要求,由厂家在出厂时设置好。用户也可以自行更改。更改的方法请参考设置一章

(4) 新版TUF-2000系列超声波流量计的通信地址(通信号码)。在显示菜单M46中可以查阅,也可以使用按键进行更改。出厂时此地址码一般地址设为01用户需要自己修改为合适地址。

1.6. M-BUS协议

(1)概述

版本TUF-2000 2.00

新版TUF-2000 电池供电低功耗系列超声波流量计/热能表通信协议使用M-BUS通信协议格式,这是一种新型的欧盟标准,适用于所有仪表联网(可包括电表、水表、热能表、煤气表等),其细节请参考https://www.sodocs.net/doc/fa15114831.html,。M-BUS模块采用的双绞线既能够传输数据又能给所有连接在总线上的所有可以是不同类型的仪表供电。

每一台新版TUF-2000 电池供电低功耗系列超声波流量计/热能表出厂时都配置了M-BUS协议的软件部分。但M-BUS硬件模块部分用户需要在订货时单独订购。

在大多数应用条件下,M-BUS协议的软件部分是完全可以在RS232总线以及RS485总线上使用的。 (2)M-BUS总线的特点

有关硬件部分

有关软件部分

(3)接口

新版TUF-2000 电池供电低功耗系列超声波流量计/热能表根据不同型号,或者根据用户的要求,可以具有下列不同的硬件配置

(A)RS-232接口(已配置)

(B)RS-485接口(已配置)。

(C)光电接口适配板:可以配合带光电接口的仪表读出器很方便的读出其内部的参数。

(D)M-BUS适配板:使用单根双绞线即能实现双向数据通信、又能使用这根双绞线给仪表供电

报文格式 采用欧盟标准 IEC 870-5-1 关于遥控设备传输协议第一节--通信格式

波特率:300/1200/2400/4800/9600/19200/14400波特

校验位:奇偶无校验

数据格式:长度可变、多字节数据低位字节在前(即“模式1”)

(4)有关细节

(A)校验和CS的求法:从C域至校验和前第一个字节所有字节的8位累加和,不计进位。

(B)地址 FDh(以下h后缀是指16进制)用于地址扩展到第二地址, 而发地址 FEh和FFh是广播地址,地址 FEh需要从机做出应答,而地址FFh不需要做出回答。

(C)如果存在第一地址相同的多台从机在总线上这种情况,就会发生冲突。冲突时M-BUS总线电流电压会发生异常变化,主机可以利用这种异常,辅助‘撤选’ ‘选用第二地址’等报文,可

以自动解决冲突问题。一般来讲,M-BUS可以实现自动的地址重新分配。

(D)请不要使用那些厂家专用而用户很少使用的主机命令,因为这些命令会造成表计不能正常工作。

(E)请注意TDS1-100型仪表的MBUS协议与国外进口产品协议存在一些差别。

(5)软件协议

有关M-BUS协议的详细介绍请参考 DIN EN1434-3,有关M-BUS协议的更详细的介绍可以参考 “The M-BUS:A Documentation”此文可以从 https://www.sodocs.net/doc/fa15114831.html,网站上获得。

新版TUF-2000型系列超声波超低功耗工业水表/超声波流量计采用的报文格式为可变格式。并且热表和水表采用了同样的协议,用户在不需要热量数据的情况下,只须抛弃不需要的数据,或者采用下表中的通用预定数据报文只选取需要的数据。

新版TUF-2000型系列超声波超低功耗工业水表/超声波流量计具支持如下功能。

* 支持第二M-BUS寻址访问

* 可以修改第一M-BUS地址

* 可以更改日期时间

* 支持在线更改仪表工作参数

具体协议见下页表格

(请注意MBUS报文中一些不常用的变量不完全)

表1 主机=>从机方向协议报文格式

主机请求命令 格式 注解 从机应答

C域=控制域 A域为地址域 CS 为效验和,CI域

C域 A CS

初始化 (SEND_NKE) 10h 40h A CS 16h释放公用地址,设置为正常状态,默认波特率 E5h

请求数据 (SEND_UD2) 10h 5Bh/7Bh A CS 16h请求从机传送应答的从机用户数据 RSP_UD 删除使用公用地址 10h 40h FDh CS 16h所有从机释放公用地址 FDh,便于以后其他从机使用 E5h

报警协议 (SEND_UD1) 10h 5Ah/7Ah A CS 16h以最快速度相应主机的报警巡查 E5h

L L C域 A CI域CS

选用第二地址 68h0Bh0Bh 68h 53h/73

FDh52h ID1-4 M1-2 G Med CS16h ID1-4为4字节ID, M1-2=C9h,20h G=1 Med=4回水热表 地位在前 * E5h h

FDh56h ID4-1 M2-1 G Med CS16h高位在前,其他同上一报文 (Med=0Ch为供水热表) * E5h

选用第二地址 68h0Bh0Bh 68h 53h/73

h

FDh52h ID1-4 M1-2 G Med 0CH 78H SN1-4CS16h比上面二个报文增加0Ch 78h +4字节序列号 * E5h

增强选用第二地址68h11h11h 68h 53h/73

h

修改第一地址 68h06h06h 68h 53h/73

A 51h01h 7Ah NN CS16h NN为单字节新地址 范围为 1-250 E5h

h

A 51h0Ch 79h SA1-4 CS16h SA1-4为4字节新的第二地址 E5h

修改第二地址 68h09h06h 68h 53h/73

h

L L C域 A CI域CS备注, 从机对修改波特率指令以原先波特率应答后再改动

A B8h CS16h改变波特率为 300 重新上电后变为默认值,一般取4800 E5h

改变波特率 68h03h03h 68h 53h/73

h

改变波特率 68h03h03h 68h 53h/73

A B9h CS16h改变波特率为 600 重新上电后变为默认值,一般取4800 E5h

h

改变波特率 68h03h03h 68h 53h/73 A BAh CS16h改变波特率为 1200 重新上电后变为默认值,一般取48000 E5h

17

h

改变波特率 68h03h03h 68h 53h/73

A BBh CS16h改变波特率为 2400 重新上电后变为默认值,一般取4800 E5h

h

A BCh CS16h改变波特率为 4800 重新上电后变为默认值,一般取4800 E5h 改变波特率 68h03h03h 68h 53h/73

h

A BDh CS16h改变波特率为 9600 重新上电后变为默认值,一般取4800 E5h 改变波特率 68h03h03h 68h 53h/73

h

改变波特率 68h03h03h 68h 53h/73

A BEh CS16h改变波特率为 19200 重新上电后变为默认值,一般取4800 E5h

h

A BFh CS16h恢复波特率为P4菜单所设置的波特率值 E5h 改变波特率 68h03h03h 68h 53h/73

h

预定报文类型 L L C域 A CI域预制数据内容代码 CS

A 50h CS 16h请求所有数据,应答报文格式见表2所示 (All) E5h 预定常规格式 68h03h03h 68h 53h/73

h

预定常规格式 68h04h04h 68h 53h/73

A 50h 00 CS 16h请求所有数据,应答报文格式见表2所示 (All) E5h

h

预定快速格式 68h04h04h 68h 53h/73

A 50h 51h CS 16h请求快速读出数据 (QUICK READOUT) E5h

h

A 50h 10h CS 16h请求累计热量W,累计流量V (User Data) E5h 预定用户数据格式68h04h04h 68h 53h/73

h

A 50h 20h CS 16h请求W,V上年的W,V及运行时间BT故障时间FT(Simple Billing) E5h 预定简单帐单模式68h04h04h 68h 53h/73

h

A 50h 30h CS 16h请求W,V上年的W,V最大流量/热流量,BT、FT(Enhanced Billing) E5h 预定完全帐单模式68h04h04h 68h 53h/73

h

预定当前数据 68h04h04h 68h 53h/73

A 50h 50h CS 16h请求W,V 瞬时流量/热流量,进回水温度 (Instantaneous Values)E5h

h

18

19

预定内存历史数据68h 04h 04h 68h 53h/73

h

A 50h 60h CS 16h 读出事件指针指向的40H 字节数据,事件指针设置见相关命令 E5h

预定当前数据 68h 04h 04h 68h 53h/73

h

A 50h 80h CS 16h 请求仪表序列号,供热结算日期 E5h

切换到快速方式 68h 05h 05h 68h 53h/73

h

A 51h 0Fh A1h CS 16h 快速读出格式,报文格式见表3所示 E5h

切换到常规方式 68h 05h 05h 68h 53h/73

h

A 51h 0Fh A0h CS 16h 并预定所有输出数据 E5h

切换到快速方式 68h 03h 03h 68h 53h/73

h

A A1h CS 16h 不推荐使用本条报文,为了兼容而设置的报文。 E5h

切换到常规方式 68h 03h 03h 68h 53h/73

h

A A0h CS 16h 不推荐使用本条报文,为了兼容而设置的报文。 E5h

预定所有数据1 68h 04h 04h 68h 53h/73

h

A 51h 7Fh CS 16h 报文格式见表2所示 E5h

预定所有数据2 68h 06h 06h 68h 53h/73

h

A 51h C8h 3Fh 7Eh CS 16h 报文格式见表2所示 E5h

预定空报文 68h 06h 06h 68h 53h/73

h

A 51h 7Fh FEh 0Dh CS 16h E5h

通用选数据报文 68h L L 68h 53h/73

h

A 51h 选取代码(组合) CS 16h 限定L<240,上电初始化后置为全部选中状态 E5h

选取代码(组合)可以选择下列任意预定数据的代码及其任意组合(例如设预定要读出累计热量和累计流量,报文格式如下 68 L L 68 53/73 A 51 08 14 08 2D CS 16)

更新周期 08h 74h 平均周期 08h 70h

所有更新周期 C8h 3Fh 74h 所有平均周期 C8h 3Fh 70h

上年累计热量 48h 00h…0Fh 上年累计流量 48h 10h…17h

累计热量 08h 00h…0Fh 累计流量 08h 10h…17h 瞬时热量 08h 28h…37h 瞬时流量 08h 38h…4Fh 供水温度 08h 58h…5Bh 回水温度 08h 5Ch…5Fh 温差 08h 60h…63h 序列号码 08h 78h

运行时间 08h 20h…23h 日期时间 08h 6Ch 所有累计热量 C8h 3Fh 00h…0Fh

所有累计流量 C8h 3Fh 10h…17h

所有瞬时热量 C8h 3Fh 28h…37h

所有瞬时流量 C8h 3Fh 38h…4Fh

所有供水温度 C8h 3Fh 58h…5Bh

所有回水温度 C8h 3Fh 5Ch…5Fh

所有温差 C8h 3Fh 60h…63h

所有序列号码 C8h 3Fh 78h

所有运行时间 C8h 3Fh 20h…23h

所有时间标志 C8h 3Fh 6Ch

年结算日期 48h 6Ch

故障时间 38h 20h…23h

去年故障时间 78h 20h…23h

最大值平均周期 88h 10h 70h…73h

上年最大瞬时热流量 D8h 10h 28h…37h

当前最大瞬时热流量 98h 10h 28h…37h

当前最大瞬时流量 98h 10h 38h…4Fh

当前最大供水温度 98h 10h 5Bh

当前最大回水温度 98h 10h 5Fh

注:代码中“…”表示之间

的意思,例如00h…0Fh表示

之间任意数字皆可。也就是

代码 08h 00h 与代码 08h

0Dh具有相同的作用

L L C域 A CI域DIF DIF 功能 参数 CS 解释 应答

模拟键输入68h0Ah0Ah 68h 53h/73

h

A 51h 2Fh0Fh 00h 08h00h 00h 00h CS16h等于短按显示键 (包括菜单跳转,数字键输入) E5h

模拟键输入68h0Ah0Ah 68h 53h/73

h

A 51h 2Fh0Fh 00h 10h00h 00h 00h CS16h等于长按显示键 E5h

模拟键输入68h0Ah0Ah 68h 53h/73

h

A 51h 2Fh0Fh 00h 28h00h 00h 00h CS16h等于短按修改键 E5h

模拟键输入68h0Ah0Ah 68h 53h/73

h

A 51h 2Fh0Fh 00h 30h00h 00h 00h CS16h等于长按修改键 E5h

调试设备使用功能68h L L 68h 53h/73

h

A 51h 2Fh0Fh 04h 18 h密码+参数 CS16h厂家专用调试设备使用功能 PP1..PP7为密码 E5h

启动代码更新68h L L 68h 53h/73

h

A 51h 2Fh0Fh 09h 28 h密码+参数 CS16h厂家用于更新代码,注意此操作擦除所有代码 另外协议

初始化参数区 68h L L 68h 53h/73

h

A 51h 2Fh0Fh 18h 38h密码+ nn1..nn64 CS16h把64个字节的数据写入参数区1 E5h

读出LCD内容 68h0Ah0Ah 68h 53h/73

h

A 51h 2Fh0Fh 04h 68h00h 00h 00h CS16h读出显示器的96段显示共12字节内容 非标协议 启动流量标定 68h L L 68h 53h/73 A 51h 2Fh0Fh 00h 13h密码+参数 CS16h厂家用调试设备使用功能 E5h

20

单片机串口通信协议程序

#include #include #define R55 101 #define RAA 202 #define RLEN 203 #define RDATA 104 #define RCH 105 //#define unsigned char gRecState=R55; unsigned char gRecLen; unsigned char gRecCount; unsigned char RecBuf[30]; unsigned char gValue; void isr_UART(void) interrupt 4 using 1 { unsigned char ch; unsigned char i; unsigned char temp; if (RI==1) { ch=SBUF; switch(gRecState) { case R55: // wait 0x55 if (ch==0x55) gRecState=RAA; break;

case RAA: if (ch==0xaa) gRecState=RLEN; else if (ch==0x55) gRecState=RAA; else gRecState=R55; break; case RLEN: gRecLen=ch; gRecCount=0; gRecState=RDATA; break; case RDATA: RecBuf[gRecCount]=ch; gRecCount++; if (gRecCount>=gRecLen) { gRecState=RCH; } break; case RCH: temp=0; for(i=0;i

串口通讯协议

串口通讯协议 波特率9600,数据位8位,起始位1位,停止位2位,校验采用16位CRC校验,校验包括头部信息和数据。 帧定义: 主机发送事件数据定义

u16 const crc_table[256] = { 0x0000U, 0x1021U, 0x2042U, 0x3063U, 0x4084U, 0x50a5U, 0x60c6U, 0x70e7U, 0x8108U, 0x9129U, 0xa14aU, 0xb16bU, 0xc18cU, 0xd1adU, 0xe1ceU, 0xf1efU, 0x1231U, 0x0210U, 0x3273U, 0x2252U, 0x52b5U, 0x4294U, 0x72f7U, 0x62d6U, 0x9339U, 0x8318U, 0xb37bU, 0xa35aU, 0xd3bdU, 0xc39cU, 0xf3ffU, 0xe3deU, 0x2462U, 0x3443U, 0x0420U, 0x1401U, 0x64e6U, 0x74c7U, 0x44a4U, 0x5485U, 0xa56aU, 0xb54bU, 0x8528U, 0x9509U, 0xe5eeU, 0xf5cfU, 0xc5acU, 0xd58dU, 0x3653U, 0x2672U, 0x1611U, 0x0630U, 0x76d7U, 0x66f6U, 0x5695U, 0x46b4U, 0xb75bU, 0xa77aU, 0x9719U, 0x8738U, 0xf7dfU, 0xe7feU, 0xd79dU, 0xc7bcU, 0x48c4U, 0x58e5U, 0x6886U, 0x78a7U, 0x0840U, 0x1861U, 0x2802U, 0x3823U, 0xc9ccU, 0xd9edU, 0xe98eU, 0xf9afU, 0x8948U, 0x9969U, 0xa90aU, 0xb92bU, 0x5af5U, 0x4ad4U, 0x7ab7U, 0x6a96U, 0x1a71U, 0x0a50U, 0x3a33U, 0x2a12U, 0xdbfdU, 0xcbdcU, 0xfbbfU, 0xeb9eU, 0x9b79U, 0x8b58U, 0xbb3bU, 0xab1aU, 0x6ca6U, 0x7c87U, 0x4ce4U, 0x5cc5U, 0x2c22U, 0x3c03U, 0x0c60U, 0x1c41U, 0xedaeU, 0xfd8fU, 0xcdecU, 0xddcdU, 0xad2aU, 0xbd0bU, 0x8d68U, 0x9d49U, 0x7e97U, 0x6eb6U, 0x5ed5U, 0x4ef4U, 0x3e13U, 0x2e32U, 0x1e51U, 0x0e70U, 0xff9fU, 0xefbeU, 0xdfddU, 0xcffcU, 0xbf1bU, 0xaf3aU, 0x9f59U, 0x8f78U, 0x9188U, 0x81a9U, 0xb1caU, 0xa1ebU, 0xd10cU, 0xc12dU, 0xf14eU, 0xe16fU, 0x1080U, 0x00a1U, 0x30c2U, 0x20e3U, 0x5004U, 0x4025U, 0x7046U, 0x6067U, 0x83b9U, 0x9398U, 0xa3fbU, 0xb3daU, 0xc33dU, 0xd31cU, 0xe37fU, 0xf35eU, 0x02b1U, 0x1290U, 0x22f3U, 0x32d2U, 0x4235U, 0x5214U, 0x6277U, 0x7256U, 0xb5eaU, 0xa5cbU, 0x95a8U, 0x8589U, 0xf56eU, 0xe54fU, 0xd52cU, 0xc50dU, 0x34e2U, 0x24c3U, 0x14a0U, 0x0481U, 0x7466U, 0x6447U, 0x5424U, 0x4405U, 0xa7dbU, 0xb7faU, 0x8799U, 0x97b8U, 0xe75fU, 0xf77eU, 0xc71dU, 0xd73cU, 0x26d3U, 0x36f2U, 0x0691U, 0x16b0U, 0x6657U, 0x7676U, 0x4615U, 0x5634U, 0xd94cU, 0xc96dU, 0xf90eU, 0xe92fU, 0x99c8U, 0x89e9U, 0xb98aU, 0xa9abU, 0x5844U, 0x4865U, 0x7806U, 0x6827U, 0x18c0U, 0x08e1U, 0x3882U, 0x28a3U, 0xcb7dU, 0xdb5cU, 0xeb3fU, 0xfb1eU, 0x8bf9U, 0x9bd8U, 0xabbbU, 0xbb9aU, 0x4a75U, 0x5a54U, 0x6a37U, 0x7a16U, 0x0af1U, 0x1ad0U, 0x2ab3U, 0x3a92U, 0xfd2eU, 0xed0fU, 0xdd6cU, 0xcd4dU, 0xbdaaU, 0xad8bU, 0x9de8U, 0x8dc9U, 0x7c26U, 0x6c07U, 0x5c64U, 0x4c45U, 0x3ca2U, 0x2c83U, 0x1ce0U, 0x0cc1U, 0xef1fU, 0xff3eU, 0xcf5dU, 0xdf7cU, 0xaf9bU, 0xbfbaU, 0x8fd9U, 0x9ff8U, 0x6e17U, 0x7e36U, 0x4e55U, 0x5e74U, 0x2e93U, 0x3eb2U, 0x0ed1U, 0x1ef0U }; u16 crc16(u16 crc,const u8 *data, u32 len )len可以为u8,u16,u32 { while (len--) crc = crc_table[(crc >> 8 ^ *(data++)) & 0xffU] ^ (crc << 8); return crc; } 例:u8 *buf=”123456789”;

串口通信协议

串口通讯—通信协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1.串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA 与TTL电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。才用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。 3.有关串行通信的物理标准 为使计算机、电话以及其他通信设备互相沟通,现在,已经对串行通信建立了几个一致的概念和标准,这些概念和标准属于三个方面:传输率,电特性,信号名称和接口标准。 1、传输率:所谓传输率就是指每秒传输多少位,传输率也常叫波特率。国际上规定了一个标准波特率系列,标准波特率也是最常用的波特率,标准波特率系列为110、300、600、1200、4800、9600和19200。大多数CRT终端都能够按110到9600范围中的任何一种波特率工作。打印机由于机械速度比较慢而使传输波特率受到限制,所以,一般的串行打印机工作在110波特率,点针式打印机由于其内部有较大的行缓冲

51串口通信协议(新型篇)

51串口通信协议(新型篇) C51编程:这是网友牛毅编的一个C51串口通讯程序! //PC读MCU指令结构:(中断方式,ASCII码表示) //帧:帧头标志|帧类型|器件地址|启始地址|长度n|效验和|帧尾标志 //值: 'n' 'y'| 'r' | 0x01 | x | x | x |0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求和: ///////////////////////////////////////////////////////////////////// //公司名称:*** //模块名:protocol.c //创建者:牛毅 //修改者: //功能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分 //其他说明:只提供对A T89c51具体硬件的可靠访问接口 //版本:1.0 //信息:QQ 75011221 ///////////////////////////////////////////////////////////////////// #include #include //预定义 //帧 #define F_ST1 0x6e //帧头标志n #define F_ST2 0x79 //帧头标志y #define F_R 0x72 //帧类型读r #define F_W 0x77 //帧类型写w #define F_D 0x64 //帧类型数据帧d #define F_B 0x62 //帧类型写回应帧b #define F_C 0x63 //帧类型重发命令帧c #define F_Q 0x71 //帧类型放弃帧q #define F_ADDR 0x31 //器件地址0-9 #define F_END 0x7a //帧尾标志z #define F_SPACE 0x30 //空标志0 #define F_ERR1 0x31 //错误标志1,flagerr 1 #define F_ERR2 0x32 //错误标志2 2 //常数 #define S_MAXBUF 16 //接收/发送数据的最大缓存量 #define FIELD_MAXBUF 48 //最小场缓存,可以大于48字节,因为协议是以20字节为

系统串口通讯协议

ZHET 系统串口通讯协议 通 讯 技 术 手 册 型号:SYRDS1-485 (SYRDSSS1) SYRDL1-485 (SYRLSSS1) 玺瑞国际企业有限公司 SYRIS International Corp.

通讯技术手册 通讯协议(Protocol) 卡片阅读机模块(Reader Module)的通讯协议(Protocol)皆出自于SYRIS 的一种标准通讯协议,这种协议格式如下表: 1.SOH 和 END 都是一个字节的控制字符: SOH 控制器端定义为 <0x09> 模块端定义为 <0x0A> END 控制器及模块端均固定为 <0x0D> 其中 <0x> 为十六进制表示法. 2.TYPE 为模块型式编号,固定为一个字节,本型式编号固定为“A”. 3.ID为模块端的识别代码,这一字节的 ASCII 字符必须是在 1 <0x31> 到 8 <0x38> 的范围内,假如控制器端传送之ID值与模块地址编号相同时, 则该模块将会接收控制器端所传送的数据,而模块响应时,也会传回相同的地址编号.

4.FC是通讯功能码(Function Code)和资料(DATA)有相关性,固定为一个 字节,这些资料请参考通讯协议表及相关说明. 5.错误讯息判断代码(Error Code)为两个字节,第一个字节为固定为 <0x0E> ,第二个字节为错误代码,请参考错误讯息代码表. 6.8 BITS BCC是所有字符的检查字段,为二个字节,有关 8 BITS BCC 的 信息和范例程序,请参考附录A. 7.RS485传输协议请设定为”E,8,1”,速率为”19200”. 错误讯息代码表(Error Code Table) ※ Error Code #1固定为 <0x0E>.

USB基本知识与通信协议书范本

串口通信协议 什么是串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(b yte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇

AB DF1串口通讯协议API接口

Fax: 1-703-709-0985 https://www.sodocs.net/doc/fa15114831.html, Allen-Bradley DF1 Serial Communication Interface API The DASTEC Corporation Allen-Bradley DF1 Serial Communication Interface API allows the user to implement bi-directional serial communications to exchange data between applications running on a Windows/WinCE-based system with other devices supporting the Allen-Bradley DF1 full-duplex serial protocol. The devices can be AB devices, other host computers or even other system applications using the API. The Allen-Bradley DF1 Serial Communication Interface API enables a system to acts as a client device to other Allen-Bradley peer devices, initiating read and write operations on behalf of the system applications. The API also allows the system to emulate an Allen-Bradley PLC to respond to read and write requests and thus acts as a “virtual PLC” to other AB peers. The API is available for different Windows/WinCE-based systems/platforms and can be used with C/C++ or Visual Basic. The API consists of two component functionalities, client side and server side. The client side functionality is implemented with a single API DLL. Server side functionality is implemented with a DLL/executable pair. Together these components manage all aspects of the protocol and data exchange including responding to peers with proper acknowledgements, error/success codes and protocol data byte ordering. The system application need only to deal with the data values exchanged in native byte order. The user can employ either the API’s client, server or both functionalities with minimal code implementation.

串口通讯—通信协议

串口通讯—串口通信协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,串口通信协议通常有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1、串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM 时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与TTL电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。采用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。

SPI串口通信协议

SPI串口通信协议 1.1 SPI串口通信介绍 SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行. SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200. SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 (1)SDO –主设备数据输出,从设备数据输入 (2)SDI –主设备数据输入,从设备数据输出

(完整版)高速公路ETC系统DSRC设备串行口通讯协议

高速公路ETC系统DSRC设备串行口通讯协议 1 串行通讯方式 串行口采用半双工的异步串行通讯方式,协议格式为“115200,N,8,1”,即波特率115200bps,无奇偶校验,8位数据,1个停止位。 1.1 串口通讯数据帧格式 RSU和PC通讯的数据帧格式如图1-1: 图1-1 空应答如图1-2: 图1-2 说明见表1-1: 表1-1 RSU和PC通讯的数据帧格式说明

1.2 特殊字节转义处理 数据帧开始标志为FFFFH,帧结束标志为FFH。其他字段不能出现FFH,如果数据确实为FFH,需对其进行转义处理。 发送数据时,如果在待发送字段中出现FFH字节时,将FFH分解为FEH和01H这两个字节来发送;如果在待发送字段出现FEH字节时,需将FEH分解为FEH和00H这两个字节来发送。 接收数据时,如果出现“FE 01”这样连续两个字节时将之合为一个字节FFH;如果出现“FE 00”这样连续两个字节时将之合为一个字节FEH。 RSU送上来的所有整型数据,未特定说明,其字节排序均为高位在前,低位在后。 1.3 命令的应答要求 PC必须对RSU的命令作出应答,可以是携带应答也可以是空应答,RSU不一定对PC的每个命令都要应答。 应答时,PC将接收到的命令帧的RSCTL的高半字节和低半字节交换,作为应答帧的RSCTL。

图1-3 串口通讯流程 2 RSU/PC通信帧数据结构 2.1 PC发往RSU的指令: 指令名称代码功能说明 初始化指令C0H 对RSU关键参数如功率、车道模式等进行初始化/设置 对PC收到RSU发来的信息的应答,表示收到信息并要求继续继续交易指令C1H 处理指定OBU 对PC收到RSU发来的信息的应答,表示收到信息并要求当前停止交易指令C2H 不再继续处理指定OBU

串口协议

串口协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1.串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。(5)进行TTL 与EIA电平转换:CPU 和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C 接口标准所要求的信号线:远距离通信采用MODEM 时,需要9根信号线;近距离零MODEM 方式,只需要3 根信号线。这些信号线由接口电路提供,以便与MODEM 或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA 与TTL 电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。才用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。

串口通信协议

1 串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。 2 串行通信的传输方向 2.1 单工 单工是指数据传输仅能沿一个方向,不能实现反向传输。 2.2 半双工 半双工是指数据传输可以沿两个方向,但需要分时进行。 2.3 全双工 全双工是指数据可以同时进行双向传输。 单工半双工全双工 3 重要参数 串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配。 3.1 波特率 这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 常用的波特率有,1200,2400,4800,9600,19200,38400,115200等。 3.2 数据位 这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

串口通信协议

串口通信协议 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 什么是串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(b yte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数

SPI串行通信协议

SPI串行通信协议 同步串行外设接口(S PI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。 SPI(Serial Peripheral Interface)是一种串行串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。 总线协议 该总线通信基于主-从(所有的串行的总线均是这样,USB,IIC,SPI等)配置,而且下面提到的方向性的操作合指代全部从主设备的角度说得。它有以下4个信号: MOSI:主出/从入 MISO:主入/从出 SCK:串行时钟 SS:从属选择;芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。 在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲(好像也可以是IO上的电平的模拟时钟),摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。 数据方向和通信速度 SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI 串行器件传输速度能达到5MHz。 SPI总线接口及时序 SPI总线包括1根串行同步时钟信号线以及2根数据线。 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图3、图4所示。

串口通信协议程序

串口通信协议程序 主机程序: /* 主机主要处理 : 主—>从 1.给从机发送命令 2.给从机发送数据 3.命令从机向主机发送数据 从—>主由中断程序处理根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留 */ #include #include #define uchar unsigned char #define uint unsigned int #define slav1_addr 0x01 #define slav2_addr 0x02 #define COMEND 0 #define REC_DATE 1 //主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111 #define cmd_X 0x12 #define cmd_rec_data 0x11 sbit signal=P3^2; uchar temp_addr,num,rec,style,re_addr; uchar buf[20]; uchar rec_data[10];

void delay(unsigned int i) { while(i--); } void init_uart(void) { TMOD=0x20; //定时器方式2--8位reload模式 TH1=0xfd; TL1=0xfd; PCON=0; //波特率不加倍 SCON=0xf0; //方式三 TB8=1; //发送地址时第九位为1 SM2=1; //接收到第九位为1时才能接收数据 TR1=1; //要在设置scon后开定时 ES=1; //开中断 EA=1; } //发送命令 void uart_send_cmd(uchar addr,uchar cmd)//uchar *date) { while(signal==0); //检查总线是否被占 signal=0; //占用总线 EA=0;//关中断 do {

串口通信协议程序

主机程序: /* 主机主要处理: 主—>从 1.给从机发送命令 2.给从机发送数据 3.命令从机向主机发送数据 从—>主由中断程序处理根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留 */ #include #include #define uchar unsigned char #define uint unsigned int #define slav1_addr 0x01 #define slav2_addr 0x02 #define COMEND 0 #define REC_DATE 1 //主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111 #define cmd_X 0x12 #define cmd_rec_data 0x11 sbit signal=P3^2; uchar temp_addr,num,rec,style,re_addr; uchar buf[20]; uchar rec_data[10]; void delay(unsigned int i) { while(i--); } void init_uart(void) { TMOD=0x20; //定时器方式2--8位reload模式 TH1=0xfd; TL1=0xfd; PCON=0; //波特率不加倍 SCON=0xf0; //方式三 TB8=1; //发送地址时第九位为1 SM2=1; //接收到第九位为1时才能接收数据

TR1=1; //要在设置scon后开定时 ES=1; //开中断 EA=1; } //发送命令 void uart_send_cmd(uchar addr,uchar cmd)//uchar *date) { while(signal==0); //检查总线是否被占 signal=0; //占用总线 EA=0;//关中断 do { do { SBUF=addr; //发送从机地址 while(TI!=1); TI=0; } while(RI!=1); //一直等待从机响应 //while循环里可加入出错处理temp_addr=SBUF; RI=0; } while(temp_addr!=addr); //一直等到从机回应的地址相同 //while循环里可加入出错处理 TB8=0; //发送数据第9位为0 // SM2=0; // 接收到第九位为1时才置位RI //每次一个数据 SBUF=cmd; while(TI!=1); TI=0; TB8=1; // SM2=1; RI=0; TI=0; //不处理期间发生的中断 EA=1; signal=1; //释放总线 }

c串口通信协议设计

c串口通信协议设计 篇一:RS-232-C串口通讯协议解析 RS-232-C串口通讯协议解析 串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过 改进而形成的。所以,以RS-232C为主来讨论。 在讨论RS-232C接口标准的内容之前,先说明两点.首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了 其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者

都是DTE,因此双方都能发送和接收。 RS- 323C标准是美国EIA(电子工业联合会)与BELL 等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~XX0b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C 制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 一、RS-232-C RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecomme ed standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、 EIA�RS-423A、EIA�RS-485。这里只介绍EIA�RS-232-C(简称232,RS232)。例如,目前在IBM PC机上的COM1、 COM2接口,就是RS-232C接口。 1.电气特性

相关主题