当前位置:首页 » 操作系统 » can算法

can算法

发布时间: 2022-11-14 10:30:54

❶ CAN总线位填充的原理是什么

及传感器领域都得到了广泛的应用。目前国内外文献中针对CAN总线协议分析的文章主要是针对CAN协议的帧结构以或位时序特性进行分析,如文献鲜有从通信的角度对CAN总线协议进行分析,鲜有从工程应用的角度出发,对CAN总线的通信机制进行深入分析的文章。

1 CAN应用特性及结构构成

CAN总线协议具有两个国际标准,分别是ISO11898和ISO11519。其中,IS011898是通信速率为125 kbps~1
Mbps的高速CAN通信标准,属于闭环总线,总线最大长度为40 m/1 Mbps。ISO11519定义了通信速率为10~125
kbps的低速CAN通信标准,属于开环总线,最大长度为1 km/40
kbps。由于电气特性限制,即总线分布电容和分布电阻对总线波形的影响,CAN总线上最大节点数目为110个。对于应用工程师,只需正确配置收发端的波
特率和位参数即可实现收发节点的数据同步。通过CAN控制器硬件对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。同时,
由于CAN报文采用短帧结构,并且每帧均包含CRC校验部分,保证了数据出错率极低。CAN总线在工程应用中结构构成
系统实现中的CAN应用层、操作系统(在无操作系统的应用中以后台程序实现)及驱动程序共同实现了ISO参考模型中的应用层功能。其中,CAN应用
层定义ID分组、发送数据装包、接收数据处理以及应用层总线安全监测;操作系统/后台程序用于在CAN中断到达后调度CAN驱动程序对数据进行处理;驱动
程序包括初始化(控制器工作状态设置、波特率设置、验收滤波器配置)、收发驱动及异常处理程序。

对于传输介质层,需要根据环境干扰噪声、总线长度等来确定。在强干扰噪声的情况下必须采用屏蔽线;由于分布电容造成的总线波形失真及分布电阻造
成的总线电平的衰减,总线长度需要考虑采用的传输介质的分布电阻和分布电容特性;同时,若采用高速总线还需通过实验确定总线的匹配电阻值。

对于CAN控制器的实现,可以选用集成于系统主控芯片的CAN控制器实现,如恩智浦公司出品的LPC2000系列的微控制器,
或者也可以选用分立元件的CAN控制器,如SJA1000。对于CAN收发器的实现,可以选用CTM1050、TJA1050等。若环境干扰噪声较大,则
需在控制器和收发器之间添加隔离芯片或采用集成了隔离功能的CAN收发器。值得一提的是,恩智浦公司新推出的LPC11C24微控制器芯片中不仅集成了
CAN控制器,同时集成了CAN收发器功能,对于CAN总线系统的快速开发提供了良好的支持。另外,根据实际应用的总线长度及总线上的节点数目,还需考虑
收发器芯片的发送和接收的延迟时间。

对于CAN驱动层和应用层,驱动程序包括CAN初始化(包括硬件使能、波特率设置、控制器工作模式设置及验收滤波器ID表配置)、收/发驱动并
向上层提供接口函数,其中需要说明的是验收滤波器的ID表配置需要根据应用层对系统ID的分组来进行;CAN应用层根据总线上各节点之间的数据收发关系进
行数据包的ID分组、发送数据装包、接收数据处理及应用层总线安全监测等。另外,常用的CAN总线上层协议主要有CANOpen、DeviceNet以及
iCAN等。

2 CAN总线同步机制分析

在进行通信过程中,需要解决的最重要的问题之一就是如何实现收发端数据的同步,即接收端可以正确接收和解析发送端发送的数据。CAN总线协议是
一种异步串行通信协议,属于基带通信,其同步的实现源于高级数据链路控制协议(HDLC)。具体来说,CAN总线协议的同步是通过如下所述的3个方面来实
现的。

2.1 参数设定

通信双方通过软件设置相同的波特率、相同的相位调整段长度、相同的同步跳转宽度,通过以上3个元素设置,定义了CAN总线传输过程中的位时间长
度以及采样点位置,位结构如图2所示,图中的CAN时钟即是协议中定义的TQ时间,该时钟是通过外部时钟或者CPU外设时钟分频后得到的CAN控制器的基
本时钟信号,SS段对应于起始段,总线上的跳变沿应发生在此段时间内,TESG1对应于传输段和相位调整段1,TESG2对应于相位调整段2,对于高速总
线,控制器在TESG1和TESG2之间对总线进行采样判别。
2.2 固定的帧结构

CAN协议中明确定义的固定的帧结构,便于CAN控制器和收发器对总线状态进行监测,在CAN2.0协议规范中,分为标准帧和扩展帧两种帧结构,两者区别只在于仲裁域,标准帧采用11位标识符,而扩展帧有29位标识符,具体的标准帧、扩展帧帧结构
2.3 硬同步和再同步

2.3.1 硬同步

所谓硬同步就是指在总线空闲期间(即总线电平表现为连续的隐性位),控制器一旦检测到从隐性电平到显性电平的跳变,就说明此时总线上有站点开始
发送数据,则强制CAN控制器的位状态计数器同步到图2所示的SS段,同时位时钟从此开始重新计数(CAN位时间由上层软件设定)。硬同步用于帧的起始判
定。

2.3.2 再同步

在CAN总线协议中,再同步是基于位填充机制实现的。与HDLC协议类似,在CAN的帧结构中,从帧起始到CRC序列位为止,一旦检测到5个连
续相同极性的位,CAN控制器自动插入一个极性相反的位。再同步就是在数据传输过程中,CAN控制器通过检测总线上的跳变沿与节点内部位时间的差异来调整
相位调整段1和相位调整段2,调整大小是由同步跳转宽度编程设定的,调整大小单位为TQ。具体调整规则是,在传输过程中,由CAN控制器检测到的总线上的
跳变沿如果位于节点内部的SS位时间段内,则不需要调整;若跳变沿位于TESG1段,说明总线上的位时间相对于节点的位时间有延迟,则CAN控制器延长节
点的TESG1位时间段,若延迟时间值(T0值)大于同步跳转宽度,延长时间为同步跳转宽度值,否则节点的CAN控制器延长其与总线位时间的差值;若跳变
沿位于TESG2段,说明总线上的位时间相对于节点的位时间有超前,则CAN控制器减少节点的TESG2位时间段,具体调整规则与TESG1段的调整规则
相似。

3 CAN总线地址机制分析

不同于工业以太网、RS485等总线,CAN总线是通过数据包ID而非节点地址来收发数据的,即CAN总线上的节点没有固定的地址,取而代之的
是每个节点都需要通过软件配置一个ID表(在该节点的验收滤波器单元中),如果总线上的数据包的ID号在该节点的ID表中存在,则数据包成功通过该节点的
验收滤波器单元的验收,并将被送到上层软件处理单元并进行相应的数据处理,否则,该数据包被丢弃。举例来说,若总线上的节点A想发送数据包到节点B,则该
数据包的ID号必须位于节点B的ID表中,同理,若节点A想广播数据包到总线上,则该数据包的ID号必须位于总线上所有其它节点的ID表中。如前所
述,ID表是通过软件进行配置的,但验收滤波功能却是通过CAN控制器中的验收滤波器这个硬件单元进行的,所以从速度上来说,验收造成的延迟很小。另外,
采用这种地址机制的优点还在于是采用此总线的系统具有很高的灵活性,即新加入或删除的节点不会影响系统原有节点间的通信。
4 CAN总线仲裁机制分析

总线仲裁,是指当总线上有多个节点在同时发送数据时总线协议的处理方法。CAN总线采用的是无破坏性的仲裁机制,即若总线上的多个节点同时发送
数据,具有高优先级数据包的节点仲裁胜出,可以继续发送数据,而其它仲裁失败的节点将退出发送状态而转为接收节点,与其他总线仲裁机制(例如局域网的
CSMA/CD)相比,其不仅不会破坏已发送的数据,并且不会造成发送数据的延迟,是CAN总线与其他总线相比的优点之一,其主要是通过CAN总线所具备
的如下两个特点实现:1)CAN总线的线与特性,即当总线上多个节点同时发送显性和隐形电平时,总线电平表现为显性电平。2)CAN控制器即使在发送数据
的同时也在监控总线电平状态,即当在仲裁时,当控制器发送隐性电平但检测到总线为显性电平时,节点仲裁失败,转为接收节点。

5 CAN总线鲁棒性分析

CAN总线的鲁棒性是通过其对节点和总线数据包安全性的实时检测与监控来实现的,另外,CAN总线通过采用的差分信号对外界干扰信号有较强的抑制作用。具体论述如下。

5.1 实时监控总线波形

CAN控制器不仅在上电后会一直监测总线上其它节点发送的的数据包,并且在自己发送数据包得过程中也在实时监测自己发送的数据,一旦检测到位错
误、填充错误、CRC错误、格式错误或者应答错误,该节点就会根据其所处的错误状态(错误激活状态或者错误认可状态)发送相应的错误标志,实际上笔者认为
只有错误激活站点发送激活错误标识(即6个连续的显性位后接8个隐性位的错误标识界定符)会对总线及总线上的节点产生影响,而处于错误认可状态的节点发送
的错误认可标识实际对总线没有任何影响(发送的6个隐性电平与总线空闲状态是一致的)。

5.2 实时监控节点状态判定节点权限

节点会根据总线上数据包的情况实时改变自身的状态(错误激活、错误认可或者总线关闭状态),处于错误激活的节点正常参与总线通信,错误认可的单
元参与总线通信,但是在其启动下一个发送之前需要发送8个额外的隐性位。对于总线上发送的数据包,如表1所示,15位的CRC序列实现了对起始位、仲裁
域、控制域以及数据域(如果有的话)的监控,接收站点在接收到数据后会根据与发送节点相同的算法生成该数据包的CRC序列,并与接收到的CRC序列做比
较,如果不同则说明有错,接收节点不会对该数据包做出应答,发送节点就会检测到应答错误并重新发送该数据包。总之,CAN总线通过数据链路层以及物理层就
已经实现了较高的总线的数据安全性和总线的稳定性。

6 结论

