寂静回声 发表于 2017-5-8 22:21:10

基于RS485的传感器网络应用

传感器网络是随着单片机及嵌入式技术的成熟而发展起来的,现在世界传感器及仪表市场基本被智能化的传感器或仪表所垄断。究其原因就是企业信息化的需要,企业在产品选型时其中的一个必要条件就是要具有联网通信接口,最初是数据模拟信号输出简单过程量,后来看接口是不是RS232接口,因为这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能,但随后出现的RS485解决了这个问题。
RS485接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。
在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来(图1所示)。RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。

图1 RS485接口连接器
这里以总线温度传感器为例进行说明。
基本配置及接线
基于RS485的“一线总线”是美国DALLAS公司的特有技术,它实现了一条数据线进行双向数据传输,最大限度地节省了通讯线的数量,使系统布线更方便,布线成本更低。同时,一线总线丰富的产品线,使用户可以灵活的构成不同功能的系统。图2所示为LTM-8001接驳温度传感器后的RS485网络。
图2 接驳温度传感器后的RS485网络

“一线总线”按供电方式不同,有两种接线方式,即三线制和二线制,如图3所示。

图3 “一线总线”的两种接线方式
RS485总线型传感器的通讯距离
通讯距离主要与三个因素有关:
1)同一根测量电缆(允许有分支)上的数字传感器个数。
2)测量电缆的线间电容,测量电缆的导线电阻。
3)现场的信号干扰。一般说来,传感器数量越少,测量电缆的线间电容越小,测量电缆的导线电阻越小,现场的信号干扰越弱,其通讯距离越长。所以在不添加中继器的情况下,延长通讯距离的关键是选用线间电容小,屏蔽性好的通讯线缆。
粮仓传感器网络系统方案
通常一个粮仓,测温点数小于500点,使用一个LTM-8003模块基本能满足要求。每个一个LTM-8003模块有8条测试电缆接口,每条电缆可以接64个测温点。因粮仓的高度及分布的原因,为了现场安装方便,测温电缆一般采用主干传输线+测温电缆连接器+测试电缆的方式,将分为合适的长度测温电缆安装在合适的位置。
测温电缆中继器可延长测温线缆的长度,提高LTM-8000模块和测温线缆的利用率,降低成本。粮情专用组态软件是在标准组态软件基础上根据粮情行业的特殊情况发展的专业版本,可有效加快工程进度,方便的实现完美人机界面。
以常见长98米、宽35米、高6米的粮仓为例,图4是粮仓传感器网络系统构成及配置。

图4 房仓系统简图
图4中,每个LTM-8003模块可引出8根测温电缆,每根的测温电缆又分为数据传输主干线及分支测温电缆。分支测温电缆通过测温电缆连接器LTM-8120连接到数据传输主干线,每个测温电缆连接器可按星型连结方式引出2~3根长度为6~8米的分支测温电缆,每根电缆可封装少于(≤)5个的传感器。
表1所示为粮仓传感器网络系统配置说明。

表1 粮仓传感器网络系统配置说明
Modbus多传感器通信例程
Modbus是基于RS485硬件之上的一种通信协议,它可以给从机下发不同的指令,从机去执行不同的操作,这个就是判断一下功能码即可。在传感器网络中实现多机通信,无非就是添加了一个设备地址判断而已。这里以Modbus调试精灵为例,通过设置设备地址,读写寄存器的地址以及数值数量等参数,可以直接替代串口调试助手,比较方便下发多个字节的数据。
如图:串口COM5,波特率9600,无校验位,数据位是8位,1位停止位,设备地址假设为1。

图5 Modbus调试精灵
写寄存器的时候,如果要把01写到一个地址是0000的寄存器地址里,点一下“写入”,就会出现发送指令:01 06 00 00 00 01 48 0A。这里来分析一下这帧数据,其中01是设备地址,06是功能码,代表写寄存器这个功能,后边跟00 00表示的是要写入的寄存器的地址,00 01就是要写入的数据,48 0A就是CRC校验码,这是软件自动算出来了。
而根据Modbus协议,当写寄存器的时候,从机成功完成该指令的操作后,会把主机发送的指令直接返回,调试精灵会接收到这样一帧数据:01 06 00 00 00 01 48 0A。
假如现在要从寄存器地址0002开始读取寄存器,并且读取的数量是2个。点一下“读出”,就会出现发送指令:01 03 00 02 00 02 65 CB。其中01是设备地址,03是功能码,代表写寄存器这个功能,00 02就是读寄存器的起始地址,后一个00 02就是要读取2个寄存器的数值,65 CB就是CRC校验。而接收到的数据是:01 03 04 00 00 00 00 FA 33。其中01是设备地址,03是功能码,04代表的是后边读到的数据字节数是4个,00 00 00 00分别是地址为00 02和00 03的寄存器内部的数据,而FA 33就是CRC校验了。

页: [1]
查看完整版本: 基于RS485的传感器网络应用