×
单片机 > 单片机程序设计 > 详情

基于RS-485总线的数据采集系统

发布时间:2020-08-26 发布时间:
|
  1 硬件设计

  1.1 系统整体框图

  系统实质上是一个集散控制系统,更准确地说是一个远程数据采集系统,系统概念设计图如图1所示,系统整体框架图如图2所示。

   

 

  1.2 系统模块设计

  1.2.1 信号获取模块

  系统采集大坝坝内各个方位的形变,这种形变反映出各个方位的压力值。选用NZS - 25系列差阻式应变计,它是一种大量程大应变计,适用于大坝及其他混凝土建筑物内部、钢结构等的应变量测量。它与一般压力传感器的结构不同,是通过测量比值而得到压力值,其基本结构如图3所示。

  

 

  图3中,R1、R2为敏感电阻,其基准电阻值为40Ω,在其没有受压时,2个电阻的阻值都不会发生变化,但是当受到外界作用的压力时,R1的电阻值会随着受到压力的不同而发生变化阻值保持不变,这样R1和R2上的压降不同,通过2次测量分别得到R1、R2上的压降,再通过程序计算出它们的比值,就可以反映压力的变化。

  1.2.2 信号放大模块

  系统采用的压力传感器输出的电压信号为mV级,电压信号过小,不能直接进行A/D转换,因此要对其进行放大,以达到转换器的要求。选用专用仪表放大器AD620芯片。此芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。AD620放大器向A/D转换器提供的模拟输入电压为-2~2V,满足A/D转换器的要求。

  1.2.3 A/D转换模块

 

  转换模块选用ICL7135芯片,其典型配置如图4所示。

  ICL7135的时钟由下位单片机的ALE端提供,因为下位机在P0、P2口没有扩展外围程序存储器和数据存储器,因此端提供的时钟频率为系统时钟频率的1/12;此外,由于前级放大部分采用AD620,它是双电源供电,所以ICL7135也是双电源供电,且他们的电源要求相同。ICL7135和下位单片机的连接采用串行连接,如图5所示。

  

  1.2.4 电源模块

  由于系统下位机位于大坝现场,电源无法从现场取得,必须由上位机提供,因此电源解决方案如图6所示。

   

  在主节点部分,通过总电源处理模块,将交流220V转换为直流12V,上位机的电源由自身的5V稳压模块提供,通过总电源线将12V直流输送到下位机,下位机及其外围器件所需的电源都由下位机的电源模块提供,个别器件所需的特殊电压,由专用模块获得。

  1.2.5 通信模块

  总线采用双绞线差分传输方式,可连接成半双工和全双工方式,最远传输距离为112km。系统数据通信采用半双工通信方式,即整个网络中任一时刻只能由一个节点成为主节点,处于发送状态,并向总线发送数据,其他的节点都必须处于接收状态,如果2个或2个以上节点同时向总线发送数据,将导致所有发送方发送数据失败,因此通信网一般采取主从式即主节点控制整个网络的通信时序,使总线上的各节点分时使用总线,解决总线数据传输的冲突。

  总线驱动芯片选用RS - 485接口芯片SN75LBC184,它采用单一电源,电压为3~515V时都能正常工作。与普通的芯片相比,它不但能抗雷电的冲击,而且能承受高达的静电放电冲击,片内集成4个瞬时过压保护管,可承受高达的瞬态脉冲电压,因此它能显着提高防止雷电损坏器件的可靠性。对一些环境比较恶劣的现场,可直接与传输线相接,而不需要任何外加保护元件。该芯片还有一个独特的设计,当输入端开路时,其输出为高电平,这样可保证接收器输入端电缆有开路故障时,不影响系统的正常工作。另外它的输入阻抗为RS - 485标准输入阻抗的2倍(≥24kΩ),故可以在总线上连接64个收发器。芯片内部设计了限斜率驱动,使输出信号边沿不会过陡,使传输线上不会产生过多的高频分量,从而有效扼制电磁干扰。总线驱动芯片和单片机的连接采用间接连接,如图7所示。

  

  1.2.6 数据存储模块

 

  该模块用来存储下位机传过来的压力数据。系统对数据存储器的基本要求是存储容量要大,掉电数据不容易丢失,能保存较长时间,易于扩展容量。基于以上要求,选用了遵循总线串行扩展技术的24C256。单片机和24C256之间的数据交换完全遵照IIC总线的规定,即单片机作为主机,24C256作为从机,所有操作都是由SDA和SCL 2个脚位的状态(共有4个状态:开始、停止、数据和应答)来确定。24C256和单片机的连接图如图8所示。

   

  1.2.7 时钟模块

  采用实时时钟芯片DS12C887为系统产生时间基准,它和单片机的连接如图9所示。可当作单片机的外部RAM处理,通过P0口对DS12C887进行操作,通过其中断引脚IRQ向单片机发出中断,使单片机读出时间。

   

  2 软件设计

  系统软件框图如图10所示。一级目录分为上位机程序、通信程序和下位机程序;二级目录分为数据采集程序模块、模拟多路开关控制程序模块、数据处理程序模块、下位机通信程序模块、上位机通信程序模块、显示程序模块、存储程序模块、时钟程序模块以及键盘控制模块。每个二级程序模块又由更小的函数组成,这样的设计方法容易修改和测试。

  

 

  3 结语

  软件程序设计按照自顶向下的原则,按功能模块化划分采用C语言编程实现各模块功能,以子程序的形式进行封装对外部提供规定的接口,再按照系统流程要求进行模块组合最后实现整个系统。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向