2015-06-11

RasPiでRS485接続

ここのところプログラムを書く仕事は Raspberry Pi (Raspbian Linux) ばかりである。先月はオムロンのRS-485接続タイプの電力監視用機器からデータを収集するRasPi用のプログラムを作っていた。関連機器を並べるとこんな感じ。

写真右側の三段重、上から、小型電力量モニタKM-N1-FLK、小型電力量センサKM20-B40-FLK、通信変換器K3SC-10、写真左側Raspberry Piに乗っかってるのはアドオンボードRasPiCommである。

RS-485(今はEIA-485なのかな)はFAでは、まだまだ使われているらしい。マルチドロップのシリアル接続というと、古くからのMacユーザーはLocalTalkとか思い出すかもしれない(RS-422だけど)。

プログラム自体は RS-232C だろうが RS-422 だろうが RS-485 だろうが、シリアルデバイスを扱うので同じように作れば良いのだが、RS-485だと物理的に接続する手段を探すのに結構手間取った。

「Raspberry Pi RS-485」みたいなキーワードでネット検索するといろいろと見つかるが、そこそこ信頼性があって、国内での入手が容易、安定供給が期待できそうという条件だと、なかなか適当な製品がないので困ったもんだ。

K3SC-10 は、オムロン純正のUSB⇔RS-422/485通信コンバータである。純正品大好きな私としては、これを使いたかったのだが、オムロンに限らず、大手、有名どころのRS-485コンバーターはWindowsしか眼中にないらしく、K3SC-10にもWindows用のデバイスドライバーしか用意されていない。

こちとらUNIX(Linux)用のプログラムを作ってるわけで、「仮想COMポート対応USBドライバ」とか「Visual C++/Visual Basicで利用可能なライブラリ(DLL)」をご用意しましたなんて言われても全然うれしくない。

RasPiComm は、アールエスコンポーネンツが取り扱っているAmescon社製の拡張I/Oボードである。SPI接続のRS-485ポートを増設できる。

RasPiCommには、メーカーがRaspbian用ドライバーパッケージを用意してくれてはいるものの、標準のインストールスクリプトだと必要のない設定変更とかされちゃうので、これまた、うれしくない。おまけに、カーネルをカスタマイズしていると標準のインストール方法は使えない。

幸いドライバーのソースコードはGitHubで公開されているので自分でビルドすれば、メーカーのインストールスクリプトやパッケージに頼らなくても使える。しかしシステムインストールの手間が増えるのはなんとも。標準のドライバーが使える製品のほうが面倒がなくていい。

それにしても、これだけオープンソースだクラウドだIoTだと騒いでるご時世に、FA業界はいまだに「Windowsしかサポートしません」なのかな? 計測機器からデータを収集するような用途ならWindowsよりLinuxのほうが向いているように思うのだが……

※念のため断っておくと、写真のRS-485端子間の接続が小汚いのは、今ではすっかりソフトウェアが専門な私は手元に適切な配線材を持ち合わせていないためである。なんだそのデタラメなケーブルは、とか、SGはどうしたとか、終端されてない(こんなケーブルではハナから無意味)とかツッコミは無しにしてほしい。ハードウェアやインフラまわりは私の担当ではない。実際の納入物の配線は、専門の計装屋さんが、まともな電線を使ってきちんと工事してくれる。


RasPiCommについて、しばらくいろいろなテストをしていると、どうも挙動が不審なので実運用への採用は見送った。メーカーの指示通りの方法でドライバーをインストールすれば問題ないのかもしれないが、2015-11-01時点でメーカーはRasPi用kernel 4.1について、この製品の動作確認すらしていないようだ(kernel 3.18.11止まり)。

SPIを使うような面倒なことをせずに、RasPiのUARTをRS-485にコンバートしてくれるだけでいいんだけどね(実は購入して現物に触るまでRasPiCommがそういう製品だと勝手に思い込んでいて、取り付けてからSPI接続だと気がついた)。

Google先生に聞くと、SparkFunのそれらしいボードが出てくるのだが製造終了とか在庫切れとか表示されていて買えない。そんな入手性の悪いもの使えんがな。

0 件のコメント:

コメントを投稿