オープンソースのPLCプログラム作成ソフトウェアのOpenPLC Editorで作成したプログラムを実行するハードウェアと通信してリアルタイムにラダー図や変数の状態をモニタ出来るライブリモートデバッグ機能(英語名:Live debug remote PLC)を使用してみたので紹介します。
初めに
以前、フリーのPLCプログラム作成ソフトウェアであるOpenPLC Editorで作成したプログラムをRaspberry Pi Pico Wで動作させてLEDのON・OFFを行う実験を行った記事を紹介しました。(OpenPLCをRaspberry Pi Pico Wで動作させる記事はこちら)
前回の記事では、ラダー図言語を使用してプログラムを作成して、デバッグはシミュレーション機能を使用して行いました。
OpenPLC Editorには、ターゲットと通信接続してリアルタイムにラダー図や変数等の状態モニタが出来るライブリモートデバッグ機能(Live debug remote PLC)があります。この使用方法に関して紹介します。
OpenPLCのRaspberry Pi Pico W対応
今回の実験ではOpenPLCを動作させるハードウェアとしてRaspberry Pi Pico Wを使用しました。図1にRaspberry Pi Pico Wの概要を示します。
Raspberry Pi Pico Wに関してOpenPLCはデフォルトで表1の様にI/Oが対応しています。ロケーションの欄に書いてある%IX0.0等はI/Oに直接アクセスするための直接表現変数です。OpenPLC Editorでは入出力変数の定義画面で、I/Oを直接操作する変数を定義する場合にLocation欄に、この表記で記載します。
直接表現変数は「%」で始まり、次にI(入力)、Q(出力)で、「X」以降はビットアドレス、「W」以降はワードアドレス(16bit)を表します。

OpenPLCのI/O | Raspberry Pi Pico WのI/O | ロケーション |
入力I/O | GP6, GP7, GP8, GP9, GP10, GP11, GP12, GP13 | %IX0.0~%IX0.7 |
出力I/O | GP14, GP15, GP16, GP17, GP18, GP19,GP20, GP21 | %QX0.0~%QX0.7 |
アナログ入力 | GP26, GP27, GP28 | %IW0~%IW2 |
アナログ出力 | GP4, GP5 | %QW0~%QW1 |
実験回路
今回の実験回路では、2個のスイッチをRaspberry Pi Pico WのI/OのGP6とGP7に接続、3個のLEDをGP18~GP20に接続しました。
一般にFA機器の制御ではDC24Vで動作するセンサやアクチュエータが使用されますが、今回はOpenPLCの動作実験と言うことで、Raspberry Pi Pico WのDC3.3VのI/Oに直接スイッチとLEDを接続しました。
図2に回路図、図3に実験装置の外観を示します。


ライブリモートデバッグ機能(Live debug remote PLC)使用手順
下図の様なラダー図言語プログラムをRaspberry Pi Pico Wに転送して動作させて、ライブリモートデバッグを行う手順を示します。尚、下図プログラムの作成手順に関しては以前の記事を参照して下さい。(OpenPLCをRaspberry Pi Pico Wで動作させる記事はこちら)
このプログラムの動作は、押し釦スイッチSW1を押すと発光ダイオードLED1が点灯して、SW2を押すとLDE1が消灯します。

手順
1.ラダー図言語プログラムを以下の様に作成します。(作成手順はこちらのOpenPLCをRaspberry Pi Pico Wで動作させる記事を参照して下さい)

2.OpenPLC Editorを動作させているパソコンとRaspberry Pi Pico WをUSEケーブルで接続します。画面上のツールボックスのをクリックするとPLCへのプログラム転送画面(Transfer program to PLC 画面)が表示されます。

3.下記PLCへのプログラム転送画面が表示されたら、「Board Type」にRaspberry Pico Wを選定して、「COM Port」にRaspberry Pi Pico WとUSBシリアル通信接続をするCOMポートを選択します。(Board Typeの設定とCOM Portの設定の詳細はこちらのOpenPLCをRaspberry Pi Pico Wで動作させる記事を参照して下さい)

4.「Communications」をクリックします。

5.以下画面が表示されたら、「Enable Modbus RTU (Serial)」にチェックを入ます。これはライブリモートデバッグでは通信にModbusと言う通信プロトコルを使用し、Raspberry Pi Pico WとUSBシリアルポートで接続するためです。
また、「Slave ID」の値(ここでは1)を覚えておきます。この値は、ライブリモートデバッグを実施する時に使用します。
最後に「Save Changes」ボタンをクリックします。

6.Transferをクリックします。

7.「Transfer to PLC」ボタンをクリックすると、プログラムが対象となるハードウェア(Pico W)の言語にコンパイルされて、転送が開始されます。

8.PLC (Pico W)へのプログラム転送が終了すると、「Done!」が表示されます。プログラムの転送が終了するとPLC (Pico W)はプログラムを実行します。
「Done!」が表示されたら、この画面を閉じます。

9.画面上のツールボックスのをクリックすると、ライブリモートデバッグ(Live debug remote PLC)の設定画面が表示されます。

10.下記画面が表示されたら、「Protocol:」にSerial-RTUを選択して、「Slave ID:」をTransfer program to PLC画面のCommunicationsの画面(5参照)で確認した値(ここでは1)を設定し、「Port:」にRaspberry Pi Pico Wと接続するUSBシリアルポートのCOM番号を選択して「Connectボタン」をクリックするとターゲットとの接続が開始されます。

11.ライブリモートデバッグが開始されると画面下側の欄に「PLC started」と表示されます。

12.左欄の「Config0.Res0.instance0」と表示されている右のをクリックすると、ラダー図のリアルタイムのモニタが開始されます。
また、それぞれSW1(BOOL)、SW2(BOOL)、LED1(BOOL)と表示されている右のをクリックすると、変数SW1、SW2、LED1の状態が画面右側の欄に表示されます。

13.下図に示すようにラダー図の記号やラインの色が変わります。緑の記号やラインはTrueの部分、黒の記号やラインはFalseの部分です。
また、画面右側の欄にSW1、SW2、LED1変数の状態が表示されます。

14.実験装置のSW1を押した時の画面を以下に示します。SW1がTrueとなり、LED1がTrueとなります。ラダー図上でTrue部分が緑色となります。

15.実験装置のSW1から指を離した時の画面を以下に示します。SW1はFalseになりますが、LED1のa接点がTrueのためLED1のコイルはTrueのままです。(自己保持状態)

16.実験装置のSW2を押した画面を以下に示します。SW2変数はTrueになりますが、ラダー図のSW2がb接点のため、SW2のb接点記号はFalseとなりLED1がFalseとなります。

17.実験装置のSW2から指を離した画面を以下に示します。ラダー図のSW2のb接点記号の部分はTrueとなっていますが、その左側の部分がFalseなのでLED1はFalseとなっています。

18.以上の様にラダー図の状況や変数の状況がリアルタイムに見ることができます。
ライブリモートデバッグ機能(Live debug remote PLC)の終了は。画面上部のツールボックスのをクリックします。

動作動画
ライブリモートデバッグ機能を使用した様子を撮影した動画を以下に示します。
最後に
OpenPLC Editorのライブリモートデバッグ機能を使用することによって、ラダー図の各部の状態をリアルタイムに見ることが出来ます。現状では市販のPLC程の機能は有りませんが実機上でのプログラム実行状態を見ることが出来るので非常にデバッグに役に立つと思います。