こちらは新しい記事シリーズでイタリアのPixsys社のWEBパネルを使用し様々な検証を行います。第3話Podman からOpenPLCのDocker イメージでコンテナを立ち上げる方法、またOpenPLC V3 Editoroの操作方法などを説明します。
さ、FAを楽しもう。

前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
Reference Link
OPENPLC?
OpenPLCは、使いやすいソフトウェアをベースにしたオープンソースのプログラマブルロジックコントローラです。ソフトウェアとハードウェアの両方で、完全に機能標準化された最初のオープンソース PLC です。OpenPLC プロジェクトは、PLC の基本ソフトウェアアーキテクチャとプログラミング言語を定義した IEC 61131-3 標準に従って作成されました。

OpenPLCプロジェクトは2つの部分から構成されています: ランタイムとエディターです。ランタイムは、最小のマイコン(Arduino互換)からクラウド上の強力なサーバーまで動作するように設計されたポータブルソフトウェアです。エディタで作成したPLCプログラムの実行を担当します。現在、OpenPLC Runtimeは以下のプラットフォームで公式にサポートされています:
- Arduino Uno / Nano / Leonardo / Micro
- Arduino Mega / Due
- Arduino Nano Every / IoT / BLE
- Arduino RB2040 Connect
- Arduino Mkr / Zero / WiFi
- Arduino Pro (Machine Control and EDGE)
- Controllino Maxi / Automation / Mega / Mini
- Productivity Open P1AM
- ESP8266 (nodemcu)
- ESP32
- Raspberry Pi 2 / 3 / 4
- PiXtend
- UniPi Industrial Platform
- Neuron PLC
- FreeWave Zumlink
- FreeWave ZumIQ
- Windows (generic target as a soft-PLC)
- Linux (generic target as a soft-PLC)
OpenPLC Editor はコンピュータ上で動作するソフトウェアで、前述のように PLC プログラムを作成するために使用します。使い方はとても簡単で、IEC 61131-3 規格で定義されている 5 つの言語をすべてサポートしています: ラダーロジック(LD)、ファンクションブロックダイアグラム(FBD)、命令リスト(IL)、構造化テキスト(ST)、シーケンシャルファンクションチャート(SFC)です。
ダウンロードツール
OpenPLC Editorは、Pythonをサポートするプラットフォームであれば、どのプラットフォームでも動作します。現在、以下の公式インストーラーがあります:
- Windows
- Linux (Debian, Ubuntu, Fedora and variants)
- macOS (currently in beta)
下記のLinkからOPENPLC のEditorをDownloadしてください。
https://autonomylogic.com/download/

インストールツール
先程DownloadしたZIPを解凍し、インストールを開始します。

少々お待ち下さい…

Done!最後はCloseをクリックしインストール画面を閉じます。

次はOpenPLC Editorを起動します。

しばらく待ちます…

Done!これでOpenPLC EditorV3が起動しました。

File→Newで新規プロジェクトを作成します。

プロジェクトのFile Directoryを設定します。

次はPOUの作成画面が表示されます。今回はまず”Cancel”をクリックします。

Done!これは初めてのOpenPLCプロジェクトが作成できました。

Podmanにランタイムをインストールする
次はOpenPLC RuntimeコンテナをPodmanに立ち上げます。
Docker hub上で色々なOpenPLCコンテナがあります、例えば下記のもの:
https://hub.docker.com/r/tuttas/openplc_v3

ですが、このコンテナを実際自分のハードウェア上で立ち上げると、このようなエラーがきます。
{“msg”:”exec container process `/root/OpenPLC_v3/start_openplc.sh`: Exec format error”,”level”:”error”} |
---|
Exec format error は、コンテナが実行しようとしたファイルのフォーマットが現在の環境でサポートされていない場合に出るエラーです。
典型的な原因は次のようなものです:
-
アーキテクチャの不一致
例: ARM CPU (Raspberry Pi など) で x86_64 用の Docker イメージを動かそうとした。 -
シェルスクリプトの行末コードの問題
Windows で編集した start_openplc.sh に CRLF 改行が混じっている。
ここで下記のコマンドでDockerイメージのアーキテクチャを確認します。
docker inspect docker.io/tuttas/openplc_v3:latest | grep Architecture
|
---|
次は下記のコマンドで自分のデバイスのOSを確認します。uname -m が aarch64(ARM64)なので、ホストは ARM64。一方、使っているイメージは amd64。この構造不一致が原因でエラーが発生したことが分かりました。
user@wp615-a-p4:~$ uname -m
|
---|
次はDocker iohubで適切なDocker イメージを探していきましょう。例えばこちらのもの↓
https://hub.docker.com/r/fgustafsson71/openplc