文中以ISO11898协议规范为基础,从通信的角度详细分析了CAN总线的节点同步机制、节点地址机制、总线仲裁机制(即总线冲突解决机制)
及总线鲁棒性的实现原理和基础,同时简要介绍了CAN总线的应用特性以及将其应用于实际系统中时总线的系统分层结构,对深入理解CAN总线协议和将CAN
总线应用到具体工程项目中,以及研究或开发特定要求的总线系统具有指导意义。

❷ 急急急!!!如何用VB实现磁盘扫描的NStepScan算法

c的,网上搜的。

#include "stdafx.h"
#include "stdlib.h"

int L,P;
int a[20];
int flag;//访问
typedef struct TASK
{
int requrie;
int io;

} TASK;

TASK T[50][50];
TASK N[50];

int diskway;//当前磁道

void iodowith();

void init()
{
int i,j;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
T[i][j].requrie=-1;

}
}
for(i=0;i<L;i++)
{
for(j=0;j<P;j++)
{
T[i][j].requrie=rand()%200;
T[i][j].io=rand()%2;
}
}

}
void output()
{
printf("磁盘访问的初始顺序是:\n");
for(int i=0;i<L;i++)
{
printf("第%d组是:\n",i+1);
for(int j=0;j<P;j++)
{
printf("%d %d\t",T[i][j].requrie,T[i][j].io);

}
printf("\n");
}
}

void sort_btos(TASK x[],int n)
{
int i,j,k;
TASK t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(x[j].requrie>x[k].requrie)
k=j;
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}

}

void sort_stob(TASK x[],int n)
{ int i,j,k;
TASK t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(x[j].requrie<x[k].requrie)
k=j;
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}

}

void SortInToOut(TASK x[],int nowdiskway,int num)
{
TASK a[50],b[50];
int s=0,t=0;
for(int i=0;i<num;i++)
{

if(x[i].requrie>=nowdiskway)
{
a[t]=x[i];
t++;

}
else
{
b[s]=x[i];
s++;

}

}
sort_stob(a,t);
sort_btos(b,s);
for(i=0;i<t;i++)
{
x[i]=a[i];
}
for(i=t;i<num;i++)
{
x[i]=b[i-t];
}
}

void SortOutToIn(TASK x[],int nowdiskway,int num)
{
TASK a[50],b[50];
int s=0,t=0;
for(int i=0;i<num;i++)
{

if(x[i].requrie<=nowdiskway)
{
a[t]=x[i];
t++;
}
else
{
b[s]=x[i];
s++;
}

}
sort_btos(a,t);
sort_stob(b,s);
for(i=0;i<t;i++)
{
x[i]=a[i];
}
for(i=t;i<num;i++)
{
x[i]=b[i-t];
}
}

void iodowith()
{

int p=P;
a[0]=p;
for(int i=0;i<L;i++)
{
if(i==L-1)
{
p=0;
for(int j=0;j<P;j++)
{
if(T[i][j].io==1)
{

T[i+1][p].requrie=rand()%200;
printf("在第%d队第%d行设定io请求%d\n",i+1,j+1,T[i+1][p].requrie);
p++;
}
a[i+1]=p;
}

}
else
{
p=P;
for(int j=0;j<P;j++)
{
if(T[i][j].io==1)
{
T[i+1][p].requrie=rand()%200;
printf("在第%d队第%d行设定io请求%d\n",i+1,j+1,T[i+1][p].requrie);
p++;
}
}
a[i+1]=p;
}
}

}
void NStepScan()
{

int D[50];
int M;
TASK Y[50];
printf("-----------------------------------------------------\n");

printf("next disk number\tmove distance\n");

for(int i=0;i<L+1;i++)
{

M=a[i];

for(int j=0;j<M;j++)
{

N[j]=T[i][j];

}

if(i==0)
{

if(flag==1)
SortInToOut(N,diskway,M);
else
{SortOutToIn(N,diskway,M);}
for(int j=0;j<M;j++)
{
Y[j]=N[j];
}

}
else
{
if(Y[a[i-1]-2].requrie<Y[a[i-1]-1].requrie)
{
SortInToOut(N,diskway,M);
}
else
{
SortOutToIn(N,diskway,M);
}

for(int j=0;j<M;j++)

{

Y[j]=N[j];

}

}

D[0]=abs(diskway-N[0].requrie);

for(int t=1;t<M;t++)
{
D[t]=abs(N[t].requrie-N[t-1].requrie);
}

printf("-----------------------------------------------------\n");

printf("第%d组的情况:\n",i+1);

for(t=0;t<M;t++)
{

printf("\t%3d\t\t\t%3d\n",N[t].requrie,D[t]);

}

diskway=N[M-1].requrie;
}

}

int main(int argc, char* argv[])
{

printf("n-STEP-SCAN算演示!\n");

printf("随机产生小于200的磁道号\n");

printf("请输入队列个数 队列中磁道个数 输入当前磁道号(0-200)\n");

printf("请设定此时磁盘访问的方向(1.从里向外 2.从外向里)\n");

scanf("%d%d%d%d",&L,&P,&diskway,&flag);

init();

output();

iodowith();

NStepScan();

return 0;
}

❸ 51单片机运用can总线的通信协议 急!!!!!!!!!!

http://www.51c51.com/
CAN全称为Controller Area Network,即控制器局域网,由德国Bosch公司最先提出,是国际上应用最广泛的现场总线之一。最初CAN 被设计作为汽车环境中的通讯,在汽车电子控制装置之间交换信息形成汽车电子控制网络。由于其卓越的性能、极高的可靠性和低廉的价格现已广泛应用于工业现场控制、医疗仪器等众多领域[1][2]。

CAN协议是建立在OSI 7层开放互连参考模型基础之上的。但CAN协议只定义了模型的最下面两层:数据链路层和物理层,仅保证了节点间无差错的数据传输。CAN的应用层协议必须由CAN 用户自行定义,或采用一些国际组织制订的标准协议。应用最为广泛的是DeviceNet和CANopen,分别广泛应用于过程控制和机电控制领域。但此类协议一般结构比较复杂,更适合复杂大型系统的应用。笔者在研制一种基于CAN总线的分布式高频开关电源充电机系统的过程中设计了一种适合于小型控制系统的CAN总线高层通信协议。

2 CAN的特点[3]
CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10km时,CAN仍可提供高达50kbps 的数据传输速率。
CAN具有十分优越的特点:
(1) 较低的成本与极高的总线利用率;
(2) 数据传输距离可长达10km,传输速率可高达1Mbps[7];
(3) 可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;
(4) 节点在错误严重的情况下具有自动退出总线的功能;
(5) 报文不包含源地址或目标地址,仅用标志符来指示功能信息和优先级信息。

3 CAN的技术规范
(1) 帧类型
在CAN总线中,有四种不同的帧类型[4][5]:
·数据帧(Data Frame) 数据帧带有应用数据;
·远程帧(Remote Frame) 通过发送远程帧可以向网络请求数据,启动其他资源节点传送他们各自的数据,远程帧包含6个不同的位域:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。仲裁域中的RTR位的隐极性表示为远程帧;
·错误帧(Error Frame)错误帧能够报告每个节点的出错,由两个不同的域组成,第一个域是不同站提供的错误标志的叠加,第二个域是错误界定符;
·过载帧(Overload Frame)如果节点的接收尚未准备好就会传送过载帧,由两个不同的域组成,第一个域是过载标志,第二个域是过载界定符。
(2) 数据帧结构
数据帧由以下7个不同的位域(Bit Field)组成:帧起始、仲裁域、控制域、数据域、CRC域、应答域、帧结尾。其标准帧结构如表1所示:

表1 数据帧的结构[4]

·帧起始:标志帧的开始,它由单个显性位构成,在总线空闲时发送,在总线上产生同步作用。
·仲裁域:由11位标识符(ID10-ID0)和远程发送请求位(RTR)组成,RTR位为显性表示该帧为数据帧,隐性表示该帧为远程帧;标识符由高至低按次序发送,且前7位 (ID10-ID4)不能全为显性位。标识符ID用来描述数据的含义而不用于通信寻址,CAN总线的帧是没有寻址功能的。标识符还用于决定报文的优先权,ID值越低优先权越高,在竞争总线时,优先权高的报文优先发送,优先权低报文退出总线竞争。CAN总线竞争的算法效率很高,是一种非破坏性竞争。
·控制域:为数据长度码 (DLC3-DLC0),表示数据域中数据的字节数,不得超过8。
·数据域:由被发送数据组成,数目与控制域中设定的字节数相等,第一个字节的最高位首先被发送。其长度在标准帧中不超过8个字节。
·CRC域:包括CRC(循环冗余码校验)序列(15位)和CRC界定符(1个隐性位),用于帧校验。
l应答域:由应答间隙和应答界定符组成,共两位;发送站发送两个隐性位,接收站在应答间隙中发送显性位。应答界定符必须是隐性位。
·帧结束:由7位隐性位组成。

4 自订CAN高层协议
CAN的高层协议也可理解为应用层协议,是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。由于充电机系统的结构比较简单,网络规模也比较小。因此我们自行制订了一种简单而有效的高层通信协议。

技术规范CAN2.0A规定标准的数据帧有11位标识符,用户可以自行规定其含义,将所需要的信息包含在内。在充电机系统中,每一个节点都有一个唯一的地址,地址码和模块一一对应,通过拨码开关设定,总线上数据的传送也是根据地址进行的。由于本系统规模较小,节点数少于32个,因此为每个模块分配一个5位的地址码,同一系统中地址码不得重复,系统初始化时由外部引脚读入。将标识符ID9-ID5定义为源地址,ID4-ID0定义为目的地址,本协议中从模块的目的地址全填0,表示数据是广播数据,所有节点都可接收,主模块中目的地址根据要进行通信目的模块的地址确定。本通信协议的数据帧格式详见表2。

表2 数据帧格式

理论上源地址和目的地址的范围都是0~31,但由于CAN协议中规定标识符前7位不能全为显性位,所以源地址不能为31,这时实际节点只有31个(0~30)。因此每个系统所含的模块不超过31个。所以源地址和目的地址的范围缩减到0~30。同时上位监控机也要占用一个地址,因此系统中的电源模块不超过30个,设计时根据节点的优先权高低从小到大分配节点地址。ID10位定义为主模块识别码,该位主模块为隐性位,从模块为显性位,以保证主模块通信优先。模块的地址码决定发送数据的优先级。主模块向总线发送的数据有两种:一种是目的地址全部填0的广播数据;另一种是包含特定目的地址的非广播数据。

