set_on_monitoring_modbus (Manual Mode)

This section explains how to use set_on_monitoring_modbus during Manual (Teach) operations to register a callback function that monitors Modbus I/O data exchanged between the robot controller and external devices such as PLCs or inverters in real time.

Typical usage

  • Observe Modbus coil/register states for debugging communication.

  • Monitor real-time signals (e.g., READY, RUN, FAULT, SPEED) from an external PLC or inverter.

  • Log Modbus traffic and diagnose incorrect addresses or value updates.

Note

  • The callback is triggered whenever Modbus data (coil, discrete input, holding, or input register) changes.

  • Must be registered after establishing a connection and after Modbus symbols are defined using add_modbus_signal(Manual Mode).

Example: Register and handle Modbus monitoring callback

// 1) Define callback function
void OnMonitoringModbus(const LPMONITORING_MODBUS pModbusData) {
    for (int i = 0; i < pModbusData->_iRegCount; ++i) {
        printf("[Modbus Monitor] Symbol: %s | Value: %u\n",
                    pModbusData->_tRegister[i]._szSymbol,
                    pModbusData->_tRegister[i]._iValue);
    }
}

// Preconditions:
// - Connection established (open_connection)
// - Manual (Teach) mode active
// - Modbus signals registered via add_modbus_signal()

// 2) Register callback for Modbus monitoring
drfl.set_on_monitoring_modbus(OnMonitoringModbus);
printf("[Modbus] Monitoring callback registered.\n");

// 3) Keep program running to receive updates
while (true) {
    std::this_thread::sleep_for(std::chrono::seconds(1));
}

Tips

  • See Rules for callback functions.

  • Ensure all Modbus tags are registered and reachable to receive consistent monitoring events.

  • Unregister or stop monitoring before disconnecting from the robot controller to avoid dangling callbacks.