www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 通信技術 > 通信技術
[導讀]介紹了一種在工業(yè)測控系統(tǒng)中具有通用性的,基于CAN總線控制器SJA1000的,CAN總線與PC機通過RS-232互連的串口網絡通信接口適配器的設計,詳細說明了該適配器的硬件配置、電路結構和軟件設計。并對軟硬件設計中遇到的幾個關鍵問題進行了討論。該設計方案實現(xiàn)了管理監(jiān)控層(上位PC機)和現(xiàn)場生產測控層(現(xiàn)場CAN總線網)之間的連接。充分體現(xiàn)CAN總線的靈活性和可擴展性。其實際應用結果表明:該適配器可靠性高,運行穩(wěn)定,具有很強的實用推廣價值。

引 言

CAN總線(Controller AreaNetwork,控制器局域網)具有高性能、高可靠性、高性價比、連接方便、實時性好及其獨特的設計等突出優(yōu)點應用于許多工業(yè)部門,目前已成為比較流行的一種現(xiàn)場總線,廣泛應用于控制系統(tǒng)中的各檢測和執(zhí)行機構之間的數(shù)據(jù)通信。而實際應用中PC機與CAN總線的人機交互設計尤為重要,它直接影響系統(tǒng)的運行和結果,其連接方法也成為系統(tǒng)設計的重點,通常采取3種連接方式:RS-232串行口通信、PCI卡、USB口通信,由于串行通信端口在系統(tǒng)控制領域中一直扮演著極為重要的角色,以其開發(fā)簡單,資源豐富,成本低,無需驅動程序等諸多優(yōu)點,不僅沒有被淘汰,反而在規(guī)格上更先進,故應用廣泛。結合設計中AT89C51單片機有串行通信口且接口簡單的特點,選用RS-232作為CAN總線與PC機之間的連接方式。將就這一基于CAN控制器SJA1000與AT89C51的具有通用性的工業(yè)測控系統(tǒng)設計的軟硬件設計方案作詳細介紹。

CAN總線及CAN控制器SJA1000簡介

CAN總線最初是德國Bosch公司在1986 年為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種支持分布式實時控制系統(tǒng)的串行數(shù)據(jù)通訊總線。CAN總線與其它通信網的顯著不同之處在于:
(1)報文傳送中不包含目標地址,它是以全網廣播為基礎,各接收站根據(jù)報文中反映數(shù)據(jù)性質的標識符過濾報文,該收的收下,不收的棄用。其好處是可線上網下網、即插即用和多站接收。

(2)特別強化了對數(shù)據(jù)安全性的關注,滿足控制系統(tǒng)及其它較高數(shù)據(jù)要求的系統(tǒng)需求。另外CAN總線采用短幀結構,借助接收濾波的多地址幀傳送,受干擾概率低,每幀信息都有CRC校驗及其它檢錯措施。響應遠程數(shù)據(jù)請求,配置靈活,具有全系統(tǒng)的數(shù)據(jù)相容性。節(jié)點數(shù)主要取決于總線驅動電路,目前最多可達110個節(jié)點。CAN總線符合ISO11898標準,通信速率高,最大傳輸速率可達1Mbit/S,最大傳輸距離為10km,傳輸介質可為雙絞線?;贑AN總線以上的特點,把它應用于系統(tǒng)分布比較分散且需要在同一總線上掛接多個節(jié)點的場合是非常適合的。

目前廣泛流行的CAN總線器件有兩大類:一類是獨立的CAN控制器,如PhilipS公司的PCA82C200,SJA1000及Intel82256/82257等;另一類是帶有在片CAN的微控制器,如P8XC582等。其中Philips公司的PCA82C200是符合CAN2. 0A協(xié)議的總線控制器,SJA1000是它的替代產品,它是應用于汽車和一般工業(yè)環(huán)境的獨立CAN總線控制器。具有完成CAN通信協(xié)議所要求的全部特性。經過簡單總線連接的SJA1000可完成CAN總線的物理層和數(shù)據(jù)鏈路層的所有功能。其硬件與軟件設計和PCA82C200的基本CAN模式(BasicCAN)兼容。同時,新增加的增強CAN模式( PeliCAN)還可支持CAN2. 0B協(xié)議。根據(jù)當前市場開發(fā)工具和課題的實際需要,選用SJA1000作為CAN控制器,同時使用了CAN控制器接口芯片PCA82C250。

