目次

Arduino IDE・Mitsubishi MC 1CでHMIを接続する

HMI接続の全体の流れ · Arduino IDEの準備

このSDKのMCスレーブは、MELSEC A互換 1Cフレーム Format 1 シリアルASCIIの要求を処理します。HMIドライバのフレーム形式をこれに合わせ、Sum Checkを有効にしてください。一般的なMC 3E/4EフレームのドライバやMC TCPのドライバでは、この例に接続できません。M・Dは1C要求のデバイス文字と番号で指定します。

このページの例はMPINO-8A4R-S・RS-232 Serial1・局番1・9600 bps・8N1を前提とし、Arduino IDE用です。チャンネルと配線、SDKのインストールとボード選択を確認してください。MPINO STUDIO2の通信設定にこのプロトコルはありません。

1. HMI画面に指定するアドレス

画面要素 SDKメモリ 1C要求のデバイスとアドレス 要求コマンド
通信確認の数値 D0 D0000 ワード読み取りWR、0~99を繰り返す
数値入力 D1 D0001 ワード書き込みWW、0~9999
返された値 D2 D0002 ワード読み取りWR、D1と同じ値
試験スイッチ・ランプ M0 M0000 ビット書き込みBW、読み取りBR

表のD0000・M0000は、コアが受信する1C要求のデバイスコードと4桁の10進アドレスです。編集ソフトでの表示形式はドライバによって異なるため、実際の要求がこのアドレスを指していることを確認してください。Modbusのアドレス変換表はMCに適用しません。 数値形式、スイッチ、ランプの共通設定はHMI画面の作成で説明します。

2. 新しいスケッチにコードをすべて入力する

上の1Cアドレスで内部メモリの値をやり取りする簡単な例です。実際の入力ピンとリレー出力ピンは使用しません。

#include <Arduino.h>
 
unsigned long lastTick = 0;
 
void setup() {
  IMcMem(0, 0, 16, 16);      // X/Yは未使用、M0とD0~D2を含む
  IMcAdr(0, 0, 0, 0);        // 外部アドレスも0から
  IMcInit(Serial1, 1, 9600);
  lastTick = millis();
}
 
void loop() {
  if (M == nullptr || D == nullptr) return;
  IMcProtocol();
 
  unsigned long now = millis();
  if (now - lastTick >= 1000UL) {
    lastTick = now;
    D[0] = (D[0] >= 99) ? 0 : D[0] + 1;
  }
 
  if (D[1] > 9999) D[1] = 9999;
  D[2] = D[1];
}

IMcMem()は起動時にメモリを確保し、IMcProtocol()はループごとにHMIの要求を処理します。

3. 検証と書き込みの後、HMI画面を作成する

スケッチを書き込んだら、下の画面構成例と上のアドレス表を参考にHMIの要素を配置してください。

D0 通信確認の数値、D1 入力、D2 返された値、M0 試験スイッチとランプ

  1. スケッチを保存し、Arduino IDEの検証を実行してください。
  2. ツール → ボードと書き込み用のCOMポートを確認し、書き込みを実行してください。Arduino IDEで始めるも参照してください。
  3. HMI画面の作成で、上のD0000~D0002とM0000を外部機器の要素に指定し、HMIプロジェクトを転送してください。
  4. 製品とHMIの電源を入れ、動作確認とトラブルシューティングで読み取り → 書き込み → ビットの順に試験してください。

HMIがD1とM0を書き込み、製品のD2とM0を読み返して結果を確認

まずHMIのドライバが1C Format 1・Sum Checkの要求を送ることを確認してください。正常な結果と症状別の確認箇所は動作確認とトラブルシューティングにまとめています。