《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于RS485總線的GSM-R從機故障檢測設計及實現
基于RS485總線的GSM-R從機故障檢測設計及實現
2017年微型機與應用第7期
賈海航,趙霞
同濟大學 電子與信息工程學院,上海 201804
摘要: RS485總線經常被用做主從系統各節點間的通信方式,系統中主從機的通信狀態是整個系統正常工作的前提。文章設計了一種基于RS485總線的從機故障檢測方法。首先根據需求設計了一套穩定的網絡通信協議和接口函數,并提出了一種基于RS485網絡通信協議的輪詢方法,可實現一個主機可靠、穩定地輪詢訪問多個從機。主機能夠檢測各個從機的通信狀況,并及時將從機通信故障信息上報到上位機。文章提出的在輪詢基礎上進行故障檢測的方法,大大提高了系統的實時性。
關鍵詞: RS485 輪詢 故障檢測
Abstract:
Key words :

  賈海航,趙霞

  (同濟大學 電子與信息工程學院,上海 201804)

       摘要RS485總線經常被用做主從系統各節點間的通信方式,系統中主從機的通信狀態是整個系統正常工作的前提。文章設計了一種基于RS485總線的從機故障檢測方法。首先根據需求設計了一套穩定的網絡通信協議和接口函數,并提出了一種基于RS485網絡通信協議的輪詢方法,可實現一個主機可靠、穩定地輪詢訪問多個從機。主機能夠檢測各個從機的通信狀況,并及時將從機通信故障信息上報到上位機。文章提出的在輪詢基礎上進行故障檢測的方法,大大提高了系統的實時性。

  關鍵詞:RS485;輪詢;故障檢測

  中圖分類號:TP29文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.001

  引用格式:賈海航,趙霞.基于RS485總線的GSM-R從機故障檢測設計及實現[J].微型機與應用,2017,36(7):1-4,8.

0引言

  圖1GSM-R鐵路無線數字通信系統隨著鐵路列車運行速度的不斷提升,通信系統對于鐵路的安全運行越來越重要。鐵路綜合數字移動通信系統(Global System for Mobile Communications-Railway,GSM-R)是一種基于當前世界最成熟、最通用的公共無線通信系統GSM平臺,專為滿足鐵路應用而設計開發的無線數字通信系統[1]。圖1為GSM-R鐵路無線數字通信系統結構示意圖,該系統包括遠端機和近端機兩部分。近端機由時間分布控制單元 (Time Distributed Master Unit,TDMU)及射頻模塊組成,遠端機由射頻拉遠單元(Radio Remote Unit,RRU)和射頻模塊組成。TDMU和RRU不僅需要獲取各自射頻模塊的實時信息,以了解各個射頻模塊的運行狀態,同時還需將各個射頻模塊的故障信息及時上報到上位機,使射頻模塊得到及時的維護。因此,TDMU和RRU與各自的射頻模塊之間穩定可靠的通信是非常重要的。

Image 001.jpg

  常用的串口通信方式包括RS232和RS485。RS232串行通信總線屬于全雙工工作方式,數據的收發可以同時進行,但傳輸距離短,且只適合點對點的通信方式。RS485串行通信總線采用半雙工工作方式,數據的收發不能同時進行,任何時刻只能有一個主機處于主動發送狀態,其他所有從機處于被動接收狀態,非常適用于一主多從的通信要求[2]。RS485作為一種構造簡單、技術成熟、傳輸距離遠的通信方式,得到了廣泛的應用。

  在本系統中,要求TDMU和RRU可以主動訪問射頻模塊,而射頻模塊只能被動接收并響應。根據上述需求,采用RS485串行總線作為TDMU和RRU訪問射頻模塊的通信方式。將TDMU和RRU作為主機,射頻模塊作為從機,構成RS485主從通信系統。上位機通過TDMU來監控整個系統。

  在一些相關文獻中關于RS485總線通信方式的設計都只提到了RS485輪詢過程的實現,但均未考慮從機故障的處理問題。本文針對在輪詢過程中的從機故障檢測問題,提出了RS485總線輪詢與從機故障檢測相結合的實現方法。在本文的設計中,主機通過RS485總線輪詢各個從機,獲取從機信息,同時實時檢測從機故障狀態。