SJA1000有兩種工作模式:基本模式和增強模式。在基本模式下,SJA1000只可收發(fā)標準數(shù)據(jù)幀(標準數(shù)據(jù)幀的標識符為11位),且錯誤報警的極限值不能修改;在增強模式下,SJA1000既可接收標準數(shù)據(jù)幀,也可接收擴展數(shù)據(jù)幀(擴展數(shù)據(jù)幀的標識符為29位),可修改錯誤報警的極限值,并且SJA1000具有更加靈活的濾波方式,能夠根據(jù)數(shù)據(jù)幀的標識符有選擇地接收一些數(shù)據(jù)幀。另外,增強模式下的SJA1000能夠進行自檢,即可通過自發(fā)自收一組報文來判斷該控制節(jié)點是否正常地掛在CAN總線上。使用者所要做的主要工作是SJA1000的初始化,收發(fā)報文的處理以及對節(jié)點脫離總線的檢測量與處理。

RS-232標準

串行通信由于接線少、成本低,在數(shù)據(jù)采集和控制系統(tǒng)中得到了廣泛的應用,1969年,美國電子工業(yè)協(xié)會( EIA)公布了RS-232C作為串行通信接口的電氣標準,該標準定義了數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通信設備(DCE)間按位串行傳輸?shù)慕涌谛畔ⅲ侠戆才帕私涌诘碾姎庑盘柡蜋C械要求,在世界范圍內得到了廣泛的應用。

系統(tǒng)總體結構原理及設計

該適配器利用RS-232串行通信口及CAN總線進行數(shù)據(jù)通信,實現(xiàn)上位機與各智能節(jié)點間的通信任務,包括控制臺(上位機)向下傳輸命令和下位機數(shù)據(jù)的返回,以完成對下層設備的監(jiān)控。圖1為系統(tǒng)結構框圖。PC機通過RS-232與CAN控制器SJA1000通信,實現(xiàn)信息在CAN總線上的發(fā)送與接收。底層各智能節(jié)點根據(jù)應用的不同具有不同功能,但都具有與CAN總線通信能力可以上傳數(shù)據(jù)和接收數(shù)據(jù)。



CAN總線接口硬件設計
圖2為CAN總線通信接口適配器硬件設計簡圖。



PCA82C250提供對總線的差動發(fā)送和對CAN控制器的差動接收功能,也增大了通信距離,提高了系統(tǒng)的瞬間抗干擾能力,保護總線,降低射頻干擾(RFI),實現(xiàn)了熱防護等功能。

系統(tǒng)軟件設計
軟件設計分PC機Visual BasiC編程和AT89C51單片機C語言編程2部分。

PC機部分
采用VB6. 0編程,這樣界面非常直觀,人機交互效果好。VB提供了具有通訊功能的MSComm. OCX控件,該控件可設置串行通信的數(shù)據(jù)發(fā)送和接收,對串口狀態(tài)及串口通信的信息格式和協(xié)議進行設置。MSComm控件提供2種處理通訊的方式:(1)事件驅動通訊,即發(fā)送或接收數(shù)據(jù)過程中觸發(fā)ONCOMM事件,通過編程訪問CommEvent屬性了解通信事件的類型,分別進行各自的處理;(2)查詢方式,通過檢查CommEvent屬性的值來查詢事件和錯誤。采取查詢方式??丶﨧SComm是將RS-232的初級操作予以封裝,用戶以高級的BasiC語法即可利用RS-232與外界通信并不需要了解其他有關的初級操作,因此使用方便。
MSComm控件初始化:
MSComm1. CommPort= 2 設置串口2
MSComm1. SettingS=“9600,N,8,1” 設定工作方式
MSComm1. InBufferSize = 10 根據(jù)1次傳1個CAN幀,設置輸入緩沖區(qū)大小
MSComm1. InputMode = 1 二進制形式接收
MSComm1. InputLeN= 0 一次讀出輸入緩沖區(qū)中的所有數(shù)據(jù)
MSComm1. OutBufferSize = 10 輸出緩沖區(qū)大小的設置
MSComm1. OutBufferCount= 0 清空輸出緩沖區(qū)
MSComm1. PortOpeN= True  打開串口

