<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è) > 嵌入式系統 > 設計應用 > 基于RS-485協(xié)議設計智能數據采集網(wǎng)絡(luò )儀表

基于RS-485協(xié)議設計智能數據采集網(wǎng)絡(luò )儀表

作者: 時(shí)間:2016-11-17 來(lái)源:網(wǎng)絡(luò ) 收藏
一、引言

在由以單片機為核心構成的儀器儀表、智能設備等諸多數據采集系統中,往往需要實(shí)現計算機與單片機之間的數據交換,這也就是單片機與計算機之間的通信,以此來(lái)充分發(fā)揮單片機與計算機各自的長(cháng)處,提升整個(gè)應用系統性能及性?xún)r(jià)比。傳統的基于RS-232協(xié)議的通信由于傳輸距離短、速度慢、信號易受干擾等不足,使得其應用局限性日益突出。有鑒于此,作者在文中討論了如何基于RS-485通信協(xié)議,構建RS-485通信網(wǎng)絡(luò ),實(shí)現若干單片機與計算機之間遠程通信。

本文引用地址:http://dyxdggzs.com/article/201611/315458.htm

二、硬件設計

1.RS-485通信簡(jiǎn)介

RS-485是EIA(美國電子工業(yè)協(xié)會(huì ))制定的平衡發(fā)送、平衡接收的標準異步串行總線(xiàn),它具有傳輸距離遠、靈敏度高、多點(diǎn)通信能力強等優(yōu)點(diǎn)。RS-485接口標準參見(jiàn)表一。

2.MAX485芯片介紹

RS-485轉換接口芯片我們采用MAXIM公司的MAX485(見(jiàn)圖一),該芯片采用單電源+5V工作,額定電流300uA,半雙工通信方式,它完成將TTL電平轉換成

RS-485電平。該芯片具有8條引腳,內部含2個(gè)驅動(dòng)器和接收器,RO,DI分別為接收器的輸出端和驅動(dòng)器的輸入端,二者分別接單片機TXD和RXD。/RE和DE分別為接收和發(fā)送使能端,當/RE=0時(shí),MAX485處于接收狀態(tài);當DE=1時(shí),MAX485處于發(fā)送狀態(tài)。因為MAX485工作在半雙工狀態(tài),所以它與單片機連接時(shí)接線(xiàn)非常簡(jiǎn)單,只需用單片機一個(gè)管腳控制這兩個(gè)引腳即可。A端和B端分別為接收和發(fā)送的差分信號端,當VA大于VB時(shí),表示發(fā)送數據為“1”,當VA小于VB時(shí),表示發(fā)送數據為“0”,工作時(shí),A、B之間應加匹配電阻,一般可選100~120歐。

.電平轉換接口

在PHILIPSP89C51RD2單片機與計算機進(jìn)行通信時(shí),必須對電平作一轉換。因為單片機與計算機之間是RS-485網(wǎng)絡(luò ),單片機側信號經(jīng)MAX485后,從TTL電平轉換為RS-485電平信號,因此,在計算機側必須再把RS-485信號轉換成RS-232電平信號,這樣,二者才能正確通信。在本系統采用DAC-8520轉換器,把RS485信號轉換為RS-232信號,該轉換器數據轉換傳輸速度快,且不需要用戶(hù)對其進(jìn)行初始化和參數修改。

表一RS-485接口標準

4.計算機端接口

計算機采用可編程串行異步通信控制器8251A來(lái)實(shí)現,通過(guò)對8251A初始化可以控制串行數據傳送格式和速度及其工作方式,使得它與單片機的通信方式一致,從而實(shí)現計算機與單片機之間的通信。

三、多點(diǎn)通信

3.1多點(diǎn)通信原理

RS485總線(xiàn)標準是在RS-422基礎上發(fā)展起來(lái)的,它增加了多點(diǎn)雙向通信能力,使分布式網(wǎng)絡(luò )的多點(diǎn)通信得以實(shí)現。我們在了解了器件的驅動(dòng)能力后,就可以根據需要和驅動(dòng)能力加入需要的節點(diǎn)。本系統就是利用一臺計算機控制多達32塊單片機,計算機通過(guò)發(fā)送控制字和工作方式字來(lái)確定和所需要的單片機建立通信連接。單片機根據計算機發(fā)送的指令進(jìn)行數據采集,并根據需要與計算機交換數據或對生產(chǎn)過(guò)程參數及所連設備狀態(tài)進(jìn)行調整。計算機對單片機傳回的數據進(jìn)行分析與計算后,再將相關(guān)控制信息傳給單片機。

51系列單片機用于多點(diǎn)通信時(shí)必須工作在方式2或方式3。以方式3為例,每發(fā)送一幀數據為11位:1位起始位(0),8位數據位和1位停止位(1),附加的第9位數據在非多點(diǎn)通信系統中為奇偶校驗位,在發(fā)送端有SCON的TB8產(chǎn)生,在接收端傳送到RB8。它還可設定為“0”或“1”作為在多點(diǎn)通信中區分數據幀(0標志)還是地址幀(1標志)的標志。在51系列單片機多點(diǎn)通信系統中有以下通信協(xié)議:所有的各從機均處于聽(tīng)命狀態(tài),即SM2=1,以便接收主機發(fā)送來(lái)的地址,當接收到一幀信息的RB8為“1”時(shí),表示主機發(fā)送來(lái)的是地址信息,所有的從機均發(fā)生接收中斷,否則中斷屏蔽。當一從機進(jìn)入相應的中斷服務(wù)程序,把接收到的地址和本機的地址比較,如果符合就令其SM2=0,并向主機發(fā)回本機地址以作應答,該從機就與主機連通,準備接收主機發(fā)來(lái)的命令或數據信息,而其他的未被尋址的從機保持SM2=1并退出各自的中斷服務(wù)程序。這樣,只有SM2=0的從機才能接收到主機發(fā)來(lái)的數據信息,順利實(shí)現地址幀和數據幀的分離。被尋址的從機在通信完成后重新使SM2=1,并退出中斷服務(wù)程序,等待下次通信。

