====== MPINO STUDIO2・Modbus RTUでHMIを接続する ====== [[:ja-jp_guide:hmi_connection:studio2|← STUDIO2のインストールと開始]] · [[:ja-jp_guide:hmi_connection:screen|次へ:HMI画面の作成 →]] · [[:ja-jp_guide:hmi_connection:studio2:cnet|選択:LS産電 Cnet →]] MPINO STUDIO2でプロトコルを**Modbus RTU スレーブ**に設定すると、製品の要求処理コードはアプリが生成します。HMIは**Modbus RTU マスター**として要求します。HMIが読み書きする内部''D''ワードはHolding Register、''M''ビットはCoilに対応します。STUDIO2の生成コードのアドレスは、Arduino IDE SDKの例とは異なります。 この表は、STUDIO2の生成コードが受け付ける**Modbus要求内の0始まりのアドレス**です。HMIがCoil番号を1始まりで受け付ける場合、''M0''は''1001''と表示されることがあります。1始まりや''4xxxx''表記で入力する番号はHMIドライバの説明書で確認し、[[:ja-jp_guide:hmi_connection:screen#アドレス形式を確認する|HMIのアドレス形式]]に従ってください。 ^ HMIの要素 ^ STUDIO2メモリ ^ Modbus領域 ^ 要求内の0始まりのアドレス ^ | 1秒ごとに変わる数値 | ''D0'' | Holding Register | ''2000'' | | 数値入力 | ''D1'' | Holding Register | ''2001'' | | 入力値を返す数値 | ''D2'' | Holding Register | ''2002'' | | スイッチと確認ランプ | ''M0'' | Coil | ''1000'' | | ラダーの結果を確認するランプ | ''M1'' | Coil | ''1001'' | 次は**MPINO-8A4R-S・RS-232 ''Serial1''・局番1・9600 bps・8N1**で内部メモリのみを使用する簡単な例です。実際の入出力端子は使用しません。チャンネル、配線、インストール、製品選択は[[:ja-jp_guide:hmi_connection:wiring|HMIの配線]]と[[:ja-jp_guide:hmi_connection:studio2|STUDIO2のインストールと開始]]を参照してください。 ===== 1. 新規プロジェクトと内部メモリ ===== - **ファイル → 新規作成**で''MPINO-8A4R(T)-S''を選択し、''HMI_First_Test.mp2''として保存してください。 - **設定 → メモリ領域設定**で、Pを''64''、M・D・C・T・Rをそれぞれ''16''に設定してください。この数字はアドレスではなく**個数**です。 - **設定 → ラダーピンマップ設定**で、物理入出力ピンの**使用**をすべて解除してください。このプログラムでは内部の''M''と''D''のみを使用します。 {{ :ja-jp_products:mpino_studio2:board-select-modal-marked.svg?900 |MPINO STUDIO2のボード選択画面 }} 通信端子は製品によって異なります。[[:ja-jp_guide:hmi_connection:wiring#通信チャンネルを選ぶ|チャンネル表]]で実際の製品のポートを確認してください。 ===== 2. ラダー1行とmainコード ===== エクスプローラーで**ラダー → ladderLoop**を開き、1行1列に**NO接点**(''F2'')''M0''、1行2列に**出力コイル**(''F9'')''M1''を配置してください。''M1''は内部ビットであり、実際のリレー出力ではありません。 {{ :ja-jp_guide:hmi_connection:internal-ladder.svg?420 |M0接点がM1内部コイルを駆動する実習回路 }} **コード**の''main''コードタブを開き、下のコードを入力してください。このコードはSTUDIO2プロジェクトの''main''に入力するもので、Arduino IDEで単独のスケッチとして書き込むコードではありません。 #include "mpino_runtime.h" #include "ladder_generated.h" unsigned long lastTick = 0; void setup() { M[0] = false; M[1] = false; D[0] = 0; D[1] = 0; D[2] = 0; lastTick = millis(); } void loop() { ladderLoop(); unsigned long now = millis(); if (now - lastTick >= 1000UL) { lastTick = now; D[0] = (D[0] + 1) % 100; } D[2] = D[1]; } ''D0''は1秒ごとに0~99を繰り返します。HMIが''D1''に数値を書き込むと、''D2''がその値に追従します。''M0''をONにすると、ラダーが''M1''をONにします。**通信の初期化と要求処理のコードは、STUDIO2が通信設定から生成します。** このコードに''ImodbusRTUInit()''や''ImodbusRTU()''を追加しないでください。 ===== 3. 実行 → 通信 ===== **この例で入力する値は下の表のとおりです。** 図は項目の位置を示す初期画面で、図のプロトコル**''なし''**と通信速度**''115200''**はこの例の値ではありません。''Modbus RTU スレーブ''と''9600''に変更して保存してください。 ^ 図の番号 ^ 項目 ^ 入力値 ^ | ① | チャンネル | ''Serial1'' — この製品のRS-232 | | ② | プロトコル | ''Modbus RTU スレーブ'' | | ③ | スレーブ ID | ''1'' | | ④ | 通信速度 | ''9600'' | | ⑤・⑥・⑦ | データビット・ストップビット・パリティ | ''8'' ・ ''1'' ・ ''なし'' | {{ :ja-jp_products:mpino_studio2:communication-settings-marked.svg?1000 |項目の位置を示す初期画面。図のプロトコル「なし」と115200は例であり、この例ではModbus RTU スレーブと9600に変更します。 }} **実行 → 通信**で上の値を設定し、''Ctrl+S''で保存してください。HMI側では、接続したRS-232ポートを**Modbus RTU マスター**にして、同じ局番と通信条件を設定してください。 ===== 4. ビルド、書き込み、HMIアドレス ===== - **実行 → ビルド**(''Ctrl+R'')を実行し、ビルド出力に成功メッセージが表示されることを確認してください。 - ステータスバーで**製品用MPダウンロードケーブルのPC側COMポート**を選択し、**実行 → アップロード**(''Ctrl+U'')を実行してください。下部パネルのアップロードログが**正常に終了**することを確認してください。書き込みポートとHMI用の''Serial1''は別の接続です。画面と手順は[[:ja-jp_products:mpino_studio2:first_project#ポートを選択して書き込む|ポートを選択して書き込む]]を参照してください。 - HMIの数値三つとビットスイッチ・ランプを、上のアドレス表に従って接続してください。数値は**符号付き16ビット整数・1ワード・小数点以下0桁・倍率1**に、入力範囲は''0~9999''に設定してください。 この例の実機でのHMI通信は、使用するHMIのモデルとケーブルに応じて別途確認してください。**同じSerial1をラダーモニタリングやユーザーのシリアルコードに重複して割り当てないでください。** 先に[[:ja-jp_guide:hmi_connection:screen|HMI画面の作成]]でこのページのModbusアドレスを指定し、[[:ja-jp_guide:hmi_connection:check|動作確認とトラブルシューティング]]に進んでください。Cnetも試す場合は、[[:ja-jp_guide:hmi_connection:studio2:cnet|同じプログラムをLS産電 Cnetに切り替えてください →]]。