トランシーバーのシリアルポートに複数機器を接続する

     トランシーバーのシリアルポートに複数機器を接続する
                              2012.08、追記12.12 ICT-Kuwa/JA4BUA

 アマチュア無線のトランシーバーの殆どにシリアル通信ポートが付いています。
 近年、この通信ポートに複数の機器を接続するのが当たり前のようになってきましたが、接続方法が
よく解らず、動かない・動作が不安定等の声を聴きます。
シリアル通信の仕組みが解れば通信ドライバー ICのドライブ能力にもよるが10ポート程度までは
バス接続できます。
 ICにもよりますが一般的には、大まかにドライバー出力10mA、レシバー入力1mA程度です。
以下に各トランシーバーメーカー毎の対応方法を述べます。
 次の参考資料 も併せて見て下さい。  接続回路と解説はこちら

1.ICOMのCI-V
  (1) 内部回路
    ICOMのシリアル通信方式CI-Vは、2線で電圧はTTLレベルの半二重通信です。ICOMの機器
    内は、受信:トランジスタのベース電流をスイッチング、送信:トランジスタのオープンコレクタで、
    送信と受信を直接接続して2線にしています。 コネクタは3.5mmモノのジャックです。
    通信のボーレートは、起動後に何もしない(状態変化なし)状態で、外部から受信するとその
    ボーレートで動き出します。
    周波数ダイアル、バンドスイッチに触る等の操作をすると、9600bpsで通信を開始します。
  (2) 複数の機器を接続する
     ①現在、接続されている物は、以下のような物が多いようです。
       パソコン(PC):プログラムは、通信ソフト(MMTTY、MMVARIなど)とLogソフト、トランシーバー
       コントロールソフト(Ham Radio Deluxなど)
       複数のソフトを同時に起動してソフト毎に1port接続など
       アンテナ関連制御装置:SteppIR制御、アンテナ自動切替装置
     ②接続の形態
       ICOMのCI-Vは、通信相手にアドレスを付けて、N:Nの通信を可能にしています。ただし、
       本格的な通信の排他制御機能を持っていないので、複数の機器が同時に送信を行うと
       当然エラーになって通信できません。
     ③通信の競合・衝突(コリジョン)
       ICOMの機器は、自分が送った信号を受けて、送信内容と同じならOK,違ったらコリジョンが
       あったと判断しているようです。PCソフトは、言いぱなしの垂れ流し??
     ④物理的な接続方法
       ・ICOMの機器
         送受信回路は、前述のように、送信はトランジスタのオープンコレクタですので
         複数のトランシーバー、リニアアンプ等をBUS接続しても問題なく通信ができます。
       ・接続する他の機器の場合
        PCの場合
          シリアルPort(RS232c)は、TTLにレベル変換して接続しますが、レベル変換ICの
          送信出力はBUS接続を想定していないためオープンコレクタ(ドレイン)ではありません。
          したがって、これを直接接続できません。
          私が提唱している簡易な接続方法は、順方向電圧降下が0.3V程度と小さいショット
          キーダイオードを入れる方法です。もちろんオープンコレクタ出力の方が良いのです
          が追加回路が多く複雑になります。(Inverter+トランジスタ)
          USB-シリアル変換ICの場合も同じですので、送信側にDIODEを入れます。
          ICの論理反転機能で論理反転して、トランジスタのベースをたたく方法もあります。
        その他の機器
          全て、TTLレベルにして、上記PCと同様の方法で接続します。
     ⑤周辺機器からのデーターの送信
       無用のコリジョンを防ぐため、極力、送信しないように設計するべきです。
       HRDのようなTRXのコントロールソフトは、Sメーターまで画面で追従させるために通信の
       情報量が非常に多いです。
       これに高度のLOGソフト等を併用すれば、通信のコリジョンは避けられないでしょう。
       私の推測では、これらのプログラムでは、コリジョン対策をしていないだろうと推測して
       います。
       TRXメーカーがコリジョン対応の標準アルゴリズムを提示しても良い時代と思います。

