基于CAN的远程下载技术开发及应用

发布者:rho27最新更新时间:2014-11-03 来源: 21ic关键字:CAN  远程下载技术  dsPIC33F  单片机 手机看文章 扫描二维码
随时随地手机看文章
0 引 言

变制冷剂流量(Variable Refrigerant Volume, VRV)空调系统是一种网络空调系统,由制冷剂管路网络和通讯信息流网络组成,并且一台室外机通过配管和通讯总线连接多台室内机,由在监控室的监控PC 机,监控整个系统的运行状态。系统结构简图如图1 所示。

VRV 空调系统结构简图
VRV 空调系统结构简图
图 1 VRV 空调系统结构简图

系统控制信息通过通信网络传输,实现对制冷剂管路网络中制冷剂流量的精确调配,可使系统具有控温舒适可靠、节能环保、节省建筑空间等优势,近十几年得到迅猛的普及。

通讯信息流网络是VRV 系统的重要组成部分。下文为叙述方便,将监控PC 机称为主机端、室外机和室内机统称为目标端。

由于每套系统都有多个参数需要传感器实时检测,并且温度数据本身具有很大的时滞性,因而维护程序代码和功能调试非常困难。本文提出一种利用VRV 的通信网络和监控PC机进行程序远程下载的方法。

另外,VRV 空调系统的通信信息流网络目前还没有统一的总线标准,国际上各大厂家都是制定自己的总线标准,兼容性不够。我们在系统设计VRV 控制系统时,经多方比较,最后鉴于CAN 总线高安全性、故障自动退出等优势,选择CAN 总线作为系统的通讯总线。

VRV 系统的室外机和室内机选一款支持CAN 模块的Microchip公司的dsPIC33FJ 单片机作为主控制芯片。并且这款单片机本身支持Bootloader 功能,这为开发远程下载,进而实现系统维护和程序更新提供了一种可能。

本文开发出一种基于 CAN 总线,支持单点、多点及广播等多种方式的远程下载的技术,并具有软件复位、异常处理、数据加/解密等突出功能。这些功能极大方便了对VRV 空调控制系统的维护和应用,也为初期进行空系统的设计、开发、调试提供了一种极为便利的手段。

1 总体设计方案

1.1 远程下载原理

目标端复位后,在一个指定的时间内,目标端都监测与主机端相连的通讯总线是否有数据流活动。如果有,则跳转到Bootloader 自举程序,执行Bootloader 自举功能,将接收的数据,写入目标端的用户应用程序段,直到全部数据接收完成后,再跳转到用户应用程序段,执行刚接收到的新代码,实现用户应用程序的更新。如果超过时限,都没有监测到该总线上有数据流活动,则直接跳转到用户应用程序段,执行原有的程序功能。

在此一共有三段程序:

⑴目标端的自举程序和用户应用程序。这两个程序都是基于MAPLAB IDE 工具开发。

⑵主机端程序。这个程序是用Visual Studio C++开发,只有主机端程序才能主动发起与目标端自举程序间的通信。

整个通讯过程如图2 所示,其中:

(1)主机端程序读取和解析MAPLAB IDE 编译器生成的用户应用程序,并组织数据。

(2)通过CAN 总线将解析、重组后的数据传输给目标端器件。

(3)目标端自举程序(Bootloader),将收到的数据加载到目标端器件相应的FALSH 段上。

通讯过程示意图
 通讯过程示意图
图 2 通讯过程示意图

1.2 系统功能设计

在整个设计开发中,关键之处是目标端 Bootloader 自举程序的开发。结合到VRV 空调系统的实际应用,整个系统应该至少具有以下功能:

(1)多种下载方式的提供。VRV 空调系统运行当中,可能需要根据实际情况采用不同的方式来进行远程下载。因而需要实现对单点、多点及广播等通讯方式的支持。

(2)软件复位功能。即便是目标端设备已经具备利用Bootloader 自举程序来实现远程下载的能力,但由于Bootloader 机制需要目标端先复位,才能重新再执行Bootloader 自举程序。

然而现场环境往往不能实施掉电或其他硬件方式复位目标端设备,这便需要有软件实现复位的手段。在此,将软件复位作为自定义的通讯协议中一个命令,由主机端发送给目标端,目标端的用户应用程序内接收到这一命令,经过解析、确认后进行复位。

(3)加/解密功能。鉴于多联机空调系统的商用价值,Bootloader 程序应当具备加密的功能,保护知识产权。这可以通过主机端和目标端之间采用一种密钥或加、解密算法,融合到通讯数据中实现。

