當前位置:首頁 » 操作系統 » 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)應用於智能測控系統,大大提高了系統的可靠性;自主開發了符合國際標準的基於單片機的智能節點,不僅大量節約了資金,而且可以購置通用的同類設備,可節約大量的研發費用;基於工控機的上位機提供了良好的人機界面,使操作更加方便,直觀。

熱點內容
在配置更新的時候沒電關機怎麼辦 發布:2024-05-18 20:36:10 瀏覽:926
win7訪問win2000 發布:2024-05-18 20:27:41 瀏覽:387
青島人社局密碼多少 發布:2024-05-18 20:19:10 瀏覽:733
無法存儲呼叫轉移 發布:2024-05-18 20:18:30 瀏覽:125
資料庫的調優 發布:2024-05-18 20:18:29 瀏覽:345
sqlserver注冊表清理 發布:2024-05-18 20:13:14 瀏覽:990
linux刪除連接 發布:2024-05-18 20:06:56 瀏覽:821
linux搭建雲伺服器平台 發布:2024-05-18 19:52:21 瀏覽:401
安卓怎麼關閉美易訂閱 發布:2024-05-18 19:29:16 瀏覽:643
蘋果手機配置代理伺服器怎麼開 發布:2024-05-18 19:29:07 瀏覽:230