সুচিপত্র:

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 ধাপ
ভিডিও: Leyendo el sensor XY-MD02 con labview usando MODBUS RS485 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 পোস্ট করুন

Se simuló un circuito transmisor de temperatura, el elemento primario (Sensor) fue कार्यान्वयन মিডিয়াটিন আন পোটেনসিওমেট্রো এল কোয়াল ভারিয়া এল ভোল্টাজে ডি এন্ট্রাডা। Para enviar la información del sensor (Elemento Secundario), si বাস্তবায়ন এল প্রোটোকলো MODBUS RTU, por medio de un puerto serial hacia una computadora que será el maestro।

Como maestro se elaboró un programma en labVIEW haciendo uso de la librería MODBUS que ya कार्यान्वयन। El esclavo es capaz de recibir las siguientes 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

লস রেজিস্ট্রস বাস্তবায়ন

  1. Direccionamiento MODBUS (16 বিট)
  2. Velocidad de transmisión (16 বিট)
  3. মেডিসিন দে লা টেম্পেরাটুরা (16 বিট)
  4. বিট ডি ত্রুটি (1 বিট)
  5. বিট ডি সেলেকশন (1 বিট) সি ও এফ
  6. নিভেল ম্যাক্সিমো ডি মেডিসিন (16 বিট)
  7. Nivel mínimo de medición (16 বিট)

সরবরাহ

  • ল্যাবভিউ
  • রাস্পবেরি পাই 3
  • এডিসি এমসিপি 3008
  • 1 Potenciometro
  • জাম্পার
  • FTDI (FT232RL)
  • প্রোটোবোর্ড

ধাপ 1: সার্কিটোস

সার্কিটোস
সার্কিটোস

সার্কিটো 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 systemema operativo en tu Raspberry Pi 3B। Sugiero ইনস্টলার NOOBS desde la pagina oficial। Luego configurar tu Raspberry Pi 3B para poder utilizar el puerto serial y puerto SPI।

(ব্যক্তিগতভাবে আমার সাথে সংযোগ স্থাপন করুন

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।

ইয়া সাবিয়েন্দো টোডো এস্টো, এল এসক্লাভো মোডবাস সে রিয়েলিজো কন পাইথন হ্যাসিন্ডো ইউসো দে লা লিবারিয়া পিসেরিয়াল। Para la simulación del transmisor se trabajo con 4 listas:

  1. কয়েল
  2. ইনপুট রেজিস্টার
  3. হোল্ডিং রেজিস্টার
  4. বিচ্ছিন্ন ইনপুট

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 importanta 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 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।
  • 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 Celsius
  • ভ্যালুর ডি টেম্পারেটুর মনিমা 200 সেলসিয়াস
  • 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:

এন Segundo লুগার SE buscó লা función কী এল মায়েস্ট্রো solicitaba পাড়া luego validar Si La cantidad ডি salidas pedidas Por El মায়েস্ট্রো Eran validas সিনো generar উন Código de excepción 3, seguido ডি validar Si এল মায়েস্ট্রো pedía উনা ডিরেকশন রিগীয়নাল implementada সিনো generar উন Código de excepción 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 বাস্তবায়ন।

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 adapte a mi código usando este link this CRC MODBUS

সিআরসি ক্যালকুলেটর

Códigos de excepción MODBUS

ধাপ 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 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: Máquina De Estados

মেকুইনা দে এস্তাদোস
মেকুইনা দে এস্তাদোস
মেকুইনা দে এস্তাদোস
মেকুইনা দে এস্তাদোস
মেকুইনা দে এস্তাদোস
মেকুইনা দে এস্তাদোস

ধারাবাহিক ব্যাখ্যা বিশদ বিবরণ

সংযোগ:

Se utilizó el API de crear un nuevo maestro MODBUS seleccionando la opción de "New Serial Master", se crearon controles para configurar:

  • বড হার
  • সমতা
  • সিরিয়াল পোর্ট (ভিসা রিসোর্স)
  • সিরিয়াল টাইপ (RTU)
  • আইডি ডেল এসক্লাভো।

বর্ণনা:

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 saniono de sania de saniaa de saniaa de saniaa de sarabn de de saccn de de saccbia a la que el maestro accedería। Por lo que las funciones utilizadas fueron:

  • একক কুণ্ডলী লিখুন
  • সিঙ্গেল হোল্ডিং রেজিস্টার লিখুন।

leer:

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

Las funciones utilizadas fueron:

  • ইনপুট রেজিস্টার পড়ুন
  • কয়েল পড়ুন।

ধাপ 5: সামনের প্যানেল

সম্মুখ প্যানেল
সম্মুখ প্যানেল

এল প্যানেল ফ্রন্টাল এন labVIEW se trató lo mejor posible que fuera amigable para el usuario final। Por lo que se realizó lo siguiente:

Se instaló 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 Celsius 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 inrecto।

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)

"Excepciones" এর জন্য বোটন (Para que genere una excepción dependiendo de la función MODBUS seleccionada)

ধাপ 6: আর্কাইভস পাইথন

En estos archivos está বাস্তবায়ন এল esclavo MODBUS (Transmisor de temperatura) junto con el archivo ADC para leer la variable de interés del sensor de temperatura (Simulado en el canal 0 con un potenciometro)।

Me quedo pendiente বাস্তবায়ন লাস funciones 15 y 16।

ধাপ 7: HMI

মাস্টার মোডবাস আরটিইউ

Este es el maestro বাস্তবায়ন en labVIEW। Hay cosas para mejorar, por ejemplo no pude corregir un error al conectar al primer ento, তদন্ত y no encontré una solución para aplicarla।

ধাপ 8: ফলাফল চূড়ান্ত

Espero ayudar a algunas personas a compnder mejor la comunicación modbus RTU y una বাস্তবায়ন en labVIEW।

প্রস্তাবিত: