Fórum Marrari
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.

[Imagem: DxPzOAdd2ta-2tQ6xplaIswp1AfVHnQ4UlBT1jEs...-ggMC-bHug]

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.

[Imagem: 7Nq-y1S4MNkfgewShO4MnJP9I5T7h6UYr3LYio5d...c38o59pNuw]

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.

[Imagem: hchhnIqFE5BD_e6cwmdU6NpyiMvumbi5-Frsy5Ed...L1gkIS0z4Q]