这是哪一家的usb can tool?51eda?

can - 歌单 - 网易云音乐
播放:10次
网易云音乐多端下载
同步歌单,随时畅听320k好音乐
网易公司版权所有(C)杭州乐读科技有限公司运营:
违法和不良信息举报电话:6
举报邮箱:现场总线作为二十世纪80年代发展起来的新兴技术,在工业现场已有了广泛的应用。在比较有影响力的几种现场总线中,总线以其突出的优点不仅大量应用于工业现场,而且在楼宇自动化、智能终端设备等民用领域也有了长足的发展。现场总线网络技术的实现需要与计算机相结合。以往CAN总线网络与计算机的连接采用RS232、或接口。但是随着计算机接口技术的发展,ISA接口已经逐渐被淘汰;RS232接口数据传输率太低;PCI虽然仍是高速外设与计算机接口的主要渠道,但其主要缺点是占用有限的系统资源、设计复杂、需有高质量的驱动程序保证系统的稳定,且无法用于便携式计算机的扩展。随着USB1.1、USB2.0规范的相继制定,为外设与计算机的接口提出了新的发展方向。USB的主要特点有:外设安装简单,可实现热插拨;通讯速率高,USB1.1全速传送速率为12Mbps,与标准串行端口相比,大约快100倍;支持多设备连接;提供内置。本文给出一种在2000下使用USB1.1协议实现CAN总线的设计方法。整个设计主要开发适配器的固件及计算机的驱动程序、应用程序,以达到用USB接口连接现场CAN总线网络的目的。1 适配器硬件接口设计适配器硬件由微控制器、CAN总线接口、USB总线接口和DC-DC隔离电源模块等组成。原理框图如图1所示。微控制器P89C51RD2是Philips公司生产的增强型MCS-51兼容,片内集成64KB闪存和1KB扩展RAM,双数据指针,4级中断优先级,7个中断&内置看门狗,可编程时钟输出,在6时钟模式下工作,速度是标准51单片机的两倍。此时外部最高可达20M。在高速、大程序容量、中小规模数据处理场合是一款非常理想的单片机型。CAN总线接口使用Philips公司的独立CAN总线控制器SJA1000,并由光耦6N136进行总线隔离。SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,符合CAN2.0A和2.0B规范,最高速率可在达1Mbps。CAN总线收发器采用PCA82C250。PDIUSBD12是Philips公司推出的全速USB接口器件,完全兼容USB1.1规范。图1中D+引脚信号通过器件tConnect命令内部上拉,从而向主机表示为一个全速设备。EOT引脚自动检测USB接口的VBUS以确定USB电缆是否连接到了主机。SUSPEND是双向引脚,用以向微控制器指示器件是否挂起。当有USB总线事件发生时,引脚向微控制器发出中断信号。PDIUSBD12支持总线复用和非复用两种并行接口模式,以方便连接不同类型的微控制器。图1中采用总线复用方式,当用奇数地址访问PDIUSBD12时被认为是命令,偶数地址访问则被认为是数据读写。各器件都需要外部时钟信号,而且它们自身也都有可编程的时钟输出功能,这就给系统的时钟设计带来了便利。图1中微控制器6时钟运行模式下,外部为12MHz。P89C51RD2的P1.1引脚产生6MHz方波作为PDIUSBD12的输入时钟;通过PDIUSBD12的SetMode寄存器编程使CLKOUT输出时钟频率为24MHz,作为SJA1000的外部输入时钟。2 软件设计软件设计包括微控制器的固件设计和计算机端USB驱动程序两部分。2.1 微控制器固件编程固件编程是USB数据传输系统中终端设备程序设计的一个重要概念。微控制器通过固件是程序与计算机进行数据交换。固件设计的目的是:使PDIUSBD12在USB上达到最大的传输速率;增加系统的可扩展性和硬件无关性。固件要实现的内容:一是对SJA1000初始化,接收CAN总线送来的数据,收集CAN网络状态信息,并将主机的数据下发到CAN网络;二是对PDIUSBD12初始化,完成USB总线连接过程,并组织CAN网络和主机之间的数据传送。设计中采用KeilC51软件编译环境,C51和ASM混合编程方式。
&&&&&往下看有更多相关资料
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670& & &&)CAN总线技术
CAN是在年代初所制定的规格,并在年标准化(ISO 11898-1),被广泛的应用在各种车辆与设备上。CAN为一序列,它提供高安全等级及有效率的即时控制。更具备了侦错和优先权判别的机制,在这样的机制下,网络讯息的传输变的更为可靠而有效率。CAN 亦提供多主控端的架构,这种特色,特别适合使用在主系统或子系统下提供更完整智慧型网络设备,如及致动器。
CAN是建立在基于资讯导向传输协定的广播传输机制(broadcast communication mechanism)上。CAN定义资讯的内容,利用讯息识别子(message identifier,每个message identifier在整个网络中皆为独一无二的)来定义内容和资讯的优先顺位,以进行资讯的传递。并非使用指派特定站台位址(station address)的方式。
如此,CAN拥有了高度的弹性调整能力,可以在既有的网络中增加站台而不用在软硬件上作修正与调整的作业。除此之外,资讯的传递不是建构在特殊种类的站台上,增加了在升级网络时的便利性。
即时的资讯传输(Real-time data transmission)为CAN的特色之一。在即时的运算中,讯息传递的优先级应以重要性来分,重要性较高的讯息会比较不重要的讯息传递的更频繁。
CAN总线的产生与发展
控制器局部网(CAN-TROLLER AREA NETWORK)是公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通、以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普及推广。
  随着计算机硬件、软件技术及技术的迅速发展,工业已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。
  分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将 5C技术--COMPUTER(计算机技术)、(自动控制技术)、COMMUNICON(通信技术)、CRT(显示技术)和 CHANGE(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型控制系统和集中型计算机控制系统都具有明显的优越性。
  典型的分散式控制系统由现场设备、与计算设备以及通信设备组成。现场(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线领域中最为活跃的一个领域。现场总线的研究与应用已成为工业数据总线领域的热点。尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格比将吸引众多工业控制系统采用。同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。控制器局部网 CAN(LER AERANETWORK)正是在这种背景下应运而生的。
  由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。为此,年 9月
SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。此后,年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
CAN总线特点
CAN是德国公司从80年代初为解决现代汽车中众多的控制与器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是、同轴或光导纤维。通信速率可达1MBPS。
  2.1 CAN总线通信中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
  2.2 CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
  2.3 CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任意插在PC AT XT兼容机上,方便地构成分布式。
  2.4 结构简单,只有2跟现与外部相连,并且捏布集成了错误探测和管理模块。
探讨CAN总线的抗干扰能力
通信技术的不断进步离不开应用对带宽与抗干扰的追求,又要快又要正确,当然关键点是适合当前需求的性价比最佳的技术。没有这些追求,可能我们会一直停留在RS232的标准上。CAN经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃、枝繁叶茂。当人们发现它的局限性,又面临新的总线(例如FkxRay)的挑战时,它的地位还能维持多久?究竟是什么原因使它这么成功?这些问题都离不开对通信技术本质和CAN总线特性的分析与理解。当今CAN总线的竞争对手包括以RS485为物理层的总线和FlexRay总线,这种形势下cAN总线的生命力在于其优越的抗干扰能力和性价比,这些都来源于它独特的物理层与数据链路层的设计。
  1.1 信号状态
  CAN总线的信号状态为2种:隐位与显位。当总线上出现隐位与显位发送的竞争时,总线上的最终结果是显位。这种二值特性对cAN总线的可靠性与其他特性有很大贡献。CAN总线信号的二值且“单稳态”的特性为它的数据链路层创造了条件,即CAN总线上可以容许多主发送、竞争占线的方式。这极大简化了消息的调度。为使总线上的节点均有机会发送,有些总线采用“主从方式”,这种方法使总线的利用率较低,且从节点消息发送的等待时间较长。有些总线采用“令牌方式”,但令牌的丢失和重复需要特别的处理机制。
  许多总线是不容许总线上有冲突的,因为冲突发生后,不同的接收节点得到的电平结果是不同的。这使它们对总线上发生的事件在时间上与内容上产生不同的解释,退出冲突就会有时间的先后,从而导致节点间状态的不同步。但是由于干扰的存在,节点可能会有误动作,发生不希望的冲突。为此,要增加需多辅助的设备来防止冲突,例如在时间触发协议中经常采用的总线监守。在CAN总线里,冲突的处理由于该信号的二值且“单稳态”的特性变得简单,报错帧可以使所有节点(包括发生冲突的节点)容易地取得数据的一致性和节点状态的同步。
FlexRay总线的状态有低功耗闲置、闲置、“O”、“1”四种。在正常工作模式时,总线接收部分只认可后3种状态。与RS485总线不同的是,FlexRay有一个判断闲置状态的机制。当总线电平差处于某范围内——uBus—ActiveLow(最低一450 mV)~uBusActiveHigh(最高450mV)一段时间(dIdleDetecti,最小50 ns,最大250 ns)后,它就将RxEN引脚置”l”,并将RxD置”1”。当总线电平超出该范围一段时间(dActivityDetection,最小100 ns,最大300 ns)后,就退出闲置状态。因此它不会在闲置状态受干扰而轻易地误判为新帧的开始。而总线上因干扰而引起冲突的情形可由另设的总线监守加以防止。当然,这些功能的添加意味着成本的增加。
  1.2 信号电平与共模电压
  信号电平的高低有两层影响:一是闲置时有干扰被误认为是传送的启动信号;二是传送逻辑信号时因干扰而产生误码。
  RS485的阈值很小,总线电压差小于一200mV时为“0”,大于200 mV时为“1”。因此,200 mV幅度的干扰就可能引起误启动,而造成误码的干扰幅度为400mV。RS485总线的共模电压为~7~+12 v。
  CAN只有2种状态:当总线电压差小于0.5 V时,接收为隐位(即逻辑“1”);大于0.9 V时,为显位(即逻辑“O”)。O.5~O.9 V为变化的过渡区。总线隐位电压差的正常值为0 V,因此可能引起误启动的最小干扰为0.5 V;显位电压差的正常值为2.O V,合格的网络显位电压差的最小值为1.2 V,引起误码的最小干扰为O.3 V。CAN总线的共模电压为一2~+7V。
  前面已介绍了FlexRay总线在总线闲置与正常通信的过渡情况,不再重复。它的接收器逻辑“l”电平为uData1(最低150 mV,最高300 mV),逻辑“O”电平为uData一0(最低一300 mV,最高一150 mV)。因此引起误码的最小干扰为0.3 V。FlexRay总线的共模电压为一10~+15 V。
1.3 采 样
  采用的总线往往与UART相连,它们一般在启动电平负跳变后的1/2位处对总线的逻辑值作采样判断。因此,当总线闲置时,若干扰的幅度足够大,且持续时间大于1/2位,就可能产生误启动。
  CAN总线的位值一般在80%~90%位处采样,因此它能容忍的误启动干扰不但幅度大,而且时间长。正常传送时,提高CAN的位采样为1次,低速时可以有3次(例如TJAl000中由SAM位控制)。这意味着可以抵御1次干扰引起的错误,因为没有看到这3次采样的间隔有多大,只能估计它是以Tq为单位。高速时实现3次采样的可能性在于厂家产品的设计,与CAN标准无关,如果以1 Mbps计算,每位分为25个Tq,那么在3次采样下,可以抵御的干扰持续时间为40 ns。
  FlexRayr总线容许的误启动时间与位采样点位置无关,由dActivityDeteetion决定,最小为100 ns。正常传送时,根据FlexRay数据链路层3.2.2的规定,每一位采样cSamplesPerBit(=8)次,将最近的cVotingSamples(=5)次按多数进行表决,即可得到当时的总线接收值(zVoted—Val)。因此这种方法可以抵御1/4位长度的干扰,按FlexRay 10 Mbps计算,抵御的干扰持续时间为25 ns。
  2 媒体存取与逻辑链路层
  2.1 位填充
  CAN总线的位填充是在以前的位填充做法的基础上发展起来的。在高级数据链路控制规程(HDLC)中用作报头与报尾的标志位;在其他部分为了不致引起误解,采用每连续5个“1”之后填入一个“0”的办法,接收后将填人的O去掉。cAN总线不仅在连续5个“1“之后填入一个“0”,而且在5个“0”之后填入一个“1”,接收后将填入位丢掉。CAN总线这样做不仅为报错机制(报错帧)创造了条件,而且还有2个对信号传递有利的方面:一是为CAN总线的位同步创造了较短的同步间隔,有利于提高同步精确度;二是有利于在总线上引入适时的反向放电,减少因总线长期同一极性充电造成的物理层误判。
但是位填充方法减弱了CAN总线的CRC防止错误漏检的能力。发生在填充位的错误会改变位流的相位,只要有2次填充位错就会使原来的部分位流提前或推后1位,而此时仍有CRC检查通过的可能。通过仿真方法注入位错,求出CRC检查漏检出错的概率为l.3×10-7,而不是CAN总线声称的所有5位以下的错误均能检出。位填充的另一个缺点是造成数据输送率的下降以及帧长度的不确定性。FlexRay总线没有用位填充的方法,使用其他方法实现位同步。
  2.2 帧编码与解码
  关于CAN总线的帧已有大量文献介绍,这里不再赘述。FlexRay总线则复杂得多,其中对用户安排带宽起关键作用的是扩展字节的概念。根据FlexRay总线数据链路层3.2.1.1.3的规定,每一个字节开始处要有一个由“1”和“O”组成的字节开始序列(Byte Start Sequence,BSS),然后才是要传送的8位数据。FlexRay容许的最大时钟变化cClockDeviationMax为1 500×10-6(0.15%),因此收发之间可能差O.3%,每333次就可能差1次采样。如前所述,1位要采样8次,那么不到44位就会差1次采样,因此除了时钟本身的偏移与速率要校正外,FlexRay中也有位同步的机制。
  位同步有2个条件:同步机制已使能;zVotedVal由高到低的跳变。正常传送时,同步机制的使能发生在BSS的zVotedVal为高时。当同步时,将保存zVotedVal的cSamplesPerBit位循环置2;当循环计数器计数为cStrobeOffset(=5)时,将该zVotedVal取作真正送到协议其他部分的位置。考虑到实现位同步必须有BSS这个因素,一个FlexRay信道即使不算其他开销,至多只能传送8Mbps的实际数据;再加上其他的开销,例如发送帧之间的间隔cChannelIdleDelimiter(=11位)等,有效的负载更小。
2.3 回 读
  CAN总线发送节点能够在送出1位时又把它从总线上读回来,其他总线没有这个功能。这个功能提供了无损位仲裁的基础,让优先级高的消息获得在总线上继续传送的权力;同时,增强了发送节点早一点检测出错误的能力,一旦有错就可发送报错帧并停止原来帧的传送,节省了出错后无用部分的继续传送带宽。
  2.4 错误约束
  CAN总线对错误的检测主要是编码与解码的过程,例如bit错、填充错、ACK错、CRC错和格式错。对于时间同步,并未将其视为重要问题。例如当重同步误差大于重同步跳跃宽度时,肯定会出现位同步的失败,造成数据传送的错误。这种错误会被误认为是由其他原因引起,而不能及时发现。有时候它也成为Bling idiot失效的原因。CAN总线对瞬态故障与永久性故障采用分类的约束办法。有错时收发错计数器增加快,正常时收发错计数器减少慢,按收发错计数器的值把节点分为主动报错状态、消极报错状态和离线状态。处于消极报错状态的节点有可能无法正确接收到帧。出错过于频繁时把有永久性故障倾向的节点从总线上切除,虽然被切除的节点失去了通信能力,但其他节点间的通信可能免除了骚扰,这不失为一种有效的故障时性能逐步退化的策略(scalable degra—dation)。
  FlexRay总线的检错包括解码过程中的错以及时间同步过程中的错,例如数据帧接收时是否有格式错、CRC错,符号(symbol)传送时高、低的时间长度是否在范围内。由于是时间触发协议,通过各分散的节点预定发送时间与实际发送时间的差进行修正,建立同步时基,对发送时间的超限要求更严。它对时间同步中产生的问题也采取了一种逐步退化的策略。它有一个协议运行控制的机制(POC),POC有3个状态,为POC:normal active(积极),POC:norreal passive(消极)和POC:haIt(停止)。其中,积极状态下,同步处于容许界限内,不会破坏其他节点的同步;消极状态下,同步已恶化到不能再发送的地步,若再发送就有可能超出它的窗口而与其他节点冲突,但它容许接收,以取得足够的同步重返积极状态。在自检或完好性检查(sanity check)未通过,或POC与其他核心机制发现严重错,或host检查到错误给出命令的情况下,POC会进入停止状态,此时只有重新初始化了。
从上面的简述可见,在保证所有节点数据的一致性上,二者都是要靠其他措施的,而这些可能的措施(例如组籍算法,membership algorithm)都有待讨论,对错误的约束仅限于逐步退化的策略。
  2.5 帧出错率
  总线传送中的出错来源于各种干扰,除了前面分析的信号电平、采样过程、共模电压以外,来自的传导干扰也可能使通信控制器工作异常而通信失效,所以不能仅以物理层的一些指标作完整的判断。帧的出错概率对应用有很大影响,它涉及出错以后该怎么办的问题。帧的出错概率与帧长成比例关系,CAN2.0A的最大帧长为133位,FlexRay的最大帧长为2 625位(254字节数据+8字节开销+5个起始/停止位,这里1字节=10位)。假设二者的误码率相同,那么FlexRay的帧出错率PF约为CAN(Pc)的20倍。虽然FlexRay帧可传送的数据多得多,但是一个帧错了,其中的消息便全部不能利用,这种消息捆绑在一起的特性,大大增加了出错的机会。如果将FlexRay像CAN那样传送短帧,那么帧的效率会比CAN还低,存放静态段调度表的硬件部分更大。如果将来由于ECU内更强大,一个节点发送的消息更多,那么这种长帧有用途,但是出错概率的增大仍是缺点。另外,用长帧传短消息涉及消息在帧内的编排方法,这种灵活性必然要求有高级通信层的统一约束,否则会带来修理、供货、管理上的不便与成本的增加。这可能是漫长的路,在统一之前仍然是各汽车厂专用的封闭的高层协议,几乎没有留给外人插足的空间。
  3 与FlexRay总线的比较
  3.1 单信道应用
  出错自动重发是CAN总线的一大特点。FlexRay协议的网络拓扑结构包括总线方式,但是用2个信道还是1个与性能和成本关系很大。FlexRay的设计是用2个信道同时传送来保证传送的正确性,因为它不像CAN有出错重发的功能。2个通道同时出错的概率比较小,不考虑出错重发时丢帧也不多。如果考虑2个信道同时出错而要求重发,则必须在应用层处理,而在动态时隙中传送请求与重发,不是一件容易的事,也推迟了送达时间。如果FlexRay只用一个信道来完成,出错概率较大,为了简化应用可以采用重复传送的方法(即时间冗余),在2次或多次传送中只要有1次成功便可。但是这样做相当于把FlexRay的带宽降了下来,例如减为1/2或1/3。这并不意味着2个信道时吞吐量仅为10 Mbps或更小,因为可以在其中一个信道安排较多的动态段,用于出错消息的重发请求与重发,即仅传送出错的部分。
3.2 安全攸关应用的额外要求
  对FlexRay这样的时间触发通信协议,其错误约束机制中已尽量考虑了各种可能的出错情况,防止一个节点的发送超出预定给它的时间窗口。为了提高防错的能力,另外设计了总线监守。总线监守有自己的时钟线路和与节点发送的调度表,它控制该节点的总线,仅在容许的时间窗口里让总线驱动器工作。这种机制给防止冲突构成了双保险,但是增加了系统的成本,所以把它作为选件。在FlexRay中有2种总线监守:一种是本地总线监守,即与节点靠近的地方,甚至是可以做在同一硅片上的总线监守;另一种是远方的星型中的集中式总线监守。在总线式应用中有关的是本地总线监守。虽然总线监守要做的事少一些,但是它也要有时间同步的相关机制,以及启动和从休眠中唤醒的算法。为实现这些功能,从总线上接收数据的部分就是必不可少的。由于仅少了发送部分,FlexRay甚至提到过一种可能:将控制设计成可组态的,既可用作通信控制器,又可以用作总线监守。这就说明了总线监守的结构是复杂的、高成本的。有的FlexRay文献中提到,可以将安全攸关的节点与要求稍低的节点连在同一总线上,要求低的节点可以不配总线监守。这种讲法是不正确的,因为根据木桶原理,一段总线上通信的冲突可能性由最有可能引起冲突的节点决定,安全要求低的节点发送超时会引起总线上的冲突,影响安全攸关消息的传送。
  4 小 结
  目前在车内总线技术的竞争方面,CAN总线的主要对手是FlexRay总线,因此与FlexRay总线在单信道应用上的比较是不可避免的。因为在一个信道上传送FlexRay的帧出错率高很多,又没有出错自动重发的机制,所以FlexRay总线要减少出错就必须重复发送,以时间备份的方式纠错。经过FlexRay扩展字节与时间备份的折扣,有效的数据传送速率已降到4 Mbps;再加上其他开销,带宽还会减小。另一方面,时间触发协议的调度表的求解在负载越大时越困难,不可能用足4 Mbps。
  FlexRay总线的通道长度最长为24 m,如果CAN总线也限于24 m,则根据每米信号传送迟后约5 ns计算,CAN位时间中传送段的通道传送部分为240 ns。若设计驱动器的响应时间为40 ns左右(如SJAl000),那么CAN总线的数据传输速率达到2~3 Mbps也是可能的,虽然ISO11898—1限定1 Mbps为上限,但它并非技术的极限。FlexRay总线在抗共模干扰上比CAN总线强,但是出错并不仅由共模干扰引起,例如来自电源的传导干扰也会引起包括在内的的所有出错,所以并不能确定FlexRay总线的硬件可靠性高于CAN总线。在保证传送数据的一致性方面,2种协议都要有应用层的解决办法,FlexRay总线并未提供直接可用的机制。作为通信的下层,它们都采取的是性能逐步退化的策略。也有人在研究冗余通道、星形拓扑等措施在CAN总线中如何实现,并非不可能。
  就CAN总线而言,FlexRay总线是一种挑战,但是在单信道的总线拓扑应用中FlexRay总线并不构成威胁。由于目前高档车内已经用了不止一个CAN总线系统,用双信道的FlexRay取代多个CAN总线系统有可能在性价比上取得进展,但是与现在生产的应用CAN总线的ECU存在兼容问题,且成本较高,这些问题的解决还有待时日。尽管CAN总线有一定局限,甚至还有漏洞,但对CAN总线的改进还在继续,在未来的5~10年里CAN总线仍然有很大的性价比优势。
双MCU的CAN总线中继器设计
引言&& 传统的基于单的CAN难以满足大量数据的中转要求,本文基于双MCU设计高性能的CAN中继器。  CAN总线以其开发维护成本低、总线利用率高、传输距离远(最远可达10 km)、传输速率高(最高可达1 Mbps)使用户能组建稳定、高效的现场总线网络。CAN总线已被广泛应用到各个自动化中,例如汽车、自动控制、智能大厦、电力系统、安防监控等领域。随着CAN总线网络区域的扩大,2个节点之间的直接数据传输将难以满足远距离通信要求。CAN中继器是延长CAN总线通信距离的中转站,其通信效率和通信可靠性直接影响CAN总线的通信能力。1、系统总体设计  CY7C136是2 KB高速C静态RAM。同一片RAM上有2组和2组地址线,对每个端口的控制是相互独立的,可分别在的任意位置存取数据。  双口RAM作为2个MCU的共享资源,一个端口与MCUl相连,另一个端口与MCU2相连。从SJAlOOOCAN总线1接收来的数据送入双口RAM,这些数据被MCU2取走并送到SJAl000 CAN总线接口2上;从SJAl000 CAN总线接口2接收来的数据也送入双口RAM,并被MCUl取走送到SJAl000 CAN总线接口1上。由于MCU的地址总线和数据总线是复用的,因此采用锁存器进行地址锁存,硬件总体结构如图1所示。
2、硬件实现  电路中使用的2片MCU为系列AT89C52,成本低、开发周期短、易于实现、可靠性高。MCUl与MCU2之间通过P1口的P1.5、P1.6、P1.7进行联络与应答,保证系统存储空间访问的安全性。2.1 MCU主  MCUl(AT89C52片1)连接的外围设备有双口RAM和CAN总线控制器。为了防止地址冲突,采用74LS138译码器进行地址译码。AT89C52的PO为地址/数据复用口,采用74HC573作为地址锁存器。由于MCUl和MCU2电路原理相同,本文只介绍MCUl控制电路。MCUl电路原理如图2所示。
2.2 双口RAM接口电路  双口RAM电路接口如图3所示。双口RAMCY7C136作为2个MCU数据的中转站,分别与2个MCU的相应引脚相连。其中CY7C136引脚I/O0L~1/O7L与第1片AT89C52(MCUl)的PO相连,引脚I/OOR~I/O7R与第2片AT89C52(MCU2)相连。YOUT为MCU1读写双口RAM的片选信号,Y1AOUT为MCU2读写双口RAM的片选信号,并将MCU的读写控制与双口RAM的相应读写控制信号线相连。
2.3 CAN总线控制器接口电路  CAN总线控制器采用sJAl000。74LSl38译码器的YO引脚输出作为SJAl000的片选信号。中断引脚连接MCUl的INTO,作为处理CAN接收中断的触发信号。电路原理如图4所示。
3、软件设计实现3.1 存储空间分配思想  为使双口RAM实现最高效率的应用,将2 KB的存储空间设计成2个1 KB大小的环形队列形式,每一个环形队列的结构如图5所示(图中阴影部分为存有数据的区域,非阴影区域为空闲区域)。
3.2 程序控制流程  中继器只是中转来自总线上的数据,而这些数据是随机的,因此接收采用中断的方式。某一时刻只要SJAl000成功接收一帧数据,就会向负责本端口的MCU申请中断,进行数据接收,并将数据送入环形队列queue。  当环形队列中有待发送的数据时,程序的处理流程如图6所示(其中,tail和bead分别为环形队列的尾指针和头指针)。MCU首先获取对方环形队列中的信息,主要是查看环形队列信息是否为空,如果为空则不对其操作。如果不为空,则队列中有待发送的信息,于是启动一次信息发送。如果发送成功,则通过联络信号通知对方修改环形队列指针。
4、测试  对基于双口RAM的双MCU中继器进行压力测试(高数据负载率下测试)。短距离内向2个CAN口加载10 000帧数据,测试中继器成功中转情况,其结果如表1所列(表身数据为成功中转帧数)。根据CAN总线规定,其平均负载率不超过65%,传统的单MCU CAN中继器平均负载率很难达到60%。从表1可以看出,引入双MCU后CAN中继器的性能大大提高,能在负载率超过60%的情况下稳定工作。环形队列queue溢出的情况可以通过增加双口RAM的大小来解决。
结语  采用双MCU配合双口RAM设计CAN总线中继器,解决了单MCU无法快速处理CAN总线负载过重的问题,使其性能和效率得到了很大提高,为CAN中继器在工程领域的优化设计提供了良好的平台和。
基于CAN总线和虚拟仪器技术的汽车CAN节点测试仪设计
引言本文通过选择高速和采用技术保证的通用性,使其只需通过软件更新便可测试多个CAN节点。
ControllerAreaNetwork(控制器局域网,缩写为CAN),是为解决汽车间的信息通信而由德国公司提出的一种标准,以其卓越的性能、极高的可靠性和低廉的价格,现在已经在汽车领域获得广泛应用。为了保证汽车CAN总线节点安全、稳定运转,同时为了提高大批量生产的效率,必须在生产过程中对CAN节点产品进行测试,开发基于CAN总线的汽车CAN节点测试仪显得十分重要。  
  CAN协议简介    CAN协议建立在ISO/OSI7层开放互连参考模型基础之上,为了方便应用,同时保证各节点间无差错的数据传输,仅定义了ISO/OSI模型中最下面的两层:数据链路层和物理层,应用层协议由用户自行定义,也可采用一些国际组织制订的标准协议。    CAN是一个典型的以半双工方式通信的串行总线结构形式,一个节点发送信息,多个节点接收信息。不同于主从式总线,CAN采用一种称作广播式的存取工作方式,是一种对等式的总线网。在CAN总线的通信协议中,各节点地址没有主/从的概念,也没有任何与节点地址相关的信息存在。信息以报文的形式出现,其数据结构如图1所示。    图1中的仲裁域用来表明消息的类型和消息的优先级,CAN总线上的节点将根据标识符决定是否需要读取信息包中的数据,从而避免了不必要的节点处理总线上信息的频繁中断,提高了数据传输速率,保证了数据出错率极低。  
      系统硬件设计    测试仪的硬件设计主要包括三部分:处理器及其、CAN总线电路、RS232接口电路。结构图如图2所示:    
    处理器采用ATMEL公司基于ARM920T内核的AT91RM9200,该处理器运行频率高达180MHz,可外扩和64MBRAM,使其可以满足大多数汽车CAN节点的测试需求。片上集成了许多标准接口,如USB主/从接口、以太网、RS-232,使其可以简单得与PC机相连,测试数据可以实时地上传到PC机,借助PC机强大的处理性能和丰富的数据处理软件,进行在线监测及数据处理。    AT91RM9200包括一个高速片上SRAM工作区及一个低等待时间的外部总线接口,以完成应用所要求的片外存储器和内部存储器映射外设配置的无缝连接。外扩存储器包括1片S29GL256N和2片K4S561632A-TC/L80SDRAM,容量为,SDRAM容量为64MB。    CAN总线接口电路包括总线控制器和物理层接口两个部分,实现测试仪与被测试CAN节点的CAN总线通信,这是实现测试的前提。CAN总线控制器采用PHILIPS公司的SJA1000,它有着更好的性能和稳定性,支持CAN2.0A/B协议,有两种工作模式:BasicCAN和PeliCAN,可同时支持11位和29位标识码,能挂载更多CAN节点。物理层接口选用TJA1054实现,它可以连接高达32个节点,内建斜率控制功能及CANL和CANH总线输出的良好匹配使电磁辐射EME很低,具有优异的总线故障管理能力,总线故障时自动切换到单线模式,故障修复后自动复位到差分模式,同时提供对和地的短路保护功能,特别适合于汽车内部的CAN通讯。    RS232接口电路即测试仪与PC的通信接口,AT91RM9200内部带有UART控制器,可以方便得与PC机连接,对测试信息进行在线监测,数据存储。    软件设计    软件设计包括上位机程序和下位机程序两个部分。上位机程序在NI公司专门针对虚拟开发设计的的Labwindows/CVI平台上开发,包括USB通讯程序和测试程序两个部分。labwindows/CVI包括对众多总线(包括、PCIExpress、PXI、PCMCIA、USB、以太网、GPIB、和IEEE1394)的支持,可以方便得开发RS232通讯程序。测试程序包括人机交互界面(即仪器面板)和测试记录两个部分,Labwindows/CVI提供了丰富的控件,可以迅速开发仪器面板,省去了在下位机上开发人机交互界面(主要是指和按键),所开发的仪器面板界面如下图所示:    下位机程序采用linux作为测试仪的操作系统,采用较新的linux-2.6.13内核,使软件设计模块化,便于移植。软件主要包括通讯程序和测试程序两大部分。通讯程序包括CAN总线通讯程序和USB通讯程序两个部分,本文主要介绍一下CAN通讯程序。    
    CAN通讯程序包括SJA1000的初始化、接收数据和发送数据。测试仪上电后进行SJA1000的初始化,该操作必须正确可靠,这是接收数据和发送数据的前提。根据SJA1000的手册,设计代码如下:
writesja1000(MODA, 0x09);   //设置方式寄存器,进入复位操作以初始化writesja1000(CDRADDR, 0x88);   //设置时钟分频寄存器,选PeliCAN模式writesja1000(AMR0ADDR, AMR0 );   //设置接收屏蔽寄存器0writesja1000(AMR1ADDR, AMR1);   //设置接收屏蔽寄存器1writesja1000(AMR2ADDR, AMR2);   //设置接收屏蔽寄存器2writesja1000(AMR3ADDR, AMR3);   //设置接收屏蔽寄存器3writesja1000(ACR0ADDR, ACR0);   //设置接收验收代码寄存器0writesja1000(ACR1ADDR, ACR1);   //设置接收验收代码寄存器1writesja1000(ACR2ADDR, ACR2);   //设置接收验收代码寄存器2writesja1000(ACR3ADDR, ACR3);   //设置接收验收代码寄存器3writesja1000(BTR0ADDR, 0x03);   //设置总线0writesja1000(BTR1ADDR, 0xFF);   //设置总线定时器1writesja1000(OCRADDR, 0xAA);   //设置输出寄存器writesja1000(RBSAADDR, 0x00);   //设置接收数据缓冲区首地址writesja1000(TXERRADDR, 0x00);   //清除发送错误寄存器writesja1000(RXERRADDR, 0x00);   //清除接收错误寄存器readsja1000(ECCADDR);   //清除错误代码捕捉寄存器writesja1000(IERADDR, 0xFF);   //打开中断使能寄存器writesja1000(MODADDR, 0x08);   //设置方式寄存器,进入政党操作模式以收发数据writesja1000()和readsja1000()是封装好的底层函数,其具体实现如下:static void writesja1000(unsigned char addr, unsigned char data){  *SJAADDR =  *SJADATA =}static unsigned char readsja1000(unsigned char addr){  *SJAADDR =   return *SJADATA;}      其中SJADATA、SJAADDR分别是为读/写SJA1000的数据或地址所分配的AT91RM9200地址。    接收数据和发送数据均采用中断来实现,基于中断的数据处理流程是CAN通讯程序的重点,其具体实现流程如图4所示:  
      结束语    与传统的8/16位测试仪系统相比,本文介绍的测试仪基于32位ARM9处理器,运行速度可高达180MHz,扩展能力强;采用Linux操作系统,软件更加模块化,更新和移植更加方便,运行更稳定;采用虚拟仪器技术实现测试仪的,便于功能扩展,通用性强。在对汽车CAN节点现场测试时,该测试仪运行稳定快速,保证了该产品的顺利生产。
基于SJA1000的CAN总线智能节点实现
CAN总线与其它几种现场总线比较而言,是最容易实现、价格最为低廉的一种,但其性能并不比其它现场总线差。这也是目前CAN总线在众多领域被广泛采用的原因。节点是网络上信息的接收和发送站。所谓智能节点是由微处理器和可编程的CAN控制芯片组成,它们有两者合二为一的,如芯片P8XC59;有如本文介绍的独立的通信控制芯片与接口。后者的优点是比较灵活。当然,也有不要微处理器的节点。下面以CAN通信控制器SJA1000为例,对CAN总线系统智能节点硬件和软件设计作一下全面的介绍。
由于CAN总线卓越的性能,极高的可靠性,独特灵活的设计和低廉的价格,现已广泛应用于工业现场控制、智能大厦、小区安防、交通工具、、环境监控等众多领域。CAN已被公认为几种最有前途的现场总线之一。CAN总线规范已被ISO国际标准组织制订为国际标准。CAN协议也是建立在国际标准组的开放系统互联参考模型基础上的,主要工作在数据链路层和物理层。用户可在其基础上开发适合系统实际需要的应用层通信协议,但由于CAN总线极高的可靠性,从而使应用层通信协议得以大大简化。
一、CAN通信控制器SJA1000功能简介
CAN的通信协议主要由CAN控制器完成。CAN控制器主要由实现CAN总线协议的部分和实现与微处理器接口部分的组成。对于不同型号的CAN总线通信控制器,实现CAN协议部分电路的结构和功能大多相同,而与微处理器接口部分的结构和方式存在一些差异。这里主要以SJA1000为代表对CAN控制器的功能作一个简单介绍。
SJA1000是一种独立CAN控制器。它是公司的PCA82C200 CAN控制器的替代产品。SJA1000具有Basic CAN和Peli CAN两种工作方式。PeliCAN工作方式支持具有很多新特性的CAN 2.0B协议。
SJA1000在软件和引脚上都是与它的前一款PAC82C200独立CAN控制器兼容的(SJA1000引脚功能如表1所列),在此基础上增加了很多新的功能。为了实现软件兼容,SJA1000采用了两种工作方式:Basic CAN方式(PCA82C200兼容方式)和Peli CAN方式(扩展特性方式)。工作方式通过时钟分频寄存器中的CAN方式位来选择。上电复位默认工作方式是Basic CAN方式。Basic CAN和PeliCAN方式的区别如下:
在PeliCAN方式下,SJA1000有一个重新设计的含很多新功能的寄存器组。SJA1000包含PCA82C200中的所有位,同时增加了一些新的功能位。PeliCAN方式支持CAN2.0B协议规定的所有功能(29位的标识符)。表1 SJA1000引脚功能
功&&&&&&& 能
地址/数据复用总线
ALE信号(INTEL方式)或AS信号(MOTOROLA方式)
片选输入,低电允许访问SJA1000
的读信号(Intel方式)或E信号(MOTOROLA式)
微控制器的写信号(Intel方式)或读写信号(MOTOROLA方式)
SJA1000产生的提供给微控制器的时钟输出信号,此信号由内部经可编程分频器得到。可编程禁止该引脚
振荡输入,外部振荡放大器信号经此引脚输入
振荡放大器输出,使用外部振荡信号时此引脚必须开路
方式选择输入端:1=Intel方式,0=MOTOROLA方式
由输出驱动器0至物理总线的输出端
由输出驱动器1至物理总线的输出端
输出驱动器地
中断输出端,用于向微控制器提供中断信号
复位输入端,用于重新启动CAN接口(低电平有效)
输入比较器5V电源
由物理总线至SJA1000输入比较器的输入端。显性电平将唤醒处于睡眠方式的SJA1000。当RX0高于RX1时,读出为隐性电平,否则为显性电平
输入比较器地
逻辑电路5V电源
SJA1000的主要新功能如下:
*标准结构和扩展结构报文的接收和发送;
*64字节的接收FIFO;
*标准和扩展帧格式都具有单/双接收(含接收屏蔽和接收码寄存器);
*可进行读/写访问的错误计数器;
*可编程的错误报警限制;
*最近一次的错误代码寄存器;
*每一个CAN总线错误都可以产生错误中断;
*具有丢失仲裁定位功能的丢失仲裁中断;
*单发方式(当发生错误或丢失仲裁时不重发);
*只听方式(监听CAN总线,无应答,无错误标志);
*支持热插拔(无干扰软件驱动位速率检测);
*硬件禁止CLKOUT输出。
二、智能节点硬件电路设计
本文中所设计的CAN总线系统智能节点,采用89C51作为节点的微处理器。在CAN总线通信接口中,采用公司的SJA芯片。SJA1000是独立CAN通信控制器,82C250为高性能CAN总线收发器。
图1所示为CAN总线系统智能节点硬件电路原理图。从图1中可以看出,电路主要由四部分构成:微控制器89C51、独立CAN通信控制器SJA1000、CAN总线收发器82C250和高速光电6N137。微处理器89C51负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。&&& SJA1000的AD0~AD7连接到89C51的P0口。CS连接到89C51的P2.0,P2.0为0的CPU片外地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作。SJA1000的RD、WR、ALE分别与89C51的对应引脚相连,INT接89C51的INT0。89C51也可通过中断方式访问SJA1000。
为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速6N137后与82C250相连,这样就很好地实现了总线上各CAN节点间的电气隔离。不过,应该特别说明的一点是光耦部分电路所采用的两个电源VCC和VDD必须完全隔离,否则采用光耦也就失去了意义。电源的完全隔离可采用小功率电源隔离模块或带多5V隔离输出的实现。这些部分虽然增益了节点的复杂程序,但是却提高了节点的稳定性和安全性。
82C250与CAN总线的接口部分也采用了一定的安全和抗干扰措施。82CF250的CANH和CAHL引脚各自通过1个5Ω的与CAN总线相连。电阻可起到一定的限流作用,保护82C250免受过流的冲击。CANH和CANL与地之间并联了2个30pF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。另外,在两根CAN总线接入端与地之间分别反接了1个保护,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。82C250的Rs脚上接有一个斜率电阻,电阻大小可根据总线通信速度适当高调整,一般在16~140kΩ之间。
三、智能节点软件设计
CAN总线节点的软件设计主要包括三大部分;CAN节点初始化、报文发送和报文接收。熟悉这三部分程序的设计,就能编写出利用CAN总线进行通信的一般应用程序。当然要将CAN总线应用于通信任务比较复杂的系统中,还需详细了解有关CAN总线错误处理、总线脱离处理、接收滤波处理、波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容。下面仅就前面提出的三部分程序的设计作一个描述,以供大家在实际应用中参考。
1.初始化子程序
SJA1000的初始化只有在复位模式下才可以进行。初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等。在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务。下面提供了SJA1000初始化的51汇编源程序。程序中寄存器符号表示的是SJA1000相应寄存器占用的片外存储器地址,这些符号可在程序的头部用伪指令EQU进行定义。后文对这一点不再作特别说明。
MOV DPTR,#MODE ;方式寄存器
MOV A,#09H ;进放复位模式,对
;SJA1000进行初始化
MOVX @DPTR,A
MOV DPTR,#CDR ;时钟分频寄存器
MOV A,#88H ;选择PeliCAN模式,
;关准备时钟输出(CLKOUT)
MOVX @DPTR,A
MOV DPTR,#IER ;中断允许寄存器
MOV A,#0DH ;开发发送中断、超
;载中断和错误警告中断
MOVX @DPTR,A
MOV DPTR,#AMR ;接收屏蔽寄存器
MOV R0,#DAM ;接收屏蔽寄存器内容
;在片内RAM中的首址
AMR:MOV A,@R0
MOVX @DPTR,A ;接收屏蔽寄存器赋初值
DJNZ R6,AMR
MOV DPTR,#ACR ;接收代码寄存器
MOV R0,#DACR ;收收代码寄存器内容
;在片内RAM中的首址
ACR:MOV A,@R0
MOVX @DPTR,A 接收代码寄存器赋初值
DJNZ R6,ACR
MOV DPTR,#BTR0 ;总线定时寄存器0
MOV A,#03H
MOVX @DPTR,A
MOV DPTR,#BTR1 ;总线定时寄存器1
MOV A,#0FFH ;16MHz情况下,
;设置波特率为80kbps
MOVX @DPTR,A
MOV DPTR,#OCR ;输出控制寄存器
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#RBSA ;接收缓存器起始
;地址寄存器
MOV A,#0 ;设置接收缓存器
;FIFO起始地址为0
MOVX @DPTR, A
MOV DPTR,#TXERR ;发送错误计数寄存器
MOV A,#0 ;清除发送错误计数寄存器
MOVX @DPTR,A
MOV DPTR,#ECC ;错误代码捕捉寄存器
MOVX A,@DPTR ;清除错误代码捕捉寄存器
MOV DPTR,#MODE ;方式寄存器
MOV A,#08H ;设置单滤波接收方式
;并返回工作状态
MOVX @DPTR,A
2.发送子程序
发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入SJA1000发送缓存区中,然后启动SJA1000发送即可。当然在往SJA1000发送缓存区送报文之前,必须先作一些判断(如下文程序所示)。发送程序分发送远程帧和数据帧两种。远程帧无数据场。下面以发送数据帧为例对发送子程序作一个说明。
TDATA:MOV DPTR,#SR ;状态寄存器
MOVX A,@DPTR ;从SJA1000读入
;状态寄存器值
JB ACC.4,TDATA ;判断是正在接收,
正在接收则等待
TS0:MOVX A,@DPTR
JNB ACC.3,TS0 ;判断上次发送是否完成,未完成则等待发送完成
TS1:MOVX A,@DPTR
JNB ACC.2,TS1 :判断发送缓冲区是否
;锁定,锁定则等待
TS2:MOV DPTR,#CANTXB ;SJA1000发送缓
MOV A,#88H ;发送数据长度为8个
;字节的扩展帧格式报文
MOVX @DPTR,A
MOV A,#ID0;4个字节的标识符(ID0~ID3),
;依据实际情况赋值
MOVX @DPTR,A
MOV A,#ID1
MOVX @DPTR,A
MOV A,#ID2
MOVX @DPTR,A
MOV A,#ID3
MOVX @DPTR,A
MOV R0,#TRDATA;CPU发送数据区首
;址,数据内容由用户定义
MTBF:MOV A,@R0
MOVX @DPTR,A
CJNE R0,#TRDATA+8,MTBF;向发送缓
;冲区写8个字节
MOV DPTR,#CMR ;命令寄存器地址
MOV A,#01H
MOVX @DPTR,A ;启动SJA1000发送
3.查询方式接收子程序
接收子程序负责节点报文的接收以及其它情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要时诸如总线脱离、错误报警、接收溢出等情况进行处理。SJA1000报文的接收主要有两种方式:中断接收方式和查询接收方式。如果对通信的实时性要求不是很强,建议采用查询接收方式。两种接收方式编程的思路基本相同。下面仅以查询方式接收报文为例对接收子程序作一个说明。
MOV DPTR,#SR ;状态寄存器地址
MOVX A,@DPTR
ANL A,#0C3H ;读取总线脱离、错误状
;态、接收溢出、有数据等位
RET ;无上述状态,结束
PROC:JNB ACC.7, PROCI
MOV DPTR,#IR :IR中断寄存器,
;出现总线脱离
MOVX A,@DPTR ;读中断寄存器,
;清除中断位
MOV DPTR,#MODE ;方式寄存器地址
MOV A,#08H ;
MOVX @DPTR,A ;将方式寄存器复位,
;清求位清0
LCALL ALARM. ;调用报警子程序
PROC1:MOV DPTR,#IR ;总线正常
MOVX A,@DPTR ;读取中断位
JNB ACC.3,OTHER
OVER: MOV DPTR,#CMR ;数据溢出中断置位
MOV A,#0CH
MOVX @DPTR,A;在命令寄存器中精除数
;据溢出和释放接收缓冲区
OTHER:JB ACC.0,RECE;IR.0=1,接收FIFO
;示满或接收中断使能
LJMP RECOUT ;IR.0=0,接收缓冲区
;无数据,退出接收
RECE:MOV DPTR,#CANRXB;接收缓冲区首地
;地(16),准备读取数据
MOVX A,@DPTR ;首字节是接收帧格式字
JNB ACC.6,RDATA ;RTR=1是远程
;请求帧,无数据
MOV DPTR,#CMR ;
MOV A,#04H ;CMR.2=1释放接收缓冲区
MOVX @DPTR,A ;只有接收了数据才能
;释放接收缓冲区
LCALL TDATA ;发送对方请求的数据
LJMP RECOUT ;退出接收
RDATA:MOV DPTR,#CANRXB; 读取并保存接收
;缓冲区的数据
MOV R1,#CPURBF ;CPU片内接收
;缓冲区首址
MOVX A,@DPTR ;读取CAN缓冲区
;的2个字节
MOV @R1,A ;保存
ANL A,#0FH ;截取低4位是;
数据长度(0~8)
ADD A,#4 ;加4个字节的标识符(ID)
RDATA:INC DPTR
MOVX A,@DPTR
DJNZ R6,RDATA0 循环读取与保存
MOV DPTR,#CMR
MOV A,#04H ;释放CAN接收缓冲区
MOVX @DPTR,A
RECOUT:MOV DPTR,#ALC ;释放仲裁丢失捕捉
;寄存器和错误捕捉寄存器
MOVX A,@DPTR
MOV DPTR,#ECC
MOVX A,@DPTR
上述介绍的是SJA1000工作在Peli CAN模式下的三种最基本的操作子程序。由于篇幅的关系,这里没有列出和解决SJA1000内部寄存器的地址和位定义。有关接收屏蔽寄存器(AMR)和接收编码寄存器(ACR)的使用在以往的文章中已有介绍。至于其它一些寄存器或位功能的使用,没有在上述例程中体现出来,需要视实际情况而定。
CAN总线和以太网间的互联设计
  本文提出一种CAN 和以太网互连系统的设计方案,实现CAN 总线网和以太网的数据互连。
CAN 总线与其它的现场总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。这些特点使得其能同时满足过程控制和制造业自动化的需求,因此被认为是最具有发展前途的现场总线之一。但是,由于其驱动能力的限制,约束了CAN 总线的最远直接传输距离和总线上可以挂接的最大节点数,给系统组网带来了一定的困难。而另一方面,由于以太网的低成本、开放性、应用软硬件的支持以及强大的组网能力,目前已经是应用最广泛的局域网络技术,越来越多的工程师们开始采用CAN 总线与以太网结合的技术。  1 系统结构
  用网关连接CAN 现场总线和以太网的网络架构图如图1 所示。
图1 系统网络结构示意图
  网关的嵌入不仅使管理深入到控制现场,同时给系统组网带来了很大的方便。
  1.1 网关嵌入的益处
  ① 增大了系统的最大CAN节点数
  在不接的条件下,一个CAN 子网内最多可以挂接110 个节点,而每个网关下可以连接一个子网,通过多个网关可以把多个子网联系在一起,从而增加了系统的节点数。
  ② 扩大了系统的组网范围
  CAN 的直接通信距离大概只有10km 左右,系统按照现场区域和节点数构建子网,子网与子网通过以太网连接,从而突破了区域和距离的限制。
  ③ 实现了具有不同传输速度的现场总线子网的相互通信网关提供一个友好的人机,用户可以根据需要设置IP 地址和CAN 控制器的波特率。
  1.2 网关嵌入的问题
  网关的应用给系统带来方便的同时,也付出了一定的代价,在设计中必须考虑这些问题,以提高系统的整体效率。这些问题表现在:
  ①实时性
  由于使用网关,对数据的处理必须经历先存储,再转换,最后再发送的过程,增加了一些存储转发延时。因此在设计中必须考虑系统的实时性,要求系统能在存储新接收到的数据后立即启动协议转换和数据转发任务,尽量减小系统延时。
  ② 安全性
  若网关出现故障,会对CAN 子网和以太网间的通信产生影响,甚至会瘫痪这个子网与整个系统的通信。因此在硬件设计中,要尽量避免干扰等问题的出现;软件设计必须能对一些可纠正错误及时作出反应,并把错误信息返回给用户。
  2 网关硬件设计
  网关硬件设计分为CAN 接口、以太网和人机接口等3 个部分。
  2.1 主控制器的选择
  主控制器采用 的ARM 控制器LPC2292。LPC2292 基于一个支持实时仿真和跟踪TM 的16/32 位ARM7TDMI-SCPU。CPU 内核工作电压为1.8V,引脚工作电压为3.3V。
  LPC2292 带有256 k 字节(kB)嵌入的高速 ,完全可以满足系统代码的容量要求,无需外扩存储器;独特的加速结构使32 位代码能够在最大时钟速率下运行,可实现TCP/IP 协议栈中的ARP、TCP、UDP、ICMP 等网络协议。&  LPC2292 内部集成两个CAN 控制器,方便系统采用冗余设计。CAN控制器主要特性有:单个总线上的数据传输速率高达1Mb/s;32 位寄存器和RAM 访问;兼容CAN2.0B,ISO11898-1规范;全局验收可以识别所有的11 位和29 位Rx 标识符;验收滤波器为选择的标准标识符提供了FullCAN-style 自动接收。
  CPU 外部静态存储器控制器为CPU 内部系统总线和外部存储器或外部I/O 器件提供了一个接口。利用这种外部总线可以方便与以太网网卡控制器进行连接。
  2.2& CAN 接口
  考虑系统的安全性,CAN 接口部分采用冗余设计。当正常通道发生故障时自动调用冗余通道进行传输;如果冗余通道也发生故障,则进入故障处理。其硬件接口示意图如图2 所示。LPC2292 两路通道分别通过高速总线TJA1050 与总线相连。总线驱动器采用带隔离的 单独供电,不仅实现了两路通道之间的电气隔离,也实现了网关与总线之间的电气隔离。
  2.3& 网络接口
  网卡控制器采用台湾RETACK 公司的10M 以太网控制芯片RTL8019 ,支持全双工工作模式,软件兼容8 位或16 位的NE2000 模式;内部集成DMA 控制器、ISA 总线控制器以及16kRAM 、网络PHY 收发器等。RTL8019 使用LPC2292 外部存储控制的BANK3 部分,它的数据地址范围为0xx8340001F 。RTL8019 的工作电压为+5V,而LPC2292 的引脚工作电压为3.3V ,所以还应在上串联470 Ω 的保护。网络采用传输。
图2 网络硬件结构示意图
  2.4& 人机接口
  除了上面的主要部分外,还有 显示和键盘部分,LED 用来显示工作状态,键盘根据具体实际情况修正总线波特率和网关的IP 地址。
  3 软件设计
  3.1& 引入RTOS
  网关设计对系统的实时性要求比较高,而采用传统的前后台设计方法又会显得过于复杂,实时性得不到保证。解决这个问题的最好方法就是采用实时操作系统RTOS 。目前世界上已有一大批成熟的嵌入式操作系统,其中μC/OS-II 操作系统是一种源代码公开的嵌入式操作系统,具有代码短小精悍、简单易学的特点,针对网关的设计,这是一个理想的选择。
  μC/OS-II 完全是占先式的实时内核,是基于优先级的,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占先的内核要好。它的绝大部分代码是用C 语言编写的,可移植性强。
图3 嵌入式计算机系统
 3.2& 系统构成
  嵌入式网关的功能主要是进行以太网数据报文和CAN 数据帧之间的协议转换,实现以太网和CAN 总线的互连;其次是根据应用环境,通过人机交互接口改变网关的IP 地址和CAN 总线的波特率。整个嵌入式系统的构成如图3 所示。在进行任务设计之前的前期工作有:
  ① 实时操作系统的移植。μC/OS-II 可以在绝大多数8 位、16 位、32 位、以至64 位、、数字信号处理器()上运行。μC/OS-II 在LPC2292 上的移植可参考文献[1]。
  ② TCP/IP 协议和CAN 协议的嵌入。由于μC/OS-II 操作系统只包含了实时内核、任务管理、时间管理、任务间的通信同步(信号量、邮箱、消息队列)和管理等功能,所以用户必须根据自己的需要添加一些功能模块。网关的设计将TCP/IP 和CAN 协议嵌入到操作系统中,并提供一些API 接口函数供用户调用。
  3.3 系统实现
  采用RTOS 使整个设计简单且易调试,各个任务相互独立,而且各个任务具有不同的优先级可以保证紧急任务及时响应,从而能有效地对任务进行调度。系统软件设计由操作系统和一系列用户应用程序构成。 主函数是程序首先执行的一个函数。该函数永远不返回,主要实现系统的硬件(包括中断、键盘、显示等)和操作系统(包括任务控制块、事件控制块)的初始化,而且在启动多任务调度之前,必须至少创建一个任务。在本系统中创建了一个启动任务,主要负责时钟的初始化和启动、中断的启动、CAN 控制器的初始化与启动、端口与IP 地址的初始化和RTL8019 的初始化与启动,并且对各个应用任务进行了划分。在交出CPU 的使用权之后自做一些空闲处理。
  3.3.1& 任务的划分
  要完成多任务系统的各种功能必须对任务进行划分。本程序根据各个任务的重要性和实时性,把整个模块分成7 个具有不同优先级的应用任务:系统监控、CAN 数据发送、键盘扫描、以太网数据发送、协议转换、LED显示、系统配置等。表1 所示为任务划分表。
表1& 任物划分表
除了7 个主要应用任务之外,还有两个中断服务子程序:一个时钟节拍中断,提供周期性;另一个接收中断,把接收到的数据写入缓冲区。
  3.1.2& 任务的具体实现任务划分后,各任务具有独立的堆栈空间,彼此争夺CPU 的使用权。一旦获得CPU 的使用权,就会独立运行而完成特定的功能。
  CAN 总线包括数据传输和总线管理两个部分。数据传输实现的功能有CAN 初始化、CAN 报文发送和CAN 报文接收。CAN 初始化及报文的接收在启动任务与中断服务程序中实现,CAN 报文发送和总线管理作为一个单独的任务独立运行。总线管理功能块实现的主要是总线检测,判断一路总线是否良好。如果不是,就进入另一路总线检测;如果冗余总线良好,就采用冗余总线通信。CAN 数据发送任务需要系统调度器通知是否有待发送数据进入发送队列,任务的实现如图4 所示。
图4 数据发送任务实现图
  以太网通信模块由以太网数据收发功能块和数据协议管理功能块构成。数据的收发功能块主要实现RTL8019 的初始化、数据报文的发送与接收。同理,RTL8019 的初始化在系统的启动任务中实现。数据的接收在RTL8019 的中断服务程序中实现。数据协议管理主要实现对接收数据报文的解析,以及给待发送数据添加协议报头。以太网数据发送与协议管理分别作为独立任务运行。
  以太网数据发送任务同样需要系统调度器通知发送队列中是否有待发送的数据。若没有数据发送,则将 该任务挂起,系统运行其他任务。以太网数据发送任务通过对RTL8019 的操作完成,根据RTL8019 的状态,将发送队列中数据通过DMA 传送到8019 的发送缓冲区启动发送,并根据发送结果,对发送队列指针进行调整。
  以太网协议管理即协议转换任务在用户数据与8019 驱动需要的数据报文之间进行协议转换。TCP/IP 协议为应用层、传输层、网络层和数据链路层等4 层模型,每层具有不同的功能,并对应相应的子协议,而且层与层之间在逻辑上是相互独立的。在编程时,可以直接调用嵌入的TCP/IP 协议的API 函数对数据报文进行分层。该任务对从8019 传过来的数据处理示意图如图5 所示。不同的子协议具有不同的功能号,任务根据功能号对协议进行区别。把用户数据传递给8019 驱动的示意图是图5 的逆序表示。
图5& 协议转换任务的数据处理的示意图
  3.3.3 任务间的同步与调度
  通常多任务操作系统的任务不同于一般的函数,它是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务是不会放弃对CPU 的使用权的。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。整个系统的功能结构如图6 所示。
图6 系统运行示意图
  各个任务具有不同的优先级,通过调用系统挂起函数或延时函数可以启动具有更高优先级的进入就绪态的任务。高优先级的任务,例如1、2、3、4 号任务,往往由于申请某个资源而发生阻塞,进入挂起态。系统调度器启动低优先级的任务,通过对延时参数的设置,每隔一定时钟节拍就启动键盘扫描或LED 显示任务。如果其中有任何一事件发生就启动相关的任务,这个过程通过信号量的通信机制来实现。对每一个事件分配一个信号量,一旦事件发生就启动信号量的等待任务列表中进入就绪态的任务,从而保证任务与事件的同步。
  4 结束语
  在嵌入式硬件平台的基础上,用μC/OS-II 实时操作系统开发应用程序有其独到之处,用户可以直接利用系统的接口函数编写自己的应用程序,毋需另行开发,大大方便了用户编程,缩短了软件的开发周期,提高了开发效率;基于ARM LPC2292 CAN 总线和以太网间的网关,在实验调试过程中运行状况良好,工作稳定。
CAN通讯的电磁兼容性能分析
由于CAN总线芯片可靠性高、协议精练、价格低、货源广泛,因而在工业测控领域也获得广泛应用。但是,工业现场环境恶劣,电磁干扰较为严重,如何保证CAN总线通讯的可靠性尤为重要。 CAN总线最初是一种为汽车车载设备(、执行器)控制而设计的串行数字通信总线,由德国公司和美国公司在20世纪80年代末期开发成功,并于年成为国际标准ISO11898。其目的是用多点、串行数字通讯技术取代常规的直接导线信号连接,可以节省大量车载设备的布线。
本文为大家概述CAN总线通讯的电磁兼容性能分析与设计 。
1 CANsmc系统概述
  北京航空航天大学和北京和利时电机技术有限公司联合定义了一种基于CAN总线的数字伺服通讯协议——CANsmc(CAN for synchronous motion control)。CANsmc采用主从式的双通道网络,由一个主站和最多61个从站组成,如图1所示。系统的通讯由主站管理和协调,通道0为指令通道,主站通过它向各个从站发送控制指令数据。通道1为状态通道,各个从站通过它向主站发送运行状态数据。
  图1也表示了CANsmc实验系统的组成,包括主站控制卡、从站控制卡和两种设备控制卡。主站控制卡基于ISA总线,插入PC机控制单元。从站控制卡是嵌入式的CAN总线通讯卡,设备控制卡包括位置控制卡和I/O控制卡,可以控制伺服驱动器和I/O设备。
2 电磁兼容分析
  在产品的设计中,电磁兼容EMC(Electro Magnetic Compatibility)性能对系统的影响非常大,关系到其能否正常稳定运行。国际上已经开始对电子产品的电磁兼容性做强制性限制,电磁兼容性能已经成为产品性能的一个重要指标。
  电磁兼容主要包括两方面的内容,一个是产品本身对外界产生不良的电磁干扰EMI(Electro Magnetic Interference)影响,称为电磁干扰发射;另一个是对外界电磁信号的敏感程度,称为电磁敏感度EMS(Electro Magnetic Sensitivity)。干扰源、耦合途径及敏感设备是电磁兼容的三要素,缺一不可。电磁兼容的详细内容如图2所示。
  如图2所示,电磁干扰信号的耦合途径有传导和辐射两种。而根据耦合结果的不同,干扰又分为共模干扰和差模干扰。共模干扰存在于所有的信号线(包括信号线、数据线和等)和地线之间,而差模干扰存在于信号线之间。
  提高电磁兼容性的措施有三种:提高电子设备本身的EMC性能、对辐射性耦合使用屏蔽技术加以抑制、对传导耦合采取滤波技术加以抑制。
3 PCB板EMC设计
  CANsmc系统主站和从站板的设计对系统的EMC至关重要,而一个电路板的电磁辐射能力和接收能力往往是一致的,因此在提高电路板抗干扰能力的同时,也抑制了电路板的电磁辐射[1]。PCB板的EMC设计主要考虑以下因素:
  (1) 选择和布局
  选择EMC性能好的元器件,并尽量选择表面贴装的封装形式。器件合理布局,把相互有关的器件尽量放得靠近些,使各部件之间的引线尽量短。特别是和CAN控制器的时钟源晶体,一定要按规定放置,否则会不起振。
  在位置控制卡中使用了模拟电路,应把模拟电路和高速数字电路合理地分开,使相互间的信号耦合为最小。
  (2) 合理布局地线,降低地线阻抗
  地线电平是所有信号的参考电位。理想状态下,电路板上所有的地线应该等电位,但是由于地线阻抗的存在导致地线各点电位有差异,所以应该尽量减小地线阻抗。最有效的办法是做多层板,在中间专门设置一层地线面。但是多层板成本较高,本系统中使用了双层板,在双层板的布线面布置了尽量多的平行地线,一面是水平线,一面是垂直线,然后在它们交叉的地方用过孔连接起来,形成地线网格,可以获得几乎和多层板相同的效果。
  (3) 稳定电源
  CANsmc系统中主站使用ISA插槽供电,从站使用电源供电,在电源线的入口处都放置了电容低通,以过滤电源中的高频毛刺。
  电路中逻辑门输出状态切换时的瞬时效应、电源线阻抗的存在等不理想状态会使电源线产生噪声,这些噪声不仅会造成电路工作不正常,而且会产生较强的电磁辐射。除了设置电源线网格来减小电源线的电感和阻抗外,还可以使用储能电容。储能电容为芯片提供了电路输出发生变化时所需的大电流,避免了电源线上的电流突变,减小了感应出的噪声电压。储能电容布置在各个芯片附近,使它对芯片的供电回路面积尽量小,容量为470~1000pF[1]。对于系统中用到的微控制器和位置控制器等QTP封装的大型芯片,在其四周每组电源和地引脚附近都放置了储能电容。
  每片芯片的储能电容放电完毕后,需要及时充电,做好下次放电的准备。此时,为了减小对电源系统的扰动,在电源线入口处安装了一个二级储能电容,其容量为芯片储能电容总量的10倍以上[1]。
  (4) 降低信号线间串扰
  电路板信号线间的串扰也是电路工作不稳定的一个重要因素,尤其是高频信号线。减小串扰,不仅要降低线路的电感,还要关注信号回流线,使回路面积最小。
  在布线时,尽量控制走线的长度,加大线路的宽度和线间距离,以减小线路的电感。使用地线网格也可以使信号线回流面积减小,也减小了信号之间的互相耦合。重要信号线和地线之间安装滤波电容,以提高信号质量。高频时钟信号线用地线隔离,以避免和其它信号线耦合。
4 电磁辐射和电磁屏蔽
  电磁屏蔽是解决电磁兼容问题的重要手段之一,而且不影响电路的正常工作,因此不需要修改电路。屏蔽体的有效性用屏蔽效能来度量,包括反射损耗和吸收损耗两部分。保持屏蔽体的导电连续性是电磁屏蔽效能的关键。
  CANsmc系统中,CAN总线电缆具有很强的干扰辐射和干扰接收能力。电场在电缆中感应出共模电压,而磁场在电缆中既可以感应出共模电压,也可以感应出差模电压。通过屏蔽可以将电磁场的感应干扰降低到最小,而使用双绞线则进一步抑制了磁场感应的差模电压。双绞线的两根线之间具有很小的回路面积,而且双绞线的每两个相邻回路上感应出的电流具有相反的方向,相互抵消。双绞线的绞节越密,则效果越明显,如图3所示。为了减小CANsmc中两路CAN总线之间的串扰,应该将两组双绞线分别屏蔽,电缆中不使用的导线接到信号地。
  根据电磁屏蔽的原理可知,接地与屏蔽效能关系并不大,但是为了降低静电放电干扰,整个屏蔽体需要和大地相连。因此屏蔽层应使用护套与主从站屏蔽机箱连接在一起,避免使用屏蔽层捻成小辫的形式。
5 传导干扰和信号滤波与隔离
  CANsmc系统正常工作时,产生较大传导性干扰的环节有:、伺服驱动器、I/O控制设备等。而危害更大的干扰则是瞬态干扰,它的特点是时间短、幅值大、功率小。瞬态干扰的形式有:电机状态改变时产生的电快速脉冲群干扰、雷电或大功率开关在电缆上产生的浪涌、静电放电感应等。传导干扰以共模形式居多,也有部分为差模干扰。
  CAN总线电缆是传导干扰传播的一个重要途径,在系统中为保证CAN总线通讯的可靠性而使用的EMC措施有:LC滤波器、瞬态抑制TVS(Transient Voltage Suppressor)、光电隔离等。具体电路如图4所示。
  (1) LC滤波器
  在电路板的电缆入口处安装LC滤波器可以滤除CAN总线电缆中传导的各种高频干扰信号。LC滤波器的电容并联在CAN通讯信号线和信号地线之间,滤除高频差模干扰的电容,也称为旁路电容。电感串联在信号线上,扼制共模干扰电流。使用共模扼流圈则可以避免电感在流过较大电流时发生饱和,导致电感量下降。所有的信号线都要安装滤波器,否则整体性能会大大下降。
  LC滤波器中电感量和电容量的选择对滤波器的效果影响很大,如果电容量和电感量选择过小,则效果不明显,如果选择过大,会使工频信号衰减,引起信号失真。在应用中,CAN总线最高波特率为1Mbps,所以的电容值选用1000pF,电感选用10μH的铁氧体。
  (2) TVS
  瞬态抑制二极管并联在信号线和信号地线之间,用来保护电缆受到雷击或静电放电时产生的浪涌高压。当TVS上的电压超过一定的幅度时,器件迅速导通,从而将浪涌能量泄放掉,并将电压的幅度限制在一定的范围内。图4中,每个信号线都使用了两个TVS管BZX84C33进行双向保护,它的额定工作电压为33V。
  (3) 光电隔离
  光电隔离是解决传导干扰问题的理想方法,它具有良好的电绝缘能力和抗干扰能力。选择合器件时需要考虑两个参数:传输延时(Propagation Delay)和共模抑制CMR(Common Mode Rejection),在传输延时满足数据通讯波特率的情况下尽量选择共模抑制能力高的型号。衡量光电共模抑制能力的方法为:输出保持高(低)时可承受的最大共模电压上升(下降)率CMH(CML)。
  表1给出了安捷伦公司的三种光耦芯片的传输延时和CMR参数,三种器件的传输延时都小于100μs,可以满足CAN总线通讯最高1M波特率的要求。本系统中选用了实际最常用的6N137。
  使用光电隔离后,也必须使用电源隔离,系统选用了NME0505TM隔离器。
6 电快速脉冲群实验
  最后,通过试验测试了系统的抗瞬态干扰能力,试验过程符合GB/T 8:电快速瞬变脉冲群抗扰度试验,本标准相当于国际标准IEC:1995。试验由和利时公司完成。
  试验方法是用快速瞬变脉冲群发生器产生干扰脉冲群,通过电容耦合夹将脉冲群干扰耦合到CAN总线通讯电缆,然后观察主从站的工作情况,并接入基于PC机的监听站,将监测到的报文数据写入文本文件,然后分析数据的正确性。
  试验中使用NS61000-4K脉冲群发生器,输出电压为0~4000V±10%,脉冲频率为2.5kHz、5kHz、100kHz±10%,脉冲串长度为15ms±20%。
  试验条件是用10米的总线长度接入五个从站,持续180秒加不同幅值的2.5kHz脉冲串干扰。试验结果如表2所示。
参考文献1 杨继深. 实践电磁兼容技术. 北京天亦通电子技术公司,20012 GB/T 8.电快速瞬变脉冲群抗扰度试验验[S].北京:中国标准出版社,20003 谢 辉,周能辉. 基于32位MC68376的电动汽车主控制器的开发. 汽车技术,2004;(3):25~274 周 超,李春茂. 开关电源电子兼容(EMC)研究[J].技术,):16~195 俞文英.电磁干扰来源及电磁兼容设计的探讨[J]. 皖西学院学报,):24~26
CAN总线及其在艾默生CT PLC上的应用
CAN(Ctrol Area Network)最初是一种为汽车车载设备(、)控制而设计的串行数字通信总线,由德国公司和美国公司在20世纪80年代末期开发成功,并于年成为国际标准ISO11898。
数字信息技术的飞速发展对全世界的制造业日益起着巨大的推动作用,使得制造业的各种设备的设计越来越电子化,数字化,网络化,ECCT产品是艾默生CT推出的一款专门应用于纺织行业的具有CAN总线协议的专用控制器,它不仅满足了纺织的基本I/O工艺需求,更是把CAN总线协议完美地融合进去,使用户很轻易地把系统的各种设备通过CAN协议进行连接,本文介绍了CAN总线功能在艾默生CT&PLC上的应用。
CAN总线基础知识简介
&&& CAN总线(CONTROLLER&AREA&NETWORK,控制器局部网络)由德国公司首先提出来的,CAN总线是目前工业界广泛应用的总线。其特点简要归纳如下:
&&& 1)CAN控制器工作于多主站方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。
&&& 2)CAN协议废除了传统的站地址编码,而代之以对通信数据进行编码,其优点是可使网络内的节点个数在理论上不受限制,加入或减少设备都不影响系统的工作。同时可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。
&&& 3)CAN总线通过CAN控制器的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这样就保证不会出现类似在RS-485网络中系统有错误时会导致出现多节点同时向总线发送数据而导致总线呈现短路从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。
&&& 4)CAN具有的完善的通信协议可由CAN及其来实现,从而大大降低了用户系统开发的难度,缩短了开发周期,这些是仅仅有电气协议的RS-485所无法比拟的。
&&& 5)与其它现场总线比较而言,CAN总线通信最高速率可达1MBPS,传输速率为5KBPS时,采用,传输距离可达10KM,并且数据传输可靠性高;CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前&CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。
&&& CAN总线与RS485方式的区别:
&&& CAN总线系统结构:CAN总线每个节点需要带有CAN协议及适当的接口,节点之间通过双绞进行总线式连接,首尾节点需要接120R的匹配,通信最高速率可达1MBPS,传输速率越低,传输距离越远。系统结构如下:
&&& CAN协议的报文格式:CAN协议支持两种报文格式CAN2.0A和CAN2.0B;&CAN2.0A为标准格式,CAN2.0B为扩展格式;格式分别如下:
  CAN2.0A协议报文结构图如下
  CAN2.0B协议报文结构图如下