1RS485通信協議和接口函數的設計

  1.1通信協議

  RS485接口標準通信協議需要用戶自己根據實際情況而設計[3]。設計一套結構簡單、功能完備,并且盡量標準化的通信協議是RS485通信最基本的通信要求。

  RS485通信協議的設計主要包括物理層和數據鏈路層[4]。本文使用的VxWorks操作系統通過串口驅動程序已經實現了物理層的所有功能[5]。只需調用操作系統提供的發送和接收函數就可以實現數據通信。本文設計的RS485總線通信協議主要完成數據鏈路層的功能。

  數據鏈路層的通信協議[5 6]包括開始結束標志、設備的類型及地址、數據校驗等。設置一個開始、結束標志來表明每一段數據幀的開頭和結尾。設置一個標志來標識數據幀是請求數據幀還是應答數據幀。用設備類型和設備地址兩個標志位來區分不同的從機。數據校驗位用來保證數據幀的正確性。除上述單元,通信協議還應包括命令標識、數據長度等。

  根據以上描述,設計的通信協議如圖2所示。

  

Image 002.jpg

  開始標志、結束標志:表示一幀數據的開始和結束,本文均用0x7f表示。

  設備類型:本文中用0x01表示功放,用0x02表示低噪放。

  設備地址:對于同一種從機類型,用設備地址區分不同設備類型下的不同從機。例如:對于4個功放(設備類型為0x01),設備地址分別為0x00、0x01、0x02、0x03。

  命令標識:表示主機對從機發送的命令類型。

  響應標識:主機主動向從機發送數據用0xff表示,從機被動響應主機用0x00來表示。

  數據長度:表示具體數據的長度。

  數據校驗:為保證數據傳輸的正確性和完整性,本文采用CRC校驗碼。CRC校驗碼具有唯一性。若發送端與接收端的校驗碼不一致,則表明數據幀的傳輸有誤[7]。

  1.2接口函數

  數據鏈路層需為高層提供統一的RS485接口函數,而接口函數的設計需要按照上述的網絡通信協議組包,調用底層串口驅動將數據發送到目的從機并等待接收響應消息。對接收到的數據解析,若此響應數據完整無誤,則將需要的數據從中解析出來。在接口函數的設計中需要考慮數據幀的轉義、數據幀發送和接收、接口函數的保護三方面的內容。

  (1)在數據接收端,若具體數據中出現0x7f的數據,在接收端就會影響對完整一幀數據的判斷。因此,在數據發送端要對發送數據進行轉義處理。本文的方法是用0x5f和0x7d兩個字節的數據來代替0x7f,用0x5f和0x5d兩個字節的數據來代替0x5f;在數據接收端進行反轉義處理,與轉義處理相反。

  (2)接口函數中最重要的就是數據的發送和接收,本文使用的VxWorks操作系統已經完成了底層RS485串口的配置,只需要調用操作系統提供的發送和接收函數就可以實現數據通信。數據的發送函數Tx485就是將組包好的數據發送到RS485總線上。RS485接收任務一直監聽總線上的數據,通過監聽數據幀中的開始和結束標志來接收一條完整的RS485數據。將一幀完整數據發送到消息隊列,msgQReceive則從消息隊列中接收數據。RS485接口函數如下:

  STATUS Port485Send (……)

  {

  semTake(sem485RdDone,WAIT_FOREVER);

  //根據自定義的數據結構進行組包

  ……;

  //進行轉義處理

  Escape(SendBuf,OutBuf);

  //發送數據

  Tx485(OutBuf);

  //接收響應數據

  msgQReceive (Rx485QId, (char *)RespBuf, LEN_MAX , timeout);

  //處理響應數據

  Port485_Handle(RespBuf, MsgLen);

  semGive(sem485RdDone);

  return OK;

  }

  (3)在RS485總線通信中,同一時刻,只能有一個主機處于發送狀態,其他所有從機處于被動接收狀態,并且從機之間不能相互通信,否則將會引起總線沖突,無法正常工作[7]。RS485總線屬于半雙工的通信方式,數據的收發不能同時進行,數據的發送必須等到上一次數據接收完成之后才能進行。為了滿足上述RS485總線通信的特點,本文需要對RS485接口函數進行保護。

  ①RS485是一主多從的串行總線,每一時刻只能有一個主機發送數據,也即每一時刻RS485接口函數只能被調用一次。為了防止接口函數被同時調用,在接口函數中增加了信號量的保護。主機在調用接口函數時,必須首先獲取信號量。如果沒能獲取信號量,說明此刻有其他任務在調用接口函數。主機必須等到發送數據結束釋放信號量后,才能獲取信號量,調用接口函數來發送數據。

  ②RS485通信屬于半雙工的通信方式,數據的收發不能同時進行。在實際的需求中,除了主機不斷輪詢從機之外,上位機也會通過主機向目標從機發送一些查詢從機數據或配置從機參數的數據幀。主機的輪詢是一直進行的,而上位機下發的數據幀是隨機的。為了避免輪詢數據和上位機下發的數據幀在485總線上沖突,本文設置一個全局變量作為主機輪詢的開關。在上位機下發RS485數據幀時,關閉輪詢開關,主機輪詢從機暫時停止。當目標從機響應了上位機之后,打開輪詢開關,主機繼續輪詢從機。

