CN102739488B - 智能odn系统中基于can总线的通信方法 - Google Patents
智能odn系统中基于can总线的通信方法 Download PDFInfo
- Publication number
- CN102739488B CN102739488B CN201210197067.XA CN201210197067A CN102739488B CN 102739488 B CN102739488 B CN 102739488B CN 201210197067 A CN201210197067 A CN 201210197067A CN 102739488 B CN102739488 B CN 102739488B
- Authority
- CN
- China
- Prior art keywords
- message
- data
- field
- node
- bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种智能ODN系统中基于CAN总线的通信方法,涉及智能ODN领域,包括步骤:主控管理模块与配线控制模块作为CAN节点连接到CAN总线上,主控管理模块下发的命令通过CAN总线传到各配线控制模块;每个CAN节点分配唯一的节点标识,主控管理模块是具有最高节点标识优先级的CAN节点;在数据片前后添加传输控制信息,将数据片封装成帧发送;发送CAN报文时由于总线竞争失败的CAN节点,使用二进制指数退避算法重传;接收数据的CAN节点,从接收的CAN报文中恢复数据。本发明能有效提高CPU使用效率和通信效率,比通用串行总线系统的可靠性更高。
Description
技术领域
本发明涉及智能ODN(Optical Distribution Network,光分配网)领域,特别是涉及一种智能ODN系统中基于CAN总线的通信方法。
背景技术
在光传送网中,ODN起着关键的骨干网连接功能,在PON(Passive Optical Network,无源光网络)网络下,ODN是OLT(OpticalLine Tterminal,光线路终端)和ONU(Optical Network Unit,光网络单元)两个有源设备之间所有无源光纤、无源设备(光分路器)组成的一个网络,其作用是为OLT和ONU之间提供光传输通道。
智能ODN设备在性能与应用范围上与常规ODN设备没有差异,但在功能上增加了许多智能化的管理,新增了一些智能特性,这些智能特性主要体现在利用计算机数据库管理技术对ODN网络,特别是光配线设备进行管理的技术,它涉及ODN网络的设计、开通、维护、扩容等诸多方面,可以有效提高网络的运营质量,杜绝网络数据记录的错误,降低网络维护的难度,缩短网络故障的抢修时间。
智能ODN的主要功能包括设备管理、路由拓扑管理、线路连接关系管理,以及配线管理等。参见图1所示,主控管理模块下接有若干配线控制模块,对于采用主控管理模块与配线控制模块相分离结构的智能ODN设备,必定要解决此两者间的通信问题。主控管理模块与配线控制模块的通信方式可以使用通用的串行总线,还可以使用其它的总线,例如CAN(Controller Area Network,控制器局域网络)总线进行通信。CAN属于现场总线的范畴,是一种有效支持分布式实时控制的串行网络。CAN总线设计之初主要应用在汽车电子技术中,到上世纪九十年代,CAN总线已经在航空、工业控制、安全防护、船舶、医疗设备、工业设备等领域得到了广泛的应用,其现行标准有ISO11898、ISO11519等。
在现有的光配线系统管理方案中,通常采用通用串行总线(例如422总线、485总线)作为智能ODN设备主控管理模块与配线控制模块的通信桥梁,而一般的情况是在同一总线上挂载一个主控管理模块和多个配线控制模块。但是通用的串行总线无法解决总线竞争的问题,即在同一时刻不能有两个或两个以上的节点发送数据到总线上,否则会造成接收数据出现乱码的情况,因而必须采用一定方法来调度实现在任一时刻最多有一个节点使用总线发送数据,这样就会使得通信的方案变得复杂而且通信效率又非常低下。另外,当有任一节点使用总线发送数据时,总线上的其它节点都会收到数据,这样就会使得原本负荷较重的处理器变得更加繁忙,降低了处理器的利用率。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种智能ODN系统中基于CAN总线的通信方法,能有效提高CPU的使用效率和通信效率,比基于通用串行总线的系统可靠性更高。
本发明提供的智能ODN系统中基于CAN总线的通信方法,包括以下步骤:A、智能ODN系统的主控管理模块与配线控制模块作为CAN节点连接到CAN总线上,主控管理模块下发的命令通过CAN总线传输到各个配线控制模块;给每个CAN节点分配唯一的节点标识,主控管理模块是具有最高节点标识优先级的CAN节点,其发送的CAN报文的节点标识字段是自身节点标识与目的节点标识的或值,其它节点直接将节点标识填充到发送CAN报文的节点标识字段;B、在数据片前后添加传输控制信息,将数据片封装成帧,然后发送成帧的数据片;C、对于发送CAN报文时由于总线竞争失败的CAN节点,使用“二进制指数退避算法”进行重传;D、接收数据的CAN节点,从接收到的CAN报文中恢复数据。
在上述技术方案中,所述目的节点标识为全0表示发送到所有CAN节点。
在上述技术方案中,步骤B中所述传输控制信息包括开始标志字段、数据长度字段、目的节点标识字段、结束标志字段和CRC校字段。
在上述技术方案中,步骤B中在数据片前添加开始标志字段、数据长度字段和目的节点标识字段,在数据片后添加结束标志字段和CRC校验字段。
在上述技术方案中,步骤B中成帧后的数据按8个字节对应一个CAN报文进行拆分,最后剩余的少于或等于8个字节的数据占用一个CAN报文。
在上述技术方案中,步骤C中“二进制指数退避算法”的基本退避时间2T为发送两个CAN报文所需要的时长。
在上述技术方案中,所述“二进制指数退避算法”的基本退避时间2T的计算公式为:2T=108×2÷波特率。
在上述技术方案中,步骤D包括以下步骤:在接收到的CAN报文中查找开始标志字段,如果没有找到,则丢弃该CAN报文,继续在下一个CAN报文中查找开始标志字段,直到遇到有符合要求的CAN报文出现;如果找到开始标志字段,则记该CAN报文为Report-1,从符合要求的CAN报文提取数据长度字段,再根据该字段计算该数据片总共分成的CAN报文数N,N为正整数;接下来收到的CAN报文记为Report-2、Report-3……Report-N,检查接收的CAN报文数量,直到达到接收到恢复该数据片所需的N个CAN报文;在收到的最后两个CAN报文中提取出的结束标志字段不符合格式要求或CRC字段计算有错时,丢弃该CAN报文Report-1,并继续在Report-2、Report-3……Report-N中查找开始标志字段,重复前面的步骤,直到找到有符合要求的情况出现;在最后两个CAN报文中提取出的结束标志字段和CRC字段无误时,将这N个CAN报文中的数据部分提取出来,恢复成成帧后的数据片;对比提取出目的节点标识与自身的节点标识是否相等,若不相等,则丢弃该N个CAN报文;若相等,则去掉传输控制信息,然后把数据交予上层处理;数据帧接收完成。
与现有技术相比,本发明的优点如下:
(1)由于CAN是支持总线竞争的,当同一时刻有两个或两个以上的节点需要使用总线发送数据时,总线竞争失败的节点会自动退出数据发送,因此不需要使用另外的调度方案,限制同一时刻在总线只有一个节点往总线上发送数据,接收的数据也不会出现乱码的情况,总线竞争失败的节点通过运行“二进制指数退避算法”重新发送数据。
(2)CAN总线控制器是支持接收屏蔽的,通过配置验收代码、验收屏蔽寄存器,可以选择性的接收来自某些CAN节点的数据,能有效提高CPU的使用效率。
(3)CAN的总线通信波特率可以达到1Mbps,大大高于通用串行总线的通信速率,能有效提高通信效率。
(4)CAN总线具有出错报警中断、溢出中断机制,比通用串行总线的系统有更高的可靠性。
附图说明
图1是主控管理模块与各个配线控制模块的连接示意图。
图2是本发明实施例中主控管理模块与各个配线控制模块通过CAN总线通信的连接示意图。
图3是本发明实施例中将CAN总线收到的报文重新组装成数据片的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明实施例通过CAN总线来实现智能ODN设备的主控管理模块与配线控制模块之间的通信。本发明实施例提供的智能ODN系统中基于CAN总线的通信方法,包括以下步骤:
A、通信连接与节点标识:
参见图2所示,主控管理模块与配线控制模块作为CAN节点连接到CAN总线上,主控管理模块下发的命令通过CAN总线传输到各个配线控制模块。每一个CAN节点分配有一个唯一的节点标识,主控管理模块是具有最高优先级的CAN节点,其发送的CAN报文的节点标识字段是自身节点标识与目的节点标识的或值,其它节点直接将节点标识填充到发送CAN报文的节点标识字段。目的节点标识为全0表示发送到所有CAN节点,此时当主控管理模块发送的CAN报文的节点标识字段填充的是自身节点标识,其下发的命令能以最短的时间占用CAN总线传输到各个配线控制模块。CAN总线上总共可挂载110个节点,各个配线控制模块除了可以跟主控管理模块通信外,他们相互之间也可以进行通信,数据最大通信速率为1Mbps。
B、数据片成帧和发送:
由于单个CAN报文最多只能携带8字节的数据,但通常需要传输的数据片长度大于8个字节,所以要通过多个CAN报文完成整个数据片的传输。但是如果将数据片直接分成8个字节一份,然后放到CAN报文中传输,接收方将不知道数据片从哪一个CAN报文开始、到哪一个CAN报文结束、以及数据片的字节长度,所以需要在数据片前添加开始标志字段与数据长度字段,在数据片后添加结束标字段和CRC(Cyclic Redundancy Check,循环冗余校验)校验字段等传输控制信息。另外,由于CAN报文是所带的节点标识只能标识出该报文来自于哪个节点,而缺少目的节点标识信息,所以还需要在传输控制信息中添加目的节点标识字段。传输控制信息的格式参见表1所示,其中CRC字段指的是其前面所有数据的循环校验码。添加传输控制信息的过程就是将数据片封装成帧,然后发送成帧的数据片。
表1、传输控制信息的格式
开始标识字段 |
长度字段 |
目的节点标识 |
数据 |
结束标志 |
CRC校验码 |
成帧后的数据按8个字节对应一个CAN报文进行拆分,最后剩余的少于或等于8个字节的数据占用一个CAN报文。CAN报文的使用标准帧格式参见表2所示,其中识别符占11位,用于做CAN节点标识。
表2、CAN报文的使用标准帧格式
帧起始位 |
识别符(节点标识) |
RTR |
IDE |
r0保留位 |
DLC值段 |
数据段 |
CRC校验码 |
CRC界定符 |
ACK |
结尾标志序列 |
C、总线竞争失败时的退避:
对于发送CAN报文时由于总线竞争失败的CAN节点,使用“二进制指数退避算法”进行重传,以保证系统数据传输的可靠性。“二进制指数退避算法”思想如下:
(1)确定基本退避时间,一般定为2T,也就是一个争用期时间。
(2)定义一个参数K为重传次数,K=min[重传次数,10]。
(3)从离散型整数集合[0,1,2,……,2k-1]中,随机取出一个数记为R,那么重传所需要的退避时间为的R倍基本时间:R×2T。
(4)同时,重传也不是无休止的进行,当重传16次不成功时,就丢弃该帧,传输失败,报告给上层协议。
由于大部分的成帧后的数据大小不超过16字节,可以在通过两个CAN报文发送完成,故“二进制指数退避算法”的基本退避时间2T确定为发送两个CAN报文所需要的时长,计算公式为:
2T=108×2÷波特率。
D、数据片接收:
参见图3所示,接收数据的CAN节点,从接收到的CAN报中重新恢复数据的流程如下:
步骤S1、接收数据。
步骤S2、在接收到的CAN报文中查找开始标志字段,如果没有找到,则转到步骤S3;如果找到开始标志字段,则转到步骤S4。
步骤S3、丢弃该CAN报文,继续在下一个CAN报文中查找开始标志字段,返回步骤S2,直到遇到有符合要求的CAN报文出现。
步骤S4、记该CAN报文为Report-1,从符合要求的CAN报文提取数据长度字段,再根据该字段计算该数据片总共分成的CAN报文数N,N为正整数。
步骤S5、接下来收到的CAN报文记为Report-2、Report-3……Report-N,判断接收的CAN报文数量是否达到所需的N个,如果没有达到N个,继续判断,直到收到恢复该数据片所需的N个CAN报文,再转到步骤S6。
步骤S6、判断在最后两个CAN报文中提取出的结束标志字段和CRC字段是否无误,若无误,则转到步骤S8;若有误,则转到步骤S7。
步骤S7、若在收到的最后两个CAN报文中提取出的结束标志字段不符合格式要求或CRC字段计算有错,则丢弃该CAN报文Report-1,并继续在Report-2、Report-3……Report-N中查找开始标志字段,重复步骤S2~S6,直到找到有符合要求的情况出现。
步骤S8、将这N个CAN报文中的数据部分提取出来,恢复成成帧后的数据片。
步骤S9、对比提取出目的节点标识与自身的节点标识是否相等,若相等,则转到步骤S11;若不相等,则转到步骤S10。
步骤S10、若不相等,则丢弃该N个CAN报文,再转到步骤S12。
步骤S11、若相等,则去掉传输控制信息,包括开始标志字段、数据长度字段、结束标志字段和CRC校验码,然后把数据交予上层处理。
步骤S12、数据帧接收完成。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明包含这些改动和变型在内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (7)
1.一种智能ODN系统中基于CAN总线的通信方法,其特征在于包括以下步骤:
A、智能ODN系统的主控管理模块与配线控制模块作为CAN节点连接到CAN总线上,主控管理模块下发的命令通过CAN总线传输到各个配线控制模块;给每个CAN节点分配唯一的节点标识,主控管理模块是具有最高节点标识优先级的CAN节点,其发送的CAN报文的节点标识字段是自身节点标识与目的节点标识的或值,其它节点直接将节点标识填充到发送CAN报文的节点标识字段;
B、在数据片前后添加传输控制信息,将数据片封装成帧,然后发送成帧的数据片;
C、对于发送CAN报文时由于总线竞争失败的CAN节点,使用“二进制指数退避算法”进行重传;
D、接收数据的CAN节点,从接收到的CAN报文中恢复数据:在接收到的CAN报文中查找开始标志字段,如果没有找到,则丢弃该CAN报文,继续在下一个CAN报文中查找开始标志字段,直到遇到有符合要求的CAN报文出现;如果找到开始标志字段,则记该CAN报文为Report-1,从符合要求的CAN报文提取数据长度字段,再根据该字段计算该数据片总共分成的CAN报文数N,N为正整数;接下来收到的CAN报文记为Report-2、Report-3……Report-N,检查接收的CAN报文数量,直到达到接收到恢复该数据片所需的N个CAN报文;在收到的最后两个CAN报文中提取出的结束标志字段不符合格式要求或CRC字段计算有错时,丢弃该CAN报文Report-1,并继续在Report-2、Report-3……Report-N中查找开始标志字段,重复前面的步骤,直到找到有符合要求的情况出现;在最后两个CAN报文中提取出的结束标志字段和CRC字段无误时,将这N个CAN报文中的数据部分提取出来,恢复成成帧后的数据片;对比提取出目的节点标识与自身的节点标识是否相等,若不相等,则丢弃该N个CAN报文;若相等,则去掉传输控制信息,然后把数据交予上层处理;数据帧接收完成。
2.如权利要求1所述的智能ODN系统中基于CAN总线的通信方法,其特征在于:步骤A中所述目的节点标识为全0表示发送到所有CAN节点。
3.如权利要求1所述的智能ODN系统中基于CAN总线的通信方法,其特征在于:步骤B中所述传输控制信息包括开始标志字段、数据长度字段、目的节点标识字段、结束标志字段和CRC校字段。
4.如权利要求3所述的智能ODN系统中基于CAN总线的通信方法,其特征在于:步骤B中在数据片前添加开始标志字段、数据长度字段和目的节点标识字段,在数据片后添加结束标志字段和CRC校验字段。
5.如权利要求1所述的智能ODN系统中基于CAN总线的通信方法,其特征在于:步骤B中成帧后的数据按8个字节对应一个CAN报文进行拆分,最后剩余的少于或等于8个字节的数据占用一个CAN报文。
6.如权利要求1所述的智能ODN系统中基于CAN总线的通信方法,其特征在于:步骤C中“二进制指数退避算法”的基本退避时间2T为发送两个CAN报文所需要的时长。
7.如权利要求6所述的智能ODN系统中基于CAN总线的通信方法,其特征在于:所述“二进制指数退避算法”的基本退避时间2T的计算公式为:2T=108×2÷波特率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210197067.XA CN102739488B (zh) | 2012-06-15 | 2012-06-15 | 智能odn系统中基于can总线的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210197067.XA CN102739488B (zh) | 2012-06-15 | 2012-06-15 | 智能odn系统中基于can总线的通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102739488A CN102739488A (zh) | 2012-10-17 |
CN102739488B true CN102739488B (zh) | 2014-12-31 |
Family
ID=46994312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210197067.XA Active CN102739488B (zh) | 2012-06-15 | 2012-06-15 | 智能odn系统中基于can总线的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102739488B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414624A (zh) * | 2013-07-29 | 2013-11-27 | 北京汇能精电科技有限公司 | 一种can总线主从应答模式协议的网络调度算法 |
CN104393966B (zh) * | 2014-10-10 | 2017-12-12 | 宁波三星智能电气有限公司 | 一种can总线通信方法 |
CN105577415B (zh) * | 2014-10-17 | 2020-02-14 | 中兴通讯股份有限公司 | 智能光分配网络设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201160A (zh) * | 2011-04-21 | 2011-09-28 | 河南电力试验研究院 | 一种新型用电信息采集系统 |
CN102255800A (zh) * | 2011-06-24 | 2011-11-23 | 中国人民解放军国防科学技术大学 | Can总线上ip数据包和can消息之间数据格式相互转换的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8253585B2 (en) * | 2009-11-19 | 2012-08-28 | Emilio Hidalgo Rodrigo | Three-phase multifunction verifier |
-
2012
- 2012-06-15 CN CN201210197067.XA patent/CN102739488B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201160A (zh) * | 2011-04-21 | 2011-09-28 | 河南电力试验研究院 | 一种新型用电信息采集系统 |
CN102255800A (zh) * | 2011-06-24 | 2011-11-23 | 中国人民解放军国防科学技术大学 | Can总线上ip数据包和can消息之间数据格式相互转换的方法 |
Non-Patent Citations (2)
Title |
---|
基于嵌入式Linux的RS485通信协议;闫成华等;《计算机工程》;20080630;第34卷(第11期);第278-279页以及图2 * |
王晓兰等.基于CAN/RS485双层网络的远程抄表系统设计.《微计算机信息(嵌入式与SOC)》.2006,第22卷(第6-2期),第113-115页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102739488A (zh) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103490966B (zh) | 一种双冗余can总线数据接收处理方法 | |
CN101943898B (zh) | 车列实时控制系统 | |
CN1996925A (zh) | 链路聚合方法、装置、mac帧收发方法和系统 | |
CN106776436A (zh) | 一种适用于多点互联的高速串行总线结构及其通信方法 | |
CN101814953B (zh) | 一种实现传输设备自动保护倒换的方法和系统 | |
CN102984059A (zh) | 千兆以太网冗余网卡及其链路切换条件判定结果控制方法 | |
CN103152260A (zh) | 报文转发系统、方法及装置 | |
CN102739488B (zh) | 智能odn系统中基于can总线的通信方法 | |
CN102082773B (zh) | 一种基于反应堆保护系统列间安全通讯网络协议的通信方法 | |
CN104092515B (zh) | 兼容can2.0b协议的can总线通信方法 | |
CN109932966B (zh) | 一种基于m-lvds总线实时高效数据传输方法 | |
CN103067238A (zh) | 一种兼容于modbus总线的数据采集方法 | |
CN109413094A (zh) | 基于hs-adix网络的航天数据传输系统 | |
CN102025540A (zh) | 一种epon网元设备的拓扑结构及配置方法 | |
CN102098196A (zh) | 刀片服务器的数据传输方法 | |
CN102065344A (zh) | 数据传输方法及吉比特无源光网络系统 | |
CN103532740A (zh) | 实现远程管理的方法、系统及gcc开销处理方法、装置 | |
CN102868557B (zh) | 一种网管和xPON设备之间的配置同步实现方法 | |
CN102006223B (zh) | 卡间数据传输方法、装置及系统、板卡和分布式系统 | |
CN103716293A (zh) | 采用时标同步冲突检测方法的低压电力线扩频通信协议 | |
CN102868945B (zh) | 一种epon中onu的升级方法 | |
CN104378303A (zh) | 转发组播业务的方法和系统、onu和olt | |
CN106789520A (zh) | 一种高速故障安全多节点通信网络 | |
EP0093578B1 (en) | Communications system | |
CN102420734A (zh) | 一种can总线拓扑结构实现系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |