Cov txheej txheem:
- Khoom siv
- Kauj ruam 1: Circuitos
- Kauj Ruam 2: Esclavo MODBUS En Raspberry Pi 3B
- Kauj Ruam 3: Maestro LabVIEW (HMI)
- Kauj Ruam 4: Máquina De Estados
- Kauj Ruam 5: Pem Hauv Ntej Vaj Huam Sib Luag
- Kauj Ruam 6: Archivos Python
- Kauj ruam 7: HMI
- Kauj ruam 8: Resultado Final
Video: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:25
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. Para enviar la información del sensor (Elemento Secundario), si implementó el protocolo MODBUS RTU, por medio de un puerto serial hacia una computadora que será el maestro.
Como maestro se elaboró un programa en labVIEW haciendo uso de la librería MODBUS que ya implementa. El esclavo es capaz de recibir las siguientes funciones del maestro:
- Kev ua haujlwm 0x01
- Kev ua haujlwm 0x02
- Kev 0x03
- Kev 0x04
- Kev 0x05
- Kev 0x06
Los registros implementados en el esclavo tus tub:
- Direccionamiento MODBUS (16 khoom)
- Velocidad de transmisión (16 khoom)
- Medición de la temperatura (16 khoom)
- Bit de error (1 ntsis)
- Bit de selección (1 ntsis) C o F.
- Nivel máximo de medición (16 khoom)
- Nivel mínimo de medición (16 khoom)
Khoom siv
- Lab xam
- Raspberry Pi 3
- TIAB SA 3008
- 1 Kev ntsuas ntsuas
- Cov neeg dhia
- FTDI (FT232RL)
- Protoboard
Kauj ruam 1: Circuitos
Circuito MCP3008 y Frambuesa Pi
Conexión Raspberry Pi 3 y FTDI:
- GND thiab GND
- TXX to RX
- RX to TXI
Kauj Ruam 2: Esclavo MODBUS En 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. Luego configurar tu Raspberry Pi 3B para poder utilizar el puerto serial y puerto 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 sawv cev rau que la temperatura medida por el sensor esta en grados Celsius y al estar el me ntsis 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 simulación del transmisor se trabajo con 4 listas:
- Coils
- Cov tswv yim sau npe
- Tuav Sau Npe
- Cov lus tsis sib xws
Cada lista se hizo de 6 elementos. Breve descripción de los elementos de cada lista:
- coils_lista [0] = me ntsis 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] = me ntsis 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) dependiendo del valor de bit de selección.
- tuavRegister_lista [0] = dirección de esclavo
- tuavRegister_lista [1] = tus nqi ntsuas kub máxima
- tuavRegister_lista [2] = tus nqi ntsuas kub mínimo
- tuavRegister_lista [3] = velocidad de transmisión.
El esclavo MODBUS txiav txim siab tus kheej cuenta con ciertos parámetros iniciales como lo tub:
- Qhov ntsuas kub tshaj 500 Celsius
- Qhov ntsuas kub ntawm qhov kub txog 200 Celsius
- Baudrate tsis raug cai ntawm 9600
- Dirección de esclavo 1
- Unidad de medición inicial en Celsius.
La lógica aplicada 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 solicitaba para luego validar si la cantidad de salidas pedidas por el maestro eran validas sino generar un código de excepción 3, seguido de validar si el maestro pedía una dirección implementada sino generar unó digo 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.
Para ultimo paso en cada función crear una lista y 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
CRC tshuab xam zauv
Códigos de excepción MODBUS
Kauj Ruam 3: Maestro LabVIEW (HMI)
La creación de un maestro que fuera de cierta manera amigable para un usuario zaum kawg fue hecha por medio de labVIEW y su librería MODBUS la cual facilitaba la creación de un maestro MODBUS RTU.
Se elaboró una maquina de estados en labVIEW con las siguientes opciones:
- pib
- conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
- escribir: aquí se utiliza la funcion sau ib leeg tuav npe sau thiab sau ib zaug
- leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.
Kauj Ruam 4: Máquina De Estados
continuación explicare detalladamente la configuración en cada opción:
sib tham:
Se utilizó el API de crear un nuevo maestro MODBUS seleccionando la opción de "Tus Xib Hwb Tshiab", se crearon tswj kev teeb tsa:
- Baudrate
- Parity
- Serial Port (Visa Resource)
- Hom Serial (RTU)
- ID del esclavo.
sau ntawv:
En escribir solo kuv interesaba que el maestro pudiera cambiar la temperatura máxima y mínima, el me de de selección, asignarle una nueva dirección al maestro y por ultimo asignarle un nuevo Baudrate al esclavo por lo que ya sabia de antemano en que direcciones se enirebion la la el el maestro accedería. Los ntawm que las las funciones siv cov fueron:
- Sau ib kauj
- Sau ib leeg tuav npe.
leer:
En leer solo kuv interesaba la lectura del bit de yuam kev y el input register asociado a mi variable primaria.
Las funciones utilizadas fueron:
- Nyeem Sau Npe Sau Npe
- Nyeem Coils.
Kauj Ruam 5: Pem Hauv Ntej Vaj Huam Sib Luag
El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario zaum kawg. Los ntawm qhov no nws yog qhov tseeb:
Se instaló DMC GUI Suite para labVIEW para tener un mejor diseño en cuanto a controles e indicadores.
2 termómetros (1 para indicar la temperatura en Celsius y otro para indicar la temperatura en Fahrenheit).
Botón "Warning" que únicamente se enciende cuando el bit de yuam kev está encendido.
Botón para editar los rangos de temperatura a medir (para 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 incorrecto.
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 rau editar el baudrate del esclavo (para que únicamente haga el cambio al registro cuando se es presionado el botón)
Un botón rau "Excepciones" (Para que genere una excepción dependiendo de la función MODBUS seleccionada)
Kauj Ruam 6: Archivos Python
En estos archivos está implementado el esclavo MODBUS (Transmisor de temperatura) junto con el archivo ADC para leer la variable de interés del sensor de temperatura (Simulado en el kal 0 con un potenciometro).
Me quedo pendiente implementar las funciones 15 y 16.
Kauj ruam 7: HMI
Tswv Modbus RTU
Este es el maestro implementado en labVIEW. Hay cosas para mejorar, por ejemplo no pude corregir un error al conectar al primer intento, tshawb nrhiav y tsis muaj kev nkag siab ib qho solución para aplicarla.
Kauj ruam 8: Resultado Final
Espero ayudar a algunas personas a comprender mejor la comunicación modbus RTU y una implementación en labVIEW.
Pom zoo:
Muaj HMI thiab Arduinos hauv MODBUS RTU: 4 Cov Kauj Ruam
Muaj HMI thiab Arduinos hauv MODBUS RTU: Hauv qhov kev qhia no kuv yuav piav qhia piv txwv ntawm kev sib txuas lus ntawm kev lag luam HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) thiab Arduino UNO (10EUROS). Lub network yuav ua haujlwm nyob rau hauv qhov tshwj xeeb thiab muaj zog thiab muaj kev lag luam
Digistump thiab Modbus RTU: 6 Kauj Ruam
Digistump thiab Modbus RTU: Cov neeg uas tau pom kuv cov lus qhia ntawm kev sib txuas lus ntawm Modbus RTU thiab Raspberry Pi paub tias kuv tab tom npaj phiaj xwm rau siv lub tsev cog khoom kom zoo. Kuv tau ua 2 lub PCB me me uas tuaj yeem tso rau hauv lub thawv ntawv. Qhov txuas mus rau PCB's Kuv yuav suav nrog
Modbus TCP Kev Sib Txuas Ntawm Arduino thiab Cov Khoom Siv: 3 Cov Kauj Ruam
Modbus TCP Kev Sib Txuas Ntawm Arduino thiab Cov Khoom Siv Khoom: Ib txoj hauv kev los tswj Arduino pawg thawj coj nrog HMI kev lag luam thiab txuas nws mus rau kev lag luam network nrog Modbus TCP kev sib tham
Construcción De Un Transmisor De Audio Por Laser: 3 Kauj Ruam
Construcción De Un Transmisor De Audio Por Laser: Construcci ń n de un transmisor de audio con laser
ESP32 Modbus Master TCP: 7 Kauj Ruam
ESP32 Modbus Master TCP: Hauv chav kawm no, koj yuav ua haujlwm ESP32 processor los ua Modbus TCP Master.Peb yuav siv ob lub cuab yeej, uas muaj cov txheej txheem no: Moduino ESP32 thiab Pycom. Ob lub cuab yeej tau ua haujlwm hauv MicroPytthon ib puag ncig. Peb Modbus Qhev yuav yog PC khoos phis tawj nrog M