en-us_commands:reference:imcmem
Table of Contents
IMcMem()
IMcMem() sets the sizes of X, Y, M and D memory used by MC Protocol.
void IMcMem(uint16_t x_size, uint16_t y_size, uint16_t m_size, uint16_t d_size)
Commands
| Command | Arguments | Return Value | Operation |
|---|---|---|---|
IMcMem(x_size, y_size, m_size, d_size) | uint16_t x_size — Number of X input bitsuint16_t y_size — Number of Y output bitsuint16_t m_size — Number of M internal bitsuint16_t d_size — Number of D words | void | Sets the sizes of X, Y, M and D memory used by MC Protocol. |
Example
This example uses the MPINO-16A8R8T RS-485 port Serial2, input D22, and transistor output D39.
void setup() { IMcMem(32, 32, 64, 64); // Set the X·Y·M·D memory sizes used by MC Protocol. IMcAdr(0, 0, 0, 0); // Set the start addresses of X·Y·M·D memory. IMcInit(Serial2, 1, 9600); // Set the communication port, station number and baud rate. } void loop() { IMcProtocol(); // Check incoming requests and process MC Protocol responses. if (X != nullptr) X[0] = digitalRead(22) == HIGH; if (Y != nullptr) digitalWrite(39, Y[0] ? HIGH : LOW); }
Precautions
- Keep calling
IMcProtocol()inloop(). - Do not confuse hexadecimal addressing for X/Y with decimal addressing for M/D.
- Do not use X/Y/M/D before allocating the pointers.
- If Cnet or Modbus reallocates shared
M/Dmemory at runtime, the addresses used by MC Protocol change. Complete all memory size settings insetup()and do not call them again at runtime. - Allocation functions do not return success status. For nonzero sizes, verify the corresponding global pointer is not
nullptrbefore accessing it.
Built-in Commands in the Same Category
en-us_commands/reference/imcmem.txt · Last modified: by 127.0.0.1
