תוכן עניינים:

סימולציית שידור הטמפרטורה מודבוס (Labview + Raspberry Pi 3): 8 שלבים
סימולציית שידור הטמפרטורה מודבוס (Labview + Raspberry Pi 3): 8 שלבים

וִידֵאוֹ: סימולציית שידור הטמפרטורה מודבוס (Labview + Raspberry Pi 3): 8 שלבים

וִידֵאוֹ: סימולציית שידור הטמפרטורה מודבוס (Labview + Raspberry Pi 3): 8 שלבים
וִידֵאוֹ: תפסתי אותה על חםםםם!!!!!! 2024, יולי
Anonim
סימולציה Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)
סימולציה Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)

POST ESCRITO EN ESPAÑOL

ניתן לראות סימולציה של הטרמיזמה של הטמפרטורה, אלמנטור החיישן (חיישן) באמצעות יישום המדיום והפוטנציאל ההולטימטיבי. למידע על חיישן (Elemento Secundario), ניתן ליישם את הפרוטוקול MODBUS RTU, עבור מדיה אחת ויחידה סדרתית של מחשבים.

Como maestro se elaboró un programa en labVIEW haciendo uso de la librería MODBUS que ya implementa. 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. מהירות העברה (16 סיביות)
  3. Medición de la temperatura (16 סיביות)
  4. שגיאת ביט (ביט אחד)
  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 סיביות)

אספקה

  • LabVIEW
  • פטל פי 3
  • ADC MCP3008
  • 1 פוטנציומטרו
  • מגשרים
  • FTDI (FT232RL)
  • פרוטובארד

שלב 1: מעגלים

מעגלים
מעגלים

Circuito MCP3008 y Frambuesa Pi

Conexión Raspberry Pi 3 ו- FTDI:

  1. GND ו- GND
  2. TX a RX
  3. RX a TX

שלב 2: Esclavo MODBUS En Raspberry Pi 3B

כמו כן, תחילת ההתקנה וההתקנה של מערכת ההפעלה של Raspberry Pi 3B. הורדת ההתקנה של NOOBS הורדה לדף הרשמי. תצורת Luego tu Raspberry Pi 3B עבור מקודד שימוש ב- puerto serial y puerto SPI.)

מקור הטקסט של ADC מייצג את הטמפרטורה במדינת החיישן של צלזיוס ויחידות.

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 יחידות. פירוט תיאור של היסודות של הרשימה:

  • coils_lista [0] = ביט בחירה
  • discrete_input [0] = ביט טעות
  • inputRegister_lista [0] = ערך ADC (חיישן טמפרטורת סימולציה לפוטנציומטריה) תלוי ערך של ביט בחירה.
  • holdingRegister_lista [0] = dirección de esclavo
  • holdingRegister_lista [1] = ערך הטמפרטורה המקומי
  • holdingRegister_lista [2] = ערך הטמפרטורה מינימו
  • holdingRegister_lista [3] = velocidad de transmisión.

El ESclavo MODBUS החלטה אישית של משתמשים עם צורות פרסום רשמיות כמו בן:

  • ערך הטמפרטורה של 500 מעלות צלזיוס
  • ערך הטמפרטורה מינימה 200 צלזיוס
  • Baudrate inicial de 9600
  • הוראת ספרה 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 for laego 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ó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 implementadas.

עבור ultimo paso en cada función crear una list and 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 CRC MODBUS

מחשבון CRC

Codigos 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 משתנה עבור 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 signuientes opciones:

  • init
  • conectar: aqui está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
  • escribir: aquí se utiliza la funcion לכתוב רשימות אחיזה יחידות y לכתוב סליל יחיד
  • 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

המשך הסבר מפורט של התצורה וההגדרה:

קונקטאר:

השתמשו בממשק ה- API של הכלי והחדש ביותר של MODBUS לבחירת "מאסטר סידורי חדש", ובקרות שליטה על התצורה:

  • קצב שידור
  • שִׁוּוּי
  • יציאה טורית (משאב ויזה)
  • סוג סידורי (RTU)
  • תעודת הזהות 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 que direcciones se enconraba a la que el maestro accedería. עבור lo fun que funciones utilizadas fueron:

  • כתוב סליל יחיד
  • כתוב רשם אחזקות יחיד.

לומד:

En leer solo me interesaba la lectura del bit de error y el input register asociado a mi משתנה primaria.

Las funciones utilizadas fueron:

  • קרא את רישום הקלט
  • קרא סלילים.

שלב 5: לוח קדמי

פאנל קדמי
פאנל קדמי

לוח פנל חזיתי במעבדה צפה בסטודנטים רבים שיכולים להתקיים לגמר. עבור lo que se realizó lo siguiente:

התקנת סוויטת DMC GUI עבור LabVIEW עבור מספר רב של נושאים ושליטה.

2 טמפרטורות (1 עבור אינדיקציה לטמפרטורה ב- Celsius ו- otro para indicar la temperatura en Fahrenheit).

סימן "אזהרה" יכול להיות כל אחד יכול לתקן את הטעות.

Botón para editar los rangos de temperatura a medir (para que unnicamente 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 (עבור que unnicamente 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 for "Excepciones" (Para que genere una excepción dependiendo de la función MODBUS select)

שלב 6: Archivos Python

ניתן לשלוח את כל התכונות של MODBUS (שינויי טמפרטורה) באמצעות ADC בארכיון של משתנה בין משתני החיישן של הטמפרטורות (סימולציה בתעלה 0 עם פוטנציאל).

Me quedo pendiente implementar las funciones 15 y 16.

שלב 7: HMI

מאסטר Modbus RTU

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

שלב 8: גמר התוצאה

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

מוּמלָץ: