ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:509.41KB ,
资源ID:29312330      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29312330.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(隧道风速风向检测仪说明及MODBUS通讯设置.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

隧道风速风向检测仪说明及MODBUS通讯设置.docx

1、隧道风速风向检测仪说明及MODBUS通讯设置 隧道风速风向检测仪1 简述使用仪器前请认真阅读本说明书,它能帮你更快更好的熟悉并使用风速风向检测仪。隧道风速风向传感器为隧道专用型,传感器安装在隧道边墙上,为隧道自动化控制提供隧道内风速、风向检测值,作为通风和营运的基本依据。隧道风速风向传感器,具有质量轻、坚固耐用的特点,没有任何移动部件,不需维护和现场校准,能同时输出风速和风向。 隧道风速风向传感器可以与自动化控制系统或其它具有与传感器通讯一致的采集设备连用。具有三种数据输出模式,即数字量RS485、模拟量4-20mA以及开关量输出。2 工作原理测量超声波从传感器A到传感器B传输的时间,并与传感

2、器B到传感器A传输的时间相比较。例如,风从隧道入口吹来,超声波从A到B的时间就会比从B到A的时间短,通过计算超声波在两点之间的传输的时间差,就可以计算出风的速度和方向。超声波时间差越大,表明流速越大,流速由时间差决定,压力和温度的波动不对测量值有影响(如下图)。3 安装示意图 根据联合设计图纸要求,传感器直接安装在隧道车行方向右侧,安装高度建议3-4米。传感器支持220V供电,电缆要求3*2.5m标准电缆且可靠接地,传输信号线缆建议使用4*1mRVVP屏蔽线。4 传感器外形及尺寸平面图5 安装步骤隧道风速风向为一体式传感器,无任何移动部件。直接安装在车行方向右侧的侧壁上;安装位置要求前后无任何

3、遮档,以免气流产生障碍或者导致紊流(如下图)。6 线缆连接电源输入按下图所示接入AC220V 50Hz交流电源。 数据输出:该仪器具有3种数据输出接口: 1、一路4-20mA 电流环输出; 2、RS485 输出; 3、一组继电器输出。如下图7 电流转换参数对照表(1)正向风速与电流成线性关系正向风速(米/秒)输出电流(420mA)04.03020.0正向风速和输出电流呈线性关系,如右表(2)负向风速与电流成线性关系负向风速(米/秒)输出电流(420mA)04.03020.0正向风速和输出电流呈线性关系,如右表8 主要技术指标 风速测量范围 0 - 30m/s 精度 2% 分辨率 0.01m/s

4、 风向仪器所测角度正向及负向 分辨率 1 数字输出RS485模拟量输出4-20mA电流隔离输出,最大负债阻抗500防护等级 IP67工作温度 -45 - +75 工作湿度 0 - 100% 电源需求 220VAC10%,50Hz/60Hz电源功耗1WMODBUS协议-RTU模式 一、通讯端口定义起始位1 bit数据位8 bit奇偶校验位EVEN(偶校验)停止位1 bit波特率9600二、通讯方式仪器与外部设备通讯方式为RS485或RS232,默认通讯方式为RS485。三、通讯协议MODBUS协议-RTU模式。四、协议简介MODBUS 是一个请求/应答协议,并且提供功能码规定的服务。MODBUS

5、 功能码是 MODBUS 请求/应答 PDU 的元素。它是一项应用层报文传输协议,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。 图1五、协议描述MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。图2. 通用MODBUS帧MODBUS 有两种传输模式,RTU 和 ASCII。本仪器采用RTU传输模式。(一)RTU传输模式当设备使用RTU (Remote Terminal Unit) 模式在Modbus 串行链路通信, 报文中每个8位字节含有两个4 位十六进制字符。这

6、种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU 模式串行位系列 图3. RTU 模式串行位序列Modbus RTU 报文帧 图4. ASCII 报文帧CRC 校验在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC - Cyclical Redundancy Checking) 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个8 位字节组成的一个16 位值。CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字

7、节为报文发送的最后一个子节。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC 的值,并将计算结果于实际接收到的CRC 值相比较。如果两个值不相等,则为错误。附录含有LRC 生成的详细示例。(二)MODBUS通讯模型 图5. MODBUS事务处理(无差错)图5中,此处的客户机指的就是要查询仪器信息的主机。而服务器就是仪器。 图6. MODBUS事务处理(异常响应)数据编码MODBUS 使用一个”big-Endian” 表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。例如:寄存器大小值值16bit0x1234发送的第一字节为0x12 然后0x34注:具