3.2多點(diǎn)通信協(xié)議

實(shí)現計算機和單片機的正常通信,必須正確設置它們兩者之間的工作方式,保證雙方都用相同的波特率、起始位、停止位、奇偶校驗位,并且要建立雙方通信的應答信號。

單片機既可以工作在同步移位寄存器方式,也可工作在UART(通用異步收發(fā)器)下。串行口的通信方式是由特殊功能寄存器SCON來(lái)控制的。其各位定義如下:

SM0,SM1:工作模式設定位;SM2:允許使用方式2、3多機通信控制位;RB8:接收數據第9位;TB8:發(fā)送數據第9位;TI發(fā)送中斷標志;RI:接收中斷標志。本文中工作方式為方式3,即9位UART定時(shí)器T1作為波特率發(fā)生器,工作在方式2,若選定波特率為9600bps,則記數初值為0FAH(SMOD=0,時(shí)鐘頻率Fosc為11.0592MHz)

計算機的異步通信接口為INTEL8251A,它可設定1位、1.5位或2位停止位,數據可在5到8位之間選擇,通信頻率為0到9600bps,有奇偶校驗、幀校驗、溢出校驗三種方式??赏ㄟ^(guò)對它寫(xiě)入一定的方式控制字、命令控制字從而進(jìn)行初始化。它的工作狀態(tài)寄存于狀態(tài)寄存器中,可由P89C51RD2的CPU讀取。通信協(xié)議如下:(1)串行通信波特率為9600bps;(2)幀格式為8位數據位,一位起始位,一位可編程的第9位(即發(fā)送和接收的地址/數據位的標志位),一位停止位;(3)主機和從機遵循主從原則,主機用呼叫方式選擇從機,數據在主機和從機之間雙向傳遞,各從機之間的相互通信需通過(guò)主機作為中介;(4)主從機之間還應傳送一些供它們識別的命令和狀態(tài)字,如以00H表示主機發(fā)送從機接收命令,以01H表示從機發(fā)送主機接收命令等。

四、軟件設計

該部分主要包括主機程序、從機和其中斷服務(wù)程序組成。主機程序主要完成對串口初始化以及主機與從機之間的通信。而從機主程序主要完成對串口的初始化、波特率的設置(應與主機端的波特率一致),它的中斷程序主要完成P89C51RD2與計算機的數據通信。

1.單片機部分

單片機端程序在KEIL公司提供的優(yōu)秀可視化集成開(kāi)發(fā)環(huán)境uVISION2中用C語(yǔ)言編寫(xiě)。通信波特率9600bps,晶振11.0592Mhz。需要注意的是PHILIPSP89C51RD2的1個(gè)機器周期為6個(gè)時(shí)鐘周期,與標準8051單片機1個(gè)機器周期為12個(gè)時(shí)鐘周期不同,因此,在相關(guān)參數設置時(shí)要注意這一差別,否則,無(wú)法正確建立通信連接。為配合多機通信方式,我們采用工作方式3.

單片機通信流程圖如圖二所示。

單片機串口初始化程序如下:

main()

{TMOD=0x20;

/*定時(shí)器1方式2*/

TH1=0xfa;

/*9600波特率晶振11.0592MHz*/

TCON=0x40;

/*啟動(dòng)定時(shí)器1*/

SCON=0x50;

/*允許接收*/

IE=0x90;

/*允許串行口中斷*/

………..

2.計算機部分

計算機端程序我們采用優(yōu)秀的可視化軟件VisualBasic編寫(xiě),其中關(guān)鍵部分是引用VisualBasic的串行通信控件MSComm,發(fā)送和接收完全由該控件管理實(shí)現,而不需要以往繁瑣的驅動(dòng)程序編寫(xiě)。這無(wú)疑大大提高了工作效率,降低了開(kāi)發(fā)成本。

計算機通信流程如圖三所示。

下面給出用VB6編制的通信程序:

Dim inbyte()ASByte’定義動(dòng)態(tài)字節型數組

PrivateSubtxd_click()’通信建立及數據發(fā)送控制按鈕

IfMSComm1.PortOpen=TrueThenGoTojj

如通信端口開(kāi)則跳至jj

MSComm1.CommPort=1

’通信端口為COM1

MSComm1.Settings="9600,n,8,1"

’串口初始化為9600波特,8位數據位,1位停止位,無(wú)校驗

MSComm1.PortOpen=True

’打開(kāi)通信端口

jj:Mscomm1.output=Text1.text

’發(fā)送地址碼

………..

Mscomm1.output=text2.text’發(fā)送工作方式控制字,采集通道以及校驗碼

EndSub

PrivateSubrxd_click()’數據接收按鈕

Inbyte()=Mscomm1.input’接收的數據存于動(dòng)態(tài)字節數組

…….’省略數據處理部分

EndSub

五、結束語(yǔ)

利用RS-485串行通信,可以保證快速、穩定、遠距離傳送數據。本文設計的系統已在智能數據采集網(wǎng)絡(luò )儀表中得到成功應用,其通信設計方法還可以稍加修改即可移植到其他的工業(yè)測控系統中。由于本文設計方法開(kāi)發(fā)成本低,設計簡(jiǎn)單,在目前及以后的工業(yè)控制和其他方面必將得到越來(lái)越多的應用。



評論


相關(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>