-
-
-
szzunzheng | 当前状态:离线
总积分:180 2025年可用积分:0
注册时间: 2007-06-06
最后登录时间: 2009-10-12
-
-
基于CAN总线的嵌入式监控系统中智能节点研究
szzunzheng 发表于 2007/9/18 19:46:28 875 查看 1 回复 [上一主题] [下一主题]
手机阅读
关键词: CAN总线 智能节点 实时监控 数据通信
1 引言
基于现场总线的控制系统(FCS)是一种开放的分布式控制系统。它把专用封闭协议变成标准开放协议,使系统具有完全数字计算和数字通信能力;在结构上,采用了全分布式方案,把控制功能彻底下放到现场,提高了系统灵活性和可靠性;它突破了集散控制系统(DCS)中采用专用网络的缺陷。因此对基于现场总线的工业控制系统研究具有重大的意义。CAN控制器局域网络是德国BOSCH公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它支持分布式实时控制系统的串行通信局域网,广泛应用于控制系统中的检测和执行机构之间的数据通信。由它构成的智能节点,硬件接口简单,编程方便,集成容易,在系统分布比较分散、实时性要求高、现场环境干扰大的场合尤其适用。
2 基于CAN总线智能节点设计
2.1 基于CAN总线系统网络模型
在本系统中CAN总线采用多主方式工作,外挂多个(可达110多个)智能节点。整个系统网络由监控主机系统及多个现场智能节点通过CAN总线连接而成的。系统网络模型如图1所示,其中现场智能节点主要是由CAN控制芯片和微处理芯片(MCU)以及其上运行的嵌入式应用系统构成。因此对智能节点的设计可以分为两个部分:硬件设计及软件设计部分,硬件设计包括芯片的选型,接口电路的设计等;软件设计则是各功能模块的划分与实现。
2.2 CAN智能节点的结构
CAN智能节点是整个系统的最关键部分,主要完成对现场设备的监控调节、设备实时工作数据的采集、以及与其他节点以及与监控主机通信来实现分布式控制。其结构如图2所示:
智能节点的基本组成部件主要有:双MCU可选用Microchip公司的PIC16F87X系列微控制器芯片;RS232接口芯片,这里先用
MAX232;CAN控制芯片可选用Microchip公司的MCP2510CAN控制芯片;双MCU结构成了用于对现场设备监控的显控机系统和主控机系统。主控机的主要功能有:接收操作主令,实现对被控对象的操作;采集被控对象的实时状态,并进行故障判断及处理等功能;通过RS232接口与显控机通信;与CAN总线的通信。显控机的主要功能有:键盘操作,液晶显示,时钟控制,以及通过RS232接口与主控机通信。
2.3 智能节点软件结构
智能节点上的嵌入式测控软件是在MCU裸机条件下开发设计的,是与系统硬件紧密配合并且相互依存,但独立运行的监控程序。智能节点的软件系统组态如图3所示:
由图3可知,智能节点的嵌入式应用软件软件系统主要包括:通信模块,人机交互模块,数据采集模
块,控制算法模块,故障检测及处理模块等。对于智能节点的嵌入式应用软件系统软件开发可在对PIC系列控制芯片的集成开发环境软件
MPLAB IDE上完成的,采用 PC汇编指令集进行底层系统的开发。
3 智能节点的系统通信功能设计
CAN智能节点系统功能主要采用事件驱动方式来实现,主流程一般是:初始化及自检后进入工作主循环,等待事件触发,通过事件触发调用各功能模块。限于篇幅的关系(其它模块实现的资料较多,就不在此叙述),这里只对双机异步通信模块和CAN通信模块进行详细分析:
3.1 双机异步通信模块
(1)硬件设计
双机异步通信模块分别驻留主控机和显控机上,实现双机间的全双工异步通信。这里异步通信是按照RS232协议要求来设计实现的。这里采用PIC系列芯片中串行通信接口SCI它是一个通用同步/异步收发器,简称为USART
。用USART的异步工作方式来实现双机之间的RS232通信连接。MCU通过MAX232芯片将各自的输出信号转换为标准的RS232电平信号,同时将输入信号转换为单片机所需的信号。
(2)通信软件设计:
在通信软件的设计分为两个层次:一是底层通信,主要完成双机的异步通信的物理上的连接;二是高层通信,主要是设计好的通信协议保证通信不会陷入死锁,实现应用逻辑上的通信要求。
1)底层异步通信模块,主要通过中断方式来实现。USART异步收发器在完成收发缓冲寄存器中的一个字节的数据的通信任务后,置相应的接收或发送中断标志位。若此时相应的收发中断使能位被置位的话,则程序会转入接收或发送中断服务程序来处理收发的数据。在收发中断服务程序中,设置两个缓冲区,采用循环队列处理,用来缓存要发送或接收的数据。在此中断服务程序中,只完成将数据缓冲区和异步通信收发器的缓冲寄存器之间的数据传递,而对数据的处理交给高层的通信模块来实现。
2)在高层的通信模块中,只需发送或接收的数据放入数据缓冲区即可。为了方便,可将双机间的所有通信任务组织成命令的形式;再将所有命令建立一张命令表格。若要增删任何通信命令只需修改命令表的表项即可,对通信程序没有任何影响。表格的内容主要有:命令码,命令参数个数,命令参数块首地址,应答参数个数,应答参数块首地址,命令处理程序入口。高层通信的基本过程主要通过接收及处理命令和发送命令处理两模块来实现。
接收及处理命负责接收和处理外部主机发来的命令及命令参数。轮循查询外部主机是否有通信命令发送。若有,则接收命令子程序负责接收外部MCU芯片发送的命令及命令参数。在成功接收命令及命令参数后,向外部主机发送应答信号,根据命令表中的命令转到相应的命令处理程序中进行处理。
发送命令负责发送主机的命令及其命令参数。对要发送的命令字,首先查命令表得到命令表,通过异步通信口发送该命令码;判断该命令是否有命令参数,若有则继续发送命令参数,没有则设置超时事件;等待应答信号,接收到应答信号后;应答参数接收完成后撤销超时事件,则发送命令处理完成。
3.2 CAN通信模块
(1)硬件设计
CAN通信模块由主控机实现,通过MCU与CAN控制器相连,完成CAN总线通信的功能。由于PIC16F87X系列芯片没有集成CAN功能模块,因此通过SPI方式和MCP2510芯片相连接实现CAN通信。MCP2510是一种独立的CAN总线控制器,可以通过SPI方式与单片机接口,它支持CAN技术规范2.OA/B。通过MCP2510控制器的SPI通信指令,就可以对MCP2510进行操作控制,实现MCU与MCP2510控制器的SPI同步串行通信,实现CAN通信功能。系统设计人员只需对原有应用软件稍做修改就可以通过SPI接口和MCP2510进行数据交换。
(2)通信软件设计
CAN总线的通信功能的实现主要包括PIC微处理器与MCP2510的SPI通信接口,以及对MCP2510控制器的CAN总线的通信控制。对SPI同步通信方式实现,可将MCU设为主动方式,MCP2510设为从动方式,发送和接收数据共用一个缓冲区,缓冲区采用循环队列的形式进行组织,由一指针指向它,MCU每发送一个数据就MCP2510交换数据,将其放入同一个存储单元即可。
CAN总线控制器
MCP2510负责完成总线通信协议的物理层和数据链路层的功能,对于单片机应用程序,只需要在发送接收模块编写中写入相应的配置参数即可。要发送时,只需将发送的内容写入发送缓冲区并触发一次发送请求,即可完成一次发送过程;当总线收发器收到数据时,启动一次发向单片机的外部中断,或由单片机定时查询收发器上相应状态位,然后通过SPI串行口访问MCP2510控制芯片的外部寄存器的读写、控制操作。
4 结束语
本文基于CAN总线的分布式嵌入式监控系统中的智能节点,给出系统网络模型及智能节点的系统结构和软件结构,重点对对系统通信至关重要的双机异步通信和CAN通信进行了分析。总之,在将来的工业控制领域中,现场总线技术将会是主流,对基于现场总线的工业底层控制网络的现场智能节点研究具有一定的意义。