1、基于 CAN总线智能窗户系统的设计实现摘 要: 本系统基于 CAN 总线,以单片机 P8XC592 和总线收发器 PCA82C250 为主体组成通信控制模块。各个控制模块为一个节点,每个节点可以独立进行操作,同时受到总台的监控。节点和总台 PC 机相连接组成一个控制器局域网。由于 CAN 总线具有较高的可靠性,实时性以及灵活性,所以运用 CAN 总线进行控制可以灵活地运用于智能窗户系统的开发中。 关键词:CAN 总线 智能窗户 智能家居1 引言在我国现有的市场里,智能窗户作为智能家居的一部分,它主要围绕着单个家庭进行开发。但随着人们对智能家居的要求越来越高,就在群控性,远程监控性,实时性等方面
2、提出了更高的要求。在这样的前提下,引出了新的课题。结合 CAN 总线的数据通信技术具有突出的可靠性,实时性和灵活性的优点,把 CAN 总线技术运用于该系统中,达到在控制每个单独的窗户的同时,监控所有窗户的运行情况的目的。2 系统结构设计2.1 系统总体结构CAN 总线遵循 ISO/OSI 标准模型,分为数据链接层(包括逻辑链路控制子层 LLC 和媒体访问控制子层 MAC)以及物理层。其通信接口中集成了 CAN 协议的物理层和数据链路层功能,可完成对数据的帧处理,包括位填充用户可在其基础上开发适应系统实际需要的应用层通信协议。与一般的通信总线相比,CAN 协议的一个最大特点是废除了传统的站地址编
3、码,而代之以对通信数据块编码,报文标识符可达 2032 中(CAN2.0A), 而扩展标准(CAN2.0B)的标识符几乎不受限制,还可使不同的节点同时收到相同的数据。所以本系统可以由多个独立的窗户为基本单元,这些单元与上位计算机通过 CAN 现场总线组成了监控网络,从而实现群控的功能。如下图 1 所示。从中我们可以看出,本系统被分为三层:(1)现场设备层:有一个雨水传感器以及多个窗户节点组成的,这些输入输出设备作为 CAN 的 I/O 点接入现场总线。窗户节点 N 的个数是由选取的总线驱动电路决定的。(2)设备控制层:CAN 控制器 P8xC592 以及 CAN 收发器 PCA83C250,这
4、是 CAN总线控制的核心部分,CAN 控制器实现通信及节点控制的功能;CAN 收发器起到节点与总线之间通信的功能。(3)管理监控层:作为控制系统的人机交互接口,通过上位 PC 机实现对整个系统的监视控制作用。22 系统的硬件选取在本系统中,总线控制器和收发器分别采用 Philip 公司的 P8xC592 和PCA83C250。 P8xC592 单片机是用 COMS 工艺制造的具有 CAN 功能的 8 位单片机其指令集与 80C51 完全兼容,这样就有利于编程。PCA83C250 是 CAN 控制器与物理总线的接口,可以提供对总线的差动发送和接收功能。在此特别注意 P8xC592 单片机是一种集
5、成 CAN 控制器的高性能微处理器,所以在该系统中,P8xC592 不仅仅要与 CAN 相连接,同时还要对各个窗户子系统进行控制。同时传输介质只要使用双铰线,在短距离(40m)条件下就具有高速(1Mbit/s)数据传输能力,而在最大距离 10000m 时具有低速(5kbits/s)传输能力。而主控制器采用的是性价比高,结构简单,便于编程的 89S51 单片机,主要用于对 CAN 控制器 P8xC592 及其串口RS232 初始化,并通过对 CAN 控制器 8xC592 及其串口 RS232 的控制操作实现现场 CAN总线与管理层 PC 机的数据交换等通信任务。3 用户通信协议设计3.1 通信协
6、议这里采用的是 CAN2.0A 标准,该协议最大的优点是废除了传统的站地址编码,因此CAN 没有节点地址的概念, 代之以通信数据块进行编码 ,支持以数据为中心的通信模式.当窗户节点不同时,只需要在总线上增减控制器的节点数,并对相应的数据帧进行适当的修改. CAN 上的节点数主要取决于总线驱动线路,当采用 PCA82C250 时, 最多可达 110 个。3.2 数据帧数据帧如图 2 所示 ,包括七个部分: 帧起始,仲裁场,控制场,数据场,CRC 序列,ACK 场, 帧结束.仲裁场包括有报文标识符(11 位)和远程发送申请位(RTR);控制场由六位组成,如图3 所示,后四位位数据长度码,代表数据场
7、字节数,这里设为 02H;传输信号每一帧数据长度为 16 位,高字节用 D8 到 D15 八位编码表示节点在大楼的位置,低字节设为控制字,控制字各位均为高电平有效。如下图 4 所示,例如:数据场为 0801H,表示 8 号窗户节点要求托管;0802H 表示 8 号窗户节点处于开启状态,0804H 表示 8 号窗户处于关闭状态,0808H 表示 8 号窗户要执行开窗指令,080F H 表示 8 号窗户要执行关窗指令。对于上位机和下层的各个节点来说,它们需要发送的数据帧信息是不同的。图 4 数据场组成3.3 多主广播方式总线空闲时,任意节点均可发送数据,其它节点都可接收总线上的数据,CAN 只需通
8、过报文滤波就可以实现点对点,一点对多点及全局广播等传收方式,无须专门调度。这里用接受码寄存器,接收码屏蔽寄存器实现报文滤波,使上位机收总线上的一切信息,而层站控制器只接受上位机的 CAN 控制器发出的信号,并且使不同的节点可以同时接受上位机 CAN 控制器发出的数据。这点非常有用,采用广播方式,可极大地节省传输时间,提高传输速率,增强系统地实时性和可靠性。3.4 总线仲裁报文标识符用于提供传送报文和总线访问权信息。当多个总线控制器同时发送报文时,为避免冲突需进行仲裁。仲裁期间,每个进行发送的 P8xC592 都将其发送位电平与监控总线电平进行比较。如果发送一个隐性位而监视到一个显性位电平,那么
9、该节点失去仲裁,放弃总线控制权,停止传送信息,P8xC592 立即变成总线上较高优先权报文的接收器,而不破坏总线上任何信息。数据场上的发送数据存在发送缓存器数据区中,同时,接收数据帧的数据将被存在接收缓存器中。每段报文包括一个唯一的标识符和报文中描述数据类型的 RTR 位。标识符和 RTR 位一起定义该报文的总线访问优先权。仲裁期间,标识符的最高位先后被发送,而 RTR 位最后发送。标识符和 RTR 位对应二进制数值最低的报文具有最高的优先权。11 位可以形成 2032 个不同的标识符,而该系统中窗户节点由于驱动电路的限制,最多只能有 110 个节点,所以采用标识符确定优先权绰绰有余。4 系统
10、软件设计上位机即操作站的网络管理和应用程序的设计思路主要是 CAN 接口适配卡的初始化,判断网络节点之间时候有冲突,设定节点优先级,数据存取,与历史数据比较,根据节点实际情况进行处理并回送等功能。CAN 控制器 P8xC592 的通信软件包括 CAN 初始化、报文的接收和报文发送三部分。当控制器上电后,首先对 CAN 控制器 P8xC592 进行初始化设置,主要包括工作方式的设置、接受滤波方式的设置、接受屏蔽寄存器和接受代码寄存器的设置、波特率参数设置和中断允许寄存器的设置。完成 P8xC592 的初始化设置后即返回工作状态,开始循环监听CAN 总线上的信息。从用户的角度来看,窗户的运行情况是
11、与其息息相关的。对于最底层的现场 CAN 智能测控节点的软件设计采用结构化设计方案。如下图 5 所示,P8xC592 根据接收遥控器发出的信息决定运行情况,如果需要托管的话,就接受来自 CAN 控制器的信号并用于控制窗户的开/关。如果不用托管的话,那么就不断扫描遥控器,接受到信号然后执行。同时在程序的结束部分,有一个 10ms 计时的操作,这样就能保证单片机能有序地发送检测信号给 PC 机。图 5 窗户节点软件流程图5 系统功能效果在该系统中,用户可以直接通过遥控器方便方便地进行操作,遥控器板有三个按键,一是开窗,二是关窗,三是托管。当遥控器的托管按键没有按下去的时候,用户就自己对关窗开窗进行
12、控制,当用户需要开/关窗的时候,就按遥控器上相应的键就能实现功能。而当遥控器处于托管,如果下雨的时候,雨水传感器检测到下雨的信号,就通过 P8XC592发送信号,信号经过 CAN 总线到达 PC 主机,然后 PC 主机再发送关窗的指令到所有处于托管状态的窗户节点。在应用方面,智能故障诊断是非常重要的。在该系统里,设计一种检测的方法,每个窗户节点在每 10ms 的时间里,由 P8XC592 发送到检测信号 PC 主机里。如果主机没有收到该节点的检测信号,就认为该节点发生了故障。那么 PC 机就会向管理人员报警,说明该窗户节点出现了故障。6 结论基于 CAN 总线技术,采用 P8XC592 和 PCA82C250 芯片构成先进的总线智能节点控制器。在这篇文章中,笔者更多的是用智能窗户设计作为一个支点,概述了基于 CAN 总线技术应用于智能家居领域的设计方案。把水表,燃气表等等其他家居器件结合在单个节点控制器中,用 CAN 总线把各个节点连接起来,形成一个控制局域网络。本文提出来的设计方案为以后智能家居系统的开发设计提供了新的思路和新的方法。本文作者创新点在于在实现单个节点设计的基础上,将 CAN 总线引入到智能家居的设计中来。实现对楼宇中窗户的远程监控和操作,从而提出了智能家居的发展新方法新思路。