新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于RS-485接口的通信方法

一種基于RS-485接口的通信方法

作者: 時(shí)間:2012-06-19 來源:網(wǎng)絡(luò) 收藏

  發(fā)送電流或電壓數(shù)據(jù)時(shí),為i(0≦i≦47)開始的8組采集數(shù)據(jù),每組數(shù)據(jù)為4個(gè)字節(jié)。

  采集通道啟用或禁用設(shè)置時(shí),為6個(gè)字節(jié),分別表示48路采集通道的狀態(tài),其中1表示啟用,0表示禁用。

  在廣播方式時(shí)(地址為256),為電流和電壓的上、下限數(shù)據(jù)共8個(gè)字節(jié)。

  *響應(yīng)幀:通過校驗(yàn)后,將接受幀中的命令代碼改寫為V,回送給主節(jié)點(diǎn)進(jìn)行二次確認(rèn),保證數(shù)據(jù)傳送無誤。

3軟件流程和程序清單

  為保證通信暢通和從節(jié)點(diǎn)的本地事務(wù)順利執(zhí)行,設(shè)計(jì)了限時(shí)退出的通信方法,既在收到與自己地址不匹配的數(shù)據(jù)幀時(shí),臨時(shí)關(guān)閉通信口。這樣既保證了本地事務(wù)的執(zhí)行時(shí)間,又可避免從節(jié)點(diǎn)常在網(wǎng)上可能引起的雙向干擾。因此在上、下位機(jī)的軟件設(shè)計(jì)中采用二次檢錯(cuò)、重發(fā)和限時(shí)退出并重新握手建立連接等通信機(jī)制?,F(xiàn)場(chǎng)調(diào)試中發(fā)現(xiàn),在某些節(jié)點(diǎn)工作異常,甚至通信網(wǎng)絡(luò)完全癱瘓的情況下其他各節(jié)點(diǎn)也能獨(dú)立完成數(shù)據(jù)采集、異常報(bào)警和實(shí)時(shí)數(shù)據(jù)存儲(chǔ)等本地事務(wù)。一旦故障節(jié)點(diǎn)排除,既可恢復(fù)通信。

 ?。浖鞒倘缦拢?P>

 ?。浖?shí)現(xiàn)和主要程序清單:

  在處理器內(nèi)留出以COM_REG為首地址的寄存器組,用來存放接受或發(fā)送的一幀數(shù)據(jù)包,并以COM_REG_CUNT寄存器作為一幀數(shù)據(jù)長(zhǎng)度的計(jì)數(shù)器,利用循環(huán)結(jié)構(gòu)很容易編制一幀數(shù)據(jù)包的收發(fā)通用程序了。

  TRANS_485:;收發(fā)通用程序

  BCFRC,R485_P;開啟485通信口。

  _DELAYD‘3‘

  MOVLWCOM_REG

  MOVWFFSR

  MOVLWCOM_REG_CUNT

  MOVWFCOUNT

  CALLRS_HEX_IN;一個(gè)字節(jié)收發(fā)子程序。

  BTFSCSYS_FLAGE,CONMM_ERR;通信錯(cuò)誤狀態(tài)標(biāo)準(zhǔn)位。

  RETURN

  MOVWFINDF

  INCFFSR

  DECFSZCOUNT

  GOTO$-6

  RETURN

  *其他主要子程序:

  XIAO_SUB;校驗(yàn)和子程序

  CLRFTEMP

  MOVFINDF,W

  ADDWFTEMP

  INCFFSR

  DECFSZCOM_REG_CUNT

  GOTO$-4

  RETURN

  ASCH;ASIIC碼轉(zhuǎn)化程序

  MOVWFTEMP

  MOVLWD‘48‘

  SUBWFTEMP,W

  BTFSSSTATUS,C

  RETLW0H

  MOVLWD‘71‘

  SUBWFTEMP,W

  BTFSCSTATUS,C



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