2.YaesuのCATとKenwoodのPCコントロール
   YaesuとKenwoodの最近の機種は、非常に似た通信フレームを使っています。要求しないと
   何も通信ポートには信号が出てきません。ただし、最近の機種は、「AI;」コマンドを1回送って
   おけば、状態変化があった時にICOMと同様に情報を自律的に放送します。
    (Logger32、SteppIRは[IF;]コマンドを使っています)
    Kenwood(AI2;):TS-590、TS-480、TS-2000、TS-570
          (AI1;):TS-870、TS-950
    Yaesu(AI1;):FT-950、FT2000、FT5000、FT9000など
    [注意]YaesuのFTDX5000でのデバッグ結果
        AI1;コマンドを送って放送される周波数情報で、VFOを早く動かした時に送られてくる
        周波数情報は、VFOが止まった最終の周波数ではないことが判明しました。
        高速でVFO周波数を動かし、連続的に情報を多数送る場合に、情報を送ってくるが
        VFOが止まった最終の周波数を正しく送ってくれないのです。
        バンド切替等の時は問題ないのですが、正しいその時の周波数が必要なときは使え
        ません。kenwoodはこんな事はありません。
        Yaesuな場合は、状態変化時に取り出す情報抽出のアルゴリズムが貧弱のようです。
        先日、FT-3000の展示会場でYaeseの技術屋さんに話したらアッサリ認めていました。
  (1) YaesuとKenwoodのシリアル通信
     通信の相手方を特定するアドレス等が全くありません。1:1の通信しか考えていません。
     この事から、1台のトランシーバ対他の機器の通信しかできません。この辺の発想はICOMと
     比べると際めて貧弱ですね。物理インタフェースは、いわゆるRS232cです。
     電圧は、+-3~12vです。つまり、このままではBUS的に複数を接続できません。
 机上での検討です。スペース時に+の電位にはならないはずです。
      もし、私の勘違いがあれば指摘願います。
     トランシーバー1:機器N個の接続をするには、TTLレベルに変換してからICOMの所で
     書いたようにDIODEーORまたはオープンコレクタにして接続する必要があります。
     ただし、このような対策をしてもN:Nの通信はできません。
     もちろん、コリジョン対応など全く考えられていないようです。
     接続する機器は、トランシーバーの送信データーを受け、トランシーバーに向けて送信する
     だけです。 発表された、TS990やFT3000も多分同様だろうと推察しています。?お粗末!!
  (2) 複数の機器を接続する
    ① 物理的な接続
      トランシーバーに情報を要求する機器を1台だけに限定して、他の機器は情報を受信するだけの場合。
      ・情報を要求する代表機器1台の送信データとTRXのシリアル入力を接続します。
      ・他のすべての機器の受信端子とTRXのシリアル出力を接続します。
        複数の機器からTRXに情報要求が必要な場合は、全ての機器の232cをTTLにレベル
        変換して、送信データにDIODE経由で接続します。
    ② 周辺機器からTRXに送るデーターのコリジョン(衝突)対策
        避ける方法がありません。どうしてもやるとすれば、受信データで送信のインヒビットを
        掛けるぐらいでしょう。後は、期待する返事が無かったら、しばらく待って再送するしか
        方法はなさそうです。
        以上の事から、YaesuとKenwoodのTRXで、手の込んだことを確実な動作でやらせる
        のは、無理と思った方が良さそうです。
      過去に、TRIO、YASEUの機器も複数使って来ただけに残念です。

3.コリジョンなしの完全なものにするには
  ここまでで、述べてきた内容は物理的に接続する方法だけで、送信データーのコリジョンを避ける
  方法は含んでいません。
  コリジョンが起こらないようにするには、
  ICOMの場合、
    ICOMの機器は簡易なコリジョン検出と再送の対応を行っているので、ICOM製機器以外
    [PCの複数PORT、SteppIR、私が頒布中のアンテナ自動切替インタフェース等]がICOMと
    同じ方法をとれば良いわけですね。
    私が思っているのは、中間に必要なシリアルポート数を持つインターフェース装置を追加し、
    各Portにアドレスを振って、ICOMの機器と同様のコリジョン監視と再送制御を行う方法ですが、
    プログラムを書くのも実機環境でデバックするのも大変ダロウナーと思い手をつけていません。
     (今の所、友人等からの強い要求がないので)
  Yaesu,Kenwoodの場合
    同様に中間に交通整理の巡査(インタフェース装置)を置いて、各機器から送られてくる情報要求
   コマンドを受け付けて、TRXに情報要求を行い、応答情報を要求してきた機器に中継すれば良い
   訳ですがかなり複雑なアルゴリズムになりそうです。
   ボケ防止と遊びのテーマとしては面白そうですがかなり大変だろうと思っています。

  未確認ですが好い方法をJA1のOMから教えていただきました。
   VSPE(Virtual Serial Ports Emulator)と言う面白いフリーソフトがあるのです。
   このソフトのスプリッター機能を使えば、PCプログラム間の物理的なコリジョンは避ける事が
   できそうです。時間を作って、是非、評価してみたいと思っています。
[2013.07.05]追加情報をいただきました
   VSPE(Virtual Serial Ports Emulator)は、ソフト内でのコリジョン対応に問題があるようです。
   TelePost Inc.のLPB2と言うソフトに変更して評価したら、ソフト内でのコリジョンの問題が
    解消したとの事です。    他にも良い情報があれば教えて下さい。

4.思うこと
   過去に仕事で電気通信の標準化に関わり、如何に標準化がメーカーとユーザーにとって、大切かを
   身に染みている、私にとってはメーカーの悪趣味で振り回されるのは残念でたまりません。
   本来なら、遅くともWindows98の時代に業界団体で標準化委員会を作って、PC等周辺機器と
   アマチュア無線機の物理Interface、フレームフォーマットの標準化を行い、一部の未定義部分を
   各メーカーの特色用にすることができたはずだ。
   また、ユーザーを代表する唯一の団体?のJARLがメーカーに対して、要求・勧告を行う事も
   できるはずだが事務屋さん集団?では無理なのかなーー。本当の会員サービスとは??
   せめて、今からでも速やかにやるべきと思うのは私だけか?