&&& 标准格式和扩展格式唯一的不同是标识符(ID)长度不同,标准格式为11位(ID10-ID0),扩展格式为29位(ID10-ID0,EID17-EID0)。
&&& 在标准格式和扩展格式中,报文的起始位称为帧起始(SOF),帧起始标志数据帧或远程帧的起始,由一个单独的“显性”位(0)组成。由控制芯片自动完成,不需要用户在程序中体现。
&&& 然后是由11位标识符(ID10-ID0)(扩展格式为29位(ID10-ID0,EID17-EID0))和远程发送请求位&(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
&&& 控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位&(RBO),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(大小就是由DLC3-DLC0组成的2进制数据)。数据场范围为0~8个字节(DATA&FIELD),其后有一个检测数据错误的循环冗余检查(CRC)。
&&& 应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文.
&&& 报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
艾默生CT&PLC集成CAN总线功能介绍
&&& ECCT的CAN通信功能支持CAN2.0A协议和CAN2.0B协议,通信波特率设置范围为5-100KBPS,可以通过艾默生CT&PLC编程软件CONTROLAR&FOR&ECCT进行设置。具体使用步骤如下:
&& 1)基本设置:在工程管理器里双击“系统块”,在弹出的窗口选择“CAN口设置”,在“CAN口参数设置”里选择“自由协议”,然后单击后面的“自由口设置”按扭。在弹出的窗口选择协议类型“2.0A”或“2.0B”,然后再下拉选择“波特率”最后单击“确定”,把系统块下载到PLC里。
&&& 2)数据发送:使用指令CANXMT,并以CAN2。0A协议为例描绘了它们之间的对应关系。
&&& 3)数据接收:使用CANRCV指令(参数含义如下)或使用CAN接收中断功能。我推荐对初使用者采用中断更方便,具体用法参考下面的例子程序。
&&& 笔者根据ECCT集成的CAN总线功能,在纺织机械上的得到了成功的应用,现介绍如下:其CAN系统总体结构图如下:
&&& 此系统的具体工艺不做介绍,这里只介绍CAN通信部分的应用。
&&& 程序使用说明如下:
1.首先根据要求在“系统块”里对CAN通信口进行设置。
2.数据发送部分:对ID为5的地址发送4个字数据“16#4,16#4”需要编写的程序为如下:
&&& 其中要注意的是:1)CANXMT为上升沿执行指令,M1000为指令执行条件,当其出现OFF—&ON的变化时,执行CANXMT指令;2)使用CANXMT指令前先把该赋值的地址写好;3)&发送数据只取D元件的低8位;&4)网络上没有CANID、数据完全相同的CAN帧同时出现;5)ID保留0。6)CAN程序的校验部分全部由硬件自动完成,用户程序不需要参与。
3.数据接收部分:此部分以使用中断方式接收数据为例,分2部分步骤:
&&& 1)先在主程序中设置CAN中断使能.
&&& 2)设置中断程序属性,把其中断事件选为48(即CAN接收中断),然后编写程序把接收到的数据传递到需要的地址.注意ID地址为双字结构,SD282-290依次为数据的高低字节,把他们传递到相应的数据寄存器然后合并就可以得到完整的数据了。
&&& 由于CAN协议格式比较简单,并且相当部分工作由CAN控制芯片硬件完成,所以编写程序比较简单,实现起来很容易,此纺织系统采用CAN通信方式后,速度大大提高并且系统更加稳定,受到用户的肯定。
PCI总线的CAN卡的设计
&CAN卡的设计包括硬件设计和软件设计。
  PCI是公司推出的一种先进的高性能32/64位局部总线,可同时支持多组外围设备,不受制于处理器,数据吞吐量大 (33MHz总线频率、32位传输时峰值可高达132MB/s)。目前PCI是处于主流的计算机总线。以往的CAN卡一般都是基于ISA总线的,由于 ISA总线传输速率低,CAN卡必须增加中继控制功能,才能够适应CAN的高速传输,导致造价高、体积大、传输速率低,不利于CAN总线的推广应用。由于 PCI总线传输速度快,而且支持热插拔、管理等功能,不但能满足CAN总线的高速数据传输,性能高、功能强,而且体积小、价格低、使用方便、应用范围广。
