スマホでPLCを動かしみた【前編】

この記事ではスマホでPLCを動かすためのステップを解説していきます。

電気制御の方へ向けた記事なので、ネットワークなどはできる限り丁寧に説明します。

この記事は前編です。

前編ではスマホではなくPCでPLCを動かして、前提知識を学びます。

後編ではスマホアプリを作って、スマホでPLCを動かします。

目標

アンドロイドアプリを作成する。

作成したアプリのスイッチを押すと、PLCのY0がONする。

開発環境(ソフト)

Windows:Gx Works2がWindowsしか対応していないため

→ AndroidStudioの処理が重いため、メモリ8GぐらいのPCだと楽です

Gxworks2:三菱電機のラダー編集ソフト

→ 有料。体験版は無料。

AndroidStudio:PLC⇆PC間の通信プログラム作成用。言語はJavaとkotlinを選ぶことができ、今回はJava。

→ 無料

開発環境(機器)

三菱製でEthernetポートのあるCPU。

※android端末はエミュレータを使用するので不要です。実機でも可能ですがこの記事ではエミュレータを使います。

開発ステップ

このステップで下記が理解できます。

  • PLCと通信できるようになる
  • Androidアプリの作り方がわかる

開発環境の準備

開発環境としては、GX Works2とAndroidStudioが必要です。インストールしていきしょう。

GX Works2のインストール

三菱電機のサイトで体験版をダウンロードし、インストールしてください。

インストールの注意点はありません。

GX works2のインストール

AndroidStudioのインストール

始めの難所。。ここが一番大変かもしれません。

「androidstudio インストール」などで検索すると解説記事があるので、参考にしてインストールしてください。

解説ではエミューレータを使いますが、実機(Android端末)があればエミュレータなしでも大丈夫です。

参考サイト

※前編ではAndroidStudioを使いません

PLCのIPを設定する

PLCのIPアドレスを設定します。

IPアドレスとは電話番号のようなものです。詳しく説明すると長くなってしまうので、PCを認識するための番号だと思ってください。

PCのIPアドレスを確認する

PLCのIPアドレスを設定する前に、PCのIPアドレスを確認しましょう。

自宅ではルーターが自動的にIPアドレスを割り振るので意識しなくても使えますが、今回は自分のIPを把握しないといけません。

ちなみに建物内のIPアドレスはネットワーク部とホスト部で構成されています。

下図の例だとIPアドレスは「192.168.1.100」となっていて、「192.168.1」がネットワーク部で、残りの「100」がホスト部です。

ではコマンドプロンプトを起動して「ipconfig」コマンドを実行してください。

色々出てきますが、「192.168.0.○○」のような数値が見つかったらそれです。

メモしてください。

ホスト部が「1」か「255」になってるのは違います。
「2〜244」までが使える領域です。

PLCのIPを設定する

下図は、PCのIPアドレスのネットワーク部が「192.168.1.◯◯」の場合のPLCの設定です。

ここで、IPアドレスに加えてサブネットマスク、デフォルトゲートウェイ、ポートが出てきました。順を追って説明します。

まずはIPアドレスから説明します。

IPアドレスを決めるには、サブネットマスクを理解する必要があります。

ネットワーク部は3種類あります(実は自由に変えることもできますが、基本的に3種類です)。
その3種類のどれかを判別するためのものです。
下図では「255.255.255.0」となっており、255があるところはネットワーク部として使うよって意味です。
なのでIPアドレスが「192.168.1.100」、サブネットマスクが「255.255.255.0」だと、「192.168.1」までがネットワーク部になります。

なぜネットワーク部を理解する必要があるかというと、ネットワーク部が異なる機器どうしは通信できないからです。

つまり、PLCとPCを同じネットワーク部にする必要があります。

これでPLCに設定するIPアドレスのネットワーク部は決まりましたね。

あとはホスト部です。こっちは2〜254の中で空いていればどこでもOK。

ただし、すでに使っているIPを設定してしてはいけないので、使いたいIPアドレスが空いているか調べましょう。

コマンドプロンプトを開き、pingコマンドを実行します。

空いているか調べたいIPアドレスのホスト部が100なら「ping 192.168.1.100」と入力し実行します。

応答が帰ってきたらアウト。すでに何かに使用されているので他のホスト部を使いましょう。

次はデフォルトゲートウェイです。

色々あり混乱するかもですが頑張りましょう!

ネットワークは奥が深く、ここでの説明も表面的な物です。フィールドネットワーク(cc-linkなど)だけではできることも限られますし、今後はIoTでPLCから情報を吸い上げることも増えるはずです。
興味があれば勉強してみるのもいいかと思います。

デフォルトゲートウェイとは

