<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > CAN總線(xiàn)與PC機串口通信適配器設計與實(shí)現

CAN總線(xiàn)與PC機串口通信適配器設計與實(shí)現

作者: 時(shí)間:2009-09-16 來(lái)源:網(wǎng)絡(luò ) 收藏
引 言

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

CAN總線(xiàn)及CAN控制器SJA1000簡(jiǎn)介

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

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

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

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

RS-232標準

串行通信由于接線(xiàn)少、成本低,在數據采集和控制系統中得到了廣泛的應用,1969年,美國電子工業(yè)協(xié)會(huì )( EIA)公布了RS-232C作為串行通信接口的電氣標準,該標準定義了數據終端設備(DTE)和數據通信設備(DCE)間按位串行傳輸的接口信息,合理安排了接口的電氣信號和機械要求,在世界范圍內得到了廣泛的應用。

系統總體結構原理及設計

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



CAN總線(xiàn)接口硬件設計
圖2為CAN總線(xiàn)通信接口硬件設計簡(jiǎn)圖。



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

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

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

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

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

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>