协议中一帧数据最多能传送8个字节,对于充电机控制系统来说已经足够用了,本系统只用到其中的前5个字节,其余3个节字可用于以后的扩展使用,因此未定义多帧传输方式。

从模块以广播形式向总线发送数据,同时回收自己发送的数据,若检测到所发送与所收到的数据不符,则立即重新发送上一帧数据。从模块发送信息的顺序由主模块的发出的指令决定,以免在总线通信繁忙时优先级较低的模块始终得不到总线通信权。指令的发送顺序按照各从模块的地址顺序进行,即地址较低的从模块首先获得指令,得以发送自己的地址码和电流、温度采样值。如发生冲突,则由CAN控制器自动根据模块的优先级调整发送顺序,在CAN的底层协议中有完善的优先级仲裁算法,因此应用层协议不必考虑此类问题。

对于每个模块,上电1s后若未收到任何通信信息,则按计算延时发送自身的地址码和温度电流采样值。延时时间的计算为[6]:
tdelay=T×ADD
其中:tdelay-为延时发送时间;
T-为单位延时时间常数,该值根据通信速率定义;可以取1个位周期,在波特率为100kHz时为10μs;
ADD-为模块地址编码。

主模块是ID10=0的模块,因此具有最高的优先级。上电后主模块首先向总线广播发送自身的地址码和温度电流采样值,然后即按顺序向从机发送指令,等待从机的回答。主机1秒钟后若未收到任何通信信息则认为该模块出错,发出报警。同样从机1s后若未收到主机任何通信信息则认为主机出错,按照源地址优先级由其余模块中地址最低的模块充当主模块,并将其ID10由1改为0,以获得最高通信优先权。

各模块检测到自身故障时,将切断输出,退出通信,并向上位机报警,同时发出声光报警。

5 结束语
本文中所介绍的CAN高层通信协议,结构简单、使用灵活、可靠性极高,实现也比较容易。很适合在节点数不多、通信可靠性要求高、控制结构较简单的小型控制系统中应用,具有一定的实用价值

❹ CAN波特率怎么计算