PC機與單片機MSC51之間的通信約定如下:一般情況下PC與多個MSC51單片機系統(tǒng)進行主從式通信,其方案是MSC51采用串口工作方式3,即11位異步接收/發(fā)送方式,有效數(shù)據(jù)為9位,其中第9位為地址/數(shù)據(jù)信息的標志位,以此區(qū)分各從機。但現(xiàn)在PC機采用VB編程,其MSComm控件為標準的10位串口通信,包括8位標準數(shù)據(jù)和數(shù)據(jù)的起始位和停止位。將單片機串口設為工作方式1,即改為10位異步接收/發(fā)送方式,通訊流程如下:

通訊時首先發(fā)通信開始標志,接著發(fā)送各下位機單片機的地址信號和芯片的片選信號,然后發(fā)送單片機的工作命令字。再往下即進行數(shù)據(jù)處理,轉入相應的處理功能模塊,最后對數(shù)據(jù)進行效驗。這個通訊流程非常簡便,實現(xiàn)了PC機與單片機之間的主從式通訊。

以下為VB的發(fā)送接收程序:
Private SuBcmdSendàClick() 使用按鈕控件
MSComm1. Output= txtSend. Text 將傳送區(qū)內的字符串以Output屬性送出
End Sub
Private SuBFormàLoad() 窗體的加載事件
MSComm1. PortOpeN= True  將通訊斷口開啟,通訊參數(shù)也可以在開啟前先設定
MSComm1. RThreshold = Val (txtThreshold. Text) 設定引發(fā)接收事件的接收閾值,使程序一執(zhí)行便開啟通訊端口,將接收的閾值設定為閾值,設定文本框內的值。
End Sub
Private SuBMSComm1. OnComm() 通訊控件的OnComm事件。引發(fā)接收事件后,將字符收進來并放在接收的文本框中
SelectCase MSComm1. CommEvent 根據(jù)下面每一個case 語句處理每個事件和錯誤事件
  Case comEvCD  CD 線的狀態(tài)發(fā)生變化
  Case commEvReceive  收到Rthreshold # of
  txtReceive. Text= txtReceive. Text+ Trim(MSComm1. Input)&vbCrLf
  Case comEvSend  傳輸緩沖區(qū)有Sthreshold 個字符
End Select
End Sub
Private SuBtxtThreshold Change ( ) p閾值設定文本框的Change事件
MSComm1. Rthreshold = Val (txtThreshold. Text) p當設定的閾值變化時,實時改變通訊對象的屬性
End Sub

AT89C51單片機部分
單片機部分采用C語言編程。C語言編程具有快捷、模塊功能強大、可靠性好、效率高等優(yōu)點。其中程序初始化包括設定串口工作方式,定時器、中斷寄存器初始化,各變量的初始化。

TMOD = 0x20; //定時器1為發(fā)生器
SCON= 0x50; //串口工作方式1
TH1= 0xfd ; //設定波特率= 9600bit/s
TL1= 0xfd ;
EA= 1; //開中斷
ES= 1; //允許串口中斷
TR1= 1; //啟動定時器T1
SPECHAR = 0xff ; //設定通訊開始標志

程序采用中斷接收,查詢發(fā)送的方式。串口中斷服務程序流程圖如圖3所示。


