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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

隧道照度检测仪说明及MODBUS通讯设置.docx

1、隧道照度检测仪说明及MODBUS通讯设置 隧道照度检测仪Tunnel Illumination Detector1、概述隧道照度检测仪,采用了最先进的超大规模集成电路技术、专有数字模拟混合通讯技术而设计的完全智能化的检测仪器。照度检测仪技术先进、稳定性高、具有通讯和报警功能、安装维护方便,广泛应用于隧道口的照度检测。2、技术特点完全实现了隧道照度检测的数字化、智能化;4-20mA电流信号和标准RS485数字接口,可实现与计算机通讯;数码管显示检测值,观看直观、方便;现场维护安全、方便、快捷;3、照度检测仪外形及尺寸平面图4、安装示意图隧道照度为一体式传感器,无任何移动部件。安装位置要求车行方向

2、的右侧壁,安装距离洞口两倍隧道净高的侧壁上,建议安装高度为3米。5、面板组成,(1)5位数码管显示检测数据及设定报警参数单位勒克斯(LUX);(2)2个按键:设定按键SET和调节按键REG, 查看和设置JD1和JD2报警点;(3)电源接口:220VAC,50Hz;(4)电源指示灯:指示电源是否正常;(5)短路保护:2A熔断保险管(6)电源开关:打开/关闭仪器电源;(7)信号接口:两路报警开关量输出JD1和JD2, 一路RS485数字输出口(参照协议文档), 一路模拟量4-20mA输出;6、设置报警操作(1)正常工作时,数码管实时测量值;(2)按键用于查看和设置报警值;(3)工作状态下,短按RE

3、G查看报警设定值,3秒后显示实测值;(4)工作状态下,长按SET键(长按2秒以上,直至听到嘀音)进入报警值设定:数码管共有5位,从左至右依次为1、2、3、4、5,首先第5位数码管闪烁;如图 最后个2不停闪烁; 通过REG按键循环数值09;通过SET按键循环数码位51;设定好报警值后,长按SET键(长按2秒以上,直至听到嘀声音),保存报警值;每次按键均有声音提示,表示按键操作成功;设置的报警值,在下次开机后生效; 5.报警志规定(1)实测值 报警值,报警触点吸合;实测值 报警值,报警触点断开;(2)报警触点负载容量:1A 250VAC 或 1A 30VDC;7、电流转换参数对照表模拟量输出隧道照

4、度传感器模拟量输出为4-20毫安电流,阻抗不超过500欧姆,电流与照度呈线性关系8、隧道照度检测仪技术参数测试范围0-20000LUX测量角度垂直20 水平20 测试精度1%-5% 环境温度-40 - 65 环境湿度0100%RH(无冷凝) 数值显示LCD实时显示通信接口一路4-20mA,最大阻抗500欧姆一路数字量 RS485 输出一路继电器输出、故障报警 供电电压220VAC 50HZ功耗2W防护等级IP66安装方式侧壁安装整机重量3KGMODBUS协议-RTU模式 一、通讯端口定义起始位1 bit数据位8 bit奇偶校验位EVEN停止位1 bit波特率9600二、通讯方式仪器与外部设备通

5、讯方式为RS485或RS232,默认通讯方式为RS485。三、通讯协议MODBUS协议-RTU模式。四、协议简介MODBUS 是一个请求/应答协议,并且提供功能码规定的服务。MODBUS 功能码是 MODBUS 请求/应答 PDU 的元素。它是一项应用层报文传输协议,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。 图1五、协议描述MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。图2. 通用MODBUS帧MODBUS 有两种传输模式,RTU 和 ASCII。本仪器采

6、用RTU传输模式。(一)RTU传输模式当设备使用RTU (Remote Terminal Unit) 模式在Modbus 串行链路通信, 报文中每个8位字节含有两个4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU 模式串行位系列 图3. RTU 模式串行位序列Modbus RTU 报文帧 图4. ASCII 报文帧CRC 校验在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC - Cyclical Redundancy Checking) 算法的错误检验域。CRC 域检验整个报文

