can总线最高波特率中有设备节点波特率不一致会导致网络问题吗?

一种基于CAN总线的通信系统设计与实现
要: 本文设计了应用于分布式控制结构的CAN总线通信系统,采用总线型拓扑结构以及分布式控制
思想,在CAN控制器的链路层网络协议基础上,设计了应用层协议和传输层协议,实现批量数据透明块传
输及自动错误重传,提高了数据通信的可靠性。系统已应用于微量元素检测仪器开发,运行结果表明,该
通信系统工作稳定、实时性好、执行效率高。
关键词:CAN总线;总线型拓扑结构;应用层协议
控制器局域网(CAN:Controller Area Network)总线,是德国BOSCH公司首先应用于
汽车内部的一种串行数据通信协议,是一种多主总线,通信介质可以是双绞线、同轴电缆或
[1]光导纤维,通信速率可达1Mbps,由于结构简单、通信质量好,在国内外已经得到较广泛
的应用,已成为工业采集领域中首选的现场总线之一。
从OSI网络模型角度出发,现场总线网络一般只实现了第1层(物理层)、第2层(数
据链路层)、第7层(应用层)。而CAN现场总线仅仅定义了第1层、第2层,这两层完全
由硬件实现,无需再为此开发相应软件或固件。由此,为网络中每一个有效设备提供一组有
用的服务与协议,CAN应用层设计至关重要,甚至影响整个CAN通信效率的高低。在CAN
应用层设计中,CANopen协议是一个通用的、开放的、标准的CAN应用层协议。在CANopen
协议基础上,确定自己的产品所需要的功能,然后选择最适合自己的硬件系统。开发周期相
[2]对较长,后期验证也需要较长的时间,对协议的不同理解造成的开发的兼容性差。鉴于本
分析仪器硬件特点以及各模块通信的易可行性,CANopen协议相对复杂,为此设计了专门
用于本仪器系统的专用CAN应用层协议。
本文设计系统采用单主方式工作,PC机作为主控,其它五个模块为从节点,主控和从
节点之间通过USB-CAN板卡实现通信。从节点采用Cortex-M4为内核的STM32F407VGT6
作为主控制器,其内置CAN总线控制器,使得该节点体积小、功耗低、抗干扰性能好。
系统总体设计方案
该分析仪器基于分布式测量控制的思想,按照仪器各模块功能和物理位置将功能分散到主控
及五个从模块。整体系统的功能由这六个子模块协同完成,这些模块均挂接在CAN通信总
线上,从模块通过USB-CAN板卡作为桥梁与主控通信,通过Can控制网络连接起来构
成一个分布式处理仪器系统。
主控通过USB-CAN板卡作为桥梁与从模块进行通信。各个从模块之间也需要通信,由
于某些命令需要某两个模块同步协调完成,除了CAN信号线外,还需要在某些从模块之间
添加几根同步信号线,用来进行时间同步指示和数据的传送。图示系统网络总体结构。 主控
USB-CAN板卡
ID:1SYNC_1SYNC_2模块2
ID:2模块3ID:3SYNC_1SYNC_2模块4
ID:4模块5ID:5
图1 系统网络总体结构
Fig.1 System Network Architecture
网络拓扑结构
网络的拓扑结构是指网络中节点的互连形式,是影响网络性能的主要因素。最常用的
CAN网络拓扑结构是总线型拓扑与星型拓扑。
星型结构中,网络中的每一个节点通过一个中央设备连接在一起,各节点将数据发送到
中央设备,再由中央设备将数据转发到目标节点。星型网络中任何单根电缆只连接两个设备
(如一个节点和一个集线器),各节点相互独立。
在星型网络中,中央设备故障会导致整个网络的瘫痪。另外,星型结构所需的线缆和配
[3]置明显多于总线型网络,但其总长度与总线型网络一样受波特率、节点数量等因素制约。
在本分析仪器系统中,各节点之间都存在通信的可能,与星型网络的节点独立性原则相
违背。总线型网络相对于星型网络,网络布线更简单,工作量更少。因此,本系统采用总线
型网络拓扑结构设计,也可采用优化的总线型结构――菊花链型网络。
本系统CAN-bus网络采用总线拓扑结构,在网络中有六个CAN-bus节点。在总线的两
个终端各安装一个120欧姆终端电阻。在同一CAN-bus通信网络中所有CAN节点的通信波
特率必须一致,同时计算得出的CAN通信波特率也仅是适合一个具体数值范围内的通信波
特率,即意味着标称通信速率为100kbps的CAN节点一般能够与通信速率为90kbps~
110kbps的CAN节点正常通信。在该网络中,CAN总线使用速率1Mbps,在实际连接时,
使用屏蔽双绞线,且要求网络中的分支线小于3m,最大干线长度小于40m。
图2中示出CAN收发器是驱动CAN控制器和物理总线间的接口,总线的差动发送能
力和对CAN控制器的差动接收能力都由其提供,具有抗恶劣环境的瞬间干扰、保护总线的
能力,而且即使在某一节点掉电也不会影响总线。 ARM控制器TXD
收发器CAN_HCAN物理总线CAN
控制器RXDCAN_L
图2 ARM与CAN总线连接图
Fig.2 ARM and CAN-bus Connection Diagram
CAN-bus信号采用查分传输方式,当总线上有“0”信号时,CAN_L和CAN_H之间
电压差大于最小值的差分电压,称“显性”;当总线上有“1”信号时,CAN_H和CAN_L
[4]电压被固定在平均电压附近,电压差近似为0,称“隐形”。
CAN_H端的状态只能是高电平或者悬浮状态,CAN_L端的状态只能是低电平或者悬
浮状态,这就保证不会出现如RS-485网络中常有的现象:当因系统错误而出现多节点同时
向总线发送数据时,导致总线出现短路,从而损坏某节点。CAN节点在错误严重的情况下
具有自动关闭输出的功能,从而使总线上其他节点不受影响,以此确保在网络中不会出现因
个别节点出现问题而使总线“死锁”的状态。
通信协议概述
相对于复杂的CANopen协议,本系统应用层协议结构简单,报文分段清晰,用尽可
能少的报文信息表达每个节点设备所有必需的通信信息,减少了实现的工作量。
本系统中用户通信作为一种高层通信协议,本文以下简称用户层。
用户层使用CAN总线的具有29位标识符的扩展帧格式,且只使用CAN总线中的数据
帧类型(没有使用远程帧);总线通信模型采用单主结构,即主控为主节点,其它节点为从
节点;通信方法包括主从命令/响应方式和从站事件触发方式两种;用户层定义了用户层数
据帧,该数据帧数据部分的长度可达512字节,完全符合该分析仪器的通信需求,在进行数
据帧收发时需要拆封和封装成CAN总线的扩展数据帧格式。
设备节点编址
系统中每个总线节点均有一个ID编号,用于CAN总线网络节点寻址。如图1所示,
主控ID编号为0,模块1~模块5的ID编号分别为1~5,编址ID使用4个二进制位,ID
编号6~14保留使用,ID编号15(即0xF)为广播地址。
通信中每帧数据需要源节点ID和目的节点ID,以完成网络数据交换的寻址实现。源
节点ID和目的节点ID需要使用1个字节,使用29位标识符的头8位。
协议报文格式
这部分包括用户协议报文格式和用户定义CAN协议报文格式,用户协议报文在发送前
需要重新封装为用户定义CAN协议报文格式,CAN总线上收到的用户定义CAN协议报文,
需要解封并重新封装为用户协议报文。
(1) 用户协议报文格式
用户协议报文格式
其中SrcID为发送数据帧设备的ID编号,DestID为接收数据帧设备的ID编号(注:
SrcID地址不能是广播地址0xF)。
FuncID(功能码)使用了8位,具体定义了系统中数据和命令交换或传递的种类,具
体种类和细节涉及到整个系统的功能实现,且这些功能码没有考虑到通用性,仅对本系统进
行优化设计。
Type(2位)和subType(3位)表示数据帧的类型,具体含义见表2:
数据帧类型字段说明
用户定义Can协议报文格式
User-defined Can Protocol Packet Format
其中,SegPolo和SegNum用于对用户协议报文分段处理,SegPolo表示分段标志,SegNum表示分段编号,其含义如表4所示:
SegPolo和SegNum说明如何解决总线通讯数据冲突的问题
> 如何解决总线通讯数据冲突的问题
如何解决总线通讯数据冲突的问题
  现场总线作为工业自动化系统中最后一段通讯的桥梁,越来越多的传感器和执行机构都集成了总线之类的通讯接口,但其固化的几个通讯数据格式,面对当前众多复杂的大系统,时常会给设计者带来底层数据冲突的困扰,如何完美解决这一难题,至关重要。本文引用地址:
  一、问题描述
  大家都知道,一个网络中不同节点发出的报文的ID也应是不同的,否则当ID冲突的两个节点同时上传数据时会产生错误。但是我们时常会发现某些接口的传感器或者控制器的报文ID是固定的,不具备硬件地址区分。以下图为例,某电机控制器有三条标准帧功能报文,ID分别为0x2、0x0003。那么如何在同一个CAN网络中使用多个同样的电机控制器既可以防止ID冲突又可以识别硬件地址呢?
  图 1 相同CANID设备组网
  二、解决方案
  针对这一问题,可以将致远电子的CAN网桥CANbridge+加装在各个设备与总线之间,利用其ID映射功能,将每台设备的功能ID映射为一个带地址字段的新ID。这样既可以防止设备上传的报文产生ID冲突错误,又可以通过添加的地址字段区分不同的设备。如下图所示,将标准帧ID的高8位定义为地址字段,这样就可以通过ID区分不同设备的上行下行报文。
  图 2 使用CAN网桥实现相同CANID设备组网
  三、设置流程
  1、 波特率设置
  使用通讯线连接CANbridge+和PC机,打开CANCfg软件,在基本信息选项卡里点击CAN1、CAN2波特率的下拉菜单,均选择所接CAN设备的对应波特率。
  图 3 CANbridge+的波特率设置
  2、 帧映射设置
  在帧映射选项卡里点击使能帧映射,假定网桥的CAN1端口连接CAN设备,网桥的CAN2端口连接CAN网络。添加如下图所示的映射关系,即可将1号设备的所有功能ID关联上硬件地址。同样对其他设备连接的CAN网桥做类似的设置,即可实现相同CANID设备的组网。
  图 4 CANbridge+的帧映射设置
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一查看: 890|回复: 6
最后登录在线时间15 小时听众数注册时间阅读权限10帖子精华0UID526277积分52
UID526277积分34 威望10 贡献0
& && &&&我想咨询一下,利用OMRON的 RS485模块接口能否与CAN 总线设备进行通讯?能读取CAN总线设备的 数据和写入数据吗? CAN 设备的波特率为19.2Kpbs 、12Mpbs,请问用自由协议能与这个CAN 协议设备通讯吗?谢谢!
最后登录在线时间325 小时听众数注册时间阅读权限200帖子精华5UID106779积分1489
UID106779积分1489 威望34 贡献0
你好,欧姆龙没有CAN 通讯模块。& &你可以把对方的CAN 转换成485. 有这样的模块购买。
最后登录在线时间15 小时听众数注册时间阅读权限10帖子精华0UID526277积分52
UID526277积分34 威望10 贡献0
jc_tang 发表于
你好,欧姆龙没有CAN 通讯模块。& &你可以把对方的CAN 转换成485. 有这样的模块购买。 ...
那我现在的情况是 不知道CAN 设备的任何 信息.&&也就是说我不知道他的can 地址& &地表的 什么含义. 我只有 CAN设备厂家提供过来的 (CAN 转MODBUS&&)和 (CAN转profibus&&)模块的&&经过转换之后的&&通讯地址含义,而且这个转换后的接口多是RS485接口,&&而且这两款转换模块也都是原厂家自己的产品,&&试问:我如果从市面上购买一个 CAN 转485 模块.那转换后的地址能跟他们自己准换过来的地址一样吗?&&很是疑惑!
最后登录在线时间325 小时听众数注册时间阅读权限200帖子精华5UID106779积分1489
UID106779积分1489 威望34 贡献0
(CAN 转MODBUS&&)和 (CAN转profibus&&)模块的&&是符合RS495物理接口传输的。& & 不需要再重新购买了。直接走MODBUS 协议即可。&&地址需要对照说明书查看的。 不能凭空想象的。一定会有对照地址的。
最后登录在线时间15 小时听众数注册时间阅读权限10帖子精华0UID526277积分52
UID526277积分34 威望10 贡献0
jc_tang 发表于
(CAN 转MODBUS&&)和 (CAN转profibus&&)模块的&&是符合RS495物理接口传输的。& & 不需要再重新购买了。直接 ...
我说的这两个模块是 阿特拉斯自己的模块.&&我是想自己购买其他品牌的CAN 转换模块儿,, 然后按照他们提供的转换以后的地址&&去写PLC 通讯 这样能行吗?& & 每个厂家跟每个厂家转换的过程都一样吗?& & 我担心的是CAN 转 MODBUS或PROFIBUS 的过程不一样,,,,因此我如果还按照阿特拉斯提供过来的转换后的地址格式.恐怕会有问题吧?
最后登录在线时间325 小时听众数注册时间阅读权限200帖子精华5UID106779积分1489
UID106779积分1489 威望34 贡献0
你在外面买的转换模块,这个转换模块只能转换接口电路,并不能转换协议的。 要转换协议,必须还是厂家自己提供为好。
最后登录在线时间15 小时听众数注册时间阅读权限10帖子精华0UID526277积分52
UID526277积分34 威望10 贡献0
jc_tang 发表于
你在外面买的转换模块,这个转换模块只能转换接口电路,并不能转换协议的。 要转换协议,必须还是厂家自己 ...
不是的. 就是协议转换!&&如附件!& &是不是任何厂家的转换模块 只要是CAN转换为PROFIBUS 之后的格式都遵循 同样的格式呢?
22:52 上传
点击文件名下载附件
下载积分: 积分 -5
113.01 KB, 下载次数: 6, 下载积分: 积分 -5
阿特拉斯CAN转PROFIBUS后的通讯格式
22:48 上传
点击文件名下载附件
下载积分: 积分 -5
686.26 KB, 下载次数: 10, 下载积分: 积分 -5
另外一款其他品牌CAN转PROFIBUS后的通讯格式
技成讲师勋章
工控人(男)
工控高富帅(男)
官方微信服务号
官方微信订阅号
&深圳技成科技有限公司 - 课程内容版权均归技成培训网所有广东省 深圳市 专业技术人员继续教育网络学习平台联合运营单位:深圳市工程师联合会
Powered by Discuz! X2.5

我要回帖

更多关于 can总线波特率 的文章

 

随机推荐