SJA1000控制器部分

初始化子程序CANINIT()
選用CAN2. 0協(xié)議構建CAN總線控制網絡,對SJA1000的初始化主要包括工作方式的設置、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、波特率的參數(shù)設置等。
void canàinit(void) /*SJA1000的初始化子函數(shù)*/
{control = 1; /*禁止超載、出錯及接收中斷,并置復位請求位使其進入復位狀態(tài)*/
 while (control&0x01== 0);
 acceptanceàcode = 0x01; /*驗收碼寄存器(存機號1號)*/
 acceptanceàmask= 0xfe ; /*驗收屏蔽碼寄存器*/
 busàtimingà0= 0x03; /*總線定時寄存器0,同步跳轉寬度
T0= T,BPS= 125 k*/
 busàtimingà1= 0x18; /*總線定時寄存器1,T1= 9T,T2=2T,波特率為500kbit/S*/
 outputàcontrol = 0x1A; /*正常輸出方式,TX1引腳懸浮*/
 clockàdivider = 0x40; /*BASICCAN模式,RX1接固定電平*/
 control = 0x1A; /*清復位請求,使其進入工作狀態(tài)*/
}

發(fā)送canàsend()
發(fā)送子程序負責節(jié)點報文的發(fā)送,由CAN控制器SJA1000獨立完成,將命令寄存器里的發(fā)送請求標志置位,即可發(fā)送SJA1000發(fā)送緩沖區(qū)中的報文。
void canàsend(unsigned char ID ,char*xdata) /*該子函數(shù)完成一幀數(shù)據(jù)的發(fā)送*/
{while ( (status&0x10)>> 4 == 1)àNOPà; /*檢查上次請求發(fā)送是否完成*/
while ( (status&0x04)>> 2== 0)àNOPà;
Transmitbuffer1= ID;
Transmitbuffer2= 0x08;
Transmitbuffer3= txdata[0] ;
Transmitbuffer10= txdata[7] ;
Command = 0x05 ; /*發(fā)送請求*/
while ( (status&0x08)>> 3== 0);
}

