基于CAN总线的远程温度监测系统设计
2015-12-29重庆工程职业技术学院
重庆工程职业技术学院 张 丽
中煤科工集团上海有限公司 马 洁
基于CAN总线的远程温度监测系统设计
重庆工程职业技术学院 张 丽
中煤科工集团上海有限公司 马 洁
为了更好的采集远程的多节点温度,设计了基于CAN总线的远程温度监测系统,实现了对多点温度的监测。系统以STM32F103为主控制器,选用DS18B20作为温度传感器,基于CAN总线协议实现了主从节点的数据采集和传输。并且利用串口通信技术与上位机通信,实现了远程温度的存储,历史数据的显示、温度波形显示等功能。
CAN;STM32F103;温度采集
0 引言
随着生产技术的不断发展和提高,实时温度的采集和历史温度的研究对实际的生产生活影响越来越大。现在,温度监测系统已经广泛地应用于工业、农业,军事等多个领域,在粮仓、大棚种植和陶瓷烧制等对温度要求严格的领域应用尤其广泛。
20世纪70年代初,温度监测系统大多数是基于RS485总线实现的,虽然价格低廉,维护方便,但是其每个节点的总线地址是确定不变的,挂载的节点越多,效率越低,不利于减小系统的冗余,主节点的错误会影响到整个系统的性能。而CAN总线作为一种有效支持分布式控制和实时控制的串行通信网络,可利用双绞线将所有节点串在一起,不仅避免了单个设备与主机相连的瓶颈,而且网络任意节点均可在任意时刻主动与其他节点通信,系统实现大大简化。
因此,本文设计了基于CAN总线的多点远程温度监测系统,主要以STM32F103为主控制器,选用多个DS18B20实现主从节点的数据采集和传输,并且利用串口通信技术与PC上位机通信,实现远程温度的存储,历史数据的显示、温度波形显示等功能。既克服了DS18B20传输距离短、不适宜远距离传输的缺点,也改善了传统的集成温度传感器构成的温度测量系统连线令人困扰、造价高昂且制作过程复杂、测量误差较大的缺点。
1 系统总体设计
本系统为总线型拓扑结构,PC机作为主节点,多个温度采集节点作为从节点,网关节点作为协议转换器实现PC机与温度采集节点的无缝通信。通过温度采集节点监测多个分布在不同位置的温度信息,把温度采集节点的温度通过CAN通信模块由CAN总线发送至网关节点,网关节点通过协议转换,将CAN协议格式的数据转换成为串口可以识别的数据,然后通过串口发送至上位机,将采集到的多点温度存入数据库,实现温度的实时显示、历史数据的查询和温度波形显示等操作。同时,上位机软件也可通过串口发送命令到温度采集节点,实现对温度采集节点进行控制。图1即为整个系统的结构框图。
图1 温度监测系统整体结构框图
2 系统硬件设计
温度监测系统主要分为网关节点和温度采集节点两部分。
2.1 网关节点硬件设计
网关节点模块框图如图2所示,主要包括MCU模块,电源模块、CAN通信模块和串口通信模块。MCU模块主要采用STM32F103芯片作为主控制器,由晶振电路、复位电路等组成。电源模块为外部输入的+5V电压,经过线性压降器件AMS1117-3.3V后降为+3.3V,为STM32F103等器件提供工作电源。CAN通信模块包括CAN控制器和CAN收发器模块。串口通信模块主要是采用MAX3232,具有低功耗,高数据速率等特性,可实现TTL电平与232电平的转换。
2.2 温度采集节点硬件设计
图2 网关节点模块框图
温度采集节点包括电源模块、MCU模块和CAN通信模块。DS18B20作为“单总线”数字温度传感器,其测量温度范围为-55℃~+125℃,测温分辨率可达0.0625℃,主要由64位光刻ROM、温度传感器、非易失性温度报警触发器和配置寄存器四部分组成。每个DS18B20的64位序列号光刻ROM均不同,因此在一根总线上可以挂接多个DS18B20,实现多点温度监测,极大节约了主控制器的I/O口资源。本系统采用多个DS18B20实现温度采集。
3 系统软件设计
本系统软件包括温度采集节点、网关节点和上位机软件三部分构成。
3.1 温度采集节点软件设计
温度监测节点的程序主要完成STM32F103初始化,DS18B20温度读取,LCD5110本地显示和CAN通信等功能。实现的主要功能是在接收到与自己节点标识符相同的网关节点发送来远程帧时,根据接收到的信号不同,完成不同的功能。当获取的信号为控制信号时,控制指定的LCD亮灭;当获取的信号为温度读取信号时,将预先读取的多个DS18B20温度信号,通过CAN总线传送到网关节点。
3.2 网关节点软件设计
CAN网关节点的功能是实现CAN协议与串口协议的转换。可以接收上位机发送的命令,向温度采集节点发送远程帧查询温度值;也可以接收温度采集节点发送来的温度数据,转换成为串口可以发送的数据,然后发送至上位机,实现上位机与温度采集节点的无缝通信。CAN网关节点的主程序如图3所示。
图3 CAN网关节点主流程图
3.3 上位机串口通信及监测
上位机采用VC++6.0 MFC中的MSComm控件,来编写串口通信程序,实现串口数据的传输和接收。采用ADO对象连接Access数据库,将实时采集的温度数据存入数据库中,同时实现实时数据的曲线显示;使用Data Time Picker控件作为历史数据查询起止时间的选择容器,在选定历史数据查询时间段以后,在List control 控件中实现历史数据的表格显示。利用VC++中相关绘图语句绘制温度波形显示区域,实现历史数据的波形显示。
当程序运行以后,选择串口属性后,打开串口,就可以看到实时温度数据显示在接收编辑框中,与此同时,实时温度将存入数据库中,直观明了,每隔1 min清零显示;波形显示区可以显示实时温度曲线。当查询历史数据时,只要选择好查询的历史时间段,按下历史温度表格显示按钮,可以显示历史数据表格;同理,当按下历史数据曲线显示时,可以显示历史数据曲线。
4 结束语
本文设计了基于CAN总线的远程温度监控系统,完成了远程温度的多点监测,具有功耗小,配置简单,精度较高的优点,可广泛应用于粮仓、公司楼宇等环境中,具有很好的应用前景。
[1]丁恩杰,马方清.监控系统与现场总线[D].徐州:中国矿业大学,2003:55-89.
[2]STM32 Microelectronics.STM32F103_Datasheet.
[3]DDALLAS.DS18B20 DataSheet,www.alldatadatasheet.com.
张丽(1981—),女,工学硕士,讲师,工程师,重庆工程职业技术学院电子教研室教师,研究方向:电子技术及应用、通信与信息系统。