【備忘録】Arduino PLC IDEによるプログラミングの紹介

Programming Introduction With Arduino PLC IDE
(Arduino PLC IDEによるプログラミングの紹介)

Programming Introduction With Arduino PLC IDE | Arduino Documentation | Arduino Documentation

Arduino PLC IDE 上で IEC-61131-3 の全言語を使用したプログラムを作成可能
AUTHOR:Pablo Marquínez

はじめに

IEC-61131-3規格では、プログラム作成に役立つ5つのプログラミング言語が集められており、それらを組み合わせて関数やファンクションブロックにグループ化し、プログラム全体を作ることができます。
標準言語に加えて、Arduinoスケッチを統合し、共有変数によって他の言語と相互作用させることができます。
このような開発は、Arduino PLC IDEを使用して行うことができます。
このチュートリアルでは、Arduinoのスケッチを参考にしながら、それらのすべてに慣れていきます。

目標

このチュートリアルの目的は、次のとおりです。

  • PLC IDE 環境の機能に精通する
  • リファレンススケッチを IEC-61131-3 のすべての言語 (LD、SFC、FBD、ST、IL) を使用したプログラムに変換する。

必要なハードウエアとソフトウエア

Arduino® Portentaマシンコントロール

共通機能

変数の追加

2種類の変数があります。

  • グローバル変数: 5つのプログラム全てがアクセス可能
  • ローカル変数: 1つのプログラムだけがアクセスできる。

グローバル変数

Project タブ内をクリックし、Global_vars セクションをクリックすると、プロジェクト上のグローバル変数の全リストを見ることができる表があります。

新しいものを追加するには、テーブルを右クリックし、insert ボタンをクリックします。

グローバル変数の追加

デフォルトの設定で新しい行が追加されます。
各フィールドをダブルクリックして、必要に応じて変更することができます。

グローバル変数表

新しい変数を設定した後、すべての言語のプログラムからその変数にアクセスできるようになります。
Global_vars セクションに、すべてのglboal変数のリストが表示されます。

プログラム内部でグローバル変数を使用する

ローカル変数

Project タブを開き、プログラムをダブルクリックして選択すると、トップパネルに Local variables (ローカル変数) のテーブルが表示されます。

デフォルトのラダーダイアグラムプログラム

先に説明したのと同じ手順で、表を右クリックして、insert ボタンを押します。

ローカル変数テーブルに新しいローカル変数を追加する

新しい変数がデフォルト設定で追加されるので、それぞれをダブルクリックして必要な設定を変更します。

ブロックの追加

ブロックは、ライブラリやPLC IDEから利用できる機能または関数です。

ANDゲート、ADD関数など、タスクを実行するのに役立ちます。
プログラムにブロックを追加するには(LD、SFC、FBDでのみ可能)、右側の “ライブラリツリー “というウィンドウからブロックをドラッグ&ドロップします。

ライブラリツリーウィンドウ、ブロックのドラッグ&ドロップ

キャンバスにドラッグ&ドロップすると、カスタマイズ可能な入出力ピンを持つブロックが生成されます。
ほとんどの場合、ブロックを右クリックして、デフォルトよりも多くのピンが必要な場合に追加することができます。

タスクのアタッチメント

プログラムを作成したら、ランタイム内のタスクにアタッチすることができます。

タスクは4つあります。

  • Init: 初期化実行時に、割り当てられたプログラムが1回だけ実行されます。
  • Fast: アタッチしたプログラムを実行するループ、デフォルトでは10ms毎(変更可能)
  • Slow: 付属のプログラムを実行するループ、100ms毎、変更不可
  • Background: 500ms 毎に付属のプログラムを実行するループ、変更不可

タスクにプログラムを割り当てるには、プログラムをタスクにドラッグ&ドロップすることで簡単に行えます。

プログラムをタスクにドラッグ&ドロップ

デフォルトではプログラムはタスクに添付されていますが、右クリックから”remove program” オプションを押すと削除できます。 main Fast

タスクを右クリックし、ポップアップウィンドウに表示されるリストからプログラムを選択することで、同じように新しいプログラムを割り当てられます。 Add Program

タスクを設定したい場合、タスクを右クリックします。
例えば、タスクのサイクルタイムを変更することができるでしょう。 Task configration

<重要> 実行順序は上から下へ、各タスク内で示された順序になります。


変数の監視

プログラムが正しく実行され、カウントされていることを確認するために、変数の値をリアルタイムで見ることができる watch 機能を使用します。

これを行うには、View > Tool windows > Watchと進むと、新しいツールウィンドウが表示されるはずです。