次はWP615のPodman 画面で適切なDocker イメージをDownloadしましょう。

Implementation
それでは実際にプログラムを作成していきましょう。
プログラム追加
OPENPLC V3 Editorにて下図の+ボタンをクリック→Programを選択します。

POUの追加画面が表示されます。

LanguageのDrop-listからPOUの実装言語を設定します。

Done!新しいPOUが追加されました。

初めのプログラム
次はプログラムを作成しましょう。
Power Rail追加
今回のプロジェクトではラダーを使用します。設定を追加する前にPower Railを追加します。下図のボタンをクリックします。

そしてプログラムに追加したい場所をクリックします。

Power Railの設定画面が表示されます。今回はそのままOKします。

Done!Power Railが追加されました。

NO接点追加
今度はA接点を追加します。下図のICONをクリックしてください。

そしてプログラムの空きの場所にクリックします。

接点の設定画面が表示され、今回はNormal(A接点)を設定します。

Variable欄で変数名を追加し→Okで確定します。

Done!新しい接点が追加されました。

次はNO接点と先ほどのPower Railを繋がります。

Done!

コイル追加
最後はコイルを追加します。

先程と同じ操作でコイルICONをクリックし→プログラムの空き場所に追加しましょう。コイルの設定画面が表示され、今回の記事ではNormalのコイルにします。

Variable欄に変数を追加し、OKで確定します。

Done!コイルが追加されました。

次はコイルと先ほど作成した回路を繋がりましょう。

ローカル変数の定義
次はローカル変数の宣言方法を説明します。プログラムの上にある+(Add Variable)ボタンをクリックします。

Done!下図のように変数が追加され、変数名とデータ・タイプをアプリケーションに合わせて行いましょう。

タスクの割り当て
プログラムの作成が完成したら、次はそのプログラムを実行するタスクに割り当てる必要があります。そのためにRes0をクリックします。

タスクの設定画面が表示されます。

Task欄にある+ボタンで新しいTaskを追加します。

次は実行周期を追加します。Instance欄にある+ボタンをクリックします。

そしてTypeは先程追加したプログラム(今回の記事ではOB1)を選択します。

Task欄に先ほど追加したタスクを割り当てます。

シミュレーション開始
OPENPLC V3 Editorにはシミュレーション機能がついており、下記の”Start Simulation”ボタンをクリックしシミュレーションを開始します。

Done!プログラムが自動的にコンパイルされます。

デバッガ
次は変数をDebuggerに追加します。

Done!それらの変数の現在値も確認できました。

Toggle Value
変数の現在値を変更したい場合は、下図の鍵ボタンをクリックしてください。

変数値の変更画面が表示されます。

Toggle valueボタンをクリックし→OKで確定します。

Done!Test変数がTrueになりました。

Runtime プログラムFile生成
次はGenerate ProgramボタンをクリックしRuntimeにDownloadするプログラムFileを生成します。

Programの生成Directoryを設定します。

ランタイムにプログラムをアップロードする
次はOpenplc RuntimeのWeb serverにアクセスします。Openplc RuntimeのWeb Serverは以下になります:
http://IP Address:8180/
また、DefaultのUser NameとPasswordにもopenplcです。
プログラムをUploadするにはPrograms→Chooseをクリックします。

先ほどOpenplc Editorで生成したプログラムFILEを選択します。

Done!

次はUpload ProgramをクリックしプログラムをRuntimeにインストールしましょう。

そしてProgram Infoの設定画面が表示されます。

Name欄でプログラム名を入力し、Upload Programをクリックします。

しばらく待ちます…

Done!そして”Go to Dashboard”ボタンをクリックします。

PLCの起動
次は”Start PLC”ボタンをクリックしPLC Runtimeを起動します。

Done!!

エディタからのデバッグ
次はプログラムをDebugしていきましょう。下図のDebug開始ボタンをクリックします。

Debugger Remote Configuration画面が表示されます。

Ethernet-TCPを設定し、WP615のIP AddressとOpenPLC RuntimeのPortを設定し、Connectします。

Done!

ウェブサーバー経由のモニター
最後はWeb Serverから変数をMonitorしていきます。Defaultではこの画面Monitorできる変数はありません。

Location欄でアドレスを設定します。

%IX0.0と%IX0.1を設定し、またPLCプログラムを生成し、Runtimeにインストールします。

Done!Monitor画面で先ほどLocation設定した変数をMonitorできました!

