Ver. 1.1 - インタフェース

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