基于CAN总线大作业汇总

发布 2022-07-17 06:11:28 阅读 4603

基于can总线的楼宇智能环境智能监测系统设计。

某楼宇有多个房间(如下图所示),其中一个房间可作为集中监控室,每个房间都安装温度和湿度传感器,并通过can总线监测到的温度、湿度信号发送到监控室中的上位机pc用于随时监控各房间的环境状况。

1) 介绍can总线网络层次结构。

can总线与简单总线逻辑不同,can是一种复杂逻辑的总线结构。参照iso/osi标准模型,can分为数据链路层和物理层。而数据链路层又包括逻辑链路子层llc(logic link control)和**访问控制子层mac(medium access control)。

can的通信参考模型如图一所示。

1. 物理层。

在物理层中定义实际信号的传输方法,包括位的编码和解码、位的定时和同步等内容,作用是定义不同节点之间根据电气属性如何进行位的实际传输。

在物理连接上,can总线结构提供两个引脚--canh和canl,总线通过canh和canl之间的差分电压完成信号的位传输。

2. 逻辑链路子层llc

逻辑链路子层llc的主要功能是,对总线上传输的报文实行接收滤波,判断总线上传输的报文是否与本节点有关,哪些报文应该为本节点接收;对报文的接收予以确认;为数据传送和远程数据请求提供服务;当丢失仲裁或被出错干扰时,逻辑链路子层具有自动重发的恢复管理功能等。

3. **访问控制子层mac

mac子层是can协议的核心。它负责执行总线仲裁、报文成帧、出错检测、错误标定等传输控制规则。

图一 can的通信参考模型。

2) 介绍can总线通讯协议的报文格式。

根据can报文帧的不同用途,可以把can报文帧划分为以下4种类型,数据帧,远程帧,出错帧,超载帧。

1. 数据帧。

数据帧携带数据从发送器至接收器。总线上传输的大多是这种帧,从标识符长度上,又可以把数据帧分为标准帧(11位标识符)和扩展帧(29位标识符)。

数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、crc 场、应答场、帧结束。其中,数据场的长度为0~8个字节。

标识符位于仲裁场中,报文接收节点通过标识符进行报文滤波。数据帧结构如图二所示。

图二数据帧结构。

2. 远程帧。

由总线上的节点发出,用于请求其他节点发送具有同一标识符的数据帧。当某个节点需要数据时,可以发送远程帧请求另一节点发送相应数据帧。与数据帧相比,远程帧没有数据场。

远程帧结构如图三所示。

图三远程帧结构。

3. 出错帧。

任何单元,一旦检测到总线错误就发出错误帧。错误帧由两个不同的场组成,第一个场是由不同站提供的错误标志的叠加(错误标志),第二个场是错误界定符。出错帧结构如图四所示。

图四出错帧结构。

4. 超载帧。

超载帧用于在先行的和后续的数据帧(或远程帧)之间提供附加延时。超载帧包括两个场:超载标志和超载界定符。超载帧结构如图五所示。

图五超载帧结构。

3) 在总线上传输的报文以帧结构进行传输,与can总线传输相关的关键技术术是什么?实现过程是什么?

答:在can系统中为保证报文传输的正确性,需要对通信过程进行差错控制。目前常用的方法是反馈重发,即一旦收到接收端发出的出错信息,发送端便自动重发,此时的差错控制只需要检错功能。

常用的检错码有两类:奇偶校验码和循环冗余校验码。奇偶校验码是一种最常见的检错码,其实现方法简单,但检错能力较差;循环冗余校验码的编码也很简单且误判率低,所以在通信系统中获得了广泛的应用。

下面介绍can网络中循环冗余校验码(即crc码)的原理和实现方法。

1、 crc码检错的工作原理。

crc码检错是将被处理报文的比特序列当作一个二进制多项式a(×)的系数,该系数除以发送方和接收方预先约定好的生成多项式g(×)后,将求得的余数p(×)作为crc校验码附加到原始的报文上,并一起发给接收方。接收方用同样的g(×)去除收到的报文b(×)如果余数等于p(×)则传输无误(此时a(×)和b(×)相同);否则传输过程**错,由发送端重发,重新开始crc校验,直到无误为止。

上述校验过程中有几点需注意:①在进行crc计算时,采用二进制(模2)运算法,即加法不进位,减法不借位,其本质就是两个操作数进行逻辑异或运算;②在进行crc计算前先将发送报文所表示的多项式a(×)乘以×n,其中n为生成多项式g(×)的最高幂值。对二进制乘法来讲,a(×)n就是将a(×)左移n位,用来存放余数(×)所以实际发送的报文就变为a(×n+p(×)生成多项式g(×)的首位和最后一位的系数必须为1。

目前已经有多种生成多项式被列入国际标准中,如:crc-4、crc-12、crc-16、ccitt-16、crc-32等。can总线中采用的生成多项式为g(×)15+×14+×10+×8+×7+x4+×3+1。

可以看出,can总线中的crc校验采用的多项式能够校验七级,比一般crc校验(crc-4、crc-12、crc-16等)的级数(二~五级)要高许多,因而它的检错能力很强,误判率极低,成为提高数据传输质量的有效检错手段。

2、 crc序列计算方法。

多项式g(×)除法的余数就是发送到总线上的crc序列。为了实现这个功能,可以使用15位的移位寄存器---crc_rg(14:0)。

如果nxtbit指示位流的下一位,那么从帧的起始到数据末尾都由没有填充的位顺序给定。crc序列的计算如下:

crc_rg=0; /初始化移位寄存器

repeat

crcnxt = nxtbit exor crc_rg(14); 异或运算。

crc_rg(14 : 1)= crc_rg(13 : 0); 寄存器左移1位。

crc_rg(0)=0;

if crcnxt then

crc_rg(14 : 0)==crc_rg(14 : 0)exor(h)

end if

until(crc序列开始或有一错误条件)

4) 进行测量结点的硬件设计(基于at89s51、sja1000的can总线智能结点的总体设计)。

