フィールドバスの実現技術(2)シリアルインタフェース

RS232C/RS422/RS485いずれも1本(1対)の信号線で1ビットずつ順番にデータを送信する「シリアル通信」だ。シリアル通信では、受信側は届いたデータ列の始まりと終わりを検出し、データを正しく取り込むために受信側は送信側の信号にタイミングを合わせる必要がある。このタイミングを合わせる動作を「同期」と呼ぶ。同期をとる方法として「同期式」と「非同期式(調歩同期式)」があり、違いは同期用クロックの有無だ。一般的に、RS232C/RS422/RS485は「非同期式(調歩同期式)」だ。非同期式を採用する一番の理由は、同期用クロック信号がなくなると信号線を1本削減できるためだ。

非同期式(調歩同期式)

1:1 の通信を行うRS232Cでは、通信相手の識別が必要ないため、一般的に図1 のようなデータのみのフォーマットを使用する。

送信信号の先頭(スタートビット)と末尾(ストップビット)に識別信号を加え、受信側ではスタートビットを検出すると受信を開始し、所定ビット数取り込み後ストップビットを検出すると、一連の受信処理を完了する。調歩同期式は元々のデータにスタートビットとストップビットを付与するため、少なくとも2ビット分転送効率が悪化する。

調歩同期は送信側と受信側が各自のクロックで同期を取るため、あらかじめお互いの通信条件を合わせておく必要がある。

  • 伝送速度(ボーレイト/ビットレイト)
  • スタートビット長(常識的に1bit)
  • データビット長(7bitまたは8bitが一般的)
  • パリティビットの有無/パリティの種類(偶数または奇数)
  • ストップビット長(1bitまたは1.5bitが一般的)

データは最下位ビット(LSB: Least Significant Bit)から出力する。

図1 送受信手順
図1 送受信手順

送受信手順(図1 送受信手順参照)

  • 1→0 変化まで受信待機状態
  • 1→0 変化で受信開始(Start bit 検出)
  • Start bit 検出から 1.5bit時間後、最初のビット読み取り
  • 以降、1bit 時間毎に設定数分のビットデータ読み取り(図1 では9ビット)
  • 最終ビット読み取り後 1bit 時間経過後から Stop bit 検出開始
  • Stop bit 検出後は、[1] に戻り、受信待機状態になる

データビットの読み取りは、基本的には各ビットの中央をサンプリングする。エラーを排除するため、高速クロックで中央付近を複数回サンプリングし判断することもある。

調歩同期では、送信側と受信側でクロック周波数が異なり、同じボーレイトに設定しても誤差が発生する。仮に誤差が5%ある場合、10bit分累積すると50%となり、データは正しく受信できない。しかし、発信器の誤差は±30ppm程度(最大誤差は60ppm)のため、10bit分累積しても高々0.06%に過ぎず受信エラーを起こすことはない。しかしModbus の様にバイトデータではなくブロックデータを伝送する場合は誤差が累積する。Modbus のブロックデータは最大270バイト(=2,160ビット)だが、発信器の誤差が±30ppm の場合、約13% の誤差になり、かなり大きい。

1:N や N:M の複数の通信相手がいる伝送方式では、通信相手を識別するIDが必要だ。RS485は最大32台の通信装置が相互接続されるため、少なくとも5ビットの通信相手識別IDが必要だ。図2 のModbusでは相手を識別する「スレーブID」に1バイト(8ビット)を確保している。

Modbus フォーマット
図2 Modbus フォーマット
フィールド長さ概要
スレーブID1バイトスレーブ識別コード
機能コード1バイトコマンド
データ2~250バイトデータペイロード
エラーチェック2バイトCRC-16
アイドル3.5ビット送受信切り替え時間
表2 Modbus フォーマット

工場・物流現場のネットワークの現状

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。