1 はじめに
産業機器の通信には通常、さまざまなハードウェアおよびソフトウェア製品のほか、標準のコンピュータ プラットフォーム (パーソナル コンピュータまたはワークステーション) を産業オートメーション デバイスに接続するために使用されるプロトコルが含まれます。したがって、ほとんどのオートメーション デバイスは、パーソナル コンピュータまたはアドオン シリアル ポート カードにある標準シリアル ポートと互換性のある単純なシリアル コマンドを実行するように設計されています。- RS-232 は現在、PC および産業用通信分野で最も広く使用されているシリアル インターフェイスです。 RS-232 は、低速シリアル通信における通信距離を延長するために設計されたシングルエンド規格として定義されています。- RS-232 は送信機と受信機の間で共通の信号グランドを共有するため、差動信号を使用できません。そうしないと、コモンモードノイズが信号システムに混入する可能性があります。 RS-232 規格では、最大距離がわずか 15 m、最大信号伝送速度が 20 kbit/s と規定されています。
CAN は「Controller Area Network」の略で、国際的に最も広く使用されているフィールドバスの 1 つです。 CAN バスで構成される単一ネットワークは、ネットワーク ハードウェアの電気的特性によって制限されます。マルチマスター シリアル通信バスとしての CAN の基本設計仕様では、高ビット レートと電磁干渉に対する強力な耐性、および通信バス上で発生するエラーを検出する機能が必要です。信号伝送距離が 10 km に達した場合でも、CAN は最大 50 kbit/s のデータ伝送速度を提供できます。表 1 は、CAN バス上の任意の 2 つのノード間の最大伝送距離とそのビット レートの関係を示しています。
CAN バス システムの三角形構成における任意の 2 つのノード間の最大距離
ビットレート/kbps 1000 500 250 125 100
最大距離/m 40 130 270 530 620
ビットレート (kbps) 50 20 10 5
最大距離 (m) 1300 3300 6700 10000
ご覧のとおり、CAN バスは、リアルタイム パフォーマンス、適応性、柔軟性、信頼性の点で RS-232 よりも優れたシリアル バスです。 2 つのシリアル デバイスが遠くに離れており、RS-232 経由で直接接続できない場合、RS-232 を CAN に変換して、CAN バス経由でシリアル デバイスのネットワーク相互接続を実現できます。
ただし、RS-232 と CAN は、電圧レベルとフレーム形式の点で大きく異なります。具体的には:
RS-232 規格は負論理を使用し、+3V から +15V までの電圧レベルを論理「0」として定義し、-3V から -15V までの電圧レベルを論理「1」として定義します。一方、CAN 信号は差動電圧を使用して送信されます。 2 本の信号線は「CAN_H」と「CAN_L」と呼ばれます。静的状態では、両方とも約 2.5V です。この状態は論理「1」として表され、「劣性」とも呼ばれます。 CAN_H が CAN_L より高い場合、それは「ドミナント」として知られる論理「0」を表します。ドミナント状態の一般的な電圧値は次のとおりです。CAN_H=3.5V、CAN_L=1.5V;
RS-232 シリアル ポートのフレーム フォーマットは、1 つのスタート ビット、8 つのデータ ビット、プログラム可能な 9 番目のビット (送信と受信の両方のアドレス/データ ビットとして機能します)、および 1 つのストップ ビットです。 CAN データ フレーム フォーマットは、フレーム ヘッダー + ID + データで構成されます (標準フレームと拡張フレームの 2 つのフォーマットに分けることができます)。
したがって、設計では、レベル変換やフレーム形式変換などの変換を実行するマイクロコントローラーが必要です。変換プロセスを図 1 に示します。
2 RS-232 から CAN への変換のためのハードウェア設計
RS-232-to-CAN 変換デバイスの設計では、AT89C52 マイクロコントローラがマイクロプロセッサとして使用されます。 SJA1000はCANマイコンとして使用されます。 SJA1000 は、CAN プロトコルの物理層とデータリンク層の機能を統合し、通信データのフレーム化を受動的に処理できます。 AT82C250 は、CAN コントローラと物理バス間のインターフェイスとして機能し、バスの差動送信機能と CAN コントローラの差動受信機能を提供します。 AT82C250 のピン 3 を介して 3 つの異なる動作モード (高速-、スロープ制御、スタンバイ) を選択できます。ピン 3 が接地されている場合、デバイスは高速モードで動作します。 6N137 を使用して高速光絶縁が実装されており、外部信号からの干渉を防ぎます。 MAX232は、232レベル信号をマイクロコントローラインタフェースチップのTTLレベルに変換するために使用されます。特定のハードウェア インターフェイス回路の詳細については、SJA1000 の関連リソースを参照してください。ここではこれ以上の説明は行いません。ただし、以下の点に注意してください。
(1) CAN バスの両端には 120Ω の抵抗が接続されており、バスのインピーダンスを一致させることで、干渉に対する耐性とデータ通信の信頼性が向上します。ただし、実際には、CAN ネットワークの「CAN_H」と「CAN_L」の間のシャント抵抗が 60Ω であることを確認すれば十分です。
(2) SJA1000 のピン 20 (RX1) は、使用しないときは接地できます (具体的な理由についてはソフトウェア設計を参照してください)。ビット CDR.6 の設定と組み合わせると、バス長が大幅に増加する可能性があります。
(3) TX0、TX1 端子の接続方法によりシリアル出力のレベルが決まります。具体的な詳細については、出力制御レジスタ (OCR) の設定を参照してください。
(4) AT82C250 の RS ピンとグランドの間にスロープ抵抗が接続されています。抵抗値はバスの通信速度に応じて適切に調整できますが、通常は 16 kΩ ~ 140 kΩ の範囲です。
(5) MAX232 には 4 つの電解コンデンサ -C1、C2、C3、C4 が必要です。これらは内部電力変換にも使用されます。すべての定格は 1 μF/25 V です。タンタル コンデンサを推奨し、できるだけチップの近くに配置する必要があります。 0.1 μF のデカップリング コンデンサを VCC 電源とグランドの間に接続する必要があります。
3 RS-232 から CAN への変換のためのソフトウェア設計
マイクロプロセッサ制御下で、RS-232 と CAN 間のデータ交換中にシリアル ポート受信と CAN 割り込みを使用すると、動作効率が向上します。メイン プログラムのフローチャートを図 2 に示します。SJA1000 はリセット モードでのみ初期化できます。これには主に、動作モード、クロック分周、およびアクセプタンス フィルタ レジスタの設定、ボー レート パラメータの構成、および割り込みイネーブル レジスタの設定が含まれます。
データを正確に送信できるかどうかは、ボーレートやフロー制御にも依存し、ソフトウェア設計においては見逃せない要素です。したがって、次のセクションでは、CAN ボー レート設定、シリアル ポート ボー レートの自動検出、およびシリアル ポート データ フロー制御に焦点を当てます。