接收子程序canàreceive ()
接收子程序負責節(jié)點報文的接收。SJA1000自動接收發(fā)往該節(jié)點的數(shù)據(jù)并將收到的數(shù)據(jù)放到它的接收緩沖器中。
SJA1000的報文接收主要有2種方式:中斷接收方式和查詢接收方式。系統(tǒng)采用的是中斷接收方式。
{unsigned char ir ;
 ir = interrupt; /*獲得SJA1000的中斷狀態(tài)*/
 EA= 0;
 If ( (ir&0x04)>> 2== 1)error ( ); /*如果是出錯中斷,則調出錯處理函數(shù)*/
 If ( (ir&0x08)>> 3== 1)overruN( ); /*如果是超載中斷,則調超載處理函數(shù)*/
 While ( ( (ir&0x04)>> 2== 1)‖( ( (ir&0x08)>> 3)== 1){àNOPà;}
  RxID[0] = Receivebuffer1;
  RxID[0] = Receivebuffer2;
If ( ( (Receivebuffer2&0x10)>> 4)== 0) /*如果是數(shù)據(jù)幀,則接收數(shù)據(jù)*/
  {Rxdata[0] = Receivebuffer3;
  .
  Rxdata[7] = Receivebuffer10;
  Command = 0x04 ; /*SJA1000的接收緩存器被釋放*/
  }
 else if ( ( (Receivebuffer2&0x10)>> 4)== 1) /*如果是遠程幀,則作相應處理*/
  {  /*相應處理程序*/
  EA= 1;
  }
}

結束語

介紹了一種低成本、高可靠性、快捷的通用型CAN總線PC機通過RS-232串口互連方案。該互連方案很好地保證了管理監(jiān)控層和現(xiàn)場生產測控層之間的連接,方便了上下層信息交流,滿足工廠、變電站等工業(yè)場合的應用要求。
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

汽車電子系統(tǒng)架構發(fā)生了顛覆性變化。它已經持續(xù)了近十年,現(xiàn)在正在加快速度。這主要發(fā)生在 BEV 初創(chuàng)公司中,因為它們沒有歷史限制或根深蒂固的喜愛設計,并且可以從電子架構的零基礎開始。

關鍵字: CAN總線 電動汽車

在電子產品的設計中,電磁兼容EMC性能對系統(tǒng)的影響非常大,關系到其能正常穩(wěn)定運轉。世界上已經開始對電子產品的電磁兼容性做強制性限制,電磁兼容性能已經成為產品性能的一個重要指標。 電磁兼容主要有兩方面的內容,一個是產...

關鍵字: CAN總線 電磁兼容EMC

CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協(xié)議。在汽車產業(yè)中,出于對安全性、舒適性、方便性、低功耗、低成本的要求,各種各樣的電子控制系統(tǒng)被開發(fā)了出來。...

關鍵字: CAN總線 CAN 抗噪

CAN總線首先在汽車上得到了廣泛應用,之后又在工業(yè)生產領域有了很大發(fā)展,那么面對不同的應用場景和工況,如何選擇合適的網絡拓撲結構慢慢成為一個讓人頭疼的問題。在這篇文章中,我將重點介紹用于驅動這些總線電壓的 CAN 驅動器...

關鍵字: CAN總線 CAN總線拓撲

在進行CAN總線通信前,應保證正確的總線配置,比如終端電阻。它是影響總線通信的重要組件,下面我們不考慮信號的完整性,只從信號幅度和時間常數(shù)方面分析不加終端電阻時的影響。??終端電阻添加要求根據(jù)ISO11898-2對終端電...

關鍵字: 電阻 終端 CAN總線 電平

大家好,我是小麥。最近在調試一個CAN總線的設備遇到一些問題,簡單總結一下。本文會對CAN總線進行簡單介紹,CAN的硬件鏈路層,協(xié)議層,以及調試的一些心得。目錄什么是CAN總線?物理層差分信號連接方式CAN節(jié)點CAN協(xié)議...

關鍵字: CAN總線

大家好,我是小麥。最近在調試一個CAN總線的設備時遇到了一些問題,在此簡單總結一下。本文將對CAN總線進行簡單介紹,包括CAN的硬件鏈路層、協(xié)議層,以及調試的一些心得。目錄什么是CAN總線?物理層差分信號連接方式CAN節(jié)...

關鍵字: CAN總線

數(shù)字信號處理是將信號以數(shù)字方式表示并處理的理論和技術。數(shù)字信號處理與模擬信號處理是信號處理的子集。數(shù)字信號處理的目的是對真實世界的連續(xù)模擬信號進行測量或濾波。因此在進行數(shù)字信號處理之前需要將信號從模擬域轉換到數(shù)字域,這通...

關鍵字: DSP PC機 C語言

摘要:介紹了基于STC12C5A60S2單片機、SJA1000型CAN接口控制器以及PCA82C250串行收發(fā)器構成的總線通信網絡。該網絡中遠端的CAN節(jié)點可監(jiān)測現(xiàn)場環(huán)境,并實現(xiàn)數(shù)據(jù)收發(fā)和串行通信,上位PC機利用VB6....

關鍵字: 單片機 CAN總線 VB6.0 環(huán)境參數(shù)

摘要:蔬菜質量可追溯系統(tǒng)是一種采用C/S和B/S混合模式的農產品質量追溯系統(tǒng)。該系統(tǒng)采用物聯(lián)網技術對蔬菜種植 及加工過程中的所有生產數(shù)據(jù)、檢疫數(shù)據(jù)、加工數(shù)據(jù)、銷售數(shù)據(jù)進行記錄,最終為生產過程控制、生產管理、食品溯源服務。...

關鍵字: 溯源系統(tǒng) 串口通信 波特率 數(shù)據(jù)位

通信技術

120585 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