====== 動作確認とトラブルシューティング ====== [[:ja-jp_guide:hmi_connection|HMI接続]] · [[:ja-jp_guide:hmi_connection:screen|HMI画面の作成]] 製品プログラムとHMI画面は別々に転送する必要があります。転送が終わったら、まず二つの機器の通信条件と画面のアドレスが合っていることを確認してください。その後、内部メモリの読み書きの結果を順に確認してください。画面で使用する''D0/D1/D2/M0''の**実際の要求アドレス**は、選択した[[:ja-jp_guide:hmi_connection:screen#アドレス形式を確認する|開発ツールとプロトコルのアドレス表]]に従います。HMIのモデルはお使いの機種によって異なるため、メニューとエラー表示の位置はメーカーの説明書を確認してください。 ===== 1. 製品とHMIの設定を確認する ===== ^ 確認項目 ^ 一致している必要がある内容 ^ | 接続 | 同じ電気インターフェースと、実際に配線したSerialポート | | 通信 | プロトコル、局番、通信速度、データビット、パリティ、ストップビット | | メモリ | 開発ツールとプロトコルに合ったM・Dアドレス | | 画面 | 数値は16ビット整数、Mはビット | | 転送 | 製品プログラムの書き込みとHMI画面のダウンロードが完了していること。STUDIO2では下部パネルのアップロードログが正常に終了していること | 製品側は、**Arduino IDEの書き込み完了の表示**または**STUDIO2下部パネルのアップロードログの正常終了**で判断してください。STUDIO2のビルド成功だけでは、製品への書き込みが完了したとは判断できません。HMI側のダウンロードの成否と外部機器の通信状態は、**使用するHMIメーカーと編集ソフトの案内に従って**確認してください。まず、二つの転送がどちらも成功したことを確認してください。 ===== 2. 製品の値を読み取る ===== ここからは、前に説明したアドレスと通信設定を使った**簡単な動作確認**です。読み取り → 数値の書き込み → ビットの書き込みの順に確認してください。 HMIの**通信確認の数値 D0**が1秒ごとに増えることを確認してください。''99''の次は''0''です。HMIの更新周期によっては、途中の数値が飛んで見えることがあります。 ===== 3. 値を送って返してもらう ===== {{ :ja-jp_guide:hmi_connection:write-read-flow.svg?420 |HMIがD1に値を書き込み、製品がD2にコピーし、HMIがD2を読み取る }} - **入力値 D1**に''1234''を入力して確定してください。 - **製品から返された値 D2**も''1234''に変わることを確認してください。 - ''7''、''9999''、''0''も入力して確認してください。 ===== 4. ビットの読み書きを確認する ===== 試験スイッチを押すたびに、別の**M0ランプ**のON/OFFが切り替わることを確認してください。STUDIO2で''M1''のランプを追加した場合は、ラダーの結果も同じように変わります。この例で使用するのは内部のM・Dメモリであり、実際のリレー出力は使用しません。 例は製品の起動時にメモリを初期化します。電源を入れ直したら、数値とスイッチをもう一度試験してください。 ===== 5. 症状別の確認箇所 ===== ^ 症状 ^ 最初に確認する箇所と値 ^ | 応答なし / タイムアウト | [[:ja-jp_guide:hmi_connection:wiring|チャンネルとRS-232/485の配線]]の実際のポートと配線 → 同じページの「プロトコルを選ぶ」でプロトコル、局番、通信速度、8N1 → HMI編集ソフトの外部機器の状態 | | D0が0のまま | HMIの数値要素が[[:ja-jp_guide:hmi_connection:screen#hmiプロジェクトと外部機器を作成する|製品の外部機器]]を読み取っているか → 製品への書き込みの完了 → 選択したプロトコルの''D0''アドレス | | 値が一つずれる | [[:ja-jp_guide:hmi_connection:screen#アドレス形式を確認する|Modbusのアドレス形式]]の0始まり・1始まりの規則。Cnet・MCには適用しません | | 別の値が表示される | 選択したプロトコルページのSDK/STUDIO2アドレス表 → HMIドライバのCoil・Holding Register、またはCnet・MCのデバイス領域 | | 入力欄だけ変わりD2が変わらない | [[:ja-jp_guide:hmi_connection:screen#数値表示と入力を設定する|画面要素の設定]]の外部''D1''書き込みと''D2''読み取り → 製品プログラムの''D[2] = D[1]''またはSTUDIO2の''main'' | | 書き込んだ値がすぐに消える | 書き込んだスケッチの''loop()''、またはSTUDIO2の''ladderLoop''・''main''が''D1/M0''を繰り返し初期化または上書きしていないか | | 数値が異常に大きい | HMIの数値要素の16ビット・1ワード・倍率1・小数点以下0桁、およびドライバのバイト交換設定 | | スイッチの見た目だけ変わる | [[:ja-jp_guide:hmi_connection:screen#スイッチとランプを設定する|スイッチとランプの設定]]で、外部''M0''の書き込みと別の''M0''の読み取りの両方を指定しているか | | しばらく動いてから切れる | 製品コードに長い''delay''がないか、HMI通信用の''Serial1''を他のコードやモニタリングでも使用していないか | | Modbusアドレスエラー | 選択したModbusページの開始アドレス、要求数、メモリの割り当て数、HMIドライバの要求領域。割り当てメモリの範囲外のアドレスにはSDKが応答しないため、HMIにはタイムアウトと表示されることがあります | | 製品への書き込みに失敗する | [[:ja-jp_guide:hmi_connection:arduino|Arduino IDEのインストール、ボード、COMポート]]または[[:ja-jp_guide:hmi_connection:studio2|STUDIO2のインストールと製品選択]]、およびダウンロードケーブルとドライバ | **''D0''の読み取りから**確認し、次に''D1 → D2''の数値の書き込み、最後に''M0''のビットを試験してください。通信自体ができない場合は、アドレスを変更する前にポート、配線、プロトコル、局番、通信形式を照らし合わせてください。 ===== 6. お問い合わせ時にご用意いただく情報 ===== 製品モデル、開発ツール、SDKのバージョン、HMIのメーカー、正確なモデル、編集ソフトのバージョン、使用したシリアルポートと端子配線の写真、プロトコル、局番、通信速度、8N1、外部機器アドレスの画面、エラーメッセージをご用意のうえ、''D0''、''D1→D2''、''M0''のどの試験まで動作したかをお知らせください。