ルーターのIPアドレスです。ルーターには複数のPCなどが繋がっていて、接続されているPCなどのIPを管理してくれています。
ルーターがない場合、PCどうしをLANケーブルで繋げば通信できますがそれでは不便ですよね。
ルーターに複数のPCを繋ぐと、ルーターを介して他のPCに繋がって通信できるようになります。
これは余談ですが、上記の機能以外にもWANとの通信も担っています。
WANは建物外のネットワークで、LANは建物内のネットワークです。僕も含め一般の人が扱うのはLANと考えていいでしょう。

つまり、自分のPCが繋がってるデフォルトゲートウェイと同じデフォルトゲートウェイをPLCにも設定するということになります。

実はIPアドレスを確認した時に一緒に表示されていました。確認してみましょう。

次で最後!ポートです。

ポートとは

どのアプリケーションを使うかの判断に使われます。
データを送りたい場合、IPアドレスで宛先へデータを送信したとして、受信側はそれが何のデータなのか判断できないと処理できません。
その判断をするものがポートです。実はウェルノウンポートなどである程度領域は決められているので通常はそれに従います。
ポート番号(wiki)

自作のアプリケーションだとウェルノウンポートなどを避けて設定します。

PLCも自作アプリケーション扱いでOKです。今回の設定例だと「49152」を設定していますが特に意味はありません。

空いていたからです。

これで全て設定できました!

※「更新データ設定」の「ASCII」にチェック、「RUN中書き込みを許可する」にチェックするのも忘れずに!

ネットワークの確認

PLCのネットワーク設定ができたので、接続できるか確認しましょう。

ここでもpingを使います。PLCに設定したIPアドレスに向けて、pingコマンドを実行しましょう。

僕の例では「192.168.1.100」がIPアドレスなので、「ping 192.168.1.100」と入力します。

これで反応があればOK。準備完了です👍

MCプロトコルを理解する

ここからはPLCと通信していくので楽しくなってくるはず!

PLCとの通信は、決められたルールに従って行います。

ジャンケンだとグーはチョキに勝てます。これはお互いルールを知っているから成立します。

通信も似たようなもので、通信のルールは通信プロトコル(通信規約)と呼ばれます。

三菱電気のPLCもMCプロトコルという通信プロトコルを持っているため、それを利用して通信します。

さっそくMCプロトコルを使って通信していきたいところですが少しだけ説明。

文字列(複数の文字)を送信すると、PLCはその文字列に従って処理を行います。
つまり、PLCに文字列を送信すればいいだけです。

さっそくPLCに文字列を送信しましょう。

コマンドプロンプトを使用します。

コマンドプロンプトを開いて、「telnet」と入力して実行。

次のように切り替わります。

もし次のようになっていなければ、telnetがインストールされていません。

「telnet インストール」と検索してみてください。簡単にインストールできます。

openコマンドで、IPアドレスとポート番号を入力してPLCに接続します。

IPアドレスとポートはPLCに設定したものを入力してください。

ここからは画像がないので、説明だけになります🙇‍♂️

今後実機が触れる環境になったときに追記します。

「192.168.1.100…接続中」とメッセージが出るのでenterを押します。

telnetの仕様?で次に入力した文字がかぶさるような感じになるので、何度かenterを押すなどして入力する文字が見えるようにしましょう。

次に「send 00FF0002592000000000010010」と入力してenterを押すとY0の出力がONになります。

さらにenterを押すと画面が切り替わりPLCからのレスポンスが帰ってきます。

試した環境だと、正常に実行できた時は「8200」が返ってきました。

もちろんコマンドを変えれば入力(X)やレジスタ(D)の読み込みも可能です。

コマンドの詳細は後編の記事で説明しています。

上手くいったでしょうか?

上手くいかない場合は、PLCをSTOPにして試すなどしてみてください。

ご質問があればtwitterからどうぞ。

実はMCプロトコルには3種類あります。

1Eフレーム
 →今回使ったフレーム。シンプルだが機能が少ない。
3Eフレーム
 →多機能。
4Eフレーム
 →難しい。

注意

今回はスマホで出力を直接ONしましたが、テスト以外では危険なので避けてください。

まとめ

スマホ⇆PLC通信の前段階として、PC⇆PLCで通信し、PLCを操作することができるようになりました。

今回はtelnetを使って手作業していますが、これをプログラム化することで自動化することができます。

プログラム化はAndroidStudio(言語はJava)でします。

後編の記事では実際にスマホアプリを作ります。

この記事を書いた人

ホクト

プログラミングと嫁が好き。文系出身ながら機械メーカーで電気設計→Webがしたくて退職を決意→転職成功。電気設計で役に立つweb知識を中心に書きます。