基于CAN总线的分布式车间温湿度检测系统

2012-06-23 06:42邓小龙
电子科技 2012年10期
关键词:温湿度总线单片机

徐 亮,邓小龙

(1.上海交通大学机械与动力工程学院,上海 200240;2.江苏信息职业技术学院电气工程系,江苏 无锡 214153)

许多行业如纺织、卷烟、化工、食品加工等对生产车间的温湿度都有一定的要求,其中有些企业往往需要一种能够独立于空调控制系统的车间温湿度检测系统。这种车间温湿度检测系统作为空调控制的一种冗余设计或者说辅助手段,成本往往相对较低。

温湿度检测系统作为一种应用广泛的非标准化检测系统,不同的设计者、不同的应用需求,使得目前此类检测系统的设计方案呈现出种类各异、五花八门的现象。文献[1]介绍了一种应用于蔬菜大棚的温湿度测控系统的设计,以P87LPC76x单片机作为主控器,能利用PID算法,通过控制执行器加热、加湿起到调节蔬菜大棚温湿度的目的,该系统现已广泛应用于吉林松原农村蔬菜大棚,运行良好。文献[2]介绍了一种能应用于多种工业场合的温湿度检测系统的设计,该系统基于AT89C52单片机开发,能将传感器采集到的温湿度信号通过RS485网络传送至上位计算机,该系统简单实用,具有良好的性价比。文献[3]介绍了一种应用于检测安装有中央空调的建筑物的内部环境温湿度的数据采集器的设计,该检测装置独立于中央空调而工作,为评价中央空调运行质量、调试空调系统提供基础数据。该系统基于16位单片机MSP430F开发,与PC机实时通信,能通过PC机设置数据采集器参数,并控制数据采集器工作。

1 系统设计

系统自主设计了两种模块电路:(1)检测模块。每一块检测模块将被安装于车间不同的地点,用于检测车间内不同位置的温湿度,系统最多支持64个检测模块同时工作。(2)通信模块。监视计算机与各检测模块之间的通信“桥梁”,一个通信模块含有4路通信通道,每1路通信通道可连接至1个计算机COM口,实现监视计算机对检测模块的分组轮询。

检测模块与通信模块之间通过CAN总线通信。CAN(Controller Area Network)总线于1986年由德国BOSCH公司提出,是一种多主方式的串行通讯总线,最早用于汽车电路中,经过数十年的发展日趋完善,目前被广泛应用于汽车、石油、化工、制造业等许多领域,被誉为“最有前途的总线技术之一”。选择CAN总线,是因为CAN总线相比传统的RS485总线优势明显,主要体现在以下3点:(1)传统的RS485总线仅有电气协议,而CAN总线则具有完善的通信协议,易于开发。(2)传统的 RS485总线通信距离不超过1.5 km,而CAN总线的通信距离在5 kbit·s-1速率时最远可达10 km。(3)传统的RS485总线当系统有错误出现多节点同时向总线发送数据时,导致总线呈现短路从而损坏某些节点,而CAN节点在错误严重的情况下具有自动关闭输出的功能,不会影响到整个CAN 总线[4]。

在本系统中,通信模块与COM口的串行通信速率成为整个系统的通信瓶颈,但仍然考虑使用计算机COM口采集数据而非专业接口卡,主要是出于对成本的考虑。为缓解系统瓶颈的考虑,计算机安装了PCI转RS-232串口扩展卡(SYBA 9865-4S),将计算机串口扩充为4个,同时通信模块设计了4个通信通道,平均每个通信通道能与最多16个检测模块进行分组通信,以加快数据更新速率。

由于通信模块与计算机COM口采用RS232通信方式,理论上RS232通信距离为15 m,因此通信模块与计算机之间必须保持在15 m以下,实际安装1.5 m以内,通信速率可保证在38.4 kbit·s-1下稳定通信。

图1 温湿度检测系统拓扑图

2 上位机监视计算机程序的设计

计算机监视程序采用C#2010开发控制台程序,Access2010开发后台数据库。程序主要具有如下功能:(1)管理员与技术员二级用户权限。(2)温湿度警报上下限设定。(3)温湿度历史数据记录。(4)温湿度报表打印。

这里主要介绍监视程序通信部分的程序设计思路:

