3.2RS485集线器设计(见图3)
图3 RS485集线器结构图
集线器主要用来进行RS485通信距离扩展。RS485通信的有效距离是1.2km,实际通信中可能达不到1km,为了对楼宇内每一个房间进行控制,有必要对串行通信距离进行分站扩展。因此集线器与中继器和下面的温度控制器的通信都是串行通信。集线器具体工作是把其扩展的所有温控器的现场温度采集上来并储存,当中继器需要时转发上去,同时处理一些上层的控制命令。在实际项目中,一般一个楼层只需一个集线器就可以满足要求。硬件配置方面直接采用了有双串口的单片机ATmega162,具备1K的RAM、16K的flash及价格等都能满足要求。
3.3温度控制器设计(见图4)
图4 温控器结构图
温控器负责采集现场各个房间的温度,并根据监控要求,采用温度控制算法,实现温度的自动控制。主要包括温度采样部分、控制执行机构、键盘显示部分及单片机处理部分。本设计温度的控制是控制单片机的三个I/O口分别驱动三个继电器,用继电器控制中央空调的风机盘管实现高、中、低三种风速控制,达到设定温度的恒温控制。温控器可以添加键盘和液晶显示部分,可以在各个房间进行温度手动设定,并可以将设定的数据回传给监控平台。房间温度采样通过读取房间内三个不同位置的数字温度传感器18B20的检测温度,再求出平均值获得。
3.4软件设计
软件的设计可简单分为四个部分:客户端的监控平台的设计、以太网中继器的通信程序设计、RS485集线器的通信程序设计、温控器的程序设计。由于整个系统的软件设计较为复杂,笔者不一一介绍,这里着重介绍一下设计的亮点—以太网中继器的网络通信程序设计。
以太网中继器的程序设计包括与上位监控平台的网络通信和与下面集线器的串行通信。
网络通信又包括网卡芯片的驱动程序和TCP/IP协议的嵌入。网卡芯片ENC28J60的驱动程序较为简单,主要是对相关寄存器进行配置,配置完毕后收发数据即可,读者可自行查阅相关资料,这里不再赘述。然而整个TCP/IP协议栈相当复杂,在实际应用中我们可以根据需要对协议栈进行相应的裁减。为了方便我们选择已有的嵌入式协议栈—uIP协议栈进行移植。
(1)uIP协议栈简介
uIP协议栈是瑞典计算机的一个小组开发,最新为1.0版本(见图5)。它去掉了TCP/IP协议簇中很多不必要的协议,减少了代码量,降低了对硬件的需求,非常适合于8位或16位嵌入式系统的移植,uIP只保留了能维持网络通信的基本协议:TCP传输控制协议、IP网际互联协议、UDP用户数据报协议、ARP地址解析协议、ICMP网络控制报文协议。另外还有一些扩展的应用程序协议如HTTP超文本传输协议、DHCP动态主机配置协议等等。
图5 uIP体系结构图
(2)uIP协议栈应用接口(见图6)
uIP协议栈提供三个与系统底层接口的函数:uip_init();、uip_input();和uip_periodic();。uip_init()函数用于协议栈的初始化。其他两个函数需要底层的网络驱动设备的支持。当网络驱动设备收到一个数据包后,调用uip_input()函数处理该包,当函数返回时如果需要发数据则调应用程序来发送,当需要ARP支持时,还要考虑更新ARP表或发出ARP请求和回应;系统通过调用uip_periodic()函数来对已有的连接进行周期性轮询,处理数据的IP分组重装超时、数据超时重传、超时关闭连接和查询应用程序,然后应用程序提供回应函数UIP_APPLICALL()给uIP,当网络事件或者轮询事件发生时调用该函数,如果应用程序要发送数据,则构建IP包。而uip_periodic()函数的周期性轮询可以用单片机的定时器来触发,一般设定时间是0.5s触发。
共0条 [查看全部] 网友评论