10-06-2022, 04:53 PM
(Esta mensagem foi modificada pela última vez a: 10-06-2022, 04:54 PM por PSi4.)
No decorrer desta serão explicados todos os passos utilizados para o desenvolvimento do projeto proposto, isto é, o código será comentado de modo que todo conhecimento aplicado seja facilmente compreendido.
Num primeiro momento deve-se incluir as bibliotecas necessárias para que o código a ser inserido no Arduino UNO funcione adequadamente. Neste artigo utilizaremos somente a biblioteca desejada para estabelecer a comunicação entre o Arduino e o PSi4 através do protocolo Modbus. Neste exemplo utilizaremos a biblioteca SimpleModbusSlave10, facilmente encontrada na internet.
O código a ser utilizado foi derivado diretamente do exemplo disponível, com a biblioteca em questão.
Posteriormente pode-se observar um bloco chamado enum, neste estarão escritos os registradores que conterão as informações utilizadas na leitura ou no acionamento de dispositivos. Estes são denominados Registradores Holding e para declará-los basta escrever seus nomes seguidamente no código. Neste artigo, por exemplo, os registradores holding utilizados para conter os valores provenientes dos potenciômetros são chamados VALOR_POT1, VALOR_POT2 e VALOR_POT3. É importante ressaltar que após as declarações dos respectivos registradores, deve-se escrever HOLDING_REGS_SIZE (informação utilizada pela biblioteca para identificar a quantidade de registradores que estão sendo utilizados) e em seguida cria-se a variável holdingRegs para a manipulação dos registradores em questão.
Na função setup() utiliza-se primeiramente a função modbus_configure() para determinar os parâmetros necessários para estabelecer a conexão via comunicação serial utilizando o protocolo modbus. Os parâmetros mais importantes para este artigo são o segundo, o terceiro e o quarto que dizem respeito à taxa de transmissão de dados, o formato do pacote utilizado no protocolo modbus e a identificação do escravo, respectivamente. Note que estes três argumentos citados devem estar em conformidade com as configurações do PSi4. Em seguida temos a função modbus_update_comms() que também é responsável pela comunicação via Modbus.
O conteúdo da função loop() começa com a função modbus_update() utilizada para a atualização dos valores dos registradores citados anteriormente. Em seguida, realiza-se a leitura da tensão aplicada às portas de entrada analógica A0, A1 e A2 e posteriormente os valores encontrados são convertidos em números inteiros contidos no intervalo entre 0 e 1023 utilizando a função analogRead(). Estes são armazenados nos registradores holding identificados como VALOR_POT1, VALOR_POT2 e VALOR_POT3, respectivamente.
Num primeiro momento deve-se incluir as bibliotecas necessárias para que o código a ser inserido no Arduino UNO funcione adequadamente. Neste artigo utilizaremos somente a biblioteca desejada para estabelecer a comunicação entre o Arduino e o PSi4 através do protocolo Modbus. Neste exemplo utilizaremos a biblioteca SimpleModbusSlave10, facilmente encontrada na internet.
Código:
#include <SimpleModbusSlave.h>
O código a ser utilizado foi derivado diretamente do exemplo disponível, com a biblioteca em questão.
Posteriormente pode-se observar um bloco chamado enum, neste estarão escritos os registradores que conterão as informações utilizadas na leitura ou no acionamento de dispositivos. Estes são denominados Registradores Holding e para declará-los basta escrever seus nomes seguidamente no código. Neste artigo, por exemplo, os registradores holding utilizados para conter os valores provenientes dos potenciômetros são chamados VALOR_POT1, VALOR_POT2 e VALOR_POT3. É importante ressaltar que após as declarações dos respectivos registradores, deve-se escrever HOLDING_REGS_SIZE (informação utilizada pela biblioteca para identificar a quantidade de registradores que estão sendo utilizados) e em seguida cria-se a variável holdingRegs para a manipulação dos registradores em questão.
Na função setup() utiliza-se primeiramente a função modbus_configure() para determinar os parâmetros necessários para estabelecer a conexão via comunicação serial utilizando o protocolo modbus. Os parâmetros mais importantes para este artigo são o segundo, o terceiro e o quarto que dizem respeito à taxa de transmissão de dados, o formato do pacote utilizado no protocolo modbus e a identificação do escravo, respectivamente. Note que estes três argumentos citados devem estar em conformidade com as configurações do PSi4. Em seguida temos a função modbus_update_comms() que também é responsável pela comunicação via Modbus.
O conteúdo da função loop() começa com a função modbus_update() utilizada para a atualização dos valores dos registradores citados anteriormente. Em seguida, realiza-se a leitura da tensão aplicada às portas de entrada analógica A0, A1 e A2 e posteriormente os valores encontrados são convertidos em números inteiros contidos no intervalo entre 0 e 1023 utilizando a função analogRead(). Estes são armazenados nos registradores holding identificados como VALOR_POT1, VALOR_POT2 e VALOR_POT3, respectivamente.