(1)监视程序可打开4个计算机COM口,根据设定的每个COM口轮询的检测模块编号范围向连接的COM口发送数据串并激活通信模块轮询各个检测模块,发送的数据串长度为5 Byte,如图2所示,格式为:第1 Byte为“读数据”命令字段,第2 Byte为与连接到COM口的通信通道所连接的第1个检测模块的站号,第3 Byte为与该通道所连接的最后1个检测模块的站号,第4个和第5 Byte为CRC校验码。

图2 计算机COM口发送给通信通道轮询命令数据格式

(2)通信模块的每个通道主控器轮询一遍所有与之相连接的检测模块之后,便主动向计算机返回一次数据,刷新监视程序显示的温湿度数据,某通信通道返回的数据串长度由连接到该通信通道的检测模块数目而决定,当检测模块数目为n时,如图3所示,格式为:第1 Byte为“读数据”命令字段,监视计算机通过第1 Byte可辨识此数据串为下位机返回数据,第2个到第3n+1 Byte为与该通信通道连接的所有检测模块返回的温湿度数据,连续3 Byte为一组,记录了单个检测模块的返回数据,第3n+2个和第3n+3 Byte为CRC校验码。

图3 通信通道返回给计算机的数据格式

3 通信模块的设计

3.1 通信模块的硬件设计

通信模块具有4路通信通道,可分别连接4个计算机COM口,各通信通道相互独立,大体分为主控器(4个)、RS232/TTL电平转换电路(2个)、CAN驱动器(4个)3部分组成,统一供+5 V电压:

(1)主控器选择 Microchip公司生产的PIC18F25K80单片机,该单片机资源丰富,具有32 kB的程序存储器、3648 Byte的数据存储器、1024 Byte的数据EEPROM,并集成一个CAN控制器。将二路拨码开关连接至单片机I/O口,用于设置通信模块在CAN总线上的站号,设定站号范围为00~11。

(2)通信模块通过电平转换电路MAX232芯片与计算机COM口进行数据交换,由于1个MAX232支持两组串口数据独立收发,因此可供2路通信通道同时使用。

(3)主控器PIC18F25K80自身集成一个CAN控制器,因此无需额外增加CAN控制器,仅需连接一个CAN驱动器PCA82C250即可与CAN总线进行通信。

PIC18F25K80自身集成的CAN控制器广泛支持CAN 1.2、CAN 2.0A、CAN 2.0B Passive和 CAN 2.0B Active多个版本的协议,支持DeviceNet数据字节过滤,支持标准帧数据和扩展帧数据,通信速率最高可达1 Mbit·s-1。

PCA82C250作为目前应用最广泛的CAN驱动器,其最大通信速率可达1 Mbit·s-1,最多可支持110个节点,具有多重保护功能,安全可靠。PIC18F25K80的CAN收发引脚CANRX、CANTX与PCA82C250通过2只光耦6N137连接,PCA82C250直接接入CAN总线。

图4 通信模块原理结构图

3.2 通信模块的软件设计

通信模块在收到来自上位机的命令后,开始轮询与之相连接的检测模块。通信模块向与之相连的第一个检测模块发出读数据命令,待被询检测模块返回数据后再向下一个检测模块发出读数据命令,依此类推。如果被询检测模块在1000 ms内没有返回数据,则重新发送读数据命令,重复3次后如果被询检测模块依然没有返回数据,则检测模块便自动将读数据缓冲数组内相应单元全部置FF,并将相应标志位置1,在下次轮询时,自动跳过此检测模块,待检修人员排除故障后,再通过监视计算机手动发出清除标志位命令或者将通信模块断电复位,即可恢复通信模块与所有检测模块的通信。最后所有检测模块读取完毕,通信模块自动将数据上传至上位监视计算机。程序流程图如图5所示。

通信模块向检测模块发出的读数据命令由2 Byte组成:第1 Byte是模块通道的CAN站号,第2 Byte是被询检测模块的CAN站号。由于检测模块向被询模块发出的命令仅有读数据命令一条,因此无需添加命令代码字节。

图5 通信模块的程序流程图

在CAN 2.0B规范中,数据帧有两种帧格式:标准帧数据格式和扩展帧数据格式,两者的区别在于前者具有11位标识符而后者具有29位标识符,如图6所示,标准帧格式仲裁段标识符仅有11位,而扩展帧格式仲裁段标识符比标准帧格式仲裁段标识符多出18个标识符,即29个标识符。CAN控制器会根据用户对寄存器的设定值按帧格式自动生成输出脉冲序列。对于开发人员而言,前者仅需要配置2 Byte的TX识别码,而后者需要配置4 Byte的TX识别码,用于描述该帧数据在总线上的“数据身份”。鉴于通信与检测模块之间的通信关系比较简单,这里选用标准帧数据格式,2 Byte的TX识别码分别为数据源和数据目标地址,即对于通信模块而言,第1 Byte定义为通信模块某通道的站号,第2 Byte定义为某时刻该通信通道所访问的检测模块站号。