现场总线CAN(Controller Area Network控制器局域网络)以其高性能、高可靠性及独特的设计,越来越受到人们的重视和青睐,不但在汽车行业中应用广泛,而且在工业控制、机器人、医疗器械、等领域发展迅速。为了扩展CAN总线的功能,与计算机相连,可设计具有CAN和PC接口的CAN适配卡,用来收集CAN总线上各个节点的信息,转发给PC机,并可将PC机的命令和数据转发给各个节点以及完成对CAN总线上的用户系统的部分监控和管理工作。
  1 硬件设计
  PCI总线是一种独立于的局部总线,不同于传统的ISA总线。由于PCI总线规范定义了严格的电气特性和时序要求,开发难度比ISA总线的开发难度大。实现PCI接口的方案一般有两种:采用和专用总线接口器件。采用可编程逻辑器件实现PCI接口的最大好处是比较灵活,可把PCI时序模块和功能模块结合在一起,可以利用的器件也比较多(如Altera公司的CPLD器件、Xilinx公司的器件等),还可以购买由厂家提供的用 VHDL、AHDL等硬件描述语言编制的PCI核心设计模块,但其设计难度还是很高,因为PCI总线对负载要求、传输数据的建立时间的要求都比较苛刻,同时还需要器件内部实现用于配置的各类寄存器,以及完成逻辑校验、地址译码等工作的寄存器(大致需要个门)。此外,还需加入FIFO、用户寄存器组和后端设备接口等部分。设计这种PCI总线接口会导致将大量的人力、物力投入到复杂的逻辑验证和时序分析的工作上,开发周期较长。采用专用接口器件虽然没有采用可编程逻辑器件那么灵活,但能够有效地降低接口设计的难度,缩短开发时间。专用接口器件具有较低的成本和很高的通用性,能够优化数据传输,提供配置空间,具备用于突发传输功能的片内FIFO,提供扩展局部总线等优点,并且许多公司还提供配套的(例如评估板或驱动程序开发软件),使用很方便,开发周期短。目前市场上常见的有PLX、AMCC、Cypress等公司的PCI桥芯片,各个型号的PCI接口芯片的大致特点如表1所示。
  PCI设备可分为主模式和从模式。主模式桥芯片可以进行DMA操作,而从模式只能接受读写操作。根据PCI提供的传输数据带宽(最大132MB/s)和 CAN总线(最大1Mbps)的要求,加上经济和开发难度与周期上的考虑(主模式桥芯片较昂贵,开发难度较大),又因不需要DMA功能,采用从模式桥芯片足以满足传输数据的需要。此外,选择芯片不仅考虑性能和经济上的要求,而且还需要考虑硬件开发和驱动程序开发的难易。如果不提供足够的芯片说明和应用样例及开发,将大大增加开发难度和延长开发周期。因此,采用PLX公司的PCI总线目标接口芯片PCI9052作为CAN卡中的PCI接口芯片,负责与计算机之间的数据通信。
  PCI9052是PLX公司开发的低价格PCI总线从模式接口芯片,低功耗,符合PCI2.1规范,提供的局部总线(Local Bus)可通过编程设置为8/16/32位的(非)复用总线。其主要特点有:
  (1)直接数据转换模式 PCI9052支持PCI到Local Bus的映射和I/O映射的突发读写。
  (2)ISA接口逻辑 PCI9052支持通过8/16位内存映射或I/O映射从PCI到ISA总线的单周期读、写访问。方便从ISA卡向PCI卡的转换。
  (3)中断产生器 由Local Bus的两个中断信号可以产生一个PCI中断信号:INTA#。
  (4)局部总线 PCI9052提供的局部总线不但可编程,而且与PCI总线的时钟相互独立运行,可实现异步操作,总线操作自动实现时序同步。两总线的异步运行方便了高、低速设备的兼容。局部的运行时钟频率范围0~40MHz、TTL电平,可由PCI提供或由用户自行提供;PCI的运行时钟频率范围0~33MHz。
  (5)串行 用于存放PCI BUS和Local Bus的部分配置信息。
