Daftar Isi:

Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 Langkah
Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 Langkah

Video: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 Langkah

Video: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 Langkah
Video: Fx3u plc modbus with xy-Md02 Temperature & Humidity Sensor 2024, Juli
Anonim
Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)
Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)

POST ESCRITO EN ESPAÑOL

Sesimuló un circuito transmisor de temperatur, el elemento primario (Sensor) fue implementado mediaante un potensiciometro el cual varia el voltaje de entrada. Para enviar la información del sensor (Elemento Secundario), si implemento el protocolo MODBUS RTU, por medio de un puerto serial hacia una computadora que será el maestro.

Pelajari lebih lanjut tentang program dan labLIHAT untuk digunakan dalam perpustakaan MODBUS untuk implementasi. El esclavo es capaz de recibir las siguientes funciones del maestro:

  1. Fungsi 0X01
  2. Fungsi 0x02
  3. Fungsi 0x03
  4. Fungsi 0x04
  5. Fungsi 0x05
  6. Fungsi 0x06

Los registros implementados en el esclavo son:

  1. Arahan ke MODBUS (16 bit)
  2. Kecepatan transmisi (16 bit)
  3. Medición de la suhu (16 bit)
  4. Kesalahan bit (1 bit)
  5. Sedikit pilihan (1 bit) C o F
  6. Nivel maximo de medición (16 bit)
  7. Nivel mínimo de medición (16 bit)

Perlengkapan

  • LabVIEW
  • Raspberry Pi 3
  • ADC MCP3008
  • 1 Potensiometer
  • jumper
  • FTDI (FT232RL)
  • Protoboard

Langkah 1: Sirkuit

sirkuit
sirkuit

Circuito MCP3008 dan Frambuesa Pi

Conexion Raspberry Pi 3 dan FTDI:

  1. GND dan GND
  2. TX a RX
  3. RX a TX

Langkah 2: Esclavo MODBUS Di Raspberry Pi 3B

Como primer pazo necesitas configurar e instalar tu sistem operasi en tu Raspberry Pi 3B. Sugiero instalar NOOBS desde la pagina oficial. Konfigurasi Luego untuk Raspberry Pi 3B untuk pengguna menggunakan serial el puerto dan puerto SPI.

(Personalmente yo me conectó a mi raspi utilizando VNC Viewer para ello hay que activar el servidor VNC de la raspi)

Originalment el valor del ADC representa que la temperaturea medida por el sensor esta en grados Celcius y al estar el bit de selección en 1 est valor se pasa a grados Fahrenheit.

Ya sabiendo todo esto, el esclavo MODBUS se realizó dengan Python haciendo uso de la libreria Pyserial. Para la simulación del transmisor se trabajo con 4 daftar:

  1. kumparan
  2. Daftar Masukan
  3. Memegang Register
  4. Masukan Diskrit

Cada lista se hizo de 6 elemen. Deskripsi singkat dari 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 temperaturea esta fuera del rango establecido entre temperaturea máxima y mínima)
  • inputRegister_lista[0] = Keberanian del ADC (sensor suhu simulado por un potensiciometro) bergantung pada keberanian de bit de selección.
  • holdingRegister_lista[0] = arah dari esclavo
  • holdingRegister_lista[1] = keberanian suhu maksimal
  • holdingRegister_lista[2] = valor de temperaturea mínimo
  • holdingRegister_lista[3] = kecepatan transmisi.

El esclavo MODBUS a decisión isyarat pribadi con ciertos parámetros iniciales como lo son:

  • Valor de temperaturea maxima 500 Celcius
  • Valor de temperaturea mínima 200 Celcius
  • Baudrate inisial de 9600
  • Arahan ke 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 gener un código de excepción 3, seguido de validar si el maestro edía sino genear un código de excepción 3, seguido de validar si el maestro pedía una direcció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.

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 beradaptasi dengan mi código usando este link CRC MODBUS

Kalkulator CRC

MODBUS de excepción MODBUS

Langkah 3: Maestro LabVIEW (HMI)

Maestro LabVIEW (HMI)
Maestro LabVIEW (HMI)
Maestro LabVIEW (HMI)
Maestro LabVIEW (HMI)

Proses pembuatan yang akan dilakukan lebih cepat daripada sebelumnya.

Lihat elaboró una maquina de estados en labVIEW con las siguientes pilihan:

  • init
  • conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
  • escribir: aquí se utiliza la funcion menulis register induk tunggal y menulis koil tunggal
  • baca: aquí se configuran los registros y coils de importancia para la lectura del maestro.

Langkah 4: Máquina De Estados

Máquina De Estados
Máquina De Estados
Máquina De Estados
Máquina De Estados
Máquina De Estados
Máquina De Estados

continuación explicare detalladamente la configuración en cada pilihan:

konektar:

Se utilizó el API de crear un nuevo maestro MODBUS pilihan dan pilihan "New Serial Master", dan kontrol pembuat untuk konfigurasi:

  • Baudrat
  • Keseimbangan
  • Port Serial (Sumber Daya Visa)
  • Tipe Seri (RTU)
  • ID del esclavo.

menulis:

En escribir solo me interesaba que el maestro pudiera cambiar la temperaturea 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 a la que el maestro accedería. Oleh karena itu, fungsi utilizadas fueron:

  • Tulis koil tunggal
  • Tulis register induk tunggal.

lirik:

En leer solo me interesaba la lectura del bit de error y el input register asociado a mi variabel primaria.

Las funciones utilizadas fueron:

  • Baca Masukan Daftar
  • Baca Coil.

Langkah 5: Panel Depan

Panel depan
Panel depan

El panel frontal en labVIEW se trató lo mejor posible que fuera amigable para el usuario final. Oleh lo que se realizó lo siguiente:

Se instal DMC GUI Suite untuk labVIEW para tener un mejor diseño en cuanto a kontrol dan indikator.

2 termómetro (1 para indicar la temperaturea en Celsius y otro para indicar la temperaturea en Fahrenheit).

Botón "Peringatan" que nicamente se enciende cuando el bit de error está encendido.

Botón para editor los rangos de temperaturea 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 editor la dirección del esclavo (para que nicamente haga el cambio al registro cuando se es presionado el botón)

Botón para editor 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 temperatur) junto con el archivo ADC untuk membaca variabel de interés del sensor de temperatur (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, investigue y no encontré una solución para aplicarla.

Langkah 8: Hasil Akhir

Espero ayudar a algunas personas a comprender mejor la comunicación modbus RTU y una implementación en labVIEW.

Direkomendasikan: