この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の通信設定にこのプロトコルはありません。
| 画面要素 | 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画面の作成で説明します。
上の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の要求を処理します。
スケッチを書き込んだら、下の画面構成例と上のアドレス表を参考にHMIの要素を配置してください。
まずHMIのドライバが1C Format 1・Sum Checkの要求を送ることを確認してください。正常な結果と症状別の確認箇所は動作確認とトラブルシューティングにまとめています。