LS産電 Cnetでは、HMIがCnetのシリアル要求を送り、製品がスレーブとして応答します。LS産電・M2I・EasyViewのHMI編集ソフトには、D000・M000のようにM・Dメモリ名を入力してください。Cnet要求の%DW0は製品のD0、%MX00000はM0に対応します。
このページの例はMPINO-8A4R-S・RS-232 Serial1・局番1・9600 bps・8N1を前提としています。チャンネルと配線、SDKのインストールとボード選択を確認してください。先にModbusの例を行う必要はありません。
| 画面要素 | SDK内部メモリ | HMIの入力例 | 動作 |
|---|---|---|---|
| 通信確認の数値 | D0 | D000 | 16ビットワード読み取り、0~99を繰り返す |
| 数値入力 | D1 | D001 | 16ビットワード書き込み、0~9999 |
| 返された値 | D2 | D002 | 16ビットワード読み取り、D1と同じ値 |
| 試験スイッチ・ランプ | M0 | M000 | ビットのトグル書き込みと読み取り |
HMIの入力例はLS産電・M2I・EasyViewのHMIが対象です。その他のHMIでは、選択したCnetドライバのアドレス形式を確認してください。Modbusのアドレス変換表はCnetに適用しません。 数値形式、スイッチ、ランプの共通設定はHMI画面の作成で説明します。
上のCnet変数で内部メモリの値をやり取りする簡単な例です。実際の入力ピンとリレー出力ピンは使用しません。
#include <Arduino.h> unsigned long lastTick = 0; void setup() { ICnetMem(16, 16, 0); // M0とD0~D2を含む、R領域は未使用 ICnetAdr(0, 0, 0); // 外部アドレスも0から ICnetInit(Serial1, 1, 9600); lastTick = millis(); } void loop() { if (M == nullptr || D == nullptr) return; ICnet(); 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]; }
ICnetMem()は起動時にメモリを確保し、ICnet()はループごとにHMIの要求を処理します。
スケッチを書き込んだら、下の画面構成例と上のアドレス表を参考にHMIの要素を配置してください。図のD0・D1・D2・M0は製品の内部メモリ名です。HMIの編集ソフトには、表のD000・D001・D002・M000を入力してください。
HMIのドライバがCnetの%DW・%MX要求を送ることを確認してください。正常な結果と症状別の確認箇所は動作確認とトラブルシューティングにまとめています。