新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Profibus和CAN現場總線的幀轉換

Profibus和CAN現場總線的幀轉換

作者: 時間:2016-12-20 來源:網絡 收藏

CAN幀里的數據域的長度最大只有8個字節(jié)。而且在我們給定的高層協(xié)議HiLon B中,又在數據域里拿了兩個字節(jié)作為目的地址和幀索引了,這樣就只剩下6個字節(jié)給我們傳輸數據。在最長的Profibus數據幀中,有246個數據字節(jié)。那么容納這個長幀的數據就需要246/6=41個CAN幀。剛才我們在CAN的幀里采用一個字節(jié)作為幀的索引字節(jié)。

我們在進行幀轉化時,把Profibus的幀拆分成每部分6字節(jié)后,加上目的地址和幀索引,就可以成為CAN幀中的內容了。目的節(jié)點收齊這些幀之后再把它們連接還原,就得到了要傳送給它的信息。

反向傳輸時,我們所要做的只是順序完全相反的事情。

4.3 幀的控制信息的轉換

Profibus數據幀中的其他控制信息還有 SD2 (68H),LE(數據長度),FC(幀控制八位組),FCS(幀檢查序列),ED(16H),這些信息都是根據幀本身的數據計算出來的,用于接收方對數據的識別。所以在協(xié)議轉換器正確的接收了幀之后,這些信息也就不需要了。接下來的工作就是把收到的信息編人CAN的幀,加上CAN的控制信息,計算出CRC序列,和在一起組成CAN的幀發(fā)到CAN節(jié)點上去;反過來,當協(xié)議轉換器要把CAN的幀轉換成Profibus的幀時,也是在正確地接收CAN的幀之后,只提取其數據內容,然后按照Profibus的協(xié)議生成一幅Profibus幀。

5、差錯控制

每種現場總線通訊協(xié)議幀都有它自己的錯誤檢測方式。我們在協(xié)議轉換的兩側,要按照它們各自的方法去檢測錯誤。我們的協(xié)議轉換器如果檢測到一個錯誤,應當攔截這個錯誤。

5.1 Profibus的錯誤檢測及控制

如前所述,Profibus幀中用的是UART字符。第10位是奇偶校驗位。檢測到任何一個字符的奇偶校驗出錯,我們就知道該字符有錯誤了。

Profibus的數據幀中有一個FCS位,是通過計算DA,SA,FC 和DATA UNIT的算術和獲得的一個檢驗八位組。這個八位組可供 我們在接收到一個幀時來檢驗數據的正確性。

另外,還有些能明顯被發(fā)現的錯誤:如超時運行、有缺陷的開始定界符和結束定界符、無效的幀長度、相應次數等。協(xié)議轉化器在Profibus總線一側,就是作為一個Profibus的節(jié)點在運行。當它不正確地接收到一個主動幀時,將不處理、應答或回答。在此時隙 時間期滿后,發(fā)起方將再重試此請求。僅在接收到一個有效回答或重試(多次)不成功后,發(fā)起方才算完成了此請求。同理,如果協(xié)議轉換器發(fā)送主動幀后沒有正確的收到一個應答幀,那么它也會不停的重試,直到一定次數,才會把對方標記為不運行。

5.2 CAN的錯誤檢測及控制

5.2.1 錯誤類型

CAN協(xié)議列出了以下5種不同的錯誤類型。協(xié)議轉換器必須捕捉并處理這些錯誤。

(1)位錯誤

站單元在發(fā)送位的同時也對總線進行監(jiān)視。如果所發(fā)送的位值與所監(jiān)視的位值不相符合,則在此位時間里檢測到一個位錯誤(BIT ERROR)。

(2)填充錯誤

如果在使用位填充法進行編碼的信息中,出現了第6個連續(xù)相同的位電平時,將檢測到一個填充錯誤。

(3)CRC錯誤

CRC序列包括發(fā)送器的CRC計算結果。接收器計算CRC的方法與發(fā)送器相同。如果計算結果與接收到CRC序列的結果不相符,則檢測到一個CRC錯誤(CRC ERROR)。

(4)形式錯誤

