基于单片机和CAN总线的智能监控远距离在线升级方案
1、系统总体设计方案
1.1 系统的拓扑结构
CAN(Controller Area Network)即控制器局域网,是目前广泛应该的总路线之一。CAN 总线通信距离限制小,它的直接通信距离最大可达 10km,最高通信速率可以达 1Mb/s(此时距离最长为 40m),节点数可多达 110 个。因此它特别适合于工业远程过程监控设备的互联和电网络设备的调试和维护。基于 CAN 总线的分布式控制系统的一般组成模式如图 1 所示。上位机 PC 机通过 RS-232 连接到总线上某一智能节点。可以对安装在现场某些节点的程序进行远距离在线升级和改变某些功能,因此利用 CAN 总线进行单片机的在线编程就显得非常必要。
图 1 基于 CAN 总路线的分布式控制系统
根据图 1 所示的 CAN 总线分布式系统的结构,在线编程采用主从结构。智能节点 1 为主节点,其它节点为从节点。节点采用 ATMEL 公司推出的 AVR 系列单片机 MEGA8,内含 8K FLASH 程序存储器,1K 的内部 SRAM,512 字节的内部 EEPROM。为了便于升级,除了提供 ISP 即在线编程功能(In System Programming)以外,还提供了 BOOT 引导功能,为实现 IAP 即在应用中编程(In Application Programming)为系统升级提供了可能。
1、2 节点升级过程
主节点在编程监控模式下,接收 PC 机发送的“编程”命令,若编程节点为主节点,则程序可以通过 RS-232 下载到主节点,主节点接收编程数据,完成 FLASH 的在线编程,此时,从节点分别执行各自缺省的应用程序。若编程节点为从节点,则主节点就通过 CAN 总线进行广播,全部从节点监控包括被选择节点 ID 号在内的“编程初始信息”,并与各自的节点 ID 进行比较,被选择的从节点与主节点和 PC 机建立编程通信连接,其它从节点继续运行其缺省应用程序,从而实现了在线升级功能。可见,在从节点编程模式下,主节点在 PC 机的 RS-232 总线与从节点的 CAN 总线之起着路由器的作用。
1、3 CAN 总线系统智能监控节点
CAN 总线系统智能监控节点由 5 部分组成:微控制器 Mega8,并串转换电路,独立 CAN 控制器 SJA1000,CAN 总线驱动器 TJA1050 和高速光电耦合 6N137。如图 2 所示
图 2 CAN 智能监控节点硬件原理图
为了提高稳定性和安全性,在 SJA1000 的 TX0 和 RX0 与 TJA1050 的 TXD 和 RXD 相连时,采用了高速光电耦合 6N137,并且两个光电耦合器各自连接两个完全隔离的电源,这样就很好地实现了总线上各 CAN 节点间的电气隔离。在 SJA1000 与 Mega8 通信中,中间加入了一个并串转换电路。除了给 Mega8 留出更多的引脚用于外围电路外,更重要的是传输多位数据时,可以通过并串转换电路,连接到 Mega8 单片机的通用同 / 异步串行接口 USART 的 RXD 与 TXD 引脚。把接收过进来的数据送入 USART 数据寄存器 UDR 中,通过 ID 认证后,进入 FLASH 编程监控程序,进行自编程修改,达到升级的目的。
2、MEGA8 单片机升级功能
2.1 引导加载自编程功能
ATmega8 具备引导加载支持的用户程序自编程功能(In-System Programming by On- chip Boot Program),它提供了一个真正的由 MCU 本身自动下载和更新(采用读 / 写同时“Read-While-Write”进行的方式)程序代码的系统程序自编程更新的机制。使用该功能时,MCU 可以灵活地运行一个常驻 Flash 的引导加载程序(Boot Loader Program),实现对读取代码,或者从程序存储器中读取代码,然后将代码写入(编程)到 Flash 存储器中。引导加载程序有能力读写整个 Flash 存储器,包括引导加载程序所在的引导加载区本身。引导加载程序还可以对自身进行更新修改,甚至可以将自身删除,使系统的自编程能力消失。基于这个因素,使得在线升级成为了可能。引导加载程序区的大小可以由芯片的熔丝位设置,该段程序区还提供两组锁定位,以便用户选择对该程序区的不同级别的保护。
2、2 MEGA8 的 BOOT 介绍
由于 MEGA8 具有 IAP 可在应用中升级的功能,本系统在软件设计上采用了 BOOT 引导功能。主程序采用 C 语言编写,BOOT 程序则采用了汇编编写。目的是为了提高下载速度,设计中放弃了 ATMEL 提供的 AVRPROG 烧录软件,另外采用了一个下载烧录速度较高的 ID 通讯协议,在程序代码量比较大的时候,具有更明显的速度优势,并且也便于用户二次开发。
MEGA8 的引导功能可通过相应的熔丝位来确定,BOOT 引导程序的入口、BOOT 区的大小可以通过烧录单片机的 BOOTSZ1、BOOTSZ0 两个熔丝位来确定。单片机复位后向量入口也是通过烧录单片机的 BOOTRST 熔丝位来确定。另外,单片机在执行 IAP 编程时需要用到 Store Program Memory Control Register(SPMCR)寄存器。
SPMCR 寄存器包含了页擦除,页写入,BOOT 区加密设置,页填充及页的 RWW(Read While Write)等功能的设置。需要注意的是在执行每个功能时,都需要设置 SPMEN 标志,在随后的 4 个时钟周期内运行 SPM 指令,该标志会在 SPM 执行完成后自动清零。函数如下:
Do_SPM:
Wait_SPM: ; 等待页操作完成
in templ,SPMCR
sbrc templ,SPMEN
rjmp Wait_SPM
out SPMCR,temp
spm ; 执行 SPM 指令
.dw 0xffff
nop
ret
有了以上的函数,就可以很容易的进行页擦除、页写入、页填充等程序的设计了。比如需要执行页擦除指令,则首先要将需要擦除的页地址写入 Z 寄存器,然后置位 SPM 的 PGERS(页擦除位)和 SPMEN(SPM 允许位),然后再调用 Do_SPM 函数即可。程序如下:
……
ld temp,y+
mov zl,temp ; Z 指针地址赋值
ld temp,y+
mov zh,temp
ldi temp,(1《
rcall Do_SPM ; 执行页写入
……
3、BOOT 程序介绍及流程图
BOOT 引导程序在设计时提供了两个入口,一个是系统复位时的冷启动入口,另一个是用户程序在运行时进入升级程序的热启动入口。BOOT 程序主要包括烧录子程序、串口发送、串口接收、引导主程序等。
串口发送采用了查询发送完成标志。这样当该标志被设置时,证明串口的停止位已经发送完成,这对于 CAN 总线通讯非常有用。烧录程序主要使用“SPM” 指令,该指令完成对 MEGA8 的烧录等功能。而读取 MEGA8 的指令则使用“LPM”。由于擦除,页填充,写入,读出等基本命令单片机都已解释完成,因此所有过程都可以由计算机端程序进行控制。
PIC单片机的CAN总线扩展
CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10km,传输速率高,最高可达1Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5Kb/s的通信速率下最远通信距离能达到10km;在18Kb/s的通信速率下最远通信距离只能达到2km;而在42b/s的通信速率下,最远通信距离只能达到1km。测试条件:线缆采用线径为0.75mm2的屏蔽双绞线,线缆为盘装,室内测试。在实验中,发现随着随着通信距离的增加,通信速率迅速下降,而CAN总线的驱动节点数量也次第下降。而在通信距离远,通信节点多的大空间场所,比如矿井、电力监控等系统需要CAN总线来传输数据和监控信息的场所,CAN总线不能满足要求。
如果要实现通信距离远、通信速率高、总线节点数量多CAN总线系统,实现CAN总线的扩展,就需要一个CAN网关进行桥接,把CAN总线划分为几个子网,增加CAN总线通信节点,延长CAN总线的传输距离,提高CAN总线的传输速率。在研究基于PIC单片机的CAN网关设计和扩展的CAN总线网络拓扑结构。
1 CAN网关总体设计及总线拓扑结构
1.1 CAN网关总体设计
CAN网关作为一种转发设备,连接在两个不同的CAN网络中,能够实时接收来自两个子网中的信息,根据需要筛选或者无条件地把接收到的信息转发到另外一个网络中。CAN总线层次结构分为物理层、数据链路层和应用层,工作于ISO/OSI参考模式下。CAN网关在物理层和数据链路层完成两个CAN网的连接。CAN网关结构图如图1所示。
CAN网关可以作为透明网关和源路由网关。透明网关完全按照接收到的帧格式转发,不改变帧结构,对于用户,网关相当于透明的。而源路由网关由用户提供路由信息,网关按照路由信息对消息进行过滤和有选择性的转发。
1.2 CAN总线网络拓扑结构
带有网关的CAN网络拓扑结构如图2所示。在这个网路中,PC机为主节点,而CAN节点作为从节点。在网络的顶层,由PC机和网关构成一个主网,在这个主网中PC机和CAN网关作为CAN节点,总线驱动器驱动能力可以带100个cAN节点左右。主网中的CAN网关再作为下一个子网中的主节点,而其他CAN网关或是CAN节点作为从节点,构成一个子网。这样通过CAN网关可以逐环把网络扩展下去,直到最底层的CAN节点。而在应用层上,用户可以把网关配置成透明网关或是源路由网光。透明网关不影响网络结构,CAN拓展网络形成一个多节点,远距离的网络。源路由网关对消息具有过滤性,根据用户的配置信息把CAN网络在应用层上划分为几个小网。
这样,解决了节点容量、通信距离、通信速率的问题。
2 网关的硬件设计
硬件电路开发采用集成电路,开发周期短,成本低。CPU采用Microchip公司的16位单片机dsPIC30F6011作为核心部件,其内部集成了两个CAN控制器,支持CAN2.0A/B协议,CPU的速度可以达到30 MIPS,程序存储器空间有132 KB,内部RAM有6144B,数据程序存储器有2048B,集成的功能强大,体积小,性价比比较高。物理层采用两个CAN驱动器PCA82C250。其中一组的PCA82C250的RXD,TXD引脚不是和CPUdsPIC30F6011直接连接,而在中间用光速光藕6N137隔离。
单片机dsPIC30F6011有两个通用的UART口,可以作为和PC机或其他上位机通信的接口来用。另外,dsPIC30F6011采用TQPF封装64引脚,利用通用I/O驱动LED灯作为指示灯,预留并行液晶显示器和 4×4行列式键盘的接口。
CAN控制器和驱动器部分采用了光电隔离器,因此电源设计部分要求有两个隔离的5V电源。考虑到可以会用到液晶显示器,因此一路电源设计采用输出容量1A的开关电源LM9076,而另外一路采用隔离DC/DC模块电源。这样CAN子网之间实现了电气隔离,如果一个网络出了问题并不影响另外一个网络的正常工作,提高了CAN网络的抗干扰性能。硬件电路设计外围电路少、设计简单、成本低。设计的CAN网关硬件设计系统框图如图3所示。
3 网关的软件设计
CAN网关作为消息的转发器,要准确、实时地接收两个CAN发送的信息,并且要实时发出去。对于不断发出信息的问题节点要及时屏蔽,避免错误信息蔓延到另一个CAN网络。如果CAN网关被设置成透明网关则直接把一个CAN网络的信息转发到另外一个网络中即可,如果CAN网关被设置成和某个区间ID相关,则要做一些信息过滤和屏蔽处理。当CAN网关检测到总线有错误时,要通过备用的UART口将错误信息上发到上位机或其他信息处理主机。
CAN网关的信息接收通过硬件中断来完成。当总线上有消息时,引起硬件中断,进入中断程序后根据中断标志位的区别把接收到的信息存放到相应的缓冲区中。缓冲区是一个FIFO的存储区。而主程序则一直检测两个CAN控制器对应的两个接收缓冲区,当检测到缓冲区不为空时则把缓冲区内的信息顺序发送到另一个网络中。从而形成一个具有一定的错误检测能力的双向通道,完成了两个CAN网络的信息转发。CAN网关的主程序框图如图4所示,中断程序框图如图5所示。
4 结语
本文详细介绍了CAN总线扩展技术的网络拓扑结构和系统构成,给出了CAN网关的硬件设计原理及软件设计框图。这样的CAN总线扩展网络,因为引入CAN网关而增加了消息的传递时间,但是这个增加的时间很小,是微秒级的,可以忽略不计。而带来的优势明显,因为把CAN网络在物理层上划分为几个网络,彼此之间不相互影响,因而增加了CAN网络的抗干扰性,同时,扩展灵活,只需要增加一个CAN网关来增加子网即可;通信速率可通过增加网关来提高,通信距离可以扩展到很远。通过CAN网关增加了CAN总线的容量、提高了CAN总线的通信速率、扩展了CAN总线的传输距离。
物联通讯硬件产品
相关问答
51 单片机 能实现 can 通讯吗?51单片机可以实现CAN总线通讯,但目前集成了can控制器的51单片机极为少见。51单片机要想实现can通讯,必须外接can控制器和can收发器。目前还没有国产can控制器...
can 收发器作用_车坛CAN收发器的作用是:将CAN控制器提供的数据转换成电信号,然后通过数据总线发送出去,同时也接收总线数据,并将数据传送给CAN控制器。车载网络CAN收发...
STC有自带 CAN 总线的 单片机 芯片吗?现在已经在研发带CAN总线跟usb通讯的芯片了,应该会集成在最新的STC8系列里面,再等一段时间就好了现在已经在研发带CAN总线跟usb通讯的芯片了,应该会集成在最...
can 控制器的功能_车坛CAN控制器的作用是接收控制单元中微处理器发出的数据,处理数据并传给CAN收发器。同时,CAN控制器也接收CAN收发器收到的数据,处理数据并传给微处理器...
电子项目开发中,如何确定使用I2C总线还是SPI总线或者 CAN 总线?电子项目开发中经常用到通讯功能,包括板子上芯片间的通讯和设备间的通讯。而常用的有线通讯方式无非就这几种,如I2C、SPI、RS232、RS485接口、CAN、USB等。其中...
单片机 、光耦[回答]1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...
51 单片机 中的*** error 56: can 't open file?1.目标文件存放错误了,重新设置一下你存放目标文件的目录。2.看下:第一个translate(Ctrl+F7)这个只编译不连接,第二个build(F7)这个才会产生链接产生obj...1...
基于TMS320/2407的 CAN 数据采集是什么意思?TMS320/2407是一种芯片的封装方式,can是总线结构。由于分布在控制现场的各种传感器、变送器的输出可以是模拟量,也可以是数字量,为了将这些不同形式、不同类...
单片机 主要应用于哪些领域? - 潘耶耶- 的回答 - 懂得1.单片在一个系统中只使用一片机,这是目前应用最多的一种方式。主品单片机与传统的机械产品相结合,使传统的机械产品结构简单化、控制智能化,构成了...
英语翻译本文介绍的是 基于单片机的 数字调频收音机设计.本设...[最佳回答]ThispaperisbasedonSCMdigitalFMradiodesign.Thisdesign,mainlybasedonsingle-chipmicrocomp...