Isi kandungan:
- Bekalan
- Langkah 1: Circuitos
- Langkah 2: Esclavo MODBUS En Raspberry Pi 3B
- Langkah 3: Tinjauan Makmal Maestro (HMI)
- Langkah 4: Máquina De Estados
- Langkah 5: Panel Depan
- Langkah 6: Archivos Python
- Langkah 7: HMI
- Langkah 8: Final Resultado
Video: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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:
- Función 0X01
- Función 0x02
- Función 0x03
- Función 0x04
- Función 0x05
- Función 0x06
Los registros implementados en el esclavo anak:
- Direccionamiento MODBUS (16 bit)
- Velocidad de transmisión (16 bit)
- Medición de la temperatura (16 bit)
- Kesalahan bit de (1 bit)
- Bit de selección (1 bit) C o F
- Nivel máximo de medición (16 bit)
- Nivel mínimo de medición (16 bit)
Bekalan
- Tinjauan Makmal
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciometro
- Pelompat
- FTDI (FT232RL)
- Papan Protob
Langkah 1: Circuitos
Circuito MCP3008 y Frambuesa Pi
Conexión Raspberry Pi 3 y FTDI:
- GND a GND
- TX a RX
- RX a TX
Langkah 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 bersiri dan puerto SPI.
(Personalmente yo me conectó a mi raspi utilizando VNC Viewer untuk ello hay que activar el servidor VNC de la raspi)
Originalmente el valor del ADC representa 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 se realizó con Python haciendo uso de la librería Pyserial. Para la simulación del transmisor se trabajo con 4 senarai:
- Gegelung
- Daftar Input
- Memegang Daftar
- Input diskrit
Cada lista se hizo de 6 elementos. Breve descripción de los elementos de cada lista:
- coils_lista [0] = bit de selección (si está en 0 signifikana que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
- diskrit_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 (sensor de temperatura simulado por un potenciometro) dependiendo del valor de bit de selección.
- holdingRegister_lista [0] = dirección de 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 parámetros iniciales como lo son:
- Valor de temperatura máxima 500 Celsius
- Valor de temperatura mínima 200 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 genero 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 bersiri 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 código usando este link CRC MODBUS
Kalkulator CRC
MODBUS Códigos de excepción
Langkah 3: Tinjauan Makmal Maestro (HMI)
La creación de un maestro que fuera de cierta manera disetujui untuk un usuario final fue hecha por medio de labVIEW y su librería MODBUS la cual facilityaba la creación de un maestro MODBUS RTU.
Se elaboró una maquina de estados en labVIEW con las siguientes opciones:
- di dalamnya
- conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
- escribir: aquí se utiliza la funcion write single holding register y write single coil
- leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.
Langkah 4: Máquina De Estados
Continuación explicare detalladamente la configuración en cada opción:
konekar:
Se utilizó el API de crear un nuevo maestro MODBUS seleccionando la opción de "New Serial Master", se crearon mengawal para configurar:
- Kadar baud
- Pariti
- Pelabuhan Bersiri (Sumber Visa)
- Jenis Siri (RTU)
- ID del esclavo.
escribir:
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 sabia de antemano en que nécón de que nécón de que nécón de queón de la a la que el maestro accedería. Oleh lo que las funciones utilizadas fueron:
- Tulis gegelung tunggal
- Tulis Daftar pemegang tunggal.
leer:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi berubah primaria.
Las funciones utilizadas fueron:
- Baca Daftar Input
- Baca Gegelung.
Langkah 5: Panel Depan
Bahagian depan panel dan makmal ULASAN SEBENARNYA kemungkinan besar que fuera dapat diselesaikan untuk final el usuario. Dari lo que se realizó lo siguiente:
Lihatlah DMC GUI Suite untuk labVIEW para tener un mejor diseño en cuanto a controles e indicadores.
2 termómetros (1 para indicar la temperatura en Celsius dan otro para indicar la temperatura en Fahrenheit).
Boton "Peringatan" que únicamente se enciende cuando el bit de error 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 Salah.
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)
Langkah 6: Archivos Python
En estos archivos está Implementado el esclavo MODBUS (Transmisor de temperatura) junto con el archivo ADC para leer la variabel de interés del sensor de temperatura (Simulado en el canal 0 con un potenciometro).
Me quedo pendiente implementar las funciones 15 y 16.
Langkah 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, siasatan y no encontré una solución para aplicarla.
Langkah 8: Final Resultado
Espero ayudar a algunas personas sebagai penyusun mejor la comunicación modbus RTU y una Implementación en labVIEW.
Disyorkan:
HMI industri dan Arduino dalam MODBUS RTU: 4 Langkah
Industrial HMI dan Arduinos dalam MODBUS RTU: Dalam arahan ini saya akan menerangkan contoh komunikasi antara HMI industri (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) dan Arduino UNO (10EUROS). Rangkaian ini akan berjalan di bawah proto industri dan industri yang istimewa
Digistump dan Modbus RTU: 6 Langkah
Digistump dan Modbus RTU: Mereka yang telah melihat arahan saya mengenai komunikasi antara Modbus RTU dan Raspberry Pi tahu bahawa saya merancang projek untuk mengautomasikan rumah hijau. Saya telah membuat 2 PCB kecil yang boleh dimasukkan ke dalam kotak projek. Pautan ke PCB saya akan memasukkan
Komunikasi TCP Modbus Antara Peranti Arduino dan Perindustrian: 3 Langkah
Modbus TCP Communication Antara Arduino dan Industrial Devices: Cara industri untuk mengendalikan papan Arduino dengan HMI industri dan menghubungkannya ke rangkaian industri dengan komunikasi Modbus TCP
Pembinaan De Un Transmisor De Audio Por Laser: 3 Langkah
Pembinaan De Un Transmisor De Audio Por Laser: Construcci ó n de un transmisor de audio con laser
ESP32 Modbus Master TCP: 7 Langkah
ESP32 Modbus Master TCP: Di kelas ini, anda akan memprogram pemproses ESP32 menjadi Modbus TCP Master. Kami akan menggunakan dua peranti, yang mengandungi pemproses ini: Moduino ESP32 dan Pycom. Kedua-dua peranti ini berjalan di persekitaran MicroPytthon. Modbus Slave kami akan menjadi komputer PC dengan M