當一個固定形式的位域含有1個或多個非法位,則檢測到一個“形式錯誤”(FORM ERROR)。

(5)應答錯誤

只要在ACK間隙(ACK SLOT)期間所監(jiān)視的位不為“顯性”,則發(fā)送器會檢測到一個“應答錯誤”(ACKNOWLEDGMENT ERROR)。

5.2.2 故障界定狀態(tài)

CAN定義了一個故障界定狀態(tài)機制。一個節(jié)點可能處于下列三種錯誤狀態(tài)中。

(1)錯誤主動當一個錯誤主動結點檢測到上述某個錯誤時,它將發(fā)送一個錯誤主動幀,該幀由6個連續(xù)的顯性位組成。這已發(fā)送覆蓋其他任何同時發(fā)送的幀,并導致其他節(jié)點都檢測到一個填充錯誤,并依次放棄當前幀。

(2)錯誤被動當一個錯誤被動節(jié)點檢測到上述的某一個錯誤時,它將發(fā)出一個錯誤被動幀。該幀由6個連續(xù)的隱性位組成。這個幀會被同時出現的其他發(fā)送所覆蓋,如果其他站點沒有檢測到這一錯誤,不會丟棄當前幀。

(3)離線

5.2.3 錯誤處理過程

為進行故障界定,我們的協(xié)議轉換器也應當設兩種計數器:發(fā)送錯誤計數器和接受錯誤計數器。然后,我們就可以把它作為一個普通的CAN接點參與到CAN網絡的運行,故障的處理方法也是一樣的。

(1)初始化錯誤計,數器的值等于0,節(jié)點開始錯誤主動狀態(tài),此時假設檢測到的所有錯誤都不是由該節(jié)點引起的。

(2)根據檢測到的錯誤類型使相應的計數器的值累加,有效的發(fā)送或接收又使這些計數器遞減,直至0。

(3)當這些計數器中的任何一個超出CAN定義的閾值時,該節(jié)點進人錯誤被動狀態(tài)。該節(jié)點被認為是導致錯誤的原因。

(4)當錯誤被動節(jié)點的發(fā)送及接收錯誤計數器值都減小到CAN定義的閾值以下時,節(jié)點重新進人錯誤主動狀態(tài)。

(5)當發(fā)送錯誤計數值超過CAN定義的另一個閾值時,該節(jié)點進人離線狀態(tài)。從離線狀態(tài)再進人錯誤主動狀態(tài)就需要人的干預了。

以上所述,是我們研究的現場總線協(xié)議轉換器在兩邊各自的現場總線范圍內的錯誤控制和處理方法。一定要先解決各自的錯誤,才能再進行幀的轉換。

從Pfofibus的幀轉換到CAN的幀時,就是在通過校驗確認幀的內容無誤后,才進行地址和內容的轉換,然后還要計算出該幀的CRC序列,供CAN段通訊用。反過來也是一樣。

6、結語

本文分析了Profibus和CAN的幀的特點,構思了在這兩種總線之間實現幀轉換的方法。但單純的幀轉換沒有意義,幀轉換只是現場總線的協(xié)議轉換中的一環(huán)。要實現幾種現場總線的協(xié)作,還有其他很多工作要做。

國際電工委員會IEC在1984年就開始籌備制定單一現場總線國際標準。然而,由于行業(yè)與地域發(fā)展等歷史原因,加上各公司和企業(yè)集團受自身利益的驅使,圍繞著現場總線技術的標準進行了一場大戰(zhàn),最后經過多方妥協(xié),于1999年年底通過了包含FF,Profibus等八種總線在內的IEC61158,沒有實現制定單一標準的目標。這個結局表明,在今后相當長一段時間內多種現場,總線將并存,控制網絡的系統(tǒng)集成與信息集成會面臨困難的復雜局面。無論是最終用戶還是制造商,普遍都在關注現場總線技術的發(fā)展新動向,都在尋求高性能低成本的解決方案。


上一頁 1 2 3 下一頁

關鍵詞: ProfibusCAN現場總線幀轉

評論


相關推薦

技術專區(qū)

關閉