sja1000在电路中是一个总线接口芯片,通过它实现上位机与现场微处理器之间的数据通信。该电路的主要功能是通过can接收来自上位机的数据进行分析组态然后就传给下位机的控制电路实现控制功能,当can总线接口收到下位机上传的数据,sja1000就产生一个中断,引发微处理器产生中断,通过中断处理程序接收每一帧信息并通过can总线上传给上位机进行分析。at89s51是can总线接口电路的核心,其承担can控制器的初始化、can的收发控制等任务。

1、 单片机at89s51的选取:

1) 4k bytes flash片内程序存储器;

2)128 bytes的随机存取数据存储器(ram);

3)32个外部双向输入/输出(i/o)口;

4)6个中断源;

5)2个16位可编程定时器/计数器;

6)2个全双工串行通信口;

7)片内振荡器和时钟电路;

8)全静态工作:0hz-33mhz;

9)可编程串行通道;

10) 低功耗的闲置和掉电模式。

在设计电路时要注意:①总线两端必须接凉的终端匹配电阻;②sja1000的tx1引脚的电位必须维持在约0.5v上;③将sja1000的clockout的时钟信号接至at89s51的时钟电路输入端。

故其中的部分接线按以下说明来接:

can总线控制器sja1000 ad0~ad7连接到at89s51的p0口,片选段cs非连接到at89s51的p2.7,p2.7为1时,cpu外存储器可选中sja1000,cpu通过这些地址就可对sja1000执行相应的读/写操作。

sja1000的rd非、wr非、ale分别于单片机at89s51对应的引脚相连。由于sja1000是低电平复位,单片机at89s51是高电平复位,因此两者的复位电路的设计也不同。sja1000的11脚接高电平,选择intel的二分频模式。

16脚的中断int非接到单片机相应的外部中断0的输入脚int0非。

5) 进行硬件设计,包括at89s51编程,can通讯协议等(can结点初始化,报文发送和报文接收三部分的设计作一个描述)。

1、串口初始化:

1)、确定t1的工作方式(方式2:编程tmod=0x20)。

2)、计算t1的初值,装载th1,tl1(t1:0xfd)。

3)、启动t1(编程tcon中的tr1位)。

4)、确定串行口控制(编程scon寄存器);

5)、在中断方式工作时,要进行中断设置(编程ie,ip寄存器)。

2、程序。1)、主程序(单片机)

#include<>

unsigned char has_r,rec_c;

void main()

tmod=0x20; /设t1工作方式位方式2

th1=0xfd;

tl1=0xfd;

tr1=1; /打开t1

ren=1; /串口允许接收。

sm0=0; /设置方式1

sm1=1;

sm2=0;

ea=1; /开串行总中断。

es=1; /开串行中断。

while(1)

if(has_r==1)

es=0; /关串行中断。

has_r=0;

sbuf=rec_c;

while(!ti)

ti=0;es=1;

void ser() interrupt 4 //接收中断。

ri=0; /接收中断标志位清0

rec_c=sbuf;

has_r=1; /接收完成标志。

2)、can控制器sja1000的初始化程序。

mov dptr,#mode ;模式寄存器。

mov a,#09h进入复位模式,对sja1000进行初始化。

mov @dptr,a

mov dptr,#cdr ;时钟分频寄存器。

mov a,#88h

movx @dptr,a

nov dptr,#ifr ;中断允许寄存器。

mov a,#0dh开放发送中断、溢出中断。

movx @dptr,a

mov dptr,#amr ;验收屏蔽寄存器。

mov r6,#

mov r0,#damr

amrini: mov a,@r0

movx @dptr,a ;验收屏蔽寄存器赋初值。

现场总线大作业

南京工程学院。课程名称基于canopen总线的温度测的设计 院 系 部 中心 自动化学院 专业自动化。班级 姓名数控133 吴雅雯 起止日期 2016 11 4 2016 12 14 目录。1 设计任务 1 2 总体方案 3 3 硬件设计 3 4 软件设计 17 5 设计总结 19 6 参考文献 2...

系统辨识大作业汇总

一 问题描述。考虑 对象 式中,u k 和z k 是输入输出数据,v k 是零均值 方差为1的不相关的随机噪声 u k 采用与e k 不相关的随机序列。1.设计实验,产生输入输出数据 2.使用基本最小二乘法估计参数 3.考虑其他适用于有色噪声的辨识方法估计参数 4.模型验证。二 问题分析。对于单输入...

模糊控制大作业汇总

基于模糊控制的pid温度控制器的设计。1 引言。常规pid 控制由于具有原理结构简单 鲁棒性好,可靠性高,容易实现的特点,成为迄今为止应用最广泛的控制算法,并且取得了良好的效果。然而在温度控制系统中,由于被控对象具有非线性 时变 大滞后等特点,且受环境温度等外界诸多因素影响较大,导致难以建立精确的数...