ICnetAdr()はM・D・Rメモリの開始アドレスを設定します。
void ICnetAdr(uint16_t m_offset, uint16_t d_offset, uint16_t r_offset = 0)
| コマンド | 引数 | 戻り値 | 動作 |
|---|---|---|---|
ICnetAdr(m_offset, d_offset, r_offset) | uint16_t m_offsetuint16_t d_offsetuint16_t r_offset = 0 | void | M・D・Rメモリの開始アドレスを設定します。 |
この例では、MPINO-16A8R8TのRS-485ポートSerial2、入力D22、トランジスタ出力D39を使用します。
void setup() { ICnetMem(64, 64, 16); // Cnet Slaveが使用するM・D・Rメモリサイズを設定します。 ICnetAdr(0, 0, 0); // M・D・Rメモリの開始アドレスを設定します。 ICnetInit(Serial2, 1, 9600); // 通信ポート、局番、ボーレートを設定します。 if (M != nullptr) M[0] = false; } void loop() { ICnet(); // 受信要求を確認し、Cnet Slave応答を処理します。 if (M != nullptr) M[0] = digitalRead(22) == HIGH; if (D != nullptr) digitalWrite(39, D[0] ? HIGH : LOW); }
loop()でICnet()を継続的に呼び出します。ICnetMem()とImodbusRTUMem()はいずれも共有M/Dを再割り当てするため、最終サイズの管理はどちらか一方に統一し、最後の再割り当て後に両プロトコルを初期化します。M、D、Rがnullptrか確認してからユーザーコードでアクセスします。