以下是我找的资料,希望能帮到你!
Can控制器器只需要进行少量的设置就可以进行通信,就可以像RS232/48那样使用。
其中较难设置的部分就是通信波特率的计算。CAN总线能够在一定的范围内容忍总线上CAN节点的通信波特率的偏差,这种机能使得CAN总线有很强的容错性,同时也降低了对每个节点的振荡器精度。
实际上,CAN总线的波特率是一个范围。假设定义的波特率是250KB/S,但是实际上根据对寄存器的设置,实际的波特率可能为200~300KB/S(具体值取决于寄存器的设置)。
简单介绍一个波特率的计算,在CAN的底层协议里将CAN数据的每一位时间(TBit)分为许多的时间段(Tscl),这些时间段包括:
A. 位同步时间(Tsync)
B. 时间段1(Tseg1)
C. 时间段2(Tseg2)
其中位同步时间占用1个Tscl;时间段2占用(Tseg1+1)个Tscl;时间段2占用(Tseg2+1)个Tscl,所以CAN控制器的位时间(TBit)就是:TBit=Tseg1+Tseg2+Tsync=(TSEG1+TSEG2+3)*Tscl,那么CAN的波特率 (CANbps)就是1/TBit。
但是这样计算出的值是一个理论值。在实际的网络通信中由于存在传输的延时、不同节点的晶体的误差等因素,使得网络CAN的波特率的计算变得复杂起来。CAN在技术上便引入了重同步的概念,以更好的解决这些问题。这样重同步带来的结果就是要么时间段1(Tseg1)增加TSJW(同步跳转宽度SJW+1),要么时间段减少TSJW,因此CAN的波特率实际上有一个范围:1/(Tbit+Tsjw) ≤CANbps≤1/(Tbit-Tsjw)
CAN有波特率的值四以下几个元素决定:
A. 最小时间段Tscl;
B. 时间段1 TSEG1;
C. 时间段2 TSEG2;
D. 同步跳转宽度 SJW
那么Tscl又是怎么计算的呢?这是总总线时序寄存器中的预分频寄存器BRP派上了用场,Tscl=(BRP+1)/FVBP。FVBP为微处理器的外设时钟。
而TSEG1与TSEG2又是怎么划分的呢?TSEG1与TSEG2的长度决定了CAN数据的采样点,这种方式允许宽范围的数据传输延迟和晶体的误差。其中TSEG1用来调整数据传输延迟时间造成的误差,而TSEG2则用来调整不同点节点晶体频率的误差。但是他们由于过于灵活,而使初次接触CAN的人有点无所适从。TSEG1与TSEG2的是分大体遵循以下规则: Tseg2≥Tscl2,Tseg2≥2TSJW,Tseg1≥Tseg2
总的来说,对于CAN的波特率计算问题,把握一个大的方向就行了,其计算公式可了规结为: BitRate = Fpclk/( (BRP+1) * ((Tseg1+1)+(Tseg2+1)+1)

关于CAN的波特率的计算,在数据手册上已经有很详细的说明。在此,简要的把计算方法给出来:
Tcsc :bit位每一编码的时间长度,每bit可以配置为8~25位编码,常设为16 。
Tcsc=1/波特率/编码长度 ;按上计算 Tcsc=1/1MHz/16=62.5ns (取63) 。
BRP = (Tcsc x MCK) - 1=6.3-1 (可以取 5)
各种延迟(Tprs :)
Delay of the bus driver: 50 ns
Delay of the receiver: 30ns
Delay of the bus line (20m): 110ns
Tprs = 2 * (50+30+110) ns = 380 ns
PROPAG= 380 ns/ Tcsc-1 =6.08Tcsc-1 (可取 6)
Tphs1 + Tphs2 = bit time - Tcsc - Tprs = (16 - 1 - 7)Tcsc= 8
常取 Tphs1 = Tphs2 ,所以 Tphs1 = Tphs2 =4 ;
Tsjw = Min(4 Tcsc,Tphs1) = 4 Tcsc (From 1 to Tphs1 )
SJW = Tsjw/Tcsc - 1 = 3 ;
现在CAN_BR 中的各个参数就都有了(BRP=5 ;SJW=3;PROPAG=6;PHASE1=PHASE=4),填进去就应该OK了 。

假设我们先不考虑BTR0中的SJW位和BTR1中的SAM位。那么,BTR0和BTR1就是2个分频系数寄存器;它们的乘积是一个扩展的分频系数。即:
BTR0×BTR1=F_BASE/Fbps (1)
其中:
内部频率基准源F_BASE = Fclk/2,即外部晶振频率Fclk的2分频。注意任何应用中,当利用外部晶振作为基准源的时候,都是先经过2分频整形的。
(1)式中,当晶振为16M时,F_BASE=8000K
当晶振为12M时,F_BASE=6000K
Fbps就是我们所希望得到的CAN总线频率。单位为K。
设(1)式中BTR0=m,BTR1=n,外部晶振16M,则有:
n =8000/ Fbps (2)
这样,当Fbps取我们希望的值时,就会得到一个m * n的组合值。当n选定,m值也唯一。
n值CAN规范中规定8~25。(也就是BTR1的值)基本原则为:Fbps值越高时,选取n(通过设置BTR1)值越大。其原因不难理解。
我假定一般应用中选取n=10,也就是:
同步段+相位缓冲段1+相位缓冲段2 =1+5+4
则(2)式简化为
m=800/Fbps
m的最大设置值为64,SJA1000最大分频系数m*n=64x25=1600。因此标准算法中通常以16M晶振为例。其实有了公式(1),任何晶振值(6M~24M)都很容易计算。
SAM的确定:低频时,选SAM=1,即采样3次。高频100K以上时,取SAM=0,即采样1次。
SJA重同步跳宽选取: 与数字锁相环技术有关。n值选得大时,SJA可以选得大,即一次可以修正多个脉冲份额Tscl。n值小或频率低时,选SJA=1。即BTR0.7和BTR0.6都设为0。

文件: 波特率计算.txt

❺ 磁盘调度算法用来改善磁头的性能对不对

对的,磁盘是计算机系统中最重要的存储设备,其中含有绝大部分文件。对文件的操作直接涉及到磁盘的访问,磁盘IO的速度效率和可靠性将直接影响系统的性能。因此,好的磁盘调度算法、优越的冗余技术,都是提高磁盘系统性能的切入点。
磁盘调度算法

1.先来先服务:按照进程访问磁盘的先后顺序进行调度。

优点:公平、简单

缺点:效率低,平均寻道时间较长

2.最短寻道时间优先:要求访问磁道与当前磁头的磁道距离最近。

优点:相比于先来先服务,明显减少平均寻道长度

缺点:磁头可能在一个小的范围内一直寻到,造成远处请求不满足而饥饿

3.扫描算法:又称电梯调度算法,像电梯一样上下连续来回寻道

优点:避免了“饥饿”现象

缺点:对于刚刚经过的磁道又来了新的请求,再次访问要最多等2个磁道长度

4.循环扫描算法:磁头单向移动,其余和扫描算法一样

优点:解决了可能的错过型请求的双倍延迟

缺点:浪费一个磁头的移动次数,什么都没做

5.NStepSCAN算法:磁盘请求分成N个队列,队列间用先来先服务处理,队列内用扫描算法处理

优点:避免新请求带来的粘着问题

缺点:N值很大时,接近于扫描算法;N=1时,就是先来先服务

6.FSCAN算法:磁盘请求只分成两个队列,一个是当前请求队列,一个是未来请求队列,当前队列按照扫描算法处理,当前队列处理完就处理另一个,此时另一个为当前队列,已经处理完的是未来请求队列

优点:简化NStepSCAN算法

缺点:所有新来的请求都在下次扫描时再处理,对于紧急的高优先级的请求也要放到下次

❻ 纯电动汽车CAN总线应用整车控制策略研究与经验

纯电动汽车的国内外发展背景

汽车享有“第一商品”的美誉,因为,汽车工业的发展,可以带动众多产业发展。一辆轿车的零部件数以万计,附加值很高,一辆车背后是一系列的产业。因此,汽车工业也就成为了衡量一个国家工业化水平和综合科技水平的重要标志。

我国的汽车工业水平落后先进国家,短时间内在内燃机领域是不可能消除差距的,中国大规模发展燃油车动力汽车,在环境、资源、技术等方面面临严重压力,所以,从国内的资源和环境条件,也要求中国在未来的汽车工业必须探索新的思路。

随着我国国民经济持续高速发展,轿车成为我国居民消费的主要商品之一,我国汽车工业也将迎来一个快速发展的机遇,发展燃油车,会依赖石油资源需求的激增,同时会造成对环境、环保的负面影响,电动汽车恰好避免或者减少这些不利因素。

当代融合多种高新技术企业而兴起的纯电动汽车、混合动力汽车正在引发世界汽车工业一场革命,展现了中国企业工业的光明未来。近些年来,美国、日本、欧洲的一些国家和跨国公司已经投入大量资金和研发成本,我国也奋起直追,积极投入电动汽车研究与开发,目前新能源车在市场、整车、生产、应用等多方面实现了赶超和创新成果转化及产业化。

在电动汽车领域,我们和世界发达国家处于同一起跑线,不少方面还处于世界领先地位,这为我国汽车工业技术实现跨越发展提供了一次历史性的机遇。更重要的是我国还有后发优势,因为生产电动汽车不仅仅是发动机的更改,而且是设计、制造、材料、电气、控制和整个社会服务体系的全面变革,我国电动汽车发展,没有包袱,市场巨大,生存空间充足。

此外,我们还可以通过开发自主的电动汽车,申请专利、制定标准,保护自己的汽车工业。加入世贸组织后,再靠关税、政府政策来保护本国利益已经不行了,一流企业做标准,国家也一样,这是产业的游戏规则。电动汽车的零排放标准及低排放控制政策就可以很好的保护本国的合法权益。

我国电动汽车开发走在国际的前列,目前还需要攻破关键的电池技术,电机和电控基本已经完善,面向世界推出纯电动汽车、燃料电池电动汽车和混合动力电动汽车。

纯电动汽车CAN总线实际应用

2016年,速锐得科技与中汽中心、清华大学、国家计量、环保部等,用一年时间研究了纯电动汽车和重型燃油车排放等标准。速锐得作为合作方,主要任务是定制纯电动汽车CAN总线应用层和开发CAN总线整车控制策略节点的软件部分和主控制器CAN总线底层DBC驱动程序。在充分理解整个系统的基础上,参考SAEJ1939协议定制符合电动汽车特点又兼容混合动力汽车的CAN总线协议,定制完成后,将适配好的DBC文件提交中汽中心。

CAN总线位定时?是在CAN中比较复杂的内容,现有的CAN总线方面对位定时讲解的过于含糊而且不统一,在纯电动汽车系统开发过程中,我们实际使用了远不止几款CAN芯片,在SAEJ1939的基础和CAN2.0B基础上,设计了符合电动汽车特点的CAN总线协议,引入了调度算法,提高了系统的性能,给纯电动汽车系统提供了一个良好的调试测试环境,还在CAN总线系统测试指导下,开发出指定车型的CAN总线监控节点的DBC文件。

纯电动汽车各ECU单元的作用

在纯电动汽车控制系统中,主要包括4个节点,即主控制器ECU、电机控制ECU、电池管理系统BMS及CAN总线控制单元。

主控制器ECU相当于纯电动汽车的大脑,它起到控制全局的作用,主控制器ECU接受汽车上传感器的信息,通过A/D转换后计算,编码为CAN报文,发送到总线上控制其他节点的工作。同时,将一些整车相关的信息(车速、电池SCO、踏板位置、电池状态、门锁信息)在组合仪表上显示出来。其中最核心的就是通过传感器的输入值与系统当前状态及汽车工况等条件计算出合适的电机扭矩值,通过CAN总线发送到电机控制系统,指挥电机正确工作。另外,主控制器ECU还控制主继电器的开关,使得整个系统上电和断电,行业有的把这些集成在VCU里面。

电机控制ECU相当于纯电动汽车的四肢,它的主要工作是主控制器发送扭矩值为输入值,采用双闭环控制来调速电机,使电机工作在需要的转速下,根据电动机的温度变化控制电机的冷却水泵和冷却风扇,从而有效的调节电机温度。

纯电动汽车的电池是有几十块单体电池成组供电的,并能保证在不供电时电池不成组,每块电池的电压不超过5V,这样由于单个电池的性能差异,就需要在电池充放电过程中经常要均衡电压,保证电池性能,这个由BMS电池管理系统来控制。BMS等同于电动汽车血液循环的心脏,电池为血液循环及能量系统。

纯电动汽车CAN总线的特点

CAN总线控制单元主要是在不干扰总线数据传输的情况下,对总线上传输的数据进行实时监控,实时记录和实时报警,还提供了离线分析功能在纯电动汽车调试阶段对主控制器主要计算参数进行标定。各个子系统依靠CAN总线传输数据,进行数据交换,实现整个分布式系统的控制功能,为了充分利用总线的带宽,合理分配了8个数据字节的空间,将相关的数据放到一个报文里进行传输,保证数据帧有效信息传输比重。

在纯电动汽车运行过程中,是一些固定的工作状态之间进行切换,一般有停车状态、充电状态、启动状态、运行状态、车辆前进和后退状态、回馈制动状态、机械制动状态、一般故障状态、重大故障状态。纯电动汽车控制系统正是通过CAN总线协议进行通讯和传递参数,将各个分散的节点连成一个闭环系统,把每个节点的特点发挥到最好,在CAN总线技术总有几个关键技术(定位时、总线终端匹配阻抗、CAN驱动器电路设计和DBC应用层协议的设计)这也是CAN调试中的难点。

CAN总线定位时本质上和总线的同步是紧密相关联的,CAN总线系统的收/发双方必须以同步时钟来控制数据的发送和接收。接收端在相当长的数据流中保持位同步。必须要能识别每个二进制位是从什么时候开始的。为此,对于硬件终端的处理能力提出了高处理能力的需求,如果是直接通过4G/5G远程传输到云端,目前行业内可能成熟的产品有速锐得的V81。为保证接收时钟和发送时钟严格一致,采用接收器通过调节器从数据中提出同步信号或者是接收器和发送器统一时钟的方法,CAN总线的定位时在系统位编码/解码时采用自有的方式保证系统同步。

CAN总线的一般按照功能的不同分为几个不同的时段:在预分频倍数确定时,一定波特率的CAN总线系统的同步段就是已经确定下来了,而其他几个时间段是可变的,所以,我们可以发现在位定时配置中可以存在几组不同的参数都可以满足波特率的要求,应用这些参数,系统基本上可以正常运行。但是在这些组的参数中,存在一组最优的,这组最优的配置参数需要根据系统的最大总线长度和总线节点的振荡器容差来确定。

如果要获得一个给定速率下的最大总线长度,就应考虑采样点应该尽可能接近周期的末尾处。如果要使系统中每个节点可以有更大的振荡器容差,则需要在位周期中点附近选择采样点,正是由于振荡器容差和总线长度的矛盾,所以需要我们优化位定时参数,使得系统获得更大的振荡器容差和最大总线长度。

本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。

❼ 28335的CAN中 #if0和#if1 是什么意思

if(1)中的1表示真,这个if总是成立,if(0)中的0表示假,这个if总是不成立的,
if这个数是素数,那么就for循环把这个数的所有倍数标记为0,含义:不是素数。输出:for循环,如果这个数依旧被标记为1(是素数),那么输出这个数。
这个算法求素数比较巧妙,是用数组的下标表示所有数(1~n),每个位置存1表示素数,存0表示非素数。

❽ 刚刚接触can,如何去了解j1939,如何将can与j1939联系起来

汽车仪表是汽车与驾驶员进行信息交流的窗口,是汽车信息的中心,能够集中、直观、迅速地反映汽车在行驶过程中的各种动态指标,如行驶速度、里程、电系状况、制动、压力、发动机转速、冷却液温度、油量、各种危险报警。

FAN100这里给出一种基于CAN(Controller Area Network)总线的汽车仪表设计方案。该仪表利用CAN总线使其成为车身网络一部分,遵循SAE J1939协议读取发动机转速、水温等信息。仪表还能接收传感器的车速、油量、油压、制动气压等信号并显示,为驾驶员提供实时车辆工况。所设计的仪表主要应用于重型运输车等领域,在某重型车辆工厂进行的试验结果表明,该仪表能够满足数据可靠性及实时性等要求。

1 CAN总线及SAE J1939协议

1.1 CAN总线及SAE J1939协议简介

FAN100CAN总线属于现场总线的范畴,是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制和测试仪器之间的数据交换而开发的一种有效支持分布式控制或实时控制的串行通信网络。CAN总线的通信实时性强,数据传输速率可高达1 Mb/s,通信介质可以是双绞线、同轴电缆或者光导纤维,通过标准的插接件能够方便的连接。CAN总线的数据通信具有突出的可靠性、实时性和灵活性,是目前应用最广泛的一种汽车总线。

FAN100SAE J1939协议是美国汽车工程师协会SAE(Societv of AutomoTIve Engineer)发布的以CAN2.0B作为网络核心协议的车辆网络串行通信和控制协议。J1939是参照ISO的开放式数据互联模型定义的7层基准参考模型而制定的。该协议明确规定汽车内部ECU的地址配置、命名、通讯方式以及报文发送优先级等,并且对汽车内部各个具体的ECU通讯作了详细的说明。它使用多路复用技术,为汽车上的各种传感器、执行器和控制器提供建立在CAN总线基础上的标准化的高速网络连接,在车载电子装置之间实现高速数据共享,有效地减少了电子线束的数量,提高了车辆电子控制系统的灵活性、可靠性、可维修性和标准化程度,更大程度地发挥了CAN优异的性能。

1.2 SAE J1939数据帧格式

FAN100SAE J1939数据帧是以PDU(协议数据单元)为单位,共由优先权(P)、保留位(R)、数据页(DP)、PDU格式(PF)、PDU细节(Ps)、源地址 (SA)及数据域(Date Field)等7个域组成。除了数据域之外的PDU对应于CAN扩展帧的29位标识符。其中PS是1个8位段,其定义取决于PF值。若PF值小于 240,PS是目标地址(DA)。若PF值介于240和255之间,则PS为组扩展(GE)。

FAN100有些CAN数据帧不是在PDU中定义,包括SOF、SRR、IDE、RTR、控制域部分、CRC域、ACK域和EOF域。这些域是由CAN定义的,SAE J1939不作修改。

2 CAN总线汽车仪表设计

2.1 仪表整体设计

FAN100该汽车仪表系统由数据采集、处理以及显示3个模块组成。其中数据采集模块负责接收车辆的各种数据,并将数据预处理后发送至微处理器。其中模拟量信号、脉冲信号以及开关量信号等传感器信号在各传感器处采集后,分别经过分压、滤波整形以及光电隔离后发送至微处理器。而发动机转速、水温和故障代码等CAN总线数据通过发动机CAN模块发送至CAN总线后,通过CAN收发器进行接收。微处理器接收到需要的数据后,根据预定的算法对数据进行处理,并将处理结果输出。显示模块包括指针、 LCD以及各种信号灯的显示。微处理器将发动机转速、车速等结果输出至电机驱动器,驱动器驱动步进电机转动,从而带动指针显示;微处理器直接驱动LCD显示及LED灯的亮灭。汽车仪表系统结构如图1所示。

FAN100图5为系统主程序流程,该系统主程序流程分为:1)系统初始化。系统初始化主要包括初始化系统时钟、CAN节点、LCD液晶屏、步进电机等,并使能CAN 中断,设置CAN屏蔽码和验收码。CAN节点初始化主要是初始化CAN控制器并中断CAN控制器:2)读取传感器以及CAN总线数据,并驱动指针以及 LCD等显示,同时等待CAN接收中断。3)CAN接收中断产生,进入接收中断子程序读取数据。判断数据是否符合数据接收条件,如果符合,则接收数据。此过程逐位比较接收到的29位标识符与验收码、屏蔽码,只有标识符相应位与验收码相应位相同,系统才开始接收数据。4)处理器将接收的报文进行解析,提取需要的数据并进行处理。处理器对传感器传来的数据和CAN总线读取的数据进行处理计算,得到相应的指针驱动参数,计算出指针转角,并根据初始化的步进电机的参数计算出指针转动速度。指针转动速度与相应的参数变化速度成正比。同时计算出车辆行驶里程并累加到总路程上。5)处理器将包含车辆工况的一组脉冲序列发送至步进电机驱动器,驱动器驱动步进电机以微步方式转动,指示出相应的发动机转速、车速、水温以及油压等;处理器将包含车辆总路程等信息的数据发送至 LCD控制器,控制器控制LCD显示相应的总路程等:处理器改变相应的I/O引脚状态直接点亮/关闭相应的指示灯。

