PLC(シーケンサ)をパソコン・スマートフォンから(有線・無線の両方で)遠隔操作・監視してみました。汎用的なラズベリーパイ(raspberry pi)をPLC化していますので誰でも同様に試すことができます。
PLC(シーケンサ)のスイッチをGUI(画面上)で操作できるようにする
今回の遠隔操作・監視をする準備として、今までは直接手でスイッチを押していた箇所をパソコン・スマートフォンの画面上で遠隔操作できるようにします。
CODESYSのVisualizationの機能を使う
ラズベリーパイ(raspberry pi)をPLC(シーケンサ)化するソフトウェアPLC「CODESYS」で下記のように入出力IFを画面上に作成できる「Visualization」機能があるので使っていきます。
ソフトウェアPLC「CODESYS」のダウンロード・インストール方法に関しては下記記事を参考ください。
ラダープログラムが完成したらデバイスの項目で「Application」を右クリック⇒「オブジェクトの追加」⇒「ビジュアリゼーション」を選択します
「オブジェクトの作成」をするか聞かれるのでチェックを入れて「追加」を選択すれば「Visualization」のオブジェクトを追加できるようになります。
その後はツールボックスから使いたいものをドラッグ&ドロップして選んでいきます。
今回筆者が使う画面のツールとしては下記の「(入力SW回数確認)カウンタ」「(出力確認用)LED」「入力SW」「リセットSW」を置いていきました。(※各変数の内容に関してはプログラムの箇所で説明します)
各ツールを置きましたら、使う変数[X001,X002,Y001,Y002]を設定していきます。変数箇所はツールによって設定する箇所が異なるため今回は筆者の一例を紹介しときます。
・スイッチはツールボックスの「基本」⇒「四角形」から作成して、タップの変数で設定しました。
・(出力確認用)LEDはツールボックスの「ランプ/スイッチ/ビットマップ」⇒「ランプ」を選択して、位置の箇所に変数を設定しています
・(入力SW回数確認)カウンタはツールボックスの「測定制御」⇒「バー表示」を選び、変数を値の箇所に設定しています
PLC(シーケンサ)を遠隔操作・監視するラダープログラム
今回のプログラムはPLC(シーケンサ)で多く使われているラダープログラムで作成していきます。
下記記事で作成した「ラッチ(自己保持)回路 リセット付き」を改造します
今回使うプログラムは下記となっています。前回の最後の出力箇所から分岐させて改造います。変数としては[X001,X002,Y001]の使い方は同じです。
改造内容としてはラダーのツールボックスからCTU(アップカウンタ)を置いて周辺を整えました。下記2点を機能として追加しています
・入力SW⇒リセットSW(M001の立ち上がり)を繰り返し回数を[Y002]で監視できるようにした点
・入力SW⇒リセットSW(M001の立ち上がり)を10回繰り返したら[Y003]を出力した点
ラズベリーパイの入出力GPIO設定
ラズベリーパイのGPIOの設定方法については下記記事の内容と同じですので詳細は省略します。前回内容に「Y003」のGPIO18の出力設定を追加しただけです。
ラズベリーパイのGPIO入力設定とVisualizationの入力設定
筆者の設定方法では「ラズベリーパイのGPIO入力設定」と「Visualizationのツールの入力設定」が被っていた場合はラズベリーパイ側が優先されるようです。(実際のスイッチの入力が効いて画面上のスイッチは無効という意味)
そのため今回は「遠隔監視のみする場合」はラズベリーパイ側のGPIOの設定を残して、「完全に遠隔操作・監視する場合」はラズベリーパイの設定を消す形で対応します。
今回のデバッグ環境
今回実際に動かしたデバッグ環境の全体写真は下記となっています。24VリレーのON/OFF動作を遠隔操作・監視していきます。
24Vリレーを動かすためにフォトカプラとトランジスタ2SC1815-GRで対応しています。詳細については下記記事で記載しましたので必要な方は確認お願いします
上記記事と今回のデバッグ環境の差分に関しては「入力SW⇒リセットSWを10回繰り返したらLEDを点灯させる回路」を追加させています
また24V電源に関しては下記記事で使ったものを流用しています
今回の回路図
今回の回路図としては下記となっています。フォトカプラで24Vリレーを動かした記事に先ほど説明したGPIO4からのLED回路を追加した形です。
デバッグ内容の実例・動作の流れ
デバッグ内容の動作の流れを説明していきます
入力SW1を押した時…24VリレーON
入力SWを押すとラズベリーパイからGPIO出力されて、24VリレーをONしにいきます。動作が分かるように赤色LEDを付けています
Visualizationの画面上では[Y001]が出力されていることが分かり、[Y002]のカウンタがアップします。
リセットSW2を押した時…24VリレーOFF
リセットSW2を押すとラズベリーパイからのGPIOがOFFされてリレーがOFFされます
Visualizationの画面上では[X002]リセットSWが押されて、[Y001]出力がOFFされていることが分かります
10回リレーON/OFFを繰り返した時…黄色LEDがON
10回入力SW⇒リセットSWを繰り返すと[Y003]が出力されて黄色LEDがONします。
Visualizationの画面上では[Y002]のカウンタが10回を超えていることが視覚的にわかります。
プログラム動作中の「Visualization」の動画を確認してみる
正直今までもプログラム動作中のラダーの様子は監視できていましたので、特に新しいことではありませんが「Visualization」の画面で動画で確認してみます。
3秒~ 「入力SWを押す」⇒「リセットSWを押す」を繰り返す。(左上のカウンタがアップしてく)
28秒~ 10回_24VリレーをON/OFFすると黄色のLEDがONする
カウンタが上がっていき、視覚的に24VリレーON/OFF回数が確認(監視)できました。
スマートフォン(無線)でPLC(シーケンサ)を操作する準備
随分前置きが長くなりましたがスマートフォン(無線)でPLC(シーケンサ)を操作できるように準備していきます。
今まではPCとラズベリーパイを有線LANで接続していましたが無線LANでも接続できて、スマートフォンでも遠隔操作・監視できることを確認していきます。
始めに…筆者はAndroidのテザリング環境で実施しました
今回はスマートフォンでCODESYSの「Visualization」の画面を出してPLC(シーケンサ)を遠隔操作・監視していきます。
やり方は簡単に書くと下記のイメージです。
①「CODESYSが入っているPC」と「ラズベリーパイ」の無線IPアドレスを同一グループにする。
②「スマートフォンのWebブラウザ」で「ラズベリーパイ」のIPアドレス内にある「Visualization」の画面に入る
上記手順ですので筆者も最初は「家庭のルータ内の環境でできるやろ!」とやってみたのですが上手く行かず、「Androidのテザリング環境」でなんとか実施できたという経緯があります。
上手く接続できなかった原因はルータ内の細かい設定などに影響してそうですが、もし「家庭に置いてあるルータでも出来たよ!」という方がいればコツなどコメント欄に書き込んでもらえれば幸いです。
ラズベリーパイの無線IPアドレスを確認する
まずはラズベリーパイ(raspberry pi)の無線のIPアドレスを確認します。コンソール上で「ifconfig」と入力してIPアドレスを確認します。(筆者はTereterm上で確認しました)
wlan0の箇所ですね、筆者のテザリング環境ではラズベリーパイのIPアドレスが「192.168.43.107」であることを確認できました。
PCの無線IPアドレスも一応確認しておく
あと特に確認必要ないかもしれませんが、筆者の環境ではCODESYSの入ったPC側のIPアドレスは「192.168.43.197」でした。
「Visualization」のWebページの設定
筆者は基本デフォルト設定で対応しました。「デバイス」⇒「Webビジュアリゼーション」の項目から設定できます。
ネットワークスキャンで無線LANでの設定
ネットワークスキャンで今までは有線の方が自動的に設定されていましたが、ラズベリーパイの無線LANのIPアドレスを書き込んであげます。筆者の場合では先ほど調べた「192.168.43.107」に設定しました
ラズベリーパイの入力GPIOの設定を消しておく
途中でも記載しましたがラズベリーパイの入力GPIOの設定を消しておきます。(実際の入力スイッチが優先されてしまうため)
スマートフォン(無線)でPLC(シーケンサ)を遠隔操作・監視する
ビルドも完了してログインした後にスマートフォンのWebブラウザ(Chrome,Safari等)で「Visualization」の画面に入ります。
筆者の場合は「192.168.43.107:8080/webvisu.htm」でした。(各個人の環境でIPアドレス,ポート等が異なってくると思います)
あとは「Visualization」で作ったスイッチをタップしていけば24VリレーをON/OFFできました。しっかりカウントアップもしていきます
その際の動画は下記です。11秒辺りからスマートフォンで画面上のスイッチをタップして24VリレーのON/OFFを切り替えています。右下の画面はPC上で監視していた画面です。
やはり「実際の動作」「スマートフォンでの動作」「PC画面上での動作」には少しタイムラグがありました。(「Visualization」の設定で更新周期を短くすれば改善できたかもしれません)
まとめ・感想
如何でしたでしょうか。スマートフォン(無線)でPLC(シーケンサ)を遠隔操作・監視してIOTっぽいことができました。(※もちろんPC(無線)でも同様に遠隔操作・監視可能です)
よろしければ皆様もぜひトライしてみてください
<<20200209追記>>
OPC UAという産業用の通信プロトコルを利用して、PLCのデータを無線で見える化してみました。
よろしければご覧ください。(リンク先はこちらから)
次の記事ではマルチコア対応のラズベリーパイのパッケージがCODESYSからリリースされましたのでスキャンタイムが短縮できないか試してみました。よろしければご覧ください。
コメント