====== MPINO STUDIO 2 Phase 6・シリアル・ラダーモニタリング ====== シリアルモニターでArduino Codeの送受信データを確認し、ラダーモニタリングで接点・コイル・メモリの現在値と導通状態を確認する方法を説明します。 {{ :ja-jp_products:mpino_studio2:monitoring-overview.svg?1000 |Arduino Codeのシリアルデータとラダーロジックの状態を確認する2つのモニタリングフロー }} ===== 1. シリアル・ラダーモニタリング ===== 2つの機能は、確認する対象と画面に表示する値が異なります。 ^ 確認する内容 ^ 使用する機能 ^ 画面に表示される値 ^ | Arduino Codeの''Serial.print()''出力とPCから送ったデータ | シリアルモニター | 文字またはHEXバイト | | ラダーロジックの接点・コイル・メモリ・導通状態 | ラダーモニタリング | ON/OFF、現在値、導通色 | シリアルモニターは、Arduino Codeがボードのシリアルポートで送受信するデータを確認するときに使用します。ラダーモニタリングは、ボードで実行中のラダーロジックの内部状態をラダー画面で確認するときに使用します。 ===== 2. シリアルモニターの接続 ===== - ステータスバー右側の**ポート選択**で、PCに接続されたシリアルポートを選択します。 - アクティビティバーの**シリアルモニター**を選択するか、下部パネルの**シリアルモニター**タブを開きます。 - Arduino Codeの''Serial.begin()''と同じ通信速度を選択します。 - 受信文字のエンコーディングを選択し、**接続**を押します。 - 状態が**接続済み**に変わったことを確認します。 {{ :ja-jp_products:mpino_studio2:serial-monitor-connect-marked.svg?1000 |対象ポート、通信速度、エンコーディング、接続ボタンを示したシリアルモニター }} * **1** 対象ポート:ステータスバーで選択したPCのシリアルポートです。 * **2** 通信速度:Arduino Codeの''Serial.begin()''と同じbaudを選択します。 * **3** エンコーディング:受信バイトを文字として解釈する方式です。 * **4** 接続:接続、切断、再接続の状態を切り替えて確認します。 受信エンコーディングは**UTF-8**、**EUC-KR(韓国語)**、**Shift-JIS(日本語)**、**Latin-1 (ISO-8859-1)**、**Windows-1252**に対応し、初期値はUTF-8です。エンコーディングはASCII表示の受信データだけに適用され、HEX表示と送信データには適用されません。 接続中に通信速度を変更しても、現在の接続にはすぐ反映されません。**切断**を押してから再接続してください。''Serial.begin()''と通信速度が異なる場合は、受信文字が崩れたりデータが表示されなかったりします。 ===== 3. データの受信・送信 ===== 次のコードは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 --''を確認できます。 {{ :ja-jp_products:mpino_studio2:serial-rx-tx.svg?1000 |カウンター値の受信、Rの送信、リセット応答が続くシリアルモニター }} ==== ASCII・HEX表示 ==== ASCII表示では、選択したエンコーディングで受信バイトを文字として表示します。HEX表示では、同じデータを''41 42 0D 0A''のように2桁の大文字バイトと空白で表示します。 {{ :ja-jp_products:mpino_studio2:serial-ascii-hex.svg?1000 |同じシリアルデータをASCII文字とHEXバイトで表示した比較 }} 表示モードを切り替えると、以前の受信内容が消去され、新しいモードでデータの表示を開始します。ボタンには現在のモードではなく、切り替え先のモードが表示されます。 ==== 行末文字 ==== 入力欄の横で、送信データの末尾に追加する行末文字を選択します。 ^ 選択 ^ 追加されるバイト ^ 使用条件 ^ | None(LE なし) | なし | 入力したデータだけを送信 | | 改行 (LF) | ''0A'' | ''\n''を待つコード | | キャリッジリターン (CR) | ''0D'' | ''\r''を待つコード | | 改行 + キャリッジリターン (CRLF) | ''0D 0A'' | ''\r\n''を待つコード | {{ :ja-jp_products:mpino_studio2:serial-line-ending.svg?1000 |None、LF、CR、CRLFが送信データの末尾に追加するバイト }} ASCII表示で入力した文字は常にUTF-8で送信されます。HEX表示では''52''または''52 0D 0A''のようにrawバイトを直接入力できます。空白なしの''520D0A''も使用できます。16進数以外の文字がある場合や桁数が奇数の場合は送信されません。 **コピー**は現在の受信バッファ全体をクリップボードへコピーします。**消去**は接続を維持したまま画面の受信内容を空にします。 ===== 4. ラダーモニタリングの設定 ===== ラダーモニタリングデータは、プロジェクトで選択したボード通信チャンネルから送信されます。最初にチャンネルを設定し、プロジェクトをもう一度ビルドして書き込む必要があります。 {{ :ja-jp_products:mpino_studio2:monitoring-setup-flow.svg?1000 |モニタリング使用ポートの設定、ビルド、書き込み、モニタリングの順序 }} - **ファイル → 環境設定 → ラダー設定 → モニタリング使用ポート**を開きます。 - PCと接続するボードの通信チャンネルを選択します。 - プロジェクトをもう一度ビルドして書き込みます。 - ステータスバーで、その接続に対応するPCシリアルポートを選択します。 {{ :ja-jp_products:mpino_studio2:monitoring-port-setting-marked.svg?1000 |ラダー設定でモニタリング使用ポートを選択する画面 }} 選択中のボードで使用できるチャンネルだけが一覧に表示されます。**使用しない**を選択すると、ファームウェアはラダーモニタリングデータを生成しません。''Serial''、''Serial1''、''Serial2''のうち実際に表示される項目は、選択したボードの通信チャンネル定義に従います。MPINO-8A4R(T)-Sでは**使用しない**、''Serial''、''Serial1''が表示されます。 チャンネルを変更して書き込む前にモニタリングを開始すると、書き込みの案内が表示されます。**アップロード**を選択し、変更したチャンネルをボードへ反映してください。 {{ :ja-jp_products:mpino_studio2:monitoring-upload-needed.svg?1000 |モニタリングチャンネルの変更後に書き込みが必要であることを示す案内 }} > **ポート競合の注意:** 選択したチャンネルをプロジェクトの通信設定またはArduino Codeでも使用すると、モニタリングデータとユーザー通信が競合します。競合の案内が表示された場合は、モニタリング専用チャンネルを選択するか、同じチャンネルを使用する通信設定とコードを変更してください。 ===== 5. ラダーモニタリングの開始・終了 ===== ポート設定と書き込みが完了したら、次のいずれかの方法でラダーモニタリングを開始または終了します。 * シリアルモニターのヘッダーにある**モニタリング**ボタン * ラダー画面の右クリックメニューにある**モニタリング ON**・**モニタリング OFF** * ''Ctrl + M'' {{ :ja-jp_products:mpino_studio2:monitoring-toggle-methods.svg?1000 |シリアルモニターボタン、ラダーの右クリックメニュー、Ctrl Mによる3つの切り替え方法 }} ショートカットは**ファイル → 環境設定 → ショートカット**で変更できます。 モニタリング使用ポートが**使用しない**の場合は、**モニタリングポートの設定が必要**という案内が表示されます。**環境設定を開く**を選択し、4番の設定を完了してください。 {{ :ja-jp_products:mpino_studio2:monitoring-port-required.svg?1000 |モニタリング使用ポートが設定されていない場合の案内 }} PCシリアルポートを選択していない場合は、ステータスバーでポートを選択してから再度開始してください。モニタリングを開始すると、ボタンと右クリックメニューがON状態に変わります。終了すると接続を切断し、ラダーのリアルタイム表示を消去します。 ===== 6. ラダー状態の読み方 ===== モニタリングを開始すると、ラダー画面で導通状態とセルの現在値を同時に確認できます。 {{ :ja-jp_products:mpino_studio2:ladder-monitoring-live-marked.svg?1000 |ボックス関数値、ワード値、タイマー現在値、比較値を示したラダーモニタリング画面 }} ^ セルの種類 ^ 画面で確認する内容 ^ | ビット接点・コイル | 黄色の導通表示とON/OFF状態 | | ボックス関数 | ボックス内に表示される対象アドレスの現在値 | | ワードメモリ | セルの下に表示される現在値 | | タイマー・カウンター接点 | 完了条件の導通状態 | | 比較接点 | 比較する両方の現在値と比較結果 | | 空のセルに入力したアドレス | ビットアドレスのON/OFFまたは数値アドレスの現在値 | * **1** ボックス関数の現在値:タイマー、カウンター、演算対象の値をボックス内で確認します。 * **2** ワード現在値:D、C、Tなどの値をセルの下で確認します。 * **3** タイマー現在値:タイマーアドレスの現在値を時間単位または数値で確認します。 * **4** 比較値:接点の下に両辺の現在値が表示され、比較結果は導通で確認します。 ボードが停止した場合や接続が切れた場合は、最後に受信した値と導通表示が画面に残ることがあります。この状態では、時間によって変化する''@F''特殊ビットの点滅が停止します。値が変化しない場合は、最初にモニタリングの接続状態を確認してください。 ===== 7. 表示形式 ===== ラダーセルを右クリックし、リアルタイム数値の表示形式を選択します。現在選択中の形式にはチェックが表示されます。 {{ :ja-jp_products:mpino_studio2:monitoring-number-formats.svg?1000 |1つの16ビット値を5種類の数値形式で表示した比較 }} ^ 表示形式 ^ 読み方 ^ | 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''のような時間単位で表示されます。プリセットを数値で入力した場合は、現在値も数値で表示されます。 {{ :ja-jp_products:mpino_studio2:monitoring-timer-format.svg?1000 |数値プリセットと時間構文プリセットによるタイマー現在値の表示比較 }} Signed Decimal以外の形式を選択すると、時間構文ではなく選択した数値形式で表示されます。カウンタープリセットには時間単位を使用しません。 ==== 比較接点の値 ==== ''D0 > D1''のような比較接点は、モニタリング中に''5 > 3''のような両辺の現在値を接点の下に表示します。Binaryでは長い値を読みやすくするため複数行で表示され、その他の形式では1行で表示されます。 {{ :ja-jp_products:mpino_studio2:monitoring-comparison-value.svg?1000 |比較接点の現在値を1行で表示した場合とBinaryで複数行表示した場合の比較 }} ===== 8. ポートの使用関係 ===== シリアルモニターとラダーモニタリングは、ステータスバーで選択した1つのPCシリアルポートを共有するため、同時には接続できません。 {{ :ja-jp_products:mpino_studio2:monitoring-port-ownership.svg?1000 |シリアルモニターとラダーモニタリングのポート使用状態の切り替え }} ^ 現在の状態 ^ 実行する操作 ^ 結果 ^ | シリアルモニター接続中 | ラダーモニタリングを開始 | シリアルモニターを切断し、115200 baudでラダーモニタリングを開始します。 | | ラダーモニタリング中 | シリアルモニターを接続 | ラダーモニタリングを終了し、選択したbaudでシリアルモニターを接続します。 | | ラダーモニタリング中 | データを送信 | 送信入力欄は使用できません。 | | シリアルモニター接続中 | 書き込みを開始 | 一時的に切断し、書き込み終了後に同じポートとbaudで再接続します。 | | ラダーモニタリング中 | 書き込みを開始 | モニタリングを一時停止し、書き込み終了後に再接続します。 | ラダーモニタリングが115200 baudで接続されている間も、シリアルモニターで選択したbaudは維持され、通常のシリアルモニターを再接続するときに使用されます。 ボードが切断されると、通常のシリアルモニターは最大5回、自動再接続を試みます。再接続に成功すると、受信画面に自動再接続の案内が追加されます。自動再接続が終了しても接続できない場合は、ポート一覧とケーブルを確認してから手動で再接続してください。ラダーモニタリングの値が停止した場合は、自動復旧を待たずにモニタリングを一度終了してから再開してください。 書き込みを開始すると現在の接続を切断し、成功・失敗に関係なく、書き込み前に使用していたシリアルモニターまたはラダーモニタリングの接続を復元します。どちらも接続していなかった場合は、書き込み後もOFFのままです。ビルドだけを実行した場合は接続を切断しません。 ラダーモニタリング中でも、同じチャンネルを115200 baudで使用する''Serial.print()''出力はシリアルモニターの受信画面に表示される場合があります。ただし、ユーザーデータとモニタリングフレームが混在する可能性があるため、Arduino Codeの通信とラダーモニタリングには別々のチャンネルを使用することを推奨します。 ===== 9. トラブルシューティング ===== ^ 症状 ^ 確認する項目 ^ 対処 ^ | **接続**を押しても接続できません。 | ステータスバーのポート選択と現在の接続状態 | 使用する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 | モニタリング専用チャンネルを選択するか、同じチャンネルを使う設定とコードを変更します。 | ===== 関連文書 ===== * [[ja-jp_products:mpino_studio2:activity_bar|Phase 8・アクティビティバーとサイドパネル]] * [[ja-jp_products:mpino_studio2:menus_settings|Phase 7・メニューと環境設定]] * [[ja-jp_products:mpino_studio2:first_project|Phase 1・最初のプロジェクトを作る]] — ビルド・書き込み・ポート選択 * [[ja-jp_products:mpino_studio2:memory|Phase 2・メモリを理解する]] — モニタリング値のメモリ形式 * [[ja-jp_products:mpino_studio2:ladder_editing|Phase 3・ラダー編集の基礎]] — 接点・コイル・比較接点 * [[ja-jp_products:mpino_studio2:box_functions|Phase 4・ボックス関数]] — タイマー・カウンターボックス関数 * [[ja-jp_products:mpino_studio2:code_editor|Phase 5・Arduino Codeの編集]] — シリアルサンプルコードの記述 * [[ja-jp_products:mpino_studio2|MPINO STUDIO 2ユーザーマニュアル]]