图6 CAN2.0B规范中两种数据帧格式

4 温湿度检测模块的设计

4.1 温湿度检测模块的硬件设计

检测模块大体可分为主控器、温度传感器、湿度传感器、CAN驱动器4个部分:

(1)主控器同样采用了PIC18F25K80单片机。6路拨码开关连接至单片机的I/O口,用于设定检测模块在CAN总线上的站号,设定站号范围为11000000~11111111。

(2)温度传感器采用Dallas公司生产的一线式数字温度传感器DS18B20,该传感器它具有微型化、低功耗、高性能、抗干扰能力强等优点,DS18B20可直接将温度转化成串行数字信号给单片机处理,温度测量的范围为-55~+125℃,测温分辨率可达0.0625℃,测温范围与精度完全符合项目要求[5]。

(3)湿度传感器采用 Honeywell公司生产的HIH4000相对湿度传感器,该传感器内部集成了信号处理功能电路,可将相对湿度值变换成电容值,再将电容值转换成线性电压输出。PIC18F25K80单片机片内集成一个8路输入的A/D模块,可将HIH4000输出的线性电压模拟量直接转换为一个12位的数字量并存储在PIC18F25K80单片机中。

(4)与通信模块相同,PIC18F25K80的CAN收发引脚CANRX、CANTX通过2只光耦6N137与CAN驱动器 PCA82C250相连,PCA82C250直接接入 CAN总线。

图7 温湿度检测模块原理结构图

4.2 温湿度检测模块的软件设计

检测模块不断读取温度传感器和湿度传感器采集的数据,每次采集完温度与湿度数据后,检测是否有来自通信模块的读数据命令,如果有则将采集的温度与湿度数据返回给通信模块,如果没有则继续读取温度传感器和湿度传感器采集的数据,程序流程如图8所示。

图8 温湿度检测模块程序流程图

与通信模块一致,检测模块的CAN通信数据帧格式同样采用标准帧数据格式。其中,2的TX识别码分别设定为数据源地址和数据目标地址,即第1 Byte被设定为检测模块站号,第2 Byte被设定为与之连接的通信通道的站号;数据字节仅使用3个,第1 Byte和第2 Byte高4位共计12位用于存放来自温度传感器的数据,第2 Byte的低4位和第3 Byte共计12位用于存放来自湿度传感器的数据,将温湿度传感器取得的两个12位数字量压缩为3 Byte并写入CAN驱动器发送缓冲区可有效提高数据更新速率。

5 结束语

现场总线技术的发展、单片机功能的增强、传感器线性化与集成度的提高等技术,为系统的设计带来了便利,也为该检测系统的稳定性提供了保障;Dot Net技术的发展为快速开发稳定可靠的计算机应用程序提供了条件。经开发设计,系统目前尚处于小规模试运行阶段,经过一段时间的试运行证明本系统具有稳定可靠、通信距离远、抗干扰能力强等诸多优点,能满足企业需求。

[1]马善农,王怀平.基于P87LPC76x系列单片机的温、湿度测控系统[J].电子产品世界,2002(4):43,57.

[2]刘丙友,凌有铸.基于单片机AT89C52的多路温、湿度测试系统[J].自动化与仪表,2007,22(3):80 -82.

[3]李延平.基于单片机的低功耗温湿度数据采集器的研制[J].仪器仪表学报,2002,23(Z2):624 -625.

[4]李真花,崔健.CAN总线轻松入门与实践[M].北京:北京航空航天大学出版社,2011.

[5]黄保瑞,贾之豪,邵婷婷.基于AT89C51单片机的温度测控系统设计[J].现代电子技术,2011(6):42 -43,147.

猜你喜欢
温湿度总线单片机
基于AT89C51的数字型蚕用温湿度计的设计
基于单片机的SPWM控制逆变器的设计与实现
基于DSP的多路温湿度监测系统
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
基于温湿度控制的天气预测装置
蒸发冷却温湿度独立控制空调系统的应用
CAN总线并发通信时下位机应用软件设计