2.4 故障显示

FAN100该仪表能够从CAN总线接收故障代码并对故障代码进行解析,与预先写入的故障码比对后找到对应的故障信息并显示在LCD屏幕上。每一类型的数据都有特定的数据帧ID,系统根据帧ID判断故障产生的位置。如果收到的是单帧故障,则系统来提取总字节数和总包数;如果收到的是多帧故障,系统则连续提取故障诊断报文至特定的字节,然后根据故障代码查找故障类型。

3 结束语

在研究CAN总线和SAE J1939协议的基础上,设计CAN总线汽车仪表。该设计充分利用LM3S2948以及VID6606的功能,较大程度上降低了系统外围电路的设计以及成本。多次实车试验结果表明,相对于常规仪表,该CAN总线仪表具有以下优点:抗干扰能力强,传输速率高,能够保证数据有效、快速、稳定地传输;减少车身布线,硬件方案软件化实现,简化了设计,降低了成本;及时、直观地查看车辆故障;CAN总线将整车构成一个网络系统,能够提升系统的灵活性,方便地增加设备,扩大了可开发的空间。

❾ 什么是P2P软件目前那种P2P软件好用而且病毒少

P2P普及系列之一

拓扑结构是指分布式系统中各个计算单元之间的物理或逻辑的互联关系,结点之间的拓扑结构一直是确定系统类型的重要依据。目前互联网络中广泛使用集中式、层次式等拓扑结构,Interne本身是世界上最大的非集中式的互联网络,但是九十年代所建立的一些网络应用系统却是完全的集中式的系统、很多Web应用都是运行在集中式的服务器系统上。集中式拓扑结构系统目前面临着过量存储负载、Dos攻击等一些难以解决的问题。

P2P系统一般要构造一个非集中式的拓扑结构,在构造过程中需要解决系统中所包含的大量结点如何命名、组织以及确定结点的加入/离开方式、出错恢复等问题。

根据拓扑结构的关系可以将P2P研究分为4种形式:中心化拓扑(Centralized Topology);全分布式非结构化拓扑(Decentralized Unstructured Topology);全分布式结构化拓扑(Decentralized Structured Topology,也称作DHT网络)和半分布式拓扑(Partially Decentralized Topology)。

其中,中心化拓扑最大的优点是维护简单发现效率高。由于资源的发现依赖中心化的目录系统,发现算法灵活高效并能够实现复杂查询。最大的问题与传统客户机/服务器结构类似,容易造成单点故障,访问的“热点”现象和法律等相关问题,这是第一代P2P网络采用的结构模式,经典案例就是着名的MP3共享软件Napster。

Napster是最早出现的P2P系统之一,并在短期内迅速成长起来。Napster实质上并非是纯粹的P2P系统,它通过一个中央服务器保存所有Napster用户上传的音乐文件索引和存放位置的信息。当某个用户需要某个音乐文件时,首先连接到Napster服务器,在服务器进行检索,并由服务器返回存有该文件的用户信息;再由请求者直接连到文件的所有者传输文件。

Napster首先实现了文件查询与文件传输的分离,有效地节省了中央服务器的带宽消耗,减少了系统的文件传输延时。这种方式最大的隐患在中央服务器上,如果该服务器失效,整个系统都会瘫痪。当用户数量增加到105或者更高时,Napster的系统性能会大大下降。另一个问题在于安全性上,Napster并没有提供有效的安全机制。

在Napster模型中,一群高性能的中央服务器保存着网络中所有活动对等计算机共享资源的目录信息。当需要查询某个文件时,对等机会向一台中央服务器发出文件查询请求。中央服务器进行相应的检索和查询后,会返回符合查询要求的对等机地址信息列表。查询发起对等机接收到应答后,会根据网络流量和延迟等信息进行选择,和合适的对等机建立连接,并开始文件传输。

这种对等网络模型存在很多问题,主要表现为:
(1)中央服务器的瘫痪容易导致整个网络的崩馈,可靠性和安全性较低。
(2)随着网络规模的扩大,对中央索引服务器进行维护和更新的费用将急剧增加,所需成本过高。
(3)中央服务器的存在引起共享资源在版权问题上的纠纷,并因此被攻击为非纯粹意义上的P2P网络模型。对小型网络而言,集中目录式模型在管理和控制方面占一定优势。但鉴于其存在的种种缺陷,该模型并不适合大型网络应用。

P2P普及系列之二

Pastry是微软研究院提出的可扩展的分布式对象定位和路由协议,可用于构建大规模的P2P系统。在Pastry中,每个结点分配一个128位的结点标识符号(nodeID) ,所有的结点标识符形成了一个环形的nodeID空间,范围从0到2128 - 1 ,结点加入系统时通过散列结点IP地址在128位nodeID空间中随机分配。

在MIT,开展了多个与P2P相关的研究项目:Chord,GRID和RON。Chord项目的目标是提供一个适合于P2P环境的分布式资源发现服务,它通过使用DHT技术使得发现指定对象只需要维护O(logN)长度的路由表。

在DHT技术中,网络结点按照一定的方式分配一个唯一结点标识符(Node ID) ,资源对象通过散列运算产生一个唯一的资源标识符(Object ID) ,且该资源将存储在结点ID与之相等或者相近的结点上。需要查找该资源时,采用同样的方法可定位到存储该资源的结点。因此,Chord的主要贡献是提出了一个分布式查找协议,该协议可将指定的关键字(Key) 映射到对应的结点(Node) 。从算法来看,Chord是相容散列算法的变体。MIT GRID和RON项目则提出了在分布式广域网中实施查找资源的系统框架。

T&T ACIRI中心的CAN(Content Addressable Networks) 项目独特之处在于采用多维的标识符空间来实现分布式散列算法。CAN将所有结点映射到一个n维的笛卡尔空间中,并为每个结点尽可能均匀的分配一块区域。CAN采用的散列函数通过对(key, value) 对中的key进行散列运算,得到笛卡尔空间中的一个点,并将(key, value) 对存储在拥有该点所在区域的结点内。CAN采用的路由算法相当直接和简单,知道目标点的坐标后,就将请求传给当前结点四邻中坐标最接近目标点的结点。CAN是一个具有良好可扩展性的系统,给定N个结点,系统维数为d,则路由路径长度为O(n1/d) ,每结点维护的路由表信息和网络规模无关为O(d) 。

DHT类结构最大的问题是DHT的维护机制较为复杂,尤其是结点频繁加入退出造成的网络波动(Churn)会极大增加DHT的维护代价。DHT所面临的另外一个问题是DHT仅支持精确关键词匹配查询,无法支持内容/语义等复杂查询。

半分布式结构(有的文献称作 Hybrid Structure)吸取了中心化结构和全分布式非结构化拓扑的优点,选择性能较高(处理、存储、带宽等方面性能)的结点作为超级点(英文文献中多称作:SuperNodes, Hubs),在各个超级点上存储了系统中其他部分结点的信息,发现算法仅在超级点之间转发,超级点再将查询请求转发给适当的叶子结点。半分布式结构也是一个层次式结构,超级点之间构成一个高速转发层,超级点和所负责的普通结点构成若干层次。最典型的案例就是KaZaa。