3.1 CAN フィルタレートの設定
CAN プロトコルの重要な要素の 1 つはボーレートです。ユーザーはビット期間内のビット サンプリング ポイントの位置とサンプル数を設定できるため、アプリケーションに合わせてネットワーク パフォーマンスを自由に最適化できます。ただし、この最適化プロセスでは、ビット タイミング パラメーターに使用される基準発振器の許容誤差とシステム内のさまざまな信号の伝播遅延との関係に注意を払う必要があります。
システムのビット レート fBil は、単位時間あたりに送信されるデータ ビットの数、つまりボー レート fBit=1/tBit を表します。公称ビット タイミングは、SYNC_SEG、TSEG1、TSEG2 の 3 つの重複しないセグメントで構成されます。-。これら 3 つの時間セグメントは、それぞれ tSYNC_SEG、tTSEG1、および tTSEG2 として示されます。したがって、公称ビット周期 tBit は、これら 3 つの時間セグメントの合計です。
tビット=tSYNC_SEG + tTSEG1 + tTSEG2
ビット周期内では、これらのセグメントは基本時間単位の整数倍で表現されます。この時間単位はタイム クォータ (TQ) と呼ばれ、タイム クォータの期間は CAN システム クロック (tSCL) の 1 サイクルであり、発振器クロック周期 (tCLK) から導出されます。 CAN システムクロックは、プリスケーラー係数 (ボーレートプリセット値、BRP) をプログラムすることで調整できます。具体的には:
tSCL=BRP × 2tCLK=2BPR/fCLK
CAN ビット タイミング計算のもう 1 つの非常に重要な時間間隔は、tSJW の期間を持つ同期ジャンプ幅 (SJW) です。 SJW セグメントはビット サイクルの一部ではありません。むしろ、再同期イベント中にビット サイクルが延長または短縮される TQ の最大数を定義します。さらに、CAN プロトコルでは、ユーザーがビット サンプリング モード (SAM) を指定できます。これは、シングル-サンプル モードまたはスリー- サンプル モード(3 つのサンプルから 1 つの結果を選択する)のいずれかです。シングル-サンプル モードでは、サンプリング ポイントは TSEG1 セグメントの最後にあります。 3- サンプル モードでは、シングル- サンプル モードと比較して 2 つの追加のサンプリング ポイントが取得されます。これらは、TSEG1 セグメントの終わりの前に、1 つの TQ で区切られて配置されます。

前述の BPR、SJW、SAM、TESG1、および TESG2 はすべて、ユーザーが CAN コントローラの内部レジスタ BTR0 および BTR1 を介して定義できます。詳細を図 3 に示します。BTR0 と BTR1 を設定した後の実際のボーレート範囲は次のようになります。
最大値=1/(tBit - tSJW)、最小値=1/(tBit + tSJW)
3.2 シリアルポートのボーレート検出
シリアル デバイスがホストとして機能する場合、その時点で変換デバイスのシリアル ポートのボー レートを検出する必要がある場合は、最初にホストの受信ボー レート (たとえば、9600 ボー) を設定し、端末から特定の文字 (たとえば、キャリッジ リターン) を送信できます。このようにして、ホストは受信した文字情報に基づいて変換デバイスの通信ボーレートを決定することができる。復帰文字の ASCII 値は 0DH です。さまざまなボーレートで受信した値を表 2 に示します。
異なるボーレートで受信したバイト数
ボーレート (ビット/秒) 受信バイト数 (16 進数) ボーレート (ビット/秒) 受信バイト数 (16 進数)
1200 80 4800 E6
1800 F0 9600 0D
2400 78 19200 F*
3.3 シリアルポートのフロー制御
ここで使用される「フロー」という用語は、データの流れを指します。多くの場合、2 つのシリアル ポート間の送信中にデータ損失が発生します。マイコンのバッファ容量には限界があるため、データ受信時にバッファがいっぱいになると、その時点で送信し続けていたデータが失われます。フロー制御はこの問題を効果的に解決します。受信側が時間内にデータを処理できない場合、フロー制御システムは「受信拒否」信号を送信し、送信側は「送信再開」信号を受信するまで送信を停止します。したがって、フロー制御はデータ送信プロセスを管理し、データ損失を防ぎます。一般的に使用される 2 つのタイプのフロー制御は、ハードウェア フロー制御 (RTS/CTS、DTR/CTS などを含む) とソフトウェア フロー制御 (XON/XOFF-継続/停止) です。以下では、RTS/CTS を使用したハードウェア フロー制御方法のみを説明します。
フロー制御にハードウェアを使用する場合、シリアル端末の RTS ピンと CTS ピンはマイクロコントローラの I/O ポートに接続され、I/O ポートを 1 または 0 に設定することで開始/停止信号が送受信されます。データ端末機器 (コンピュータなど) は RTS を使用してマイクロコントローラから送信されるデータ ストリームを開始し、マイクロコントローラは CTS を使用してコンピュータからのデータ ストリームを開始および一時停止します。このハードウェア ハンドシェイク方法を実装するには、プログラミング中に受信バッファのサイズに基づいて高レベル フラグと低レベル フラグが設定されます。-バッファ内のデータ量が高レベルのしきい値に達すると、受信側の CTS ラインが Low (論理 0) に設定されます。送信側のプログラムが CTS が低いことを検出すると、受信バッファ内のデータ量が低レベルのしきい値を下回り、CTS が高く設定されるまでデータの送信を停止します。 RTS は、受信デバイスがデータを受信する準備ができているかどうかを示すために使用されます。
3.4 CAN受信サブルーチン
PeliCAN フォーマットは、標準フレームと拡張フレームの両方をサポートします。 CAN モードは、クロック分周器レジスタの CDR.7 を使用して設定できます (BasicCAN の場合は 0、PeliCAN の場合は 1)。 CAN データを受信する場合、フレーム情報の FF ビットで標準フレームか拡張フレームかを判断し、RTR ビットでリモートフレームとデータフレームを区別します。以下は CAN 受信サブルーチンです。
;//////////////////////////////////////////////////////////////////
;//CANデータ受信/2バイトIDのフレームフォーマットに統一//
;///////////////////////////////////////////////////////////////////////
スキャン:
MOV R0、#C_RE ;マイクロコントローラの内部バッファの開始アドレス
MOV DPTR、#RXBUF ;受信バッファの内容を読み取って保存します。
MOVX A、@DPTR ; CANバッファの2番目のバイトを読み取ります
MOV @R0、A ;保存
JB ACC.7、EFF_RE ; FF ビット: 0=SFF、1=EFF
MOV R2、#0
SJMP SFF_RE ; ID番号によって「データバイト」が取り込まれる位置が異なります
EFF_RE: MOV R2、#2
SFF_RE: MOV R2、#2
SFF_RE:
JB ACC.6、EXIT_RECANN ; RTR ビットをチェックします。 1(リモートフレーム)の場合、飛び出す
ANL A、#0FH
MOV R3、A ;このとき、真ん中の4ビットがデータ長を表します。
MOV C_NUM、A ;受信フレームの長さをR3、R5に格納
RDATA0:
INC DPTR ; 2バイトID
INC R0
MOVX A、@DPTR
MOV @R0、A
INC DPTR
MOVX A、@R0、A
INC DPTR
MOVX A、@DPTR
MOV @R0、A
MOV A、R2 ; EFF の場合、2 バイトの ID をスキップします-
JZ ドラタ1
INC DPTR
INC DPTR
データ1: ;データバイト
INC DPTR
INC R0
MOVX A、@DPTR
MOV @R0、A
DJNZ R3、RDATA1
EXIT_RECAN:
RET
4 結論
コンピュータの小型化により、測定および制御機器のインテリジェントな開発に必要な条件が整い、マイクロプロセッサ ベースの端末デバイスが優れたデジタル通信機能を備えられるようになりました。{0}スマート端末の登場が増えるにつれ、ネットワーク アーキテクチャ、プロトコル、リアルタイム パフォーマンス、さらには適用性、柔軟性、信頼性、さらにはコストに対する要求も高まっています。-したがって、フィールドバス技術は将来の発展に大きな期待を抱いています。 CAN バスのフレーム構造には識別子 (ID) が含まれており、これによりデバイス ネットワーク内に複数のネットワーク ホストを含めることが可能になります。つまり、これらのネットワーク ホストを通じて、デバイス ネットワーク全体の動作ステータスを監視し、対応する制御の決定を行うことができます。このデバイスは現在完全に開発されており、実用化において優れた成果を上げています。




