Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
POST ESCRITO EN ESPAÑOL
Se simula um circuito transmisor de temperatura, o elemento primário (Sensor) é implementado mediante um potenciômetro el cual varia el voltaje de entrada. Para enviar a informação do sensor (Elemento Secundario), se implementado o protocolo MODBUS RTU, por meio de uma porta serial, um computador que será o maestro.
Como o maestro se elabora um programa em labVIEW haciendo o uso da biblioteca MODBUS que você implementa. El esclavo es capaz de recibir las siguientes funciones del maestro:
- Función 0X01
- Função 0x02
- Função 0x03
- Função 0x04
- Função 0x05
- Função 0x06
Los registros implementados en el esclavo son:
- Direccionamiento MODBUS (16 bits)
- Velocidad de transmisión (16 bits)
- Medición de la temperatura (16 bits)
- Bit de erro (1 bit)
- Bit de selección (1 bit) C o F
- Nivel máximo de medición (16 bits)
- Nivel mínimo de medición (16 bits)
Suprimentos
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciômetro
- Jumpers
- FTDI (FT232RL)
- Protoboard
Etapa 1: Circuitos
Circuito MCP3008 e Frambuesa Pi
Conexión Raspberry Pi 3 y FTDI:
- GND a GND
- TX a RX
- RX a TX
Etapa 2: Esclavo MODBUS En Raspberry Pi 3B
Como primer pazo necesitas configurar e instalar o sistema operativo no Raspberry Pi 3B. Sugiero instalar NOOBS from la pagina oficial. Luego configurar tu Raspberry Pi 3B para poder utilizar o porto serial e porto SPI.
(Pessoalmente, você pode conectar um mi raspi utilizando o VNC Viewer para ativar o servidor VNC de la raspi)
Originalmente, o valor do ADC representa que a temperatura medida pelo sensor está nos graus Celsius e al estar o bit de seleção em 1 este valor se passa a grados Fahrenheit.
Ya sabendo fazer tudo esto, o esclavo MODBUS se realiza com Python haciendo o uso da biblioteca Pyserial. Para a simulação do transmisor, consulte o trabalho com 4 listas:
- Bobinas
- Registros de entrada
- Registros de retenção
- Entradas Discretas
Cada lista se inicial de 6 elementos. Breve descrição dos elementos de cada lista:
- coils_lista [0] = bit de seleção (si está em 0 significa que a unidade de medicina é em Celsius caso contrario unidade de medicina em Fahrenheit)
- discrete_input [0] = bit de error (este bit se enciende cuando o valor de temperatura esta fuera del rango estabelecido entre temperatura máxima e mínima)
- inputRegister_lista [0] = Valor del ADC (sensor de temperatura simulado por um potenciômetro) dependente do valor de bit de seleção.
- holdingRegister_lista [0] = dirección de esclavo
- holdingRegister_lista [1] = valor de temperatura máxima
- holdingRegister_lista [2] = valor de temperatura mínimo
- holdingRegister_lista [3] = velocidad de transmisión.
El esclavo MODBUS a decisión personal cuenta con ciertos parámetros iniciales como lo son:
- Valor de temperatura máximo de 500 Celsius
- Valor de temperatura mínima 200 Celsius
- Baudrate inicial de 9600
- Dirección de esclavo 1
- Unidade de medicina inicial em Celsius.
La lógica aplicada es la siguiente:
No primer lugar se buscou ler todo o trama MODBUS canalizado pelo maestro, esto se hizo en Python mediante el código:
Em segundo lugar se buscou a função que o maestro solicitaba para luego validar se a cantidad de salidas pedidas por el maestro eran validas sino gerar um código de exceção 3, seguido de validar se o maestro pedía uma direção implementar a sino gerar um código de exceção 2 e, por último, realizar a instrução pedida segundo o código de função leído.
Y así sucesivamente con el resto de funciones implementadas.
Para o último passo em cada função, crie uma lista e mande um por um para o porto de série da solicitação do maestro.
Aclaro que no valide si el CRC enviado al esclavo era el correcto pero si lo hice para a mensagem enviada al maestro. A função de CRC para adaptar um mi código usando este link CRC MODBUS
Calculadora CRC
Códigos de exceção MODBUS
Etapa 3: Maestro LabVIEW (HMI)
A criação de um maestro que pode ser feito por meio de uma manera amigável para um usuário final fue hecha por meio de labVIEW e sua biblioteca MODBUS o cual facilita a criação de um maestro MODBUS RTU.
Veja uma maquina de estados em labVIEW con las siguientes opciones:
- iniciar
- conectar: aquí está a API de criar um novo modbus maestro com a opção habilitada de SERIAL.
- escribir: aquí se utiliza la funcion write single holding register y write single coil
- leer: aquí se configuran los registros y bobinas de importancia para la lectura del maestro.
Etapa 4: Máquina De Estados
continuación explicare detalhadamente la configuración en cada opción:
conectar:
Use a API de criação de um novo mestre MODBUS selecionando a opção "New Serial Master", defina os controles para configurar:
- Taxa de transmissão
- Paridade
- Porta serial (recurso Visa)
- Tipo de série (RTU)
- ID del esclavo.
escribir:
En escribir solo me interesaba que o maestro pudiera cambiar a temperatura máxima e mínima, o bit de seleção, atribuir uma nova direção ao maestro e por último atribuir um novo Baudrate al esclavo por lo que você sabia de antemano en que dires se encontrava a informação a la que el maestro accedería. Por lo que as funções utilizadas:
- Escreva bobina única
- Escreva um único registro de retenção.
olhar malicioso:
En leer solo me interesaba a leitura do bit de erro e o registro de entrada associado a uma variável primária.
Las funciones utilizadas funções:
- Ler registro de entrada
- Leia bobinas.
Etapa 5: painel frontal
O painel frontal em labVIEW é tratado o melhor possível que pode ser amigável para o usuário final. Por lo que se realizó lo siguiente:
Se instalou DMC GUI Suite para labVIEW para ter um mejor diseño en cuanto a controles e indicadores.
2 termómetros (1 para indicar a temperatura em Celsius e outro para indicar a temperatura em Fahrenheit).
Botón "Warning" que únicamente se enciende cuando o bit de error está encendido.
Botón para editar los rangos de temperatura a medir (para que unicamente haga el cambio al registro cuando se es presionado el botón) caso contrario siempre los estuviera modificando lo cual causaría un funcionamiento incorrecto.
Botón para editar a direção do esclavo (para que unicamente haga el cambio al registro cuando se es presionado el botón)
Botón para editar a taxa de baudrate del esclavo (para que unicamente haga el cambio al registro cuando se es presionado el botón)
Un botón para "Excepciones" (Para que genere una excepción dependiendo de la función MODBUS seleccionada)
Etapa 6: Archivos Python
En estos arquivos está implementado o esclavo MODBUS (Transmisor de temperatura) junto com o arquivo ADC para ler a variável de interés do sensor de temperatura (Simulado no canal 0 com um potenciômetro).
Me quedo pendiente implementar las funciones 15 e 16.
Etapa 7: HMI
Master Modbus RTU
Este é o maestro implementado em labVIEW. Hay cosas para mejorar, por ejemplo no pude corregir un error al conectar al primer intento, investigue y não encontré una solução para aplicarla.
Etapa 8: Resultado Final
Espero ayudar a algunas personas a comprender mejor la comunicación modbus RTU e uma implementação em labVIEW.
Recomendado:
Monitoramento de temperatura do Nodemcu ESP8266 usando DHT11 em um servidor da Web local - Obtenha a temperatura e umidade da sala no seu navegador: 6 etapas
Monitoramento de temperatura Nodemcu ESP8266 usando DHT11 em um servidor da Web local | Obtenha a temperatura e umidade da sala no seu navegador: Olá, pessoal, hoje vamos fazer um teste de umidade & sistema de monitoramento de temperatura usando ESP 8266 NODEMCU & Sensor de temperatura DHT11. A temperatura e a umidade serão obtidas no DHT11 Sensor & pode ser visto em um navegador cuja página da web será gerenciada
Leitura de temperatura usando o sensor de temperatura LM35 com Arduino Uno: 4 etapas
Lendo a temperatura usando o sensor de temperatura LM35 com o Arduino Uno: Olá, pessoal, neste instructables aprenderemos como usar o LM35 com o Arduino. Lm35 é um sensor de temperatura que pode ler valores de temperatura de -55 ° C a 150 ° C. É um dispositivo de 3 terminais que fornece tensão analógica proporcional à temperatura. Hig
Ponto de acesso (AP) NodeMCU ESP8266 para servidor Web com sensor de temperatura DT11 e impressão de temperatura e umidade no navegador: 5 etapas
ESP8266 NodeMCU Access Point (AP) para servidor Web com sensor de temperatura DT11 e impressão de temperatura e umidade no navegador: Olá pessoal, na maioria dos projetos usamos ESP8266 e na maioria dos projetos usamos ESP8266 como servidor web para que os dados possam ser acessados em qualquer dispositivo por wi-fi acessando o servidor da Web hospedado por ESP8266, mas o único problema é que precisamos de um roteador funcionando para
Como usar o sensor de temperatura DHT11 com Arduino e impressão de temperatura e umidade: 5 etapas
Como usar o sensor de temperatura DHT11 com Arduino e impressão de temperatura e umidade: O sensor DHT11 é usado para medir temperatura e umidade. Eles são amadores de eletrônicos muito populares. O sensor de umidade e temperatura DHT11 torna realmente fácil adicionar dados de umidade e temperatura aos seus projetos eletrônicos DIY. É por
ESP32 NTP Temperatura Sonda Cozinhar Termômetro com Correção Steinhart-Hart e alarme de temperatura: 7 etapas (com fotos)
Termômetro de cozinha de sonda de temperatura NTP ESP32 com correção de Steinhart-Hart e alarme de temperatura .: Ainda na jornada para concluir um "próximo projeto", "termômetro de cozinha de sonda de temperatura NTP ESP32 com correção de Steinhart-Hart e alarme de temperatura"; é um Instructable que mostra como adiciono uma sonda de temperatura NTP, piezo b