CAN总线基础与模拟软件.ppt
- 文档编号:1364142
- 上传时间:2022-10-21
- 格式:PPT
- 页数:16
- 大小:857.50KB
CAN总线基础与模拟软件.ppt
《CAN总线基础与模拟软件.ppt》由会员分享,可在线阅读,更多相关《CAN总线基础与模拟软件.ppt(16页珍藏版)》请在冰豆网上搜索。
CAN总线基础与模拟软件,传输机构,执行机构,检测机构,CANBUS,计算机,其他网络,要关注的问题1,这个总线是怎么工作的?
它们共用一条通信线路。
.2,它们传送的数据是什么样的?
帧格式3,它们共用一条通信线路,竞争怎么办?
优先、仲裁,谁最优先4,总线上传送的信息很多,某个控制器怎么接收自己需要的数据?
接收,过滤5,还要注意CAN总线通信速率的问题,CAN总线的基本问题,CAN模拟软件运行的环境,基础学习可以借肋一下模拟软件,在自己的计算机上不需要CAN的相关硬件设备,可以模拟出CAN总线的一些特性,有助于理解CAN的一些基本概念。
第1个问题,CAN总线传输的数据认识标准数据帧,CAN四种帧类型:
数据帧、远程帧、错误帧、超载帧;数据帧是实际中经常使用的。
标准数据帧:
扩展数据帧:
数据帖主要有2种:
标准帧和扩展帧(它们主要区别是ID号长度不同;IDE位不同标准帧IDE=0显性电平,扩展帧IDE=1隐性电平。
)使用过程中要注意的有:
ID,DLC,08bytes数据,IDE,第2个问题,CAN总线优先级问题逐位仲裁机制,CAN总线上的设备(节点)是检测到总线空闲才发送的,节点每次发送的数据都很短,在极短的时间就能发送完成,这样数据不会碰撞,但当总线发送数据量很大的情况下,难免会有两个设备同时发送的情况。
就靠ID的大小来解决。
NodeB:
00011101101(0xED)VSNodeA:
00011101111(0xEF),举例说明两个ID同时发送,逐位仲裁的方法,得出的结论,ID号小的能获得较高的优先级。
通过这样做,既照顾了数据优先性,碰撞的概率也降到极低的程度,第3个问题,CAN总线上节点对数据的选择接收过滤机制,过滤机制是靠设置接收的ID和屏蔽位共同完成的。
1.默认情况下,总线上的节点接收所有的数据。
2.只接收某一个ID号的数据帧的情况是这样实现的:
设定要接收的ID号到节点的CAN控制器中,并且把相应的屏蔽位全设置为1.例如:
要接收ID号为0x317的标准数据帧:
对于标准帧,ID和MSK都是11位的,一个ID的bit就对应一个屏蔽的bit,屏蔽的某位为1就说明接收到的ID的那一位必须与设定ID那一位相同,如果不相同就不接收;而屏蔽位为0接收的ID那一位可以是(0或1),第3个问题,CAN总线上节点对数据的选择接收过滤机制,2.接收一部分ID号的实现:
例如:
要接ID号为0x310到0x317标准数据帧。
01100010000b-0x31001100010001b-0x31101100010010b-0x31201100010011b-0x31301100010100b-0x31401100010101b-0x31501100010110b-0x31601100010110b-0x317,111111111000b屏蔽位,第3个问题,CAN总线上节点对数据的选择接收过滤机制,一个实际的例子,配料系统(简装版),工作过程:
1,监控计算机确定哪些配料控制器进行配料任务,发选中消息给主控制器,主控制器发送一条选中信息给所有的配料控制器,告知配料控制器哪些进行配料工作。
2,主控制器按一定顺序发送启动信息,让配料控制器启动,配料控制器启动后发送一条启动成功的应答消息。
3,配料控制器启动后开始称量物料,把物料的流量值周期性的发送给监控机。
4,如果某个配料控制器出现故障,要发送报警信息。
5,当系统要停止时,主控制器发送停止命令,让配料控制器停止工作,并应答。
一个实际的例子,配料系统CAN通信设计,先对所有收发信息进行统计:
这里介绍主控制器的信息和配料控制器的信息,主控制器传送的信息有:
发送:
a.配料控制器选中信息,所有控制器都接收,优先级较低b.配料控制器启动/停止信息,针对某控制器来控制启动停止,优先级一般接收:
a.各个配料控制器发送的报警信息,要能区分出是哪个控制器发的,优先级较高b.各个配料控制器的启动/停止应答信息,能区分出是哪个控制器,优先级一般,配料控制器传送的信息有:
发送:
a.发送实时称量的信息,各个控制器要有区分,优先级一般b.各个配料控制器发送的报警信息,要能区分出是哪个控制发的,优先级较高c.各个配料控制器发送启动停止应答信息,能区分出是哪个控制器发的,优先级一般接收:
a.配料控制器选中信息,所有控制器都接收,优先级较低b.主控制器发出来的启动/停止信息,针对不同控制器,优先级一般,一个实际的例子,配料系统CAN通信设计,ID设计,在进行CAN总线通信的设计时,要注意:
1,要能区分出各种不同的信息,用ID号来标识。
2,要区分出各种不同信息的优先级,比如发生了报警,优先级要高。
3,要区分出信息是要大家都接收的还是只针对某一个控制器的。
(接收过滤)比如有8个配料控制器,采用标准帧进行设计,问题可以如下解决:
最前2bit设为优先级00最高01一般10较低11最低,最后4bit设为控制器号1111=15为主控制器00011000,18#0000相当于所有控制器(用于区分不同控制器),中间5bit可以代表各种消息00001配料控制器发送的报警00010主控制器发送的启动/停止信息00011配料控制器发送的流量信息00100配料控制器发送的启/停应答00101主控制器发送的选中信息,11bitID的使用,例如1#配料控制器发送的报警信息00000010001=0x112#控制器发送的流量值信息01000110010=0x232主控制器发送给2#的启/停信息01000100010=0x222,一个实际的例子,配料系统CAN通信设计,数据设计,细心的同学发现,我们上面设计的ID有的是主控制器发送给2#配料控制器的启/停信息,一个ID只能代表一个意思?
那是让2#启动还是停止呢?
别忘了,我们还除了ID可用外还有08bytes的数据区可以用,它可以装我们要发送的数据。
例如:
控制配料控制器的启动停止,相当于一个开关量,我们最多用一个字节的数据就够了。
数据为0xFC表示启动,0xFE表示停止所以让2#配料控制器启动的数据帧为:
ID:
01000100010=0x222(ID号)DLC:
1(数据长度)数据:
0xFC(1个字节的数据)让2#配料控制器停止的数据帧为:
ID:
01000100010=0x222(ID号)DLC:
1(数据长度)数据:
0xFE(1个字节的数据),一个实际的例子,配料系统CAN通信设计,接收屏蔽,还有一个问题:
接收方怎么选择信息?
2个例子:
1.主控制器接收18号配料控制器的报警信息,前面说过它们的报警信息为以下这一组:
00000010001=0x0111#配料控制器发送的报警信息00000010010=0x0122#配料控制器发送的报警信息00000010011=0x0133#配料控制器发送的报警信息00000010100=0x0144#配料控制器发送的报警信息00000010101=0x0155#配料控制器发送的报警信息00000010110=0x0166#配料控制器发送的报警信息00000010111=0x0177#配料控制器发送的报警信息00000011000=0x0188#配料控制器发送的报警信息11111110000=0x7F0屏蔽位2.主控制器发送给2#的启/停信息,由于只有2#配料控制器接收,所以是全屏蔽的地方。
01000100010=0x222111111111111=0x7FF,一个实际的例子,配料系统协议表,对照信息表、ID的分配、数据的意义来制定协议表,注:
ID号里的x代表的是跟控制器相关的数据(实际x是控制器号),x的取值范围0F,一个实际的例子,配料系统23人一组试试协议,23人一组,来模拟配料系统,一个同学做主控制器,其它的同学做配料控制器,模拟配料系统的工作过程。
1.定好配料控制器的号,按上面的协议表定出各条消息(ID和数据)。
2.主控制器发送选中命令,配料控制器同学看接收到的信息判断自己是否被选中。
3.主控制器依次给配料控制器同学发送启动命令,配料控制器同学回应一个启动成功消息。
4.配料控制器的同学发送流量值信息,主控制器同学可以用虚拟液位来看流量。
5.配料控制器的同学发送报警信息。
6.主控制器的同学区分是哪个配料控制器发送的报警信息。
7主控制器同学依次给配料控制器发送停止信息,配料控制器的同学收到后发送一个停止成功消息。
把发送的数据和接收到的数据,附在作业上。
会出现的问题:
如果都按照上面的协议表做实验,大家都是连在总线上的,会出现协议冲突,每一组同学可以用扩展帧来制定自己的协议(比如:
用ID12,ID13两位代表组号),既解决冲突,又能把第5题做完。
作业按组交。
第5题按一小组做一份,前四题每个做自己的。
动动手吧,玩一会再把作业做了!
1.先把数据帧的格式复习一下,做做数据帧的收发实验,2.优先级实验,3.实验滤波实验,4.用一下虚拟设备,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAN 总线 基础 模拟 软件
![提示](https://static.bdocx.com/images/bang_tan.gif)