ዝርዝር ሁኔታ:

Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 ደረጃዎች
Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 ደረጃዎች

ቪዲዮ: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 ደረጃዎች

ቪዲዮ: Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 ደረጃዎች
ቪዲዮ: XY-MD02 Sensor Setting - Modbus RTU Network 2024, ሀምሌ
Anonim
Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)
Simulación Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)

ፖስት ESCRITO EN ESPAÑOL

በሴምሉሎው ውስጥ የ 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. ኤል esclavo es capaz de recibir las lasiguientes funciones del maestro:

  1. Función 0X01
  2. Función 0x02
  3. Función 0x03
  4. Función 0x04
  5. Función 0x05
  6. Función 0x06

የሎስ ሬጅስትሮዎች en el esclavo ልጅ

  1. Direccionamiento MODBUS (16 ቢት)
  2. Velocidad de transmisión (16 ቢት)
  3. Medición de la temperatura (16 ቢት)
  4. ቢት ደ ስህተት (1 ቢት)
  5. Bit de selección (1 ቢት) C o F
  6. Nivel máximo de medición (16 ቢት)
  7. Nivel mínimo de medición (16 ቢት)

አቅርቦቶች

  • ቤተ -ሙከራ
  • Raspberry Pi 3
  • ADC MCP3008
  • 1 ፖተንሲዮሜትሮ
  • መዝለሎች
  • FTDI (FT232RL)
  • ፕሮቶቦርድ

ደረጃ 1 - ወረዳዎች

ወረዳዎች
ወረዳዎች

Circuito MCP3008 y Frambuesa Pi

Conexión Raspberry Pi 3 y FTDI:

  1. GND እና GND
  2. TX እና RX
  3. RX እና TX

ደረጃ 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. ሉጎጎ configurar tu Raspberry Pi 3B para poder utilizar el puerto serial y puerto SPI።

(Personalmente yo me conectó a mi raspi utilizando VNC Viewer para 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 listas:

  1. ጥቅልሎች
  2. የግቤት መመዝገቢያዎች
  3. የመያዣ መዝገቦች
  4. የተለዩ ግብዓቶች

ካዳ ሊስታ ሲ ሂዞ ዲ 6 ኤለመንቶች። ገለፃን ይግለጹ de los elementos de cada lista:

  • coils_lista [0] = bit de selección (si está en 0 meaninga que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
  • discrete_input [0] = ቢት ደ ስህተት (ዋጋ ቢስ ሲ ኤን ኤንድ ኦቭ ቫልደር ዴ ፉዱራራ ኢስታ 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.
  • holdRegister_lista [0] = dirección de esclavo
  • holdRegister_lista [1] = valor de temperatura máxima
  • holdRegister_lista [2] = valor de temperatura mínimo
  • holdRegister_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 ሴ
  • Valor de temperatura mínima 200 ሴ
  • Baudrate inicial ደ 9600 እ.ኤ.አ.
  • Dirección de esclavo 1
  • Unidad de medición inicial en ሴልሲየስ።

ላ 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 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.

ፓራ ኡልቲሞ ፓሶ en cada función crear una lista y mandar uno por uno por el puerto serial la petición del maestro.

ኤል ሲ ሲ አር ሲቪል ኢስላቮ ዘመን ኤል ኮርቶኮ ፔሮ ሲ ሎ ሄስ ፓራ ኤል መንሳዬ ኢንቪዶ አል ማስትሮ። ለ función de CRC la adapte a mi código usando este አገናኝ CRC MODBUS

CRC ካልኩሌተር

Códigos de excepción MODBUS

ደረጃ 3: Maestro LabVIEW (HMI)

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

ላ 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 siguientes opciones:

  • በ ዉስጥ
  • conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL።
  • escribir: aquí se utiliza la funcion አንድ ነጠላ የመመዝገቢያ መዝገብ ይፃፉ እና ነጠላ ጥቅል ይፃፉ
  • leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.

ደረጃ 4 - ማኪና ደ እስታዶስ

ማኪና ደ ኢስታዶስ
ማኪና ደ ኢስታዶስ
ማኪና ደ እስታዶስ
ማኪና ደ እስታዶስ
ማኪና ደ ኢስታዶስ
ማኪና ደ ኢስታዶስ

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

ኮንቴክታር

ኤፒአይ ኤ ዲ ኤር ኤፒአይ ሲ ሲ ሲሲኖንዶ ላ opción de “አዲስ ተከታታይ መምህር” ፣ se crearon controles para configurar:

  • አወድሱ
  • እኩልነት
  • ተከታታይ ወደብ (የቪዛ ሀብት)
  • ተከታታይ ዓይነት (RTU)
  • ID del esclavo.

ገላጭ ፦

እኔ ብቻዬን ኢንተርሴሳባ ኤል ኤል ማስትሮ udዲራ ካምቢየር ላ ቴራዱራ ማክስማ እና ሚኒማ ፣ ኤል ቢት ዴ ሴሌሲዮን ፣ 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 encontraba a la que el maestro accedería. Por lo que las funciones utilizadas fueron:

  • ነጠላ ጥቅል ይፃፉ
  • ነጠላ ይዞታ ምዝገባን ይፃፉ።

አቅም ፦

En leer solo me interesaba la lectura del bit de error y el የመግቢያ መመዝገቢያ asociado a mi variable primaria.

የላስ funciones utilizadas fueron:

  • የግቤት ምዝገባን ያንብቡ
  • ጥቅሎችን ያንብቡ።

ደረጃ 5 የፊት ፓነል

የፊት ፓነል
የፊት ፓነል

የኤል ፓነል ግንባር እና የላብራቶሪ እይታ በትራክ ሎ ሜጀር posible que fuera amigable para el usuario final. ስለዚ ኣነ ዝስዕብ እዩ።

የ DMC GUI Suite para labVIEW para tener un mejor diseño en cuanto a controles e indicadores ን ይመልከቱ።

2 termómetros (1 para indicar la temperatura en ሴልሺየስ y otro para indicar la temperatura en Fahrenheit)።

Botón "ማስጠንቀቂያ" 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 incorrecto.

Botón para editar la dirección del esclavo (para que únicicamente 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: Archivos Python

የኤስ.ኤስ.ኤስ.

Me quedo pendiente implementar las funciones 15 y 16.

ደረጃ 7 ኤችኤምአይ

ማስተር Modbus RTU

Este es el maestro implementado en labVIEW. ሄይ ኮስካስ ፓ ሜጀራር ፣ ለአብነት የለም pureg corregir un error al conectar al primer intentiono, investigue y no encontré una solución para aplicarla.

ደረጃ 8: ውጤት የመጨረሻ

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

የሚመከር: