TUT-0054 www.interface.co.jp Ver. 1.1 改訂履歴 改訂履歴 Ver 1.0 1.1 年 月 2004 年 7 月 2005 年 6 月 改 訂 内 容 初版 ・対応型式に CPZ 製品を追加 ・ サンプルプログラムの変更(BPC-08xx→BPC-0820) ・ 図 2-4 調停の動作変更 本チュートリアルをご使用の際は、必ず各製品型式の最新のドキュメント(ユーザーズマニュア ル,オンラインヘルプ)をあわせて参照してください。また、最新のドライバソフトウェアをご使 用ください。ユーザーズマニュアル, ドライバソフトウェアは弊社 Web site からダウンロードで きます。(オンラインヘルプはドライバソフトウェアに含まれています) 商標/登録商標 本チュートリアルに掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。 保証の内容と制限 株式会社インタフェースはドキュメント内の情報の正確さに万全を期しています。万一、誤記ま たは誤植などがあった場合、株式会社インタフェースは予告無く改訂する場合があります。ドキ ュメントまたはドキュメント内の情報に起因するいかなる損害に対しても株式会社インタフェ ースは責任を負いません。 ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があり ます。 著作権、知的所有権 株式会社インタフェースは本製品に含まれるおよび本製品に対する権利や知的所有権を保持し ています。 本製品はコンピュータ ソフトウェア(プログラム) 、 図、 文章、 写真などを含んでいます。 複製の禁止 株式会社インタフェースの許可なく、本製品(ドキュメント含む)の全て、または一部に関わらず、 複製、改変などを行うことはできません。 責任の制限 株式会社インタフェースは、株式会社インタフェース または再販売者の予見の有無にかかわら ず発生したいかなる特別損害、偶発的損害、間接的な損害、重大な損害について、責任を負いま せん。 © 2004, 2005 Interface Corporation. All rights reserved. 目次 目次 はじめに ................................................................................................................................................................................................... 1 対象環境 ................................................................................................................................................................................................... 1 注意事項 ................................................................................................................................................................................................... 1 本チュートリアルの活用方法 ............................................................................................................................................................... 2 1. CAN とは?.................................................................................................................................................................................... 3 2. CAN の解説.................................................................................................................................................................................... 4 2.1. CAN の歴史.................................................................................................................................................................................. 4 2.2. CAN の特長.................................................................................................................................................................................. 4 2.3. プロトコル概要 .......................................................................................................................................................................... 5 2.3.1. バスレベルとビット .......................................................................................................................................................... 6 2.3.2. CAN のバージョン.............................................................................................................................................................. 7 2.3.3. 調停の仕組み(優先順位の決定方法).......................................................................................................................... 8 2.3.4. ビットスタッフ ................................................................................................................................................................10 2.3.5. エラー状態 ........................................................................................................................................................................10 2.4. フレーム解説 ............................................................................................................................................................................ 11 2.4.1. フレームの種類 ................................................................................................................................................................ 11 2.4.2. データフレームの解説 ....................................................................................................................................................12 Start of Frame ......................................................................................................................................................................13 Arbitration field ...................................................................................................................................................................13 Control field.........................................................................................................................................................................15 Data field .............................................................................................................................................................................16 CRC field.............................................................................................................................................................................17 Acknowledge field ..............................................................................................................................................................18 End of Frame .......................................................................................................................................................................19 2.4.3. リモートフレームの解説 ................................................................................................................................................20 Arbitration field ...................................................................................................................................................................21 Control field.........................................................................................................................................................................22 2.4.4. エラーフレームの解説 ....................................................................................................................................................23 エラーフラグ .....................................................................................................................................................................24 エラーデリミタ .................................................................................................................................................................24 2.4.5. オーバーロードフレームの解説....................................................................................................................................25 オーバーロードフラグ .....................................................................................................................................................26 オーバーロードデリミタ.................................................................................................................................................26 2.4.6. インターフレームスペースの解説................................................................................................................................27 インターミッション .........................................................................................................................................................28 サスペンドトランスミッション.....................................................................................................................................28 バスアイドル .....................................................................................................................................................................28 2.5. エラーの種類 ............................................................................................................................................................................29 2.5.1. ビットエラー ....................................................................................................................................................................29 2.5.2. スタッフエラー ................................................................................................................................................................29 2.5.3. CRC エラー ........................................................................................................................................................................29 2.5.4. フォームエラー ................................................................................................................................................................30 2.5.5. ACK エラー ........................................................................................................................................................................30 3. 弊社 CAN インタフェースの特長 ............................................................................................................................................31 3.1. 製品の特長 ................................................................................................................................................................................31 3.2. 製品のラインナップ ................................................................................................................................................................33 4. チュートリアル ...........................................................................................................................................................................34 4.1. 動作説明 ....................................................................................................................................................................................35 4.1.1. 通常通信モード ................................................................................................................................................................36 4.1.2. FIFO 送信モード ...............................................................................................................................................................38 4.1.3. モニタモード ....................................................................................................................................................................40 4.1.4. 受信メッセージ取り出し ................................................................................................................................................42 4.1.5. 受信フィルタ設定 ............................................................................................................................................................44 dwAcceptanceCode と dwAcceptanceMask の関係 .........................................................................................................46 使用できるフィルタの種類.............................................................................................................................................47 4.1.6. エラー情報取り出し ........................................................................................................................................................51 4.1.7. バッファサイズ変更 ........................................................................................................................................................53 4.1.8. 通常送信 ............................................................................................................................................................................55 4.1.9. 繰り返し送信 ....................................................................................................................................................................57 送信周期について .............................................................................................................................................................59 © 2004, 2005 Interface Corporation. All rights reserved. 目次 5. 6. 7. 8. 4.1.10. 送信間隔指定 ..................................................................................................................................................................61 4.1.11. プロファイル機能 ..........................................................................................................................................................63 4.1.12. ユーティリティを用いた登録方法..............................................................................................................................64 4.1.13. API を用いた登録方法....................................................................................................................................................67 4.1.14. プロファイルの適用方法 ..............................................................................................................................................68 ドライバソフトウェア:GPC-4851 について.........................................................................................................................71 5.1. ドライバについて ....................................................................................................................................................................71 5.2. オンラインヘルプについて ....................................................................................................................................................71 サンプルプログラムについて ...................................................................................................................................................72 6.1. サンプルプログラムの実行方法............................................................................................................................................72 6.2. サンプルプログラム早見表 ....................................................................................................................................................73 技術資料紹介 ...............................................................................................................................................................................74 参考文献 .......................................................................................................................................................................................75 © 2004, 2005 Interface Corporation. All rights reserved. 本チュートリアルの活用方法 はじめに 平素は格別のご高配を賜り、厚く御礼申し上げます。本冊子は、弊社 CAN インタフェース (PCI-485xxx、CTP-485xxx、CBI-485xxx、LPC-485xxx、CPZ-485xxx)が可能な動作、機能を余 すところなく紹介し、コンピュータ上からこれらの機能を使用する為の制御方法、CAN 規格等 について詳しく説明したものです。 また、各種動作、機能を実際に使用した簡単なサンプルプログラムをご用意しております。こ れらを弊社 Web site(www.interface.co.jp)よりダウンロードしていただければ、一層ご理解を深 めていただけるものと思います。これらを活用することで弊社 CAN インタフェースの制御方法 が分からない方や、製品選定時の手助けになればと考えております。 ※ 本冊子では、詳細なプログラムコードは掲載しておりません。DLL 関数の説明を行っておりません。各 種動作、機能を実現するために使用する関数の説明に関しては、弊社 Web site よりダウンロード頂いた GPC-4851 または GPG-4851 内のオンラインヘルプをご参照下さい。 対象環境 本チュートリアルは以下の制約事項があります。 LPC-485120 CTP-485340 PCI-485120 CBI-485120WA 対応型式 LPC-485111 CTP-485322 PCI-485111 CBI-485120WB LPC-485102 CTP-485304 PCI-485102 CBI-485220WA LPC-485220 CPZ-485340 PCI-485220 CBI-485220WB LPC-485211 CPZ -485322 PCI-485211 CBI-4851A LPC-485202 CPZ -485304 PCI-485202 CBI-4851B PCI-485340 CBI-4852A PCI-485322 CBI-4852B PCI-485304 Microsoft Windows XP Home Edition 対応 OS Microsoft Windows XP Professional Microsoft Windows Server 2003 Microsoft Windows 2000 Microsoft Windows Me Microsoft Windows 98 対象言語 Visual Basic Ver. 6.0 以降 対象ユーザ 制御用電子機器及び、パソコン等に関して、基本的な知識を有している方。 注意事項 本チュートリアルは以下の制約事項があります。 サンプルプログラムの実行について 弊社 Web site からダウンロードできるサンプルプログラムは、ボードの動作、機能を理解して 頂く為に作成されたものです。 使用される機器の固有な安全対策処理を含んでいませんので、本サンプルプログラムを定常的 な機器運転に使用しないでください。 1 © 2004, 2005 Interface Corporation. All rights reserved. 本チュートリアルの活用方法 本チュートリアルの活用方法 本チュートリアルでは基本的に、動作や機能の説明→パソコン上からの制御方法の順に説明 を行っています。本チュートリアルにはパソコン上から制御する為のソースコードの記述はあり ません。 ソースコード(サンプルプログラム)は弊社 Web site からダウンロードしていただくようお願 い申し上げます。 以下に本チュートリアルを十分に活用して頂くための手順を示します。 1. 動作、機能一覧や、ヘッダー部分から知りたい動作についてのページに移動します。 2. 動作や機能の説明と動作や機能をパソコン上から制御する為のプログラム手順をセット で掲載しています。 3. 弊社 Web site(www.interface.co.jp)へアクセスし、本チュートリアルのサンプルプログラム 集(BPC-0820)をダウンロードします。 4. 各動作の末尾に記載されているプログラム格納フォルダ名から各サンプルプログラムを実 行し、動作の確認を行ってください。 注意)プログラム格納先フォルダに記載されている「言語」とは、プログラム言語を表しています。 <インストール先>¥VB¥CAN¥4851¥4851_*** … Visual Basic によるサンプルプログラム ヘッダ パソコン上からのプ ログラム制御手順 動作、機能の説明 2 © 2004, 2005 Interface Corporation. All rights reserved. CAN の概要 1. CAN とは? CAN とは「Controller Area Network」の略で、シリアル通信プロトコルの一種です。 CAN と聞くと多くの方が、自動車内ネットワークを連想されると思います。 元々CAN は自動車内ネットワークで使用することを前提に開発されました。 私たちの生活に欠かせない自動車ですが、近年では高機能化が進み、これまでには必要の無か った様々な部品が自動車内に搭載されるようになってきました。部品が増えるということはそれ らを接続するための配線もまた、増えるということになります。 また、省エネルギー化の波が押し寄せ、少ない燃料でより効率の良い走りが期待されています。 このように一見矛盾した様に見える二つの要望を満たす為、新たな技術を開発する必要が出てき ました。 そこで考えられたのが、自動車内で使われている配線の数を減らせないかということです。例 えば自動車内にスイッチや、センサを取り付けていくと、それらを集中管理しているところまで 配線を行う必要があります。そこで自動車メーカ各社は、各種信号をシリアルデータに変換し独 自のプロトコルで通信を行い、配線の数を減らすことに成功しました。しかし、規格が統一され ていない為、開発の効率、部品の流通性の面では思うように改善が進みません。 1980 年代後半、ドイツの電装メーカ BOSCH 社により開発された CAN は、その仕様をオープ ンとすることで、多くの半導体メーカにより対応チップが開発、ISO による規格化も行われ、瞬 く間に自動車内ネットワークの標準として位置づけられることになりました。 また、フィールドバス(工業用途データバス)の一種である、DeviceNet の基礎技術としても 使用され自動車の中だけにとどまることなく、幅広い分野で活用され始めています。 次章から この CAN について詳しく解説を行っていきます。 3 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2. CAN の解説 2.1. CAN の歴史 簡単に CAN の歩んできた道を振り返ってみたいと思います。 1986 年 1991 年 1993 年 ドイツ BOSCH 社により開発 ISO11519-1 認証 出版 ISO11898 認証 出版 そして現在、日本国内において CAN 関連の製品、書籍などが多く見られるようになり、普及の 兆しを見せています。 例) CAN 関連の電子部品や、CAN に対応した計測器、CAN の技術を解説した特集記事など 2.2. CAN の特長 CAN には、多くの特長がありますが、ここでは、そのうち幾つかの特長を取り上げます。 ◆ 低コスト・省配線 CAN は各デバイスをシリアルで接続するため、全体の配線コストを下げることができます。 また、多くの半導体メーカより CAN 対応 IC が販売されており、価格競争面で優れています。 ◆ 高信頼性 自動車内ネットワークということで、高い信頼性を誇っています。外部からのノイズに強い差 動信号で外部からのノイズの影響を受けにくくし、データの正当性を保証する CRC などで、 エラーを確実に検出します。 ◆ 調停 CAN はマルチマスタ方式で、バスが空いていれば、どの端末からでも送信を開始することが できます。もし複数の端末から同時にデータが送信された場合、バス上で衝突を検知し、ID による優先順位の決定が行われます。衝突によりデータが無くなる事はありません。 → CSMA/NBA 方式(Carrier Sense Multiple Access Nondestructive Bitwise Arbitration) この調停により、無駄の無い通信が可能です。 優先順位の高い端末は周期を乱されず、高いリアルタイム性を保つことができます。 ◆ 柔軟なシステム構築 端末にアドレスを設定する必要が無いので、機器の増設が容易です。 4 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.3.プロトコル概要 CAN のプロトコルは、BOSCH 社の仕様書で規定されています。 http://www.can.bosch.com/ こちらで公開されている仕様書では、電気的特性などは規定されていません。 OSI 基本参照モデル 7: 6: 5: 4: 3: 2: 1: アプリケーション層 プレゼンテーション層 セッション層 トランスポート層 ネットワーク層 データリンク層 物理層 CAN プロトコルは、OSI 基本参照モデルの 1,2,4 層を含むプロトコルです。このうち、1 層と 4 層につ いては、一部しか規定されていません。 再送制御のみ規定されている ビットのコード化、ビットタイミング、同 期方式については規定しているが、電気的 仕様については規定していない。 図 2-1 OSI 基本参照モデル CAN プロトコルを使用する際には、電気的仕様などを決める必要がありますが、上記の様に、 CAN プロトコル自身では定められていません。 これらは、ISO では規定されています。ISO で規定された CAN プロトコルには、ISO11898-2、 ISO11519-2、ISO11898-3 等がありますが、これらはデータリンク層は同じで、物理層の電気的 仕様などが異なります。 (電気的仕様などは後述) 5 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.3.1.バスレベルとビット CAN バスには二つのレベルがあります。ドミナントとレセシブと呼ばれる状態です。CAN バ スは、必ずこの二つのレベルのうちどちらかのレベルになります。 論理的にはドミナントが “0”、レセシブが 1 を指します。 CAN はバス接続なので、同一バス上に複数の端末が接続され、それぞれが送信を行います。 この際、一つでもドミナントを出力する端末があると、バスのレベルはドミナントになります。 全ての端末からレセシブが出力されていればバスのレベルはレセシブです。 ドミナント、レセシブのそれぞれのバスレベルは、対応する規格により変わってきます。 それらをまとめたのが以下の表です。 表 2-1 バスレベル 高速CAN ISO11898-2 バスの形状 通信速度 バスレベル ISO11519-2 ループバス 最高 1Mbps / 40m (V) 4 1 3 CAN_Low レセシブ ドミナント 2 レセシブ 1 CAN_Low レセシブ ドミナント 0 障害発生時の自動復旧 (片線での通信継続) CAN_High 4 CAN_High 3 2 レセシブ オープンバス 最高 125Kbps (V) 低速CAN Fault-tolerant CAN ISO11898-3 オープンバス 最高 125Kbps / 40m 0 × × ○ このうち、弊社製品で対応しているのは ISO11898-2 と ISO11898-3 の二つです。 CAN バスのレベルの判断は CAN トランシーバが行います。CAN バスには CAN_High と CAN_Low という 2 本の信号線があり、この 2 本の電位差によりレベルの判断が行われます。 上の表の通り、高速 CAN と低速 CAN では、バスレベルの判断の仕方が異なります。 高速 CAN の場合、CAN_High と CAN_Low の間に電位差が無いときがレセシブレベル、 CAN_High が高い電圧で CAN_Low が低い電圧になり、電位差が生じた場合がドミナントレベ ルとなります。 低速 CAN の場合、CAN_Low が CAN_High を上回っている場合、レセシブレベルで、CAN_High が CAN_Low を上回っている場合ドミナントレベルとなります。 6 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.3.2.CAN のバージョン 先述した BOSCH 社で規定されている CAN プロトコルには、幾つかのバージョンが存在します。 それらをまとめたのが以下の表です。 表 2-2 CAN のバージョン バージョン ID のビット数 備考 2.0A 2.0B パッシブ 2.0B アクティブ 11 ビット 29 ビット 29 ビット 29 ビット ID を受信す 29 ビット ID を受信し 29 ビット ID を送受信 るとエラー発生。 て も エ ラ ー は 発 生 し 可能 送信は 11 ビットのみ ないが無視される。 送信は 11 ビットのみ 弊社の製品は Ver2.0B アクティブに対応しております。 バージョン間での違いは、扱える ID のサイズです。ID については後ほど説明いたしますが、識 別する為の番号とお考え下さい。 そこで使えるビットの数が多いということは、それだけ多くの端末を識別することが出来るとい うことになります。 備考に有る通り、2.0A では、11 ビットの ID しか扱うことができません。もし 29 ビット ID を 持ったフレームを受信するとエラーが発生します。 2.0B パッシブでは、29 ビット ID の送信はできませんが、受信時、エラーが発生することはあり ません。しかし、データとしては取り込まれませんので、無視される形となります。 2.0B アクティブでは、送受信共に 29 ビットの ID を扱うことができます。 7 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.3.3.調停の仕組み(優先順位の決定方法) CAN の一つの大きな特長に、この調停の仕組みが挙げられます。バス上で複数の端末が同時に 送信を開始した場合、送信されたメッセージに含まれる ID 等を用い優先度を判断し、より優先 度の高いメッセージがバス上に生き残り、優先度の低いメッセージは再送することになります。 では、どうやって優先度の判断を行っているのでしょうか? ここで重要になってくるのが先ほ ど説明いたしました『2.3.1バスレベルとビット』になります。 CAN では、自分の出力したレベルと、バス上の実際のレベルを常に監視しています。 CAN コントローラ 送信 受信 CAN トランシーバ バスレベルは レセシブを出力。 。 レセシブだ。 。 CAN バス 図 2-2 バスレベルの監視 そして一つでもドミナントレベルを出力する端末がいると、バスはドミナントレベルになります。 CAN 端末 CAN 端末 バスレベルは ドミナント レセシブを出力。 。 ドミナントを出力。 。 CAN バス レセシブを出力。 。 CAN 端末 レセシブを出力。 。 CAN 端末 図 2-3 バスレベルの関係 8 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 この仕組みをつかい、調停を行います。下の図のように 2 台の端末から同時に送信が行われたと します。CAN のメッセージ送信は、ID の上位ビットからそれぞれ送信されます。 自分の出力がドミナントレベルで、バス上もドミナントレベルであれば次のビットの出力を行い ます。自分の出力がレセシブレベルで、バス上もレセシブレベルだった場合も同様です。 もし自分がレセシブレベルを出力したのに、バス上がドミナントレベルだった場合には、他の端 末からドミナントレベルが出力されていることになります。 … CANバス CAN端末2からのレセシブ出力が CAN端末1からのドミナント出力に負け バスの状態はドミナントレベルになる CAN端末1 からの出力 … それ以降CAN端末2はレセシブを CAN端末2 からの出力 出力し続け、CAN端末1の送信が完了 … するまで待機する …ドミナント CAN_H CAN_L …レセシブ CAN_H CAN_L …任意のレベル 図 2-4 調停の動作 これが調停に負けたということです。調停に負けた端末はバスが空くのを待ち、再送を行います。 ※ このとき、自分よりも優先度の高い端末からの送信が入った場合、また調停に負け再送を行 うことになります。時間を考慮した設計が必要になってきます。 9 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.3.4.ビットスタッフ CAN プロトコルでは、連続した同一ビットが続くことによる、同期ずれのエラーを防止するた め、ビットスタッフを行います。 ビットスタッフとは、連続した 5 ビットの同一レベルが出力された場合、次に 1 ビット、反転し たビットを付加します。このビットは受信する際には取り除かれて受信されます。 なお、この処理が行われるのは、後述するデータフレームとリモートフレームの 2 種類のフレー ムにおいてのみです。また対象となる範囲はスタートオブフレーム〜CRC フィールドの間です。 2.3.5.エラー状態 CAN プロトコルでは、CAN 端末の状態として 3 種類の状態を定義しています。 ・ エラーアクティブ ・ エラーパッシブ ・ バスオフ CAN 端末は、最初通信に参加していない状態ではバスオフです。 通信に参加するとエラーアクティブとなります。正常に通信が行えている間はエラーアクティブ を維持します。エラーを起こしやすい状態になると、エラーパッシブになります。 これらの状態は、エラーカウンターの値を元に遷移します。エラーカウンタには、送信エラーカ ウンタと受信エラーカウンタがあり、それらの値により以下の様に遷移します。 初期化時 TEC…送信エラーカウンタ エラー REC…受信エラーカウンタ アクティブ TEC>127 又は REC>127 連続 11 ビットレセシブ 検出を 128 回 エラー パッシブ TEC<128 及び REC<128 TEC>255 図 2-5 エラー状態 10 © 2004, 2005 Interface Corporation. All rights reserved. バスオフ CAN の解説 エラーパッシブでは、連続してデータの送信を行うことができなくなります。サスペンドトラン スミッションを含むインターフレームスペースを送信しなければならないためです。(『2.4.6イ ンターフレームスペースの解説』参照) また、積極的にエラーを通知することができなくなります。 2.4.フレーム解説 2.4.1.フレームの種類 CAN では、フレームという単位で送受信を行います。以下の種類のフレームが CAN では定義さ れています。 表 2-3 フレーム一覧 フレームの種類 データフレーム リモートフレーム エラーフレーム オーバーロードフレーム インターフレームスペース 主な役割 送信データ 送信を要求する エラーを通知する 受信が出来ないことを通知する フレームとフレームの間隔をあける それぞれのフレームの説明については後述致します。 このうち、データフレームとリモートフレームについては、標準フォーマットと拡張フォーマッ トという 2 種類が存在します。標準フォーマットでは ID が 11 ビット、拡張フォーマットでは ID が 29 ビットという違いがあります。 先述した CAN のバージョンの違いで、扱えるフォーマットの種類が決まります。 バージョン 2.0A では、標準フォーマットだけを扱うことができます。バージョン 2.0B アクティ ブでは標準フォーマット、拡張フォーマットの両方を扱うことができます。 バージョン 2.0B パッシブでは、送受信できるのは標準フォーマットだけですが、拡張フォーマ ットのメッセージを受信してもエラーは発生しません。 (メッセージは破棄される) ご使用になるバージョンをご確認の上、使用するフォーマットをお選び下さい。 11 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.4.2.データフレームの解説 データフレームについて解説致します。 データフレームはメッセージの送信の際に使用します。 最大で 8 バイトまでのデータを含むことができます。 データフレームの構成は以下の通りです。 アイデンティ DLC データフィールド CRC ファイヤ 4 0〜64ビット 15ビット 11ビット ビット EOF スタートオブフレーム アービトレーションフィールド コントロールフィールド データフィールド CRCフィールド …ドミナント CAN_H CAN_L ACKフィールド …レセシブ エンドオブフレーム CAN_H CAN_L …任意のレベル 図 2-6 データフレーム 大きく分け、7 つのフィールドで構成されています。 先頭から ・ Start of Frame ・ Arbitration field ・ Control field ・ Data field ・ CRC field ・ Acknowledge field ・ End of Frame という名前がついています。 12 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 Start of Frame データフレームの先頭を表します。1 ビットのドミナントビットで構成されます。 アイデンティ DLC データフィールド CRC EOF ファイヤ スタートオブフレーム 図 2-7 Start of Frame 標準・拡張フォーマット共通 CAN バスはデータの流れていないときはレセシブレベルを維持しています。Start of frame のド ミナントレベルが出力されることでバス上にデータが流れ始めたことを知ることができます。 Arbitration field 調停を行う際に用いられるフィールドです。12 ビットまたは、32 ビットで構成されます。 アイデンティ DLC データフィールド CRC EOF ファイヤ ID は、28 から 18 の順番で出力されます。 RTR は 1 ビットのドミナントビットです。 RTR ID18 ID19 ID20 ID21 ID22 ID23 ID24 ID25 ID26 ID27 ID28 11 ビット ID 図 2-8 アービトレーションフィールド 標準フォーマット時 13 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 DLC アイデンティ データフィールド CRC EOF ファイヤ ID は、28 から 0 の順番で出力されます。 RTR は 1 ビットのドミナントビットです。 RTR ID0 ID1 ID2 ID3 ID4 ID5 ID6 ID7 ID8 ID9 ID10 ID11 ID12 ID13 ID14 ID15 ID16 ID17 IDE SRR ID18 ID19 ID20 ID21 ID22 ID23 ID24 ID25 ID26 ID27 ID28 11 ビット ID 11 ビット ID 図 2-9 アービトレーションフィールド 拡張フォーマット時 ID は上位からバス上に出力され順次評価され調停が行われます。 (『2.3.3調停の仕組み(優先順 位の決定方法)』参照) ドミナントレベルの論理値は 0 ですので、ID の数値が小さい方が優先順位が高いことになり ます。なお、上位 7 ビットが全てレセシブビットになることは禁止されています。 最強、最弱の ID は以下の通りです。 (16 進数及び 2 進数で記述) 表 2-4 最強、最弱の ID 標準フォーマット時 拡張フォーマット時 最強 0h (00000000000b) 0h (00000000000000000000000000000b) 最弱 7EFh (11111101111b) 1FBFFFFFh (11111101111111111111111111111b) RTR はドミナントレベルです。 この RTR は、リモートフレーム(後述)とデータフレームを識別するために使用されます。詳 しくは、 『2.4.3リモートフレームの解説』を参照ください。 14 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 Control field データフレームに含まれるデータのサイズを表すフィールドです。6 ビットで構成されます。 アイデンティ DLC データフィールド CRC EOF CRC EOF ファイヤ DLC0 DLC1 DLC2 DLC3 r0 IDE 図 2-10 Control field 標準フォーマット時 アイデンティ DLC データフィールド ファイヤ DLC0 DLC1 DLC2 DLC3 r0 r1 図 2-11 Control field 拡張フォーマット時 r0,r1 は予約ビットで、ドミナントレベルです。ただし受信側は、レセシブレベルであっても受 信しなければなりません。データサイズは 4 ビットで表され、0〜8 以外は使用できません。 15 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 表 2-5 DLC の値 DLC3 DLC2 DLC1 DLC0 レセシブ ドミナント ドミナント ドミナント ドミナント ドミナント ドミナント ドミナント ドミナント ドミナント レセシブ レセシブ レセシブ レセシブ ドミナント ドミナント ドミナント ドミナント ドミナント レセシブ レセシブ ドミナント ドミナント レセシブ レセシブ ドミナント ドミナント ドミナント レセシブ ドミナント レセシブ ドミナント レセシブ ドミナント レセシブ ドミナント データフィールドに含まれる データバイト数 8 7 6 5 4 3 2 1 0 Data field データ本体を表すフィールドです。サイズは 0〜8 バイトです。 アイデンティ DLC データフィールド CRC EOF ファイヤ Data8 Bit0 Data8 Bit1 Data8 Bit2 Data8 Bit3 Data8 Bit4 Data8 Bit5 Data8 Bit6 Data8 Bit7 Data7 Bit0 Data7 Bit1 Data7 Bit2 Data7 Bit3 Data7 Bit4 Data7 Bit5 Data7 Bit6 Data7 Bit7 Data2 Bit0 Data2 Bit1 Data2 Bit2 Data2 Bit3 Data2 Bit4 Data2 Bit5 Data2 Bit6 Data2 Bit7 Data1 Bit0 Data1 Bit1 Data1 Bit2 Data1 Bit3 Data1 Bit4 Data1 Bit5 Data1 Bit6 Data1 Bit7 ・・・・ 図 2-12 Data field 標準・拡張フォーマット共通 最上位ビットから出力が行われます。 データは 8 ビット(1 バイト)単位で、Control fileld の DLC で指定されたサイズ分格納されます。 16 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 CRC field フレームが正しいかチェックをする際に使用します。 16 ビットで構成されます。 アイデンティ DLC データフィールド CRCフィールド EOF ファイヤ CRC delimiter CRC0 CRC1 CRC2 CRC3 CRC4 CRC5 CRC6 CRC7 CRC8 CRC9 CRC10 CRC11 CRC12 CRC13 CRC14 図 2-13 CRC field 標準・拡張フォーマット共通 15 ビットの CRC シーケンス、1 ビットの CRC デリミタから構成されます。CRC シーケンスの 生成多項式は以下の通りです。 X15+X14+X10+X8+X7+X4+X3+1 なお対象は Start of Frame、Arbitration field、Control field、Data field(存在する場合)です。 生成された CRC シーケンスは最上位ビットから出力が行われます。 CRC デリミタは 1 ビットのレセシブビットです。 CRC デリミタがレセシブ以外のレベルだった場合、フォームエラー( 『2.5エラーの種類』参照) が発生します。 受信側端末では受信したフレームから同様に CRC シーケンスを求め、受信した CRC シーケンス と比較し、フレームが正しいかどうかをチェックします。一致しない場合、CRC エラーが発生 します。 17 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 Acknowledge field 送信されたフレームが正常に受信されたかどうかの確認を行う為のフィールドです。 2 ビットで構成されます。 アイデンティ DLC データフィールド CRCフィールド EOF ファイヤ ACK delimiter ACK slot 図 2-14 Acknowledge field 標準・拡張フォーマット共通 ACK スロット、ACK デリミタから構成されます。 ACK スロットは送信側端末からはレセシブレベルで出力されます。 このフレームを受信し CRC チェックでエラーの発生しなかった受信側端末は ACK スロットに 対しドミナントレベルを出力します。 送信側端末は ACK スロットがドミナントレベルになることで、自分の送ったフレームがエラー になることなく、いずれかの受信側端末で正常に受信されたことを知ることが出来ます。 もしも ACK スロットがレセシブレベルのままの場合、ACK エラーが発生します。 ACK デリミタは 1 ビットのレセシブビットです。 ACK デリミタがレセシブ以外のレベルだった場合、フォームエラーが発生します。 18 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 End of Frame データフレームの終了を表すフィールドです。 7 ビットのレセシブビットで構成されます。 アイデンティ DLC データフィールド CRCフィールド EOF ファイヤ EOF EOF EOF EOF EOF EOF EOF 図 2-15 End of Frame 標準・拡張フォーマット共通 End of Frame にレセシブ以外のビットが含まれる場合、フォームエラー(『2.5エラーの種類』参 照)が発生します。 19 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.4.3.リモートフレームの解説 リモートフレームは、データ本体を持たないデータフレームの様に見えます。通常、受信側の端 末から、送信側の端末へデータ送信を要求する際に使用します。 リモートフレームの構成は以下の通りです。 DLC CRC ファイヤ 4 15ビット 11ビット ビット アイデンティ EOF スタートオブフレーム アービトレーションフィールド コントロールフィールド CRCフィールド …ドミナント ACKフィールド CAN_H CAN_L エンドオブフレーム …レセシブ CAN_H CAN_L …任意のレベル 図 2-16 リモートフレーム 大きく分け、6 つのフィールドで構成されています。 先頭から ・ Start of Frame ・ Arbitration field ・ Control field ・ CRC field ・ Acknowledge field ・ End of Frame という名前がついています。 このうち、データフレームと違いがあるのは Arbitration field と Control field なので、ここでの説 明は、この二つだけとさせて頂きます。 20 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 Arbitration field データフレームと同様、調停を行う際に用いられるフィールドです。12 ビットまたは、32 ビッ トで構成されます。 アイデンティ CRC DLC EOF ファイヤ ID は、28 から 18 の順番で出力されます。 RTR は 1 ビットのレセシブビットです。 RTR ID18 ID19 ID20 ID21 ID22 ID23 ID24 ID25 ID26 ID27 ID28 11 ビット ID 図 2-17 Arbitration fiedl 標準フォーマット時 アイデンティ DLC CRC EOF ファイヤ ID は、28 から 0 の順番で出力されます。 RTR は 1 ビットのレセシブビットです。 RTR ID0 ID1 ID2 ID3 ID4 ID5 ID6 ID7 ID8 ID9 ID10 ID11 ID12 ID13 ID14 ID15 ID16 ID17 IDE SRR ID18 ID19 ID20 ID21 ID22 ID23 ID24 ID25 ID26 ID27 ID28 11 ビット ID 11 ビット ID 図 2-18 Arbitration field 拡張フォーマット時 データフレームとの違いは RTR ビットの違いです。リモートフレームでは RTR ビットはレセシ ブレベルです。 、データフレームではドミナントレベルでした。 もしデータ本体を持たないデータフレーム(DLC=0)が届いても、RTR ビットを見ればデータ フレームかリモートフレームかを判断することができるというわけです。 21 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 Control field データフレームと同様、6 ビットでデータのサイズを表します。 アイデンティ DLC CRC EOF ファイヤ DLC0 DLC1 DLC2 DLC3 r0 IDE 図 2-19 Control filed 標準フォーマット時 アイデンティ DLC CRC EOF ファイヤ DLC0 DLC1 DLC2 DLC3 r0 r1 図 2-20 Control field 拡張フォーマット時 データフレームと同じフォーマットですが、リモートフレームには Data field がありません。 ここで表すサイズは送信側端末に対して送信を要求する際のデータサイズを表しています。 22 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.4.4.エラーフレームの解説 エラーフレームについて解説致します。 エラーフレームはエラーを検出した端末が他の端末にエラーを通知する際に使用します。 データフレームの構成は以下の通りです。 エラーフラグ エラーフラグ 6 ビット 0〜6 ビット エラーデリミタ エラーフラグ エラーデリミタ …ドミナント CAN_H CAN_L …レセシブ CAN_H CAN_L …任意のレベル 図 2-21 エラーフレーム 標準・拡張フォーマット共通です。 大きく分け、2 つのフィールドで構成されています。 先頭から ・ エラーフラグ ・ エラーデリミタ という名前がついています。 エラーフレームの送信のタイミングは、発生したエラーの種類により異なります。 ビットエラー、スタッフエラー、フォームエラー、ACK エラーの場合、エラーを検出した次の ビットからエラーフラグの送信が開始されます。 CRC エラーの場合は、別のエラー状態のエラーフレームが送信されていない時に限り、ACK デ リミタに続くビットからエラーフレームの送信が開始されます。 各エラーの詳細については『2.5エラーの種類』で解説しておりますので、そちらを参照下さい。 23 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 エラーフラグ エラーフラグは 6〜12 ビットで構成されます。 エラーフラグ エラーフラグ 6 ビット 0〜6 ビット エラーデリミタ 図 2-22 エラーフラグ 標準・拡張フォーマット共通 エラーフラグには 2 種類のフラグがあります 表 2-6 エラーフラグの種類 エラーフラグの種類 アクティブエラーフラグ 構成 6 ビットのドミナントビット パッシブエラーフラグ 6 ビットのレセシブビット 内容 エラーアクティブの端末がエラーを 検出した際に送信する エラーパッシブの端末がエラーを検 出した際に送信する パッシブエラーフラグはレセシブビットの為、他の端末からのドミナントビットによって上書き される可能性があります。これは、エラーパッシブの端末はエラーが発生しやすい状態というこ とで、バス上に積極的にエラー通知ができない為です。つまりエラーパッシブの端末がエラーフ ラグを送出しても他のエラーアクティブの端末がエラーを検出し通知を行わない限り、バス上に はエラーは発生していないことになるのです。 エラーを検出した端末はアクティブエラーフラグとして 6 ビットのドミナントを出力します。こ の時、ビットスタッフは行われないので、他の端末ではビットスタッフエラーを検出し、アクテ ィブエラーフラグを送出します。これがエラーフラグの重ね合わせで、エラーフラグは最長で 12 ビットとなります。 エラーデリミタ エラーデリミタは 8 ビットのレセシブビットで構成されます。 エラーフラグ エラーフラグ 6 ビット 0〜6 ビット エラーデリミタ 8ビット 図 2-23 エラーデリミタ 標準・拡張フォーマット共通 各端末はエラーフラグを送出後、1 ビットのレセシブビットを出力し、バスがレセシブレベルに なるまで繰り返します。レセシブレベルを検出すると続けて残り 7 ビットのレセシブビットを出 力します。 24 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.4.5.オーバーロードフレームの解説 オーバーロードフレームについて解説致します。 オーバーロードフレームは受信側端末の受信準備が整っていないときに送信されます。 オーバーロードフレームの構成は以下の通りです。 オーバーロード フラグ オーバーロード フラグ 6 ビット 0〜6 ビット オーバーロード デリミタ オーバーロードフラグ オーバーロードデリミタ …ドミナント CAN_H CAN_L …レセシブ CAN_H CAN_L …任意のレベル 図 2-24 オーバーロードフレーム 標準・拡張フォーマット共通です。 大きく分け、2 つのフィールドで構成されています。 先頭から ・ オーバーロードフラグ ・ オーバーロードデリミタ 25 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 オーバーロードフラグ オーバーロードフラグは 6〜12 ビットのドミナントビットで構成されます。 オーバーロード フラグ オーバーロード フラグ 6 ビット 0〜6 ビット オーバーロード デリミタ 図 2-25 オーバーロードフラグ 標準・拡張フォーマット共通 ドミナントビットで構成される為、オーバーロードフレームを送出している間は、他の端末から はデータを送信することができません。 オーバーロードフラグは、アクティブエラーフラグと同じ構成です。 オーバーロードデリミタ オーバーロードデリミタは 8 ビットのレセシブビットで構成されます。 オーバーロード フラグ オーバーロード フラグ 6 ビット 0〜6 ビット オーバーロード デリミタ 8ビット 図 2-26 オーバーロードデリミタ 標準・拡張フォーマット共通 オーバーロードデリミタは、エラーデリミタと同じ構成です。 26 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.4.6.インターフレームスペースの解説 インターフレームスペースについて解説致します。 インターフレームスペースは、データフレーム、リモートフレームの、フレーム間を分離する為 に送信されます。 インターフレームスペースの構成は以下の通りです。 インター サスペンド バスアイドル ミッション トランスミッション 3ビット 0〜 8ビット インターミッション サスペンドトランスミッション バスアイドル …ドミナント CAN_H CAN_L …レセシブ CAN_H CAN_L …任意のレベル 図 2-27 インターフレームスペース 大きく分け、3 つのフィールドで構成されています。 先頭から ・ インターミッション ・ サスペンドトランスミッション ・ バスアイドル という名前がついています。 27 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 インターミッション インターミッションは 3 ビットのレセシブビットで構成されます。 インター サスペンド バスアイドル ミッション トランスミッション 3ビット 0〜 8ビット 図 2-28 インターミッション 標準・拡張フォーマット共通 この間、全ての端末はデータフレーム、リモートフレームを送信することができません。 例外として、オーバーロードフレームだけは送信可能です。 サスペンドトランスミッション サスペンドトランスミッションは 8 ビットのレセシブビットで構成されます。 インター サスペンド ミッション トランスミッション 3ビット バスアイドル 0〜 8ビット 図 2-29 サスペンドトランスミッション 標準・拡張フォーマット共通 サスペンドトランスミッションは、エラーパッシブ状態のユニットから送信されたフレームに続 いて送信されたインターフレームスペースに限り含まれます。 バスアイドル バスアイドルは任意のビット数のレセシブビットで構成されます。 インター サスペンド ミッション トランスミッション 3ビット 8ビット 図 2-30 バスアイドル 標準・拡張フォーマット共通 長さに制限はありません。0 ビットでも構いません。 バスアイドル時、どの端末からも送信を行うことができます。 28 © 2004, 2005 Interface Corporation. All rights reserved. バスアイドル 0〜 CAN の解説 2.5.エラーの種類 CAN では、以下の 5 つのエラーが定義されています。 ・ ビットエラー ・ スタッフエラー ・ CRC エラー ・ フォームエラー ・ ACK エラー エラーが発生した場合、自分自身のエラー状態に合わせエラーフレームの送信を行います。エラ ーフレームについては『2.4.4エラーフレームの解説』を参照下さい。 2.5.1.ビットエラー CAN では送信を行う端末がバスを監視し、1 ビット毎に自分の出力したレベルと同じかをチェ ックします。もし、自分の出力したレベルと現在のバスのレベルが異なる場合、ビットエラーと なります。 例外として、Arbitration field、ACK スロットに対してレセシブビットを出力したのにドミナント ビットを検出したときはビットエラーになりません。 また、パッシブエラーフラグを送信中の時もビットエラーにはなりません。 ビットエラーは送信側、受信側端末の両方で検出されます。 2.5.2.スタッフエラー 『ビットスタッフ』が行われるべき所で、ビットスタッフが行われていないときにスタッフエラ ーとなります。 スタッフエラーは送信側、受信側端末の両方で検出されます。 2.5.3.CRC エラー 受信を行った端末が CRC を計算し、メッセージに付随する CRC シーケンスと一致しない場合、 CRC エラーとなります。 『CRC field』の説明を参照下さい。 CRC エラーは受信側端末においてのみ検出されます。 29 © 2004, 2005 Interface Corporation. All rights reserved. CAN の解説 2.5.4.フォームエラー 受信を行った端末が、特定のビットで期待された値(固定値)以外の値を検出した場合に発生す るエラーです。 例えば CRC デリミタはレセシブでなければなりませんが、ここでドミナントレベルを検出した 場合、フォームエラーとなります。 フォームエラーの発生する可能性としては以下の通りです。 ・データフレームにおいて、CRC デリミタ、ACK デリミタ、EOF のいずれかでドミナントレベ ルを検出した。 ・リモートフレームにおいて、CRC デリミタ、ACK デリミタ、EOF のいずれかでドミナントレ ベルを検出した。 ・エラーフレームにおいて、エラーデリミタでドミナントレベルを検出した。 ・オーバーロードフレームにおいて、オーバーロードデリミタでドミナントレベルを検出した。 フォームエラーは受信側端末においてのみ検出されます。 2.5.5.ACK エラー 送信を行った際、ACK スロットに ACK が返ってこなかった場合、ACK エラーとなります。 『Acknowledge field』の説明を参照下さい。 ACK エラーは送信側端末においてのみ検出されます。 30 © 2004, 2005 Interface Corporation. All rights reserved. 弊社 CAN インタフェースの特長 3. 弊社 CAN インタフェースの特長 3.1.製品の特長 弊社 CAN インタフェース製品は、以下の機能、特長を持ちます。 これらの機能、特長の一部は 4 節(34ページ以降)に詳しく解説しています。 ◆ 豊富なラインナップ(バスの種類、チャンネル数、機能の違いなど) 通常のパソコンで採用されている PCI バスの他、省スペースデスクトップで採用されている Lowprofile PCI、ノートパソコンで採用されている CardBus、耐環境性に優れた工業用途の Compact PCI それぞれのバスに対応した製品をラインナップしております。 また、搭載される機能の違いで、スタンダード版、高機能版、バスマスタ版とご用意いたして おります。 (詳細は 『3.2製品のラインナップ』 で解説致します) ◆ 大容量 FIFO バッファの搭載で、データの取りこぼしを防止(高機能版、バスマスタ版) 送信、受信にそれぞれ 64 メッセージ分の FIFO バッファを搭載しています。また、エラー情 報用にも 64 件のバッファが用意されています。 なお、スタンダード版は 64 バイトの FIFO しか搭載しておらず、1 バイトのデータを含むメッ セージを受信した場合、64 バイトの FIFO の中には 16 個のメッセージしか蓄えることができ ません。データを 8 バイトにした場合、5 個しか蓄えることができません。 一方、高機能版、バスマスタ版ではデータの長さに依らず 64 個のメッセージを蓄えることが できます。 ※ これらの FIFO バッファは、デバイスドライバ内部で使用していますので、アプリケーシ ョン側から直接使用することはできません。デバイスドライバ内部のバッファへ随時転送 されます。どの製品をお使い頂く場合も、デバイスドライバ内部のバッファサイズは任意 のサイズを指定可能ですので、この FIFO のサイズの違いはデータの取りこぼし発生の確 率を下げる物とご理解下さい。 ※ 最高速度(1Mbps)で、1 バイトのデータを持つフレームを 連続で受け取った場合、64 メッセージを実時間に当てはめると、約 3ms になります。 ◆ バスマスタ機能を搭載し、CPU の負荷を軽減(バスマスタ版) バスマスタ版では、上記の FIFO バッファに加え、データの転送にバスマスタ方式を採用して いますので、CPU に負荷をかけることなく、FIFO バッファから受信メッセージを取り出すこ とができます。 特に多チャンネルで使用する場合に効果を発揮します。 31 © 2004, 2005 Interface Corporation. All rights reserved. 弊社 CAN インタフェースの特長 ◆ 10µs 単位のカウンタを搭載し、正確なタイミングを取得可能(高機能版、バスマスタ版) 10µs 単位のカウンタを搭載しています。メッセージの受信時、FIFO バッファに格納する際に このカウンタの値を一緒に格納しますので、メッセージの受信したタイミングを正確に知るこ とができます。 また、メッセージ受信と同様に、エラーの発生時にも同様にこのカウンタの値が格納されます ので、受信メッセージとエラー発生のタイミングの関係も知ることができます。 ◆ 10µs 単位で、繰り返し送信、メッセージ送信間隔指定可能(高機能版、バスマスタ版) 繰り返し送信の周期を設定することで、ソフトウェアに影響を受けることなく、自動で繰り返 し送信を行うことができます。もちろん、送信のメッセージを途中で変更することも可能です。 変更後は、次の送信タイミングから新しいメッセージが送信されます。試験装置を作る際など、 正確な周期が必要な場合に便利です。 通常の送信の場合、メッセージ送信の完了後、一定間隔を空けて次のメッセージを送信するこ とが可能です。 例えば、こちらから相手にメッセージを送った後、他の端末からの送信のためにバスを一定時 間空けておきたいといったときに便利です。 32 © 2004, 2005 Interface Corporation. All rights reserved. 弊社 CAN インタフェースの特長 3.2.製品のラインナップ 弊社 CAN インタフェース製品の機能、特性の比較一覧を示します。 表 3-1 型式の見方 ○○○−485◎□△ 低速CANのチャンネル数(0〜4) 高速CANのチャンネル数(0〜4) 製品カテゴリ 1・・・標準版 2・・・高機能版 3・・・バスマスタ対応版 バスの種別 PCI・・・PCIバス対応版 CTP・・・CompactPCIバス対応版 CBI・・・CardBus対応版 LPC・・・Low Profile PCI対応版 CPZ・・・3.3V信号環境CompactPCIバス対応版 型式名 PCI-4851xx PCI-4852xx PCI-4853xx LPC-4851xx、LPC-4852xx 外観図 CTP-4853xx CPZ-4853xx CBI-4851xx、CBI-4852xx 価格 弊社 Web site をご覧下さい 特長 ・ 各種バス向けに豊富なラインナップ ・ Windows、Linux 用デバイスドライバを無償提供 使用コントローラ 適合規格 通信速度 使用トランシーバ SJA1000 (Philips 社) 高速 CAN ISO11898-2 60kbps 〜 1Mbps TJA1050 相当品 33 © 2004, 2005 Interface Corporation. All rights reserved. 低速 CAN Fault-tolerant CAN (ISO11898-3) 40kbps 〜 125kbps TJA1054A 相当 動作説明 4. 〜通常通信モード〜 チュートリアル ここでは、弊社 CAN インタフェースにおいて、可能な動作、機能の説明を行います。 表 4-1 に本チュートリアルで使用する用語の意味を示しておきます。 表 4-1 用語の説明 用語名 意味 CAN メッセージ データフレーム、リモートフレームと同義です。 CAN メッセージに含まれるデータが、どの様な意味づけで格納されている プロファイル かを定義した情報。GPC-4851、GPG-4851 でライブラリとして機能を提供 しています。 アクセプタンスフ 受信許可フィルタです。設定された条件の ID、データを持つ CAN メッセ ィルタ ージのみ受信し、それ以外は破棄します。 CAN バスで発生した各種バスエラーの情報です。 エラー情報 発生した時間、エラーの種類などが含まれます。 主にデバイスドライバ内で確保されるバッファを指します。高機能版では 送信バッファ、受 ボード上に FIFO バッファを拡張していますが、ここでいう送信バッファ、 信バッファ 受信バッファはソフトウェアレベルでのバッファですので、製品による違 いはありません。 本チュートリアルに記載されている動作を確認する為には以下のものが必要となります。 表 4-2 必要機材 弊社 CAN インタフェース(PCI-485220) 1 枚:『3.2製品のラインナップ』を参照下さい GPC-4851 1 本:弊社 Web site よりダウンロード下さい CAN ケーブル 1 本:弊社ではご用意致しておりません ※本チュートリアルは D-Sub9 ピンコネクタを両端に付けたケーブルを使用しています。 2 番ピン … CAN_L 7 番ピン … CHN_H を それぞれストレートで接続します。 パソコンに CAN インタフェースを実装し、ケーブルを用いてボードのチャンネル同士を接続し てください。このとき、注意することとしては、高速 CAN と低速 CAN は通信することが出来 ませんので、高速 CAN は高速 CAN 同士、低速 CAN は低速 CAN 同士で接続してください。 適合コネクタ、ピン配置などは、お使いの CAN インタフェースのマニュアルに掲載されており ますので、ご確認下さい。 34 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜通常通信モード〜 CAN_H(ピン番号 7) CAN_L(ピン番号 2) GND(ピン番号 3) D-Sub9 ピン D-Sub9 ピン 図 4-1 PCI-485220 における CH1 と CH2 の接続例 バスの両端に来るチャンネルには、必ず終端抵抗の設定を行ってください。 4.1.動作説明 表 4-2において可能な動作一覧を示します。 表 4-3 動作一覧 動作モード 受信動作 CAN 通信 送信動作 プ ロ フ ァ 登録 イル 変換 動作一覧 通常通信モード FIFO 送信モード モニタモード 受信メッセージ取り出し 受信フィルタ設定 エラー情報取り出し バッファサイズ変更 通常送信 繰り返し送信 送信間隔指定 ユーティリティを用いた登録方法 API を用いた登録方法 プロファイルの適用方法 35 © 2004, 2005 Interface Corporation. All rights reserved. Page 36 38 40 42 44 51 53 55 57 61 64 67 68 動作説明 〜通常通信モード〜 4.1.1.通常通信モード 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 通常の CAN 通信を行うモードです。 CAN メッセージの受信時、ACK(P.18『Acknowledge field』)を返します。 動作図 端末 A 端末 B データ送信 ACK返信する データ受信 CANバス データ受信 ACKを返信する 通常通信モードのPCI‑485220 36 © 2004, 2005 Interface Corporation. All rights reserved. 他の端末と同様に、 CAN イ ンタフェース はA CK を返し ます。 動作説明 〜通常通信モード〜 アプリケーション例 通常通信モードで CAN インタフェースをオープンします。 なお、CAN バスの通信速度は 500kbps とします。 プログラムでの制御手順 ボードのオープン CanOpenPort 設定値取得 CanGetConfig 動作パラメータ設定 CanSetConfig CAN バスへ接続 CanActivate 各種処理 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_PORTINIT CAN インタフェースを使用可能にします。 まず、CanGetConfig で動作パラメータのデフォルト値を取得し ます。その中で、変更を行いたいパラメータだけ変更し、 CanSetConfig で設定します。 パラメータ 設定値 ulLineMode CAN_NORMAL_MODE ulBaudRate CAN_BAUDRATE_500k これ以外のパラメータはデフォルト値とします。 CAN バスへの接続を有効にします。 受信メッセージの取り出しなど行います。 CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_PORTINIT 37 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜FIFO 送信モード〜 4.1.2.FIFO 送信モード 指定可能製品 高機能版 PCI-485202,PCI-485211,PCI-485220,LPC-485202,LPC-485211,LPC-485220 CBI-485220WA,CBI-485220WB,CBI-4852A,CBI-4852B バスマスタ対応版 PCI-485304,PCI-485322,PCI-485340,CTP-485304,CTP-485322,CTP-485340, CPZ-485304, CPZ -485322, CPZ -485340 動作説明 『通常通信モード』に加え、メッセージ送信時に拡張された FIFO バッフ ァを使用し、送信のパフォーマンスを向上させるモードです。 ボードから発生する送信割り込みの頻度が減り、パソコンへの負荷が軽 減されます。 動作図 端末 A 端末 B CANバス 通常送信モードでは、デバイス ドライバ 内部のバッファから少しずつCANコント ローラに転送されます。 FIFO送信モードでは、ボード上のFIFO バッファに一括で転送し、 そこから自動 的にCANコントローラへ転送されます。 © 2004, 2005 Interface Corporation. All rights reserved. アプリケーション 内部バッファ ドライバ内部バッファ FIFOバッファ CANコントローラ 38 動作説明 〜FIFO 送信モード〜 アプリケーション例 FIFO 送信モードで CAN インタフェースをオープンします。 なお、CAN バスの通信速度は 500kbps とします。 プログラムでの制御手順 ボードのオープン CanOpenPort 設定値取得 CanGetConfig 動作パラメータ設定 CanSetConfig CAN バスへ接続 CanActivate 各種処理 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_PORTINIT CAN インタフェースを使用可能にします。 まず、CanGetConfig で動作パラメータのデフォルト値を取得し ます。その中で、変更を行いたいパラメータだけ変更し、 CanSetConfig で設定します。 パラメータ 設定値 ulLineMode CAN_NORMAL_MODE OR (論理和) ※ CAN_FIFO_SEND_MODE ulBaudRate CAN_BAUDRATE_500k これ以外のパラメータはデフォルト値とします。 CAN_FIFO_SEND_MODE は 、単独 で指 定 する のでは な く、 CAN_NORMAL_MODE との論理和を指定します。 CAN バスへの接続を有効にします。 CAN メッセージの送信などを行います。 CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_PORTINIT ※ 実際は、CAN_NORMAL_MODE が ”0” を表す為、CAN_FIFO_SEND_MODE だけを指定しても FIFO 送 信モードで動作します。 39 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜FIFO 送信モード〜 4.1.3.モニタモード 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 CAN メッセージの受信時、ACK(P.18『Acknowledge field』)を返しませ ん。データの横取りするだけで、CAN バスに対しては一切影響を与えま せん。 CAN バスをモニタしたい時に使うモードです。 CAN バス上に、モニタモード以外の CAN 端末が存在しない場合(例え ば、弊社 CAN インタフェースの CH1 と CH2 を接続し、片方をモニタモ ードとした時) 、送信データに対し、ACK を返す端末がいないことにな りますので、ACK エラーが発生します。ご注意下さい。 本モードを使い、次々に通信速度を変更していき、通信速度の検出に使 うこともできます。 動作図 端末 A 端末 B データ送信 ACK返信する データ受信 CANバス データ受信 ACKを返信しない 通常、データ受信した端末 はACK を返しますが、 モニ タモードで初期化された CAN インタフェースはACK を返しません。 モニタモードのPCI‑485220 ※ モニタモードでは、エラーパッシブ状態(P.23『2.4.4エラーフレームの解説』を参照下さい)となり、 通信エラーを検出してもアクティブエラーフラグを送信することができません。 40 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜FIFO 送信モード〜 アプリケーション例 モニタモードで CAN インタフェースをオープンします。 なお、CAN バスの通信速度は 500kbps とします。 プログラムでの制御手順 ボードのオープン CanOpenPort 設定値取得 CanGetConfig 動作パラメータ設定 CanSetConfig CAN バスへ接続 CanActivate 各種処理 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_PORTINIT CAN インタフェースを使用可能にします。 まず、CanGetConfig で動作パラメータのデフォルト値を取得し ます。その中で、変更を行いたいパラメータだけ変更し、 CanSetConfig で設定します。 パラメータ 設定値 ulLineMode CAN_LISTEN_ONLY_MODE ulBaudRate CAN_BAUDRATE_500k これ以外のパラメータはデフォルト値とします。 CAN バスへの接続を有効にします。 受信メッセージの取り出しなど行います。 CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_PORTINIT 41 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜受信メッセージ取り出し〜 4.1.4.受信メッセージ取り出し 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 弊社 CAN インタフェースを使用し CAN 通信を行う際、受信された CAN メッセージは一旦、デバイスドライバ内部のバッファに蓄えられます。 そのバッファからアプリケーション側に受信メッセージを取り出す動作 を行います。 動作図 端末 A 端末 B データ送信 データ受信 CANバス CAN バス から受信したメッ セージは CAN コント ローラに一旦蓄え られます。 標準版では、 直接CAN コントローラから デバ イス ドライバ にデータを転送します が、 高機能版では、 拡張されたFIFOバ ッ ファに蓄えられ、 そこからまとめて 取り 出すことができます。 データ受信 標準版の処理 ボード内 アプリケーション 内部バッファ ドライバ内部バッファ FIFOバッファ CANコントローラ 高機能版の処理 この処理はハードウェ ア、デバイスドライバ内 部で自動的に行われま す。 この処理をお客様のプロ グラムで行いま す。 ※ ドライバ内部の受信バッファサイズは任意のサイズに指定が可能です。『4.1.7バッファサイズ変更』を参 照下さい。 42 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜受信メッセージ取り出し〜 アプリケーション例 受信メッセージ数を確認し、受信メッセージが有れば取り出します。 プログラムでの制御手順 ステータス取得 CanGetStatus 変数参照 ulRXBCount 1 以上? CAN インタフェースのステータスを取得します。 取得したステータスから必要な箇所を参照します。 ステータスは CAN_PORT_STATUS 構造体に格納されています。 そのうち、受信メッセージ数を表すメンバは以下の変数です。 メンバ 内容 ulRXBCount 受信したメッセージ数 0〜最大値※ これ以外のメンバ変数はここでは参照しませんが、状況に応じ て参照して下さい。 YES 受信メッセージ取得 CanReceiveMessage 受信メッセージを取り出します。 一度に複数のメッセージを取り出すことができます。 先ほど取得した ulRXBCount を使用し、受信している全て のメッセージを一度に取り出すことも可能です。 その場合、格納先の領域の確保には十分ご注意下さい。 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_RECEIVE CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_RECEIVE ※ 最大値は、CanSetConfig 関数で設定した値です。 43 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜受信フィルタ設定〜 4.1.5.受信フィルタ設定 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 多くの CAN メッセージが CAN バス上を流れているとき、全てのメッセ ージを取り込むと件数が膨大になります。 そのようなときに、受信フィルタ機能を使用すると、特定の条件を満た す CAN メッセージだけを受信する事ができます。 条件を満たした CAN メッセージは受信バッファに蓄えられますが、条件 を満たさなかった CAN メッセージは破棄されます。ただし、ACK は返 します。 動作図 端末 A 端末 B データ送信 ID:11011000001 データ送信 ID:00011000001 CANバス 受信されない 受信フィルタ IDの上位5ビットが “11011” のフレームだけ受信する データ受信 受信フィ ルタに設定された条件を満たす メッ セージのみ、 フィ ルタを通過し、 CAN インタフェースに取り込まれます。 44 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜受信フィルタ設定〜 アプリケーション例 受信フィルタを設定し、特定のメッセージだけを受信するようにします。 プログラムでの制御手順 ステータス取得 CanGetStatus フィルタ設定 CanSetAcceptanceFilter 通信開始 CanActivate 各種処理 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_FILTER CAN インタフェースのオープンなどを行っておきます。 dwAcceptanceCode と dwAcceptanceMask の二つの変数でフィル タの設定を行います。 (次頁で詳しく解説しております) 変数名 内容 dwAcceptanceCode 該当するビットに期待する値をセット します。 dwAcceptanceMask そのビットをフィルタの条件に使うか どうかを選択します。 0…フィルタ条件に使用する 1…フィルタ条件に使用しない 設定後、通信を開始します。 受信メッセージを取り出すなどの処理を行ってください。 CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_FILTER 45 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜受信フィルタ設定〜 dwAcceptanceCode と dwAcceptanceMask の関係 図で表すと以下のようになります。 (シングルフィルタで 標準フォーマットを使用している場合) この二つの変数を合わせて、フィ ルタを通過する為の条件を設定します。 dwAcceptanceCode 0 1 1 1 0 0 0 0 0 0 0 0 ・・・ dwAcceptanceMask 0 0 0 0 1 1 1 1 1 1 1 1 ・・・ dwAcceptanceMaskにセットされた値で、使用するビット を決めます。 0・・・フィルタに使用する 1・・・フィルタに使用しない 計算すると・・・ このようになります 比較用の値 0 1 1 1 ・・・ 受信したメッセージ が以下の場合。。 一致しているので受信されます ○ ○ ○ ○ 0 1 1 1 0 1 1 1 0 0 1 0 ・・・ 受信したメッセージ が以下の場合。。 一致して いないので破棄されます ○ × ○ ○ 0 0 1 1 0 1 1 1 0 0 1 0 ・・・ 図 4-2 dwAcceptanceCode と dwAcceptanceMask の関係 46 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜受信フィルタ設定〜 使用できるフィルタの種類 dwAcceptanceCode、dwAcceptanceMask は、CanSetConfig 関数で設定する CAN_PORT_CONFIG 構造体の ulFilterMode 及び、使用するフレームフォーマット(標準/拡張フォーマット)に より、内容が異なります。 ulFilterMode が CAN_SINGLE_FILTERの場合 1 種類のフィルタを設定することが可能です。 ●標準フォーマット 11 ビット ID 全てに対しフィルタを設定することが可能です。 また、データバイトの先頭 2 バイトに対してもフィルタを設定することが出来ます。 表 4-4 標準フォーマット時のフィルタ適用範囲 ←フレームの先頭 ID(11 ビット) 28 27 26 20 … 1 バイト目データ RTR 19 18 0 2 バイト目データ 3 バイト目 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 フィルタの適用範囲 ビット(※1) フィルタ対象 ビット フィルタ対象 ビット フィルタ対象 ビット フィルタ対象 bit31 ID.28 bit30 ID.27 bit23 bit22 ID.20 bit29 ID.26 bit21 bit28 bit27 ID.25 ID.24 ID.28〜ID.21 bit20 ID.19 ID.18 RTR ID.20〜ID.18、RTR bit15 bit14 bit13 bit7 bit6 bit5 bit7 bit6 bit5 bit7 bit6 bit5 bit12 bit19 0 bit25 ID.22 bit24 ID.21 bit18 bit17 bit16 0 0 予約(※2) 0 bit10 bit9 bit8 bit4 bit3 bit2 受信データ 1 バイト目 bit1 bit0 bit2 bit1 bit0 bit4 bit3 bit2 受信データ 2 バイト目 bit1 bit0 bit4 ※1.dwAcceptanceCode、dwAcceptanceMask のビットです。 ※ 2.0 を指定してください。 47 © 2004, 2005 Interface Corporation. All rights reserved. bit11 bit26 ID.23 bit3 動作説明 〜受信フィルタ設定〜 ●拡張フォーマット 29 ビット ID 全てに対しフィルタを設定することが可能です。 表 4-5 拡張フォーマット時のフィルタ適用範囲 ←フレームの先頭 ID(29 ビット) 28 27 26 1 バイト目データ RTR 2 … 1 0 0 7 6 5 4 3 2 1 2 バイト目〜 0 フィルタの適用範囲 ビット フィルタ対象 ビット フィルタ対象 ビット フィルタ対象 ビット フィルタ対象 bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24 ID.28 ID.27 ID.26 ID.25 ID.24 ID.28〜ID.21 ID.23 ID.22 ID.21 bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16 ID.20 ID.19 ID.18 ID.17 ID.16 ID.20〜ID.13 ID.15 ID.14 ID.13 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ID.12 ID.11 ID.10 ID.9 ID.8 ID.12〜ID.5 ID.7 ID.6 ID.5 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ID.4 ID.3 ID.0 RTR 0 ID.2 ID.1 ID.4〜ID.0、RTR 48 © 2004, 2005 Interface Corporation. All rights reserved. 0 予約 動作説明 〜受信フィルタ設定〜 ulFilterMode が CAN_DUAL_FILTERの場合 2 種類のフィルタ(No.1 フィルタ、No.2 フィルタ)を設定することが可能です。 No.1 フィルタ、No.2 フィルタのいずれか片方のフィルタさえ通過すれば、データは受信され ます(No.1 フィルタを通過したデータに、さらに No.2 フィルタを通過させ、両方のフィルタ を通過するデータのみを受信するのではありません) 。 ●標準フォーマット 11 ビット ID 全てに対し 2 種類のフィルタを設定することが可能です。 そのうち No.1 フィルタについては、データバイトの先頭 1 バイトに対してもフィルタを設定 することが出来ます。 dwAcceptanceCode、dwAcceptanceMask の bit0〜bit3、および bit16〜bit31 の部分が No.1 フィル タになり、bit4〜bit15 の部分が No.2 フィルタになります。 表 4-6 標準フォーマット時のフィルタ適用範囲 ←フレームの先頭 ID(11 ビット) 28 27 26 25 24 23 22 1 バイト目データ RTR 21 20 19 18 0 7 6 5 4 3 2 1 2 バイト目〜 0 No.2 フィルタの適用範囲 No.1 フィルタの適用範囲 ビット フィルタ対象 bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24 ID.28 ID.27 ID.26 ID.25 ID.24 ID.28〜ID.21 No.1 フィルタ ID.23 ID.22 ID.21 bit23 bit22 bit21 bit20 bit18 bit17 bit16 フィルタ No ビット フィルタ対象 ID.20 ID.19 ID.18 ID.20〜ID.18、RTR フィルタ No ビット フィルタ対象 フィルタ対象 フィルタ No RTR bit7 bit6 bit5 bit4 受信データ 1 バイト目上位 4 ビット No.1 フィルタ bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ID.28 ID.27 ID.26 ID.25 ID.24 ID.28〜ID.21 No.2 フィルタ ID.23 ID.22 ID.21 bit7 bit6 bit5 bit2 bit1 bit0 フィルタ No ビット bit19 ID.20 ID.19 ID.18 ID.20〜ID.18、RTR No.2 フィルタ 49 © 2004, 2005 Interface Corporation. All rights reserved. bit4 RTR bit3 bit3 bit2 bit1 bit0 受信データ 1 バイト目下位 4 ビット No.1 フィルタ 動作説明 〜受信フィルタ設定〜 ●拡張フォーマット 29 ビット ID のうち、先頭の 16 ビットに対し 2 種類のフィルタを設定することが可能です。 dwAcceptanceCode、dwAcceptanceMask の bit16〜bit31 の部分が No.1 フィルタになり、 bit0〜bit15 の部分が No.2 フィルタになります。 表 4-7 拡張フォーマット時のフィルタ適用範囲 ←フレームの先頭 ID(29 ビット) 28 27 26 … 15 1 バイト目データ RTR 14 13 12〜0 0 7 6 5 4 3 2 1 2 バイト目〜 0 No.2 フィルタの適用範囲 No.1 フィルタの適用範囲 ビット フィルタ対象 bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24 ID.28 ID.27 ID.26 ID.25 ID.24 ID.28〜ID.21 No.1 フィルタ ID.23 ID.22 ID.21 フィルタ No ビット フィルタ対象 bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16 ID.20 ID.19 ID.18 ID.17 ID.16 ID.20〜ID.13 No.1 フィルタ ID.15 ID.14 ID.13 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ID.28 ID.27 ID.26 ID.25 ID.24 ID.28〜ID.21 No.2 フィルタ ID.23 ID.22 ID.21 bit7 bit6 bit5 bit2 bit1 bit0 ID.20 ID.19 ID.18 ID.15 ID.14 ID.13 フィルタ No ビット フィルタ対象 フィルタ No ビット フィルタ対象 フィルタ No 50 © 2004, 2005 Interface Corporation. All rights reserved. bit4 bit3 ID.17 ID.16 ID.20〜ID.13 No.2 フィルタ 動作説明 〜エラー情報取り出し〜 4.1.6.エラー情報取り出し 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 CAN バス上で発生した各種エラーの情報を取得します。 エラー発生時、デバイスドライバ内部のバッファ(エラーバッファ)に 自動的に蓄えられますので、アプリケーションからエラー情報を取り出 します。 どういった要因のエラーをエラーバッファに蓄えるのかを設定すること が出来ますので、不要なエラーでバッファが一杯になることはありませ ん。必要なエラーに限って蓄えることが可能です。 動作図 端末 A 端末 B データ送信 CANバス CRCエラー! エラーバッファ 100320 CRCエラー発生 202320 ビットエラー発生 1032360 ビットエラー発生 1500421 CRCエラー発生 検知したエラーを、 エラーバ ッファに蓄えていきます。 蓄えられたエラー情報は 取り出されるまで保持されます。 発生した要因と、発生したタイミング( カウンタ値) が一緒に格納さ れます。 51 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜エラー情報取り出し〜 アプリケーション例 エラー発生件数(エラーバッファに蓄えられたエラー情報の数)を取得し、エラー情報が有る 場合は取り出します。 プログラムでの制御手順 ステータス取得 CanGetStatus CAN インタフェースのステータスを取得します。 取得したステータスから必要な箇所を参照します。 ステータスは CAN_PORT_STATUS 構造体に格納されています。 そのうち、エラー情報の数を表すメンバは以下の変数です。 メンバ 内容 ulERBCount 蓄えられたエラー情報の数 0〜最大値※ これ以外のメンバ変数はここでは参照しませんが、状況に応じ て参照して下さい。 変数参照 ulERBCount 1 以上? YES エラー情報取得 CanGetErrorEvent エラー情報を取り出します。 一度に複数のメッセージを取り出すことができます。 先ほど取得した ulERBCount を使用し、蓄えられている 全てのエラー情報を一度に取り出すことも可能です。 その場合、格納先の領域の確保には十分ご注意下さい。 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_ERROR CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_ERROR ※ 最大値は、CanSetConfig 関数で設定した値です。 52 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜バッファサイズ変更〜 4.1.7.バッファサイズ変更 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 CAN バスを流れるメッセージは CAN インタフェースで受信された後、 デバイスドライバ内部のバッファに一時、蓄えられます。 このバッファのサイズを変更することができます。 大きく設定することで、バッファが一杯になるまでの時間を長くするこ とができ、アプリケーションの処理に余裕を持たせることができます。 バッファのサイズを大きくするに従い、使用するメモリも増加しますの で、お使いのパソコンで使用可能なメモリ量をご確認の上、設定の変更 を行ってください。 なお、設定可能なバッファは、受信バッファ、送信バッファ、エラーバ ッファです。それぞれ、個別に任意のサイズ指定が可能です。 動作図 端末 A 端末 B CANバス この部分のサイズ を決定します。 サイズが大きいほど、ア プリケーション から受信メッ セージを取り出す回数を 減らすことができ、 結果としてシス テム 全体の負荷を軽減します。 ボード内 アプリケーション 内部バッファ 受信 ドライバ内部バッファ アプリケーション 内部バッファ 送信 FIFOバッファ © 2004, 2005 Interface Corporation. All rights reserved. ドライバ内部バッファ FIFOバッファ CANコントローラ 53 動作説明 〜バッファサイズ変更〜 アプリケーション例 受信バッファのサイズを 16384 件、送信バッファのサイズを 1024 件、エラーバッファのサイ ズを 1024 件に変更します。 プログラムでの制御手順 ボードのオープン CanOpenPort 設定値取得 CanGetConfig 動作パラメータ設定 CanSetConfig CAN バスへ接続 CanActivate 各種処理 ボードのクローズ CanClosePort サンプルプログラム プログラム名 4851_BUFFER CAN インタフェースを使用可能にします。 まず、CanGetConfig で動作パラメータのデフォルト値を取得し ます。その中で、変更を行いたいパラメータだけ変更し、 CanSetConfig で設定します。 パラメータ 設定値 ulTXBSize 1024 ulRXBSize 16384 ulERBSize 1024 これ以外のパラメータはデフォルト値とします。 CAN バスへの接続を有効にします。 CAN メッセージの送信などを行います。 CAN インタフェースを使用不可にします。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_BUFFER 54 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜通常送信〜 4.1.8.通常送信 指定可能製品 弊社 CAN インタフェースシリーズ 全製品 動作説明 CAN バスに対し、任意のメッセージを送信します。 アプリケーションからセットされた送信データは一旦、デバイスドライ バ内部の送信バッファに蓄えられ、自動的に CAN インタフェースに転 送、CAN バスへ出力されます。 バッファに蓄えられた順番に、CAN バスが空き次第送信されます。 また、CAN メッセージの送信が完了した時間を取得することができま す。 (『FIFO 送信モード』では、送信完了時間を取得することができません) 動作図 端末 A 端末 B CANバス 送信メッ セージ は一旦、 ドライバ 内部 のバ ッファに蓄え られます。 そこから自 動的にCANバス への送出が行われま す。 © 2004, 2005 Interface Corporation. All rights reserved. アプリケーション 内部バッファ ドライバ内部バッファ FIFOバッファ CANコントローラ 55 動作説明 〜通常送信〜 アプリケーション例 CAN メッセージの送信を行います。 送信を指示されたメッセージは、順次、CAN バスに送出されます。 ステータスを参照し、送信待機中のメッセージ数を確認する事で、送信が完了したかどうかを 判断します。また、送信完了の時間(送信完了メッセージ)を取得します。 プログラムでの制御手順 初期化 CAN インタフェースを使用可能にし、各種通信条件を設定。 CAN バスへの接続を有効にします。 CAN メッセージの送信 CanSendMessage ステータス取得 CanGetStatus 変数参照 ulTXBCount = 0 ? CAN メッセージの送信を行います。 送信が完了したかどうかを確認する為に、CanGetStatus でステー タスを取得します。 送信待機中(送信が完了していない)のメッセージ数は、以下 のメンバ変数で取得することができます。 変数名 ulTXBCount 設定値 送信待機中のメッセージ数を表 します。 0〜最大値 ※ YES 送信完了メッセージ取得 CanGetCompletionMessage 変数参照 各種処理 サンプルプログラム プログラム名 4851_SEND_NORMAL メッセージの送信が完了すると、送信完了メッセージが送信バ ッファに入ります。この送信完了メッセージには送信が完了し た時間が格納されています。メッセージ受信、エラー情報と同 じカウンタの値です。各事象の前後関係を明確にすることがで きます。送信完了メッセージは CAN_MESSAGE 構造体です。 送信完了時間は以下のメンバ変数を参照してください。 変数名 設定値 ulTime 送信完了時間(単位 : μs) 0〜4,294,967,295 およそ 70 分でカウンタは一周します。 次のメッセージの送信などを行います。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_SEND_NORMAL ※ 最大値は、CanSetConfig 関数で設定した値です。 56 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜繰り返し送信〜 4.1.9.繰り返し送信 指定可能製品 高機能版 PCI-485202,PCI-485211,PCI-485220,LPC-485202,LPC-485211,LPC-485220 CBI-485220WA,CBI-485220WB,CBI-4852A,CBI-4852B バスマスタ対応版 PCI-485304,PCI-485322,PCI-485340,CTP-485304,CTP-485322,CTP-485340 CPZ-485304, CPZ -485322, CPZ -485340 動作説明 指定された間隔で CAN メッセージを繰り返し送信します。 この動作はハードウェア上で実行される為、ソフトウェアの負荷などに よる影響を受けません。 動作図 端末 A 端末 B CANバス セットされたCANメッセージは、 指定さ れた周期で自動的にCAN コント ローラ に渡され送信が行われます。 57 © 2004, 2005 Interface Corporation. All rights reserved. アプリケーション 内部バッファ ドライバ内部バッファ 繰り返し送信バッファ CANコントローラ : : 動作説明 〜繰り返し送信〜 アプリケーション例 500ms 周期で CAN メッセージを繰り返し送信します。 一定時間 送信を行った後、周期を 100ms に変更します。 プログラムでの制御手順 初期化 繰り返し送信の開始 CanCyclicSendMessage 繰り返し送信の条件変更 CAN インタフェースを使用可能にし、各種通信条件を設定。 CAN バスへの接続を有効にします。 繰り返し送信を開始します。CAN_MESSAGE 構造体のメンバ変 数を以下のように設定します。 変数名 設定値 ulTime 500,000(500ms) これ以外のメンバ変数は、送りたい CAN メッセージの内容に合 わせ設定してください。 関数実行後、自動的に送信が繰り返されます。 ある程度送信を行ったので、繰り返し送信の条件を変更します。 ここでは送信周期を 100ms に変更します。 CanCyclicSendMessage 変数名 ulTime 設定値 100,000(100ms) 送信するメッセージを変更することも可能です。その場合、他 のメンバ変数も変更してください。 繰り返し送信の停止 CanStopCyclicSendMessage サンプルプログラム プログラム名 4851_SEND_CYCLIC 繰り返し送信を停止します。 プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_SEND_CYCLIC 58 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜繰り返し送信〜 送信周期について データの送信時間よりも、周期時間を短く設定した場合、指定された時間に送信ができず、周期 実行は停止します。例えば、データの送信に 80ms かかるのに、周期時間を 50ms に設定した場 合、50ms 経過したときに、まだデータが送信中なので、周期実行が停止します。 周期実行の停止は、CanSetEvent 関数、CanSetEventMask 関数での設定を行っている場合、イベ ントにより通知されます。 また、アービトレーションロストにより、指定した周期にデータを送信できない場合もあります。 アービトレーションロストが発生し、データを再送しているときに、次の周期時間が来ると、上 記と同じように、周期実行が停止します。 データ送信中 データ送信中 ・・・ 50ms 50ms 時間 周期送信開始 図 4-3 周期を 50ms に設定した場合 データ送信中 前回のデータが、まだ送信完了して いないため、次のデータが送れずに 50ms 周期送信は停止します。 時間 周期送信開始 図 4-4 周期を 50ms に設定したが、その周期よりもデータ送信時間が長い場合 59 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜繰り返し送信〜 周期送信実行中でも、周期送信を行いたいデータの更新、周期の更新を行えます。更新したデー タは、次の周期から反映されます。 データ A 送信中 データ B 送信中 ・・・ 50ms 80ms 時間 周期送信開始 データ、周期の更新はいつでも可能です。 ただし、反映されるのは次の周期からになります。 例えば、この時点で、周期送信を行うデータを B に、周期を 80ms に更 新したとすると、前回の設定周期の 50ms が経過してから、データ B が 80ms 周期で送信されるようになります。 図 4-5 周期送信を行うデータや周期を更新したい場合 優先順位の高いメッセージを短い周期で送信していると、アービトレーションにより、それより 優先順位の低いメッセージが送信されにくくなりますので、ご注意ください。 60 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜送信間隔指定〜 4.1.10.送信間隔指定 指定可能製品 高機能版 PCI-485202,PCI-485211,PCI-485220,LPC-485202,LPC-485211,LPC-485220 CBI-485220WA,CBI-485220WB,CBI-4852A,CBI-4852B バスマスタ対応版 PCI-485304,PCI-485322,PCI-485340,CTP-485304,CTP-485322,CTP-485340 CPZ-485304, CPZ -485322, CPZ -485340 動作説明 『通常送信』と同様に CAN メッセージの送信を行いますが、送信を行う 際にディレイを入れることが出来ます。 この時間は、前に送った CAN メッセージの送信完了からの時間になりま す。 本来、CAN のプロトコルではメッセージの衝突は発生しないので、メッ セージとメッセージの間を空ける必要は無いのですが、意図的に送信を 遅らせたい場合等にご使用下さい。 動作図 端末 A 端末 B CANバス CANメッセージ CANメッセージ CANメッセージ t CANメッセージ の送信完了後、 指定された時間間隔 を空け、 次のCAN メッ セージ が送信されます。 CANメッセージ毎にディレイ時間の設定が可能で す。 61 © 2004, 2005 Interface Corporation. All rights reserved. 動作説明 〜送信間隔指定〜 アプリケーション例 CAN メッセージの送信を行います。 CAN メッセージ毎に送信までの時間を指定し、CAN メッセージと CAN メッセージの間を空 けます プログラムでの制御手順 初期化 CAN メッセージの送信 CanSendMessage CAN メッセージの送信 CanSendMessage : : サンプルプログラム プログラム名 4851_SEND_DELAY CAN インタフェースを使用可能にし、各種通信条件を設定。 CAN バスへの接続を有効にします。 CAN メッセージの送信を行います。『通常送信』と、ほぼ同じ ですが、CAN_MESSAGE 構造体にセットする値が一部異なりま す。 変数名 設定値 ulTime ディレイ時間を設定します。 0〜2,097,151 (単位 : 10µs) 例えば、1 秒の間隔を空けたい場合、 1 秒=1,000,000µs = 100,000 × 10µs となりますので、ulTime には 100,000 をセットしてください。 CAN メッセージ毎にディレイ時間の設定が可能です。 ulTime に 0 を指定した場合、ディレイ時間は無しになります。 (『通常送信』と同じ) プログラム格納先フォルダ <インストール先>¥言語¥CAN¥4851_SEND_DELAY 62 © 2004, 2005 Interface Corporation. All rights reserved. プロファイル機能 〜概要説明〜 4.1.11.プロファイル機能 プロファイル機能とは、CAN メッセージに含まれるデータに対し、フォーマットを予め登録 しておくことで、様々な型の変数に変換する事ができる便利な機能です。 例として 4バイトのデータを含むCANメッセージを挙げています。 内訳としては 16ビットの符号無し整数のデータを二つ含んでいます。以下はリトルエンディアンの場合の例 です。 1件目のデータ 1234 h CANメッセージ CAN_MESSAGE 構造体 34h ID 2件目のデータ ABCD h 12h CDh 制御 1バイト目 2バイト目 3バイト目 4バイト目 受信されたCANメッセージは まず、CAN_MESSAGE構造体に 代入されます bData[0] 1バイト目(34h) bData[1] 2バイト目(12h) bData[2] 3バイト目(CDh) bData[3] 4バイト目(ABh) ABh CRC ・・・・ プロファイル適用後のデータ 1件目のデータ 1234 h プロファイルでは、どういうフ ォーマットでデータが配置さ れているかを定義します。 2件目のデータ ABCD h 一つ目のデータは16ビット符号無し整数、リトルエンディアンで先頭から。 二つ目のデータは16ビット符号無し整数、リトルエンディアンで17ビット目から 図 4-6 プロファイルの概念 プロファイルでは、ビット単位でデータの位置を指定できますので、複雑なビット演算を行うこ となく、データを変換することができます。 上記の例では 16 ビット単位のデータを扱っていますが、例えば 1 ビット単位や、7 ビット単位 等のデータを扱う際、Visual Basic ではビット演算を行うことが難しい為、このプロファイル機 能が役に立ちます。 ではプロファイル機能の使い方を説明致します。 63 © 2004, 2005 Interface Corporation. All rights reserved. プロファイル機能 〜ユーティリティを用いた登録方法〜 4.1.12.ユーティリティを用いた登録方法 動作説明 動作図 GPC-4851 に含まれる 「プロファイル設定ユーティリティ」を使用し、 プロファイルの設定を行い、ファイルに保存します。 「プロファイル設定ユーティリティ」を使用し ↓ ファイルに保存します。(保存されたファイルはテキスト形式です) 64 © 2004, 2005 Interface Corporation. All rights reserved. プロファイル機能 〜ユーティリティを用いた登録方法〜 操作例 以下の条件のプロファイルを 設定します。 ・16ビット整数のデータを2個含む ・メモリ配置は Intel方式(リトルエンディアン) ID 4バイトのデータフィールド 27h 34h 12h データ1 1234h 78h 56h データ2 5678h プログラムでの制御手順 スタートメニューより「Interface GPC-4851」→「プロフ ァイル設定ユーティリティ」を起動します。 起動すると、空のプロファイルが表示されます。 ここにプロファイルを追加していきます。 メニューの「Edit(E)」から「Add Profiles(A)」を選択 します。 プロファイル追加用の画面が表示されます。 全ての欄が空白になっています。 「Name」の所に ここでは例として、「MyProfile」 と入力します。この名前は登録するプロファイルの 中身がわかりやすいよう適宜設定してください。 まず、一つ目のデータのプロファイルを定義しま す。一つ目のデータは、データフィールドの先頭(0 ビット目)から 16 ビットの整数で、メモリ配置は Interl 方式ですから 以下の様に設定します。 変数名 設定値・内容 Start bit 0 Bit Count 16 Byte order Intel Data type Integer(16 bits) 設定が終わりましたら「Add」ボタンを押してくだ さい。 65 © 2004, 2005 Interface Corporation. All rights reserved. プロファイル機能 〜ユーティリティを用いた登録方法〜 プログラムでの制御手順(続き) 次に二つ目のデータのプロファイルを定義します。 操作方法は同じで、以下の設定を行い、 「Add」ボタ ンを押してください。 左側の一覧に二つ登録されていることを確認して ください。 変数名 Start bit Bit Count Byte order Data type 設定値・内容 16 16 Intel Integer(16 bits) 二つ目のデータですので、16 ビット目からデータが 始まることにご注意下さい。(0〜15 ビットが一つ 目のデータ) 最後に 「OK」ボタンを押します。 それでは、先ほど登録されたプロファイルが、どの ようなイメージか確認してみましょう。 メニューの「Edit(E)」から「View Profiles Bitmap(V )」を選択します。 この様な画面が表示され、先頭の 16 ビットが 1 番 目のデータ、次の 16 ビットが 2 番目のデータとい うことがわかります。 確認が終わりましたら、この表示を閉じてくださ い。 最後に、ここまでで設定したプロファイルを、ファ イルに保存します。 メニューの「File(F)」から「Save Profiles(S)」を選択 します。 この様な画面が表示されますので、任意のフォルダ に名前を付けて保存します。ここでは「MyProfile」 という名前で保存します。 最後に「保存」ボタンを押してください。 このプロファイルの使用方法については次頁以降 で説明致します。 66 © 2004, 2005 Interface Corporation. All rights reserved. プロファイル機能 〜プロファイルの適用方法〜 4.1.13.API を用いた登録方法 GPC-4851 の API を使用し、プロファイルの登録を行います。 動作説明 アプリケーション例 以下の条件のプロファイルを 設定します。 ・1ビットの接点情報を8個、16ビット整数のデータを1個含む ・メモリ配置は Intel方式(リトルエンディアン) 3バイトのデータフィールド ID 37h 8 7 6 5 4 3 2 1 9 データ1〜8 1ビット×8個 データ9 16ビット×1個 プログラムでの制御手順 構造体の準備 データ 1〜8 の準備 CAN_PROFILE_DATA 構造体の配列を準備します。 データが 9 個ありますので 9 個の配列を宣言します。 構造体の 1〜8 番目の要素に下記の値を代入していきます。 1 2 3 4 5 6 7 8 ulStartBit 0 1 2 3 4 5 6 7 ulBitCount 1 ulByteOrder CAN_BYTEORDER_INTEL ※1 ulDataType CAN_DATATYPE_INTEGER8 ※2 ※1…このパラメータは使用しませんが、この値を指定します ※2…1 ビットだけですが、CAN_DATATYPE_INTEGER8 を指定します データ 9 の準備 プロファイルの登録 CanSetProfile プロファイルの保存 CanSaveProfile サンプルプログラム プログラム名 4851_PROFILE_SAVE 構造体の 9 番目の要素に下記の値を代入します。 変数名 設定値・内容 ulStartBit 8 ulBitCount 16 ulByteOrder CAN_BYTEORDER_INTEL ulDataType CAN_DATATYPE_INTEGER16 値を代入した構造体配列を CanSetProfile 関数を使用し、登録し ます。 変数名 設定値・内容 pnNumber CAN_ANY_NUMBER szName “MyProfile2” ulId 37h nItemCount 9 pItem 構造体配列 後で使用する為、一旦ファイルに保存します。 ここでは「MyProfile2」という名前で保存します。 この名前は任意の名前です。 プログラム格納先フォルダ <インストール先>¥言語¥can¥4851_PROFILE_SAVE 67 © 2004, 2005 Interface Corporation. All rights reserved. サンプルプログラムについて 4.1.14.プロファイルの適用方法 動作説明 あらかじめ作成しておいたプロファイル情報を用い、受信した CAN メッ セージを 物理量へ変換します。 動作図 ファイルに保存されたプロファイル情報をプログラムに読み込み、 受信 CAN メッセージにプロファイルを適用することで、物理量へと変換し ます。 プロファイル CAN メッセージ 物理量 物理量 物理量 68 © 2004, 2005 Interface Corporation. All rights reserved. サンプルプログラムについて アプリケーション例 『ユーティリティを用いた登録方法』で登録し、保存しておいた以下の条件のプロファイルを 用い、受信した CAN メッセージを変換し、内部に含まれるデータを抽出します。 ・16ビット整数のデータを2個含む ・メモリ配置は Intel方式(リトルエンディアン) ID 4バイトのデータフィールド 27h 34h 12h データ1 1234h 78h 56h データ2 5678h プログラムでの制御手順 受信データの準備 プロファイル情報取得 CanLoadProfile 『受信メッセージ取り出し』を参考にしていただき、CAN バス から受信したメッセージをプログラムで取り込みます。 メッセージは CAN_MESSAGE 構造体に入れたままにしておき ます。 (以降の処理は CAN_MESSAGE 構造体を使用するため) まずプログラム内にプロファイル情報を取り込みます。 先ほど、 「MyProfile」という名前で保存した定義ファイルを使用 します。 変数名 設定値・内容 SzFileName “MyProfile” プロファイル情報検索 CanQueryProfile 取得したプロファイル情報の中に、今回受信したメッセージに 該当するプロファイルが存在するかどうかを確認します。 変数名 設定値・内容 pCanMessage 上で取得した CAN メッセージ nNumber プロファイル番号格納用変数へのポインタ CanQueryProfile 関数の戻り値が、IFCAN_ERROR_SUCCESS 以 外だった場合は、該当するプロファイルが登録されていないこ とになります。新たにプロファイルを登録(『API を用いた登録 方法』参照)するなどしてください。 戻り値が IFCAN_ERROR_SUCCESS だった場合にはプロファイ ルが登録されており、その番号が nNumber 変数に返されます。 物理量格納用 構造体の準備 取得されたプロファイルには、どういった情報が含まれている か を 確 認 し ま す 。 CanGetProfile 関 数 を 実 行 す る こ と で 、 CAN_PROFILE_DATA 構造体にプロファイルの情報が返されま す。ここでは既にわかっていますので、変換に必要な構造体(16 ビット整数 × 2 個)を用意しておきます。 (次で使用します) 69 © 2004, 2005 Interface Corporation. All rights reserved. サンプルプログラムについて 受信した CAN メッセージにプロファイルを適用し、 物理量に 変換します。 ここでは、使用する言語により 方法が変わってきます。まずは Visual C++での使用方法を説明いたします。 プロファイルの適用 CanApplyProfile プロファイルの適用 CanApplyProfileInteger 変換には CanApplyProfile 関数を用います。 変数名 設定値・内容 pCanMessage 変換の元になる CAN メッセージ構造体 pDestination 変換後の物理量を格納する構造体 nMaximumleng 32 th pnLength 実際に変換されたサイズ pCanMessage には、変換元となる CAN メッセージの構造体を指 定し、pDestination には変換後の物理量を格納する構造体をして いします。 nMaximumlengt には pDestination に指定した構造体のサイズをバ イト単位で指定します。ここで指定されたサイズ以上に変換が 行われることを防止します。 関数実行後、pnLength に実際に変換が行われたサイズがバイト 単位で返されます。 先ほどは、Visual C++での使用方法でした。次に Visual Basic で の使用方法を説明いたします。なお、以下の使用方法は Visual C++でも同様にご利用いただけます。 CanApplyProfile 関数では、CAN メッセージに含まれる複数のデ ータを一括で変換することができましたが、Visual Basic では、 この方法が使用できません。そのため、データ一つ一つに対し てプロファイルの適用を行う必要があります。 それを行うのが以下の 3 つの関数です。 関数名 CanApplyProfileInteger CanApplyProfileFloat CanApplyProfileDouble 内容 32 ビット整数値へ変換 32 ビット実数値へ変換 64 ビット実数値へ変換 今回受信した CAN メッセージには 16 ビット整数値が二つ含ま れるため、CanApplyProfileInteger 関数を使用します。 変数名 設定値・内容 pCanMessage 変換の元になる CAN メッセージ構造体 pnDestination 変換後の物理量を格納する変数(整数型) nIndex データ 1 の変換時 : 1 データ 2 の変換時 : 2 nIndex には、変換を行う対象となるデータの番号を指定します。 1 から始まりますのでご注意ください。 サンプルプログラム プログラム名 4851_PROFILE_APPLY プログラム格納先フォルダ <インストール先>¥言語¥can¥4851_PROFILE_APPLY 70 © 2004, 2005 Interface Corporation. All rights reserved. ドライバソフトウェア:GPC-4851 について 5. ドライバソフトウェア:GPC-4851 について 5.1.ドライバについて GPC-4851 は、Windows XP,Windows Server 2003,Windows 2000,Windows Me,Windows 98 上のアプ リケーションから、弊社CAN インタフェースを制御する為のソフトウェアです。 弊社CAN インタフェースをWindows XP,Windows Server 2003,Windows 2000,Windows Me, Windows 98 上のアプリケーションからDLL をダイナミックリンクし、API をコールすること により制御します。 本ソフトウェアでは以下の 2 種類の DLL を提供します。 表 5-1 DLL の種類 DLL IFCAN.DLL IFCANPF.DLL 特長 CAN 通信を行う為のライブラリです。 CAN コントローラの制御方法やプロトコルなどを意識せず、簡単に CAN 通 信を行うことができます。 CAN メッセージを物理量に変換する為のライブラリです。 CAN メッセージに含まれるデータをビット単位で意味づけを行い、各言語 の変数に代入することができます。 特に ビット演算が苦手な Visual Basic で重宝します。 5.2.オンラインヘルプについて GPC-4851 には、画面上で機能や使い方を説明するオンラインヘルプをサポートしていますので、 開発中に関数の詳細説明など、簡単に参照することができます。 71 © 2004, 2005 Interface Corporation. All rights reserved. サンプルプログラムについて 6. サンプルプログラムについて 6.1.サンプルプログラムの実行方法 サンプルプログラムを実行する前に次のことを確認してください。 デバイスドライバがインストールされていること。(インストール方法につきましては、本製品のマニュ アルをご参照ください) P.35『図 4-1 PCI-485220 における CH1 と CH2 の接続例』に示す接続例を参考にシステムが作成さ れていること。(終端抵抗が設定されていること) Visual Basic 6.0 以降のバージョンがインストールされていること。 1. 弊社 Web site(www.interface.co.jp)にアクセスし、BPC-0820 をダウンロードしてください。(Web 上 に記載されている解凍方法・インストールディスクの作成方法)に従って行って下さい。) 2. 各動作、機能のページに記載されている「プログラム格納先フォルダ」に従ってフォルダを開きます。 ※ プログラム格納先フォルダに記載されている「言語」とは、プログラム言語を表しています。 例)プロファイルの適用方法(P.68)のサンプルプログラムの場合 <インストール先>¥VB¥can¥4851_PROFILE_APPLY … Visual Basic によるサンプルプログラム 本製品のサンプルプログラムには、プロジェクトファイルが添付されています。ビルド時にはプ ロジェクトファイルを使用します。 <Visual Basic の場合> Visual Basic を起動し、プロジェクトファイル「*.vbp」を開き、ビルドして下さい。 72 © 2004, 2005 Interface Corporation. All rights reserved. サンプルプログラムについて 6.2.サンプルプログラム早見表 表 6.1 に本チュートリアルで提供するサンプルプログラム一覧を示します。 表 6-1サンプルプログラム一覧 動作モード 受信動作 CAN 通信 送信動作 プ ロ フ ァ 登録 イル 変換 動作一覧 通常通信モード FIFO 送信モード モニタモード 受信メッセージ取り出し 受信フィルタ設定 エラー情報取り出し バッファサイズ変更 通常送信 繰り返し送信 送信間隔指定 API を用いた登録方法 プロファイルの適用方法 73 © 2004, 2005 Interface Corporation. All rights reserved. プログラム名 4851_PORTINIT 4851_RECEIVE 4851_FILTER 4851_ERROR 4851_BUFFER 4851_SEND_NORMAL 4851_SEND_CYCLIC 4851_SEND_DELAY 4851_PROFILE_SAVE 4851_PROFILE_APPLY Page 36 38 40 42 44 51 53 55 57 61 67 68 技術資料紹介 7. 技術資料紹介 弊社では下記の技術資料を提供しております。 詳しくは、弊社 Web site(www.interface.co.jp)、または弊社窓口までお問い合わせ下さい。 カタログ PRM-0061 PRM-0062 PRM-0063 CPZ カタログ(日本語版) PCI カタログ(日本語版) CSI カタログ(日本語版) チュートリアル TUT-0014 TUT-0006 TUT-0007 TUT-0008 TUT-0009 TUT-0025 TUT-0016 TUT-0021 TUT-0023 TUT-0029 TUT-0027 TUT-0033 TUT-0031 TUT-0019 TUT-0024 TUT-0034 TUT-0020 TUT-0022 TUT-0028 TUT-0026 TUT-0032 TUT-0030 TUT-0018 TUT-0015 TUT-0053 TUT-0001 TUT-0002 TUT-0003 TUT-0017 TUT-0036 TUT-0037 TUT-0038 TUT-0039 TUT-0043 TUT-0040 TUT-0041 TUT-0044 TUT-0048 TUT-0050 TUT-0054 TUT-0055 TUT-0057 Microsoft Visual Studio .NET 移行ガイド C(98)/ISA 製品から PCI/CompactPCI 製品への移行チュートリアル(DOS 編) 拡張ユニット チュートリアル(入門編) 拡張ユニット チュートリアル(問題解決編) システムユニット チュートリアル Visual Basic による DIO 入門書 Visual Basic による PPI 入門書 Visual Basic による AD 入門書 Visual Basic による DA 入門書 Visual Basic による HDLC 入門書 Visual Basic による GP-IB 入門書 Visual Basic による メモリンク 入門書 Visual Basic による エンコーダカウンタ 入門書 Visual Basic による モータコントローラ 入門書 Visual C++ による DIO 入門書 Visual C++ による PPI 入門書 Visual C++ による AD 入門書 Visual C++ による DA 入門書 Visual C++ による HDLC 入門書 Visual C++ による GP-IB 入門書 Visual C++ による メモリンク 入門書 Visual C++ による エンコーダカウンタ 入門書 Visual C++ による モータコントローラ 入門書 モーションコントロール チュートリアル モーションコントロール チュートリアル(PCI/CompactPCI) 弊社バスブリッジを使用した PCI バスによる C バスボード制御 手順書 弊社バスブリッジを使用した PCI バスによる ISA バスボード制御 手順書 Linux による PCI/CompactPCI/CardBus 制御 入門書 システム事例 メモリンクを使用した負荷分散システム チュートリアル RTLinux による PCI/CompactPCI/CardBus 制御入門書(導入編) RTLinux による HDLC ボード制御プログラミング チュートリアル RTLinux による DIO ボード制御プログラミング チュートリアル RTLinux による AD ボード制御プログラミング チュートリアル RTLinux による調歩同期シリアル通信ボード制御プログラミング チュートリアル RTLinux による DA ボード制御プログラミング チュートリアル RTLinux による GP-IB ボード制御プログラミング チュートリアル RTLinux によるメモリ共有インタフェースボード制御プログラミング チュートリアル RTLinux によるカウンタボード制御プログラミング チュートリアル RTLinux によるモーションコントローラボード制御プログラミング チュートリアル CAN チュートリアル チュートリアル 画像入力ボード チュートリアル XP Embedded 入門編 技術情報資料(セミナ資料) 初めての CAN インタフェース Linux, リアルタイム Linux 移植(SH-4)経験談及び当社の今後の取り組みについて Linux から PCI/CompactPCI ボードを制御する方法 ActiveX コントロールによるシステム組み込み技術 CompactPCI への置き換え+システム構築/移行ガイド MS-DOS から PCI/CompactPCI ボードを制御する方法 74 © 2004, 2005 Interface Corporation. All rights reserved. 参考文献 8. 参考文献 ・ ISO/DIS 11898-1、11898-2(国際標準化機構:2001 年) ・ CAN Specification 2.0B (Robert Bosch GmbH) ・ http://www.can-cia.de/ (CAN in Automation) 75 © 2004, 2005 Interface Corporation. All rights reserved. CAN チュートリアル 2005 年 6 月 Ver. 1.1 発行所 発行 〒732-0828 広島県広島市南区京橋町 10-21 TEL 082-262-7777 FAX 082-262-5066 ISD-7082-11 価格 ¥2,100 (定価 ¥2,000 + 消費税 ¥100) 本書の内容の一部または全部を、無断で転載することを禁止します。 本書の内容は、将来予告なく変更することがありますので、あらかじめご了承ください。 © 2004, 2005 Interface Corporation. All rights reserved. CAN チュートリアル TUT-0054 Ver. 1.1 www.interface.co.jp
© Copyright 2024 Paperzz