Satura rādītājs:
- Piegādes
- 1. darbība: ķēdes
- 2. darbība: Esclavo MODBUS un Raspberry Pi 3B
- 3. darbība: Maestro LabVIEW (HMI)
- 4. solis: Máquina De Estados
- 5. darbība: priekšējais panelis
- 6. darbība: Archivos Python
- 7. darbība: HMI
- 8. solis: Rezultāta fināls
Video: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
POST ESCRITO EN ESPAÑOL
Se simuló un circuit transmisor de temperatura, el elemento primario (Sensor) fue implementado mediante un potenciometro el cual varia el voltaje de entrada. Par enviar la informationción del sensor (Elemento Secundario), MODBUS RTU protokola īstenotājs, seriālā medija un puerto serial hacia un a computadora que será el maestro.
Como maestro se izstrādā un un programma en labVIEW haciendo uso de la librería MODBUS que ya implementa. El Esclavo es Capaz de Recibir las siguientes funciones del maestro:
- Funkcija 0X01
- Funkcija 0x02
- Funkcija 0x03
- Funkcija 0x04
- Funkcija 0x05
- Funkcija 0x06
Los registros implementados en el esclavo son:
- MODBUS virziens (16 biti)
- Velocidad de transmisión (16 biti)
- Temperatūras medicīna (16 biti)
- Bitu kļūda (1 bits)
- Atlases bits (1 bits) C o F
- Medicīniskais medikaments (16 biti)
- Medicīniskais medikaments (16 biti)
Piegādes
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciometro
- Džemperi
- FTDI (FT232RL)
- Protoboard
1. darbība: ķēdes
Circuito MCP3008 un Frambuesa Pi
Conexión Raspberry Pi 3 un FTDI:
- GND un GND
- TX un RX
- RX un TX
2. darbība: Esclavo MODBUS un Raspberry Pi 3B
Como primer pazo necesitas configurar and instalar tu system operativo en tu Raspberry Pi 3B. Sugiero instalar NOOBS desde la pagina oficial. Lasiet konfigurāciju Raspberry Pi 3B, lai izmantotu seriālu un puerto SPI.
(Personalmente yo me conectó a mi raspi utilizando VNC Viewer para ello hay que activar el servidor VNC de la raspi)
Oriģinālais el Valor del ADC pārstāvis, kas pārstāv temperatūras režīmu, kas paredzēts el sensoram, pēc Celsija un Alstar el bit de selección en 1 este valor se pasa a grados Fahrenheit.
Ya sabiendo todo esto, es eslavo MODBUS to realization with Python haciendo uso de la librería Pyserial. Para la simulación del transmisor se trabajo con 4 listas:
- Spoles
- Ievades reģistri
- Reģistru turēšana
- Diskrētās ieejas
Cada list se hizo de 6 elementos. Breve deskripcijas de los elementos de cada list:
- coils_lista [0] = atlases bits (si está en 0 signa que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
- diskrēts_ieraksts [0] = bitu kļūda (es 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 (sensors de temperatura simulado por un potenciometro) atkarība no vērtības noteikšanas bitu.
- holdingRegister_lista [0] = esclavo virziens
- 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 un personīgo lēmumu par cietu parāmetros iniciales como lo son:
- Temperatūras maksimums 500 grādi pēc Celsija
- Temperatūras vērtība 200 grādi pēc Celsija
- 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 directcción implementada sino generar un código de cidigo 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 list y mandar uno por uno por el puerto serial ma 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 kalkulators
Códigos de excepción MODBUS
3. darbība: Maestro LabVIEW (HMI)
La Creación de un maestro que fuera de cierta manera amigable para un usuario final fue hecha por por medio de labVIEW y librería MODBUS in cual hõlbināt la un creación de un maestro MODBUS RTU.
Se dzīvooró una maquina de estados en labVIEW con las siguientes opciones:
- tajā
- Kontakts: Aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
- escribir: aquí se utiliza la funcion rakstīt vienu turēšanas reģistru un rakstīt vienu spoli
- leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.
4. solis: Máquina De Estados
Continueción explicare detalladamente la konfigurācija en cada opción:
Konektārs:
Izmantojiet API, lai izveidotu jaunu maestro MODBUS un atlasītu opciju "New Serial Master", lai kontrolētu konfigurāciju:
- Pārraides ātrumu
- Paritāte
- Sērijas osta (vīzu resurss)
- Sērijas tips (RTU)
- ID del esclavo.
apraksts:
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 directcción al maestro y por ultimo asignarle un nuevo Baudrate al esclavo por lo que ya sabia de antemano en que direcciones enion a la que el maestro accedería. Por lo que las funciones utilizadas fueron:
- Uzrakstiet vienu spoli
- Uzrakstiet vienas saimniecības reģistru.
vēstule:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi variable primaria.
Lasīt funciones utilizadas fueron:
- Lasīt ievades reģistru
- Lasiet spoles.
5. darbība: priekšējais panelis
El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. Kā var saprast:
Instalējiet DMC GUI Suite paraVIVI para tener un major diseño en cuanto a control and indicadores.
2 termometri (1 para indicar la temperatura en Celsius y second para indicar la temperatura en Fahrenheit).
Botons "Brīdinājums" ir neparedzēts, jo tas ir encande cuando el bit de error está encendido.
Botón para editar los rangos de medetur 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 iestrādāt.
Botón para editar la directcció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)
6. darbība: Archivos Python
En estos archivos está implementado el esclavo MODBUS (Transmisor de temperatura) junto con el archivo ADC para leer la main de interés del sensor de temperatura (Simulado en el canal 0 con un potenciometro).
Me quedo pendiente implementar las funciones 15 un 16.
7. darbība: HMI
Meistars Modbus RTU
Este es el maestro implementado en labVIEW. Hay cosas para mejorar, por ejemplo no pude koregir un error all conectar al primer intento, izmeklēšana un nekāda encontré una solución para aplicarla.
8. solis: Rezultāta fināls
Espero ayudar un algunas personas a comprender mejor la comunicación modbus RTU y una implementation en labVIEW.
Ieteicams:
Rūpnieciskais HMI un Arduinos MODBUS RTU: 4 soļi
Rūpnieciskais HMI un Arduinos MODBUS RTU: Šajā pamācībā es aprakstīšu saziņas piemēru starp rūpniecisko HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) un Arduino UNO (10EUROS). Tīkls darbosies saskaņā ar īpašu un izturīgu un rūpniecisku protokolu
Digistump un Modbus RTU: 6 soļi
Digistump un Modbus RTU: Tie, kas ir redzējuši manu pamācību komunikācijai starp Modbus RTU un Raspberry Pi, zina, ka es plānoju siltumnīcas automatizācijas projektu. Esmu izgatavojis 2 mazas PCB, kuras var ievietot projektu kastē. Saite uz PCB es iekļauju
Modbus TCP komunikācija starp Arduino un rūpnieciskajām ierīcēm: 3 soļi
Modbus TCP sakari starp Arduino un rūpnieciskajām ierīcēm: rūpniecisks veids, kā kontrolēt Arduino plāksni ar rūpniecisko HMI un savienot to ar rūpniecisko tīklu, izmantojot Modbus TCP sakarus
ESP32 Modbus Master TCP: 7 soļi
ESP32 Modbus Master TCP: Šajā klasē jūs ieprogrammēsit ESP32 procesoru kā Modbus TCP Master. Mēs izmantosim divas ierīces, kurās ir šis procesors: Moduino ESP32 un Pycom. Abas ierīces darbojas MicroPytthon vidē. Mūsu Modbus vergs būs dators ar M
ESP8266 Modbus termostats ar pieskārienu: 5 soļi
ESP8266 Modbus termostats ar pieskārienu: šajā pamācībā es jums parādīšu, kā izveidot izskatīgu skārienekrāna termostatu ar papildu Modbus atbalstu, izmantojot RS485, ar ArduiTouch ESP un ESP8266 (NodeMCU vai Wemos D1 Mini)