KaZaa是现在全世界流行的几款p2p软件之一。根据CA公司统计,全球KaZaa的下载量超过2.5亿次。使用KaZaa软件进行文件传输消耗了互联网40%的带宽。之所以它如此的成功,是因为它结合了Napster和Gnutella共同的优点。从结构 上来说,它使用了Gnutella的全分布式的结构,这样可以是系统更好的扩展,因为它无需中央索引服务器存储文件名,它是自动的把性能好的机器成为SuperNode,它存储着离它最近的叶子节点的文件信息,这些SuperNode,再连通起来形成一个Overlay Network. 由于SuperNode的索引功能,使搜索效率大大提高。

P2P普及系列之三

全分布非结构化网络在重叠网络(overlay)采用了随机图的组织方式,结点度数服从"Power-law"[a][b]规律,从而能够较快发现目的结点,面对网络的动态变化体现了较好的容错能力,因此具有较好的可用性。同时可以支持复杂查询,如带有规则表达式的多关键词查询,模糊查询等,最典型的案例是Gnutella。

Gnutella是一个P2P文件共享系统,它和Napster最大的区别在于Gnutella是纯粹的P2P系统,没有索引服务器,它采用了基于完全随机图的洪泛(Flooding)发现和随机转发(Random Walker)机制。为了控制搜索消息的传输,通过TTL (Time To Live)的减值来实现。具体协议参照〔Gnutella协议中文版〕

在Gnutella分布式对等网络模型N中,每一个联网计算机在功能上都是对等的,既是客户机同时又是服务器,所以被称为对等机(Servent,Server+Client的组合)。

随着联网节点的不断增多,网络规模不断扩大,通过这种洪泛方式定位对等点的方法将造成网络流量急剧增加,从而导致网络中部分低带宽节点因网络资源过载而失效。所以在初期的Gnutella网络中,存在比较严重的分区,断链现象。也就是说,一个查询访问只能在网络的很小一部分进行,因此网络的可扩展性不好。所以,解决Gnutella网络的可扩展性对该网络的进一步发展至关重要。

由于没有确定拓扑结构的支持,非结构化网络无法保证资源发现的效率。即使需要查找的目的结点存在发现也有可能失败。由于采用TTL(Time-to-Live)、洪泛(Flooding)、随机漫步或有选择转发算法,因此直径不可控,可扩展性较差。

因此发现的准确性和可扩展性是非结构化网络面临的两个重要问题。目前对此类结构的研究主要集中于改进发现算法和复制策略以提高发现的准确率和性能。

全分布非结构化网络在重叠网络(overlay)采用了随机图的组织方式,结点度数服从"Power-law"[a][b]规律,从而能够较快发现目的结点,面对网络的动态变化体现了较好的容错能力,因此具有较好的可用性。同时可以支持复杂查询,如带有规则表达式的多关键词查询,模糊查询等,最典型的案例是Gnutella。

Gnutella是一个P2P文件共享系统,它和Napster最大的区别在于Gnutella是纯粹的P2P系统,没有索引服务器,它采用了基于完全随机图的洪泛(Flooding)发现和随机转发(Random Walker)机制。为了控制搜索消息的传输,通过TTL (Time To Live)的减值来实现。具体协议参照〔Gnutella协议中文版〕

在Gnutella分布式对等网络模型N中,每一个联网计算机在功能上都是对等的,既是客户机同时又是服务器,所以被称为对等机(Servent,Server+Client的组合)。

随着联网节点的不断增多,网络规模不断扩大,通过这种洪泛方式定位对等点的方法将造成网络流量急剧增加,从而导致网络中部分低带宽节点因网络资源过载而失效。所以在初期的Gnutella网络中,存在比较严重的分区,断链现象。也就是说,一个查询访问只能在网络的很小一部分进行,因此网络的可扩展性不好。所以,解决Gnutella网络的可扩展性对该网络的进一步发展至关重要。

由于没有确定拓扑结构的支持,非结构化网络无法保证资源发现的效率。即使需要查找的目的结点存在发现也有可能失败。由于采用TTL(Time-to-Live)、洪泛(Flooding)、随机漫步或有选择转发算法,因此直径不可控,可扩展性较差。

因此发现的准确性和可扩展性是非结构化网络面临的两个重要问题。目前对此类结构的研究主要集中于改进发现算法和复制策略以提高发现的准确率和性能。

P2P普及系列之四

半分布式结构的优点是性能、可扩展性较好,较容易管理,但对超级点依赖性大,易于受到攻击,容错性也受到影响。下表比较了4种结构的综合性能,比较结果如表1-1所示。

比较标准/拓扑结构 中心化拓扑 全分布式非结构化拓扑 全分布式结构化拓扑 半分布式拓扑
可扩展性 差 差 好 中
可靠性 差 好 好 中
可维护性 最好 最好 好 中
发现算法效率 最高 中 高 中
复杂查询 支持 支持 不支持 支持

表1:4种结构的性能比较

P2P普及系列之五

国外开展P2P研究的学术团体主要包括P2P工作组(P2PWG) 、全球网格论坛(Global Grid Forum ,GGF) 。P2P工作组成立的主要目的是希望加速P2P计算基础设施的建立和相应的标准化工作。P2PWG成立之后,对P2P计算中的术语进行了统一,也形成相关的草案,但是在标准化工作方面工作进展缓慢。目前P2PWG已经和GGF合并,由该论坛管理P2P计算相关的工作。GGF负责网格计算和P2P计算等相关的标准化工作。

从国外公司对P2P计算的支持力度来看,Microsoft公司、Sun公司和Intel公司投入较大。Microsoft公司成立了Pastry项目组,主要负责P2P计算技术的研究和开发工作。目前Microsoft公司已经发布了基于Pastry的软件包SimPastry/ VisPastry。Rice大学也在Pastry的基础之上发布了FreePastry软件包。

在2000年8月,Intel公司宣布成立P2P工作组,正式开展P2P的研究。工作组成立以后,积极与应用开发商合作,开发P2P应用平台。2002年Intel发布了. Net基础架构之上的Accelerator Kit (P2P加速工具包) 和P2P安全API软件包,从而使得微软. NET开发人员能够迅速地建立P2P安全Web应用程序。

Sun公司以Java技术为背景,开展了JXTA项目。JXTA是基于Java的开源P2P平台,任何个人和组织均可以加入该项目。因此,该项目不仅吸引了大批P2P研究人员和开发人员,而且已经发布了基于JXTA的即时聊天软件包。JXTA定义了一组核心业务:认证、资源发现和管理。在安全方面,JXTA加入了加密软件包,允许使用该加密包进行数据加密,从而保证消息的隐私、可认证性和完整性。在JXTA核心之上,还定义了包括内容管理、信息搜索以及服务管理在内的各种其它可选JXTA服务。在核心服务和可选服务基础上,用户可以开发各种JXTA平台上的P2P应用。

P2P实际的应用主要体现在以下几个方面:

P2P分布式存储
P2P分布式存储系统是一个用于对等网络的数据存储系统,它可以提供高效率的、鲁棒的和负载平衡的文件存取功能。这些研究包括:OceanStore,Farsite等。其中,基于超级点结构的半分布式P2P应用如Kazza、Edonkey、Morpheus、Bittorrent等也是属于分布式存储的范畴,并且用户数量急剧增加。

计算能力的共享
加入对等网络的结点除了可以共享存储能力之外,还可以共享CPU处理能力。目前已经有了一些基于对等网络的计算能力共享系统。比如SETI@home。目前SETI@home采用的仍然是类似于Napster的集中式目录策略。Xenoservers向真正的对等应用又迈进了一步。这种计算能力共享系统可以用于进行基因数据库检索和密码破解等需要大规模计算能力的应用。

P2P应用层组播
应用层组播,就是在应用层实现组播功能而不需要网络层的支持。这样就可以避免出现由于网络层迟迟不能部署对组播的支持而使组播应用难以进行的情况。应用层组播需要在参加的应用结点之间实现一个可扩展的,支持容错能力的重叠网络,而基于DHT的发现机制正好为应用层组播的实现提供了良好的基础平台。
Internet间接访问基础结构(Internet Indirection Infrastructure)。

为了使Internet更好地支持组播、单播和移动等特性,Internet间接访问基础结构提出了基于汇聚点的通信抽象。在这一结构中,并不把分组直接发向目的结点,而是给每个分组分配一个标识符,而目的结点则根据标识符接收相应的分组。标识符实际上表示的是信息的汇聚点。目的结点把自己想接收的分组的标识符预先通过一个触发器告诉汇聚点,当汇聚点收到分组时,将会根据触发器把分组转发该相应的目的结点。Internet间接访问基础结构实际上在Internet上构成了一个重叠网络,它需要对等网络的路由系统对它提供相应的支持。

P2P技术从出现到各个领域的应用展开,仅用了几年的时间。从而证明了P2P技术具有非常广阔的应用前景。

P2P普及系列之六

随着P2P应用的蓬勃发展,作为P2P应用中核心问题的发现技术除了遵循技术本身的逻辑以外,也受到某些技术的发展趋势、需求趋势的深刻影响。

如上所述,DHT发现技术完全建立在确定性拓扑结构的基础上,从而表现出对网络中路由的指导性和网络中结点与数据管理的较强控制力。但是,对确定性结构的认识又限制了发现算法效率的提升。研究分析了目前基于DHT的发现算法,发现衡量发现算法的两个重要参数度数(表示邻居关系数、路由表的容量)和链路长度(发现算法的平均路径长度)之间存在渐进曲线的关系。

研究者采用图论中度数(Degree)和直径(Diameter)两个参数研究DHT发现算法,发现这些DHT发现算法在度数和直径之间存在渐进曲线关系,如下图所示。在N个结点网络中,图中直观显示出当度数为N时,发现算法的直径为O(1);当每个结点仅维护一个邻居时,发现算法的直径为O(N)。这是度数和直径关系的2种极端情况。同时,研究以图论的理论分析了O(d)的度和O(d)的直径的算法是不可能的。

从渐进曲线关系可以看出,如果想获得更短的路径长度,必然导致度数的增加;而网络实际连接状态的变化造成大度数邻居关系的维护复杂程度增加。另外,研究者证明O(logN)甚至O(logN/loglogN)的平均路径长度也不能满足状态变化剧烈的网络应用的需求。新的发现算法受到这种折衷关系制约的根本原因在于DHT对网络拓扑结构的确定性认识。

