Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10
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), för att implementera protokollet 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:
- Funktion 0X01
- Funktion 0x02
- Funktion 0x03
- Funktion 0x04
- Funktion 0x05
- Funktion 0x06
Los registros implementados en el esclavo son:
- Direccionamiento MODBUS (16 bitar)
- Transmissionshastighet (16 bitar)
- Medición de la temperatura (16 bitar)
- Bit de fel (1 bit)
- Bit de selección (1 bit) C o F
- Nivel máximo de medición (16 bitar)
- Nivel minimo de medición (16 bitar)
Tillbehör
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciometro
- Tröjor
- FTDI (FT232RL)
- Protoboard
Steg 1: Circuitos
Circuito MCP3008 och Frambuesa Pi
Conexión Raspberry Pi 3 och FTDI:
- GND och GND
- TX till RX
- RX och TX
Steg 2: Esclavo MODBUS En Raspberry Pi 3B
Vilken primer behövs för att konfigurera och installera ett operativsystem för Raspberry Pi 3B. Försök installera NOOBS på sidan officiell. Luego konfigurar tu Raspberry Pi 3B para poder utilizar el puerto serial and puerto SPI.
(Personligen kan du använda mig av VNC Viewer för ello hay que activar el servidor VNC de la raspi)
Originalvärdet för ADC -värdet kan ge temperaturer för sensorerna i graderna Celsius och de flesta kan välja mellan en hög grad av temperatur och 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:
- Spolar
- Inmatningsregister
- Innehavsregister
- Diskreta ingångar
Cada listan innehåller sex element. Nedanstående beskrivning av elementen i listan:
- 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 minima)
- inputRegister_lista [0] = ADC -värde (temperatursensor för en simulering för en potential) beror på val av bitvärde.
- holdingRegister_lista [0] = dirección de esclavo
- holdingRegister_lista [1] = värdet på temperaturen max
- holdingRegister_lista [2] = värdet på temperaturen minimo
- holdingRegister_lista [3] = överföringshastighet.
El esclavo MODBUS a decisión personal cuenta con ciertos parámetros iniciales como lo son:
- Temperaturvärde max 500 Celsius
- Temperaturvärde 200 grader Celsius
- Baudrate inicial de 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 código de excepción 2 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 and 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. CRC: s funktionalitet kan användas för att använda länken CRC MODBUS
CRC -räknare
Códigos de excepción MODBUS
Steg 3: Maestro LabVIEW (HMI)
La creación de un maestro que fuera de cierta manera amigable para un usuario final 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 signuientes opciones:
- i det
- conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
- escribir: aquí se utiliza la funcion skriva enda innehavsregister y skriva single coil
- leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.
Steg 4: Máquina De Estados
fortlöpande förklaring av en konfiguration och en uppgift:
konektar:
Använd API: et för en ny version av MODBUS och välj "New Serial Master", och kontroller för konfiguration:
- Baudrate
- Paritet
- Seriell port (visumresurs)
- Seriell typ (RTU)
- ID del esclavo.
escribir:
En escribir solo me interesaba que el maestro pudiera cambiar la temperatura máxima y minima, 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 sabia de antemano en que direcciones se enconraba a la que el maestro accedería. För lo que las funciones utilizadas fueron:
- Skriv en enda spole
- Skriv enstaka innehavsregister.
lär:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi variable primaria.
Las funciones utilizadas fueron:
- Läs inmatningsregister
- Läs Coils.
Steg 5: Frontpanel
Elpanel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. Por lo que se realizó lo siguiente:
Se installera DMC GUI Suite för labVIEW för en mer stor del av en kontroll och indikatorer.
2 termómetros (1 para indicar la temperatura en Celsius y otro para indicar la temperatura en Fahrenheit).
"Varning" kan göras på ett felaktigt sätt.
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 para editar el baudrate del esclavo (para que únicamente haga el cambio al registro cuando se es presionado el botón)
Un botón för "Excepciones" (Para que genere una excepción dependiendo de la función MODBUS seleccionada)
Steg 6: Archivos Python
En estos archivos está implementado el esclavo MODBUS (Transmisor de temperatura) junto with the archivo ADC for leer the variable de interés del sensor de temperatura (Simulado en el canal 0 with un potenciometro).
Me quedo pendiente implementar las funciones 15 y 16.
Steg 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 intentiono, investigue y no encontré una solución para aplicarla.
Steg 8: Resultado Final
Espero ayudar a algunas personas a comprender mejor la comunicación modbus RTU y una implementación en labVIEW.
Rekommenderad:
Hur man gör luftfuktighet och temperatur i realtid Data Recorder med Arduino UNO och SD-kort - DHT11 Datalogger Simulering i Proteus: 5 steg
Hur man gör luftfuktighet och temperatur i realtid Data Recorder med Arduino UNO och SD-kort | DHT11 Datalogger Simulering i Proteus: Introduktion: hej, det här är Liono Maker, här är YouTube-länk. Vi gör kreativa projekt med Arduino och arbetar med inbäddade system.Data-Logger: En datalogger (även datalogger eller dataregistrator) är en elektronisk enhet som registrerar data över tid med
Hur man gör temperatur- och ljusintensitetsloggning - Proteus -simulering - Fritzing - Liono Maker: 5 steg
Hur man gör temperatur- och ljusintensitetsloggning | Proteus -simulering | Fritzing | Liono Maker: Hej det här är Liono Maker, det här är min officiella YouTube -kanal. Detta är öppen källkod YouTube -kanal. Här är länken: Liono Maker YouTube -kanal här är videolänken: Temp & ljusintensitetsloggning I denna handledning lär vi oss hur man gör temperament
Open Loop Opamp -simulering med EveryCiruit -appen: 5 steg
Open Loop Opamp -simulering med EveryCiruit -appen: EveryCircuit är en av de bästa simuleringsplattformarna för elektronik. Den har en webbplats och app. Denna instruerbara är för Android -versionen. Men exakt följer för webbversionen också. Om denna instruerbara: Opamp eller Operationsförstärkare är
(LED med switch) Arduino -simulering med hjälp av Tinkercad Circuit: 5 steg
(LED With Switch) Arduino Simulation Using Tinkercad Circuit: Vi är en grupp av UQD0801 (Robocon 1) studenter från Universiti Tun Hussein Onn Malaysia (UTHM) som kommer att visa hur man simulerar LED med switch med Arduino och några komponenter som en del av vårt uppdrag. Därför kommer vi att introducera b
Atmega16 -baserat trafikljusprojektprototyp med 7 -segmentskärm (Proteus -simulering): 5 steg
Atmega16 -baserat trafikljusprojektprototyp med 7 -segmentskärm (Proteus -simulering): I detta projekt ska vi göra Atmega16 -baserat trafikljusprojekt. Här har vi tagit ett 7 segment och 3 lysdioder för att markera trafikljusets signaler