. 

4.接点入出力 ( Parallel I/O Port )


 以前はプリンタポートが便利に使えたのですが、Windows 管理下では好き勝手な利用が難しくなってしまいました。シリアルポートを使った接点入出力をするための、マイコンを使わない方法を紹介します。

(a) 直結型 ( Direct )

 接点数が少なければ制御線を使うだけで済みます(現に、Windows でシリアルポート接続の接点型無停電電源の制御が標準サポートされている)。入力に1〜3接点、出力に1〜3接点(ただしそれぞれ3接点は同時には無理)が可能です。

・出力のみ3接点 ( 3 Outputs )
 DTR, RTS, TxD は、それぞれ High/Low を制御できます。TxD はブレーク信号を送る操作で High になります。

・入力のみ3接点 ( 3 Inputs )
 DTR-DSR、RTS-CTS、TxD-RI のペアを用います。それぞれの接点が ON になっているかは、DTR を High にしたとき DSR も Hight になるか、RTS が High で CTS も High か、TxD をブレークすると RI が ON になるか、で判断します。

・出力2接点入力3接点 ( 2 Outputs and 3 Inputs )
 DTR, RTS を出力とします。TxD はブレークで常時 High とし、DSR, CTS, RI の入力とします。RI は実質的に立ち上がりエッジで検出されますので、読み込みのたびに TxD を ON/OFF します。

 制御信号をユーザがどこまで制御できるかは、ハードウェア、OS によって異なります。また、これら以外の制御線や通信ステータスが利用できる場合もあります。


(b) 多接点型 ( Shifted )

 パルス出力や接点出力を任意に制御できるのですから、これでシフトレジスタを駆動すれば多点数の入出力を制御できます。わざわざマイコンを使うことはありません。

・出力8点 ( 8 Outputs )
 出力は、DTR で出力ポートのクリアを行い、RTS に出力データのビット列を入れて TxD のブレーク信号クロックでレジスタをシフトします。設定する間の一瞬に、出力ビットにシフト中のデータが現れます。これが問題になる場合はストローブ機能のついたものを使う、出力に時定数の長いCR積分を入れる、など工夫してください。

・入力8点 ( 8 Inputs )
 入力は、DTR で入力ポートのラッチを行い、TxD のブレーク信号クロックでレジスタをシフトしながら CTS に入力データのビット列を得ます。ハードウェアによってはブレーク信号でクロックを入れたあと、若干の待ち時間を入れないと読み込みデータが安定しないようです。IC は 74HC165 でも使えますが、ピン配置がまったく異なるので注意してください。

 写真は入力8点と出力8点をまとめたものです(回路図)。入出力のシフト動作を共通化してありますので、入力を読み込む際に出力も再設定します。出力には、手元の7セグメントLEDをつなぎました。任意のパターンを表示できます。
 入出力ともシフトレジスタなので、それぞれ直列につなげていけば、任意のビット数の読み書きができます。