TCP/IP 연결이 있는 Qt Modbus

이 블로그에서는 TCP/IP를 통한 Modbus 연결의 예로 작은 Qt Quick 애플리케이션(qml)을 제공하고자 합니다.
Qt 예제에서 Modbus 연결에 대한 QWidget 예제 만 찾았으며 최근에이 Qt Quick 응용 프로그램을 만든 후 슬림 다운 버전을 예제로 제공하려고합니다.

응용 프로그램을 테스트하려면 Modbus 서버 또는 이러한 서버를 "시뮬레이션"하는 프로그램이 필요합니다. 이를 위해 http://www.apphugs.com/modbus-server.html 의 "Modbus Server Pro"를 사용했습니다. 이를 통해 필요한 모든 시나리오를 실행할 수 있습니다.

Qt 응용 프로그램

우선, 여기에 모든 코드를 게시하기에는 너무 멀기 때문에 전체 코드를 ZIP 파일로 제공하겠습니다 (아래 참조).

설정

먼저 연결 옵션이 포함된 간단한 SettingsDialog 클래스를 만들었습니다. 단순화 된 예제에서 이것은 "modbusServerUrl", "responseTime"및 "numberOfRetries"입니다.

    struct Settings {
        QString modbusServerUrl = "192.168.2.86:1502";
        int responseTime = 1000;
        int numberOfRetries = 3;
    };

지정은 - 내 생각에 - 자명합니다.

  • modbusServerUrl = TCP/IP 번호와 Modbus 서버 포트, 예: 192.168.2.86:502
  • responseTime = 서버의 응답이 대기하는 최대 시간(ms)
  • numberOfRetries = 수락할 실패한 시도 횟수입니다.

신청서

onConnectButtonClicked()

onConnectButtonClicked() 함수는 설정 파일에서 연결 데이터를 읽고 Modbus 서버에 대한 연결을 설정합니다.

onReadButtonClicked()

onReadButtonClicked()를 사용하면 다양한 readRequest가 시작되고 해당 레지스터를 Modbus 서버에서 읽습니다. 반환 된 값은 방출 신호를 통해 Q_PROPERTY qml에 전달되고 사용자 인터페이스에서 업데이트됩니다.

쓰기 함수

onWriteButtonClicked(int writeregister) 함수는 Modbus 서버 레지스터에 쓰는 데 사용됩니다. 여기서는 변수 "writeregister"를 통해 Modbus 서버에 다른 레지스터를 쓸 수 있다고 가정합니다.

여기에서 ix-modbus-tcp-example.zip 응용 프로그램을 다운로드할 수 있습니다.