(4)异常处理功能。在通讯过程中,很有可能出现如主机端出现故障,造成当前的数据不能继续成功发给目标端。目标端运行自举程序时,只有等到主机端数据全部通讯完毕,才可以跳转到用户应用程序,继续执行。此会造成目标端一直处于等待状态,效率低下或者接收错误数据并执行,以致出现严重后果。在系统设计开发时需要预留一个能够实现异常处理的命令以便主机端恢复后,将这个命令下发,目标段根据这个命令,重新接收正确的数据。

2 协议设计

要将系统的目标端和主机端之间,设计成支持单点、多点以及广播等多种远程下载方式,并且支持、软件复位和异常处理、加解密等功能,可以充分利用 CAN 总线数据帧的29 位(遵循CAN2.0B 协议)标识符来实现。定制的通讯协议中CAN 的帧格式如表1 所示,将CAN 的29 位标示符分为五段:优先级、控制域、通讯方式、节点编号、命令编号。

表 1 数据帧29 位标识符分配表
数据帧29 位标识符分配表
数据帧29 位标识符分配表

优先级:00->01->10->11 优先级别依次降低,默认优先级别为11,故障报警优先级最高为00,数据传输优先级为01,命令下传优先级为10,应答返回优先级为11。

控制域:ID26/ID22,用以表示当前的数据帧属于哪一种类型:故障为00、数据为01、命令10、应答11。

通讯方式:ID24/ID15,指定当前的数据帧是广播传输或者单点传输,全为0 是单点而全为1 是广播。

节点编号:ID14/ID8,共7 位,足够标识CAN 总线支持的多达112 个节点的最大负载。

命令编号:这里存放的是根据实际需要定制的一些命令,如软件复位命令、异常处理命令。主机端将定制的命令编号下发,目标端接收到命令后,解析后执行相应动作。仿照上表,配置各个目标端的接收过滤码和接收屏蔽码,便可以实现单点、多点以及广播通讯。另外,对于单点通讯方式下的远程下载,为保证主机端和目标端的通讯数据的正确和可靠传输,采用应答机制来实现,并定制了一套图3 所示的通讯链路机制。

主机端和目标端应答链路机制图
主机端和目标端应答链路机制图
图 3 主机端和目标端应答链路机制图

远程下载的通讯只能由主机端开启。主机端先发送读取器件型号命令,读取目标端器件芯片型号,目标端收到这个命令,回复本身的型号数据作为一个应答,主机端根据这个型号,再开辟动态内存和组织要下传的数据。主机端接着下发一个读取器件PROM 命令,以获取目标端器件位于地址0x00 处的数据,将和从主机端读取并解析、组织后的HEX 文件一起下传。主机端收到这一步的应答后,开始发送写PROM 命令和PROM 数据,目标端将接收到的数据写入相应的地址段,每完成一页写操作,返回一个应答,接着接收主机端下传的下一页数据。PROM 写数据发送完后,主机端接着发送写CM 数据命令和写CM 数据,过程和写PROM 是一样的。最后,主机端下发一个跳转命令,目标端收到这个命令后,跳转到程序存储器的0x00 地址处。然后,目标端根据地址0x00 处存放的数据,跳转到用户应用程序。[page]

而对于多点或广播,通常都是对数百甚至上千目标端进行下载。如果目标端都应答,会造成总线上数据的堵塞,浪费大量的总线时间。所以采用非应答机制,直接烧写程序存储器。

此时主机端数据的下传,采用定时器触发方式。每当定时时间到达时,触发一次数据的发送。

直至最后,发送一个跳转命令。如果目标端没有执行跳转,那么认为当前目标端没能正确接收主机端发送的数据,主机端重新对当前目标端进行一次单点方式下的远程下载。

3 目标端设计方案

目标端Bootloader 自举程序一般只是一个简单的通讯程序,负责接收和发送数据,通常只需极少的存储空间,可以位于单片机程序存储器特定的Boot Segment 区域。程序存储器还有一段称为General Segment 区域可用于存储用户应用程序。单片机的程序存储器大多都是FLASH 闪存,数据是以一个个数据页的形式存储,必须先对当前存储页擦除,然后才能写入数据。自举程序还需使用dsPIC33 单片机器件中断向量表 (IVT) 中的复位向量实现程序的跳转、以及器件上的CAN 通信模块。单片机的程序存储器的地址映射如下图4 所示。

dsPIC33F 程序存储器地址映射图
 dsPIC33F 程序存储器地址映射图
图 4 dsPIC33F 程序存储器地址映射图

上图给出了dsPIC33 单片机器件的程序存储器的物理地址映射,由图可知用户应用代码应放置在用户应用程序地址段,而Bootloader 代码放在自举程序地址段。不论目标端自举程序(Bootloader)需多少存储空间,自举程序(Bootloader)和用户应用程序的存储位置都必须严格遵守目标端存储器构架。在具体设计中,须注意:

(1)慎用中断:Bootloader 自举程序不建议使用中断方式。目标端器件在写Flash 程序存储器时,有一个擦除程序存储器的操作,可能会擦除掉位于程序存储器上的中断向量表和备用中断向量表地址处的值,造成系统的死机。另外,一个功能强大的程序,一般都是用中断方式实现用户应用程序以提高实时性,这会生成一个中断向量表,存储在目标端器件程指定中断向量表和备用中断向量表地址处。如果在 Bootloader 自举程序也用中断方式,会使得一个目标端器件产生两个不一样的中断向量表和备用中断向量表区,造成系统的死机。

(2)存储位置:Bootloader 程序和用户应用程序不应处于同一页。自举程序(Bootloader)要先执行擦除程序存储器,才能将接收的新代码存入其中。如果处于同一页,在远程下载时,很可能擦除Bootloader 程序本身。

(3)自举延时:必须为目标端自举程序的执行指定一个延时值,这个延时值作为检测总线数据流活动的时限。

(4)链接文件配置:单片机默认的自举程序地址段是0X400 到0XC00。如果实际的自举程序代码量超过上述空间,需要修改链接文件,重新配置,以适合工程需要。

4 主机端设计方案

主机端的设计主要包含主机端通讯程序的实现,并为用户提供一个管理远程下载、软件复位、异常处理等功能的监控界面。主机端程序,采用了多线程的通信存储技术,一共包含线程:主线程、接收线程、远程下载线程,使得程序执行效率较高。

上位机软件界面图
上位机软件界面图
图5 上位机软件界面图

软件界面如上图 5 所示,在这里实现的主要功能有:

(1)参数设置功能,包括CAN 的连接、断开、复位、启动、接收过滤码和接收屏蔽码等CAN 自身参数的设置。

(2)文件导入功能,载入存储在任意目录下目标端用户应用程序的HEX 文件。

(3)远程下载功能,这一功能由“更新按钮”触发产生,启动主机端程序和目标端的通信,实现远程下载。

(4)状态显示功能,由两个列表框,用于显示导入的HEX 文件的数据,和实时显示当前的通讯状态。

(5)软件复位功能,这一功能由“自举复位”触发产生,发送一个复位命令和异常处理命令,目标端根据命令进行相应操作。

5 结束语

本文结合VRV 空调控制系统开发的实际应用需求,以dsPIC33 单片机为硬件基础,开发了基于CAN 的远程下载系统。系统同时支持单点、多点、广播等下载方式,具有数据加密、软件复位、异常处理等以往所开发的远程下载技术所不具备的功能。

本文主机端程序的设计采用了多线程的通信存储技术,保证了程序的高效性和扩展性,并且可实时监测系统的状态,界面风格简洁明了,符合工程人员操作习惯。目标端严格按照dsPIC33F 单片机的体系构架,进行代码开发和链接文件的修改及配置,程序简洁易读、安全可靠。本系统2009 年初进行实验平台的联机调试,性能良好。

本文作者创新点:结合VRV 空调控制系统具有多传感器、温度数据具有时滞特性,利用VRV 空调系统的通讯信息网络,开发远程下载技术,节省成本提高效能;实现了软件复位和故障处理以及加解密等实际工况的需要,使得更为符合实际现场的需要。
关键字:CAN  远程下载技术  dsPIC33F  单片机 引用地址:基于CAN的远程下载技术开发及应用

上一篇:基于MSP430F2132的温差式原油流量传感器设计
下一篇:基于SPCE3200的液晶显示系统的设计

推荐阅读最新更新时间:2024-03-16 13:44

