Taula de continguts:
- Subministraments
- Pas 1: Circuits
- Pas 2: Esclavo MODBUS a Raspberry Pi 3B
- Pas 3: Mestre LabVIEW (HMI)
- Pas 4: màquina d'estats
- Pas 5: Tauler frontal
- Pas 6: Archivos Python
- Pas 7: HMI
- Pas 8: Resultat final
Vídeo: Simulació transmissora de temperatura Modbus (Labview + Raspberry Pi 3): 8 Steps
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
POST ESCRITO EN ESPAÑOL
Es simulà un circuit transmissor de temperatura, l’element primari (Sensor) va ser implementat mitjançant un potenciometre el qual varia el voltatge d’entrada. Per enviar la informació del sensor (Elemento Secundario), si implementó el protocolo MODBUS RTU, per mitjà d’un port serial cap a una computadora que serà el mestre.
Com mestre es va elaborar un programa en labVIEW fent ús de la biblioteca MODBUS que ja implementa. L'esclau és capaç de rebre les següents funcions del mestre:
- Funció 0X01
- Funció 0x02
- Funció 0x03
- Funció 0x04
- Funció 0x05
- Funció 0x06
Els registres implementats en l'esclavo son:
- Direcció de MODBUS (16 bits)
- Velocitat de transmissió (16 bits)
- Medició de la temperatura (16 bits)
- Bit d'error (1 bit)
- Bit de selecció (1 bit) C o F
- Nivell màxim de medició (16 bits)
- Nivell mínim de medició (16 bits)
Subministraments
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciometro
- Saltadors
- FTDI (FT232RL)
- Protoboard
Pas 1: Circuits
Circuito MCP3008 y Frambuesa Pi
Connexió Raspberry Pi 3 i FTDI:
- GND a GND
- TX un RX
- RX a TX
Pas 2: Esclavo MODBUS a Raspberry Pi 3B
Com primer paquet que necessiteu configurar i instal·lar el vostre sistema operatiu al vostre Raspberry Pi 3B. Suggeriu instal·lar NOOBS des de la pàgina oficial. Luego configurar tu Raspberry Pi 3B per poder utilitzar el port serial i el port SPI.
(Personalmente yo me conectó a mi raspi usando VNC Viewer per a ell que activar el servidor VNC de la raspi)
Originalment el valor del ADC representa que la mesura de la temperatura pel sensor aquesta en graus Celsius i al estar el bit de selecció en 1 aquest valor es passa a graus Fahrenheit.
Ja sabent tot això, l’esclau MODBUS es va realitzar amb Python fent ús de la biblioteca Pyserial. Per a la simulació del transmissor es treballa amb 4 llistes:
- Bobines
- Registres d’entrada
- Tenint registres
- Entrades discretes
Cada llista se hizo de 6 elementos. Breve descripció dels elements de cada llista:
- coils_lista [0] = bit de selecció (si està en 0 significa que la unitat de medició és en Celsius cas contrari unitat de medició en Fahrenheit)
- discrete_input [0] = bit d'error (aquest bit s'encén quan el valor de temperatura està fora del rang establert entre temperatura màxima i mínima)
- inputRegister_lista [0] = Valor del ADC (sensor de temperatura simulado per un potenciometro) dependiendo del valor de bit de selección.
- holdingRegister_lista [0] = direcció d'esclau
- holdingRegister_lista [1] = valor de temperatura màxima
- holdingRegister_lista [2] = valor de temperatura mínima
- holdingRegister_lista [3] = velocitat de transmissió.
L'esclau MODBUS a decisió personal compte amb paràmetres inicials com a son:
- Valor de temperatura màxima 500 Celsius
- Valor de temperatura mínima 200 Celsius
- Baudrate inicial de 9600
- Dirección de esclavo 1
- Unitat de medició inicial en centígrads.
La lògica aplicada és el següent:
En primer lloc es va buscar tota la trama MODBUS enviada pel mestre, això es va fer en Python mitjançant el codi:
En segon lloc es va buscar la funció que el mestre va sol·licitar per després validar si la quantitat de salades pedides pel mestre eren valides fins a generar un codi d’excepció 3, seguit de validar si el mestre va pediar una direcció implementada fins a generar un codi d’excepció 2 i per últim realitzar la instrucció pedida segons el codi de funció deixat.
I així sucesivament amb el resta de funcions implementades.
Para ultimo paso en cada función crear una lista y mandar uno por uno por el puerto serial la petición del mestre.
Aclaro que no valide si el CRC enviada a l’esclau era el correcte però si el hice per al missatge enviat al mestre. La funció de CRC s'adapta al meu codi utilitzant aquest enllaç CRC MODBUS
Calculadora CRC
Codis d'excepció MODBUS
Pas 3: Mestre LabVIEW (HMI)
La creació d’un mestre que fora de cierta manera amigable per a un usuari final va ser aquí per mitjà de labVIEW i la seva biblioteca MODBUS la qual cosa va facilitar la creació d’un mestre MODBUS RTU.
Es va elaborar una màquina d'estats en labVIEW amb les següents opcions:
- init
- connectar: aquí està l’API de crear un nou mestre modbus amb l’opció habilitada de SERIAL.
- escriure: aquí s'utilitza la funció escriure registre de registre únic i escriure una sola bobina
- llegeix: aquí es configuren els registres i bobines d’importància per a la lectura del mestre.
Pas 4: màquina d'estats
continuació expliquem detalladament la configuració en cada opció:
connectar:
Utilitzeu l'API per crear un nou mestre MODBUS seleccionant l'opció de "New Serial Master", crear controls per configurar:
- Velocitat de transmissió
- Paritat
- Port sèrie (recurs Visa)
- Tipus de sèrie (RTU)
- ID del esclavo.
escriure:
En escribir solo me interesaba que el mestre pudiera canviar la temperatura màxima i mínima, el bit de selecció, assignar una nova direcció al mestre i per últim assignar un nou Baudrate a l'esclavo per lo que ya sabia de antemano en que direcciones se encontraba la información a la que el mestre accedeix. Per lo que les funcions utilitzades van ser:
- Escriu una sola bobina
- Escriviu Registre de participació única.
veure:
En leer solo me interessaba la lectura del bit de error y el input register asociado a mi variable primaria.
Les funcions utilitzades van ser:
- Llegiu el registre d’entrada
- Llegiu Bobines.
Pas 5: Tauler frontal
El panel frontal en labVIEW es va tractar el millor possible que fos amigable per a l’usuari final. Per lo que es va realitzar el següent:
S'ha instal·lat DMC GUI Suite per a labVIEW per tenir un millor disseny en quant a controls i indicadors.
2 termómetros (1 para indicar la temperatura en Celsius y otro para indicar la temperatura en Fahrenheit).
Botó "Warning" que únicament s'encén quan el bit d'error està encès.
Botó per editar els rangs de temperatura a medir (per a que únicament es faci el canvi al registre quan es presiona el botó) cas contrari sempre que l’estuviera modifiqui el que causaria un funcionament incorrecte.
Botó per editar la direcció de l’esclau (per a que únicament faci el canvi al registre quan es presiona el botó)
Botó per editar el baudrate de l’esclau (per a que únicament faci el canvi al registre quan es presiona el botó)
Un botó per a "Excepcions" (Per a què genere una excepció depenent de la funció MODBUS seleccionada)
Pas 6: Archivos Python
En aquests fitxers està implementat l’esclau MODBUS (Transmisor de temperatura) junt amb l’arxiu ADC per llegir la variable d’interès del sensor de temperatura (Simulat en el canal 0 amb un potenciometre).
Me quedo pendiente implementar las funciones 15 y 16.
Pas 7: HMI
Màster Modbus RTU
Aquest és el mestre implementat en labVIEW. Hi ha coses per millorar, per exemple no es pot corregir un error al connectar-lo al primer intent, investigar i no trobar una solució per aplicar-la.
Pas 8: Resultat final
Espero ajudar a algunes persones a comprendre millor la comunicació modbus RTU i una implementació en labVIEW.
Recomanat:
Tauler de commutació de simulació de vol de bricolatge: 7 passos (amb imatges)
Tauler de commutació de simulació de vol de bricolatge: després de passar molts anys a la comunitat de simuladors de vol i involucrar-me en avions cada cop més complicats, em vaig trobar anhelant la possibilitat de mantenir les mans en interruptors físics en lloc d’intentar volar amb la mà dreta mentre feia servir el m
Com fer un registre de dades en temps real de la humitat i la temperatura amb Arduino UNO i targeta SD - Simulació de registre de dades DHT11 a Proteus: 5 passos
Com fer un registre de dades en temps real d’humitat i temperatura amb Arduino UNO i targeta SD | Simulació de registre de dades DHT11 a Proteus: Introducció: hola, aquest és Liono Maker, aquí teniu l'enllaç de YouTube. Estem fent un projecte creatiu amb Arduino i treballem en sistemes incrustats
Com fer registre de temperatura i intensitat de llum - Simulació Proteus - Fritzing - Liono Maker: 5 passos
Com fer registre de temperatura i intensitat de llum | Simulació Proteus | Fritzing | Liono Maker: Hola, aquest és Liono Maker, aquest és el meu canal oficial de YouTube. Aquest és un canal de YouTube de codi obert. Hi ha l'enllaç: canal de YouTube Liono Maker, hi ha l'enllaç de vídeo: Temp & registre d'intensitat lleugera En aquest tutorial aprendrem a fer Temper
Antena transmissora FM de baixa potència des de tubs agrícoles: 8 passos (amb imatges)
Antena transmissora FM de baixa potència provinent de tubs agrícoles: no és tan difícil construir una antena transmissora FM; hi ha molts dissenys per aquí. Volíem fer un disseny a partir de peces que podríeu aconseguir a qualsevol punt del món per a un conjunt de quatre estacions comunitàries (aviat 16!) Que vam començar al nord d’Uganda
Antena telescòpica transmissora FM: 6 passos
Antena telescòpica del transmissor FM: està malalt i cansat d’interferències amb el transmissor FM? Per descomptat, podeu ignorar-la la majoria de les vegades, però tots sabem que la música country que us entra i surt gaudint del vostre podcast us torna a embogir lentament. La resposta: afegiu un gran telèfon vintage