User Tools

Site Tools


en-us_commands:reference:icnetadr

This is an old revision of the document!


ICnetAdr()

ICnetAdr() sets the start addresses of M, D and R memory.

ICnetAdr command operation flow

void ICnetAdr(uint16_t m_offset, uint16_t d_offset, uint16_t r_offset = 0)

Commands

Command Arguments Return Value Operation
ICnetAdr(m_offset, d_offset, r_offset) uint16_t m_offset
uint16_t d_offset
uint16_t r_offset = 0
void Sets the start addresses of M, D and R memory.

Example

void setup() {
  ICnetMem(64, 64, 16);  // Set the M·D·R memory sizes used by Cnet Slave.
  ICnetAdr(0, 0, 0);  // Set the start addresses of M·D·R memory.
  ICnetInit(Serial2, 1, 9600);  // Set the communication port, station number and baud rate.
  if (M != nullptr) M[0] = false;
}
 
void loop() {
  ICnet();  // Check incoming requests and process Cnet Slave responses.
  if (M != nullptr) M[0] = IdigitalRead(0, 5);  // Read the input repeatedly and update only if all samples match. If HIGH and LOW are mixed, retain the previous stable state.
  if (D != nullptr) digitalWrite(32, D[0] ? HIGH : LOW);
}

Precautions

  • Keep calling ICnet() in loop().
  • Set M/D/R sizes within the available SRAM.
  • When sharing memory with Modbus, check for duplicate allocation and address conventions. Both ICnetMem() and ImodbusRTUMem() reallocate shared M/D. Assign final size management to only one of them and initialize both protocols after the last reallocation.
  • Allocation functions do not return success status. Check whether M, D and R are nullptr before accessing them in user code.

Built-in Commands in the Same Category

en-us_commands/reference/icnetadr.1788796398.txt.gz · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki