2つの機能は、確認する対象と画面に表示する値が異なります。
| 確認する内容 | 使用する機能 | 画面に表示される値 |
|---|---|---|
Arduino CodeのSerial.print()出力とPCから送ったデータ | シリアルモニター | 文字またはHEXバイト |
| ラダーロジックの接点・コイル・メモリ・導通状態 | ラダーモニタリング | ON/OFF、現在値、導通色 |
シリアルモニターは、Arduino Codeがボードのシリアルポートで送受信するデータを確認するときに使用します。ラダーモニタリングは、ボードで実行中のラダーロジックの内部状態をラダー画面で確認するときに使用します。
Serial.begin()と同じ通信速度を選択します。Serial.begin()と同じbaudを選択します。受信エンコーディングはUTF-8、EUC-KR(韓国語)、Shift-JIS(日本語)、Latin-1 (ISO-8859-1)、Windows-1252に対応し、初期値はUTF-8です。エンコーディングはASCII表示の受信データだけに適用され、HEX表示と送信データには適用されません。
接続中に通信速度を変更しても、現在の接続にはすぐ反映されません。切断を押してから再接続してください。Serial.begin()と通信速度が異なる場合は、受信文字が崩れたりデータが表示されなかったりします。
次のコードは1秒ごとにカウンター値を送信し、PCからRまたはrを受信すると値を0に戻します。
unsigned long previousMillis = 0; int count = 0; void setup() { Serial.begin(9600); // シリアルモニターも9600 baudに設定します。 Serial.println("Counter ready. Send R to reset."); } void loop() { if (millis() - previousMillis >= 1000) { // 1秒ごとに値を送信します。 previousMillis = millis(); count++; Serial.print("count = "); Serial.println(count); } if (Serial.available() > 0) { // PCから受信したデータがあるときに読み取ります。 char received = Serial.read(); if (received == 'R' || received == 'r') { count = 0; Serial.println("-- reset --"); } } }
コードをビルドして書き込み、シリアルモニターを9600 baudで接続すると、count = 1、count = 2が1秒間隔で表示されます。入力欄にRを入力してEnterまたは送信を押すと、> Rとボードの応答– reset –を確認できます。
ASCII表示では、選択したエンコーディングで受信バイトを文字として表示します。HEX表示では、同じデータを41 42 0D 0Aのように2桁の大文字バイトと空白で表示します。
表示モードを切り替えると、以前の受信内容が消去され、新しいモードでデータの表示を開始します。ボタンには現在のモードではなく、切り替え先のモードが表示されます。
入力欄の横で、送信データの末尾に追加する行末文字を選択します。
| 選択 | 追加されるバイト | 使用条件 |
|---|---|---|
| None(LE なし) | なし | 入力したデータだけを送信 |
| 改行 (LF) | 0A | \nを待つコード |
| キャリッジリターン (CR) | 0D | \rを待つコード |
| 改行 + キャリッジリターン (CRLF) | 0D 0A | \r\nを待つコード |
ASCII表示で入力した文字は常にUTF-8で送信されます。HEX表示では52または52 0D 0Aのようにrawバイトを直接入力できます。空白なしの520D0Aも使用できます。16進数以外の文字がある場合や桁数が奇数の場合は送信されません。
コピーは現在の受信バッファ全体をクリップボードへコピーします。消去は接続を維持したまま画面の受信内容を空にします。
ラダーモニタリングデータは、プロジェクトで選択したボード通信チャンネルから送信されます。最初にチャンネルを設定し、プロジェクトをもう一度ビルドして書き込む必要があります。
選択中のボードで使用できるチャンネルだけが一覧に表示されます。使用しないを選択すると、ファームウェアはラダーモニタリングデータを生成しません。Serial、Serial1、Serial2のうち実際に表示される項目は、選択したボードの通信チャンネル定義に従います。MPINO-8A4R(T)-Sでは使用しない、Serial、Serial1が表示されます。
チャンネルを変更して書き込む前にモニタリングを開始すると、書き込みの案内が表示されます。アップロードを選択し、変更したチャンネルをボードへ反映してください。
ポート競合の注意: 選択したチャンネルをプロジェクトの通信設定またはArduino Codeでも使用すると、モニタリングデータとユーザー通信が競合します。競合の案内が表示された場合は、モニタリング専用チャンネルを選択するか、同じチャンネルを使用する通信設定とコードを変更してください。
ポート設定と書き込みが完了したら、次のいずれかの方法でラダーモニタリングを開始または終了します。
Ctrl + Mショートカットはファイル → 環境設定 → ショートカットで変更できます。
モニタリング使用ポートが使用しないの場合は、モニタリングポートの設定が必要という案内が表示されます。環境設定を開くを選択し、4番の設定を完了してください。
PCシリアルポートを選択していない場合は、ステータスバーでポートを選択してから再度開始してください。モニタリングを開始すると、ボタンと右クリックメニューがON状態に変わります。終了すると接続を切断し、ラダーのリアルタイム表示を消去します。
モニタリングを開始すると、ラダー画面で導通状態とセルの現在値を同時に確認できます。
| セルの種類 | 画面で確認する内容 |
|---|---|
| ビット接点・コイル | 黄色の導通表示とON/OFF状態 |
| ボックス関数 | ボックス内に表示される対象アドレスの現在値 |
| ワードメモリ | セルの下に表示される現在値 |
| タイマー・カウンター接点 | 完了条件の導通状態 |
| 比較接点 | 比較する両方の現在値と比較結果 |
| 空のセルに入力したアドレス | ビットアドレスのON/OFFまたは数値アドレスの現在値 |
ボードが停止した場合や接続が切れた場合は、最後に受信した値と導通表示が画面に残ることがあります。この状態では、時間によって変化する@F特殊ビットの点滅が停止します。値が変化しない場合は、最初にモニタリングの接続状態を確認してください。
ラダーセルを右クリックし、リアルタイム数値の表示形式を選択します。現在選択中の形式にはチェックが表示されます。
| 表示形式 | 読み方 |
|---|---|
| Signed Decimal | 現在のデータ型に応じた符号付き10進数で表示 |
| Unsigned Decimal | 整数のビットパターンを符号なし10進数として表示 |
| Hexdecimal | ビットパターンを0xから始まる16進数で表示 |
| Binary | ビットパターンを0bから始まる2進数で表示 |
| Floating Point | 16ビット整数はhalf-precision、32ビット整数はsingle-precision実数として解釈して表示 |
上の画像は1つの16ビット値を比較した例です。32ビット値はHexdecimalでは8桁、Binaryでは32桁で表示され、Rメモリは保存されている32ビット実数を基準に表示されます。
表示形式は1つのセルやプロジェクトだけに適用される設定ではありません。このPCのすべてのプロジェクトに共通して適用され、プログラムを再起動しても維持されます。初期値はSigned Decimalです。
タイマープリセットをTON T0 1m10sのような時間構文で入力すると、Signed Decimalでは現在値も1m10s、43s210ms、500msのような時間単位で表示されます。プリセットを数値で入力した場合は、現在値も数値で表示されます。
Signed Decimal以外の形式を選択すると、時間構文ではなく選択した数値形式で表示されます。カウンタープリセットには時間単位を使用しません。
D0 > D1のような比較接点は、モニタリング中に5 > 3のような両辺の現在値を接点の下に表示します。Binaryでは長い値を読みやすくするため複数行で表示され、その他の形式では1行で表示されます。
シリアルモニターとラダーモニタリングは、ステータスバーで選択した1つのPCシリアルポートを共有するため、同時には接続できません。
| 現在の状態 | 実行する操作 | 結果 |
|---|---|---|
| シリアルモニター接続中 | ラダーモニタリングを開始 | シリアルモニターを切断し、115200 baudでラダーモニタリングを開始します。 |
| ラダーモニタリング中 | シリアルモニターを接続 | ラダーモニタリングを終了し、選択したbaudでシリアルモニターを接続します。 |
| ラダーモニタリング中 | データを送信 | 送信入力欄は使用できません。 |
| シリアルモニター接続中 | 書き込みを開始 | 一時的に切断し、書き込み終了後に同じポートとbaudで再接続します。 |
| ラダーモニタリング中 | 書き込みを開始 | モニタリングを一時停止し、書き込み終了後に再接続します。 |
ラダーモニタリングが115200 baudで接続されている間も、シリアルモニターで選択したbaudは維持され、通常のシリアルモニターを再接続するときに使用されます。
ボードが切断されると、通常のシリアルモニターは最大5回、自動再接続を試みます。再接続に成功すると、受信画面に自動再接続の案内が追加されます。自動再接続が終了しても接続できない場合は、ポート一覧とケーブルを確認してから手動で再接続してください。ラダーモニタリングの値が停止した場合は、自動復旧を待たずにモニタリングを一度終了してから再開してください。
書き込みを開始すると現在の接続を切断し、成功・失敗に関係なく、書き込み前に使用していたシリアルモニターまたはラダーモニタリングの接続を復元します。どちらも接続していなかった場合は、書き込み後もOFFのままです。ビルドだけを実行した場合は接続を切断しません。
ラダーモニタリング中でも、同じチャンネルを115200 baudで使用するSerial.print()出力はシリアルモニターの受信画面に表示される場合があります。ただし、ユーザーデータとモニタリングフレームが混在する可能性があるため、Arduino Codeの通信とラダーモニタリングには別々のチャンネルを使用することを推奨します。
| 症状 | 確認する項目 | 対処 |
|---|---|---|
| 接続を押しても接続できません。 | ステータスバーのポート選択と現在の接続状態 | 使用するPCシリアルポートを選び直して接続します。 |
| ポート一覧にボードがありません。 | ケーブル接続、USB認識、ポート一覧 | ケーブルを接続し直し、ポート一覧をもう一度開きます。 |
| 受信文字が崩れます。 | Serial.begin()のbaudと受信エンコーディング | 同じ通信速度を選択し、ファームウェアの文字エンコーディングに合わせます。 |
| データを受信できません。 | 接続状態、baud、Serial.print()の実行 | シリアルモニターの接続とSerial.begin()のbaudを確認します。 |
| HEX送信に失敗します。 | 16進数文字と偶数桁 | AB CD 01またはABCD01の形式で入力します。 |
| ラダーモニタリングを開始できません。 | モニタリング使用ポートとステータスバーのPCポート | ポートを設定して再度ビルド・書き込みを行い、PCポートを選択します。 |
| モニタリング中でも導通と値が表示されません。 | ポート変更後の書き込みと実際の接続チャンネル | 変更した設定で再度ビルド・書き込みを行い、接続チャンネルを確認します。 |
| 値が変化せず最後の値が残ります。 | ボードの動作とモニタリング接続 | ボード電源と通信を確認し、モニタリングを再接続します。 |
Arduino CodeのSerial.print()が表示されません。 | チャンネル、baud、ラダーモニタリングの状態 | 通常のシリアルモニターを接続するか、ラダーモニタリング中は同じチャンネルの115200 baud出力か確認します。データが競合する可能性があるため、チャンネルの共有は推奨しません。 |
| モニタリングポート競合の案内が表示されます。 | 同じチャンネルを使用する通信設定とArduino Code | モニタリング専用チャンネルを選択するか、同じチャンネルを使う設定とコードを変更します。 |