فهرست مطالب:

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)

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. برای اطلاع از سنسور اطلاعات (Elemento Secundario) ، برای پیاده سازی پروتکل MODBUS RTU ، از طریق رسانه های مختلف ، می توانید از طریق یک سرور اصلی از برنامه استفاده کنید.

Como maestro se elaboró un programa en labVIEW استفاده از برنامه های کاربردی MODBUS را به صورت رایگان اجرا کرد. El esclavo es capaz de recibir las siguientes funciones del maestro:

  1. عملکرد 0X01
  2. عملکرد 0x02
  3. عملکرد 0x03
  4. عملکرد 0x04
  5. عملکرد 0x05
  6. عملکرد 0x06

Los registros implementados en el esclavo son:

  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 bit) C o F
  6. Nivel máximo de medición (16 بیت)
  7. Nivel mínimo de medición (16 بیت)

تدارکات

  • آزمایشگاه
  • تمشک پای 3
  • ADC MCP3008
  • 1 پوتنسیومتر
  • پرش کننده ها
  • FTDI (FT232RL)
  • پروتو بورد

مرحله 1: مدارها

مدارها
مدارها

Circuito MCP3008 y Frambuesa Pi

Conexión Raspberry Pi 3 y FTDI:

  1. GND و GND
  2. TX a RX
  3. RX a 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. Luego configurar tu Raspberry Pi 3B para poder utilisar 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 نماینده درجه حرارت متوسط در حسگر است که در درجه حرارت 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 realó con python haciendo uso de la librería Pyserial. 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 indica que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
  • discrete_input [0] = کمی از خطا (این بیت را به عنوان یک 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) وابسته به ارزش مقدار کمی از انتخاب است.
  • HoldRegister_lista [0] = dirección de esclavo
  • HoldRegister_lista [1] = valor de temperatura máxima
  • holdingRegister_lista [2] = valor de temperatura mínimo
  • HoldRegister_lista [3] = velocidad de transmisión.

El esclavo MODBUS تصمیم شخصی برای دستورالعمل های شخصی con ciertos parámetros iniciales como lo son:

  • Valor de temperatura máxima 500 درجه سانتیگراد
  • Valor de temperatura mínima 200 درجه سانتیگراد
  • Baudrate inicial de 9600
  • Dirección de esclavo 1
  • Unidad de medición inicial en Celsius.

La lógica aplicada es la siguiente:

In primer lugar se buscó leer toda la trama MODBUS enviada por el 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 sécadino sadao 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 crea una lista y mandar uno por uno por el 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 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)

ایجاد و ایجاد یک معامله خوب برای انجام کارها به منظور استفاده از روش نهایی آزمایشگاه

Se elaboró una maquina de estados en labVIEW con las siguientes opciones:

  • 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 نوشتن ثبت نام تک نگهدارنده و نوشتن یک سیم پیچ
  • leer: aquí se configuran los registros y coils de importancia para la lectura del maestro.

مرحله 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

ادامه توضیح جزئیات پیکربندی و تنظیم عملکرد:

مخروطی:

برای استفاده از API جدید و جدید maestro MODBUS ، انتخاب و انتخاب گزینه "New Serial Master" ، تنظیمات مربوط به پیکربندی را انجام دهید:

  • بودرات
  • برابری
  • بندر سریال (منبع ویزا)
  • نوع سریال (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 quenccc a la que el maestro accedería. Por lo que las funciones utilizadas fueron:

  • تک سیم پیچ بنویسید
  • نوشتن ثبت نام Holding تک.

لیر:

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

Las funciones utilizadas fueron:

  • ثبت ورودی را بخوانید
  • کویل را بخوانید.

مرحله 5: پنل جلو

پنل جلویی
پنل جلویی

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

برای آزمایش و نمایش DMC GUI Suite در آزمایشگاه ، می توانید از کنترل و نشانه های آن استفاده کنید.

2 termómetros (1 para indicar la temperatura en Celsius y otro para indicar la temperatura en Fahrenheit).

Botón "Warning" 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 wrongo.

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 وابسته به فعالیتهای MODBUS seleccionada)

مرحله 6: Archivos Python

En estos archivos está implementado el esclavo MODBUS (Transmisor de temperatura) به شما کمک می کند تا بایگانی ADC را برای تغییر متغیرهای حسگر دما (Simulado en el canal 0 con un potenciometro) انجام دهید.

Me quedo pendiente implementar las funciones 15 y 16.

مرحله 7: HMI

Master Modbus RTU

Este es el maestro implementado en labVIEW. Hay cosas para mejorar، for ejemplo no pude corregir un error al conectar al primer purposeo، investigate y no encontré una solución para aplicarla.

مرحله 8: نتیجه نهایی

Espero ayudar a algunas personas comprender me comoriciación modbus RTU y una implementación en labVIEW.

توصیه شده: