如何截取串口通讯报文? modbus rtu-RTU 485现场总线,监测PC非主站和从站,如何截取主从站间的通讯报文?

[工学]现场总线与网络化仪表实验报告要求最新第一轮实验:实验一、六、七 &&#4..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
[工学]现场总线与网络化仪表实验报告要求最新
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口单片机总线--can总线
是(Controller Area Network, CAN)的简称,
CAN,全称为“CONtroller Area
Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。 一个由CAN
总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips
P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN
可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN总线是由研发和生产汽车电子产品著称的BOSCH公司开发了的,并最终成为国际标准(ISO118?8)。是国际上应用最广泛的之一。在北美和,CAN总线协议已经成为和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车和环境温度恶劣、电磁辐射强和振动大的工业环境
CAN总线特性
N具有十分优越的特点,使人们乐于选择。这些特性包括:
1、低成本;
2、极高的总线利用率;
3、很远的距离(长达Km);
4、高速的数据传输速率(高达1Mbit/s);
5、可根据报文的ID决定接收或屏蔽该报文;
6、可靠的错误处理和检错机制;
7、发送的信息遭到破坏后,可自动重发;
8、节点在错误严重的情况下具有自动退出总线的功能;
9、报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
CAN总线特点
(1)它是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行通信。
(2)通信介质可以是双绞线、或光导纤维,通信速率可达1Mb/s。
(3)通信接口中集成了协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级判别等项工作。
(4)CAN协议的一个最大特点是废除了传统的站地址编码,雨代之以对通信数据块进行编码。采用这种方法的优点是可使网络内的节点个数在理论上不受限制,数据块的标识码可由位或29位二进制数组成,因此可以定义或个不同的数据块,这种数据块编码方式,还可使不同的节点同时接收到相同的数据,这一点在分步式控制中非常重要。
(5)数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而倮证了通信的实时性。
(6)CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN总线所具有的卓越性能、极高的可靠性和独特设计,特别适合工业设各测控单元互连。因此备受工业界的重视,并已公认为最有前途的现场总线之一。
CAN总线数据格式
所有CAN总线通信在应用上都是一致的,但有两种硬件和两个版本的数据格式,分为基本型和完全型,如图1所示。几乎所有新的处理器内部嵌入的CAN总线都支持这两种操作模式,其中基本型主要用于对成本要求比较敏感的系统中。
基本型(BASIC—CAN)主要有以下特点:
●内核和CAN总线模块采用闭环连接方式;
●有1个发送缓冲;
●有2个接收缓冲;
●需要使用软件选择输入的消息。
完全型(FULL—CAN)主要有以下特点:
●提供消息服务;
●对输人消息进行更大范围的接收;
●邮箱允许用户配置;
●邮箱的存储区以及邮箱的大小与具体的芯片有关;
●先进的错误识别功能。
此外,CAN2.OB总线规范定义了
2种不同的数据格式(标准帧和扩展帧),其主要区别在于标识符域的长度不同:标准帧有II位的标识符,扩展帧有29位的标识符,如图1所示。CAN总线的标准数据帧的长度是44~108位,而扩展数据帧的长度是64~8位。根据数据流代码的不同,标准数据帧可以插入28位填充位,扩展数据帧可以插人28位填充位。因此,标准数据帧最长为131位,扩展数据帧最长为6位。
图1 CAN总线应用类型
图2 数据格式类型
图1给出了构成标准/扩展数据帧各位在整个数据帧中的位置,主要包括:
●帧起始位;
●包含标识符和发送消息类型的仲裁域;
●包含数据位数的控制域;
ELTMS320X281x∶ jffilE& C柳;ffilBTT,荃∶
●最多8字节的数据域;
●循环冗余检查位(CRC);
●应答位;
●帧结束位。
图3 数据帧格式
CAN总线消息主要由仲裁区、数据区、CRC校验区以及帧结束区荃部分构成。各区主要情况如下。
●仲裁区:
◇定义消息的优先级;
◇消息的逻辑地址(标识符);
◇标准帧11位标识符;
◇扩展帧29位标识符。
●数据区:
◇每个消息最多可以包含8字节的数据;
◇允许不包含数据帧的帧存在(数据区长度为0字节)。
●CRC校验区:包含循环冗余校验位。
●帧结束区:帧结束区消息响应标识、错误消息、消息结束。
图3给出的数据帧包含起始位、标识符、远程传输请求、标识扩展等,所有相关的仲裁、数据、CRC校验以及帧结束构成了完整的CAN总线消息帧,各部分的具体含义如下。
bit)标识一个消息帧的开始,在空闲时间的下降沿同步所有的总线模块;
标识符(11
bits):定义消息的逻辑地址和优先级,优先级的数字越小优先级越高;
bit):远程传输请求,如果RTR=1表示在数据帧中没有有效数据,请求远程节点向发出请求帧的节点发送数据;
bit):标识符扩展,如果IDE=1,则采用扩展的数据帧传送数据;
bits):数据长度代码,数据帧长度允许的数据字节数为{0~8),其他长度数值不允许使用;
数据(0~8字节):消息数据;
CRC(15 bits):循环冗余校验码”只用于检测错误而不能;
bits)每一个接听者接收到消息后必须发送响应位(ACK):
EOF(7 bits=1,recesslve):帧的结束;
bits=1,recessive):内部帧空间,将接收到的消息从总线处理单元复制到缓冲,只有扩展模式有该位;
SRR(1 bit=recesslve):
替代标准帧中的远程帧请求位(RTR);
CAN总线的仲裁
CAN总线采用的是一种叫做“载波监测,多主掌控/冲突避免”(CSMA/CA)的通信模式。这种总线仲裁方式允许总线上的任何一个设各都有机会取得总线的控制权并向外发送数据。如果在同一时刻有2个或2个以上的设各要求发送数据,就会产生总线冲突,CAN总线能够实时地检测这些冲突并对其进行仲裁,从而使具有高优先级的数据不受任何损坏地传输。
当总线处于空闲状态时呈隐性电平,此时任何节点都可以向总线发送显性电平作为帧的开始。如果2个或2个以上同时发送就会产生竞争。CAN总线解决竞争的方法同以太网的CSMA/CD(Carrier
Sense Multiple Access with Collislon
Detection)方法基本相似,如图1所示。此外,CAN总线做了改进并采用CSMA/CA(Carrier Sense
Multiple Access with Collision
Avoidance)访问总线,按位对标识符进行仲裁。各节点在向总线发送电平的同时,也对总线上的电平读取,并与自身发送的电平进行比较,如果电平相同继续发送下一位,不同则停止发送退出总线竞争。剩余的节点继续上述过程,直到总线上只剩下1个节点发送的电平,总线竞争结束,优先级高的节点获得总线的控制权。
图1 Ethernet采用的CSMA/ CD总线访问过程
CAN总线以报文为单位进行数据传输,报文的优先级结合在44位标识符中(扩展帧的标识符29位),具有最小二进制数的标识符的节点具有最高的优先级。这种优先级一旦在系统设计时确定就不能随意地更改,总线读取产生的冲突主要靠这些位仲裁解决。之所以CAN总线不采用以太网使用的延时避免冲突,主要是为了保证具有更高优先级的节点能够完整地实时传输,而且CSMA/CA可以有效地避免冲突。
如图2所示,节点A和节点B的标识符的第lO、9、8位电平相同,因此两个节点侦听到的信息和它们发出的信息相同。第7位节点B发出一个“1”,但从节点上接收到的消息却是“0”,说明有更高优先级的节点占用总线发送消息。节点B会退出发送处于单纯监听方式而不发送数据;节点A成功发送仲裁位从而获得总线的控制权,继而发送全部消息。总线中的信号持续跟踪最后获得总线控制权发出的报文,本例中节点A的报文将被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪个节点被传送前,报文的起始部分已经在网络中传输了,因此具有高优先级的节点的数据传输没有任何延时。在获得总线控制权的节点发送数据过程中,其他节点成为报文的接收节点,并且不会在总线再次空闲之前发送报文。
图2 CAN总线节点访问总线过程
图3为CAN总线上节点的电平逻辑,总线上的节点电平对于总线电平而言是相与的关系,只有当3个节点的电压都等于1(隐性电平),总线才会保持在ycc(隐性电平)状态。只要有1个节点切换到0状态(显性电平),总线就会被强制在显性状态(0)。这种避免总线冲突的仲裁方式能够使具有高优先级的消息没有延时地占用总线传输。
图3 CAN总线上节点的电平逻辑
CAN总线的物理连接
CAN总线采用的是一种叫做“载波监测,多主掌控/冲突避免”(CSMA/CA)的通信模式。这种总线仲裁方式允许总线上的任何一个设各都有机会取得总线的控制权并向外发送数据。如果在同一时刻有2个或2个以上的设各要求发送数据,就会产生总线冲突,CAN总线能够实时地检测这些冲突并对其进行仲裁,从而使具有高优先级的数据不受任何损坏地传输。
当总线处于空闲状态时呈隐性电平,此时任何节点都可以向总线发送显性电平作为帧的开始。如果2个或2个以上同时发送就会产生竞争。CAN总线解决竞争的方法同以太网的CSMA/CD(Carrier
Sense Multiple Access with Collislon
Detection)方法基本相似,如图1所示。此外,CAN总线做了改进并采用CSMA/CA(Carrier Sense
Multiple Access with Collision
Avoidance)访问总线,按位对标识符进行仲裁。各节点在向总线发送电平的同时,也对总线上的电平读取,并与自身发送的电平进行比较,如果电平相同继续发送下一位,不同则停止发送退出总线竞争。剩余的节点继续上述过程,直到总线上只剩下1个节点发送的电平,总线竞争结束,优先级高的节点获得总线的控制权。
图1 Ethernet采用的CSMA/ CD总线访问过程
CAN总线以报文为单位进行数据传输,报文的优先级结合在44位标识符中(扩展帧的标识符29位),具有最小二进制数的标识符的节点具有最高的优先级。这种优先级一旦在系统设计时确定就不能随意地更改,总线读取产生的冲突主要靠这些位仲裁解决。之所以CAN总线不采用以太网使用的延时避免冲突,主要是为了保证具有更高优先级的节点能够完整地实时传输,而且CSMA/CA可以有效地避免冲突。
如图2所示,节点A和节点B的标识符的第lO、9、8位电平相同,因此两个节点侦听到的信息和它们发出的信息相同。第7位节点B发出一个“1”,但从节点上接收到的消息却是“0”,说明有更高优先级的节点占用总线发送消息。节点B会退出发送处于单纯监听方式而不发送数据;节点A成功发送仲裁位从而获得总线的控制权,继而发送全部消息。总线中的信号持续跟踪最后获得总线控制权发出的报文,本例中节点A的报文将被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪个节点被传送前,报文的起始部分已经在网络中传输了,因此具有高优先级的节点的数据传输没有任何延时。在获得总线控制权的节点发送数据过程中,其他节点成为报文的接收节点,并且不会在总线再次空闲之前发送报文。
图2 CAN总线节点访问总线过程
图3为CAN总线上节点的电平逻辑,总线上的节点电平对于总线电平而言是相与的关系,只有当3个节点的电压都等于1(隐性电平),总线才会保持在ycc(隐性电平)状态。只要有1个节点切换到0状态(显性电平),总线就会被强制在显性状态(0)。这种避免总线冲突的仲裁方式能够使具有高优先级的消息没有延时地占用总线传输。
图3 CAN总线上节点的电平逻辑
CAN总线的通信错误及其处理
在CAN总线中存在5种错误类型,它们互相并不排斥,下面简单介绍一下它们的区别、产生的原因及处理方法。
位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平与送出的电平不同时9则在该位时刻检测到一个位错误。但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。
填充错误:在使用位填充方法进行编码的报文中,出现了第6个连续相同的位电平时,将检测出一个填充错误。
CRC错误:CRC序列是由发送器CRC计算的结果组成的。以与发送器相同的方法计算CRC。如果计算的结果与接收到的CRC序列不同,则检测出一个CRC错误。
当固定形式的位区中出现一个或多个非法位时,则检测到一个形式错误。
应答错误:在应答间隙,发送器未检测到显性位时,则由它检测出一个应答错误。
检测到出错条件的节点通过发送错误标志进行标定。当任何节点检测出位错误、填充错误、形式错误或应答错误时,由该节点在下一位开始发送出错误标志。
当检测到CRC错误时。出错标志在应答界定符后面那一位开始发送.除非其他出错条件的错误标志已经开始发送。
在CAN总线中,任何一个单元可能处于下列3种故障状态之一:错误激活状态(ErrorActive)、错误认可状态(Error
Pasitive)和总线关闭状态( off)。
错误激活单元可以照常参与总线通信,并且当检测到错误时,送出一个活动错误标志。错误认可节点可参与总线通信,但是不允许送出活动错误标志。当其检测到错误时,只能送出认可错误标志,并且发送后仍为错误认可状态,直到下一次发送初始化。总线关闭状态不允许单元对总线有任何影响。
为了界定故障,在每个总线单元中都设有2个计数:发送出错计数和接收出错计数。这些计数按照下列规则进行。
(1)接收器检查出错误时,接收器错误加1,除非所有检测错误是发送活动错误标志或超载标志期间的位错误。
(2)接收器在送出错误标志后的第一位检查出显性位时,错误计数器加8。
(3)发送器送出一个错误标志时,发送器错误计数器加8。有两种情况例外:其一是如果发送器为错误认可,由于未检测到显性位应答或检测到应答错误,并且在送出其认可错误标志时,未检测到显性位;另外一种情况是如果仲裁器件产生填充错误,发送器送出一个隐性位错误标志,而检测到的是显性位。除以上两种情况外,发送器错误计数器计数不改变。
(4)发送器送出一个活动错误标志或超载标志时,检测到位错误,则发送器错误计数器加8。
(5)在送出活动镨误标志、认可错误标志或超载错误标志后,任何节点都最多允许连续7个显性位。在检测到第11个连续显性位后,或紧随认可错误标志检测到第8个连续的显性位,以及附加的8个连续的显性位的每个序列后,每个发送器的发送错误计数都加8,并且每个接收器的接收错误计数也加8。
(6)报文成功发送后,发送错误计数减1,除非计数值已经为0。
(7)报文成功发送后,如果接收错误计数处于1~之间,则其值减1;如果接收错误计数为0,则仍保持为0;如果大于127,则将其值记为119~127之间的某个数值。
(8)当发送错误计数等于或大于128,或接收错误汁数等于或大于128时,节点进人错误认,可状态,节点送出一个活动错误标志。
(9)当发送错误计数器大于或等于时,节点进人总线关闭状态。
(1O)当发送错误计数和接收错误计数均小于或等于127时,错误认可节点再次变为错误激活节点。
(11)在检测到总线上11个连续的隐性位发送128次后,总线关闭节点将变为2个错误计数器均为0的错误激活节点。
(12)当错误计数器数值大于96时,说明总线被严重干扰。
如果系统启动期间仅有1个节点挂在总线上,此节点发出报文后,将得不到应答,检查出错误并重复该报文,此时该节点可以变为错误认可节点,但不会因此关闭总线。
CAN 总线是如何发展
CAN最初出现在80年代末的汽车工业中,由德国公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN
已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN
仍可提供高达50Kbit/s的数据传输速率。
由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。
CANController Area NetworkCAN
CANCAN1.2CAN1.2CAN2.0(CAN2.0ACAN2.0B)CANCAN2.0
BoschSAE()CAN
1987IntelCAN82526Philips82C200
1993CANISO11898/ISO11519ISO11898ISO11519
1994CANICCCANSAEJ1939
5).10km(4Kbps)
6).1MB/s(40m)
CANCSMA/CD(Carrier Sense Multiple Access with
collision Detect/)CAN
CAN11IDIDIDCANSOF11IDCAN
CANVCAN_HVCAN_L0VCAN_HVCAN_L3.5V1.5V2V
CANP87C591XAC37SJA1000
CANPCA82C250PCA82C251PCA82C252TJA1040TJA1041TJA1050TJA1053TJA1054
CAN 是Controller Area Network 的缩写(以下称为CAN),是国际标准化的。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986
年德国电气商公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519
进行了标准化,现在在欧洲已是汽车网络的标准协议。
现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。是当今自动化领域技术发展的热点之一,被誉为自动化领域的。它的出现为实现各之间实时、可靠的数据通信提供了强有力的技术支持。
CAN总线优势
CAN属于的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多基于R线构建的而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:
网络各节点之间的数据通信实时性强
首先,CAN工作于多种方式,网络中的各都可根据总线访问优先权(取决于)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成结构,提高和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;
缩短了开发周期
CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“”状态。而且,CAN具有的完善的可由CAN芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是仅有电气协议的RS-485所无法比拟的。
已形成国际标准的现场总线
另外,与其它比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前
CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。
最有前途的现场总线之一
CAN 即局域网络,属于工业的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如(奔驰)、(宝马)、PORSCHE(保时捷)、(劳斯莱斯)和(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的之一。其典型的应用协议有:SAE
J1939/ISO11783、CANOpen、、DeviceNet、NMEA 2000等。
产生与发展
局部网(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格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
CAN总线特点
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行,它是一种多主总线,通信介质可以是双绞线、同轴电缆或。通信速率可达1MBPS。
完成对通信数据的成帧处理
CAN总线中集成了CAN协议的和功能,可完成对通信数据的处理,包括位填充、编码、、优先级判别等项工作。
使网络内的节点个数在理论上不受限制
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,的标识码可由11位或29位二进制数组成,因此可以定义2或2个以上不同的,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在中非常有用。长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
可在各节点之间实现自由通信
CAN总线采用了多主竞争式,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任意插在PC
AT XT上,方便地构成分布式。
只有2根线与外部相连,并且内部集成了错误探测和管理模块。
传输距离和速率
CAN总线特点:(1)
数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在134μs通信;
(2) 多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞; (3)
通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M);(4)
CAN总线传输介质可以是双绞线,同轴电缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。
CAN总线技术介绍
要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。
CAN总线以为单位进行,报文的优先级结合在11位中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图2所示,当几个站同时发送时,站1的报文为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。所有都有相同的两位01,直到第3位进行比较时,站1的被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3的4、5、6位相同,直到第7位时,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的。在此例中,站2的被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权的接收站,并且不会在总线再次空闲前发送报文。
CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个中了,这可以保证在中较低的个体隐伏时间。
对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取(许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法。
CAN与其它通信方案的比较
在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站希望的传送分配(如:Ethernet
)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。
CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。
CAN的报文格式
在总线中传送的报文,每帧由7部分组成。CAN两种报文格式,其唯一的不同是(ID)长度不同,标准格式为11位,扩展格式为29位。
在标准格式中,的起始位称为帧起始(SOF),然后是由11位和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是还是请求帧,在请求帧中没有数据字节。
控制场包括扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位
(ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的(CRC)。
应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
的尾部由帧结束标出。在相邻的两条间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
CAN数据帧的组成
远程帧由6个场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧不存在数据场。
远程帧的RTR位必须是隐位。
DLC的数据值是独立的,它可以是0~8中的任何数值,为对应的数据长度。
出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是出错界定符
错误标志具有两种形式:
活动错误标志(Active error flag),由6个连续的显位组成
认可错误标志(Passive error flag),由6个连续的隐位组成
出错界定符包括8个隐位
超载帧包括两个位场:超载标志和超载界定符
发送超载帧的超载条件:
要求延迟下一个数据帧或远程帧
在间歇场检测到显位
超载标志由6个显位组成
超载界定符由8个隐位组成
数据错误检测
不同于其它总线,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协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。
硬同步和重同步
硬同步只有在总线空闲状态条件下隐形位到显性位的跳变沿发生时才进行,表明传输开始。在硬同步之后,位时间计数器随同步段重新开始计数。硬同步强行将已发生的跳变沿置于重新开始的位时间同步段内。根据同步规则,如果某一位时间内已有一个硬同步出现,该位时间内将不会发生再同步。再同步可能导致相位缓冲段1被延长或相位缓冲段2被短。这两个相位缓冲段的延长时间或缩短时间上限由再同步跳转宽度(SJW)给定。
CAN总线可靠性
为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。
残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。它描述了传送数据被破坏和这种破坏不能被出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类,并且数据传输路径可由一模型描述。如果要确定CAN的残余错误概率,我们可将残留错误的概率作为具有80~90位的传送时位错误概率的函数,并假定这个系统中有5~10个站,并且错误率为1/1000,那么最大位错误概率为10—13数量级。例如,CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均长度为
80位的系统,所传送的数据总量为9&1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10—2量级。换句话说,一个系统按每年365天,每天工作8小时,每秒错误率为0.
7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。
CAN总线在工控领域主要使用低速-容错CAN即11898-3标准,在汽车领域使用125Kbps的高速CAN。
某进口车型拥有,车身、舒适、等多个控制网络,其中车身控制使用CAN网络,舒适使用LIN网络,多媒体使用MOST网络,以CAN网为主网,控制发动机、变速箱、ABS等车身安全模块,并将转速、车速、油温等共享至全车,实现汽车智能化控制,如高速时自动锁闭车门,安全气囊弹出时,自动开启车门等功能。
CAN系统又分为高速和低速,高速CAN系统采用硬线是动力型,速度:500kbps,控制ECU、ABS等;低速CAN是舒适型,速度:125Kbps,主要控制仪表、防盗等。
某医院现有5台16T/H德国菲斯曼燃气锅炉,向洗衣房、制剂室、供应室、生活用水、暖气等设施提供5kg/cm2的蒸汽,全年耗用天然气1200万m3,耗用20万吨自来水。医院采用接力式方式供热,对热网进行地域性管理,分四大供热区。其中冬季暖气的用气量很大,据此设计了基于CAN的分布式锅炉蒸汽热网。现场应用表明:该具有抗干扰能力强,现场容易,网络化程度高,人机界面友好等特点。
CAN总线典型特征
CAN总线的优点
● 废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作;
● 采用非破坏性仲裁技术,当两个同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了;
● 采用短帧结构,每一的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短;
● 每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;
● 在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响;
● 可以,一对多及广播集中方式传送和接受数据。
● 具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
● 采用双线方式,检错能力强,可在高噪声干扰环境中工作;
● 具有优先权和仲裁功能,多个控制模块通过CAN 挂到CAN-Bus上,形成多主机局部网络;
● 可根据的ID决定接收或屏蔽该报文;
● 可靠的错误处理和检错机制;
● 发送的信息遭到破坏后,可自动重发;
● 节点在错误严重的情况下具有自动退出总线的功能;
● 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
CAN总线开发测试工具
CAN总线多用于工控和汽车领域,在CAN总线的开发测试阶段,需要对其,功能,网路整合等进行开发测试,需要虚拟、半虚拟、全实物仿真测试平台,并且必须测试各节点是否符合ISO11898中规定的错误响应机制等,所以CAN总线的开发需要专业的开发测试工具,并且在生产阶段也需要一批简单易用的生产线测试工具。CAN总线开发测试工具的主要供应商有ZLG、Passion
IXXAT、IHR、Vector、Intrepidcs、Passion
Warwick等。常用的开发测试工具如CANScope、CANalyst-II、Passiontech
DiagRA、canAnalyser、X-Analyser、AutoCAN、CANspider等。
CAN总线的通信错误及其处理
在CAN总线中存在5种错误类型,它们互相并不排斥,下面简单介绍一下它们的区别、产生的原因及处理方法。
位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平和送出的电平不同时9则在该位时刻检测到一个位错误。但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。
填充错误:在使用位填充方法进行编码的报文中,出现了第6个连续相同的位电平时,将检测出一个填充错误。
CRC错误:CRC序列是由发送器CRC计算的结果组成的。接收器以和发送器相同的方法计算CRC。如果计算的结果和接收到的CRC序列不同,则检测出一个CRC错误。
形式错误: 当固定形式的位区中出现一个或多个非法位时,则检测到一个形式错误。
应答错误:在应答间隙,发送器未检测到显性位时,则由它检测出一个应答错误。
检测到出错条件的节点通过发送错误标志进行标定。当任何节点检测出位错误、填充错误、形式错误或应答错误时,由该节点在下一位开始发送出错误标志。
当检测到CRC错误时。出错标志在应答界定符后面那一位开始发送.除非其他出错条件的错误标志已经开始发送。
在CAN总线中,任何一个单元可能处于下列3种故障状态之一:错误激活状态(ErrorActive)、错误认可状态(Error
Pasitive)和总线关闭状态(Bus off)。
错误激活单元可以照常参和总线通信,并且当检测到错误时,送出一个活动错误标志。错误认可节点可参和总线通信,但是不允许送出活动错误标志。当其检测到错误时,只能送出认可错误标志,并且发送后仍为错误认可状态,直到下一次发送初始化。总线关闭状态不允许单元对总线有任何影响。
为了界定故障,在每个总线单元中都设有2个计数:发送出错计数和接收出错计数。这些计数按照下列规则进行。
(1)接收器检查出错误时,接收器错误计数器加1,除非所有检测错误是发送活动错误标志或超载标志期间的位错误。
(2)接收器在送出错误标志后的第一位检查出显性位时,错误计数器加8。
(3)发送器送出一个错误标志时,发送器错误计数器加8。有两种情况例外:其一是如果发送器为错误认可,由于未检测到显性位应答或检测到应答错误,并且在送出其认可错误标志时,未检测到显性位;另外一种情况是如果仲裁器件产生填充错误,发送器送出一个隐性位错误标志,而检测到的是显性位。除以上两种情况外,发送器错误计数器计数不改变。
(4)发送器送出一个活动错误标志或超载标志时,检测到位错误,则发送器错误计数器加8。
(5)在送出活动镨误标志、认可错误标志或超载错误标志后,任何节点都最多允许连续7个显性位。在检测到第11个连续显性位后,或紧随认可错误标志检测到第8个连续的显性位,以及附加的8个连续的显性位的每个序列后,每个发送器的发送错误计数都加8,并且每个接收器的接收错误计数也加8。
(6)报文成功发送后,发送错误计数减1,除非计数值已经为0。
(7)报文成功发送后,如果接收错误计数处于1~197之间,则其值减1;如果接收错误计数为0,则仍保持为0;如果大于127,则将其值记为119~127之间的某个数值。
(8)当发送错误计数等于或大于128,或接收错误汁数等于或大于128时,节点进人错误认,可状态,节点送出一个活动错误标志。
(9)当发送错误计数器大于或等于256时,节点进人总线关闭状态。
(1O)当发送错误计数和接收错误计数均小于或等于127时,错误认可节点再次变为错误激活节点。
(11)在检测到总线上11个连续的隐性位发送128次后,总线关闭节点将变为2个错误计数器均为0的错误激活节点。
(12)当错误计数器数值大于96时,说明总线被严重干扰。
如果系统启动期间仅有1个节点挂在总线上,此节点发出报文后,将得不到应答,检查出错误并重复该报文,此时该节点可以变为错误认可节点,但不会因此关闭总线。[1]
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 modbus rtu 的文章

 

随机推荐