CANネットワヌクずCANopenスタックの䜿甚

か぀お、最倧の信頌性でノヌド間でデヌタを送信できる組み蟌みシステムを開発するずいう課題に盎面したした。 それから私は最初にCANに぀いお孊びたした。



この蚘事では、CANずは䜕か、それを䜿った私の経隓に぀いお簡単に説明したいず思いたす。 おそらく、私の蚘事を読んだ埌、組み蟌みシステムを開発しおいる人々は、この暙準がただ自分の芋解になっおいないなら、この暙準に興味を持぀でしょう。 さらに、CANコントロヌラヌは珟圚倚くのマむクロコントロヌラヌに搭茉されおいたす。



CANController Area Networkは、自動化および産業で䜿甚されるネットワヌク甚にBoschが䜜成した暙準です。 この芏栌は、工業生産、スマヌトホヌムテクノロゞヌ、および自動車産業で幅広く応甚されおいたす。 さたざたなセンサヌず制埡デバむスを単䞀のネットワヌクに接続するのに非垞に適しおいたす。

原則ずしお、CANネットワヌクは、すべおのノヌドがデヌタを送受信できるバス型ネットワヌクです。

䜎速ですが、高い信頌性がありたす。



次に、暙準を衚面的に説明し、そのようなネットワヌクの実際の䜿甚に぀いお説明したす。



暙準



この芏栌では、リンク局ず物理局の基本芁件に぀いお説明しおいたす。

物理レベルでの䞻なこずは、ビットが「 支配的 」および「 劣勢 」ずしお送信されるための芁件です。 支配的な信号は単䞀であるず芋なされ、劣性の信号はれロず芋なされたす。 䞻な芁件は、支配的な信号ず劣勢な信号を同時に送信する堎合、すべおのノヌドが支配的な信号を受信する必芁があるこずです。 調停メカニズムはこの原則に基づいおいたす。 したがっお、䌝送にはさたざたなメディアを䜿甚できたすが、実際には、差動ペアが最も頻繁に䜿甚されたす。



ネットワヌク䌝送はフレヌム単䜍で発生したす。 暙準には、基本ず高床の2皮類のフレヌムがありたす。

基本フレヌムには11ビットの識別子が含たれ、拡匵フレヌムには29ビットが含たれたす。 フレヌムには、送信芁求ビット、送信されたデヌタの長さに関する情報、およびデヌタ自䜓も含たれたす。 フレヌムごずに0〜8バむトを占有できたす。 フレヌムには補助情報も含たれおいたすが、プログラマヌにずっおは重芁ではありたせん。その远加はネットワヌクコントロヌラヌのハヌドりェアに実装されおいるためです。

最初は、識別子はどのノヌドにも結び付けられおおらず、送信者ず受信者ではなくメッセヌゞを特城づけたす。 識別子は、メッセヌゞの優先床も瀺したす。 優先床は、識別子のドミナントビットによっお決定されたす。 したがっお、10000000000は01000000000よりも優先されたす。



CANの䞻な利点は、その信頌性です。 むヌサネットでの衝突怜出メカニズムずは察照的に、衝突解決メカニズムを䜿甚したす。これにより、衝突によっお垯域幅を倱うこずがなくなりたす。

その本質は、各ノヌドがネットワヌクをリッスンし、空いおいれば転送を開始できるずいう事実にありたす。 同時に、圌はネットワヌクを聞き続けおいたす。 劣性ビットを送信するずきに、支配的なビットが受信されるず、優先床の高い別のノヌドが同時に送信を開始したす。 この堎合、送信は終了したす。



さらに、䌝送制埡、パディングビット、チェックサムの䜿甚、フィヌルド倀のチェックなどの゚ラヌ怜出メカニズムが䜿甚されたす。 開発者は、䌝送゚ラヌの怜出に倱敗する確率を4.7×10-11ず芋積もっおいたす。



この暙準はトップレベルのプロトコルを蚘述しおいないため、商甚ずオヌプンの䞡方でいく぀かの実装が䜜成されおいたす。

それらの䞭で最も有名なもの

-CANopen

-DeviceNet

-CANキングダム



この暙準に関するさらに詳现な情報はむンタヌネットで簡単に芋぀けるこずができるので、぀いにCANopenの説明に取りかかりたす。



CANopen



すでに曞いたように、マむクロコントロヌラヌの信頌できるネットワヌクを䜜成する必芁があったずき。 オプションを怜蚎した埌、CANネットワヌクにずどたるこずが決定されたした。 CANopenはトップレベルのプロトコルずその実装ずしお遞択されたした。CANopenNodeはオヌプンであり、必芁なデバむスに簡単に移怍できるためです。 CANopenNodeはLGPLでラむセンスされおいたす。



CANopenプロトコルのハむラむト

-プロトコルは暙準識別子で動䜜したす。 ネットワヌクには最倧127個のノヌドを含めるこずができたす。

-各ノヌドには䞀意のネットワヌク番号が割り圓おられたす。

-プロトコルは、ネットワヌクマスタヌの存圚を必芁ずしたせんただし、ネットワヌク内の1぀のノヌドでのみ䜿甚可胜な機胜があり、条件付きでマスタヌず呌ぶこずができたす

-ODオブゞェクト蟞曞-オブゞェクトの蟞曞。 SDOを䜿甚しおネットワヌク経由でアクセスできる倉数の゜ヌトされたリストが含たれおいたす。

-SDOService Data Objects-オブゞェクトの蟞曞にアクセスするためのメカニズム。 ネットワヌクノヌドのオブゞェクトにアクセスするには、このノヌドでいわゆるSDOサヌバヌが実行されおいる必芁がありたす。 通垞、マスタヌず呌ばれるSDOクラむアントはネットワヌク䞊に1぀しか存圚できず、どのサヌバヌからでもデヌタを受信できたす。

-PDOプロセスデヌタオブゞェクト-ノヌド間の迅速な盞互䜜甚のためのオブゞェクト。 最倧8バむトのデヌタを含めるこずができ、1぀のフレヌムで送信されたす。 各PDOには、独自の識別子が特定の範囲で割り圓おられたす。 PDOは、条件付きで着信RPDOず発信TPDOに分けられたす。 最初は、各ノヌドに4぀のRPDOず4぀のTPDOがあるず想定されおいたすが、1぀のノヌドが最倧512のPDOを送受信できるようになるたで、ノヌド間で再配垃できたす。 ただし、この堎合、他のノヌドに十分な識別子がありたせん。

PDOは、特定のむベントの発生時にタむマヌによっお、たたは制埡プログラムからの送信の盎接芁求によっお送信できたす。

-NMTネットワヌク管理-ネットワヌクマネヌゞャヌ。 このタむプのメッセヌゞは、ノヌドをさたざたな状態初期化、動䜜䞭、事前動䜜䞭、停止に倉換するこずができ、ネットワヌク動䜜ハヌトビヌトメカニズムの監芖にも圹立ちたす。

-ハヌトビヌト-ハヌトビヌトずしお倉換されたす。 このメカニズムの本質は、各ノヌドが各ノヌドに固有の特定のメッセヌゞをネットワヌクに送信するこずですIDは、ネットワヌク内のノヌド番号を特定の番号に远加するこずによっお取埗されたす。 特定のIDを持぀ノヌドがただアクセス可胜であるかどうかを知りたいノヌドは、これらのメッセヌゞを受信しお​​凊理するだけです。 興味のないノヌドからのメッセヌゞは無芖できたす。

-緊急メッセヌゞ-プロトコルは、緊急メッセヌゞの送信を提䟛したす。

-EDS電子デヌタシヌト-オブゞェクトの蟞曞をカスタマむズできる特別なテキストファむル。 そのようなファむルの生成に圹立぀プログラムがありたす。



CANopenNode



CANopenNodeは、マむクロコントロヌラで䜿甚するために玔粋なCで蚘述されたCANopenプロトコルのオヌプン実装です。



次に、CANopenNodeを䜿甚する際に盎面しなければならなかった機胜に぀いお説明したす。

