Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Obwody
- Krok 2: Esclavo MODBUS En Raspberry Pi 3B
- Krok 3: Maestro LabVIEW (HMI)
- Krok 4: Máquina De Estados
- Krok 5: Panel przedni
- Krok 6: Archiwa Pythona
- Krok 7: HMI
- Krok 8: Wynik końcowy
Wideo: Symulacja przetwornika temperatury Modbus (Labview + Raspberry Pi 3): 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
POST ESCRITO EN ESPAÑOL
Se simuló un circuito transmisor de temperatura, el elemento primario (czujnik) 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 porto szeregowy hacia una computadora que será el maestro.
Como maestro se opracować program pl labVIEW korzysta z biblioteki MODBUS que ya implementa. El esclavo es capaz de recibir las siguientes funciones del maestro:
- Funkcja 0X01
- Funkcja 0x02
- Funkcja 0x03
- Funkcja 0x04
- Funkcja 0x05
- Funkcja 0x06
Los registros implementados en el esclavo son:
- Bezpośrednio do MODBUS (16 bitów)
- Prędkość transmisji (16 bitów)
- Medición de la temperatura (16 bitów)
- Błąd bitu (1 bit)
- Bit de selección (1 bit) C o F
- Nivel maximo de medición (16 bitów)
- Nivel minimo de medición (16 bitów)
Kieszonkowe dzieci
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potencjometr
- Zworki
- FTDI (FT232RL)
- Płyta prototypowa
Krok 1: Obwody
Circuito MCP3008 i Frambuesa Pi
Połączenie Raspberry Pi 3 i FTDI:
- GND i GND
- TX i RX
- RX i TX
Krok 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. Połącz się z konfiguracją Raspberry Pi 3B do obsługi portu szeregowego i portu 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 ADCpresenta 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, aby zrealizować z Pythona, korzystając z biblioteki Pyserial. Para la simulación del transmisor se trabajo con 4 listas:
- Cewki
- Rejestry wejściowe
- Rejestry gospodarstwa
- Wejścia dyskretne
Cada lista zawiera 6 elementów. Breve descripción de los elementos de 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 (czujnik de temperatura simulado por un potenciometro) dependiendo del valor de bit de selección.
- holdingRegister_lista[0] = kierunek 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 parametros iniciales como lo son:
- Valor de temperatura máxima 500 Celsjusza
- Valor de temperatura minima 200 Celsjusza
- Początkowa prędkość transmisji 9600
- Kierunek 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óna de décéción de dérección 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.
Za ostatni paso pl cada funkcja crear una lista y mandar uno por uno por el porto 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
Kalkulator CRC
Kody wyjątków MODBUS
Krok 3: Maestro LabVIEW (HMI)
Tworzenie maestro que fuera de cierta manera amigable para unuario final fue hecha por medio de labVIEW y su librería MODBUS ułatwia tworzenie maestro MODBUS RTU.
Se elaboró una maquina de estados en labVIEW con las siguientes opciones:
- w tym
- Conectar: aquí está el API, aby stworzyć nowy modbus maestro z opcją habilitada de SERIAL.
- escribir: aquí se utiliza la funcion napisz pojedynczy rejestr trzymania y napisz pojedynczą cewkę
- leer: aquí se configuran los registros y cewki de importancia para la lectura del maestro.
Krok 4: Máquina De Estados
continuación explicare detalladamente la configuración en cada opción:
konektar:
Użyj interfejsu API, aby utworzyć nowy maestro MODBUS, wybierając opcję „New Serial Master”, se crearon controles para configurar:
- Szybkość transmisji
- Parytet
- Port szeregowy (zasób wizowy)
- Typ szeregowy (RTU)
- Identyfikator esclavo.
zeznawać:
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 asignarle un nuevo Baudrate al esclavo por lo que ya selección sabia de anrección a la que el maestro accedería. Por lo que las funciones utilizadas fueron:
- Napisz pojedynczą cewkę
- Napisz do jednego gospodarstwa Rejestr.
chytre spojrzenie:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi variable primaria.
Las funciones utilizadas fueron:
- Odczyt rejestru wejściowego
- Przeczytaj cewki.
Krok 5: Panel przedni
El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. Por lo que se realizó lo siguiente:
Zainstalować pakiet DMC GUI dla labVIEW, aby uzyskać najlepsze projekty i elementy sterujące i wskazujące.
2 termómetros (1 para indicar la temperatura en Celsius y otro para indicar la temperatura en Fahrenheit).
Botón "Ostrzeżenie" que únicamente se enciende cuando el bit de error está encendido.
Botón para editar los rangos de temperatura a medr (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 invalido.
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 seleccionada)
Krok 6: Archiwa Pythona
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 canal 0 con un potenciometro).
Me quedo pendiente implementar las funciones 15 i 16.
Krok 7: HMI
Master 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, Investigue y no encontré una solución para aplicarla.
Krok 8: Wynik końcowy
Espero jest algunas personas comprender mejor la comunicación modbus RTU y una implementación en labVIEW.
Zalecana:
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD - Symulacja rejestratora danych DHT11 w Proteus: 5 kroków
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD | Symulacja rejestratora danych DHT11 w Proteus: Wstęp: cześć, tu Liono Maker, tutaj link do YouTube. Tworzymy kreatywne projekty z Arduino i pracujemy na systemach wbudowanych.Data-Logger: Rejestrator danych (również rejestrator danych lub rejestrator danych) to urządzenie elektroniczne, które rejestruje dane w czasie w
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: 5 kroków
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: Cześć, w większości projektów używamy ESP8266, a w większości projektów używamy ESP8266 jako serwera WWW, dzięki czemu można uzyskać dostęp do danych dowolne urządzenie przez Wi-Fi, uzyskując dostęp do serwera WWW obsługiwanego przez ESP8266, ale jedynym problemem jest to, że potrzebujemy działającego routera
Jak korzystać z czujnika temperatury DHT11 z Arduino i temperatury drukowania, ciepła i wilgotności: 5 kroków
Jak używać czujnika temperatury DHT11 z Arduino i drukowania temperatury, ciepła i wilgotności: Czujnik DHT11 służy do pomiaru temperatury i wilgotności. Są bardzo popularnymi hobbystami elektroniki. Czujnik wilgotności i temperatury DHT11 ułatwia dodawanie danych o wilgotności i temperaturze do projektów elektroniki DIY. To za
ESP32 NTP Termometr do gotowania z sondą temperatury z korekcją Steinharta-Harta i alarmem temperatury.: 7 kroków (ze zdjęciami)
ESP32 NTP Termometr do gotowania z sondą temperatury z korekcją Steinharta-Harta i alarmem temperatury.: Wciąż w drodze do ukończenia „nadchodzącego projektu”, „Termometr do gotowania z sondą temperatury ESP32 NTP z korekcją Steinharta-Harta i alarmem temperatury”. jest instrukcją pokazującą, jak dodać sondę temperatury NTP, piezo b
Odczyt przetwornika z odwróconym magnetronem Arduino: 3 kroki
Odczyt przetwornika odwróconego magnetronu Arduino: W ramach mojego projektu, dokumentującego nieustanny postęp mojej wyprawy w świat fizyki cząstek ultrawysokiej próżni, doszedł do części projektu, która wymagała trochę elektroniki i kodowania. Kupiłem nadwyżkę se