Tool window の中では、変数をドラッグ&ドロップしたり、Insert new item ボタンをクリックして特定の変数を追加することができます。

変数の監視

サンプルプログラム

このプログラムは、時間の経過とともにカウントをXずつ増やしていく、単純なカウンターになります。

Arduinoスケッチ

1 int count = 0;
2 const int addition = 1;
3
4 void setup() {}
5 void loop() {
6     count += addition;
7 }

IEC-61131-3 言語

新しいプログラムを作成するには、プロジェクトタブを開き、ツールバーの Project > New Object > New Program  を選択し、プログラムの名前を設定し言語を選択します。

プロジェクトのプルダウンメニューから新規プログラムを作成

新規番組作成時のポップアップの設定

<重要>
注意:大文字と小文字を区別してプログラムを作成するかどうかは、プロジェクトの設定で選択することができますが、ここではtrueに設定しています。
チェックボックス をクリックすると、変更することができます。 Project > Options… > Code generationCase sensitive

5つの言語が利用可能です。

  • 構造化テキスト(ST)
  • 命令リスト(IL)
  • ラダーダイアグラム(LD)
  • シーケンシャルファンクションチャート(SFC)
  • ファンクションブロックダイアグラム(FBD)

構造化テキスト

この言語はC言語と似ていて、変数に値を代入するコードは次のようになります。

1 count := count + addition;

構造化テキストカウンタープログラム

命令リスト

このプログラミング言語は、アセンブリプログラミングに似ています。

カウンタスクリプトのコードは

LD count
2 ADD addition
3 ST count

命令リスト カウンタープログラム

ラダーダイアグラム

このプログラミング環境は線とブロックに基づいています。
線は左から右への経路を持ち、右に向かって進むためには間にあるブロックをすべて通過する必要があります。
異なるブロック(ANDゲートなど)をすべて通過すると、右側の括弧記号(コイル)で終わり、設定した動作(例えば常開(NO)にリラッチする)をトリガーすることができます。

カウンタプログラムはこのようになります。

ラダーダイアグラム カウンタープログラム

ラダーダイアグラムを作成している動画がこちらです。

 

シーケンシャルファンクションチャート

この言語は、フローチャートと同じように、ある作業を行うブロックを用意し、その結果をチェックし、その後、選択肢を流し続けるという方法でスクリプトを作成する。

SFC言語は、直接、PLCに指令を送ることができません。つまりPLCの出力を直接、指令で OFF にすることはできないため、それに代わる action を作成する必要があります。

アクション

アクションとは、作業を行う他の言語(例えば構造化テキストなど)のスクリプトで、チャートに応じてトリガーされます。

プロジェクトツリー上でSFCスクリプトを右クリックし、”New action” ボタンをクリックすると、アクションが作成されます。

新しいアクションの作成

SFCプログラム

キャンバス内やトップバーを右クリックするとブロックが用意されており、ドラッグ&ドロップで移動することができます。

SFCのプログラムは1つのルールがあり、それは次のような順になります。
Step0 > Transition0 > Stepn > Transitionn > … > Jump

Step とは、やるべき job で Transition とは、その結果です。

Jump は、チャートの他の Step へのリンクです。
ループを作るためには、”init” ステップを指すジャンプを使用する必要があります。

カウンタプログラムは、次の図のようになるはずです。
“count” ステップの中のアクションに注目してください:
小さな “count” テキストが見えますが、これは構造化テキストで行われたプログラムのアクション名で、コードは構造化テキストのセクションで示したものと同じです。

シーケンシャルファンクションチャート カウンタープログラム

シーケンシャルファンクションチャートを作成している動画がこちらです。

ファンクショナル・ブロック・ダイアグラム

SFCプログラミングと似ていますが、プログラム上に順路はなく必要な作業を行うブロックを追加していきます。

例えば、Add ブロックを追加すると、Add機能を毎サイクル実行することになる。

カウンターのプログラムはこのようになります。

ファンクショナル・ブロック・ダイアグラム

ファンクショナル・ブロック・ダイアグラムを作成している動画がこちらです。

 

<重要>
前のプログラムでは、ローカル変数を使用しました。
監視するプログラムの変数を選択することを忘れないでください、忘れてしまうとデータは表示されません。

 

結論

あなたは

  • 各言語で簡単なカウンターを作成しました
  • 運転時における変数の値を監視する方法について学びました
  • タスクにプログラムをアタッチしました
  • ブロックを使いました

この基本的な知識を使って、より高度なプログラムを作成し、それぞれのプログラムに慣れることをお勧めします。
自由にさまざまなブロックを試し、それらのコードを検査し、さまざまなパネルを操作してください。

PAGE TOP