RS485總線在智能供電系統(tǒng)中的應(yīng)用
?。?)各臺(tái)下位機(jī)不相互通信,且不主動(dòng)發(fā)送命令和數(shù)據(jù),同一時(shí)刻只有一個(gè)下位機(jī)發(fā)送信息給上位機(jī)。為了識(shí)別每個(gè)下位機(jī),系統(tǒng)通過撥碼開關(guān)等硬件電路為其分配一個(gè)特定地址。進(jìn)行通訊前,上位機(jī)首先通過RS485總線廣播地址信息,所有下位機(jī)都偵聽廣播,并中斷接收。下位機(jī)接收到地址信息后,進(jìn)行地址比對(duì),若地址相同,則該下位機(jī)把本機(jī)地址作為應(yīng)答信號(hào)發(fā)送回上位機(jī),然后開始準(zhǔn)備接收上位機(jī)發(fā)來的操作數(shù)據(jù)信息,而其它的下位機(jī)因地址不符,從中斷返回。上位機(jī)接收下位機(jī)發(fā)回的應(yīng)答地址信息后,比較地址信息,如果相符,正式發(fā)送數(shù)據(jù)信息,如果不符則重新發(fā)送地址信息。下位機(jī)收到上位機(jī)發(fā)送的操作數(shù)據(jù)包后,根據(jù)數(shù)據(jù)包格式把有效數(shù)據(jù)做累加,然后與接收到的累加和(即校驗(yàn)碼)比較,若相同,則執(zhí)行相應(yīng)的操作,并發(fā)送成功回饋信息給上位機(jī);若不相同,則說明發(fā)送的數(shù)據(jù)中有錯(cuò)誤,將接收數(shù)據(jù)緩存區(qū)清零,并要求上位機(jī)重新發(fā)送。
3.2PC上位機(jī)軟件設(shè)計(jì)
系統(tǒng)上位機(jī)程序采用DELPHI語言編寫,它具有功能強(qiáng)大、簡(jiǎn)便易用和代碼執(zhí)行速度快的特點(diǎn),是新一代可視化快速應(yīng)用開發(fā)工具。利用DELPHI實(shí)現(xiàn)串口通信常用的方法有3種:(1)利用控件,如SPCOMM控件、MSCOMM控件及APRO控件等;(2)使用API函數(shù);(3)調(diào)用其他串口通信程序。本系統(tǒng)選用較簡(jiǎn)單的SPCOMM控件來完成串口選擇、波特率設(shè)置、幀格式設(shè)置、發(fā)送和接收緩沖區(qū)控制、打開串口等任務(wù),用Timer控件控制發(fā)送地址碼信息。上位機(jī)PC串行通訊流程圖如圖2所示,其串口通信部分相關(guān)程序如下:
procedureTform1.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;
接收程序代碼:
procedureTform1.Comm1ReceiveData(Buffer:Pointer;BufferLength:Word);
Begin
move(buffer︿,(@rbuf)︿,bufferlength);//將緩沖區(qū)數(shù)據(jù)轉(zhuǎn)移到rbuf變量
ifoper_comm=truethen
begin
判斷接受到下位機(jī)發(fā)送的應(yīng)答信息,若是則繼續(xù)執(zhí)行
sendbuf:=操作命令字符;//發(fā)送操作命令
comm1.writecommdata(@sendbuf,1);
oper_comm.:=false;
end;
elsebegin
雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評(píng)論