Sadržaj:

Simbus Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 koraka
Simbus Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 koraka

Video: Simbus Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 koraka

Video: Simbus Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 koraka
Video: Stockholm Gängscenen: Torpeder, Krig & Rappare 2024, Srpanj
Anonim
Simulacijski odašiljač temperaturnog modusa (Labview + Raspberry Pi 3)
Simulacijski odašiljač temperaturnog modusa (Labview + Raspberry Pi 3)

OBJAVI ESCRITO EN ESPAÑOL

Simuló un circuito transmisor de temperature, el elemento primario (Sensor) fue implementado mediado un potenciometro el cual varia el voltaje de entrada. Za dodatne informacije o senzoru (Elemento Secundario), implementirajte protokol MODBUS RTU ili ga pustite u serijski okvir na računaru za maestro.

Como maestro se razrađuje s programom en labVIEW koji je koristio de la librería MODBUS que ya implementaciju. El esclavo es capaz de recibir las siguientes funciones del maestro:

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

Los registros implementados en el esclavo son:

  1. Direccionamiento MODBUS (16 bita)
  2. Velocidad de transmisión (16 bita)
  3. Medición de la temperature (16 bita)
  4. Greška bita (1 bit)
  5. Bit de selección (1 bit) C o F
  6. Nivel máximo de medición (16 bita)
  7. Nivel mínimo de medición (16 bita)

Pribor

  • LabVIEW
  • Malina Pi 3
  • ADC MCP3008
  • 1 Potenciometro
  • Džemperi
  • FTDI (FT232RL)
  • Protoboard

Korak 1: Circuitos

Circuitos
Circuitos

Circuito MCP3008 y Frambuesa Pi

Conexión Raspberry Pi 3 i FTDI:

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

Korak 2: Esclavo MODBUS En Raspberry Pi 3B

Como primer pazo necesitas konfigurator i instalacijski sustav operativnog sustava na Raspberry Pi 3B. Predlažemo instalaciju NOOBS -a na službenoj stranici. Luego konfiguracija za Raspberry Pi 3B za poder koristi puerto serijski i puerto SPI.

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

Originalno el valor del ADC predstavlja que la temperaturu medida sa senzorom esta en grados Celsius y al estar el bit de selección 1 1 valor se pasa a grados Fahrenheit.

Ya sabiendo todo esto, el esclavo MODBUS se realizirao uz Python koji je koristio de la librería Pyserial. Za simulaciju transmisora trabajo se nalaze 4 liste:

  1. Zavojnice
  2. Ulazni registri
  3. Vođenje registara
  4. Diskretni ulazi

Cada lista se sastoji od 6 elemenata. Breve opis los elementos de cada lista:

  • coils_lista [0] = bit de selección (si está en 0 označava que la unidad de medición es en Celsius caso contrario unidad de medición u Fahrenheitu)
  • discrete_input [0] = bit de error (este bit se enciende cuando el valor de temperature esta fuera del rango establecido entre temperatura máxima y minima)
  • inputRegister_lista [0] = Valor del ADC (osjetnik temperature za simulaciju por un potenciometro) ovisi o 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 minimo
  • holdingRegister_lista [3] = velocidad de transmisión.

El esclavo MODBUS osobna odluka cuenta con ciertos parámetros iniciales como lo son:

  • Najviša temperatura iznosi 500 Celzijevih stupnjeva
  • Temperatura minimuma 200 Celzijusa
  • 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 mediant 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 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 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. Funkcija CRC -a prilagođena mi je korisnička veza CRC MODBUS

CRC kalkulator

Códigos de excepción MODBUS

Korak 3: Maestro LabVIEW (HMI)

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

La creación de un maestro que fuera de cierta manera ammigable 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 siguientes opciones:

  • u tome
  • conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
  • escribir: aquí se utiliza la funcion upisuje jedinstveni registar holdinga y zapisuje jednu zavojnicu
  • leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.

Korak 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 Exlicare Detalladamente la configuración en cada opción:

konektor:

Upotrijebite API za kreiranje novog maestro MODBUS -a za odabir opcije "New Serial Master", kako biste stvorili kontrole za konfiguraciju:

  • Baudrate
  • Paritet
  • Serijski port (Visa Resource)
  • Serijski tip (RTU)
  • ID del esclavo.

opis:

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 quón direcciones a la que el maestro accedería. Por lo que las funciones utilizadas fueron:

  • Napišite jednu zavojnicu
  • Napisati jedinstveni registar gospodarstva.

leer:

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

Las funciones utilizadas fueron:

  • Pročitajte ulazni registar
  • Čitajte zavojnice.

Korak 5: Prednja ploča

Prednja ploča
Prednja ploča

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

Instalirajte DMC GUI Suite za labVIEW para tener un mejor diseño en cuanto a controles e indicadores.

2 termina (1 parametar temperature u Celzijusu i otrov u odnosu na temperaturu u Fahrenheitu).

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

Botón para editar los rangos de temperature a medir (para que únicamente haga el cambio al registerro cuando se es presionado el botón) caso contrario siempre los estuviera modificando lo cual causaría un funcionamiento incorecto.

Botón para editar la dirección del esclavo (para que únicamente haga el cambio al registerro cuando se es presionado el botón)

Botón para editar el baudrate del esclavo (para que únicamente haga el cambio al registerro 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)

Korak 6: Archivos Python

Arhiva je implementirana u skladu s modusom MODBUS (Transmisor de temperature) u kontejneru arhivskog ADC parametra koji mijenja varijabilnost inters senzora temperature (Simulacija u kanalu 0 s potenciometrom).

Me quedo pendiente implementar las funciones 15 y 16.

Korak 7: HMI

Master Modbus RTU

Este es 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.

Korak 8: Rezultat konačan

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

Preporučeni: