基于CAN总线的楼宇火灾报警系统设计 - 图文 下载本文

湖南工业大学本科毕业设计(论文)

4.2 主节点软件设计

结合上所所设计出的硬件电路图,为保证各个模块的正常工作,主节点的整体软件设计流程图如下图4.2所示。

开始初始化主节点单片机否从节点接收到的信息是否有异常是启动声光报警器报警图4.2 主节点整体软件流程图

从上图我们可以得到,当启动主节点是应对其进行初始化,以免别的因素而影响本系统的运行。让后让主节点来处理并分析从各个从节点传上来的现场信息。如果判断出某一个从节点出现异常情况时,就触发光电报警系统报警来提醒该楼宇的管理人员或者现场工作人员。

4.2.1 CAN控制器的初始化

SJA1040的初始化有3种方式:一是上电复位,二是硬件复位,三是软件复位,即通过向CAN控制器SJA1000模式寄存器写0x01,让其进入复位模式,然后分别对SJA1040的时钟分频寄存器、错误报警限额寄存器、中断使能寄存器、接收代码和接收屏蔽寄存器、总线时序寄存器和输出控制寄存器设置,最后向模式寄存器写0x08,进入正常工作模式。在对它进行复位的时候,因为其内部的寄存器仅能在此期间进行写访问,所以在对这些寄存器初始化之前,必须保证系统已经进入复位状态。SJA1040的初始化流程图如下图4.3所示。

22

湖南工业大学本科毕业设计(论文)

开始设置BTR0、BTR1进入复位状态设置OCR返回当前工作模式使SJA1040为增强CAN模式结束

图4.3 SJA1040初始化流程图

4.2.2 信号发送模块

SJA1040根据CAN总线的协议能够自动完成报文的发送。发送时我们唯一要做的就是将要发的信息或者数据按特定的格式组成为一帧报文,从AT89C52中发送到SJAl040的缓冲区中,然后通过发送请求令符来启动SJAl040发送用以完成任务。有一点很重要,那就是报文在发送到SJAl040的发送缓冲区之前,得做下判断,检测它是否发送完成,如果没有发送成功,则其本身的错误寄存器会自动加1,并重新进行发送。SJAl040子程序报文发送流程图如下图4.4。

开始请求置位发送发送信息否判断是否发送完?是结束

发送信息识别码发送数据字节图4.4 SJA1040子程序发送流程图

23

湖南工业大学本科毕业设计(论文)

4.2.3 信号接收模块

启动中断无验证主节点目标是否是本从节点是是否有外部中断依次读出接收FIFO中内存有发现接受中断释放接收缓冲器否进入中断主程序打开SJA1040接受中断关闭SJA1040接受中断图4.5 SJA1040接收流程图

结束

如上图4.5为CAN总线接收子程序的流程图;应为在我设计的这个系统中,从节点的报文什么时候发送到此处是不知道的,所以如上所示,在此处采用了中断接收的方法,可以大大的减少系统寻址的时间。如果CAN总线的信号接收模块还担任着接收报文的情况时,那么其接收子程序就会自动的负责该处主节点的报文接收,但是在接收时,我们必须得从SJAl040的接收缓冲模块中读出数据,组成一帧报文这样才能通过这种中断方式来接收报文。如果在中断使能寄存器IER操作可以接收中断使能,那么当接收FIFO中有数据的,它会产生一个中断,以此来达到启动接收程序的目的。

4.2.4 主节点巡检从节点

在这个系统中,为了确保每一个从节点都处于正常工作状态中,如果有一个从节点一旦发生异常时,主节点应立即触发电路使声光报警器工作,从而提醒该楼宇的管理员或者是工作人员进行排查。从该节点到主节点根据接收到的时间作为主要判断依据,从而确定该节点的ID号是否正常工作;如果一段时间内没有从节点的ID号信息,则确定该从节点已经损坏,发出声光报警器提醒工作人员能够及时处理。主节点巡检从节点模块流程图如下图4.6所示。

24

湖南工业大学本科毕业设计(论文)

开始主节点定时接收个从节点ID号根据接收的ID号判断从节点是否正常工作否是报错图4.6 主节点巡检从节点模块流程图

正常

4.3 从节点软件设计

结合上所所设计出的硬件电路图,为保证各个模块的正常工作,从节点的整体软件设计流程图如下图4.7所示。

读温度子程序DS18B20初始化CAN总线初始化温度是否大于或等于80 是否否烟光传感器是否检测到异常烟光传感器是否检测到异常是否烟光传感器是否检测到异常是是声光报警图4.7 从节点总体软件流程图

在其处在正常的工作状态时,从节点会将自己的ID号码发送到主节点上,并将检测

25