CAN 的工作原理
CAN 的工作原理
当CAN 总线上的一个节点(站) 发送数据时, 它以报文形式广播给网络中所有节点。对每个节点来说, 无论数据是否是发给自己的, 都对其进行接收。每组报文开头的11位字符为标识符, 定义了报文的优先级, 这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的, 不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时, 这种配置十分重要。 当一个站要向其它站发送数据时, 该站的CPU 将要发送的数据和自己的标识符传送给本站的CAN 芯片, 并处于准备状态; 当它收到总线分配时, 转为发送报文状态。CAN 芯片将数据根据协议组织成一定的报文格式发出, 这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测, 判断这些报文是否是发给自己的, 以确定是否接收它。 由于CAN 总线是一种面向内容的编址方案, 因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在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开放系统互连模型
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 决定接收或屏蔽该报文
可靠的错误处理和检错机制
发送的信息遭到破坏后,可自动重发
节点在错误严重的情况下具有自动退出总线的功能
报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息
什么是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位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。
BOSCH CAN 2.0规范
简介:
1983年,德国BOSCH 开始研究新一代的汽车总线;1986年,第一颗CAN-bus 芯片交付应用;1991年,由德国BOSCH 公司发布 CAN 2.0 规范;1993年,国际标准ISO11898正式出版;1995年,ISO11898进行了扩展,从而能够支持29位CAN 标识符。2000年,市场销售超过1亿个CAN 器件。
CAN 2.0 规范分为CAN 2.0A与CAN 2.0B。CAN 2.0A支持标准的11位标识符;CAN 2.0B同时支持标准的11位标识符和扩展的29位标识符。CAN 2.0 规范的目的是为了在任何两个基于CAN-bus 的仪器之间建立兼容性;规范定义了传输层,并定义了CAN 协议在周围各层当中所发挥的作用。CAN 2.0 规范涉及兼容性的不同方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现柔韧性,CAN 被细分为以下不同的层次:
CAN对象层(the object layer)
CAN传输层(the transfer layer)
物理层(the phyical layer)
对象层和传输层包括所有由ISO/OSI模型定义的数据链路层的服务和功能。定义对象处理较为灵活。对象层的作用范围包括:
查找被发送的报文。
确定由实际要使用的传输层接收哪一个报文。
为应用层相关硬件提供接口。
传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上
什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。位定时的一些普通功能也可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。
物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。
作为通用、有效、可靠及经济的平台,CAN-bus 已经广泛地受到了欢迎。它可以使用于汽车系统、机械、技术设备和工业自动化里几乎任何类型的数据通信。
CAN 2.0 规范没有规定媒体的连接单元以及其驻留媒体,也没有规定应用层。因此,用户可以直接建立基于CAN 2.0 规范的数据通信;不过,这种数据通信的传输内容一般不能灵活修改,适合于固定通讯方式。 由于CAN 2.0 规范没有规定信息标识符的分配,因此可以根据不同应用使用不同的方法。所以,在设计一个基于CAN 的通讯系统时,确定CAN 标识符的分配非常重要,标识符的分配和定位也是应用协议、高层协议的其中一个主要研究项目。
CAN 的工作原理
CAN 的工作原理
当CAN 总线上的一个节点(站) 发送数据时, 它以报文形式广播给网络中所有节点。对每个节点来说, 无论数据是否是发给自己的, 都对其进行接收。每组报文开头的11位字符为标识符, 定义了报文的优先级, 这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的, 不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时, 这种配置十分重要。 当一个站要向其它站发送数据时, 该站的CPU 将要发送的数据和自己的标识符传送给本站的CAN 芯片, 并处于准备状态; 当它收到总线分配时, 转为发送报文状态。CAN 芯片将数据根据协议组织成一定的报文格式发出, 这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测, 判断这些报文是否是发给自己的, 以确定是否接收它。 由于CAN 总线是一种面向内容的编址方案, 因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在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开放系统互连模型
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 决定接收或屏蔽该报文
可靠的错误处理和检错机制
发送的信息遭到破坏后,可自动重发
节点在错误严重的情况下具有自动退出总线的功能
报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息
什么是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位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。
BOSCH CAN 2.0规范
简介:
1983年,德国BOSCH 开始研究新一代的汽车总线;1986年,第一颗CAN-bus 芯片交付应用;1991年,由德国BOSCH 公司发布 CAN 2.0 规范;1993年,国际标准ISO11898正式出版;1995年,ISO11898进行了扩展,从而能够支持29位CAN 标识符。2000年,市场销售超过1亿个CAN 器件。
CAN 2.0 规范分为CAN 2.0A与CAN 2.0B。CAN 2.0A支持标准的11位标识符;CAN 2.0B同时支持标准的11位标识符和扩展的29位标识符。CAN 2.0 规范的目的是为了在任何两个基于CAN-bus 的仪器之间建立兼容性;规范定义了传输层,并定义了CAN 协议在周围各层当中所发挥的作用。CAN 2.0 规范涉及兼容性的不同方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现柔韧性,CAN 被细分为以下不同的层次:
CAN对象层(the object layer)
CAN传输层(the transfer layer)
物理层(the phyical layer)
对象层和传输层包括所有由ISO/OSI模型定义的数据链路层的服务和功能。定义对象处理较为灵活。对象层的作用范围包括:
查找被发送的报文。
确定由实际要使用的传输层接收哪一个报文。
为应用层相关硬件提供接口。
传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上
什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。位定时的一些普通功能也可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。
物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。
作为通用、有效、可靠及经济的平台,CAN-bus 已经广泛地受到了欢迎。它可以使用于汽车系统、机械、技术设备和工业自动化里几乎任何类型的数据通信。
CAN 2.0 规范没有规定媒体的连接单元以及其驻留媒体,也没有规定应用层。因此,用户可以直接建立基于CAN 2.0 规范的数据通信;不过,这种数据通信的传输内容一般不能灵活修改,适合于固定通讯方式。 由于CAN 2.0 规范没有规定信息标识符的分配,因此可以根据不同应用使用不同的方法。所以,在设计一个基于CAN 的通讯系统时,确定CAN 标识符的分配非常重要,标识符的分配和定位也是应用协议、高层协议的其中一个主要研究项目。