わが部署には
「シリアル通信(RS-232C通信)」 を活用したシステム開発をしている方がおります。
検査機器から吐き出される検査結果データを RS-232C から受信したのち、データベースに書き込んで管理しているとのこと。インフラまわりの整備しかできない僕としては、こういった開発ができる方を心から尊敬しますね。
ところが最近、データベースで管理する対象の検査機器が増えてきました。検査機器はシリアル通信で検査データを吐き出しますから、機器が増えるということは、ケーブルの差し替え・接続設定のし直しなど、必然的に接続するための手間が増えるということになります。
そこで今回、
「シリアル通信を Ethernet で使うための変換機」 を導入することになりました。
変換機を導入することで 「1対1」 のシリアル通信を 「1対 n 」 の Ethernet で扱うことができます。これにより機器ごとの接続設定を変更する手間がなくなり、またネットワークプロトコルを利用でき、管理も楽になります。
今回のメモは、そんな
「シリアル通信 / Ethernet 変換」 の技術について書かせていただきます。
※今回のメモは
「RS-232C 通信を Ethernet に変換」 することに焦点を当てています。「RS-232C の基礎」、「シリアル通信/パラレル通信の概念」 などは別の機会にメモする予定です。また本稿では RS-232C 通信のことを 「シリアル通信」 と表記することがあります。
シリアル通信って?まず簡単にシリアル通信についてメモします。
シリアル通信とは、1本の電子経路に1ビットずつの電気信号を送る規格のことをいいます。RS-232C 通信では信号を逐一送ることから、Ethernet のようにデータをまとめて送ることはありません。

↑RS-232C 通信と Ethernet 通信
上図を見ていただけると分かると思いますが、Ethernet はヘッダーの概念がありますので、データに宛先情報を付加することでネットワーク機器が指定の宛先へ届けてくれます。要するに前述した 「1対 n 」 の通信ができます。ところが RS-232C 通信は 「1対1」 が基本。指定された COM ポートにデータを流すことしかできません。
Ethernet に比べると RS-232C は汎用性が低く、また最近の PC には RS-232C ポートがほぼ未搭載です。僕のような初心者からすると、とても敷居の高い印象を受けてしまいますが、それでもルータや専用機器との通信では重宝されることが多く、まだまだ健在の通信インターフェースなのです。
LAN 変換機器 CSE-H53N今回、検証に用いました機器は 「
CSE-H53N (アルファプロジェクト株式会社)」 です。
こちらの機器に RS-232C 通信のビットデータを送り込むと、Ethernet 通信に対応したデータ形式に変換してくれます。もちろん本機器がパケットを受け取ると、RS-232C 通信のビットデータに逆変換をしてくれます。

↑RS-232C 通信を LAN で使える
本機器の設定は 「ezManager」 という専用ソフトウェアから行います。
以下の設定画面のキャプチャから見て取れますが、DHCP、DNS や PPPoE が使え、また IPv6 にも対応しているなど将来を見据えた設計になっているのが分かります。動作モードとしては、「TCP Server」 や 「TCP Client」 など合計4モードに切り替えることができます。今回は 「TCP Client」 モードとして本機器を稼動させています。

↑同セグメントに本機器を接続するだけで設定可能

↑ソケット通信となるためポートも設定する
他にもきめ細かな設定ができますが、今回は基本的な動作を検証するだけですので、その他の設定は省略します。もし興味のある方は、本機器の公式 WEB サイトにて仕様書を拝読下さい。
動作検証今回の動作検証はいたってシンプルです。
2台の Windows マシンを用意します。片方のマシンには RS-232C ケーブルと本機器(192.168.1.100)を接続。もう片方のマシン(192.168.1.200:5000)には Ethernet(192.168.1.0/24) の環境を整えます。そして本機器の RJ-45 ポートを Ethernet に接続します。

↑テスト環境
この環境下で PCa から TeraTerm を COM 接続させ、適当な文字列をキータイプします。このタイプした文字列が PCb の画面上(ezManager の Simple Test モード)に表示されれば、テスト成功となります。
さてその
結果 ですが、無事に
成功 です。
PCb の画面上に PCa がタイプした文字列が表示されたことを確認しました。
これで今後、RS-232C を使う検査機器が増えたとしても、本機器を導入するだけで管理も設定も楽になりそうですね。前置きだけ長くて動作検証は端折りましたが、今回はこんな感じでメモを終わろうと思います。
反省今回の検証にて使った 「ソフトウェア」 ですが、送信側には TeraTerm を、受信側には ezManager の Simple Test 機能を使いました。送信側のソフトウェアは TeraTerm でなくとも WEB 上に代用のソフトが沢山落ちていますので、これはさほど問題ありませんでした。しかし受信側はそうも行きませんでした。なかなか手ごろなソフトが見つからなかったのです(運よく ezManager が使えましたが)。
こういうとき、システム開発に携わっている方でしたら、おそらく以下のようなフローから簡単な受信プログラムを作ってしまうことでしょう。
1.特定のポートを監視させるためのプロセスを作成する。OS の関数を使うものと予想 (たぶん)。
2.SYN を受け取ったら ACK を返し、ハンドシェイクさせてソケット通信を確立させる (おそらく)。
3.受信したデータ文字列をコマンドに出力させる (maybe)。
しかし僕のようなインフラまわりの設備しか経験のない人間は、フローは思い浮かぶのにコーディングできないもどかしさ(無能さ)に頭を抱えます。インフラまわりのプロを目指す以上、がっつりとしたコーディングができないとしても、簡単なネットワークプログラミングくらいは組めるようになっておかないといけないのかもしれませんね。
勉強になりましたが、ちょっぴり悔しい経験でもありました。
スポンサーサイト