Sommario:
- Forniture
- Passaggio 1: circuiti
- Passaggio 2: Esclavo MODBUS in Raspberry Pi 3B
- Passaggio 3: Maestro LabVIEW (HMI)
- Fase 4: Máquina De Estados
- Passaggio 5: pannello frontale
- Passaggio 6: Archivos Python
- Passaggio 7: HMI
- Fase 8: Risultato finale
Video: Trasmettitore di simulazione di temperatura Modbus (Labview + Raspberry Pi 3): 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
POST ESCRITO EN ESPAÑOL
Se simuló un circuito transmisor de temperatura, el elemento primario (Sensor) fue implementado mediante un potenciometro el cual varia el voltaje de entrada. Per l'informazione del sensore (Elemento Secundario), si implementa il protocollo MODBUS RTU, per mezzo di un porto seriale hacia una computadora que será el maestro.
Como maestro se elaboró un programa en labVIEW haciendo uso de la libreria MODBUS que ya implementa. El esclavo es capaz de recibir las siguientes funciones del maestro:
- Funzione 0X01
- Funzione 0x02
- Funzione 0x03
- Funzione 0x04
- Funzione 0x05
- Funzione 0x06
Los registros implementados en el esclavo son:
- Direzione MODBUS (16 bit)
- Velocità di trasmissione (16 bit)
- Medicina della temperatura (16 bit)
- Bit di errore (1 bit)
- Bit di selezione (1 bit) C o F
- Nivel massimo di medicina (16 bit)
- Nivel mínimo de medición (16 bit)
Forniture
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenziometro
- ponticelli
- FTDI (FT232RL)
- Protoboard
Passaggio 1: circuiti
Circuito MCP3008 e Frambuesa Più
Conexión Raspberry Pi 3 e FTDI:
- GND a GND
- TX e RX
- RX e TX
Passaggio 2: Esclavo MODBUS in Raspberry Pi 3B
Como primer pazo necesitas configurar e instalar tu sistema operativo en tu Raspberry Pi 3B. Sugiero instalar NOOBS desde la pagina oficial. Segui la configurazione di Raspberry Pi 3B per poter utilizzare il porto seriale e il porto SPI.
(Personalmente yo me conectó a mi raspi utilizando VNC Viewer para ello hay que activar el servidor VNC de la raspi)
Originalmente el valor del ADC reppresenta que la temperatura medida por el sensor esta en grados Celsius y al estar el bit de selección en 1 este valor se pasa a grados Fahrenheit.
Ya sabiendo todo esto, el esclavo MODBUS se realizó con Python haciendo uso de la librería Pyserial. Para la simulazione del trasmettitore se trabajo con 4 liste:
- bobine
- Registri di ingresso
- Registri di partecipazione
- Ingressi discreti
Cada lista se hizo de 6 elementi. Breve descrizione degli elementi di cada lista:
- coils_lista[0] = bit de selección (si está en 0 significa que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
- discrete_input[0] = bit de error (este bit se enciende cuando el valor de temperatura esta fuera del rango establecido entre temperatura máxima y mínima)
- inputRegister_lista[0] = Valor del ADC (sensor de temperatura simulado por un potenciometro) dependeendo del valor de bit de selección.
- holdingRegister_lista[0] = dirección de esclavo
- holdingRegister_lista[1] = valore di temperatura massima
- holdingRegister_lista[2] = valore di temperatura minimo
- holdingRegister_lista[3] = velocità di trasmissione.
El esclavo MODBUS a decisione personale cuenta con ciertos parámetros iniciales come lo son:
- Valore di temperatura massima 500 Celsius
- Valore di temperatura minimo 200 Celsius
- Baudrate iniziale di 9600
- Direzione di esclavo 1
- Unidad de medición inicial en Celsius.
La logica si applica es la siguiente:
En primer lugar se buscó leer toda la trama MODBUS enviada por el maestro, esto se hizo en Python mediante el código:
En segundo lugar se buscó la función que el maestro sollecitato para luego validar si la cantidad de salidas pedidas por el master eran validas sino general un codice di eccezione 3, seguido de validar si el maestro pedia una direzione implementata sino generar un codice di eccezione 3 y por ultimo realizar la instrucción pedida según el código de función leído.
Y así sucesivamente con el resto de funciones implementadas.
Per ultimo paso en cada función crear una lista e mandar uno por uno por el puerto serial la petición del maestro.
Aclaro que no valide si el CRC enviada al esclavo era el Correcto pero si lo hice para el mensaje enviado al maestro. La función de CRC la Adapte a mi código usando este link CRC MODBUS
Calcolatore CRC
Codice di eccezione MODBUS
Passaggio 3: Maestro LabVIEW (HMI)
La creazione di un maestro che fua di cierta manera amigable per un usuario finale fue hecha per medio de labVIEW e su libreria MODBUS la quale facilita la creazione di un maestro MODBUS RTU.
Se elaboró una macchina di stati in labVIEW con le seguenti opzioni:
- dentro
- collegare: ottenere l'API per creare un nuovo maestro modbus con l'opzione abilitata di SERIAL.
- escribir: aquí se utiliza la funcion write single holding register y write single coil
- leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.
Fase 4: Máquina De Estados
continuación explicare detalladamente la configuración en cada opción:
connettore:
Se si utilizza l'API per creare un nuovo maestro MODBUS selezionando l'opzione di "New Serial Master", si creano i controlli per configurare:
- Baudrate
- Parità
- Porta seriale (risorsa per il visto)
- Tipo di serie (RTU)
- ID dell'esclavo.
iscritto:
En escribir solo me interesaba que el maestro pudiera cambiar la temperatura máxima y mínima, el bit de selección, asignarle una nueva dirección al maestro y por ultimo assignarle un nuevo Baudrate al esclavo por lo que ya sabia de antemano en que direcciones se encontraba a la que el maestro accedería. Per lo que las funciones utilizadas fueron:
- Scrivi single coil
- Scrivere un unico registro di partecipazione.
leera:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi variable primaria.
Le funzioni utilizadas fueron:
- Leggi il registro di input
- Leggi bobine.
Passaggio 5: pannello frontale
El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. Per lo que se realizó lo siguiente:
Installa DMC GUI Suite per labVIEW per avere un miglior design e controllare i controlli e gli indicatori.
2 termometri (1 per indicare la temperatura in gradi Celsius e altri per indicare la temperatura in gradi Fahrenheit).
Botón "Warning" que únicamente se enciende cuando el bit de error está encendido.
Botón para editar los rangos de temperatura a medir (per que únicamente haga el cambio al registro cuando se es presionado el botón) caso contrario siempre los estuviera modificando lo cual causaría un funcionamiento Correcto.
Botón para editar la dirección del esclavo (para que únicamente haga el cambio al registro cuando se es presionado el botón)
Botón para editar el baudrate del esclavo (para que únicamente 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 selectionada)
Passaggio 6: Archivos Python
In questo archivio è stato implementato l'esclavo MODBUS (Trasmettitore di temperatura) in corrispondenza dell'archivio ADC per leggere la variabile di interesse del sensore di temperatura (Simulato nel canale 0 con un potenziometro).
Me quedo pendiente implementar las funciones 15 e 16.
Passaggio 7: HMI
Master Modbus RTU
Questo è il maestro implementato in labVIEW. Hay cosas para mejorar, por ejemplo no pude corregir un error al conectar al primer intento, investigue y no encontré una solución para aplicarla.
Fase 8: Risultato finale
Espero ayudar a algunas personas e comprender mejor la comunicazione modbus RTU e una implementazione in labVIEW.
Consigliato:
Come creare un registratore di dati in tempo reale di umidità e temperatura con Arduino UNO e SD-Card - Simulazione del data logger DHT11 in Proteus: 5 passaggi
Come creare un registratore di dati in tempo reale di umidità e temperatura con Arduino UNO e SD-Card | Simulazione DHT11 Data-logger in Proteus: Introduzione: ciao, sono Liono Maker, ecco il link YouTube. Stiamo realizzando un progetto creativo con Arduino e lavoriamo su sistemi embedded.Data-Logger: Un data logger (anche data-logger o data recorder) è un dispositivo elettronico che registra i dati nel tempo w
Trasmettitore Flysky RF alimentato tramite USB + connessione del segnale via cavo al PC + software di simulazione gratuito: 6 passaggi
Trasmettitore Flysky RF alimentato tramite USB + connessione del segnale via cavo al PC + software di simulazione gratuito: se sei come me, ti piacerebbe testare il tuo trasmettitore RF e imparare prima di far schiantare il tuo caro aereo/drone RF. Questo ti darà ulteriore divertimento, risparmiando un sacco di soldi e tempo. Per farlo, il modo migliore è connettere il tuo trasmettitore RF a te
Come effettuare la registrazione della temperatura e dell'intensità della luce - Simulazione Proteus - Fritzing - Liono Maker: 5 passaggi
Come effettuare la registrazione della temperatura e dell'intensità della luce | Simulazione Proteus | Fritzing | Liono Maker: Ciao, sono Liono Maker, questo è il mio canale YouTube ufficiale. Questo è un canale YouTube open source. Ecco il link: Canale YouTube di Liono Maker ecco il link del video: Temp & registrazione dell'intensità della luceIn questo tutorial impareremo come creare Temper
Trasmettitore radio Raspberry Pi: 4 passaggi
Trasmettitore radio Raspberry Pi: aggiornamento recente (14/02/19): queste istruzioni non sono più aggiornate e non devono essere utilizzate con nessun pi oltre all'RPI originale. Si prega di procedere con queste istruzioni a proprio rischio a prescindere. Leggi i commenti per vedere cosa hanno gli altri
Trasmettitore Raspberry Pi + Xbee RC: 5 passaggi
Trasmettitore Raspberry Pi + Xbee RC: questa istruzione ti mostrerà cosa ho fatto per creare il mio trasmettitore Raspberry Pi Zero + Xbee RC