USBシリアルアダプタ:ドライバ、レベル、落とし穴
USBシリアルアダプタの仕組み、ドライバと偽造チップが重要な理由、RS-232とTTLレベルの違い、古いDB9機器を再び通信させる方法を解説します。
USBシリアルアダプタは、USBポートをRS-232シリアルポートに変える小さなコンバータで、シリアルポートのないコンピュータでもルーターのコンソール、PLC、ラベルプリンタ、はかり、実験装置と通信できます。アダプタにはコンバータチップが入っており、そのチップがすべてを決めます。コンピュータが必要とするドライバ、ピンに現れる信号レベル、次のOSアップデート後も動作し続けるかどうかです。間違ったものを選ぶと、何も通信できない、文字化けする、あるいは相手側のハードウェアを損傷することになります。
アダプタの内部
USB-RS-232アダプタは、成形されたシェル内に3つの要素が入っています。USBインターフェース、シリアルコントローラチップ、そして真のRS-232電圧を生成するレベルシフタです。コントローラチップはコンピュータに対して仮想COMポートとして認識されます。OSはそのチップ用のドライバをロードし、ドライバはターミナルソフトウェアに対して通常のシリアルポートとして見せます。
だからこそドライバがケーブルよりも重要です。内部のチップがドライバを決め、ドライバがお使いのOSでアダプタが動作するかどうかを決めます。十分にサポートされているチップを使ったアダプタは、通常OS自体か署名済みドライバパッケージからインストールされます。そうしたチップの無許諾コピーを使ったアダプタは、純正メーカーのドライバにブロックされることがあり、これが典型的な故障です。何年も動作していたアダプタが、ドライバ更新後に認識されなくなります。
偽造チップはこの市場で現実的な問題です。純正でないコンバータチップは同じIDを報告することがあり、純正ドライバがロードされると不一致を検出してデバイスを拒否します。症状としては、ポートが現れたり消えたりする、デバイスマネージャでエラーが表示される、ポートは開くが何も送信されない、などがあります。実用的な答えは、公開され保守されているドライバを持つチップを使ったアダプタを購入し、そのドライバインストーラを機器と一緒に保管することです。
RS-232、TTL、そしてハードウェアを損傷する違い
RS-232はマイコンボード上のシリアル信号とは同じものではありません。RS-232はシングルエンド信号を使用し、+3Vから+15Vの間の電圧が論理0(スペース)、-3Vから-15Vの間が論理1(マーク)です。マイコンボードや多くの組み込みヘッダに見られるTTLまたはCMOSシリアルポートは、代わりに3.3Vまたは5Vの論理レベルを使用します。
両者を直接接続すると、低電圧側を損傷する可能性があります。真のRS-232出力はプラスとマイナスの電圧に振れ、3.3V入力はこれを受け入れるようには作られていません。機器がTTLを期待している場合は、USB-TTLアダプタまたはレベルシフタを使用し、USB-RS-232アダプタは使わないでください。機器がRS-232を期待している場合、USB-TTLアダプタでは駆動できません。
| アダプタの種類 | 出力レベル | 一般的な用途 |
|---|---|---|
| USB to RS-232 | +3V~+15V および -3V~-15V | DB9またはDB25機器、コンソール、モデム、はかり |
| USB to TTL | 3.3Vまたは5Vロジック | マイコンボード、組み込みヘッダ |
| USB to RS-422/485 | 差動 | 長距離、Modbus RTU、DMX512照明制御 |
規格ではRS-232は19,200ボーで最大15m (50 ft)まで許容され、より低いボーレートではさらに長く延ばせます。RS-422とRS-485は差動で、より低い速度で最大1200m (4000 ft)まで延びるため、産業機器ではしばしばこちらが使われます。
遭遇するコネクタとピン配列
ほとんどのUSBシリアルアダプタはオスのDE-9コネクタ(通常DB9と呼ばれる)で終わります。PC(DTE)のピン配列は固定です。ピン1 DCD、ピン2 RXD、ピン3 TXD、ピン4 DTR、ピン5 信号グラウンド、ピン6 DSR、ピン7 RTS、ピン8 CTS、ピン9 RI。古い機器ではDB25を使うことがあり、ピン配列が異なります。ピン2 TXD、ピン3 RXD、ピン4 RTS、ピン5 CTS、ピン6 DSR、ピン7 信号グラウンド、ピン8 DCD、ピン20 DTR、ピン22 RI。RS-232シリアルピン配列:DB9とDB25の完全なリファレンスに両方が記載されており、ケーブルを作る前に確認する価値があります。
DTEはコンピュータまたは端末、DCEはモデムを意味します。ストレートケーブルはDTEとDCEを接続します。2つのDTE間にはヌルモデムケーブルが必要で、TXDとRXDが交差し、RTSとCTSが交差し、DTRがDSRとDCDに交差し、信号グラウンドはそのまま通ります。ジェンダーチェンジャーはオスとメスを交換するだけで何も交差しないため、ストレートケーブルをヌルモデムケーブルにはしません。2台のコンピュータまたは2台の端末機器が通信しない場合、ヌルモデムケーブルとアダプタのページに配線と既製アダプタが記載されています。
ドライバ、ポート、オペレーティングシステム
USB-RS-232アダプタはWindowsではCOMポートとして、LinuxやmacOSでは/dev/ttyUSB0や/dev/tty.usbserialのようなデバイスとして表示されます。ポート番号はアダプタを抜き差ししたり、別のUSBポートに移動したりすると変わることがあります。固定のCOMポートを記憶しているターミナルソフトウェアはポートを開けなくなり、アダプタの故障のように見えますがそうではありません。
2つの習慣でほとんどの問題を防げます。第一に、毎回同じUSBポートにアダプタを接続し、ポート番号を安定させます。第二に、機器のドキュメントにポート番号を記録します。Linuxでは、アダプタのシリアル番号に基づくルールでデバイス名を固定できます。すべてのアダプタがシリアル番号を報告するわけではないので、依存する前に確認してください。
USB自体はここでは制限要因ではありません。12 MbpsのUSB 1.1フルスピードでも一般的なシリアルボーレートよりはるかに高速で、アダプタのUSB側がリンクを制約することはありません。アダプタとハブの選択で速度ラベルについて知りたい場合はUSB 3.0、3.1、3.2、USB4:速度と名称の解説のページが参考になりますが、シリアル作業には動作するUSBポートがあれば十分です。
古い機器を再び通信させる
リンクを順に確認し、一度に1つだけ変更します。
- アダプタが認識されていることを確認します。デバイスマネージャまたはシステムログでシリアルデバイスを確認し、ポート名を記録します。
- ドライバがチップに一致していることを確認します。アダプタが認識されない場合は、内部のチップ用のドライバをインストールし、汎用ドライバは使わないでください。
- ケーブルの種類を確認します。DTE対DCEにはストレート、DTE対DTEにはヌルモデムです。
- シリアル設定を確認します。ボーレート、データビット、パリティ、ストップビット、フロー制御は両端で一致している必要があります。フロー制御がよくある原因です。ハードウェアフロー制御(RTS/CTS)は、ケーブルがこれらのピンを伝送しないとハングします。
- レベルを確認します。RS-232機器にはRS-232アダプタ、TTLヘッダにはTTLアダプタが必要です。
コンソール作業では、ロールオーバーケーブルが8本のピンすべてを端から端まで反転させ、CiscoスタイルのコンソールポートでRJ45-DB9アダプタと共に使用されます。多くの新しいデバイスにはUSBコンソールポートがあり、アダプタは全く不要です。
何がうまくいかないか
ドライバ更新でアダプタがブロックされる。 偽造チップは純正メーカーのドライバに拒否されます。アダプタは故障ではなく、ドライバが受け付けなくなったのです。動作確認済みのドライバインストーラを保管するか、保守されているドライバを持つチップを使ったアダプタに交換してください。
USB-TTLアダプタをRS-232機器に使用する、またはその逆。 前者は通常通信できず、後者は低電圧側を損傷する可能性があります。機器が期待するレベルにアダプタを合わせてください。
2つのDTE間に間違ったケーブルを使用する。 2台のコンピュータまたは2台の端末間のストレートケーブルは動作しません。ヌルモデムケーブルまたはアダプタが必要です。
ポート番号が変わる。 アダプタは正常ですが、ターミナルソフトウェアが古いポートを見ています。ポートを再選択するか、デバイス名を固定してください。
フロー制御の設定が間違っている。 ハードウェアフロー制御を選択し、RTS/CTS配線がない場合、最初の数文字でリンクが停止します。フロー制御なしまたはソフトウェアフロー制御でリンクを確認し、その後正しく設定してください。
ジェンダーチェンジャーが信号を交差させると期待する。 これはオスとメスを交換するだけです。ストレートケーブルをヌルモデムケーブルにはしません。
アダプタが機器に電力を供給すると期待する。 シリアルポートはデータリンクであり、電源ではありません。独自の電源が必要な機器には、依然として独自の電源が必要です。
高速ボーレートで長いケーブルを試みる。 RS-232は19,200ボーで15m (50 ft)に制限され、より高速ではさらに短くなります。長距離にはRS-422またはRS-485を使用してください。
電力を確認せずにUSB延長を追加する。 バスパワーハブはホストポートの電力をデバイス間で共有します。ハブ経由でアダプタが不安定な場合は、直接接続するかセルフパワーハブを使用してください。
よくある質問
ドライバ更新後にUSBシリアルアダプタが動作しなくなったのはなぜですか?
アダプタに偽造のコンバータチップが入っている可能性があります。純正メーカーのドライバが不一致を検出し、デバイスを拒否します。アダプタは故障ではありませんが、そのドライバでは動作しません。保守されているドライバを持つチップを使ったアダプタに交換するか、使用する機器用の動作確認済みドライバインストーラを保管してください。
USB-RS-232アダプタとUSB-TTLアダプタの違いは何ですか?
RS-232はシングルエンド信号を使用し、+3Vから+15Vが論理0、-3Vから-15Vが論理1です。TTLは3.3Vまたは5Vの論理レベルを使用します。両者を直接接続すると低電圧側を損傷する可能性があるため、機器に合わせてアダプタを選んでください。DB9またはDB25ポートにはRS-232、マイコンヘッダにはTTLです。
USBシリアルアダプタで2台のコンピュータを接続するにはどうすればよいですか?
各コンピュータにそれぞれアダプタが必要で、2つのアダプタはヌルモデムケーブルまたはヌルモデムアダプタで接続します。ヌルモデムケーブルはTXDとRXD、RTSとCTS、DTRとDSRおよびDCDを交差させ、信号グラウンドはそのまま通します。ストレートケーブルでは2つのDTE間で動作しません。
USBシリアルアダプタのケーブルはどのくらい延ばせますか?
RS-232側は19,200ボーで15m (50 ft)に制限され、より高いボーレートではさらに短くなります。USB側はアダプタではなくUSBケーブルの規則によって制限されます。より長い距離には、差動で低速時に最大1200m (4000 ft)まで届くRS-422またはRS-485を使用してください。
シリアルポート番号が変わり続けるのはなぜですか?
ポート番号はアダプタを接続したときに割り当てられ、別のUSBポートに移動すると変わることがあります。毎回同じUSBポートにアダプタを接続するか、OSが対応していればアダプタのシリアル番号を使ってデバイス名を固定してください。すべてのアダプタがシリアル番号を報告するわけではありません。
次に読む
ヌルモデムケーブル:配線、アダプタ、ピン配置
ヌルモデムケーブルはTXとRXを交差させ、2台のコンピュータを直接接続します。DB9とDB25のピン配置、アダプタとケーブルの違い、ループバックテストを解説。
パラレルプリンターケーブル:IEEE 1284、DB25、セントロニクス
IEEE 1284準拠のパラレルプリンターケーブルを解説:DB25とセントロニクス36コネクター、ケーブル長の制限、モード、USB-パラレルアダプターが使える場合。
RS-232ピン配列:DB9とDB25の解説
DB9とDB25コネクタのRS-232ピン配列を完全解説。DTEとDCEのピン割り当て、電圧レベル、ケーブル長の限界、基板を破壊するTTL接続の誤りまで網羅。