1 系统的总体结构及功能
本系统的总体结构框图如图1所示,为了满足多通道数据采集和处理,系统采用了一台上位机和多个下位机的集总式结构。上位机采用AT89S51单片机,下位机采用AT89C2051单片机。上位机与下位机之间采用RS 485总线通信。其中上位机系统配置液晶显示屏、按键。按键用于调整各个点的预置温度和系统时间,查询各个点的预置温度值、实际温度值以及调温设备运行情况,输入下位机的控制信息。液晶显示屏用于显示系统时间,以及各点的预置温度值、实际温度值和调温设备运行情况,如1 min内没有任何操作,则液晶显示屏上开始循环显示各个点的实际温度值、预置温度值以及调温设备运转情况,每一个点的数据在液晶屏上显示的时间是8 s。下位机负责温度采集和控制调温设备运转,温度传感器采用DSl8820。上位机首先将预置温度值发送到下位机,下位机将实际温度与预置温度进行比较后输出调温设备控制信号,并将实际温度与调温设备运转状态发送到上位机。
2 硬件电路设计
2.1 下位机电路设计
下位机电路主要由三部分构成:温度采集电路、RS 485总线接口电路、调温设备的控制电路,其电路原理图如图2所示。
2.1.1 温度采集电路
温度传感器采用DSl8820,其是一种单总线智能型温度传感器,只有三线接口,分别为地线、数据线、电源线。DSl8820输出信号为数字信号,处理器与DSl8820通过数据线来完成双向通信,因此采用DSl8820使得电路十分简单。温度变换功率可以来源于外电源,也可以来源于数据总线,总线本身也可以向所挂接的DSl8820供电。DSl8820的电压范围为+3.O~+5.5 V,测温范围为一55~+125℃,固有的测温分辨率为O.5℃,最高精度可达0.067 5℃,最大的转换时间为200 ms。一条总线上面可以挂接多个Dsl8820实现多点测温。本系统中每台下位机只接一个DSl8820。
采用单片机的P3.7口与DS18820进行通信,采集温度信号,由于其是双向通信,内部结构是开漏,所以在总线上要加一个10。kΩ上拉电阻。
2.1.2 RS 485总线接口电路
本系统上位机与下位机之间采用RS 485总线通信,其通信距离可达1 200 m。总线驱动芯片采用MAX485,RO接单片机的RXD,DI接TXD,MAX485芯片的发送和接收功能转换由芯片的RE,DE端控制。DE=1时,MAX485处于发送状态;RE=O,DE=0时,芯片处于接收状态。将RE,DE接在单片机的一根口线P3.4上。
在上电复位时,为了避免分机咬总线的情况,总线上的各分机应处于接收状态。而在上电复位时,单片机各端口处于高电平状态,硬件电路稳定也需要一定的时间,则可能向总线发送信息,为了避免这种情况,将P3.4口接一个74HCl4反相器,使MAX485上电时处于接收状态。另外在数据传输之前,先要通过一个低电平起始位实现握手,给R0外接10 kΩ上拉电阻,防止干扰信号误触发产生负跳变,使单片机进入接收状态。总线上面挂接多个分机,其中任何一只芯片故障就可能将总线“拉死”,因此在MAX485的A,B口线与总线之间各串接一只20Ω的电阻实现总线隔离。如果是最后一台分机,则在差分端口A,B之间接120 Ω的平衡匹配电阻,减少由于不匹配而引起的反射,并且能够吸收噪声,抑止干扰,保证通信质量。注意不能在中间分机节点上并接平衡匹配电阻。
2.1.3 输出控制电路
上位机向下位机发送命令和预置温度,下位机接收到之后,解析命令,并将预置温度与实际温度比较,根据命令和比较结果,利用P3.5口控制调温设备。当P3.5输出低电平时,U1导通发光,使晶体管导通,从而T1导通,驱动继电器K工作,使调温设备导通工作。当P3.5为高电平时,U1不导通,晶体管不导通,T1也截止,继电器不通电,调温设备不工作。
2.2 上位机电路
上位机电路包括RS 485总线接口电路、键盘电路和液晶显示电路。其中总线接口电路与下位机总线接口电路基本一致。其电路原理图如图3所示。下面介绍键盘电路和显示电路。
2.2.1 键盘电路
上位机电路中提供6个按键用于温度设置、温度查询、系统时间设置、工作/待机设置。它们是“ON/OFF”键、“+”键、“—”键、“SET”键、“ENQ”键、“TIME”键,分别与AT89S51的P2.0,P2.1,P2.2,P2.3,P2.4,P2.5相连。“SIET”键用于选择下位机,之后可按“ON/OFF”键使对应的下位机工作/待机,也可按“+”,“一”键给该分机设置预置温度。“ENQ”键用于查询下位机的预置温度、实际温度值和调温设备运转状态。设置系统时间需先按“TIME”键选择时或分,然后利用“+”,“一”键设置系统时间。
2.2.2 显示电路
上位机系统采用16×2字符型液晶模组(LCM),其为按键操作提供可视化依据,内部集成了LCD控制器、LCD驱动器、LCD显示装置。LCM与单片机的接口电路比较简单,单片机的P1口接LCM的数据总线,P3.5,P3.6,P3.7用于控制LCM。LCM的第一行显示系统时间,第二行显示分机的设置温度、实际温度和工作状态。如果在1 m内没有任何操作,则液晶显示屏上开始循环显示各个点的实际温度值、预置温度值以及工作状态,每一个点的数据在液晶屏上显示的时间是8 s。
3 RS 485通信协议
为实现上位机与多台下位机通信可靠稳定,上位机与下位机通信波特率都为9 600 b/s,通信方式均为串行工作方式3,每帧通信数据包括1个起始位,1个停止位,8个数据位,1个奇校验位。通信模式采用主/从方式,上位机为主机,下位机为从机,主机地址为1,从机地址是2,3,4,…;主机与从机之间采用一问一答方式,从机之间不能相互通信。每个上行/下行的数据包的字节个数都是一样的,从机收到数据包后向主机回复一个数据包。每个数据包长度为4 B,下行数据包格式:地址信息(1 B)、命令信息(1 B)、温度设置值(1 B)、检验码(1 B);上行数据包格式:主机地址信息(1 B)、命令应答信息(1 B)、实测温度值(1 B)、检验码(1 B)。命令信息和命令应答信息就是指从机的工作状态。
主机采用轮询方式访问各从机,在发出指令后,主机进入查询状态,等待从机应答。从机不断查询总线,如主机访问地址与从机地址相符,并且校验通过,则执行指令,并保存设置温度值,然后将相关信息以上行数据包格式发回主机。如不是本机地址或校验码错误,则丢弃指令及数据。传输过程中的误码校验采用校验和的方式,即先将要发送的数据包的所有字节相加,然后截短到一个字节长度。
4 系统软件设计
4.1 下位机程序设计
下位机程序主要包括DSl8820传感器温度采集子程序、串行通信子程序、输出控制子程序。主程序循环调用温度采集子程序和输出控制子程序,利用串行中断来接收上位机发送的信息并回复主机(上位机),接收数据包的长度是4 B,发送数据包的长度也是4 B。其串行中断接收发送程序流程图如图4所示。
4.2 上位机程序设计
上位机程序主要包括键盘扫描子程序、串行通信子程序、液晶显示子程序。
利用T0产生50 ms定时中断来进行时间换算、实时更新液晶显示屏上的信息;在主程序中利用循环来查询按键、向下位机发送数据;利用串行中断来接收下位机的回复数据。上位机接收数据过程与下位机接收数据过程一样,其主程序流程图如图5所示。系统采用一问一答的通信方式,上位机是主机,在向从机(下位机)发送完数据之后要调用延时程序等待从机的回复。
5 结 语
该系统能够实现多点温度检测控制,操作方便,配置简单,有效地节省了人力物力,实现自动化,具有通用性,可用于多种场合,具有很好的实用价值。