摘 要:介紹了RS485串行通信標準及其接口芯片MAX485,給出了PC與多臺TMS320LF2407 DSP之間串行遠程數(shù)據(jù)通訊接口電路。描述了公寓智能供電管理系統(tǒng)中上下微機之間的通訊協(xié)議及串行通信軟件.
關(guān)鍵詞:DSP MAX485 串行通訊
1 引言
本文介紹的分布式公寓智能供電管理系統(tǒng)以一臺主控上位PC機為核心,以RS485協(xié)議為基礎,通過串口連接多臺下位機。下位機以TMS320LF2407 DSP為主控芯片。由于下位機要完成每個房間電壓、電流信號的實時采集、電量實時計算與負載實時識別等多項任務,算法中包含F(xiàn)FT,計算量大,算法復雜,下位機采用DSP芯片是合理的選擇??紤]到DSP原開發(fā)軟件提供的數(shù)據(jù)庫函數(shù)有限,故該系統(tǒng)將一些實時性要求不高的任務,如參數(shù)設定、波形顯示、電能報表輸出等交由上位機處理。本文重點介紹了系統(tǒng)中上下微機之間的串行通訊設計。
2 串行通信接口硬件電路設計
2.1 RS485串行通信標準及MAX485簡介
RS485標準是美國電氣工業(yè)聯(lián)合會(EIA) 制定的以雙絞線作傳輸線的多點通信標準,采用平衡發(fā)送和差分接收,具有較強的抗共模干擾能力,允許雙絞線上一個發(fā)送器驅(qū)動32 個負載設備。它解決了RS232標準傳輸距離近、信號易受干擾的問題,是工業(yè)上廣泛采用的串行通信標準。
MAX485是MAXIM公司推出的低功耗串行收發(fā)器芯片,該芯片支持RS485協(xié)議,采用單+5 V電源工作,內(nèi)部有一個接收器和驅(qū)動器,其電路原理圖見圖1。圖中RO和DI端分別為接收器的輸出和驅(qū)動器的輸入,當與DSP芯片連接時應分別與SCIRXD和SCITXD端相連;/RE和DE端分別為接收和發(fā)送的使能端,當/RE為邏輯0時,器件處于接收狀態(tài),當DE為邏輯1時,器件處于發(fā)送狀態(tài),由于MAX485工作在半雙工狀態(tài),發(fā)送和接收共用同一物理信道,該信道必須分時復用,圖中的/RE和DE連接端即為控制信號端。MAX485的A端和B端分別為接收和發(fā)送的差分信號端,當A引腳電平高于B時,代表發(fā)送的數(shù)據(jù)為1;當A腳電平低于B時,代表發(fā)送的數(shù)據(jù)為0。
2.2 DSP 通信模塊介紹
TMS320LF2407 DSP內(nèi)部有專用的串行通信模塊(SCI),可支持異步串行通信和多處理器通信,其接收器和發(fā)送器是雙緩沖的,收發(fā)端均有獨立的使能和中斷標志位,可以半雙工或全雙工工作。SCI模塊包括SCIRXD(串行通信數(shù)據(jù)接收)和SCITXD (串行通信數(shù)據(jù)發(fā)送) 兩個外部引腳及7個控制類寄存器和3個數(shù)據(jù)類寄存器。通過初始化控制類寄存器,可設置數(shù)據(jù)格式、中斷使能、中斷優(yōu)先級、波特率等參數(shù)。發(fā)送數(shù)據(jù)時,寫1到TXWAKE,將數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖寄存器SCITXBUF即可啟動一次串行發(fā)送;接收數(shù)據(jù)時,從SCIRXD引腳串行移入數(shù)據(jù),存儲在SCIRXBUF中,供CPU 讀取。
2.3 PC機與DSP串行通信接口電路
由于普通PC機上僅配有RS232接口,若要利用上位微機的串行口來實現(xiàn)RS485標準通信,必須進行RS232與RS485接口轉(zhuǎn)換。本設計采用瑞賽特8520接口卡將串行口的RS232標準電平轉(zhuǎn)換成與TTL 電平兼容的RS485標準電平,該接口卡使用簡便、無需再增加任何外圍器件,就可利用標準的PC硬件來輕松構(gòu)造工業(yè)級的長距離通信系統(tǒng)。另外,DSP芯片的工作電壓為+3.3V,而MAX485的工作電壓為+5 V,設計時在二者之間添加了光隔電路,光隔電路既實現(xiàn)了電平轉(zhuǎn)換,又防止了系統(tǒng)模塊與通信模塊在電氣上相互之間的影響。PC機與DSP的串行通信硬件接口電路原理圖如圖1所示。圖中MAX485 的接收使能和發(fā)送使能引腳共同由DSP的PC2口控制,以選擇某一時刻是接收使能還是發(fā)送使能。同時,為保證與傳輸線阻抗匹配,在差分端口A與B之間跨接了120Ω匹配電阻,以消除通信線路中的信號反射。
3 串口通訊軟件設計
3.1 通信協(xié)議
為保證串行通信的準確性和可靠性,上、下位機通信雙方必須具有相同的通訊協(xié)議,即相同的波特率及信息傳送格式。因此,本設計規(guī)定:
?。?)通信雙方的波特率為9600bps;
?。?) TMS320LF2407 DSP內(nèi)部的SCI模塊提供了兩種多機通信模式:空閑線模式和地址位模式,本文中DSP通信采用了較簡單的地址位模式,以保證上位機同所選擇的下位機可靠通信。因此幀數(shù)據(jù)格式定義為:8位數(shù)據(jù)位、1位地址/數(shù)據(jù)識別位(1表示地址、0表示數(shù)據(jù))、1位停止位、無奇偶校驗位;
?。?)各臺下位機不相互通信,且不主動發(fā)送命令和數(shù)據(jù),同一時刻只有一個下位機發(fā)送信息給上位機。為了識別每個下位機,系統(tǒng)通過撥碼開關(guān)等硬件電路為其分配一個特定地址。進行通訊前,上位機首先通過RS485總線廣播地址信息,所有下位機都偵聽廣播,并中斷接收。下位機接收到地址信息后,進行地址比對,若地址相同,則該下位機把本機地址作為應答信號發(fā)送回上位機,然后開始準備接收上位機發(fā)來的操作數(shù)據(jù)信息,而其它的下位機因地址不符,從中斷返回。上位機接收下位機發(fā)回的應答地址信息后,比較地址信息,如果相符,正式發(fā)送數(shù)據(jù)信息,如果不符則重新發(fā)送地址信息。下位機收到上位機發(fā)送的操作數(shù)據(jù)包后,根據(jù)數(shù)據(jù)包格式把有效數(shù)據(jù)做累加,然后與接收到的累加和(即校驗碼)比較,若相同,則執(zhí)行相應的操作,并發(fā)送成功回饋信息給上位機;若不相同,則說明發(fā)送的數(shù)據(jù)中有錯誤,將接收數(shù)據(jù)緩存區(qū)清零,并要求上位機重新發(fā)送。
3.2 PC上位機軟件設計
系統(tǒng)上位機程序采用DELPHI語言編寫,它具有功能強大、簡便易用和代碼執(zhí)行速度快的特點,是新一代可視化快速應用開發(fā)工具。利用DELPHI實現(xiàn)串口通信常用的方法有3種:(1)利用控件,如SPCOMM控件、MSCOMM控件及APRO控件等; (2)使用API函數(shù); (3)調(diào)用其他串口通信程序。本系統(tǒng)選用較簡單的SPCOMM控件來完成串口選擇、波特率設置、幀格式設置、發(fā)送和接收緩沖區(qū)控制、打開串口等任務,用Timer控件控制發(fā)送地址碼信息。上位機PC串行通訊流程圖如圖2所示,其串口通信部分相關(guān)程序如下:
procedure Tform1. Timer1Timer(Sender: TObject);
begin
comm1.BaudRate:=9600;comm1.parity:=None;
comm1.StopBits:=_1; comm1.ByteSize:=_8;
oper_comm:=true; //串口接受數(shù)據(jù)流控制變量
comm1.WriteCommData(@sendbuf,1);
end;
接收程序代碼:
procedure Tform1. Comm1ReceiveData(Buffer: Pointer; BufferLength: Word);
Begin
move(buffer︿,(@rbuf)︿,bufferlength);//將緩沖區(qū)數(shù)據(jù)轉(zhuǎn)移到rbuf變量
if oper_comm=true then
begin
判斷接受到下位機發(fā)送的應答信息,若是則繼續(xù)執(zhí)行
sendbuf:=操作命令字符;//發(fā)送操作命令
comm1.writecommdata(@sendbuf,1);
oper_comm.:=false;
end;
else begin
接收上傳數(shù)據(jù)并求和校驗收到數(shù)據(jù)
end;
End;
3.3 DSP下位機串行通信軟件設計
下位機DSP串行通信的軟件設計可采用查詢和中斷兩種方式,設計中采用了中斷方式接收數(shù)據(jù)、查詢方式發(fā)送數(shù)據(jù)。程序分為主程序和中斷接收服務程序、發(fā)送數(shù)據(jù)程序3個模塊。在主程序中對SCI 異步串口進行初始化(包括操作模式、波特率、字符長度、奇偶校驗位、停止位位數(shù)、中斷優(yōu)先級和使能控制等信息) 。需要注意的是,為了保證通信的穩(wěn)定可靠,串行通信控制寄存器SCICTL1 的休眠位SLEEP 設置很重要,具體方法為:初始化時將所有下位機DSP的SLEEP位都設成1,使得它們在僅當檢測到地址字節(jié)時才被中斷,在中斷服務程序里,將接收的地址與本機地址比對,若相同,則軟件清除SLEEP位以確保SCI在接收到每一數(shù)據(jù)幀都產(chǎn)生中斷,否則SLEEP位仍保持以1,以接收下一個地址幀。DSP接收數(shù)據(jù)中斷流程圖如圖3所示。
[align=center]
[/align]
4 結(jié)束語
本文介紹了公寓智能用電管理系統(tǒng)中利用RS485總線實現(xiàn)PC機和多臺DSP的遠程串行通信設計方案。實踐證明,該設計運行可靠,抗干擾性強、可完成較長距離的串行數(shù)據(jù)通信任務。該方案對其它基于DSP的遠程數(shù)據(jù)通信設計具有一定的參考價值。
本文的創(chuàng)新點是,利用DSP內(nèi)部的專用串行通信模塊SCI及RS485專用接口芯片MAX485實現(xiàn)了PC機與多臺DSP的通信,大大減少了系統(tǒng)的外圍設計,通過正確設置SCI中串行通信控制寄存器SCICTL1 的休眠位SLEEP,避免了通信混亂,提高了總線抗串擾的能力。
參考文獻
[1] 劉和平,王維俊等著. TMS320LF240x DSP C語言開發(fā)應用[M].北京:北京航空航天大學出版社,2003.
[2] 江思敏等著. TMS320LF240x DSP硬件開發(fā)教程[M]. 北京:機械工業(yè)出版社,2003.6.
[3] 張磊,陳建鋒,全力.DSP控制的開關(guān)磁阻電機系統(tǒng)遠程數(shù)據(jù)通信的研究.中小型電機,2005,32(2):43-46
[4] 王煉紅,章兢.TMS320F2812 DSP與PC機的串口通信設計.微計算機信息,2006,07Z:173-175