&  (6)4个局部设备片选 基址和地址范围可以由串行EEPROM或主控设备进行设置。
  (7)5个局部地址空间 基址和地址范围及其映射可以由串行EEPROM或主控设备进行设置。
  (8)Big/Little Endian模式的字节交换 适合不同计算机体系。
  (9)局部总线等待状态 除了等待信号LRDYi#用于握手之外,PCI9052还有一个内部等待产生器(包括地址到数据周期、数据到数据周期和数据到地址周期的等待)。
  (10)延迟读模式 PCI9052支持PCI2.1规范的延迟读模式。
  (11)FIFO PCI9052包括一个64Byte的写FIFO和一个32Byte的读FIFO,从而支持预取模式、即突发操作。
  (12)PCI锁定机制 主控设备可以通过锁定信号占有对PCI9052的唯一访问权。
  由于CAN总线的迅猛发展,许多芯片厂商开发了很多系列的CAN通信。如表2所示。
  由于PCI9052可以启动局部总线的读写,CAN卡不再需要,采用CAN通信控制器即可,本CAN卡采用SJA1000。SJA1000支持 BasicCAN和PeliCAN模式,具有FIFO、支持热插拔等功能,不但可以实现CAN总线接口功能,而且芯片可以根据的频率,输出可编程的 CLKOUT信号,该信号正好可作为PCI9052的局部总线的总线频率,节省了器件,方便了设计。CAN总线的总线频率可为12MHz、16MHz或 24MHz,PCI9052自动实现局部总线与PCI总线的访问同步。CAN总线采用82C250。该芯片是CAN总线控制器和物理总线的接口,可以提供对CAN总线的差动发送和接受能力,具有抗瞬间干扰、保护总线的能力,可以通过调整CAN总线上通讯脉冲的边沿斜率来降低射频干扰。
  由于PCI设备在计算机中的硬件资源是系统动态分配的,因此在设计出基本的硬件框架后,要进行PCI配置设计。CAN卡的硬件资源为映射SJA1000内部寄存器的内存映射空间和一个中断源。PCI9052提供5个局部地址空间,可以选用其中的一个作为SJA1000的地址空间,分配32个8位地址。同时设置相应的初始化,PCI配置寄存器中的寄存器PCIBAR2设置为0XFFFFFFE0,向系统请求分配内存的数量为32,类型为不可预读,其它寄存器的值可设置为0。设置局部地址空间的范围为0XX。PCI9052提供2个局部中断源,利用LINTi1即可,注意的是:LINTi1没有驱动能力,SJA1000的INT引脚也没有驱动能力,因此该信号线必须加上拉,否则该信号线的电平不确定,工作肯定不正常。SJA1000提供电平触发中断信号,因此PCI9052的中断触发模式设置为电平触发。利用PCI9052的局部设备片选CS0#作为 SJA1000的片选信号。CS0#片选信号的起始地址和地址范围由CS0 Base Address寄存器设置,值为0X。另外,PCI9052的LRDYi#信号为局部总线数据准备信号,SJA1000的寄存器地址映射成地址,数据传输不存在延迟等待,因此LRDYi#引脚可接地,表示SJA1000的寄存器总是立即可读写。PCI9052寄存器的初始值由串行 EEPROM提供,在PCI9052加电后读取。EEPROM必须采用支持连读功能的芯片,本设计采用Microchip的93LC46B。用PLX公司提供的开发工具PlxMon可对93LC46B进行读写。
  PCI9052的硬件调试可采用PlxMon。利用它可以对PCI设备的配置资源进行检验。利用PLX提供的SDK,}

我要回帖

更多关于 usb can tool 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信