物聯(lián)網(wǎng)技術(shù)日益發(fā)展,其各項技術(shù)逐漸被應(yīng)用到各個行業(yè),下面介紹一種基于RS-485的通信接口方法。
1 網(wǎng)絡(luò)配置
原料碼頭分為引橋(長1700米)、主碼頭(長640米)和副碼頭(長430米)。呈反F形態(tài),由855根鋼樁支撐。每根鋼樁分二或三段加以陰極保護電流以防腐蝕。陰極保護電流總數(shù)可達(dá)2565路。為實時監(jiān)測陰極保護電流的變化,在碼頭各點安裝電流檢測裝置57臺、參比電壓檢測裝置1臺(以下稱從節(jié)點),每臺最大檢測48路電流或64路電壓,通過RS-485網(wǎng)絡(luò)向電氣控制室的PC機(以下稱主節(jié)點)傳送數(shù)據(jù)或由主節(jié)點設(shè)置各個從節(jié)點的工作狀態(tài)。
RS-485網(wǎng)絡(luò)拓?fù)湟话悴捎媒K端匹配的總線型結(jié)構(gòu),不支持環(huán)形或星型結(jié)構(gòu)。根據(jù)本系統(tǒng)中的反F形狀的特點,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用了三條總線分別將各個從節(jié)點串接起來,再用兩個集線器整合為一條總線與主節(jié)點相連、實現(xiàn)網(wǎng)絡(luò)的合理布局。集線器同時又有中繼器的作用,延長了通信距離。理論上可以串接8個集線器,通信距離可達(dá)9.6公里。
詳見網(wǎng)絡(luò)連接圖。(圖一)
圖一
2 數(shù)據(jù)編碼和通信協(xié)議
串行通信的格式是:8位數(shù)據(jù)位,1位啟動位,1位停止位,無校驗位,通信速率是9600bps。
為了避免數(shù)據(jù)代碼和命令代碼沖突而引起通信混亂,通信代碼都采用ASIIC碼的編碼形式。由于本系統(tǒng)中數(shù)據(jù)代碼只有數(shù)值數(shù)據(jù),0~9,A~F除外的字符都可以用作命令代碼。假如數(shù)據(jù)代碼中有文本數(shù)據(jù)的話,就必須用ASIIC碼表內(nèi)的非打印字符作為命令代碼。
在一個主節(jié)點和多個從節(jié)點構(gòu)成的總線式網(wǎng)絡(luò)中,采取主從應(yīng)答方式由主節(jié)點發(fā)起并控制網(wǎng)上的每一次通信。每個從節(jié)點有一個識別地址,只有收到與自己地址匹配的數(shù)據(jù)幀時,才有相應(yīng)的處理,并向主節(jié)點應(yīng)答結(jié)果。
該系統(tǒng)中主要有四個通信過程,從節(jié)點發(fā)送電流或電壓數(shù)據(jù)、對從節(jié)點的采集通道啟用或禁用設(shè)置、電流和電壓的上、下限數(shù)據(jù)設(shè)置以及對從節(jié)點的時鐘校對。據(jù)此定義相應(yīng)的網(wǎng)絡(luò)協(xié)議如下:
幀格式定義:
* 命令代碼:見下表
* 地址:為從節(jié)點地址,有效范圍是1~254。其中256為廣播地址。
* 校驗碼:采用累加和校驗,校驗碼僅取各字節(jié)之和的低字節(jié)。
* 長度:數(shù)據(jù)段的字節(jié)長度
* 數(shù)據(jù)段:時鐘校對過程時,為年、月、日、時、分、秒、周共8個字節(jié)。
發(fā)送電流或電壓數(shù)據(jù)時,為i (0≦i≦47)開始的8組采集數(shù)據(jù),每組數(shù)據(jù)為4個字節(jié)。
采集通道啟用或禁用設(shè)置時,為6個字節(jié),分別表示48路采集通道的狀態(tài),其中1表示啟用,0表示禁用。
在廣播方式時(地址為256),為電流和電壓的上、下限數(shù)據(jù)共8個字節(jié)。
* 響應(yīng)幀:通過校驗后,將接受幀中的命令代碼改寫為V,回送給主節(jié)點進行二次確認(rèn),保證數(shù)據(jù)傳送無誤。
3 軟件流程和程序清單
為保證通信暢通和從節(jié)點的本地事務(wù)順利執(zhí)行,設(shè)計了限時退出的通信方法,既在收到與自己地址不匹配的數(shù)據(jù)幀時,臨時關(guān)閉通信口。這樣既保證了本地事務(wù)的執(zhí)行時間,又可避免從節(jié)點常在網(wǎng)上可能引起的雙向干擾。因此在上、下位機的軟件設(shè)計中采用二次檢錯、重發(fā)和限時退出并重新握手建立連接等通信機制。現(xiàn)場調(diào)試中發(fā)現(xiàn),在某些節(jié)點工作異常,甚至通信網(wǎng)絡(luò)完全癱瘓的情況下其他各節(jié)點也能獨立完成數(shù)據(jù)采集、異常報警和實時數(shù)據(jù)存儲等本地事務(wù)。一旦故障節(jié)點排除,既可恢復(fù)通信。
* 軟件流程如下:
* 軟件實現(xiàn)和主要程序清單:
在處理器內(nèi)留出以COM_REG為首地址的寄存器組,用來存放接受或發(fā)送的一幀數(shù)據(jù)包,并以COM_REG_CUNT寄存器作為一幀數(shù)據(jù)長度的計數(shù)器,利用循環(huán)結(jié)構(gòu)很容易編制一幀數(shù)據(jù)包的收發(fā)通用程序了
TRANS_485: ;收發(fā)通用程序
BCF RC,R485_P ;開啟485通信口。
_DELAY D‘3‘
MOVLW COM_REG
MOVWF FSR
MOVLW COM_REG_CUNT
MOVWF COUNT
CALL RS_HEX_IN ;一個字節(jié)收發(fā)子程序。
BTFSC SYS_FLAGE,CONMM_ERR ;通信錯誤狀態(tài)標(biāo)準(zhǔn)位。
RETURN
MOVWF INDF
INCF FSR
DECFSZ COUNT
GOTO $-6
RETURN
* 其他主要子程序:
XIAO_SUB ;校驗和子程序
CLRF TEMP
MOVF INDF,W
ADDWF TEMP
INCF FSR
DECFSZ COM_REG_CUNT
GOTO $-4
RETURN
ASCH ; ASIIC碼轉(zhuǎn)化程序
MOVWF TEMP
MOVLW D‘48‘
SUBWF TEMP,W
BTFSS STATUS,C
RETLW 0H
MOVLW D‘71‘
SUBWF TEMP,W
BTFSC STATUS,C
RETLW 0H
MOVLW 41H ;D‘65‘——A
SUBWF TEMP,W
BTFSC STATUS,C
GOTO ASCH_A_Z
CLRF C
MOVLW 30h ;D‘48‘——0
SUBWF TEMP,W
RETURN
ASCH_A_Z
CLRF C
OVLW 37H ;D‘55‘——7
SUBWF TEMP,W
RETURN
* 主節(jié)點相關(guān)界面見圖2、圖3。
4 結(jié)束語
在兩年多24小時不間斷運行中,通信過程始終處于穩(wěn)定、暢通的工作狀態(tài)。為整個系統(tǒng)的可靠運行提供了堅實的基礎(chǔ),完全滿足了用戶的要求和設(shè)計指標(biāo)。
該系統(tǒng)的使用,提高了巡檢人員的工作效率和工作條件。對于及時、準(zhǔn)確地了解整個防腐工程的現(xiàn)狀,早期隱患(如有異物纏繞、參比電極的早期失效等)的發(fā)現(xiàn)都起到了非常重要的作用。同時把該領(lǐng)域內(nèi)的監(jiān)測水平迅速提高到和國際接軌、國內(nèi)領(lǐng)先的位置。
創(chuàng)新觀點:提出了利用RS485集線器可以構(gòu)成星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。軟件設(shè)計時采用二次檢錯、限時退出并重新握手建立連接等通信機制。這樣既保證了本地事務(wù)的執(zhí)行時間,又可避免從節(jié)點常在網(wǎng)上可能引起的雙向干擾。 ------ by 王明衍