一種基于RS-485接口的通信方法
發(fā)送電流或電壓數(shù)據(jù)時,為i(0≦i≦47)開始的8組采集數(shù)據(jù),每組數(shù)據(jù)為4個字節(jié)。
采集通道啟用或禁用設置時,為6個字節(jié),分別表示48路采集通道的狀態(tài),其中1表示啟用,0表示禁用。
在廣播方式時(地址為256),為電流和電壓的上、下限數(shù)據(jù)共8個字節(jié)。
?。憫獛和ㄟ^校驗后,將接受幀中的命令代碼改寫為V,回送給主節(jié)點進行二次確認,保證數(shù)據(jù)傳送無誤。
3軟件流程和程序清單
為保證通信暢通和從節(jié)點的本地事務順利執(zhí)行,設計了限時退出的通信方法,既在收到與自己地址不匹配的數(shù)據(jù)幀時,臨時關閉通信口。這樣既保證了本地事務的執(zhí)行時間,又可避免從節(jié)點常在網(wǎng)上可能引起的雙向干擾。因此在上、下位機的軟件設計中采用二次檢錯、重發(fā)和限時退出并重新握手建立連接等通信機制?,F(xiàn)場調試中發(fā)現(xiàn),在某些節(jié)點工作異常,甚至通信網(wǎng)絡完全癱瘓的情況下其他各節(jié)點也能獨立完成數(shù)據(jù)采集、異常報警和實時數(shù)據(jù)存儲等本地事務。一旦故障節(jié)點排除,既可恢復通信。
?。浖鞒倘缦拢?P>
?。浖崿F(xiàn)和主要程序清單:
在處理器內留出以COM_REG為首地址的寄存器組,用來存放接受或發(fā)送的一幀數(shù)據(jù)包,并以COM_REG_CUNT寄存器作為一幀數(shù)據(jù)長度的計數(shù)器,利用循環(huán)結構很容易編制一幀數(shù)據(jù)包的收發(fā)通用程序了。
TRANS_485:;收發(fā)通用程序
BCFRC,R485_P;開啟485通信口。
_DELAYD‘3‘
MOVLWCOM_REG
MOVWFFSR
MOVLWCOM_REG_CUNT
MOVWFCOUNT
CALLRS_HEX_IN;一個字節(jié)收發(fā)子程序。
BTFSCSYS_FLAGE,CONMM_ERR;通信錯誤狀態(tài)標準位。
RETURN
MOVWFINDF
INCFFSR
DECFSZCOUNT
GOTO$-6
RETURN
?。渌饕映绦颍?P> XIAO_SUB;校驗和子程序
CLRFTEMP
MOVFINDF,W
ADDWFTEMP
INCFFSR
DECFSZCOM_REG_CUNT
GOTO$-4
RETURN
ASCH;ASIIC碼轉化程序
MOVWFTEMP
MOVLWD‘48‘
SUBWFTEMP,W
BTFSSSTATUS,C
RETLW0H
MOVLWD‘71‘
SUBWFTEMP,W
BTFSCSTATUS,C
評論