Passo 2: Elaboração do código que será inserido no Arduino UNO - Versão de Impressão +- Fórum Marrari (https://forum.marrari.com.br) +-- Fórum: PSi 4 (https://forum.marrari.com.br/forumdisplay.php?fid=1) +--- Fórum: Comunicação PSi4 e outros dispositivos (https://forum.marrari.com.br/forumdisplay.php?fid=13) +---- Fórum: Arduino (https://forum.marrari.com.br/forumdisplay.php?fid=14) +---- Tópico: Passo 2: Elaboração do código que será inserido no Arduino UNO (/showthread.php?tid=12) |
Passo 2: Elaboração do código que será inserido no Arduino UNO - PSi4 - 10-06-2022 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. 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. |