微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于RS-485总线的温湿度监测系统——(RS485总线系统应用之5)

基于RS-485总线的温湿度监测系统——(RS485总线系统应用之5)

时间:12-15 来源:互联网 点击:
1.前言

伴随着计算机技术的进步,计算机与智能化仪器仪表之间的串行通讯接口也得到了同步发展。众所周知,早期的RS-232接口,只能完成单点对单点的单向通讯。后来诞生的RS-422接口,可以完成单点对多点的单向通讯。再后来诞生的RS-485接口,可以完成单点对多点的双向通讯。由于RS-485接口的先进性,迅速在工农业各领域得到了普及应用。本文介绍的温湿度监测系统,就是在RS-485总线架构下,由计算机主机和若干个带RS-485接口的温湿度表构成的。该系统可以对32至128点的温湿度进行实时监测。

2.硬件系统的设计

2.1硬件系统设备的选型

作为硬件系统的主角——计算机,应选择奔腾4以上的台式计算机,操作系统应选择安装Windows2000或Windows XP或更高。温湿度表应选择壁挂式且带RS-485接口的,最好是220V交流供电。如选用电池供电的,需要经常检查和更换电池,还会频发因电解质泄漏而腐蚀电路的故障,增加应用时期的维护工作量。此外,还需要一个RS-232/485转换器组网用的电缆线应采用带屏蔽线的RS-485专用双绞线电缆。

2.2基于485总线的硬件系统结构

由RS-485接口设备构成的网络,一般应采用一线到底的总线结构,不支持星形或树形等复杂的网络。各温湿度表安装地点与485总线的距离应尽量短。否则,将增加分支引线中的反射信号对总线信号的影响,造成通讯数据出错。由于计算机只配备1~2个RS-232串行接口,需要在RS-232接口处串接一个RS-232/485转换器。如果总线的长度大于300米时,应在485总线的起点和终点处的AB两线之间并接120Ω电阻,以实现总线的阻抗匹配

普通的带RS-485接口的设备,接入485总线的数量通常不能大于32个,带加强型芯片的设备可以接入128个或更多。图1是由32个设备组成的温湿度监测系统的组网结构图。

图1

3.软件系统的设计

软件系统采用VB6设计。为了保证软件系统能够不断升级,在设计系统框架时,应该对今后可能需要增加的功能模块留出扩充余地。本系统的框架结构如下所示:


3.1软件系统各界面的设计

软件系统启动时,首先显示一个欢迎界面,停留若干秒后自动转入主程序界面。如图2、图3所示。


图2


图3

各功能模块的显示界面主要有“查询温湿度数据”界面、“系统参数设置”界面和“串口调试”界面,参见图4、图5、图6。


图4


图5、图6

3.2定时读写各温湿度表数据的程序设计

在软件系统各功能模块中,最核心的部分就是定时读写各温湿度表的温湿度数据。因此,下面将该模块的程序清单详细列出。

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Public btLoCRC As Byte, btHiCRC As Byte, t1 As Long

Public WPath1 As String, WPath2 As String, WFilename1 As String, WFilename2 As String, WFilename3 As String

Public RoomNumber As String, CommNumber As String, Baudrate As String, ReadT As String, WriteT As String

Public IntMinute1 As Integer, IntMinute2 As Integer, ReadTval As Integer, WriteTval As Integer

Public Rnumber As Integer, ii As Integer, i As Integer, j As Integer, k As Integer, Crc

Dim RoomAddress(32), Roomname(32) As String, TemperatureData(32), HumidityData(32)

Private Sub ReadFiles()’读系统运行参数子程序

Open "D:Program FilesTmeasurewsboot.txt" For Input As #1 Len = 32

Input #1, WPath1, WPath2

Input #1, WFilename1, WFilename2, WFilename3

Input #1, RoomNumber, CommNumber, Baudrate, ReadT, WriteT

For i = 1 To Val(RoomNumber)

Input #1, RoomAddress(i), Roomname(i)

Form2.Frame1(i - 1).Caption = Roomname(i) & "(地址" & RoomAddress(i) & ")"

Next i

Close #1

End Sub

Private Sub Form_Load()’主窗口程序

Me.BorderStyle = 1

Me.Height = 6660’设定窗口高度

ReadFiles

Data1.DatabaseName = WPath1 & WFilename1 & WFilename2 & ".mdb"

Data1.RecordSource = "温湿度数据"

Rnumber = Val(RoomNumber)

ReadTval = Val(ReadT)

WriteTval = Val(WriteT)

IntMinute1 = Val(ReadT)

With MSComm1’打开串口

If .PortOpen = False Then

.CommPort = Val(CommNumber)’指定使用的串口

.Settings = Baudrate & "N,8,1"

.NullDiscard = False’和下一句配合使之可以发送0(零)字符

.InputMode = comInputModeBinary’发送二进制数值(=comInputModeText发送字符)

.InputLen = 8 + 1’一次性从接收缓冲区中读取所有数据(8个字节为一组)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top