2基于輪詢機制的從機故障檢測的設計

  2.1從機故障檢測的流程

  圖3是基于輪詢機制的從機故障檢測的設計流程圖。主機每隔800 ms調用一次RS485接口函數輪詢從機設備。若800 ms內未收到從機的響應,則認為此從機通信異常。若連續異常次數達到上限,則主機需要將此從機通信故障信息上報到上位機。

Image 003.jpg

  2.2從機故障檢測的實現

  為了實現主機在輪詢從機過程中檢測從機通信狀況,本文將輪詢機制嵌套于故障檢測任務中。從機故障檢測任務包括輪詢時間間隔的設計、故障上報設計、輪詢過程中的從機故障檢測設計。其中,輪詢過程中的從機故障檢測是本文的重點。

  (1)輪詢時間間隔的設計。通過看門狗定時器和信號量來實現800 ms的主機輪詢從機的時間間隔。在一個800 ms的看門狗定時器中,每隔800 ms釋放一次信號量。

  (2)故障上報設計。在故障檢測任務中,Rs485AlmReport是根據當前狀態和同步狀態進行故障上報的函數。當前狀態表示從機當前的狀態,而同步狀態表示從機的歷史狀態。若某一從機的當前狀態是故障狀態,同步狀態是正常狀態,則主機就會向上位機上報此從機故障。故障檢測任務部分代碼如下:

  LOCAL void Rs485AlarmManTask(void)

  {

  wdStart(TimerId, (int) Timer, (FUNCPTR) Rs485TimerFun, 0); //輪詢時間間隔

  While(1){

  semTake(semAlmSampleT, WAIT_FOREVER) ;

  if(RS485UseSwitch == 0){

  Rs485AlmCheck( );}//從機故障檢測

  Rs485AlmReport( );}//故障上報

  }

  (3)輪詢過程中的從機故障檢測設計。在故障檢測任務中,Rs485AlmCheck函數調用RS485接口訪問從機設備。為了便于管理所有從機設備,建立如下從機設備信息的數據結構:

  typedef struct alarm_info{

  UINT8 AlmIndex;/* index of the device */

  UINT8 AlarmEna;/* device enable */

  UINT8 CurAlmState;/* current alarm state */

  UINT8 SyncAlmState;/* synced alarm state */

  UINT8(*CommChk) (void); /*detect function */

  UINT8 AlmRaiseCnt;/* device raise counter */

  UINT8 AlmIdleCnt;/* device clear counter */

  } ALARM_INFO;

  從機設備信息包括從機序列號、故障檢測使能、當前狀態、同步狀態、故障檢測函數(輪詢函數)、故障統計、正常統計等。根據從機設備信息數據結構建立ALARM_INFO Rs485Devices[MAX_DEV_NUM]所有從機的信息。每隔800 ms執行一次從機故障檢測函數,并統計故障的次數。若故障次數達到上限,則等待Rs485AlmReport故障上報函數將信息上報到上位機。