7、的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个8 位字节组成的一个16 位值。CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为报文发送的最后一个子节。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC 的值,并将计算结果于实际接收到的CRC 值相比较。如果两个值不相等,则为错误。附录含有CRC 生成的详细示例。(二)MODBUS通讯模型 图5. MODBUS事务处理(无差错)图5中,此处的客户机指的就是要查询仪器信息的主机。而服务器就是仪器。 图6. MODBUS事务处理(异常响应)数据编码MODBUS

8、 使用一个”big-Endian” 表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。例如:寄存器大小值值16bit0x1234发送的第一字节为0x12 然后0x34注:具体MODBUS协议,请参照MODBUS标准。(三)本仪器协议支持支持的功能码数据访问字长功能码描述16 bit03内部寄存器读出写单个线圈16 bit05雨刮继电器(仅照度仪)仪器内部寄存器描述本仪器有一个量可供读取:cd/lux(照度或亮度)。内部用2个寄存器表示这个量。寄存器字长值数据类型值定义值范围寄存器116 bit32 bit 浮点型CD/LUX0至7000 cd/0至20000 Lux寄存器216

9、bit32 bit 浮点型存储方式D3D2D1D0高字节低字节寄存器中存储方式数值定义寄存器Bit字节位置CD/LUX寄存器1-高字节8 bitD1寄存器1-低字节8 bitD0寄存器2-高字节8 bitD3寄存器2-低字节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例:读取内部2个寄存器的实例请求响应域名(十六进制)域名(十六进制)功能码03功能码03起始地址-高字节00字节数04起始地址-低字节00寄存器1值-高字节EB读取数量-高字节00寄存器1值-低字节85读取数量-低字节02寄存器2值-高字节40寄存器2值-低字节51如上,实际通讯系列为:请求系列: (HEX) 01 03 00 00 00

11、 02 C4 0B应答系列: (HEX) 01 03 04 EB 85 40 51 2E 02浮点型解析D3D2D1D0寄存器2高字节寄存器2低字节寄存器1高字节寄存器1低字节4051EB85高字节低字节转换为浮点数后,值为: 3.28功能码(0x05)描述-写单个线圈(雨刮继电器)内部雨刮器继电器操作:地址为 0x00000xff00 打开继电器0x0000 关闭继电器(不支持,因为雨刮器有延时自动关闭功能。)请求功能码1 个字节0x05输出地址2 个字节0x0000 至0x0000输出值2 个字节0xff00或0x0000响应功能码1 个字节0x05输出地址2 个字节0x0000 至0x0

12、000输出值2 个字节0xff00或0x0000错误差错码1 个字节0x85异常码1 个字节01或02 或03 或04例:请求响应域名(十六进制)域名(十六进制)功能码05功能码05输出地址-高字节00输出地址-高字节00输出地址-低字节00输出地址-低字节00输出值-高字节FF输出值-高字节FF输出值-低字节00输出值-低字节00如上,实际通讯系列为:请求系列: (HEX) 01 05 00 00 FF 00 8C 3A应答系列: (HEX) 01 05 00 00 FF 00 8C 3A附录1. - CRC 的生成 循环冗余校验(CRC) 域为两个字节,包含一个二进制16 位值。附加在报文

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

14、或操作。这个过程将重复直到执行完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 寄存器异或多项

15、式值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 语言的函数在下面示出。所有的可能的CR

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

17、冲区的字节数.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 查询表索引*/wh

18、ile (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,0x00, 0

19、xC1, 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, 0x40, 0x

20、01, 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, 0x80, 0x

21、41, 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,0xC0, 0x80

22、, 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, 0x00, 0xC1

23、, 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, 0xC3, 0x0

24、3, 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, 0xD6, 0xD

25、2,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, 0x2F, 0xEF,

26、 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, 0xA9, 0xA8,

27、 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, 0x5C,0

28、x5D, 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语言)union /共用

29、体 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; /得

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

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