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

query_modbus_data_list (수동 모드)

이 절에서는 수동(교시) 작업 중에 query_modbus_data_list를 사용하는 방법을 설명합니다. 이 함수는 컨트롤러에 등록된 현재 Modbus 신호 목록(입력과 출력 모두)을 가져옵니다. 작업자는 수동 설정이나 테스트 중에 통신 매핑을 확인하고, 연결된 장치를 모니터링하고, Modbus I/O 설정을 디버깅할 수 있습니다.

일반적인 사용법

  • 시스템 시운전 중 등록된 Modbus 입출력 채널을 모두 표시합니다.

  • 장치(예: PLC, 센서, 액추에이터)가 Modbus 네트워크에 제대로 연결되어 있는지 확인합니다.

  • 자동 시퀀스를 실행하기 전에 신호 이름, 데이터 주소, 값을 검증합니다.

  • Modbus 장치가 응답하지 않거나 예상과 다르게 동작할 때 진단 도구로 사용합니다.

참고

  • 이 함수는 읽기 전용 데이터를 반환하며, Modbus 연결을 수정하거나 새로 고치지 않습니다.

  • Modbus 항목을 관리하려면 add_modbus_signal과 del_modbus_signal을 사용하세요.

  • 주로 네트워크 설정이나 신호 등록 후 설정이 올바른지 확인할 때 사용합니다.

예제: 등록된 Modbus 신호 모두 표시

// 사전 조건:
// - 연결 완료(open_connection)
// - 수동(교시) 모드 활성
// - add_modbus_signal()로 Modbus 장치 설정 완료

LPMODBUS_DATA_LIST pList = drfl.query_modbus_data_list();
if (pList) {
    printf("-------------------------------------------\n");
    printf("[MODBUS SIGNAL LIST]\n");
    printf("Total Signals: %d\n", pList->_nCount);

    for (int i = 0; i < pList->_nCount; ++i) {
        const MODBUS_DATA& entry = pList->_tRegister[i];
        printf("-------------------------------------------\n");
        printf("Index       : %d\n", i);
        if (entry._iType == 0) {   // 0: Modbus TCP 방식
            const WRITE_MODBUS_TCP_DATA& data = entry._tData._tcp;
            printf("Name        : %s (TCP)\n", data._szSymbol);
            printf("Address     : %d\n", data._iRegIndex);
            printf("Type        : %d\n", data._iRegType);
            printf("Value       : %d\n", data._iRegValue);
        } else {                    // 1: Modbus RTU 방식
            const WRITE_MODBUS_RTU_DATA& data = entry._tData._rtu;
            printf("Name        : %s (RTU)\n", data._szSymbol);
            printf("Address     : %d\n", data._iRegIndex);
            printf("Type        : %d\n", data._iRegType);
            printf("Value       : %d\n", data._iRegValue);
        }
    }
    printf("-------------------------------------------\n");
} else {
    printf("[Modbus] No registered Modbus signals found.\n");
}

팁

  • 현장 장치 매핑이나 I/O 검증 중에 이 함수를 자주 사용하세요.

  • 신호 값이 갱신되지 않으면 Modbus 마스터/슬레이브 설정과 배선을 확인하세요.

  • get_modbus_input, set_modbus_output과 함께 사용해 실시간으로 테스트하세요.

  • 전체 자동화 시퀀스를 실행하지 않고 교시 모드에서 바로 Modbus 네트워크 통신을 디버깅할 때 적합합니다.