欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    基于CAN总线通信协议的设计与实现.doc

    • 资源ID:5020497       资源大小:16.57MB        全文页数:209页
    • 资源格式: DOC        下载积分:20
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要20
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于CAN总线通信协议的设计与实现.doc

    基于CAN总线通信协议的设计与实现1 前言控制器局域网(CANController Area Network)属于现场总线(Fieldbus)的范畴,是众多的属于现场总线标准之一,它适用于工业控制系统,具有通信速率高、可靠性强、连接方便、性能价格比高等诸多特点。它是一种有效支持分布式控制或实时控制的串行通信网络,以其短报文帧及CSMA/CD-AMP(带有信息优先权及冲突检测的载波监听多路访问)的MAC(媒介访问控制)方式而倍受工业自动化领域中设备互连的厚爱。CAN的应用范围遍及从高速网络到低成本的多线路网络,它可以应用于汽车系统、机械、技术设备和工业自动化里几乎任何类型的数据通信。CAN具有如一下优点:1)使用简单方便。许多CAN控制器实现了CAN物理层及数据链路层的大部分功能,用户只须对CAN控制器进行初始化和对CAN总线上的数据进行收发操作即可实现通信;2)高可靠性。CAN上的最大通信速率可达1Mbps,CAN总线是多主节点,各节点通过总线仲裁获得总线控制权。完善的错误处理机制保证了高噪声干扰环境下数据传送的安全可靠;3)系统可扩展性能好。CAN总线是基于发送报文的编码,而不是对CAN控制节点进行编码,故增添或删除CAN节点不会对系统造成太大的影响。CAN总线以报文为单位进行信息传送,它支持4种不同类型的报文帧:数据帧、远程帧、超载帧和错误帧。报文中包含信息标识符ID,它标志了报文的优先权。CAN总线上各个节点都可主动发送,总线上的报文采用标识符ID进行仲裁,ID值越小,优先级越高。具有最高优先权报文的节点赢得总线使用权,而其它节点自动停比发送。在总线再次空闲后,这些节点将自动重发原报文。网络中的所有节点都可由ID来自动决定是否接收该报文。每个节点都有ID寄存器和屏蔽寄存器接收到的报文只有与该屏蔽的功能相同时,该节点才开始正式接收报文,否则它将不理睬ID后面的报文。这使CAN系统非常灵活,可任意扩展或改变网络组成。C8051F系列单片机是集成的混合信号片上系统SOC(System on chip),具有与MCS-51内核及指令集完全兼容的微控制器,除具有标准8051的数字外设部件之外,片内还集成数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件。正是由于其体积小、集成度高、功能多、配置容易、使用方便等特点,已被广泛应用于智能仪表、数据采集、自动化控制等领域。因此本文采用C8051F120设计与实现CAN总线通信协议,充分发挥其体积小、可靠性高的特点。C8051F120是完全集成的混合信号片上系统MCU芯片,具有64个数字I/O引脚(100脚TQFP封装)。2 数据传输格式的制定在CAN2.0规范中规定,每次收发最多只能传送8字节.这可以满足大多数工业领域中控制命令、工控状态和测试数据的一般要求;但实际应用中,往往出现传送多于8字节的要求,此时应通过报文的拆卸和拼接技术予以实现。本文在CAN2.0A的基础上,定义了简单的传输格式,完成了单帧数据和多帧数据准确快捷的传输。信息传递格式如表一所示:其中,各位的含义如下:FF:0表示为标准格式,1表示为扩展格式;RTR:0表示为数据帧,1表示为远程帧;DLC.X:数据长度代码位(08);ID.X:信息标识符位:ID.28ID.26为信息功能标识     ID.25ID.21为接收任务标识    ID.20ID.18为接收节点地址标识X :保留位,默认为0,不能对保留位进行写操作;DATAO:数据场的第一个字节,本协议中用来表明数据的属性;DATA0.7DATAO.5为发送节点地址标识;DATA0.4DATAO.1为数据功能标识    DATA0.0 0为扩展位,0 表明数据长度小于8不用扩展,1 表示数据长度大于8需要扩展DATA1作传递次数索引。 DATA1: DATAO.0为0时,传递数据;DATAO.0为1时,为数据传递次数的索引。本文设计的信息优先级从高到低依次为:信息功能标识、任务功能标识和目标节点地址标识。信息功能标识设在ID的最高几位,通过3位的功能代码可以区分某些情况的8种基本功能:这些功能可以为节点状态控制、节点保护、紧急情况通报以及有时间标记的信息等;接收任务标识表明本帧数据的任务属性,容量为32;目标节点地址指示本次数据的目的地址,容量为8。DATA0.0在本协议中作为标志位,用来区别单帧传输和多帧传输,解决了大于8字节的字符串的传输问题。当标志位为1时,表示传送的是多帧数据;为0时表明是单帧数据。这样克服了CAN 只能传输小于等于8字节数据的缺点,实现了大于8字节的数据的传输。为了识别多帧传输中可能会出现的重帧和丢帧现象,本协议规定数据场第一字节作为多帧数据传输次序的索引。按照本协议制定的格式传输数据时,单帧最多传输7字节的实际数据:当数据流长度大于7字节时,就要分成多帧传送。3 应用层协议设计在CANV2.0规范标准中,只规定了ISO参考模型的物理层和数据链路层,没有规定媒体的连接单元以及驻留媒体,也没有规定应用层。物理层负责譬如物理信号传输、译码、位时序和位同步等功能,而数据链路层负责总线仲裁、信息分段以及数据安全、数据确认、错误检测、信号传输和错误控制的功能。实际上,即使在执行一些非常简单的基于CAN的分布式系统时。除了基本的两层服务之外,还要求或希望有更多功能,如发送长于8字节的字符串、响应或确定数据传送、标识符分配、网络启动或监控节点。由于这些附加的功能直接支持应用过程,所以它可以被认作“应用层”。如果正确执行,则应用层以及相应的应用层接口(子协议)为通讯和应用过程提供了一个清晰定义的分界以便把它们区分开来。在一些利用简单的通信协议就可以满足要求的情况下,采用复杂的协议会造成资源的浪费,而且,使用起来也很不方便,反而限制了CAN的灵活性。所以在一些情况下制定适合要求的通信协议,对CAN的开发和使用至关重要。本文根据实际系统设计的需要,在2.0A技术规范的基础上制定了CAN应用层通信协议。CAN应用层协议主要负责建立CPU与底层之间的桥梁,它主要由四部分组成:节点的开关机制、数据的收发机制、错误处理机制和中断管理机制五部分组成。四种机制互相联系、互相制约,共同维护系统的运转。限于篇幅本文主要介绍关键的数据收发机制。3.1 数据发送机制发送机制主要实现将CPU要发送的数据接过来,并整理为符合应用层协议规定的帧格式,将拆卸好的小包(数据帧)顺序放入循环队列中等待发送,并负责管理和维护发送循环队列的止常运转。在定时器定时中断中定期对循环队列进行扫描,如果发现队列中有数据等待发送,则调用发送函数将数据发送到CAN总线。在底层开辟了一个临时缓冲区用于暂时存放等待发送的小包,临时缓冲区采用循环队列的存储结构,对数据实行先入先出的管理模式。循环队列是一个42*11的二维数组,用来暂时安置CPU即将发送的数据,数据被顺序安排在循环队列中等待发送。每增加一帧数据,循环队列的尾指针加1;每成功发送完一帧数据,循环队列的头指针减1。当循环队列中没有数据时,队列的状态为空,否则指示为不空;若循环队列的头指针和尾指针重合而队列又处于不空的状态,此时队列为满的状态。当队列处于满的状态时,禁止向队列再写入数据,否则容易导致数据的覆盖或丢失。队列中数据遵循先入先出的原则,CPU将数据从队列尾部装入,向CAN总线发送数据时则从队列头部将数据读走。发送循环队列的曾理单位为帧,每次操作都是11个字节为单位。在发送机制运转前,首先对发送循环队列初始化,将循环队列的头指针、尾指针赋值为零,将已占用的空间也赋值为零。CAN发送机制主要由两大模块组成:打小包模块和帧发送模块。当CPU有数据需要发送时,调用打小包函数,要求给出待发送数据的存放地址。打小包函数将会按照本协议规定的格式将发送节点地址、接收节点地址、信息类型、任务标识、数据标识等参数整理为CAN数据链路层ID的格式,将数据组装成符合应用层协议所规定的数据帧(小包),实现对长度大于7字节的数据的打小包处理,按照所填加索引号的顺序放到发送循环队列中等待发送。打小包函数的流程图如图1所示:3.2 数据接收机制CAN接收机制负责将数据从CAN总线上接收下来,按照数据源节点的地址将其还原为发送前的格式,准确无误的传递给上层,并负责为上层提供接口函数。在CPU将数据取走以后,清空相应的数组。在底层开辟了一个临时缓冲区用于暂时存放从CAN总线上接收下的数据,临时缓冲区采用二维数组的格式,容量为4*3*64。第一维的容量为4,分别指示发送节点的地址;第二维容量为3,作为数据的扩展缓存,指示可连续存放来自于同一节点的包的数目;第三维的容量为64,用来存放经过整理以后的数据。一般来说,开辟一个二维的空间就可以使协议周转,但是,在实际系统中可能会出现CPU还未能将整理完毕的数据取走此时又接到来自于同一节点的新的数据,这样就可能导致新的数据覆盖掉原来的数据,造成数据的丢失。为避免这种潜在地危险,因此开辟了三维空间,在最坏的情况下,每个节点都可同时容纳来自于同一节点连续发送的3包数据,大大降低了数据丢失的可能性。接收数据流程如图二所示。图 二: 数据发送流程5  总结本文创新点:CAN总线以其卓越的特性、极高的可靠性和独特的设计,在工业过程监控设备的互联方面得到广泛的应用,受到工业界的广泛重视,并被公认为是最有前途的现场总线之一。作为通用、有效、可靠及经济的平台,CA N协议也已经广泛地受到了欢迎。由于CAN2.0规范固有的局限性,客观上要求用户建立高层协议对CAN进行完善。本文所设计的CAN总线应用层协议已经投入使用,具有简单、灵活、移植方便等特点。CAN总线在家庭智能化控制系统中的应用研究时间:2010-09-22 12:44:15 来源:现代电子技术 作者:程月平 袁 勇O 引言    家庭智能控制系统的主要功能集中在家庭安全报警、电话或电脑远程控制、红外遥控、自动抄表控制、灯光和湿度控制等方面。根据智能终端设备传输数据和功能的不同可以把它分成两类子网,一类是传输数据以数据量小、速率低的家庭自动化控制设备;另一类是传输多媒体信息、(视频、音频信号),信号量大、速率快,如视频会议、音频点播等。家庭智能终端设备可以采用总线结构组建成有线子网和无线子网,因各设备分布在家中不同的地方,对于组建成有线子网布线比较复杂,但是如果采用PLC与CAN总线构建成网络,将降低成本。    CAN(Controller Area Network,控制器局域网)是德国Bosch公司在20世纪80年代初为汽车检测控制而开发的一种串行数据通讯协议,它是一种多主机总线,通讯介质可以是双绞线、同轴电缆或光导纤维,通讯速率为1Mbs。CAN总线具有卓越的性能,极高的可靠性和独特的设计,广泛应用于工业自动化、交通工具、医疗仪器以及建筑、环境控制等众多部门。1 家庭智能化控制系统的组成    家庭智能化控制系统是电视、洗衣机、空调及水表、电表、燃气表等设备的指挥通信和信息管理的核心,主要功能是与远程控制系统进行数传通信,接收各种控制口令,完成对相应设备的实时控制。    控制系统中凡具有嵌入式微处理器或微计算机的单体均通过CAN总线相互连接。组成分布式局部网,实现数据交换和信息资源共享。这种设计具有以下优点:减少了通信端口、连接电缆;抗干扰能力强;配置灵活、系统扩展和升级方便;调试简单,检修方便。    由CAN总线组成的家庭智能化控制系统原理如图1所示。2 PLC与CAN总线的连接    现以GE FANUC系列90 PLC为例,给出一个PLC与CAN总线的连接方案。    GE系列90 PLC都带有经转换的RS 232串行通讯口,编程计算机通过此串口与PLC进行通讯和编程。RS 232标准电平采用负逻辑,规定+3+15V之间的任意电平为逻辑“0”电平,-3-15V之间的任意电平为逻辑“1”电平。而CAN信号则使用差分电压传送,两条信号线称为“CAN _H”和“CAM_L”,静态时均为25 V左右,此时的状态表示为逻辑“1”,也可以叫做“隐性”;用CAN_H比CAN_L高表示逻辑“0”,称为“显性”。显性时,通常电压值为:CAN_H=35V,CAN_L=15V。    RS 232串口的帧格式为:1位起始位,8位数据位,1位可编程的第9位(此位为发送和接收的地址数据位),1位停止位。而CAN的数据帧格式为:帧信息+ID+数据(可分为标准帧和扩展帧两种格式)。因此,设计时就需要有一个微控制器来实现电平和帧格式等的转换,其转换方式如图2所示。    用单片机AT89C52作为微处理器;用SJAl000作为CAN微控制器,SJAl000中集成了CAN协议的物理层和数据链路层功能,可被动局面对通信数据的帧处理;高速光电隔离用6N137实现,其作用是防止串入信号干扰;MAX232用来完成RS 232电平到微控制器接口芯片TTL电平的转换。具体的硬件接口电路参见SJAl000的资料,但有以下几点需要注意:    (1)CAN总线两端接有一个120 的电阻,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠性。但实际上只需保证CAN网络中“CAN_H”和“CAN_L”之间的跨接电阻为60 即可。    (2)SJAl000的20引脚RXl在不使用时可接地,配合CDR6的置位可使总线长度大大增加。    (3)引脚TX0,TXl的接法决定了串行输出的电平。具体关系可参考输出控制寄存器OCR的设置。    (4)AT82C250的RS引脚与地间接有1个斜率电阻。电阻大小可根据总线通信速度作适当调整,一般在16140 k之间。    (5)MAX232外围需要4个电解电容C1,C2,C3,C4,这些电容也是内部电源转换所需电容,其取值均为1F25 V,宜选用钽电容并且位置应用量靠近芯片,电源Vcc和地之间要接1个01F的去耦电容。    在微处理控制下,RS 232和CAN进行数据交换时,采用串口接收和CAN中断方式可提高工作效率。SJAl000的初始化在复位模式下才可以进行,主要包括工作方式的设置、时钟分频和验收滤波寄存器的设置、波特率参数的设置以及中断允许寄存器的设置等。其主程序流程图如图3所示。    数据能否准确传递还取决于波特率和流量控制,这也是软件设计时不可忽略的地方。因此接下来主要介绍CAN波特率的设置、串口波特率的自动检测、串口数据流量控制。    CAN协议中的要素之一是波特率。可以设置位周期中的位采样点位置和采样次数,以使可以自由地优化应用网络性能,但在优化过程中,要注意位定时参数基准参考振荡器的容差和系统中不同信号传播延迟之间的关系。    系统的位速率fbit表示每单位时间传输数据位的量,即波特率fbit=1tbit。额定的位定时由3个互不重叠的段SYNC_SEG,TSEGl和TSEG2组成,这3个时间段分别是tSYNC_SEG,tTSEGl和tTSEG2。所以,额定位周期tbit是3个时间段的和:tbit=tSYNC_SEG+tTSEGl+tTSEG2。位周期中这些段都用整数个基本时间单位来表示。该时间单位叫时间份额TQ,时间份额的持续时间是CAN系统时钟的一个周期tSCL,可从振荡器时钟周期tCLK取得。通过编程预分频因数(波特率预设值BRP)可以调整CAN系统时钟,即tSCL=BRP×2tCLK=2BPRCLK。    对CAN位定时计算的另一个很重要的时间段是同步跳转宽度(SJW),持续时间是tSJW。SJW段并不是位周期的一段,只是定义了在重同步事件中被增长或缩短的位周期的最大TQ数量。此外,CAN协议还允许用户指定位采样模式(SAM),分别是单次采样和三次采样模式(在3个采样结果中选出1个)。在单次采样模式中,采样点在TESG1段的末端。而三次采样模式比单次采样多取两个采样点,它们在TSEGl段末端的前面,之间相差一个TQ。上面所提到的BPR,SJW,SAM,TESGl,TESG2都可由用户通过CAN控制器的内装中寄存器BTR0和BTRl来定义。设置好BTR0和BTRl后,实际传输的波特率范围为:最大=1(tbit-tSJW),最小=1(tbit+tSJW)。    检测转换装置的串口波特率,首先可对主机的接收波特率(以9600 bs为例)进行设定,并在终端发送一个特定的字符(以回车符为例),这样,主机根据接收到的字符信息就可以确定转换装置的通信波特率。回车符的ASCII值是0DH,在不同波特率下接收到的值如表1所列。    数据在两个串口之间的传输时,常常会出现丢失数据的现象。由于单片机缓冲区有限,如接收数据时缓冲区已满,那么此时继续发送来的数据就会丢失。而流控制能有效地解决该问题,当接收端数据处理不过来时,流控制系统就会发出“不再接收”的信号,而使发送端停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据丢失。常用的两种流控制是硬件流控制(包括RTSCTS,DTRCTS等)和软件流控制XONXOFF(继续停止),下面仅就硬件流控制RTSCTS加以说明。采用硬件进行流控制时,串口终端RTS,CTS接到单片机的IO口,通过置IO口为1或0来接收和发出起停信号。数据终端设备(如计算机)使用RTS来起始单片机发出的数据流,而单片机则用CTS来起动和暂停来自计算机的数据流。实现这种硬件握手方式时,在编程时根据接收端缓冲区的大小设置一个高位标志和一个低位标志,当缓冲区内数据量达到高位时,就在接收端将CTS线置低(送逻辑0),而当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高为止。RTS则用来标明接收设备有没有准备好接收数据。    以下是CAN接收子程序:        3 结语    通过对家庭智能控制系统的分析,采用PLC与CAN总线构建成控制性局域网,通过仿真系统的测试,该总线完全能完成对家庭智能终端设备实行控制,但要使它控制的稳定性和实时性得到进一步提高,还需在此基础上作更加深入的研究。基于CAN的电源控制系统设计时间:2006-08-25 10:19:00 来源:E代电子 作者:摘要:介绍了基于CAN的集散式电源控制系统中通信的实现,对其软硬件的设计,调试关键处及其实现的具体功能进行了说明。 关键词:CAN总线;TMS320LF2407;集散式电源控制系统;通信 CAN总线是一种能有效支持分布式控制系统的串行通信网络,一方面,其通信方式灵活,可实现多主方式工作,还可实现点对点、点对多点等多种数据收发方式;另一方面,他能在相对较大的距离间进行较高位速率的数据通信,例如在33 km的距离内其传输速率可达20 kbs。我们的系统是由上位机对多台并列的单电源控制系统进行控制管理,单电源的间距在100 m左右,且其必须置于较高的位置,系统之间要进行快速的数据传输,CAN总线能很好的满足该系统的要求。 1系统总体结构    图1是该集散电源控制系统的结构示意图。  其中:CAN0节点是上位机。 本系统用的是C51单片机,外接CAN控制器SJA1000,他对下面多台下位机传送控制定值,并且在收集下位机送来数据后对其进行分析计算以改变定值。节点CAN1CAN31(最多可有31台)为各单电源的控制部分,我们采用的是TI公司的TMS320LF2407芯片做主控,其上集成有CAN控制器模块。 2LF2407及其集成CAN控制模块介绍 LF2407是TI公司推出的定点DSP处理器,他采用高性能静态CMOS技术,供电电压为33 V,指令周期可达25 ns,其上集成了包括CAN控制器在内的多个外围模块及存储器,适用于电机及逆变电路的控制。 CAN控制器模块是集成于LF2407中的一个16位外设模块。该模块具有以下特性: (1)支持CAN20B协议,支持标准标识符(11位)及扩展标识符(29位),支持数据帧与远程帧。 (2)配置有6个邮箱,2个接收(0,1号),2个发送(4,5号),2个可配置(3,4号);每个邮箱数据长度为8 B。接收邮箱可进行标识符屏蔽。当标识符位被屏蔽时,在接收数据帧时无须对该位标识符进行校验。 (3)具有可编程的位定时器、中断服务和CAN总线唤醒功能。 (4)能自动回复远程请求,当发送错误或数据丢失时,有自动重发功能。每个邮箱寄存器包含7个字的信息,与各功能模块控制寄存器相类似,LF2407为其分配了固定的数据存储器地址,例如邮箱0,其寄存器分配如下:    MBX0AD(4个字的存储空间)地址:72047207其中:标识符(按29位设置)在MSGIDnH的后13位和MSGIDnL中。 3硬件电路设计及调试 在设计LF2407的CAN通信电路时应注意一个问题,即2407的供电电压为33 V,其CAN控制模块输出的高电平也只有33 V,与CAN驱动器PCA80C250电平(5 V)不兼容,在设计电路时加隔离光耦时要加以注意。图2所示为下位机侧的CAN通信原理图。  由于TX的输出光耦采用的是射极输出方式,我们的输出光耦应采用6N136(137由于其结构原因不能满足要求),图3是我们进行数据发送时测试得到的R42两端的电压波形(输出10101010)  由我们对CAN通信控制器的位配置寄存器BCR1的设置可知,每一位数据所占的时间段中,我们的采样点在70的时间点,在这一点的输出电压必须在额定高低电平的设定值范围内。我们选定R425 k,得到以上波形,满足采样点处高电平35 V,低电平15 V。 4通信协议及软件实现    在系统中,上位机给下位机发送运行定值以及起停信号,并且会定时查询各单机的运行状况以对其状态进行相应的调整。 具体通信过程分为2类: (1)上位机向下位机传送操作命令及定值,上位机发送的是数据帧。 上位机发送完数据帧后,若下位机收到该数据帧则向上位机发送确认帧,该数据帧发送结束。若发送失败,上位机在等待一段时间后未接收到确认帧,则自动重发该数据帧。 (2)上位机对下位机的运行状态及各种记录定值进行查询,上位机发送的是远程帧。 远程帧中只包含有数据类型而没有数据内容,下位机接到远程帧后,根据上位机要求的数据类型向上位机传送数据。同时等待上位机的确认帧。若未接收到确认帧则定时重发。 在该系统中,以标准帧进行通信,即采用11位的标识符。其各位的定义如下: ID0ID4:节点标识,5位的节点标识可使网络能容纳32个节点。 ID5ID7:数据类型,需要传送的数据种类比较多,上传的数据帧规定了7种类型(包括确认帧),与此对应下传的远程帧有6种类型,而下传的数据帧则有6种类型。需要至少3位标识符来确定数据类型。 ID8ID10:帧计数,数据量最大的数据类型包含有17字的数据,而每帧最多能传4字,故该类型数据至少需要5帧才能传完。需对数据帧进行计数以对传送数据具体类型进行确定,故至少需要3位标识符来进行确定帧计数。 由于LF2407有专门的CAN模块中断,且在CAN控制模块中设计了专门的CAN中断标志及屏蔽寄存器,可以十分方便地采用中断的方式来启动CAN控制器进行数据的接收与发送。 在进行CAN控制器的设置时,需要先对改变数据请求位CCR进行使能,并在改变后进行复原。值得注意的是,TMS320LF2407中有很多寄存器位是需要通过写“1”来实现清“0”的,还有些位是只能读不能用程序直接改写的,例如:对邮箱中断(包括接收和发送)的标志位MIFn(05),在进入中断响应后应将其清除,但该位是只读位,用户程序只有写1到TCR寄存器的TAn位(对发送邮箱)和写1到RCR寄存器的RMPn位(对接受邮箱)才可达到清位目的。 5实现的功能     通过该通信系统实现的功能包括:定值传送(从上位机传到下位机的数据帧):     (1)对时:具体到时分秒的数据。 (2)运行定值的传输:包括闪络参数(闪络系数KSP,给定火花率SPARKNUM)、充电参数(给定峰值Up,上升率RISE-NUM,充电时限Ton-max)、放电参数(平均电压Vg,平均电流Ig,放电时间极限Toff-max)。 (3)保护定值:包括开路参数(电压,电流,延时)、短路参数(电压,电流,延时)、欠压电压、延时、过载电流、偏励磁、IGBT温度、油温等。 (4)通道参数:包括一次电流、输出电压电流、IGBT温度、油温、输入电流(三相)、直流电压。 运行定值查询(上位机发出远程帧):包括系统状态、故障记录、运行定值、保护定值、通道系数等。 6结语 本系统已经过调试,在我们初制成的单对单系统(上位机带1台控制系统)中,能抗除强干扰,在较大传输数据量的情况下正常工作。  参考文献 1刘和平TMS320LF240xDSP结构原理及应用M北京:航空航天大学出版社,2002 2邬宽明CAN总线原理和应用系统设计M北京:航空航天大学出版社,19962001 基于CAN总线的RSRS-232转换装置       摘要:阐述了CAN总线在232串口设备远程通信或自组网络中的应用,介绍了CAN到RS-232转换装置的软硬件设计方法。重点对软件设计中CAN波特率的设置、串口波特率的自动检测以及数据流控制等作为详细的叙述。     关键词:CAN 波特率 流控制1 引言工业设备通信通常涉及到很多硬件和软件产品以及用于连通标准计算机平台(个人计算机或工作站)和工业自动化应用设备的协议,而且所使用设备和协议的种类繁多。因此,大部分自动化应用设备都希望执行简单的串行命令,并希望这些命令同个人计算机或者附加的串行端口板上的标准串行端口兼容。RS-232是目前PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。由于RS-232的发送端与接收端之间有公共信号地,所以它不能使用双端信号,否则,共模噪声会耦合到信号系统中。RS-232标准规定,其最大距离仅为15m,信号传输速率最高为20kbit/s。CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一,一个由CAN总线构成的单一网络受到网络硬件电气特性的限制。CAN作为一种多主方式的串行通讯总线,其基本设计规范要求高位速率和较高的抗电磁干扰性能,而且要能够检测出通讯总线上产生的任何错误。当信号传输距离达10km时,CAN仍可提供高达50kbit/s的数据传输速率。表1为CAN总线上任意两个节点之间最大传输距离与其位速率之间的对应关系。表1 CAN总线系统任意两节鼎足之势之间的最大距离位速率/kbps1000500250125100最大距离/m40130270530620位速率/kbps5020105最大距离/m13003300670010000由此可见,无论从实时性、适应性、灵活性,还是可靠性上来看,CAN总线都是一种比RS-232更为优秀的串行总线。当两台串口设备的相距较远,不能直接用RS-232把它们连接起来时,就可以把RS-232转换为CAN,通过CAN总线来实现串口设备的网络互连。但是,RS-232和CAN在电平和帧格式上都是很大的不同。具体表现如下:RS-232标准电平采用负逻辑,规定+3V+15V之间的任意电平为逻辑“0”电平,-3V-15V之间的任意电平为逻辑“1”电平。而CAN信号则使用差分电压传送,两条信号线称为“CAN_H”和“CAM_L”,静态时均为2.5V左右,此时的状态表示为逻辑“1”,也可以叫做“隐性”;用CAN_H比CAN_L高表示逻辑“0”,称为“显性”。显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V;RS-232串口的帧格式为:一位起始位,八位数据位,一位可编程的第九位(此位为发送和接收的地址/数据位),一位停止位。而CAN的数据帧格式为:帧信息+ID+数据(可分为标准帧和扩展帧两种格式)。    因此,设计时就需要有一个微控制器来实现电平和帧格式等的转换。其转换方式如图1所示。2 RS-232到CAN转换的硬件设计在设计RS-232到CAN的转换装置时,用单片机AT89C52作为微处理器;用SJA1000作为CAN微控制器,SJA1000中集成了CAN协议的物理层和数据链路层功能,可被动局面对通信数据的帧处理;AT82C250作为CAN控制器和物理总线之间的接口,用于提供总线的差动发送能力和CAN控制器的差动接收能力,通过AT82C250的引脚3可选择三种不同的工作方式(高速、斜率控制和待机)。其中引脚3接地时为高速方式;高速光隔用6N137实现,其作用是防止串入信号干扰;MAX232用来完成232电平到微控制器接口芯片TTL电平的转换。具体的硬件接口电路参见SJA1000的有关资源,这里不再多做说明。但有以下几点需要注意。(1)CAN总线两端接有一个120的电阻,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。但实际上只需保证CAN网络中“CAN_H”和“CAN_L”之间的跨接电阻为60即可。(2)SJA1000的20引脚RX1在不使用时可接地(具体原因见软件设计),配合CDR.6的置位可使总线长度大大增加。(3)引脚TX0、TX1的接法决定了串行输出的电平。具体关系可参考输出控制寄存器OCR的设置。(4)AT82C250的RS引脚与地间接有一个斜率电阻。电阻大小可根据总线通信速度作适当调整,一般在16k140k之间。(5)MAX232外围需要四个电解电容C1、C2、C3、C4,这些电容也是内部电源转换所需电容,其取值均为1F/25V,宜选用钽电容并且位置应用量靠近芯片,电源VCC和地之间要接一个0.1F的去耦电容。3 RS-232到CAN转换的软件设计在微处理控制下,RS-232和CAN进行数据交换时,采用串口接收和CAN中断方式可提高工作效率。其主程序流程图如图2所示。SJA1000的初始化在复位模式下才可以进行,主要包括工作方式的设置、时钟分频和验收滤波寄存器的设置、波特率参数的设置以及中断允许寄存器的设置等。数据能否准确传递还取决于波特率和流量控制,这也是软件设计时不可忽略的地方。因此接下来主要介绍CAN波特率的设置、串口波特率的自动检测、串口数据流量控制。31 CAN滤波率的设置CAN协议中的要素之一是波特率。用户可以设置位周期中的位采样点位置和采样次数,以使用户可以自由地优化应用网络性能,但在优化过程中,要注意位定时参数基准参考振荡器的容差和系统中不同信号传播延迟之间的关系。系统的位速率fBil表示每单位时间传输数据位的量,即波特率fBit=1/tBit。额定的位定时由3个互不重叠的段SYNC_SEG、TSEG1和TSEG2组成,这3个时间段分别是TSYNC_SEG、TSEG1和TSEG2组成,这3个时间段分别是tSYNC_SEG、tTSEG1和tTSEG2。所以,额定位周期tBit是3个时间段的和。tBit=tSYNC_SEG+tTSEG1+tTSEG2位周期中这些段都用整数个基本时间单位来表示。该时间单位叫时间份额TQ,时间份额的持续时间是CAN系统时钟的一个周期tSCL,可从振荡器时钟周期tCLK取得。通过编程预分频因数(波特率预设值BRP)可以调整CAN系统时钟。具体如下:tSCL=BRP×2tCLK=2BPR/fCLK对CAN位定时计算的另一个很重要的时间段是同步跳转宽度(SJW),持续时间是tSJW。SJW段并不是位周期的一段,只是定义了在重同步事件中被增长或缩短的位周期的最大TQ数量。此外,CAN协议还允许用户指定位采样模式(SAM),分别是单次采样和三次采样模式(在3个采样结果中选出1个)。在单次采样模式中,采样点在TESG1段的末端。而三次采样模式比单次采样多取两个采样点,它们在TSEG1段末端的前面,之间相差一个TQ。上面所提到的BPR、SJW、SAM、TESG1、TESG2都可由用户通过CAN控制器的内装中寄存器BTR0和BTR1来定义。具体如图3所示。设置好BTR0和BTR1后,实际传输的波特率范围为:最大=1/(tBit-tSJW),最小=1/(tBit+tSJW)3.2 串口波特率检测当串口设备是主机时,如需检测此时转换装置的串口波特率,首先可对主机的接收波特率(以9600波特为例)进行设定,并在终端发送一个特定的字符(以回车符为例),这样,主机根据接收到的字符信息就可以确定转换装置的通信波特率。回车符的ASCII值是0DH,在不同波特率下接收到的值如表2所列。表2 不同波特率下接收的字节波特率(bit/s)接收字节(十六进制)波特率(bit/s)接收字节(十六进制)1200804800E61800F096000D24007819200F*33 串口流控制此处讲到的“流“指的是数据流。数据在两个串口之间的传输时,常常会出现丢失数据的现象。由于单片机缓冲区有限,如接收数据时缓冲区已满,那么此时继续发送来的数据就会丢失。而流控制能有效地解决该问题,当接收端数据处理不过来时,流控制系统就会发出“不再接收”的信号,而使发送端停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据丢失。常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面仅就硬件流控制RTS/CTS加以说明。采用硬件进行流控制时,串口终端RTS、CTS接到单片机的I/O口,通过置I/O口为1或0来接收和发出起停信号。数据终端设备(如计算机)使用RTS来起始单片机发出的数据流,而单片机则用CTS来起动和暂停来自计算机的数据流。实现这种硬件握手方式时,在编程时根据接收端缓冲区的大小设置一个高位标志和一个低位标志,当缓冲区内数据量达到高位时,就在接收端将CTS线置低(送逻辑0),而当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高为止。RTS则用来标明接收设备有没有准确好接收数据。    34 CAN接收子程序PeliCAN格式既可以发送标准帧也可以送扩展帧,利用时钟分频寄存器中的CDR.7可以调协CAN模式(0-BasicCAN,1-PeliCAN),接收CAN数据时,可根据帧信息中的FF位来判断是标准帧还是扩展帧,并且RTR位来判断是远程帧还是数据帧。以下是CAN接收子程序:;/;/CAN数据接收/统一成2个字节ID的帧格式/;/REC

    注意事项

    本文(基于CAN总线通信协议的设计与实现.doc)为本站会员(爱问知识人)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开