PLC用タッチパネルをPIC32マイコンに接続する

令和元年 9月

 1.経緯

 実はこれをやりたいと思ったのは数年以上前の事だったのですが、当時はタッチパネルの通信仕様を調べるためメーカーのHPを探し回ったものの結局見つけることが出来ず、そのままになって放置していました。

 それが今年になってミスミ社からの営業メールが届きました。7インチワイドのタッチパネルが3万円台かつ作画ソフトも無料とのこと。
とりあえずHPから資料を探すと通信資料も見つかりました。
これでマイコンとの接続を検討する前提が整いました。


 2.事前準備

 ミスミ社の資料から分かったとことは概ね以下の通りです。

 通信のハードウェアはともかくとして、通信仕様の多さには驚きました。
タッチパネルメーカーは接続出来るPLCの種類を増やすために、PLCメーカー各社が独自に決めている通信仕様に合わせた通信ソフトウェアを数十通りも用意しています。
しかもPLC自体も世代毎に通信仕様を拡張しているためか同じメーカーであってもシリーズが異なれば通信仕様も異なる複数の通信仕様を定義しているようです。本当にご苦労なことです。


 では、どの通信仕様を採用するか。

今回、通信のためのハードウェアはRS-232Cとします。小規模システムが前提なら真っ先に候補にすべきです。
通信の目的からしても、複雑で多機能なものは避けるべきでしょう。マイコンにとってタッチパネルとの通信はユーザーIFを柔軟に実装するための手段に過ぎず、そのために消費するリソースは少ないに越したことはありません。
 将来的に廃止される可能性の高い通信仕様も避けたいところです。その意味では古い世代のPLC製品の通信仕様は避けた方がいいでしょう。

 最終的な候補としてModBusによる通信を選択しました。
ModBusは事実上の業界標準仕様として多くの製品に採用されていることから、将来的にも廃止のリスクは少ないと考えられます。
 ModBusには通信のバリエーションとしてマスターモードとスレーブモードがあり、また通信データの書式としてバイナリー仕様とアスキー仕様の二通りがあります。ミスミ社の製品では全てサポートされています。

 通信の信頼性やデバッグを考えるとアスキー仕様の方がやり易いのですが、データの通信量がバイナリー仕様のおよそ倍になるのが難点です。逆にバイナリー仕様では通信データに対する時間軸上の制約があり、実装の上で面倒になります。
ここではデータ量は通信速度で稼ぐとして第一候補をアスキー仕様、第二候補をバイナリー仕様とします。


 3.他社のタッチパネルも調べてみた

 ミスミ社のタッチパネルを使用するとしても、他社の製品で置き換えが出来ることは重要です。
実際に置き換えるとなるとタッチパネル側の作画データを作り直しすることになるのでかなりハードルの高い話になるのですが、1社のみの供給では将来が不安です。10年後に再度商品を生産したいとなっても既にタッチパネルが入手不可で生産できないではタッチパネルを使う意味が半減します。
多少の手間がかかっても、類似製品で置き換え出来る程度の保険は必要です。

 PLCの業界では三菱電機社とOMRON社のシェアが高いようです。タッチパネルのシェアは良く分からないのですが、両者のどちらかで置き換えできるなら何とかなるでしょう。
 今回は以前に使用したことがあるという理由だけで三菱電機社の製品を検討候補として選択します。
メーカーのHPからタッチパネル関連の資料を検索し、通信仕様に関する資料を探します。
かなり苦労しましたが「GOT1000シリーズ接続マニュアル(マイコン・MODBUS・周辺機器接続編) GT Works3対応」なる資料が該当するようです。

 この資料からGOT1000シリーズがサポートするModBus通信はマスタモードのバイナリ仕様であることが分かりました。
後継製品であるGOT2000シリーズではスレーブモードのバイナリ仕様も追加されているようですが、いずれにしてもアスキー仕様は非対応です。

 ModBusではバイナリー仕様の方が多く採用されていると何処かで見た記憶があります。多分そうなんでしょう。
これで通信仕様に関する意思決定が出来ました。タッチパネルの通信仕様はマスタモードのバイナリ仕様でいきます。
タッチパネル側がマスタモードなのでマイコン側はスレーブモードとして実装することになります。
この接続であれば可能かどうかは不明ですが複数のマイコンを一台のタッチパネルに接続するといった使い方も考えられます。


 4.ModBus仕様について

 ModBus仕様については、以下の資料を参考にするのがいいようです。

http://www.modbus.org/docs/Modbus_over_serial_line_V1_02.pdf

 英語は苦手だという人には、日本語での参考資料として下記があります。
但し、こちらは個別メーカーによる実装であり、標準仕様とは限らないことには注意が必要です。

https://www.m-system.co.jp/mssjapanese/kaisetsu/nmmodbus.pdf


 実装自体は少し面倒な部分もありますが、時間をかければ実装できる範疇です。
今回は診断機能を全て割愛してデータ通信部分のみを実装しました。


 5.動作を検証する

 この手の通信プログラムは実際に動かしてみないと、動作を確認したことにはなりません。
実際に動作させるための実験環境が必要です。
 ミスミ社では評価機の貸し出しもあるようですが、今回はオークションから三菱電機製のタッチパネルを調達しました。
以下に実験環境の写真を示します。



 写真ではマイコン基板は見えていないですがUartx2基板の下にPIC32MM_CPU基板が重なっています。タッチパネルはGT1455です。
 タッチパネルにはModBusのデバイスとして、DOのビットコイル, 保持レジスタ, 入力レジスタの3つを定義しました。本来はDIのビットステイタスもあった方が良いのですが、とりあえずの実験にはこれでも十分です。

DOビットコイルと保持レジスタはタッチパネルおよびマイコンの両側から設定値を変更できること、変更された値を正しく表示できることを確認できました。
入力レジスタはマイコン側から値を変更した時に正しく値が更新されることが確認できました。
 この結果から、ModBus仕様での基本的な通信は正しく動作していると判断できます。後はより細部の動作検証が必要です。


 6.リソースの使用量

 XC32コンパイラを使用して最適化レベル1の条件で該当するプログラムをコンパイルしてみました。この中には最下層のUARTドライバは含まれていない状態です。UARTドライバは他の機能でも使用するので増加量の確認としては、この方がより正確です。このときobjファイルの追加合計サイズはおよそ5.5kバイトでした。今後の変更でもう少し増えるとしても、この程度の追加量であればタッチパネルを追加することによるメリットの方が十分に大きいと考えられます。

 今後はタッチパネルを前提にシステムを構築することができます。