非结构化P2P系统中发现技术一直采用洪泛转发的方式,与DHT的启发式发现算法相比,可靠性差,对网络资源的消耗较大。最新的研究从提高发现算法的可靠性和寻找随机图中的最短路径两个方面展开。也就是对重叠网络的重新认识。其中,small world特征和幂规律证明实际网络的拓扑结构既不是非结构化系统所认识的一个完全随机图,也不是DHT发现算法采用的确定性拓扑结构。

实际网络体现的幂规律分布的含义可以简单解释为在网络中有少数结点有较高的“度”,多数结点的“度”较低。度较高的结点同其他结点的联系比较多,通过它找到待查信息的概率较高。

Small-world[a][b]模型的特性:网络拓扑具有高聚集度和短链的特性。在符合small world特性的网络模型中,可以根据结点的聚集度将结点划分为若干簇(Cluster),在每个簇中至少存在一个度最高的结点为中心结点。大量研究证明了以Gnutella为代表的P2P网络符合small world特征,也就是网络中存在大量高连通结点,部分结点之间存在“短链”现象。

因此,P2P发现算法中如何缩短路径长度的问题变成了如何找到这些“短链”的问题。尤其是在DHT发现算法中,如何产生和找到“短链”是发现算法设计的一个新的思路。small world特征的引入会对P2P发现算法产生重大影响。

P2P普及系列之七

有DHT算法由于采用分布式散列函数,所以只适合于准确的查找,如果要支持目前Web上搜索引擎具有的多关键字查找的功能,还要引入新的方法。主要的原因在于DHT的工作方式。

基于DHT的P2P系统采用相容散列函数根据精确关键词进行对象的定位与发现。散列函数总是试图保证生成的散列值均匀随机分布,结果两个内容相似度很高但不完全相同的对象被生成了完全不同的散列值,存放到了完全随机的两个结点上。因此,DHT可以提供精确匹配查询,但是支持语义是非常困难的。

目前在DHT基础上开展带有语义的资源管理技术的研究还非常少。由于DHT的精确关键词映射的特性决定了无法和信息检索等领域的研究成果结合,阻碍了基于DHT的P2P系统的大规模应用。

P2P发现技术中最重要的研究成果应该是基于small world理论的非结构化发现算法和基于DHT的结构化发现算法。尤其是DHT及其发现技术为资源的组织与查找提供了一种新的方法。

随着P2P系统实际应用的发展,物理网络中影响路由的一些因素开始影响P2P发现算法的效率。一方面,实际网络中结点之间体现出较大的差异,即异质性。由于客户机/服务器模式在Internet和分布式领域十几年的应用和大量种类的电子设备的普及,如手提电脑、移动电话或PDA。这些设备在计算能力、存储空间和电池容量上差别很大。另外,实际网络被路由器和交换机分割成不同的自治区域,体现出严密的层次性。

另一方面,网络波动的程度严重影响发现算法的效率。网络波动(Churn、fluctuation of network)包括结点的加入、退出、失败、迁移、并发加入过程、网络分割等。DHT的发现算法如Chord、CAN、Koorde等都是考虑网络波动的最差情况下的设计与实现。由于每个结点的度数尽量保持最小,这样需要响应的成员关系变化的维护可以比较小,从而可以快速恢复网络波动造成的影响。但是每个结点仅有少量路由状态的代价是发现算法的高延时,因为每一次查找需要联系多个结点,在稳定的网络中这种思路是不必要的。

同时,作为一种资源组织与发现技术必然要支持复杂的查询,如关键词、内容查询等。尽管信息检索和数据挖掘领域提供了大量成熟的语义查询技术,由于DHT精确关键词映射的特性阻碍了DHT在复杂查询方面的应用。

P2P普及系列之八

Internet作为当今人类社会信息化的标志,其规模正以指数速度高速增长.如今Internet的“面貌”已与其原型ARPANET大相径庭,依其高度的复杂性,可以将其看作一个由计算机构成的“生态系统”.虽然Internet是人类亲手建造的,但却没有人能说出这个庞然大物看上去到底是个什么样子,运作得如何.Internet拓扑建模研究就是探求在这个看似混乱的网络之中蕴含着哪些还不为我们所知的规律.发现Internet拓扑的内在机制是认识Internet的必然过程,是在更高层次上开发利用Internet的基础.然而,Internet与生俱来的异构性动态性发展的非集中性以及如今庞大的规模都给拓扑建模带来巨大挑战.Internet拓扑建模至今仍然是一个开放性问题,在计算机网络研究中占有重要地位.

Internet拓扑作为Internet这个自组织系统的“骨骼”,与流量协议共同构成模拟Internet的3个组成部分,即在拓扑网络中节点间执行协议,形成流量.Internet拓扑模型是建立Internet系统模型的基础,由此而体现的拓扑建模意义也可以说就是Internet建模的意义,即作为一种工具,人们用其来对Internet进行分析预报决策或控制.Internet模型中的拓扑部分刻画的是Internet在宏观上的特征,反映一种总体趋势,所以其应用也都是在大尺度上展开的.对Internet拓扑模型的需求主要来自以下几个方面1) 许多新应用或实验不适合直接应用于Internet,其中一些具有危害性,如蠕虫病毒在大规模网络上的传播模拟;(2) 对于一些依赖于网络拓扑的协议(如多播协议),在其研发阶段,当前Internet拓扑只能提供一份测试样本,无法对协议进行全面评估,需要提供多个模拟拓扑环境来进行实验;(3) 从国家安全角度考虑,需要在线控制网络行为,如美国国防高级研究计划局(DARPA)的NMS(network modeling and simulation)项目。

随机网络是由N个顶点构成的图中,可以存在条边,我们从中随机连接M条边所构成的网络。还有一种生成随机网络的方法是,给一个概率p,对于中任何一个可能连接,我们都尝试一遍以概率p的连接。如果我们选择M = p,这两种随机网络模型就可以联系起来。对于如此简单的随机网络模型,其几何性质的研究却不是同样的简单。随机网络几何性质的研究是由Paul,Alfréd Rényi和Béla Bollobás在五十年代到六十年代之间完成的。随机网络在Internet的拓扑中占有很重要的位置。

随机网络参数
描述随机网络有一些重要的参数。一个节点所拥有的度是该节点与其他节点相关联的边数,度是描述网络局部特性的基本参数。网络中并不是所有节点都具有相同的度,系统中节点度的分布情况,可以用分布函数描述,度分布函数反映了网络系统的宏观统计特征。理论上利用度分布可以计算出其他表征全局特性参数的量化数值。

聚集系数是描述与第三个节点连接的一对节点被连接的概率。从连接节点的边的意义上,若为第i个节点的度,在由k.个近邻节点构成的子网中,实际存在的边数E(i)与全部k.个节点完全连接时的总边数充的比值定义为节点i的聚集系数。

emule很不错,不过不要用verycd版的,有搜索限制,用官方原版的更好。
bt下载也很好
参考资料:http://www.p2psky.com/tech/article2976.html

❿ can总线通讯协议

随着集成电路和嵌入式电脑在汽车上的广泛应用,现代汽车上的电子控制器的数量越来越多,常见的有发动机的电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电动门窗装置、主动悬架等。电控系统的增加虽然提高了轿车的动力性、经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度。从布线角度分析,传统的电子气系统大多采用点对点的单一通信方式,相互之间少有联系,这样必然造成宠大的布线系统。因此,一种新的概念——汽车上电子控制器局域网络CAN,也就应运而生。为使不同厂家生产的零部件能在同一辆汽车上协调工作,必须制定标准。按照ISO有关标准,CAN的拓扑结构为总线,因此称为CAN总线。CAN总线被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECN之间交 换信息,在车载各电子控制装置ECN之间交换信息,形成汽车电子控制网络。

控制器局域网CAN(Controller Area Network)是一种多主方式的串行通信总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。CAN在汽车上的应用,具有很多行业标准或者是国际标准,比如国际标准化组织(ISO)的ISO11992、ISO11783以及汽车工程协会(Societyof Automotive Engigeers)的SAE J1939。CAN总线已经作为汽车的一种标准设备列入汽车的整车设计中。
CAN总线简介
CAN通信协议规定了4种不同的帧格式,即数据帧、远程帧、错误帧和超载帧。基于以下几条基本规则进行通信协调:总线访问、仲裁、编码/解码、出错标注和超裁标注。CAN遵从OSI模型。按照OSI基准模型只有三层:物理层、数据链路层和哀告层,但应用层尚需用户自己定义。CAN总线作为一种有效支持分布式控制或实时控制的串行通信网络,应用范围遍及从高速网络到低成本的多线路网络。如:CAN在汽车中的发动机控制部件、ABS、抗滑系统等应用中的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电器系统中,例如电气窗口、灯光聚束、座椅调节等,以替代所需要的硬件连接。其传输介制裁为双绞线,通信速率最高可达1Mbps/40m,直接传输距离最远可达10km/5kbps,挂接设备数最多可达110个。CAN为多主工作方式,通信方式灵活,无需站地址等节点信息,采用非破坏性总线仲裁技术,满足实时要求。另外,CAN采用短帧结构传输信号,传输时间短,具有较强的抗干扰能力。
CAN总线与其它通信协议的不同之处主要有两方面:一是报文传送不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符过滤报文,其特点是可在线上网下网、即插即用和多站接收;另外一个方面就是特别强化了数据安全性,满足控制系统及其它较高数据要求系统的需求。
在现代汽车的设计中,CAN总线已经成为构建汽车网络的一种趋势;而汽车网络作为直接与汽车内部各个ECU连接并负责命令的传递、数据的发送及共享,其可靠性和稳定性与整车的性能紧密相关。本文的设计开发是在基于试验条件下搭建的仿真平台,节点之间的通信是通过对等的CAN通信节点进行的。试验表明其运行性能稳定可靠,但实用化仍需要进一步的研究和改进,且程序的通信处理能力、纠错和容错能力有待进一步的提高.
比如:
把CAN总线融合到嵌入式平台中,在其ARM-EP9315和ARM-S3C2440嵌入式平台上都做到了CAN总线功能的实现!ARM嵌入式控制平台,具有开放、集成度高、尺寸小、可扩展性强、低功耗等特点,非常适合与数字家电、车载设备、通信终端、网络设备等的应用。如今有了CAN总线的实现,使其在此方面的应用更为有效!

