del_modbus_signal (Manual Mode)

This section explains how to use del_modbus_signal during Manual (Teach) operations to unregister previously created Modbus symbols after testing PLC or inverter communication in 3.2.3 Communication.

Typical usage

  • Clean up symbolic Modbus tags created via add_modbus_signal.

  • Prevent duplicate symbol registration or memory leaks during repeated manual tests.

  • Maintain a consistent Modbus tag list for teaching and debugging.

Note

  • Always call this function after finishing tests to release the Modbus entry.

  • Use query_modbus_data_list to verify that symbols were properly removed.

Example: Register, test, and remove Modbus symbols

#include "DRFLEx.h"
#include <thread>
#include <chrono>
#include <cstdio>
using namespace DRAFramework;

int main() {
    CDRFLEx drfl;
    // Preconditions:
    // - Connection established (open_connection)
    // - Manual (Teach) mode, servo/safety OK
    // - External PLC/inverter reachable

    // 1) Register test symbols
    drfl.add_modbus_signal("PLC_READY",     "192.168.0.10", 502,
                           MODBUS_REGISTER_TYPE_DISCRETE_INPUT, 0, 0);
    drfl.add_modbus_signal("PLC_START",     "192.168.0.10", 502,
                           MODBUS_REGISTER_TYPE_COIL, 1, 0);
    drfl.add_modbus_signal("INV_SPEED_CMD", "192.168.0.10", 502,
                           MODBUS_REGISTER_TYPE_HOLDING_REGISTER, 100, 0, 1);

    // 2) Perform a brief test
    bool ready = drfl.get_modbus_input("PLC_READY");
    std::printf("[READY] = %s\n", ready ? "ON" : "OFF");

    drfl.set_modbus_output("INV_SPEED_CMD", 1500);
    drfl.set_modbus_output("PLC_START", 1);
    std::this_thread::sleep_for(std::chrono::milliseconds(50));
    drfl.set_modbus_output("PLC_START", 0);

    // 3) Remove symbols after testing
    bool ok = true;
    ok &= drfl.del_modbus_signal("PLC_READY");
    ok &= drfl.del_modbus_signal("PLC_START");
    ok &= drfl.del_modbus_signal("INV_SPEED_CMD");

    if (ok) std::printf("[Modbus] Symbols successfully deleted.\n");
    else    std::printf("[Modbus] One or more deletions failed.\n");

    return 0;
}

Tips

  • Always remove all temporary symbols to avoid namespace clutter.

  • If deletion fails, check for typos or ensure the symbol is not actively in use.

  • Re-run query_modbus_data_list to confirm successful cleanup.