3故障檢測的優化及結果

  在實際情況中,一次從機通信異常不能認為此從機通信故障。在本文中,規定某從機連續4次通信異常,才能認為此從機通信故障。當從機數量較多時,若某一從機通信故障,主機需要將所有的從機設備輪詢4次后,才能將從機通信故障檢測出來并上報到上位機。在這種情況下,主機不能及時將從機通信故障上報到上位機,造成上位機獲取從機通信狀況非常滯后,系統實時性較差。主機為了能夠及時將從機發生故障上報到上位機,在輪詢下一設備前需做如下判定條件:當主機訪問某一從機時,如果從機通信異常,則繼續訪問此從機,而不是訪問下一個從機設備;當連續4次通信異常,主機將此從機的當前狀態改為故障狀態,繼續訪問下一個從機設備。輪詢條件代碼如下:

  void Rs485AlmCheck(void)

  {

  //保持不變

  ……

  //輪詢條件

  if(TmpState==Rs485Devices[DevOrder].CurAlmState)

  DevOrder+=1;

  }

  在從機故障檢測函數中,如果實際狀態與當前狀態一致,表明主機已將從機的實際狀態反饋到從機的當前狀態,則繼續輪詢下一個從機設備。

  為了說明基于輪詢的從機故障檢測的輪詢條件的優化效果,作如下假設:某一主機下共有7個從機,最壞的情況下,這7個從機同時發生了通信故障。在不加輪詢條件的從機故障檢測中,檢測出第一個從機故障需要0.8×7×3+0.8=17.6 s,在加上輪詢條件后的從機故障檢測中,檢測出第一個從機故障需要0.8×4=3.2 s。如圖4是在7個從機同時故障的情況下,加上輪詢條件前后,主機檢測出這7個從機故障所需要的時間對比。加上輪詢條件后的檢測方法大大減少了從機故障檢測所需的時間。

Image 004.jpg