基于单片机AT89C52的CAN总线分布式测控系统的研制
1 CAN总线网络的技术特点[1][2]
用通讯数据块编码,可实现多主工作方式,数据收发方式灵活,可实现点对点、一点对多点及全局广播等多种传输方式;可将DCS结构中主机的常规测试与控制功能分散到各个智能节点,节点控制器把采集到的数据通过CAN适配器发送到总线,或者向总线申请数据,主机便从原来繁重的底层设备监控任务中解放出来,进行更高层次的控制和管理功能,比如故障诊断、优化协调等;

采用非破坏性基于优先权的总线仲裁技术,具有暂时错误和永久性故障节点的判别及故障节点的自动脱离功能,使系统其它节点的通信不受影响;同时,CAN具有出错帧自动重发功能,可靠性高;

信号传输用短帧结构(8字节),实时性好;

不关闭总线即可任意挂接或拆除节点,增强了系统的灵活性和可扩展性;

采用统一的标准和规范,使各设备之间具有较好的互操作性和互换性,系统的通用性好;

通讯介质可采用双绞线,无特殊要求;现场布线和安装简单,易于维护,经济性好。

总之,CAN总线具有实时性强、可靠性高、结构简单、互操作性好、价格低廉等优点,克服了传统的工业总线的缺陷,是构建分布式测控系统的一种有效的解决方案。

2系统总体硬件设计方案
首先,定义各节点的功能,确定各节点检测或控制量的数目、类型、信号特征。这是进行微机测控系统网络化的第一步。原则是尽量避免重复测试。智能节点模块绝大部分是输入输出模块,调节回路可以跨模块构成回路。但考虑到调节回路的安全性,为了保证在上位机或整个通信线路出现重大故障时回路调节不受到影响,设计了隔离型、自整定PID、隔离型温度调节器等带有调节功能的模块。它们的输入输出通道都在同一模块中,其底层软件的功能很强,所有的输入处理、输出增量的计算(多种调节算法可通过组态选择,包括串级调节)、输出,包括自整定模块的过程参数的自动识别都在本模块实现,保证了调节回路的安全性、可靠性。

其次,选择各节点控制器和相应的CAN适配元件。由于各测控节点功能相对单一,数据量少,因此对CPU的要求大大降低,采用8051系列单片机即可满足要求。CAN 总线适配器件主要有:控制器接口、总线收发器和I/O器件。采用Philips公司生产的82C200CAN控制器和与其配套的82C250CAN收发器。82C200具有完成高性能通信协议所要求的全部必要特性。具有简单总线连接的82C200可完成物理层和数据链路层的所有功能。
最后,按照CAN总线物理层协议选择总线介质,设计布线方案,连接成CAN总线分布式测控网络。如图1所示。
3系统的硬件组成[3][4][5]
(1)CAN总线接口模块
① 微处理器
目前广泛流行的CAN总线器件有两大类:一类是独立的CAN控制器,如82C200,SJA1000及Intel 82526/82527等;另一类是带有芯片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。根据当前市场、开发工具和课题的实际需要,系统的智能节点均选用ATMEL 8位单片机AT89C52为微处理器。

② CAN控制器
CAN控制器选用SJA1000作为控制器。SJA1000是高集成度CAN控制器。具有多主结构、总线访问优先权、成组与广播报文功能及硬件滤波功能。输入时钟频率为16MHh时钟,输出可编程控制。由以下几部分构成:接口管理逻辑、发送缓存器、接收缓存器、位流处理器、位定时逻辑、收发逻辑、错误管理逻辑、控制器接口逻辑等。

SJA1000有很多新功能 :标准结构和扩展结构报文的接受和发送;64字节的接收FIFO;标准和扩展帧格式都具有单/双接收滤波器;可进行读/写访问的错误计数器;可编织的错误报警限制:最近一次的错误代码寄存器;每一个CAN总线错误都可以产生错误中断;具有丢失仲裁定位功能的丢失仲裁中断;单发方式(当发主错误或丢失仲裁时不重发);只听方式(监听CAN总线,无应答,无错误标志);支持热插拔(无干扰软件驱动位速率监测)。因此,系统的智能节点均选用SJA1000作为CAN控制器。

③ CAN总线收发器
CAN总线收发器选用PCA82C250作为总线收发器。 PCA82C250是CAN 协议控制器和物理总线之间的接口。82C250 可以为总线提供不同的发送性能,为CAN 控制器提供不同的接收性能。而且它与“ISO 11898”标准完全兼容。PCA82C250的目的是为了增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI)实现热防护等。为了进一步提高抗干扰措施,在两个CAN器件之间使用了由高速隔离器件6N137构成的隔离电路。 CAN器件与微处理器的硬件连接如图2所示。
硬件电路的设计并不太困难,但有几点应引起注意:
总线两端两个120Ω的电阻,对于匹配总线阻扰,起着相当重要的作用。忽略掉它们,会使数据通信的抗干扰性及可靠性大大降低,甚至无法通信。

82C50第8脚与地之间的电阻Rs称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式,在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低、总线较短时,一般采用斜率控制方式,上升及下降的斜率取决于民的阻值,实验数据表明15~200kΩ为Rs较理想的取值范围,在该方式下,可以使用平行线或双绞线作总线。

SJA1000的TX1脚悬空,RX1引脚的电位必须维持在约0.5Vcc上,否则,将不能形成CAN协议所要求的电平逻辑。如果系统传输距离近,环境干扰小,可以不用电流隔离,这样可直接把82C250的VREF端(约为0.5 Vcc)与RX1脚相连,从而简化了电路。

在系统中,SJA1000的片选信号一般由地址总线经译码获得,并由此决定出CAN控制器各寄存器的地址。实际应用中,采用单片机AT89C52的P2.7为片选信号。所以,SJA1000的地址为:7F00~7F32H。

当上电复位时,AT89C52的上电复位,需要从低到高的电平变化来激活,而SJA1000的17脚RST被激活,需要出现一个由高电平到低电平的跳变,因此,这必须加一个反相器。

(2)数据采集模块
数据采集模块用来将各类传感器的数据传送到CAN总线上。整个电路包括:看门狗X5045,单片机89C52,锁存器74LS373,A/D转换器ADC0809以及CAN控制器SJA1000和收发器82C250。电路板如图3。

数据采集模块的工作原理:各类传感器采集到数据后将0—5V的模拟量传送到ADC0809,0809将转换成的数字量传给89C52,最后单片机将采集到的数据送到SJA1000通过CAN总线收发器82C250传上总线,完成数据采集工作。

(3)控制模块
是一个带有CAN通信功能的隔离型控制器。该模块有一个数据输入点,可以是命令或其他信号,有一个模拟量输出,供输出执行机构是连续变化的控制系统使用,例如控制步进电机;还有一路是数字量输出,供执行机构是两位式的控制系统使用,例如开关设备。这个控制器可以单独作为一个调节器使用,因为在该模块上提供了完整的显示窗口和操作按钮,可以设定温度设定值、PID调节参数等运行过程中可以显示被控对象的PV值和SV值。该模块可以根据设定的控制点及升、降的时间实现自动调节。带有CAN通信口,可以与微机实现通信,也就是说控制模块可以接入CAN 网络系统。通过上位机实现对多个节点上的控制模块设定各控制点的上下限控制点、PID值、实现时间等控制参数,并实时记录各控制器的测量值,描绘出变化曲线,供实验人员对实验结果进行分析。如图4所示。

4系统软件设计
(1)CAN 总线通讯模块
CAN总线测控系统的通信软件分为3部分:CAN初始化、数据发送和数据接收。
① CAN初始化
其主要是设置CAN的通信参数。需要初始化的寄存器有:模式寄存器(Peli CAN模式)、时分寄存器、接收代码寄存器、屏蔽寄存器、总线定时寄存器、输出控制寄存器等。需要注意的是,这些寄存器仅能在复位期间可写访向,因此,在对这些寄存器初始化前,必须确保系统进入了复位状态,并且系统中各CAN控制器的总线定时寄存器的初始化字必须相同。

② 数据发送
现场的各传感器把环境多参数的检测信号(数字量、模拟量、开关量)进行转换处理后,发向CAN控制器的发送缓冲区,然后启动CAN控制器的发送命令,此时CAN控制器将自动向总线发送数据,不再需传感器的微控制器进行干预。若系统中有多个传感CAN控制器同时向总线发送数据,则CAN控制器通过信息帧中的标识符来进行仲裁,标识符数值最小的CAN控制器具有对总线的优先使用权。

③ 数据接收
整个温室微机测控系统中的CAN控制器检测到总线上有数据时会自动接收总线上的数据,存入其接收缓冲区,并向89C52微控制器发送接收中断,启动中断接收服务程序,89C52通过执行中断接收服务程序,从CAN控制器的接收缓冲区读取数据,并对其进行进一步处理工作。

(2)监控模块
集成了所有的数据采集、参数设定、数据统计分析等功能。同时,为了实现操作人员对生产过程的人工干预,如修改给定值、控制参数和报警限等,添加了参数的修改功能;为了建立人机信息联系,并且能将各节点传输来的数据以图形、图表或其它动态方式显示出来,本系统可以使用任何具有DDE(Dynamic Data Exchange)接口的MMI(Man-Machine interface)软件;为了更好的管理各种数据,采取了组态控制方式,能够接收来自MMI软件以及用户软件的DDE连接请求,并将该请求传递给通信驱动部分,由通信驱动转换为通信信号通过传输媒体传递给智能模块的固化软件。并将模块的应答作为DDE操作的结果返回给MMI软件及用户软件。

5 结论
将先进的现场总线技术(CAN BUS)应用于智能测控系统,大大提高了系统的可靠性;自主开发了符合国际标准的基于单片机的智能节点,不仅大量节约了资金,而且可以购置通用的同类设备,可节约大量的研发费用;基于工控机的上位机提供了良好的人机界面,使操作更加方便,直观。

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:944
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:741
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:372