이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

set_modbus_output (수동 모드)

이 절에서는 수동(교시) 작업 중에 set_modbus_output으로 PLC/인버터 Modbus 레지스터에 값을 수동으로 써서 현장에서 검증하거나 매개변수를 튜닝하는 방법을 설명합니다.

일반적인 사용법

  • 코일 ON/OFF 명령(예: START/STOP, ENABLE)을 보냅니다.

  • 홀딩 레지스터에 설정값이나 제어 워드(예: 목표 속도, 토크 제한)를 씁니다.

  • 자동 프로그램을 실행하기 전에 통신 설정 중 장치 쓰기 동작을 검증합니다.

참고

  • COIL과 HOLDING_REGISTER 레지스터 유형만 지원합니다.

  • 다시 읽어 확인하려면 get_modbus_input을 사용하세요.

예제: 코일과 홀딩 레지스터 출력 쓰기

// 사전 조건:
// - 연결 완료(open_connection)
// - 수동(교시) 모드 활성
// - add_modbus_signal()로 Modbus 심볼 등록 완료

// 1) 테스트 심볼 등록(간소화)
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) 목표 속도 쓰기(예: 1500 = 15.00 Hz)
bool ok_speed = drfl.set_modbus_output("INV_SPEED_CMD", 1500);

// 3) 시작 코일 펄스 출력
bool ok_start = drfl.set_modbus_output("PLC_START", 1);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
drfl.set_modbus_output("PLC_START", 0);

// 4) 쓰기 성공 여부 확인
if (ok_speed && ok_start)
    printf("[Modbus] Output write successful.\n");
else
    printf("[Modbus] Write failed. Check connection or tag name.\n");

// 5) 정리
drfl.del_modbus_signal("PLC_START");
drfl.del_modbus_signal("INV_SPEED_CMD");

팁

  • 빠르게 연속으로 쓰지 말고, 명령 사이에 짧은 지연(≥ 50 ms)을 두세요.

  • 항상 다시 읽기나 표시 비트로 장치 응답을 확인하세요.

  • 사용 후에는 테스트 심볼을 모두 삭제해 교시 환경을 깔끔하게 유지하세요.