4結論

  基于RS485總線的通信協議和接口函數的設計保證了主機穩定可靠地訪問從機。從機故障檢測的輪詢機制一方面可以不斷地獲取各個從機的設備信息,另一方面可以檢測從機通信故障。但是,當從機數量較多時,輪詢周期就會變長,從機的通信故障不能被及時檢測出來,系統實時性變差。加上了輪詢條件優化后的輪詢機制相比傳統的輪詢機制,實現了快速檢測從機通信故障。上位機可以及時獲取各個從機的通信狀況,提高了系統的實時性。

  參考文獻

  [1] 胡威.基于GSM-R的列車無線定位方法探索 [J].鐵路通信信號工程技術,2016,13(5):21-23.

  [2] 胡文濤. 一種基于協議的提高RS485實時性的方法 [J].現代電子技術,2013,36(18):10-12.

  [3] 周鵬,李艷艷. 提高RS485總線主從通信效率的軟件設計[J].單片機與嵌入式系統應用,2008,8(8):70-73.


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
精品成人久久| 亚洲图片在区色| 国产精品高潮呻吟久久| 欧美精品久久99久久在免费线| 久久精品国产2020观看福利| 欧美一区二区高清| 亚洲欧美日韩精品久久奇米色影视| 日韩一二在线观看| 亚洲精品一区在线观看| 亚洲日本中文字幕免费在线不卡| 亚洲电影免费观看高清完整版在线观看 | 性做久久久久久免费观看欧美| 亚洲视频专区在线| 亚洲午夜激情免费视频| 亚洲性色视频| 亚洲综合色激情五月| 亚洲欧美在线aaa| 欧美一级播放| 久久精品99久久香蕉国产色戒| 久久国产日韩| 亚洲第一免费播放区| 亚洲国产一区二区三区a毛片| 亚洲国产日韩欧美一区二区三区| 亚洲国产精品成人va在线观看| 亚洲国产毛片完整版| 日韩一区二区精品视频| 中日韩男男gay无套| 亚洲欧美日韩在线播放| 久久精品视频一| 久久综合久久88| 欧美美女bbbb| 国产精品成人一区二区艾草| 国产日本精品| 怡红院精品视频| 日韩午夜一区| 亚洲综合欧美| 亚洲高清在线视频| 日韩视频在线观看国产| 亚洲欧美日韩国产成人| 久久久www免费人成黑人精品 | 极品少妇一区二区三区精品视频 | 亚洲欧美一级二级三级| 久久国产精品一区二区三区四区 | 亚洲裸体视频| 亚洲一区二区三区中文字幕| 性色av一区二区怡红| 巨乳诱惑日韩免费av| 欧美日韩日韩| 国产视频一区二区在线观看 | 亚洲精选中文字幕| 亚洲欧美中文日韩v在线观看| 亚洲国产成人av好男人在线观看| 日韩午夜激情| 久久av一区| 欧美极品在线视频| 国产伦精品一区二区三区| 一区免费视频| 亚洲午夜精品国产| 亚洲欧洲日产国码二区| 亚洲欧美日韩中文在线制服| 男人的天堂亚洲在线| 国产精品久久波多野结衣| 激情久久婷婷| 一区二区欧美激情| 亚洲国产二区| 欧美一区二粉嫩精品国产一线天| 欧美成人精品一区二区| 国产精品永久| 亚洲精品国产精品乱码不99| 性色av一区二区三区红粉影视| 亚洲美女视频在线免费观看| 欧美一区二区三区免费观看| 欧美激情一区二区| 国产一区二区三区四区在线观看| av不卡在线| 亚洲激情视频在线观看| 欧美一区二区三区四区夜夜大片| 欧美日韩123| 在线观看一区| 欧美亚洲综合久久| 亚洲一区二区在线看| 免费永久网站黄欧美| 国产日韩欧美黄色| 夜夜爽夜夜爽精品视频| 亚洲国内自拍| 久久九九免费| 国产精品日日做人人爱| 99国内精品久久| 亚洲欧洲在线视频| 久久在线观看视频| 国产日韩综合一区二区性色av| 一本色道久久综合亚洲精品婷婷| 亚洲精品一区二区三区在线观看| 久久久亚洲国产天美传媒修理工| 国产精品无人区| 亚洲视频在线二区| av成人老司机| 欧美激情按摩| 亚洲第一页中文字幕| 久久精品国产亚洲5555| 久久国产精品久久久久久| 国产精品美女久久| 一区二区三区国产| 在线午夜精品自拍| 欧美日韩国产页| 亚洲国产精品久久久久秋霞不卡| 亚洲电影免费| 久久综合一区二区| 国产真实乱偷精品视频免| 香蕉久久夜色精品国产使用方法| 午夜精品一区二区在线观看| 国产精品久久久久久久久动漫| 99成人在线| 亚洲视频一二| 欧美视频免费在线观看| 日韩手机在线导航| 制服诱惑一区二区| 欧美色网一区二区| 99精品热视频| 亚洲综合电影一区二区三区| 国产精品成人免费| 亚洲一区二区三区免费视频| 性8sex亚洲区入口| 国产精品中文字幕在线观看| 亚洲欧美久久久| 久久国产精品亚洲77777| 国产日韩av高清| 欧美亚洲视频一区二区| 久久久av网站| 激情综合在线| 亚洲精品日产精品乱码不卡| 欧美激情中文不卡| 99精品黄色片免费大全| 亚洲免费中文| 国产亚洲精品久| 亚洲大片一区二区三区| 欧美成人在线免费视频| 日韩一级精品| 亚洲欧美激情四射在线日| 国产精品视频一二| 欧美一区二区视频在线| 美女精品国产| 亚洲狼人综合| 午夜久久一区| 韩国三级电影一区二区| 亚洲毛片播放| 欧美日韩一卡| 亚洲欧美中文日韩在线| 久色成人在线| 亚洲精选视频免费看| 新狼窝色av性久久久久久| 国产在线视频欧美| 99精品久久免费看蜜臀剧情介绍| 欧美午夜精彩| 欧美一区二区在线| 欧美—级a级欧美特级ar全黄| 一区二区三区偷拍| 久久久久久久欧美精品| 亚洲国产视频一区| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久久久久动漫| 欧美伊人久久大香线蕉综合69| 欧美xx视频| 亚洲新中文字幕| 蜜臀av在线播放一区二区三区| 99re热精品| 久久久久久自在自线| 亚洲精品黄色| 欧美一区二区在线播放| 亚洲国产电影| 欧美一区二区啪啪| 亚洲激情视频| 欧美一区二区三区在线播放| 亚洲国产精品第一区二区三区| 亚洲性图久久| 在线观看日韩欧美| 亚洲欧美视频| 亚洲国产精品久久久久婷婷老年| 亚洲欧美国产一区二区三区| 在线观看日韩国产| 欧美在线啊v| 99天天综合性| 另类天堂av| 亚洲一品av免费观看| 欧美国内亚洲| 久久福利视频导航| 国产精品久久久久9999高清| 亚洲国产色一区| 国产精品综合| 亚洲深夜福利网站| 影音先锋亚洲一区| 欧美一区二区三区久久精品茉莉花 | 9国产精品视频| 麻豆成人在线观看| 午夜久久美女| 欧美视频一区二区三区…| 亚洲福利国产精品| 国产乱码精品一区二区三| 一区二区三欧美| 在线观看日韩av先锋影音电影院|