이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.
최신 버전 정보는 1.33.5에서 확인하세요.
del_modbus_signal (수동 모드)
이 절에서는 3.2.3 통신에서 PLC나 인버터 통신을 테스트한 후 수동(교시) 작업 중에 del_modbus_signal로 이전에 만든 Modbus 심볼을 등록 해제하는 방법을 설명합니다.
일반적인 사용법
add_modbus_signal로 만든 Modbus 심볼 태그를 정리합니다.
수동 테스트를 반복할 때 심볼이 중복 등록되거나 메모리가 누수되는 것을 막습니다.
교시와 디버깅을 위해 Modbus 태그 목록을 일관되게 유지합니다.
참고
Modbus 항목을 해제하려면 테스트를 마친 후 항상 이 함수를 호출하세요.
query_modbus_data_list로 심볼이 제대로 제거되었는지 확인하세요.
예제: Modbus 심볼 등록, 테스트, 제거
// 사전 조건:
// - 연결 완료(open_connection)
// - 수동(교시) 모드, 서보/안전 상태 정상
// - 외부 PLC/인버터에 접근 가능
// 1) 테스트 심볼 등록
drfl.add_modbus_signal("PLC_READY", "192.168.0.10", 502,
MODBUS_REGISTER_TYPE_DISCRETE_INPUTS, 0, 0);
drfl.add_modbus_signal("PLC_START", "192.168.0.10", 502,
MODBUS_REGISTER_TYPE_COILS, 1, 0);
drfl.add_modbus_signal("INV_SPEED_CMD", "192.168.0.10", 502,
MODBUS_REGISTER_TYPE_HOLDING_REGISTER, 100, 0, 1);
// 2) 짧은 테스트 실행
bool ready = drfl.get_modbus_input("PLC_READY");
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) 테스트 후 심볼 삭제
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) printf("[Modbus] Symbols successfully deleted.\n");
else printf("[Modbus] One or more deletions failed.\n");
팁
네임스페이스가 어수선해지지 않도록 임시 심볼은 모두 제거하세요.
삭제에 실패하면 오타가 없는지, 심볼이 사용 중이지 않은지 확인하세요.
query_modbus_data_list를 다시 실행해 정리가 끝났는지 확인하세요.