8、体MODBUS协议,请参照MODBUS标准。(三)本仪器协议支持支持的功能码功能码类型字长功能码描述数据访问16 bit03内部寄存器读出仪器内部寄存器描述本仪器有两个量可供读取:隧道模式:1.风向(恒为0)。2.风速(-30 m/s 到 +30 m/s)风标模式:1.风向(0 到359 )。2.风速(0 到 30 m/s)注: 1. 读取周期不宜过快,风速更新周期为12秒。2. 风向为0是为了兼容其他模式。内部用3个寄存器表示这2个量。寄存器字长值数据类型值定义值范围寄存器116 bit16 bit 整形风向0寄存器216 bit32 bit 浮点型风速-30 m/s 到 +30 m/s寄存

9、器316 bit 注:风速的正负表示风吹过仪器方向的正反。32 bit 浮点型存储方式D3D2D1D0高字节中间字节1中间字节2低字节寄存器中存储方式数值定义寄存器Bit字节位置风速寄存器2-高字节8 bitD1寄存器2-低字节8 bitD0寄存器3-高字节8 bitD3寄存器3-低字节8 bitD2功能码(0x03)描述-读保持寄存器在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求PDU说明了起始寄存器地址和寄存器数量。从零地址开始寻址寄存器。因此,寻址寄存器1-3 对应地址为0-2。将响应报文中的寄存器数据分成每个寄存器有两字节,在每个字节中直接地调整二进制内容。对于每个寄存

10、器,第一个字节包括高位比特,并且第二个字节包括低位比特。请求功能码1 个字节0x03起始地址2 个字节0x0000 至0x0002寄存器数量2 个字节1 至3响应功能码1 个字节0x03字节数1 个字节N*2寄存器值N*2 个字节注: N 表示寄存器个数错误响应差错码1 个字节0x83异常码1 个字节01,02 ,03 ,04 ,06通讯实例:读取内部3个寄存器的实例请求响应域名(十六进制)域名(十六进制)功能码03功能码03起始地址-高字节00字节数06起始地址-低字节00寄存器1值-高字节00读取数量-高字节00寄存器1值-低字节FF读取数量-低字节03寄存器2值-高字节23寄存器2值-低

11、字节A1寄存器3值-高字节3C寄存器3值-低字节DB如上,实际通讯系列为:请求系列: (HEX) 01 03 00 00 00 03 05 CB应答系列: (HEX) 01 03 06 00 FF 23 A1 3C DB 3E 5C整型解析D1D0寄存器1高字节寄存器1低字节00FF高字节低字节转换为整形后,值为: 255浮点型解析D3D2D1D0寄存器2高字节寄存器2低字节寄存器1高字节寄存器1低字节3CDB23A1高字节中间字节1中间字节2低字节转换为浮点数后,值为: 0.02675(约等于0.027)附录1. - CRC 的生成 循环冗余校验(CRC) 域为两个字节,包含一个二进制16

12、位值。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC 的值,并将计算结果于实际接收到的CRC值相比较。如果两个值不相等,则为错误。CRC 的计算, 开始对一个16位寄存器预装全1. 然后将报文中的连续的8位子节对其进行后续的计算。只有字符中的8个数据位参与生成CRC 的运算,起始位,停止位和校验位不参与CRC 计算。CRC 的生成过程中, 每个 8位字符与寄存器中的值异或。然后结果向最低有效位(LSB) 方向移动(Shift) 1位,而最高有效位(MSB) 位置充零。然后提取并检查LSB:如果LSB 为1, 则寄存器中的值与一个固定的预置值异或;如果LSB 为

