====== MP STUDIO 2 · Modbus 機器テーブル ====== 機器テーブルは、機器がModbus RTU マスターとして、インバーター・温度調節器・他のPLCなどの相手機器(スレーブ)の値を読み書きする内容を、相手機器ごとの表にまとめる機能です(V1.1.0以降)。同じ相手機器の連続したアドレスは1回の通信にまとめて読み出し、書き込みは値が変わったときだけ送信します。ラダーの''MBTRIG''ファンクションで、必要なタイミングでだけ送信させることもできます(V1.2.0以降)。 {{ :ja-jp_products:mp_studio:mb-table.png?1000 |図1. 機器テーブルウィンドウ(同梱のModbusサンプルをテーブルへ移した状態) }} ===== 機器テーブルを開く ===== **設定 → Modbus RTU マスター**を選択すると開きます。新規プロジェクトと、機器テーブルがあるプロジェクトでは、機器テーブルウィンドウが開きます。従来のMP STUDIOで作成した一覧だけがあるプロジェクト(同梱のModbusサンプルなど)では[[:ja-jp_products:mp_studio:menus_settings#modbus_rtu_マスター|Modbus RTU マスターの一覧ウィンドウ]]が開き、そのウィンドウの**テーブルへ移す**で機器テーブルに変換できます([[#旧リストをテーブルへ移す|下記]])。 **通信ポート**ウィンドウで**Modbus RTU Master**に設定したポートがある場合は、そのウィンドウの**Modbus 機器テーブルを開く**ボタンからも開けます。 ===== ウィンドウの構成 ===== ==== 上段 ==== ^ 項目 ^ 説明 ^ | ポート | 機器テーブルで使う通信ポート(通信ポート1~通信ポート3)を選びます。ポートごとに、登録した相手機器の数もあわせて表示されます。 | | 速度 | そのポートの通信設定です。押すと通信ポートウィンドウが開きます。 | | 1 周 | ポーリングする読み出し・書き込みを1周するのにかかる予想時間です。 | | RAM・フラッシュ | 機器テーブルが機器で使うメモリです。「旧方式 約 N KB」は、同じ内容を従来の一覧方式で入れた場合のサイズです。 | OKを押すと、選んだポートが**Modbus RTU Master**に変わり、そのポートのダウンロードの使用がオフになります。まだMasterではないポートを選ぶと、ウィンドウの上部にこの案内が表示されます。 ==== 相手機器 ==== 左側の一覧で**+ 機器を追加**を押して相手機器を追加し、**複製**・**機器を削除**でコピーまたは削除します。相手機器を選ぶと、右上に設定が表示されます。 ^ 項目 ^ 既定値 ^ 説明 ^ | 名前 | 機器 N | 表示用の名前です。 | | 局番 | 空いている番号 | 0~247。同じポートで重複しないようにする必要があります。0はブロードキャスト(書き込みのみ)です。 | | 応答待ち(ms) | 100 | 20~60000。応答を待つ時間です。 | | リトライ(回) | 2 | 0~10。応答がないときに再送信する回数です。 | | 再確認間隔(秒) | 5 | 1~3600。リトライしても応答がない相手機器はスキップし、この間隔ごとに再確認します。 | | ワード順 | 下位ワード先頭 (CDAB) | 2ワード(32ビット)値のワード・バイトの順序です。 | | 一度に読む最大 | 自動 | 1回の通信で読み出す最大の個数です。空欄にすると、機種に合わせて決まります。 | | 追加待ち(ms) | 0 | 0~10000。通信と通信の間に追加で待つ時間です。 | | 状態ワード | 空欄(使わない) | 相手機器の状態を受け取るワードアドレスです。**自動**を押すと、空いているDワードを選びます。 | 状態ワードには、ビット0 = 接続中、ビット1 = スキップ中、上位バイト = 最後のエラーが入ります。0の場合は未接続の状態です。 ==== 行 ==== 相手機器とやり取りする値を1行ずつ入力します。 ^ 列 ^ 説明 ^ | 方向 | 読み出し・書き込み。機能によって決まります。 | | 機能 | ''FC01''~''FC06''、''FC15''、''FC16''から選びます。 | | 機器アドレス | 相手機器のアドレス(0~65535)です。 | | 個数 | 1の場合は値1つ、2以上の場合はPLC アドレスから連続する範囲です。 | | PLC アドレス | 値をやり取りする機器のメモリです(例: ''D10'')。 | | 型 | PLC アドレスによって決まるデータ型です。 | | 説明 | メモです。 | | トリガー | 空欄にするとポーリングします。1~255を入力すると、ラダーの''MBTRIG''が呼び出したときだけ送信します([[#トリガー送信_mbtrig|下記]])。 | | フレーム | この行が含まれる通信の番号です。下の**実際に送信するフレーム**一覧の番号と同じです。 | **+ 行を追加**で行を追加します。Excelで「機能 · 機器アドレス · 個数 · PLC アドレス · 説明 · (トリガー)」の順にコピーして**行を貼り付け(Excel)**を押すか、表で''Ctrl+V''を押すと、複数の行を一度に入力できます。''Enter''で次の行へ移動し、''Ctrl+Delete''で行を削除します。 ウィンドウ下部の**実際に送信するフレーム**には、機器が実際に送信する通信が順に表示され、いちばん下には「値 N 個なら旧方式 N 回 → テーブル M 回」のように、従来の一覧方式と比べた通信回数が表示されます。**OK**を押すと適用されます。ファイルに残すには、プロジェクトを保存する必要があります。 ===== 読み出しと書き込み ===== * **読み出し:** 同じ相手機器・同じ機能の連続した機器アドレスは、1回の通信にまとめて読み出します。図1の#1は、アドレス5と6を一度に読み出します。PLC側のアドレスは連続していなくてもかまいません。途中の空いているアドレスを含めて読み出すことはせず、一度に読む最大を超える場合は分割して読み出します。 * **順序:** 相手機器とは、1台ずつ順に通信します。 * **書き込み:** 開始時にすべての書き込み値を1回送信し、その後は値が変わったときだけ送信します。書き込みだけの相手機器には、約5秒ごとに再送信します。 * **応答がないとき:** リトライの回数だけ再送信し、それでも応答がない場合は、その相手機器をスキップして再確認間隔ごとに再確認します。 ===== トリガー送信(MBTRIG) ===== トリガー番号を付けた行は、ラダーの''MBTRIG''ファンクションが呼び出したときだけ送信します。ボタンを押したときだけ設定値を送信したり、必要なときだけ値を読み出したりする場合に使用します。 - 送信する行の**トリガー**列に番号(1~255)を入力します。ウィンドウの下部にトリガー番号の表が表示されます。 - 送信の完了をラダーで知りたい場合は、トリガー番号の表の**完了欄**にビットアドレス(例: ''M100'')を入力します。 - **OK**を押します。 - ラダーに''MBTRIG''ファンクションを挿入し、同じ番号を入力します。ファンクションパネルの**Serialport**分類にある**MBTRIG: Send Modbus Trigger**を選ぶか、ファンクションの挿入ウィンドウ(''Ctrl+E'')に''MBTRIG 1''のように入力します。 {{ :ja-jp_products:mp_studio:mb-trigger.png?1000 |図2. 運転指令の書き込み行にトリガー1と完了欄M100を設定した状態 }} {{ :ja-jp_products:mp_studio:mb-trigger-rung.png?900 |図3. M10がONになったときにトリガー1を送信するラング }} * ''MBTRIG''の入力がOFFからONに変わるたびに、その番号の行を1回送信します。入力をONにしたままでは繰り返しません。電源投入時にすでにONになっている入力では、1回送信します。 * 読み出し行と書き込み行のどちらにも使えます。書き込み行は、値が変わっていなくても送信時点の値を送信します。 * 同じ番号の行はまとめて送信され、アドレスが連続していれば1回の通信にまとめられます。1つのポートの複数の相手機器に同じ番号を使えますが、別のポートで同じ番号は使えません。 * 送信前に複数回呼び出された場合は1回だけ送信し、送信中に呼び出された場合は、送信が終わった後にもう1回送信します。 * 完了欄は、送信が終わると成功・失敗に関係なく1スキャンの間ONになります。失敗の理由は、その相手機器の状態ワードで確認します。 * トリガー番号がある行は、開始時に自動では送信されません。番号がない行は、これまでどおりポーリングします。 * ''MBTRIG''の番号は1~255の定数で、機器テーブルにある番号である必要があります。そうでない場合はセルが赤く表示され、コンパイルされません。ラダーに''MBTRIG''がない番号の行は、トリガー番号の表に「ラダーに MBTRIG 1 がないため送信されません」と表示されます。 ===== 旧リストをテーブルへ移す ===== 従来のModbus RTU マスターの一覧があるプロジェクトでは、一覧ウィンドウの左下にある**テーブルへ移す**を押すと、機器テーブルに変換されます。一覧は空になって機器テーブルウィンドウが開き、「旧リスト 4 行を機器 1 台のテーブルに移しました」のように結果が表示されます。2ワード値の行は、''FC16''の行になります。 * 読み取れない行がある場合や、すでに機器テーブルがある場合は移しません。 * 移すとコンパイル結果が変わります。**編集 → 元に戻す**(''Ctrl+Z'')で元に戻せます。 * 機器テーブルと従来の一覧を同時に使うことはできません。 ===== モニタリング中の相手機器の状態 ===== モニタリング中に機器テーブルウィンドウを開くと、状態ワードを設定した相手機器のカードに状態が表示されます。状態は、選択したポートの相手機器のものだけを読み出します。 ^ 表示 ^ 意味 ^ | ● 接続中 | 正常に応答しています。 | | ▲ 接続中 · エラー | 応答はありますが、エラーがあります(例: 例外応答01~06、CRCエラーなど)。 | | ⏸ スキップ中 | 応答がないため、スキップしています。再確認間隔ごとに再確認します。 | | ✕ 未接続 | 接続されていません。 | 灰色の○は、機器のプログラムがこのプロジェクトと異なる場合や、PLCが応答しない場合など、表示された状態を信頼できないときの表示で、その理由もあわせて表示されます。―は、状態ワードを設定していない相手機器です。 ===== シミュレーション ===== シミュレーションすると、機器テーブルの相手機器が仮想のModbusスレーブとして動作し、シミュレーションバーに**仮想機器 N 台**と表示されます。機器テーブルウィンドウの**仮想機器の値**タブで読み出し値を変更したり書き込み値を確認したりでき、**応答なし**をオンにすると、その相手機器が応答しない状況を試せます。 {{ :ja-jp_products:mp_studio:mb-sim.png?1000 |図4. シミュレーション中の機器テーブルの仮想機器の値 }} * 仮想機器の値は保存されません。 * ''MBTRIG''と完了欄もシミュレーションされます。例外応答とCRCエラーはシミュレーションされません。 * 問題がある機器テーブルと従来の一覧は、シミュレーションされません。 ===== 確認事項 ===== * 機器テーブルで使うポートは**Modbus RTU Master**で、**このチャンネルをダウンロードに使う**がオフになっている必要があります。機器テーブルでOKを押すと、この設定に変わります。 * 機器のRAMが不足するとコンパイルされません。相手機器や行を減らすか、メモリ領域のサイズを小さくしてください。 * 受信先のアドレスが[[:ja-jp_products:mp_studio:device_clock|機器の時計(RTC)]]ブロックと重なると、受信した値が時刻で上書きされるという警告が表示されます。 * 機器テーブルはプロジェクトファイル(''.mpx'')に保存されます。トリガーを使ったファイルは、V1.1.0では開けません。 ===== 関連文書 ===== * [[:ja-jp_products:mp_studio:menus_settings#modbus_rtu_マスター|Phase 9 · メニューと設定 — Modbus RTU マスター]] * [[:ja-jp_products:mp_studio:download#通信ポート|Phase 6 · 通信ポート]] * [[:ja-jp_products:mp_studio:simulation|Phase 8 · シミュレーション]] [[:ja-jp_products:mp_studio|← MP STUDIO 2 ユーザーマニュアルに戻る]]