(参照元 URL)
Getting Started with Opta™ | Arduino Documentation | Arduino Documentation
Opta™を始めるにあたって
Opta™を使い始め、その機能の一端を知ることができます。
AUTHOR : Benjamin Dannegård
LAST REVISION: / 2023/04/12 01:54
概要
Opta™は、多くの魅力的な機能を備えた堅牢なマイクロPLCソリューションです。
このチュートリアルでは、Arduino IDEを使用してOpta™をセットアップし、その基本的な機能を使用する方法を説明する予定です。
デバイス上のLEDをプログラムする方法、プログラム可能なボタンを使用する方法、および入力と出力を制御する方法を示す例が含まれています。
目標
- Arduino IDEでOpta™を活用する方法をご紹介します。
- Opta™のLEDを点滅させる方法をご紹介します。
- Opta™のボタンをプログラムする方法をご紹介します。
- Opta™の入出力をテストする方法をご紹介します。
- Opta™をArduinoクラウドに接続する方法をご紹介します。
必要なハードウエアとソフトウエア
- Opta™ PLC (x1)
- USB-C®ケーブル(1本)
- Arduino IDE 1.8.10+、Arduino IDE 2.0+、またはArduino Web Editor
- DC12~24V、1Aの電源(リレーに関連するセクションを実行しない場合はオプション)(x1)
- アナログ入力(オプション、代わりにアナログ入力に関連するセクションが機能しますが、ランダムな値を読み取ります。)
使用方法
Arduino IDEによるセットアップ
最新版のArduino IDEがインストールされていることを確認します。
IDEは、ここからダウンロードできます。
Arduino IDE内にOpta™用のコアをインストールします。
ツール > ボード > ボードマネージャに移動し、ボードのマネージャセクションでOpta mbedを検索し、それをインストールします。
Arduino IDE 2.0でOpta™コアを検索する
これで、Arduino IDEを介してOpta™にスケッチをアップロードする準備が整いました。
Blink Sketchを使ったテスト
IDEとコアがインストールされたら、最初のスケッチをOpta™にアップロードすることでウォームアップしましょう。
ここでは、デバイスを動作させ、すべてが正しく設定されているかどうかをテストするために、古典的なArduinoブリンク・スケッチの修正版を使用します。
下の画像でハイライトされているOpta™の4つのSTATUS LEDを点滅させるシンプルなブリンク・スケッチを作成しましょう。
デバイス上のすべての STATUS LED は,PLC のコアで定義されています。
以下、コアで定義されたそれぞれのLEDと、製品のフロントパネルに表示されるラベルの対応関係を示します:
LED_D0:STATUS 1
LED_D1:STATUS 2
LED_D2:STATUS 3
LED_D3:STATUS 4
LED_RESET: リセットボタン上部のLED
LED_USER:ユーザーボタンの上にあるLED(Wi-Fi®/Bluetooth® Low Energy接続機能を持つOpta™でのみ使用可能です。)
ツールセクションで正しいボードとポートを選択します。
以下のスケッチをArduino IDEのスケッチ・エディターにコピーし、Opta™にアップロードしてください。
スケッチがアップロードされると、Opta™ デバイスの STATUS LED が順番に点滅しているのが見えます。
【例題(スケッチ)】
/**
Getting Started with Opta™
Name: LED_Blink_Opta
Purpose: Blink STATUS LEDs on Opta™.
@author Arduino
*/
void setup() {
pinMode(LED_D0, OUTPUT);
pinMode(LED_D1, OUTPUT);
pinMode(LED_D2, OUTPUT);
pinMode(LED_D3, OUTPUT);
}
void loop() {
digitalWrite(LED_D0, HIGH);
delay(100);
digitalWrite(LED_D0, LOW);
delay(100);
digitalWrite(LED_D1, HIGH);
delay(100);
digitalWrite(LED_D1, LOW);
delay(100);
digitalWrite(LED_D2, HIGH);
delay(100);
digitalWrite(LED_D2, LOW);
delay(100);
digitalWrite(LED_D3, HIGH);
delay(100);
digitalWrite(LED_D3, LOW);
delay(500);
}
Opta™のプログラマブルボタンを設定する
Opta™には、下の画像に示すように、USERとして識別されるプログラマブルボタンがあります。
これは、Arduino IDEを使用して、ニーズに合わせてプログラムすることができます。
スケッチを作成し、STATUS LEDの状態を変更するためのトリガーとしてボタンをプログラムしてみましょう。
ボタンはコアでBTN_USERとして定義されており、デフォルトでは「HIGH」(押されていない状態)、押されると「LOW」になります。
新しいスケッチは、ボタンが押されたときにSTATUS LEDを1つずつ点灯させ、すべての点灯が完了したらやり直します。
以下に、スケッチ全体と、単純なスイッチ(ケース)ステートメント、およびUSERボタンがデバイスのどこに配置されているかを強調した画像を示します。
【例題(スケッチ)】
/**
Getting Started with Opta™
Name: Programmable_Button_Opta
Purpose: Configures the programmable button to control STATUS LED sequence.
@author Arduino
*/
int buttonState = 0;
int counter = 0;
void setup() {
// Initialize OPTA LEDs
pinMode(LED_D0, OUTPUT);
pinMode(LED_D1, OUTPUT);
pinMode(LED_D2, OUTPUT);
pinMode(LED_D3, OUTPUT);
pinMode(BTN_USER, INPUT);
}
// The loop function runs over and over again while the device is on
void loop() {
buttonState = digitalRead(BTN_USER);
if(buttonState == LOW){
if(counter < 4){
counter++;
}
else{
counter = 0;
}
delay(100);
}
changeLights();
}
/**
Function to control STATUS LED based on the counter.
*/
void changeLights() {
switch(counter){
case 0:
digitalWrite(LED_D0, LOW);
digitalWrite(LED_D1, LOW);
digitalWrite(LED_D2, LOW);
digitalWrite(LED_D3, LOW);
break;
case 1:
digitalWrite(LED_D0, HIGH);
break;
case 2:
digitalWrite(LED_D1, HIGH);
break;
case 3:
digitalWrite(LED_D2, HIGH);
break;
case 4:
digitalWrite(LED_D3, HIGH);
break;
}
delay(100);
}
スケッチがアップロードされると、ボタンを押すたびに、シーケンスにしたがって追加のLEDが点灯することが確認できます:
相互作用 // 結果
1回目の押下 // STATUS LED 1 点灯
2回目の押下 // STATUS LED 1, 2 点灯
3回目の押下 // STATUS LED 1, 2, 3 点灯
4回目の押下 // STATUS LED 1, 2, 3, 4 点灯
5回目の押下 // STATUS LED 全消灯、カウンターリセット
Opta™の出力リレーを使う
Opta™には、250V ACで10Aの容量を持つ4つの常開型電気機械式リレー(SPST)からなる4つのリレー出力があります(抵抗性負荷を考慮)。
これらはOUTPUTSとして識別され、下の画像に示すように、Opta™の底面に配置されています。
各リレーのコイルは、以下のようにD0~D3ピンに対応しています:
出力 // ピン // エイリアス
出力1 // D0 // リレー 1
出力2 // D1 // リレー 2
出力3 // D2 // リレー 3
出力4 // D3 // リレー 4
Opta™出力コンタクトは「クリーン」コンタクトで、「非接続」シナリオではこれらは生きていないことを意味します。
このタイプの接点は、あらゆるシステムで、幅広い電圧範囲で使用することができます。
したがって、正しく機能させるためには、出力は、例えば、電源ケーブルを一方の端子に持ってきて、もう一方の端子の出口に負荷を接続することによって接続する必要があります。
こうすることで、プログラミングで設定されたロジックによって接点が閉じられると、電源信号が接点を通過し、基準負荷まで信号を伝達します。
また、”クリーン “接点は、各出力接点に異なる電源システムや負荷のタイプを運ぶことができ、異なる電圧レベルを使用する複数のデバイスや信号を制御することが可能です。
このスケッチでは、4つのリレーがすべて接点を閉じたり開いたりしており、各リレーのサイクル終了後にLEDが点灯して視覚的なフィードバックが提供されます。
リレーを作動させてこのスケッチを実行するには、適切な電源に接続して、12~24 V DCの電圧でOpta™にエネルギーを供給する必要があります。
Opta™には、電源供給用の専用端子がOpta™の上部、入力の横に配置されています。
これらの二重化は、ユーザーが電源やあらゆる共通部品を入力端子に接続するのを助けるためのものです。
<INFORMATION> これらの端子には極性があり、電源のプラス側を “+”、マイナス側を”-“に接続し、電源の極性を厳密に守ることが義務付けられています。
スケッチ全体は以下に掲載されていますので、IDEにコピーして、端末にアップロードしてください。
【例題(スケッチ)】
/**
Getting Started with Opta™
Name: Output_Relay_Opta
Purpose: Test output relays of the Opta™.
@author Arduino
*/
void setup() {
// Initialize Relays outputs
pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
// Initialize Opta LEDs
pinMode(LED_D0, OUTPUT);
pinMode(LED_D1, OUTPUT);
pinMode(LED_D2, OUTPUT);
pinMode(LED_D3, OUTPUT);
}
void loop() {
// Closes and opens the contact of relay 1 and turns on/off led 1
digitalWrite(D0, HIGH); // Sets the relay 1 on
digitalWrite(LED_D0, HIGH);
delay(1000);
digitalWrite(D0, LOW); // Sets the relay 1 off
digitalWrite(LED_D0, LOW);
delay(1000);
// Closes and opens the contact of relay 2 and turns on/off led 2
digitalWrite(D1, HIGH); // Sets the relay 2 on
digitalWrite(LED_D1, HIGH);
delay(1000);
digitalWrite(D1, LOW); // Sets the relay 2 off
digitalWrite(LED_D1, LOW);
delay(1000);
// Closes and opens the contact of relay 3 and turns on/off led 3
digitalWrite(D2, HIGH); // Sets the relay 3 on
digitalWrite(LED_D2, HIGH);
delay(1000);
digitalWrite(D2, LOW); // Sets the relay 3 off
digitalWrite(LED_D2, LOW);
delay(1000);
// Closes and opens the contact of relay 4 and turns on/off led 4
digitalWrite(D3, HIGH); // Sets the relay 4 on
digitalWrite(LED_D3, HIGH);
delay(1000);
digitalWrite(D3, LOW); // Sets the relay 4 off
digitalWrite(LED_D3, LOW);
delay(1000);
}
Opta™ PLCの入力を利用する
Opta™には8つの入力端子があり、アナログまたはデジタルとして使用するようプログラムすることができます。
Opta™の物理端子(I1~I8)のマーキングとコアでの定義の対応関係は、以下のとおりです:
端末番号 // コア内部の番号 // エイリアス
I1 // A0 // PIN_A0
I2 // A1 // PIN_A1
I3 // A2 // PIN_A2
I4 // A3 // PIN_A3
I5 // A4 // PIN_A4
I6 // A5 // PIN_A5
I7 // A6 // PIN_A6
I8 // A7 // PIN_A7
8本の入力ピンは、デジタル入力(LOWまたはHIGHの論理値)またはアナログ入力(0〜10Vの範囲)として使用することができます。
- デジタル入力として使用するには、setup()の中にArduinoコマンド pinMode(pinName, INPUT);を追加します。
- アナログ入力として使用する場合は、使用したいビット分解能を指定してanalogReadResolution();というコマンドを追加してください。
では、Opta™のアナログ入力を読み取るスケッチを試してみましょう。入力は、0~10Vの範囲で動作します。
マイコンが管理する最大電圧は3Vです。
この最大電圧は、ADCの分解能係数と組み合わせて入力電圧を計算するために重要です。
その分解能は、12ビット(4095)~16ビット(65535)の範囲内でプログラム内部で設定する。
入力から読み取った適切な電圧値を取得して表示するには、analogRead関数で読み取った値を変換し、内部分圧器で決定される0.3の再スケーリング係数を適用する必要があります。
このスケッチでは、アナログピンA0、A1、A2の入力を読み取り、その結果をシリアルモニターに表示します。
【例題(スケッチ)】
/**
Getting Started with Opta™
Name: Analog_Inputs_Opta
Purpose: Test analog pins A0, A1 and A2 as inputs on Opta™.
@author Arduino
*/
void setup() {
Serial.begin(9600);
// 65535 is the max value with 16 bits resolution set by analogReadResolution(16)
// 4095 is the max value with 12 bits resolution set by analogReadResolution(12)
analogReadResolution(12);
}
void loop() {
// Read the input on analog input I1 corresponding to A0:
int sensorValueA0 = analogRead(A0);
float voltageA0 = sensorValueA0 * (3.0 / 4095.0)/ 0.3;
// Print out the value you read from I1 to the max value for the analog inputs resolution:
Serial.print(“I1 value: “);
Serial.print(sensorValueA0);
Serial.print(” corresponding to “);
Serial.print(voltageA0, 5); // Print the voltage as a float with 5 decimal digits
Serial.println(“Volts”);
// Read the input on analog input I2 corresponding to A1:
int sensorValueA1 = analogRead(A1);
float voltageA1 = sensorValueA1 * (3.0 / 4095.0)/0.3;
Serial.print(“I2 value: “);
Serial.print(sensorValueA1);
Serial.print(” corresponding to “);
Serial.print(voltageA1, 5); // Print the voltage as a float with 5 decimal digits
Serial.println(“Volts”);
// Read the input on analog input I3 corresponding to A2:
int sensorValueA2 = analogRead(A2);
float voltageA2 = sensorValueA2 * (3.0 / 4095.0)/0.3;
Serial.print(“I3 value: “);
Serial.print(sensorValueA2);
Serial.print(” corresponding to “);
Serial.print(voltageA2, 5); // Print the voltage as a float with 5 decimal digits
Serial.println(“Volts”);
delay(1000);
}
コードをアップロードしたら、シリアルモニターを開いて、各アナログ入力で読み込まれた値を確認します。
I1、I2、I3にアナログ電圧値を持つデバイスを接続した場合、各信号の電圧またはアナログ値が表示されます。
また、アナログ入力に何も接続しなかった場合は、ピンが浮いているため、0Vを中心に値が振動しているのが確認できます。
出力値を見ると、最大値が10Vに達したとき、対応する数値が12ビット分解能の最大値であるはずの4095になっていないことにお気づきでしょうか。
これは、マイクロコントローラの整合性を保つために、入力に印加される最大電圧レベルに対して予防的なマージンが取られているためです。
Opta™をクラウドに接続する
Opta™をArduino Cloudで使用することが可能です。
Opta™をクラウドに設定するには、Arduinoクラウドにアクセスしてください。
クラウドの始め方については、クラウドの始め方チュートリアルをご覧ください。
Arduino Cloudに関するその他の有用なチュートリアルは、その機能を拡張するために、ここで見つけることができます。
結論
このチュートリアルでは、Opta™デバイスの基本を説明しました。
これで、PLC の LED をプログラムする方法、ユーザープログラム可能なボタンを使用して追加のモードや機能を作成する方法、リレーをプログラムする方法、およびデジタルとアナログ入力を読み取る方法がわかりました。
Opta™をArduinoクラウドに追加接続することで、Opta™をオンラインでプログラムし、あらゆるデバイスからアクセスできるHMIインターフェースを作成し、さらに専門的な暗号化セキュリティを使用してOTAで更新することができます。
次のステップへ
Opta™の基本がわかったところで、これらの機能をデバイスの他の機能と組み合わせるのも良いアイデアかもしれません。
例えば、ソリューションに接続性を追加したい場合、Opta™の接続性を始めるチュートリアルをご覧ください。