您的位置:控制工程论坛网论坛 » 现场总线 » CAN总线知识汇总贴

chenwh78

chenwh78   |   当前状态:在线

总积分:6174  2024年可用积分:0

注册时间: 2008-10-10

最后登录时间: 2019-06-16

空间 发短消息加为好友

CAN总线知识汇总贴

chenwh78  发表于 2010/7/17 9:05:48      11469 查看 25 回复  [上一主题]  [下一主题]

手机阅读

       我想把论坛内几种总线知识的相关贴汇总到各个主题贴中!以便大家分类学习!同时欢迎大家跟帖!
1楼 0 0 回复
  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 9:29:19

    CAN基本知识 
    什么是CAN ?
    CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
    一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
    CAN 是怎样发展起来的?
    CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN 已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
    CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。
    由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。
    CAN 是怎样工作的?
    CAN通讯协议主要描述设备之间的信息传递方式。CAN层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层:数据链路层和物理层。下表中展示了OSI开放式互连模型的各层。应用层协议可以由CAN用户定义成适合特别工业领域的任何方案。已在工业控制和制造业领域得到广泛应用的标准是DeviceNet,这是为PLC和智能传感器设计的。在汽车工业,许多制造商都应用他们自己的标准。
    表1 OSI开放系统互连模型
    7 应用层 最高层。用户、软件、网络终端等之间用来进行信息交换。如:DeviceNet
    6 表示层 将两个应用不同数据格式的系统信息转化为能共同理解的格式
    5 会话层 依靠低层的通信功能来进行数据的有效传递。
    4 传输层 两通讯节点之间数据传输控制。操作如:数据重发,数据错误修复
    3 网络层 规定了网络连接的建立、维持和拆除的协议。如:路由和寻址
    2 数据链路层 规定了在介质上传输的数据位的排列和组织。如:数据校验和帧结构
    1 物理层 规定通讯介质的物理特性。如:电气特性和信号交换的解释

    CAN能够使用多种物理介质,例如双绞线、光纤等。最常用的就是双绞线。信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,静态时均是2.5V左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑“0”,称为“显形”,此时,通常电压值为:CAN_H = 3.5V 和CAN_L = 1.5V 。

    CAN 有哪些特性?
    CAN具有十分优越的特点,使人们乐于选择。这些特性包括:
    低成本
    极高的总线利用率
    很远的数据传输距离(长达10Km)
    高速的数据传输速率(高达1Mbit/s)
    可根据报文的ID决定接收或屏蔽该报文
    可靠的错误处理和检错机制
    发送的信息遭到破坏后,可自动重发
    节点在错误严重的情况下具有自动退出总线的功能
    报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息
    Philips制造的CAN芯片有哪些?
    表2 CAN芯片一览表
    类别 型号 备注
    CAN微控制器 P87C591 替代P87C592
    XA C37 16位MCU
    CAN独立控制器 SJA1000 替代82C200
    CAN收发器 PCA82C250 高速CAN收发器
    PCA82C251 高速CAN收发器
    PCA82C252 容错CAN收发器
    TJA1040 高速CAN收发器
    TJA1041 高速CAN收发器
    TJA1050 高速CAN收发器
    TJA1053 容错CAN收发器
    TJA1054 容错CAN收发器
    LIN收发器 TJA1020 LIN收发器

    什么是CSMA/CD ?
    CSMA/CD是“载波侦听多路访问/冲突检测”(Carrier Sense Multiple Access with Collision Detect)的缩写。
    利用CSMA访问总线,可对总线上信号进行检测,只有当总线处于空闲状态时,才允许发送。利用这种方法,可以允许多个节点挂接到同一网络上。当检测到一个冲突位时,所有节点重新回到‘监听’总线状态,直到该冲突时间过后,才开始发送。在总线超载的情况下,这种技术可能会造成发送信号经过许多延迟。为了避免发送时延,可利用CSMA/CD方式访问总线。当总线上有两个节点同时进行发送时,必须通过“无损的逐位仲裁”方法来使有最高优先权的的报文优先发送。在CAN总线上发送的每一条报文都具有唯一的一个11位或29位数字的ID。CAN总线状态取决于二进制数‘0’而不是‘1’,所以ID号越小,则该报文拥有越高的优先权。因此一个为全‘0’标志符的报文具有总线上的最高级优先权。可用另外的方法来解释:在消息冲突的位置,第一个节点发送0而另外的节点发送1,那么发送0的节点将取得总线的控制权,并且能够成功的发送出它的信息。

    CAN的高层协议
    CAN的高层协议(也可理解为应用层协议)是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。高层协议是在CAN规范的基础上发展起来的应用层。许多系统(像汽车工业)中,可以特别制定一个合适的应用层,但对于许多的行业来说,这种方法是不经济的。一些组织已经研究并开放了应用层标准,以使系统的综合应用变得十分容易。
    一些可使用的CAN高层协议有:
    制定组织主要高层协议
    CiA CAL协议
    CiA CANOpen协议
    ODVA DeviceNet 协议
    Honeywell SDS 协议
    Kvaser CANKingdom协议
    什么是标准格式CAN和扩展格式CAN?
    标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。CAN 协议的2.0A版本规定CAN控制器必须有一个11位的标志符。同时,在2.0B版本中规定,CAN控制器的标志符长度可以是11位或29位。遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报文或29位标识符的扩展格式报文。如果禁止CAN2.0B,则CAN 控制器只能发送和接收11位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。
    目前,Philips公司主要推广的CAN独立控制器均支持CAN2.0B协议,即支持29位标识符的扩展格式报文结构。
    2楼 回复本楼

    引用 chenwh78 2008/10/20 9:29:19 发表于2楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 12:22:11

    摘要: 本文介绍了CAN总线的发展历史,并对其优点及主要技术指标进行了详述,最后就其具体应用给出了实例。


    关键词: CAN总线;通信;协议;

    Extensive Introduction of CAN Bus

    Shao –min

    (Department of mechanical electrical Engineering, Tongji University, Shanghai 200092,China)


    Abstract: In the article , the developing history of CAN bus is introduced. And the article is mainly focused on the advantage and main technique index of CAN bus. At the end of article, a practical application of CAN bus is described.

    Keywords: CAN bus; communication; protocol


    1. CAN总线的产生与发展

    控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普及推广。

     随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。

    分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将 5C技术--COMPUTER(计算机技术)、CONTROL(自动控制技术)、COMMUNICATION(通信技术)、CRT(显示技术)和 CHANGE(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。

    典型的分散式控制系统由现场设备、接口与计算设备以及通信设备组成。现场总线(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线领域中最为活跃的一个领域。现场总线的研究与应用已成为工业数据总线领域的热点。尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格比将吸引众多工业控制系统采用。同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。控制器局部网 CAN(CONTROLLER AERANETWORK)正是在这种背景下应运而生的。

    由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。为此,1991年 9月 PHILIPS SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,而2.0B给出了标准的和扩展的两种报文格式。此后,1993年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。


    2. CAN总线特点

    CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

    CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

    另外,CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任意插在PC AT XT兼容机上,方便地构成分布式监控系统。


    3. CAN总线技术介绍

    3.1位仲裁

    要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。

    CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图2所示,当几个站同时发送报文时,站1的报文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。

    CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。

    对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取 (许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法

    3.2 CAN与其它通信方案的比较

    在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中 ,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站 ,总线系统按站希望的传送分配(如:Ethernet CSMA/CD)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。

    CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。

    3.3 CAN的报文格式

    在总线中传送的报文,每帧由7部分组成,见图3。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。

    在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。

    控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。


    应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。

    报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

    3.4 数据错误检测

    不同于其它总线,CAN协议不能使用应答信息。事实上,它可以将发生的任何错误用信号发出。CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。

    3.4.1 循环冗余检查(CRC)

    在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC可判断报文是否有错。

    3.4.2 帧检查

    这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。

    3.4.3.应答错误


    如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误。

    3.4.4 总线检测

    有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。

    3.4.5 位填充

    一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生。在五个生。在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。

    如果至少有一个站通过以上方法探测到 一个或多个错误,它将发送出错标志终止当前的发送。这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。当大量发送数据被终止后,发送站会自动地重新发送数据。作为规则,在探测到错误后23个位周期内重新开始发送。在特殊场合,系统的恢复时间为31个位周期。

    但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。因此,如果不采取自监测措施,总线系统应采用模块化设计。为此,CAN协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。

    3.4.6 CAN可靠性

    为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。

    残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。它描述了传送数据被破坏和这种破坏不能被探测出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类 ,并且数据传输路径可由一模型描述。如果要确定CAN的残余错误概率,我们可将残留错误的概率作为具有80~90位的报文传送时位错误概率的函数,并假定这个系统中有5~10个站,并且错误率为1/1000,那么最大位错误概率为10—13数量级。例如,CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10—2量级。换句话说,一个系统按每年365天,每天工作8小时,每秒错误率为0. 7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。


    4.应用举例

    某医院现有5台16T/H德国菲斯曼燃气锅炉,向洗衣房、制剂室、供应室、生活用水、暖气等设施提供5kg/cm2的蒸汽,全年耗用天然气1200万m3,耗用20万吨自来水。医院采用接力式方式供热,对热网进行地域性管理,分四大供热区。其中冬季暖气的用气量很大,据此设计了基于CAN现场总线的分布式锅炉蒸汽热网智能监控系统。现场应用表明:该楼宇自动化系统具有抗干扰能力强,现场组态容易,网络化程度高,人机界面友好等特点。

    3楼 回复本楼

    引用 chenwh78 2008/10/20 12:22:11 发表于3楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 12:26:40

    pdf本文详述了CAN总线数据是如何被解码的
    4楼 回复本楼

    引用 chenwh78 2008/10/20 12:26:40 发表于4楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 12:35:01

    ** 消息的帧格式(Frame format) **

    CAN协议支持两种帧格式,它们只是在确认区存在差异,一种被称为CAN标准帧,在CAN2.0协议的Part A进行定义,标准帧支持11bit的确认区长度,;另一种称为CAN扩展帧,在CAN2.0协议的Part B进行定义,支持29bit的确认区。
    ¤¤ CAN标准帧: ¤¤

    CAN标准帧格式以一被称为“Start of Frame(SOF)”的起始位开始,接下来是“仲裁区(Arbitration field)”,仲裁区由确认区和“远程传送请求(RTR)”组成,RTR位用于区分数据帧和被称为“远程帧”的数据请求帧。接下来的“控制区(Control field)”包括了确认扩展位(IDE),用于区别CAN标准帧和CAN扩展帧,同样,“数据长度代码(DLC)”用于表示接下去的“数据区(Data field)”中数据的字节数,如果报文用于远程帧,DLC就包含所请求数据的字节数。“数据区”可以达8字节。报文的完整性由接下来的“循环冗余校验码(CRC)”来保证。而“应答区(ACK)”则有应答槽(ACK slot)和ACK定界符(ACK delimiter),应答槽中的位元会被接收到正确的报文的站填充并发送到总线上,接收者不需要判断报文的有效性便可以应答正确的报文,即无论是否与自己有关的报文,接收者都会填充应答槽并进行发送。报文结束于“帧结束(EOF)”位,“帧间隔(IFS)”定义了一个两个数据帧之间的最小位元数,一般不小于3bit。如果没有任何站企图对总线进行访问,则总线会一直保持空闲状态。

    ¤¤ CAN扩展帧 ¤¤

    扩展帧中的报文与标准帧相似,不同之处仅是所使用的确认区长度,确认区由已存在的11bit确认区(称为基本确认区)和18bit扩展区(称为标识扩展区)组成,标准帧与扩展帧的不同来自于对IDE位的使用。当IDE为显性时,则报文作为标准帧来发送,当IDE位为隐性时报文作为扩展帧来发送。当两种格式报文同时出现在总线上,并且具有相同的确认区或基本确认区,那判断报文优先级的方法通常为:标准帧的报文总是比扩展帧的报文优先级高。

    支持扩展帧格式的CAN控制器(CAN Controller)同样也能发送和接收CAN标准帧,当仅仅支持标准帧的CAN控制器被用在网络上时,则仅只有标准帧能在整个网络上传送,扩展帧将不能被识别,但是有些只支持标准帧的CAN控制器可以识别扩展帧并且忽略它们(参考CAN2.0 B Passive)
    5楼 回复本楼

    引用 chenwh78 2008/10/20 12:35:01 发表于5楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/20 13:03:57

    pdf
    6楼 回复本楼

    引用 chenwh78 2008/10/20 13:03:57 发表于6楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/21 12:43:55

    CAN-bus中英文2.0A,2.0B规范,和DeviceNet规范和CANopen规范简介,CAN产品广告和各行业应用方案。
    http://www.zlgmcu.com/philips/can/can_about.asp
    http://www.zlgmcu.com/philips/philips-can.asp
    唉……,有的东西还是要讲点道德才好。空气越清新越好。
    向别人要还不如自己多找找。不用回帖也可以。我会定期顶一下。


    现场总线CAN-bus 的特点:

    1、国际标准的工业级现场总线,传输可靠,实时性高;
    2、传输距离远(最远10Km),传输速率快(最高1Mbps);
    3、单条总线最多可接110 个节点,并可方便的扩充节点数;
    3、总线上各节点的地位平等,不分主从,突发数据可实时传输;
    4、非破坏总线仲裁技术,可多节点同时向总线发数据,总线利用率高;
    5、出错的CAN 节点会自动关闭并切断和总线的联系,不影响总线的通讯;
    6、报文为短帧结构并有硬件CRC 校验,受干扰概率小,数据出错率极低;
    7、对未成功发送的报文,硬件有自动发功能,传输可靠性很高;
    8、具有硬件地址滤波功能,可简化软件的协议编制;
    9、通讯介质可用普通的双绞线、同轴电缆或光纤等;
    10、CAN-bus 总线系统结构简单,性价比极高。

    欢迎各位讨论关于CAN-bus相关问题。
    7楼 回复本楼

    引用 chenwh78 2008/10/21 12:43:55 发表于7楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/22 16:30:20

    图片: 


    图片:


    图片:


    图片:


    摘要:
    在CAN总线中,位定时有一点小错误就会导致总线性能严重下降。虽然在许多情况下,位同步会修补由于位定时设置不当而产生的错误,但不能完全避免出错情况,并且在遇到两个或多个CAN节点同时发送的情况时,错误的采样点会使节点启动错误认可标志,使节点不能赢得总线上的任何活动。因此要分析、解决这样的错误就需要对CAN总线位定时中的位同步和CAN节点的工作过程有一个深入的了解。本文描述了CAN总线位同步的运行规则以及如何对位定时的参数进行设置。

    关键词:总线, 位定时, 同步, 延迟

    1.前言
    CAN总线的数据传输速率最高可达1Mbit/s,通常用石英晶振作为时钟发生器,可以独立进行位定时的参数设置,这样即使网络中节点之间的时钟周期不一样仍可获得相同的位速率。但网络中晶振的频率不是绝对稳定的,温度、电压以及器件的异常都会导致微小的差别,但只要将其稳定在振荡器容差范围之内,总线上的节点会通过重同步进行弥补。
    CAN总线的一个位时间可以分成四个部分:同步段,传播段,相位段1和相位段2,每段的时间份额的数目都是可以编程控制的,而时间份额的大小tq由系统时钟tsys和波特率预分频值BRP决定:tq=BRP/tsys。如图1:

    图1
    表1:位时间的参数

    2.同步段
    (1)同步段用于同步总线上的各个节点,在此段内期望有一个跳变沿出现。如果跳变沿出现在同步段之外,那么沿与同步段之间的长度叫做沿相位误差。采样点位于相位缓冲段1的末尾和相位缓冲段2开始处。

    (2)传播时间段用于补偿总线上信号传播时间和电子控制设备内部的延迟时间。因此,要实现与位流发送节点的同步,接收节点必须移相。CAN总线非破坏性仲裁规定,发送位流的总线节点必须能够收到同步于位流的CAN总线节点发送的显性位。图2显示了两个总线节点的相移和传播段时间。


    图2

    在这个例子里,节点A和节点B都是发送节点,因此总线要对两个节点进行仲裁。节点A比节点B提前发送不到1个位时间,当节点B收到延迟后的跳变沿时,B节点要同步于A节点,对位时间进行移相。移相后节点B发送的标识号有较高优先级,因此节点B赢得总线的使用权,如图节点B发送的显性位经过延迟后到达节点A。
    因为存在振荡器容差,节点A的采样点在相位缓冲段的位置是不能确定的,所以节点B发送的位流必须在A节点的相位缓冲段1开始之前到达,因此传播时间段的长度将受到这个条件的限制。如果节点B发送一个隐性到显性的跳变沿,节点A在相位缓冲段1开始之后收到,那么节点A就有可能采样到一个隐性位,导致产生一个位错误。这样的错误只有当两个节点都参与总线仲裁,且总线比较长,节点的振荡器频率相差较大时才会出现。另外,CAN总线还提供一种采样方式,即采样3次,在相位缓冲段首尾以及相位缓冲段1、2的交界处各采样一次,并通过位定时逻辑确定位的正确值,这样就会要求额外的一个时间份额的延迟,因而需要更长的传播时间段。

    3.相位缓冲段和同步
    同步跳转宽度规定了重同步发生时采样点在相位缓冲段内移动的距离。相位缓冲段和同步跳转宽度用来补偿振荡器容差,发生重同步时相位缓冲段会被加长或缩短。当总线发生从隐性到显性跳变时,会产生同步,其作用是控制沿与采样点之间的距离。总线节点在每个时间份额都会采样总线,并与前一次采样值进行比较,如果前一次采样值是隐性而当前的采样值是显性,那么总线节点就会发生一次同步。如果跳变沿出现在同步段的前面,沿相位错误就是负的,反之就是正的。

    在帧起始时,总线会进行一次硬同步。硬同步后,位时间由每个位定时逻辑单元在同步段之后重新启动,强迫引起硬同步的边沿处于重新启动位时间的同步段内。

    当引起重同步的沿相位错误幅值小于或等于同步跳转宽度的数值时,重同步导致位时间的延长或缩短,使采样点处于适当的位置。当沿相位误差幅值大于重同步跳转宽度时,如果相位误差为正,相位缓冲段1延长数值等于同步跳转宽度;如果相位误差为负,相位缓冲段2缩短数值等于同步跳转宽度。

    通过同步,总线可以有效地滤除长度小于传播段与相位缓冲段1长度之和的噪声。但在一个位时间里只允许一种同步发生。除了噪声以外,绝大多数的同步都是由仲裁引起的,总线上的所有节点都要同步于最先开始发送的节点,但是由于总线延迟,节点的同步不可能达到理想的要求。如果最先发送的节点没有赢得总线仲裁,那么所有的接收节点都要重新同步于获得总线仲裁的节点。应答场的情况也是如此,总线上的接收节点都要同步于最先发送显性位的节点。但是当发送节点与接收节点的时钟周期不同并经过多次同步累加起来,振荡器容差会导致同步在仲裁场之后出现。图3列举了沿相位误差为正负两种情况,中间的图作为参考。说明了相位缓冲段如何弥补沿相位错误。


    图3

    在第一个例子里,同步段末端出现了一个隐性到显性的跳变沿,那么相位缓冲段1将加长,使得跳变沿到采样点之间的长度与没有跳变沿出现时同步段到采样点之间的长度相等。由于沿相位误差小于同步跳转宽度,因此重同步补偿了沿相位误差,在下一个正常位时间到来时,显性到隐性的跳变沿就出现在同步段。在第二个例子中,一个隐性到显性的跳变沿出现在相位缓冲段2,因此相位缓冲段2会缩短,并且同步段会被省略, 这是因为当节点同步于边沿时,节点无法确定处于相位缓冲段2的同步段的起始位置。由于沿相位误差的幅值小于同步跳转宽度,所以重同步取得的效果与第一个例子是一样的。需要注意的是,相位缓冲段只是暂时的被加长或者缩短,在下一个位时间,缓冲段又会恢复预设值。图4显示了同步是怎样消除显性噪声干扰的。列举的两个例子中,噪声都是在传播段的末尾开始,长度为传播时间段与相位缓冲段1的和。


    图4

    在第一个例子里,同步跳转宽度大于或者等于噪声跳变沿的相位误差,因此采样点适当移动,采样值为隐性位,消除了噪声。在第二个例子中,同步跳转宽度小于沿相位误差,采样点移动的长度不够,显性值被当作总线的真实值采样。

    4. 振荡器容差范围
    影响振荡器容差范围的因素有相位缓冲段1、相位缓冲段2、同步跳转宽度和位时间。最大容差范围需要满足下面两个条件:

    需要注意的是同步跳转宽度不能大于相位缓冲段1和2中的任何一个。

    5. CAN控制器的配置与延迟时间的计算
    配置CAN控制器最关键的部分就是对两个寄存器的设置。寄存器0决定传播时间段、相位缓冲段1和相位缓冲段2;寄存器2决定同步跳转宽度和分频值。在位定时寄存器中,TSEG1,TSEG2,SJW和BRP设定的值要比其功能值小1,因此设定范围是[0…..N-1]而不是[1…..N]。所以位时间可以由 [TSEG1+TSEG2+3]tq或者[同步段+传播段+相位缓冲段1+相位缓冲段2]tq得到。

    当总线延迟时间很小时,计算节点的输入延迟和输出延迟就要求很精确。在位定时的设置中,只有节点的输入和输出延迟需要知道。我们可以通过下述方法计算延迟时间。在总线上输入一个显性脉冲,长度为一个位时间的长度,处于空闲状态的错误激活节点将认为是帧起始因而会产生一次硬同步,6个隐性位过后,总线节点会发现一个填充位错误,发出错误激活标志。我们可以得到从发送显性脉冲开始到接收错误激活标志结束的这段时间t1。t1包括节点输入延迟和输出延迟、同步延迟以及多个位时间。同步延迟由时钟振荡器决定。在位时间里,时钟同步延迟由同步段补偿,因此在计算延迟时间时,要通过调节时钟振荡器的相位来消除它。为了获得较为精确的延迟时间,我们必须对时钟振荡器的相位以及总线节点进行调整以获得最小的t1。因此,输入输出延迟时间t2=min(t1)─7•(正常位时间)。

    6.小结
    位时间的范围是8~25个时间份额,时间份额的大小由分频值确定。我们首先要确定的是传播时间段。大小由总线延迟时间决定。在一个可以扩展的总线结构中,最大节点延迟和总线最大长度必须考虑。一般情况下,每米延迟为5.5ns。

    同步段的长度为1个时间份额。因此相位缓冲段的长度为(时间份额总数-1-传播时间段时间份额数)tq,如果剩余的份额数是偶数,那么应有相位缓冲段1=相位缓冲段2,或者相位缓冲段2=相位缓冲段1+1。而且,相位缓冲段2的最小长度不应小于控制器的信息处理时间,通常情况下,应该大于2个时间份额。

    同步跳转宽度的最大值、相位缓冲段1的最小值都是4个时间份额。

    如果有多个配置可以选择,那么应该选择具有最高振荡器容差范围的参数配置。如果总线上有不同时钟的节点,那么在计算传播时间段时,应该以具有最大延迟的那个节点为准。振荡器容差范围的确定应以对振荡器容差范围要求最高的节点为准。
    8楼 回复本楼

    引用 chenwh78 2008/10/22 16:30:20 发表于8楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/23 9:00:27

            首先欢迎你提意见!       

            但是如果一个论坛本来就那么2个人发贴,你还要限制他,那么论坛还怎么发展?

            我是现场总线的版主,你看看这个论坛除了你发表2个帖子,其他人有2、3个帖子之外,是不是我在更多的发帖,回帖,就是想让更多人在这儿留下东西,学到东西!难到一个论坛看到的是几个月前的帖子,你感觉这个论坛有生气吗?有发展吗?

          当然,我反对在论坛里发不像样的广告,遇到广告我肯定会删除!

           严格的管理应该在很论坛活跃的时候进行!

           我不反对一篇文章分成几个帖子发,只要不太过分,起码是在发表内容,如果看了内容,我想总会有点收获!

           以上是我的意见,欢迎“常青树”,还有更多的朋友能发表看法!咱们能有沟通就能了解到每个人的想法,就不会有误解!

    9楼 回复本楼

    引用 chenwh78 2008/10/23 9:00:27 发表于9楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/23 10:51:10

    CANOpen是一种基于CAN的高层协议,是一种具有灵活配置功能的标准嵌入式网络。CANOPEN是为运动导向机器所设计的控制网络,如处理系统,如今,它被运用于许多领域,如医疗设备,海事电子,公共运输,建筑自动化等。

      CANOPEN最初由Bosch主席领导的Esprit项目所开发,1995年,CANOPEN规范被移交给CIA的国际用户与制造商。最初,CANOPEN的通讯轮廓是基于CAN的应用层协议(CAL)。CANOPEN(CiA DS 301)的Ver 4已经是EN50325-4标准了。
      CANOPEN的规范涉及应用层和通讯描述(CiA DS 301),同时也是一个可编程设备(CiA 302)的框架,推荐运用于电缆,连接器(CiA 303-1),SI单元和前缀表示法(CiA 303-2)。基于CAN的应用层协议描述在软件中实现。

      CiA的成员开发的标准化描述(设备,接口和应用描述),简化了系统设计者去集成一个CANOPEN网络系统的工作,成套的设备(Off-the-shelf devices),工具,和协议栈,只需支付合理的费用就可以使用,对于系统设计人员,重用应用软件是非常重要的,这不仅需要通讯的兼容性,也需要设备的互操作性和互换性,在CANOPEN的设备和接口描述中,定义了应用层对像,以实现CANOPEN设备的互换性,CANOPEN是一个非常灵活,非常开放的协议,制造商可以在设备中自己定义功能,这些功能还可以在描述文件中写明并被加入到通用功能里。

      CANOPEN去除了开发者为处理CAN协议的细节而进行的工作,如时序(bit-timing)和执行规范功能,它为实时数据(Process Data Objects, PDO),配置数据(Service Data Objects, SDO)和特殊功能(时间戳Time Stamp, 同步消息,紧急消息)提供了标准的通讯对象,同时也为网络管理数据(Boot-Up message, NMT message, and Error Control)等提供标准通讯对象,CANOPEN的协议,构架,和描述都可以从CiA总部获得
    10楼 回复本楼

    引用 chenwh78 2008/10/23 10:51:10 发表于10楼的内容

  • chenwh78

    chenwh78   |   当前状态:在线

    总积分:6174  2024年可用积分:0

    注册时间: 2008-10-10

    最后登录时间: 2019-06-16

    空间 发短消息加为好友

    chenwh78   发表于 2008/10/23 10:52:00

    CANopen 应用于多种领域。最初由从事工业控制的CiA(CAN in Automation)会员开发的CANopen 网络也应用于越野车、海上电子设备、医疗设备、甚至于还可应用于公共汽车和铁路。

    CANopen 是基于CAN(控制局域网)串行的总线系统的网络系统,CANopen 应用层和通信行规(CiA DS-301 和CiA DSP302)既支持对设备参数的直接存取,也支持对时间苛求的过程数据通信。

    CANopen 的设备接口和应用行规(CiA DS-4XX)定义标准化的应用对象和基本功能。CANopen 网络管理服务简化了项目设计、系统集成和诊断。在每个分散的控制应用中都有各自所需的不同的通信对象。在CANopen 总线上,所有这些通信对象都是标准化的,并在通信字典中详尽地进行了描述。CANopen 对象字典可以用一个16 位的索引进行存取,在数组和结构的情况下再用一个8 位的子索引。该字典也描述了设备的全部应用对象。此外,设备制造商可定义非标准化的应用对象。CANopen 对象字典允许在一个物理的CANopen 模块上实现8 台虚拟设备。

    *通信对象

    CANopen 指定有四类通信对象,用8 个字节的数据字段把过程数据对象PDO(Process Data Objects)映象到一个单一的CAN 帧,从而传输应用对象。每个PDO 有一个唯一的标识符,且可以仅通过一个节点发送。但其接受者可不止一个(生产者/消费者通信)。 发送PDO 可用多种方式,如由内部事件驱动、由内部定时器驱动、由远程请求驱动和由接收到来自特定的节点的一个同步信息驱动。应用对象和支持的传送方式的缺省映象在对象字典中对每一个PDO 都作了描述,PDO 标识符具有高优先级,以确保良好的实时性能,如果需要硬实时控制,那么系统的设计者可为每个PDO 组态一个禁止时间(inhibit-time), 该“禁止时间”严禁在特定的时间内发送这个对象,因此,设计者可对多个对象设计一个确定的PDO 行为。发送PDO 无需确认。在PDO 映象对象中定义了被在PDO 内传送的应用对象,它描述了所映象的应用对象的顺序和长度。在预操作状态(Pre-Operational State)期间,支持动态PDO 映象的设备必须支持这个功能,若在预操作状态下支持动态映象,则服务数据对象SDO 客户负责数据的一致性。

    第二类通信对象是传送组态数据的服务数据对象SDO(Service Data Objects)。组态数据有时多于8 个字节。SDO 传输协议允许传送任意长度的数据对象,第一段内的第一个字节包含必须的数据流控制信息,它包括为克服众所周知的双重接受CAN 帧的问题而设置的一个触发位,第一段内的第2-4 字节包含要读出或写入的对象字典登入项的索引和子索引,第一段内的最后四个字节可用于组态数据。用同样的CAN标识符,第二段以及其后继段包含控制字节和多达7 个字节的组态数据,接受者确认每个字节以便有点对点通信(客户/服务器)。

    第三类通信对象是网络管理对象:节点保护对象(Node guarding Object)和NMT对象。节点保护对象是由NMT 主站节点远程请求的具有一个字节的CAN 帧,数据字节主要包含节点的状态,节点保护时间在对象定期发送。节点保护时间在对象字典中也作了规定,并且可以由SDO 进行组态。此外,还规定了保护时间寿命(Life Guarding Time), 在该时间区内NMT 主站必须保护一个NMT 从站,这就确保了即使在主站不存在的情况下,节点仍能以用户指定的方式作出反应。NMT 对象映象到一个单一的带有2 个字节数据长度的CAN 帧,它的标识符为0。 第一个字节包含命令说明符,第二个字节包含必须执行此命令的设备的节点标识符(当节点标识符为0 时所有的节点必须执行此命令)。 由NMT 主站发送的NMT 对象强制节点转换成另一个状态。CANopen 状态机规定了初始化状态,子程序操作,操作状态和停止(正式为:准备)状态。在加电后每个CANopen 处于初始化状态,然后自动地转换到预操作状态,在此状态下提供了同步对象和节点保护,还允许SDO 的传送。如果NMT 主站已将一个或多个节点设置为操作状态则允许他们发送和接受PDO。 在停止状态除NMT 对象外,不允许通信。初始化状态又分成三个子状态,以使全部或部分的节点复位。在Reset_Application 子状态中,制造商专用(manufacture-specific)行规区域和标准化设备行
    规区域的参数均设置成它们的缺省值。在Reset_Communication 子状态中,通信行规区域的参数设定为它们的通电(power-on)值。第三个子状态是初始化状态,在通电后或复位通信后或复位应用后节点自动地进入此状态,通电值(Power-on)是上一次存储的参数。

    CANopen 还定义了三个特定的用于同步应急指示和时间标记的对象。同步对象由同步发生器定期广播,该对象提供了基本网络时钟,同步报文之间的时间由通信循环周期对象定义,它可在boot-up 过程由组态工具写入到应用设备,可能会产生时间偏差,产生偏差的原因或者是由于存在一些其它的具有较高优先权标识符的对象,它是由同步发生器传送过程中产生的或者由在同步对象之前正在传送的那个帧造成的,同步对象被映象到一个单一的带有标识符128 的帧,用缺省配置,同步对象不带任何数据,但它可具有多达8 个字节的用户专用数据。

    应急对象由设备内部出现致命错误来触发,并从相关应用设备上的应急客户发送,因此应急对象适用于中断类型的报警信号。每个“错误事件”(error event)只能发送一次应急对象,只要在设备上不发生新的错误就不得再发送应急对象,零个或多个应急对象消费者可接受这些。应急消费者的反应是由应用指定的。CANopen 定义了应急对象中要传送的若干个应急错误代码,它是一个单一的具有8 个数据字节的CAN 帧。

    利用时间标记对象(Time Stamp Object), 一个通用的时间帧参考被提供给应用设备,它包含一个时间和日期的值,该对象传送紧跟在生产者/消费者推进方式(Push mode)之后,相关的CAN 帧有标识符256 和一个6 个字节长度的数据字段。

    *标识符的地址分配

    由于CAN 是一种面向网络的通信对象(COB), 在网络中每个COB 有一个或多个关联的标识符。标识符隐含地指定了它的优先级,因此,对COB 的标识符的地址分配是系统设计中的一个主要方面。为了减少组态工作量,为CANopen 网络定义了强制性的缺省标识符地址分配表,这些标识符在预操作状态中是可用的,通过动态的分配还可以修改它们。CANopen 设备必须提供它所支持的通信对象的相应的标识符缺省行规ID。 地址分配表包含一个功能部分和一个模块ID 部分,该功能部分决定对象的优先级,而ID 模块部分(module-ID-part)在相同功能的设备间进行区分。ID地址分配表与预定义的主/从连接集(set)相对应,并允许在单主与多达127 个从站设备之间进行点对点(peer-to-peer)通信。它也支持非确认的NMT 广播、同步和时间标记对象。预定义的主/从连接集支持一个应急对象,一个SDO, 2个接收PDO(Receive-PDO),2 个发送PDO(Transmit- PDO)和节点保护对象(Node Guarding Object)。 为优化标识符的地址分配,系统设计者可改变标识符的地址分配,这种改变可静态地完成,也就是说在系统运行期间标识符是固定的。动态分配即:用SDO 服务通过CAN 网络分配标识符。动态分配是基于CANopen 系统的优选方法,为了把数据项传送到网络中的正确地点,有时必须把Transmit-PDO 与Receive-PDO 连接在一起,它们从某台设备发送,而由其它设备接收,在缺省标识符分配不满足的系统内情况就是如此。在PDO 链接过程中,系统设备者必须小心,传输PDO(Transmit-PDO)具有各自唯一的标识符,且被链接的PDO 的数据长度是相同的。
    11楼 回复本楼

    引用 chenwh78 2008/10/23 10:52:00 发表于11楼的内容

总共 , 当前 /, 123【下一页】