WAGO Compact Controller(751-9301/ ファームウェアバージョン21)にDockerとNode-Redをインストールしてみた
はじめまして!
みなさんはじめまして。わたるんと申します。
今回はTwitterでWAGO Compact Controller100 にDockerとNode-Redのインストール方法をまとるよ~と呟いてみたら結構皆さんご興味を頂けているようですので初めてのnoteですがこちらにまとめていこうかと思います!
WAGO Compact ControllerはドイツWAGO社が開発した産業用の小型PLCで、PLCのプログラミング環境としてはIEC61131-3に準拠しているCoDeSys V3をエンジニアリング環境として選択しており、PLCプログラミング環境としては無償で構築することができます。
またOSにEmbedded Linuxを採用しており、Dockerコンテナを実行できる環境を構築することができ、新しい世代のオープンソースコントローラとして使うことができます。
今回はあえてCoDeSys環境は使用せず、DockerとNode-Red環境を構築して遊んでみよう!というnoteです。
※2023年11月16日追記
本記事はファームウェアバージョン21においての手法となります。ご使用のファームウェアバージョンによっては使用方法が変わる場合がありますのであらかじめご了承ください。
1.今回の使用機材
今回、DockerとNode-Redで遊ぶにあたり用意した物は以下の製品です。
設定用PC
インターネット回線
PuTTYなどのターミナルソフトウェア
2.ハードウェアの初期設定
まずはWAGO Compact Controller100(以下、CC100)の初期設定を行います。
CC100は工場出荷状態ではIPアドレスの取得方法がDHCPとなっています。別途DHCPサーバを立ててそこからアドレスを割り振っても良いのですが、DHCPサーバがない場合は筐体のRSTボタンをRUN/STOPスイッチが”STOP”の状態で7秒以上押すことで『192.168.1.17』というアドレスを強制的に割り振ることが出来るようになっています。
上記手順でIPアドレスを割り振ることが出来たら、PCのIPアドレスを『192.168.1.252』などの同じセグメントに割り当てたうえでMicrosoft Edgeなどでhttps://192.168.1.17にアクセスを行います。
正しくIPアドレスの設定ができていれば、以下のような管理画面(以下、WBM)が現れます。
ユーザ名とパスワードを求められるので、工場出荷状態の場合は
Username : admin
Password: wago
を入力します。
ログインが成功すると「パスワードを変えてね」って言われるので、Change nowをクリックの上初期パスワードを変更することを強くお勧めします。
無事ログインができるとまずはCC100の各種情報が確認できる画面が表示されます。
この画面では現状のエラー情報などのほか、Firmware Revisionの項目で動作ファームウェアバージョンの確認が可能です。特に( )の中、上記例だと21の数字が動作中のファームウェアバージョンを示します。
■WBMの中で特に重要な設定
今回、DockerとNode-Redをこのコントローラで試すうえで特に重要な設定は以下の設定となります。
Ethernetポートのブリッジ設定とIPアドレス設定
NTPクライアント(時刻同期)の設定
IP Forwardingの設定
ファイアウォールの設定
1.Ethernetポートのブリッジ設定とIPアドレス設定
現在は仮のIPアドレスを指定してWBM画面に入っていますが、この仮IPアドレスは電源を切ると削除されてしまうアドレスです。
また、CC100コントローラはEthernetポートを2ポート備えており、それぞれ別のIPアドレスを割り振ることが出来るようになっています。
今回は
ETH1ポートを『192.168.1.100』に固定(メンテナンスポート)
ETH2ポートを『DHCP』でインターネットへのアクセスポートとします。
具体的に設定は以下の画面の個所を設定します。
それぞれ、一度パラメータを変更したら"Submit"をクリックして設定を確定します。
2.NTPクライアント(時刻同期)の設定
こちらは設定を行わないと各種Dockerコンテナを取得するときに証明書関係のエラーが発生することになります。
設定はWBMの中の Configuration - Port and Services - NTP Clientの設定を行います。
具体的には以下スクリーンショットの例となりますが
Service enabledを有効に。
Time Server 1~4にNTPサーバのIPアドレスを入力。
(DNS名では入力できません。新しいFWで改修予定のようです)
上記が出来たら画面右下のSubmitを押すと確定されます。
タイムゾーンの設定はConfigration - Clock項目で行う事が可能です。
3.IP Forwardingの設定
Dockerコンテナとホスト、Dockerコンテナ間で通信が出来るようにIP Forwardingの設定を行います。設定はWBM - Networking - Routing内にあります。デフォルトでは IP Forwarding through multiple interfacesオプションは無効なのでこれを有効にします。
4.ファイアウォールの設定
昨今のサイバーセキュリティを確保する意味でもファイアウォールの設定は非常に重要です。テスト段階でうまく通信しない?インターネットにつながってない?などの疑いがあるときには無効にすることも解決手段の一つですが、基本的には有効するようにしてください。特にインターネット側からのSSHへのアクセスは非常に危険です。
WBM - Security - Firewall - General Configurationから
Global Firewall ConfigurationのFirewall enabled entirelyを有効にし、
Interface Configurationにて各々のポートで許可するプロトコルを選択します。
以下の例ではETH1番ポート(Bridge 1)はメンテナンス用に緩めに(デフォルト)、ETH2ポート(Bridge 2)はインターネットと繋がるポートのためすべての外側からのアクセスをブロックする設定にしてあります。
お疲れさまでした。ここまでの作業でCC100本体の初期設定は完了した形となります。
2.Docker、Node-Redのインストール(簡単コース)
いよいよ、ここからがCC100へのDocker及びNode-Redのインストールの手法となります。ほとんどの作業はPuTTYなどのターミナルソフトを使用し、CC100のLinuxコンソールへアクセスをして作業を進めていきます。
ターミナルソフトをお持ちでない方はPuTTYをインストールしてください。
今回は(簡単コース)という事で、Mr.Kurt Braun氏が作成されているpfc-provisioning-toolを使用してお手軽にDocker、そしてNode-Redコンテナのインストールを実行していきます。
マニュアルでのコンテナのインストールなどの方法はまた別の機会に解説をしていこうかと思います。
それではさっそく作業していきましょう!
1.PuTTYを使用してLinuxコンソールへアクセスをする
PuTTYをインストールしたらまずは接続先のIPアドレスをHost Name項目へ入力しLinuxコンソールにアクセスをします。
2.ログイン完了 - パスワード変更
Linuxコンソールにアクセスを試行するとLinuxのユーザ名とパスワードを確認されます。この場合、
login as: root
root@IPアドレス's password: wago (※文字を入力しても非表示です)
を入力することでログインができます。
ログインが完了すると”New password”と表示され新しいパスワードの決定を求められますので2回同じパスワードを入力しパスワードの変更を行ってください。
なお、Linuxにおいてユーザ名"root"は一番権限を持つアカウントになります。このパスワードが破られる=CC100のすべての機能が掌握されるという事にもなりますのでこのパスワードは強固なものを設定してください。
3.Provioning-toolの実行
無事、Linuxコンソールにアクセスすることが出来たら、以下のコマンドをコピーし、Linuxコンソール上に張り付けてEnterを押してください。
curl -L https://raw.githubusercontent.com/braunku/pfc-provisioning-tool/main/menu.sh -o menu.sh -s && sh menu.sh
PuTTYの場合、貼り付けはコンソール上でマウスの右クリックを行うと貼り付けができると思います。もし実行した結果、うまく動作しない場合はCC100が正しくインターネットにつながっていることを確認してください。Linuxコンソール上で IP: 8.8.8.8にPingを送信し、正しく返答がない場合はインターネットアクセスがない可能性があります。
ping 8.8.8.8 -c 3
4.Docker、Node-Redコンテナのインストール
Provisioning Toolが正しく実行されると以下の画面になります。
Provisioning Toolではキーボードで対応するキーを入力することでメニューが変移します。
まずはDockerをインストールしたいので ”1”を入力してEnter。
自動でDockerのインストーラファイルのダウンロードとインストールが実行されます。
インストールが終わると再びProvisioning Toolメニューが表示されます。
続いてCC100用のNode-Redコンテナをインストールします。
”6”を入力しEnter
続いて"p"を入力してEnterを押すことでNode-Redのインストールが実行されます。
ここでCertificate関係のエラーが発生した場合には、NTPが正しく動作しているかを確認して下さい。
このインストールには多少時間がかかるので、コーヒーでも飲みながら一息ついていただくことをお勧めします。笑
以下の画面のようにProvisioning Toolメニューに戻ってきたらインストール完了です。
”x”を入力後EnterでProvisioning Toolを終了させます。
Dockerも含め正しく動作しているかを確認する場合はLinuxコンソール上で
docker ps
を入力することで現在稼働中のコンテナの一覧の表示が可能です。
3.Node-Redの操作
ここまでの操作が完了するとCC100上でNode-Redが稼働しています。
Microsoft Edgeなどでアドレスバーに”http://IPアドレス:1880"を入力するとNode-Red開発環境が表示されます。※httpsではないので注意!
Node-Redが表示されたらCC100の入出力を制御するためのノードを追加します。
画面右上のメニューボタンからパレットの管理
ノードを追加タブを選んで検索ウィンドウに”cc100”を入力するとnode-red-contrib-wago-cc100ノードが現れるので”ノードを追加”でインストールを行います。
追加が完了すると画面左側のノード一覧にWAGO CC100ノードが追加されます。
あとはInjectノードを置いてpayloadを真偽にしてTRUEノード、同じ要領でFALSEを発行するノードを配置
WAGO CC100からSet-DO1を配置してつなぐ
画面右上のデプロイを実行することでNode-Red上からCC100のDOを制御できちゃいます!
ここまでできるとあとはNode-Redの世界で実際の機器を動かすことも、MQTTでデータを送信することも、OPC-UAを使う事も。。。
SQLを使ってInfluxDBコンテナなどにデータをためて表示するなどもできちゃいます!
■おわりに
長々と書きましたが、簡単コースのやり方はわかると本当に簡単です!
まずはお試しで触ってみたい、ラズパイじゃなくて産業用機器でやってみたい!という方はWAGO Compact Controller100、いかがでしょうか。
次回は別のコンテナをインストールするときなどに役に立つ、マニュアルでコンテナを扱う方法に触れていきたいと思います。
それでは今回はこのへんで。またお会いしましょう!