单片机ADC采样算法----限幅平均滤波法
限幅平均滤波法相当于“限幅滤波法”+“递推平均滤波法”,每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理。 下面看C代码的实现 #define A 200 #define N 20 //返回两个整数差 unsigned int num_sub( unsigned int a, unsigned int b ) { return ( a = b ? ( a - b ) : ( b - a ) ); } unsigned int filter6( void ) //采样正弦波 相位有延时 { static unsigned int value_buf ; stati
[单片机]
<font color='red'>单片机</font>ADC采样算法----限幅平均滤波法
51单片机定时器初值的计算
什么是时钟周期?什么是机器周期?什么是指令周期? 时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所
[单片机]
关于MSP430单片机串口通信数据丢失问题
研究摸索了接近一个星期,把所遇到的问题写出来以供参考。 最开始看一个官方的串口收发数据的示例,然后自己操作后收发数据老是会丢失一个数据,然后看User’s Guide,取消了函数收发的方法直接用寄存器操作,问题解决。 接下来写一个组帧协议,收发完全正常。但是看上去逻辑思维非常的杂乱不清晰,就想整理一下,就开始写函数,进行函数调用。好了,这下问题又来了,数据又会丢失。 接近一个星期研究,发现不是自己写的代码有问题,是官方示例的波特率配置问题。大家都知道波特率表示每秒钟传送的码元符号的个数,是衡量数据传输速率的指标,它用单位时间内载波调制状态改变的次数来表示。晶振为1MHz波特率为115200,我自己改成了9600,问题解决。如
[单片机]
基于CAN总线的重型汽车内轮差预警系统设计
1 内轮差原理   内轮差是车辆转弯时的前内轮的转弯半径与后内轮的转弯半径之差。由于内轮差的存在,车辆转弯时,前、后车轮的运动轨迹不重合。内轮差的大小与转动方向盘的幅度和车辆轴距的长短有关,方向盘转动幅度越大即转向角度越大,内轮差越大,反之越小;车辆的轴距越长,内轮差越大,反之则越小。重型汽车车身都比较长,尤其是车头转过去后,还有很长的车身没有转过来,极易形成大型车辆司机的“视觉盲区”,路人步入内轮范围后,容易造成生命危险。如图1中的阴影部分为内轮差的形成区域。 图1 内轮差示意图 2 超声波预警原理 2.1超声波测距原理   谐振频率高于20KHZ的声波被称为超声波。超声波为直线传播,频率越高,则绕射能力
[汽车电子]
基于<font color='red'>CAN</font>总线的重型汽车内轮差预警系统设计
基于CAN总线的DNC远程诊断及监控系统
0 引言   DNC(DistributedNumericalControl)是把车间内的数控机床与上位控制计算机集成,实现加工设备集中控制与管理的一种方式。这种方式虽然充分利用了设备的潜力,提高了企业生产效率,但是对设备的维护提出了更高的要求。流水线上关键设备的长时间停机,将会给生产带来巨大的损失。为了使损失降到最低,应该在提高设备可靠性的同时,对加工设备进行状态监控,以便在设备出现故障征兆时,能及时进行故障处理,缩短故障诊断和维修时间。但是从我国大部分企业的人员配备模式来看,企业内部用于设备维护的专业技术人员相对较少,不可能在全国各地设立售后服务中心,当设备出现故障时,由于地域的原因专家无法及时到达故障现场,也就无法了解设备
[安防电子]
基于<font color='red'>CAN</font>总线的DNC<font color='red'>远程</font>诊断及监控系统
基于单片机的嵌入式SNMP代理器设计与实现
0 引言 SNMP(简单网络管理协议)应用广泛,功能强大,只要管理软件驻留有MIB(管理信息库),并且拥有适当的权限,管理器就可以访问SNMP代理器。SNMP一般用于计算机网络和电信网络,本文提出了用SNMP进行控制。由于其传输媒介是Internet,所以传输距离不受限制,这相对于其他工业控制总线有不可比拟的优势,SNMP最大的优点是协议简洁,适合嵌入式应用。SNMP体系可扩展性强,只要将新的MIB装载在管理软件上就可以实现对新的终端的控制与访问,本文介绍了一种基于廉价的微控制器的实现嵌入式代理器的方案,以微处理器核心实现相关硬件及软件。 1 SNMP体系结构 SNMP的体系结构(见图1)以简单的查询/回答模型为基础,发送查
[单片机]
ARM单片机三种中断返回情况的分析与解决办法
简介:ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,本文就将对ARM异常中断的集中情况进行总结,并给出了一些解决方法。 在正式介绍之前,要为大家补充一些较为重要的基础知识。首先R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序
[单片机]
基于单片机CAN总线的智能家居控制系统
  1 引言   智能家居于20 世纪80 年代兴起于日本和欧美,于90 年代末进入中国,伴随着经济的发展和人们生活水平的提高逐渐为国人所了解和接受。目前国内的各种智能化系统和产品较多,但各系统相互独立,集成度较低,彼此联系不大。比如楼宇对讲系统、安防系统、家用电器自动控制系统等,都各有自己的终端,没有统一的智能控制平台。对用户而言,这种状况增加了使用成本和操作的复杂性;对施工而言,则导致了重复布线。本文针对此种状况,设计一种采用单片机AT89C52 为控制核心,利用原有的电话网络,将楼宇对讲、安防报警和电话远程监控系统集成起来,形成一个统一的智能控制平台,并通过CAN 总线组网与门口机和管理机相连,能实现楼宇对讲、电话远程监控和报
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved