シリアル接続はもういらない?

昨日まで電流(または電圧)値をビット換算で
通信を行うレガシーなシステム(テレメーター)の
保守をしていましたが、表示盤が架に付いているものは
ランプでビット数が表示されますが、付いていないものは
パソを接続し16進数で確認するといった仕組みです。
さすがレガシーなシステムで接続はシリアルポートです。
で、今日のお話はこのシリアルポートについてです。

早期から規格化されていたシリアル通信は、初期のパラレル
ポートにはなかった双方向通信が出来て、パソ以外の通信にも
使用されていたことなどから、PC互換機の標準装備でした。
標準規格のRS232(正規にはEIA-232?)は当初25ピンの
D-subコネクタでしたが、後に必要最低限の信号線に縮小した
D-sub9ピンが登場し、9ピンと25ピンを1ポートずつが混在
していた時もありましたが、2ポートとも9ピンになり、
現在ではシリアルポートはあっても1ポート、付いていない
ものもあります。

シリアルポートが衰退した理由はなんと言っても遅い!
もうひとつ大きな理由は割り込み要求のIRQを固定的に
使用するので、プラグ&プレイに対応しないことでしょう。

とは言え、通信速度に依存しない機器の制御等においては
気心知れたCOMポートは使い勝手がよく、しかも簡単です。
パソコンからCW送信を行うなど、まだまだ使い道があります。
また最近流行りのラズベリーパイ(ラズパイ)などで
TCP/IP環境の無いところでのリモートマシーンとの通信では
シリアル接続がまだまだ有用であります。

D-Subが葬り去られたパソでもCOMポートを使用したいときは
USBポートを流用します。
その際は変換ケーブルなどで対応しなくてはいけません。
変換ケーブルはそんなに高価なものではなく、
探せば1000円台のものも見つかりますし自作も可能です。
 *デスクトップマシーンではPCIの変換用拡張ボードがある。

USBに変換ケーブルを挿入すると、WindowsOSの場合は
デバイスマネージャのポート(COMとLPT)に
USB Serial Port (シリアルポートナンバー)という
項目が表示されることにより認識されたことが分かります。
これでCOM(シリアルポートナンバー)を指定することにより
通信が可能になります。
他には
ポートレート(4800とか9600ボー)
データー(8ビットとか)
の設定も必要になるでしょうが、通信する相手方の
推奨値で設定するとよいでしょう。
通信が不安定なら、4800ボーを2400に落としてみる
などと欲張らないことがコツとなります。
大量のデータを一気に送るときは、速度が遅いと
出口で詰まってしまいうまくいかない場合もあるため
そんな時は10〜50mmS秒/行程度の間で送信遅延を
設定するとうまくいくことがあります。

*注意

・変換ケーブルで自動認識せず別途デバイスドライバの
 インストールが必要なものは、OSのバージョンにより
 ダメなものもあります。
 Windows7でOKでも8.1は認識しない・・・等々。

・TCP/IPの環境がなくともシリアル接続でパソ同士や
 モデムとの通信も可能ですが、その際はクロスケーブル
 (リバース ケーブル)を使用します。
 制御ソフトによってはフロー制御の方法が異なるため
 その際は信号線の結線も違うので、クロスケーブルには
 複数の種類があり、目的に応じた選択が必要です。
 (間違うと通信不能)

参考@IRQ

 ubuntuでIRQの使用状況を調べるコマンド
 $ cat /proc/interrupts

irq

 ここで表示される頭から番号がついたものがIRQです。
  余談
  古の時代のIRQは0〜15までの16個しかありませんでした。
  PCI接続されたデバイスは個別の認識ができるので、
  同じIRQを複数のデバイスで共用できたものの、
  特定デバイスのスロット順番による相性などがあったり、
  ヘビーユーザーはIRQ不足回避に悩まされたものでした。
  これはISA互換のためのPIC規格が足かせとなっており、
  現在ではマルチプロセッサ対応のAPICとなっったため
  IRQ不足に悩まされることがなくなりました。

カーネルベースの話@備忘録 
 
  割り込みハンドラの登録 irq_desc[]
  デバイスドライバなどの request_irq()
  1つのIRQに複数のハンドラを登録 SA_SHIRQを付与
  割り込みのエントリ irq_entries_start[]

HOME

おすすめ