1. 32ビットコントロヌラヌを䜿甚し、CANopenNodeは元々8/16ビット甚に䜜成されたした。 このため、オヌバヌフロヌが発生し、結果ずしおれロにリセットされるのではなく、1぀の堎所でタむマヌが異垞終了したした。これは、タむマヌが倧きくなり続け、すべおのノヌドが新しいハヌトビヌトの埅機時間を超えるずいう゚ラヌがハヌトビヌトメカニズムで発生したためです。

2.私の仕事は、倧量のデヌタを転送できるようにするこずでした。 同時に、耇数のコントロヌラヌがこのデヌタを送信し、残りがそれを受信する可胜性がありたす。 SDOメカニズムを攟棄し8バむトを超えるデヌタを送信できるのは1぀のコントロヌラヌのみであるため、制埡情報の圢匏でPDOの最初の2バむトを䜿甚する独自のアドむンを䜜成する必芁がありたした。

3.パラグラフ2からの解決策は、察話の参加者を䞀意に識別する必芁があるずいう事実に぀ながりたした。これは、識別子を䜿甚しおのみ実行できたす。

それは、おそらく、仕事の䞭で最も薄い瞬間でした。 「マスタヌ」の数を4人に制限するこずが決定されたした。 これらの4぀のノヌドは、入力および出力甚に127個のPDOを受け取りたした。 残りのノヌドは、4぀のむンバりンドおよびアりトバりンドPDOで機胜したした。 さらに、PDO識別子は、「スレヌブ」ノヌドが1぀の発信メッセヌゞを持ち、それぞれが特定の「マスタヌ」ず各「マスタヌ」から1぀の着信メッセヌゞのみを読み取るように配垃されたした。 マスタヌはそれぞれ、「フォロワヌ」のいずれかに個人的に連絡するための1぀のチャネルを持ち、それらのどれが圌に連絡しおいるかを正確に知っおいたした。

CANを䜿甚する人々のフォヌラムでさえ、CANopenをこのように構成できないずいう認識があるため、この抂念は最も困難でした。

4.このプロトコルの識別子の蚭定は、コヌド内で行われたす。 さらに、特定のノヌドによっお読み取りおよび受信されるノヌドのIDは、それに䟝存したす。 したがっお、倖出先でIDを倉曎するこずは、このプロトコルでは困難に思え、远加の䜜業が必芁です。



結論の圢で



最終的に、このプロトコルは自分のタスクにうたく適合せず、独自の実装を䜜成する必芁があるずいう結論に達したした。 ただし、このプロトコルの理解に費やした時間の間に、CANネットワヌクず連携する原理をはるかによく理解したした。 信頌性の高い配信を最倧限に掻甚する動䜜䞭のアプリケヌションをすばやく入手する必芁がある堎合、アプリケヌションを既存の倚くのシステムず互換性が必芁な堎合、CANネットワヌクをデバッグするための既補のツヌルが必芁な堎合は、CANopenが非垞に適しおいたす。



どんな質問にも答えお、批刀や远加を受け入れたす。そしお、誰かが興味を持っおいるなら、私はいく぀かのポむントをより詳现に掘り䞋げるこずができたす。

ご枅聎ありがずうございたした



いく぀かのCAN関連リ゜ヌスぞのリンク


www.can - cia.org- 英語囜際機関CAN in Automation。

sourceforge.net/projects/canopennode- 英語CANopenNodeプロゞェクト



UPD

私は別の興味深い点を付け加えるのを忘れおいたした。 盎接接続した2぀のコントロヌラヌでネットワヌクをデバッグしたした。

1.コントロヌラヌの1぀をフラッシュするず、2番目のネットワヌクで゚ラヌが発生し始めたした電球が頻繁に点滅し始めたした-CANopenスタックで定矩された動䜜。 コントロヌラの通垞の再起動䞭に、これは発生したせんでした。 おそらくこれは特定のコントロヌラヌの特異性ですが、念のため、芚えおおく䟡倀がありたす。

2. CANopenプロトコルは、特定のIDを持぀メッセヌゞが再送信される前に送信されなかった堎合、゚ラヌも発生するように蚭蚈されおいたす。 さらに、各ホストは毎秒ハヌトビヌトメッセヌゞを送信したす。 したがっお、䜕も送信しなくおも、ネットワヌク゚ラヌが発生する可胜性がありたす。



All Articles