13、0, 则不进行异或操作。这个过程将重复直到执行完8 次移位。完成最后一次(第8 次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8 次。当所有报文中子节都运算之后得到的寄存器中的最终值,就是CRC.生成CRC 的过程为:1.将一个16 位寄存器装入十六进制FFFF (全1). 将之称作CRC 寄存器.2.将报文的第一个8位字节与16 位CRC 寄存器的低字节异或,结果置于CRC 寄存器.3.将CRC 寄存器右移1位(向LSB 方向), MSB 充零. 提取并检测LSB.4.(如果LSB 为0): 重复步骤3 (另一次移位).(如果LSB 为1): 对CRC

14、 寄存器异或多项式值0xA001 (1010 0000 0000 0001).5.重复步骤3 和 4,直到完成8 次移位。当做完此操作后,将完成对8位字节的完整操作。6.对报文中的下一个字节重复步骤2 到5,继续此操作直至所有报文被处理完毕。7.CRC 寄存器中的最终内容为CRC 值.8.当放置CRC 值于报文时,如下面描述的那样,高低字节必须交换。将 CRC 放置于报文当16 位CRC (2 个 8 位字节) 在报文中传送时,低位字节首先发送,然后是高位字节。例如, 如果 CRC 值为十六进制1241 (0001 0010 0100 0001):例执行CRC 生成的C 语言的函数在下面示出。

15、所有的可能的CRC 值都被预装在两个数组中,当计算报文内容时可以简单的索引即可。一个数组含有16 位CRC 域的所有256个可能的高位字节,另一个数组含有地位字节的值。这种索引访问CRC 的方式提供了比对报文缓冲区的每个新字符都计算新的CRC 更快的方法。注意: 此函数内部执行高/低CRC 字节的交换。此函数返回的是已经经过交换的CRC 值。也就是说,从该函数返回的CRC 值可以直接放置于报文用于发送。(低字节首先发送,接着发送高字节)函数使用两个参数:unsigned char *puchMsg; 指向含有用于生成CRC 的二进制数据报文缓冲区的指针unsigned short usData

16、Len; 报文缓冲区的字节数.CRC 生成函数unsigned short CRC16 ( puchMsg, usDataLen ) /* 函数以unsigned short 类型返回CRC */unsigned char *puchMsg ; /* 用于计算CRC 的报文*/unsigned short usDataLen ; /* 报文中的字节数*/unsigned char uchCRCHi = 0xFF ; /* CRC 的高字节初始化*/unsigned char uchCRCLo = 0xFF ; /* CRC 的低字节初始化*/unsigned uIndex ; /* CRC 查

17、询表索引*/while (usDataLen-) /* 完成整个报文缓冲区*/uIndex = uchCRCLo * puchMsg+ ; /* 计算CRC */uchCRCLo = uchCRCHi auchCRCHiuIndex ;uchCRCHi = auchCRCLouIndex ;return (uchCRCHi 8 | uchCRCLo) ;高字节表/* 高位字节的CRC 值*/static unsigned char auchCRCHi = 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41

18、,0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1,0x81, 0x40, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,

19、0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

20、0x80, 0x41, 0x00,0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1,0x81, 0x40, 0x01,0x

21、C0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01,0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x

22、00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,0x40 ;低字节表/* 低位字节的CRC 值*/static char auchCRCLo = 0x00, 0xC0, 0xC1, 0x01, 0

23、xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,0x05, 0xC5, 0xC4,0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB,0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE,0xDF, 0x1F, 0xDD,0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0

24、xD6, 0xD2,0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,0x36, 0xF6, 0xF7,0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E,0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B,0x2A, 0xEA, 0xEE,0x2E, 0x2

25、F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27,0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1,0x63, 0xA3, 0xA2,0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD,0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA

26、9, 0xA8, 0x68, 0x78, 0xB8,0xB9, 0x79, 0xBB,0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4,0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,0x50, 0x90, 0x91,0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94,0x54, 0x9C

27、, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59,0x58, 0x98, 0x88,0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D,0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83,0x41, 0x81, 0x80,0x40;附录2. 4个字节转换为浮点数。(基于C语言)u

28、nion /共用体 float TestData_Float; /浮点数(4个字节) unsigned char TestArray4; /数值TData;注:在共用体中,上例中的浮点数和四个字节的字符数组共用一段存储空间。解析: D3D2D1D0寄存器2高字节寄存器2低字节寄存器1高字节寄存器1低字节40AC19DF高字节中间字节1中间字节2低字节转换为浮点数后,值为: 5.378程序:float Tempfloat;TData.TestArray 3= 0x40; /输入高字节TData.TestArray 2= 0xac; /TData.TestArray 1= 0x19; /TData.TestArray 0= 0xdf; /低字节Tempfloat = TData.TestData_Float; /得到浮点数5.378注:以上实例在VC6.0 测试通过,因PC 是基于小端模式存储,故低地址字节存储数据低字节,高地址字节存储数据高字节。在实际应用中,根据实际存储模式,决定存储浮点型高低字节的位置。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1