「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私が担当した案件で「三菱PLCの通信プロトコル支援機能+シリアルコミュニケーションユニットを使用した調節計更新」を行った事例についてご紹介したいと思います。
既設システムですが、下記のようにデジタル指示調節計の通信はRS-485、いっぽうPLC側はCC-Linkユニットを使用し、PLCと調節計の間にRS-485/CC-Link変換器を使って通信を行っているシステムでした。
この通信変換器のNC210は2013年3月に販売終了しており、後継機種も発売されておりません。そのためPLCと調節計を通信するためには直接RS-485通信を行う必要があります。
更新後のシステムでは、調節計とPLCはRS-485通信で直接通信する形に更新することでRS-485/CC-Link変換のNC210が不要になります。
今回使用した調節計は横河電機社製のUT32Aを使用し、RS-485通信をサポートしている物を使用しています。この調節計はRS-485通信を使った場合、modbus通信、パソコンリンク通信、ラダー通信の3種類のプロトコルをサポートしていますが、今回はmodbus通信を使っています。
ポイントGX Works2を使ってまずは通信プロトコル支援機能を使ってみます。GX Works2のツールメニューから下図のように通信プロトコル支援機能を選択し、シリアルコミュニケーションユニットを選択します。
下記のように通信プロトコル支援機能の画面が立ち上がり、プロトコルを追加することで下記の様な画面が表示されます。通信プロトコル支援機能では様々なメーカーのプロトコルに標準対応しています。今回はmodbus通信を使いたい為、メーカーは「シュナイダーエレクトリック」、型式は「modbus」を選択して、使いたいプロトコル名を選択します。
今回は調節計との通信では以下プロトコルを使用します。
プロトコルの追加を行うとパケット設定が行える様になり、送受信に使うデバイスを下記の様に設定することで指定したデバイスに値を設定して送信、もしくは受信データが指定デバイスに書き込まれるようになります。ここまでがプロトコルを使う為の下準備になります。
次にGX Works2に戻り、インテリジェント機能ユニットにシリアルコミュニケーションユニットを追加してスイッチ設定を行います。伝送設定は調節計と通信出来るように通信速度その他の設定を合わせ、更新プロトコル設定を「通信プロトコル」を選択します。
またRS-485通信で通信プロトコル支援機能を使う場合にはエコーバック禁止(自分が送信したデータが受信データとして入ってきた場合に無視する)設定をする必要がありますので、各種制御指定でエコーバック禁止を選択します(今回使用したシリアルコミュニケーションユニットでは1CHと2CHの2チャンネル分の通信ポートがありますが、CH2側のみエコーバック禁止の設定が行える為、CH2側を使用しています)
ラダープログラム側では、NC210を使っていた時と同様の事を行える様にするために、modbusのプロトコル3種類(03:RD Holding Registers,05:WR Single Coil, 06:WR Single Registers)を使って下記の実装を行っています。
次にラダー側でプロトコル「06:WR Single Registers」を使って書込みするプログラムを書きます(ユニットなどの初期化プログラムは本メルマガでは省略します)M0がONしたら、下記を実行するプログラムになります。
実行結果は、専用命令GP.CPRTCLの引数で設定しているD10480、M10300に結果として帰ってきますので、その結果によって適切な処理を実装する必要があります。
特に重要なのは、通信失敗時もしくは無応答などの通信エラー処理になります。本件を担当したときには、まれに通信エラーが発生し、下記の様にエラー処理追加、及び通信設定などの見直を行っております。
ポイント通信という目に見えないものをプログラムし、それが正しく処理されているか?という確認は思いのほか大変な作業です。
今回はシリアルユニット+通信プロトコル支援機能を使う事で、送受信データは指定したデバイス経由でやり取りすることが出来るため比較的シンプルなプログラムで済みましたが、プロトコル支援機能がどのような動きをするのか?エラー処理はどうなるのか?などきちんと動作を理解していないと、エラー処理実装を正しく行えないという事を学びました。
まれに発生するトラブルというのは、どの様な場面でも厄介なものですが、それが発生しないように設計時点で考慮し、未然に防げるような仕事をしていきたいと考えます。
(S.N.)
関連ページへのリンク
関連するソフテックだより