Neste blog, eu gostaria de fornecer uma pequena aplicação Qt Quick (qml) como um exemplo de uma conexão Modbus sobre TCP/IP.
Nos exemplos do Qt, eu só encontrei exemplos do QWidget para conexões Modbus, e depois de criar recentemente um aplicativo Qt Quick para isso, eu gostaria de fornecer uma versão reduzida dele como um exemplo.
Labrador
Para poder testar a aplicação, você precisa de um servidor Modbus ou um programa que "simule" tal servidor. Eu usei o "Modbus Server Pro" da http://www.apphugs.com/modbus-server.html para isso. Isso permite que você execute todos os cenários necessários.
Aplicação Qt
Primeiro de tudo: Como iria longe demais postar todo o código aqui, vou fornecer todo o código como um arquivo ZIP (veja abaixo).
Configurações
Primeiro, criei uma classe SettingsDialog simples que contém as opções de conexão. No exemplo simplificado, isso é apenas o "modbusServerUrl", o "responseTime" e o "numberOfRetries".
struct Settings {
QString modbusServerUrl = "192.168.2.86:1502";
int responseTime = 1000;
int numberOfRetries = 3;
};
As designações são - penso eu - autoexplicativas.
- modbusServerUrl = o número TCP/IP mais a porta do servidor Modbus, por exemplo, 192.168.2.86:502
- responseTime = o tempo máximo em ms em que uma resposta do servidor é esperada
- numberOfRetries = o número de tentativas fracassadas que serão aceitas.
Aplicação
onConnectButtonClicked()
A função onConnectButtonClicked() lê os dados de conexão do arquivo de configurações e estabelece a conexão com o servidor Modbus.
emReadButtonClicked()
Com onReadButtonClicked() vários readRequests são iniciados e os registradores correspondentes são lidos a partir do servidor Modbus. Os valores retornados são repassados para o qml como Q_PROPERTY via sinais de emissão e atualizados na interface do usuário.
Função de gravação
A função onWriteButtonClicked(int writeregister) é usada para gravar nos registradores do servidor Modbus. Aqui prevê-se que diferentes registradores podem ser escritos no servidor Modbus através da variável "writeregister".
Você pode baixar o aplicativo aqui ix-modbus-tcp-example.zip.