תוכן עניינים:
- אספקה
- שלב 1: מעגלים
- שלב 2: Esclavo MODBUS En Raspberry Pi 3B
- שלב 3: Maestro LabVIEW (HMI)
- שלב 4: Máquina De Estados
- שלב 5: לוח קדמי
- שלב 6: Archivos Python
- שלב 7: HMI
- שלב 8: גמר התוצאה
וִידֵאוֹ: סימולציית שידור הטמפרטורה מודבוס (Labview + Raspberry Pi 3): 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
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:
- פונקציה 0X01
- פונקציה 0x02
- פונקציה 0x03
- פונקציה 0x04
- פונקציה 0x05
- פונקציה 0x06
Los registros implementados en el esclavo son:
- Direccionamiento MODBUS (16 סיביות)
- מהירות העברה (16 סיביות)
- Medición de la temperatura (16 סיביות)
- שגיאת ביט (ביט אחד)
- Bit de selección (1 bit) C o F
- Nivel máximo de medición (16 סיביות)
- 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:
- GND ו- GND
- TX a RX
- 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:
- סלילים
- רשימות קלט
- רישום אחזקות
- תשומות דיסקרטיות
רשימה של 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)
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
המשך הסבר מפורט של התצורה וההגדרה:
קונקטאר:
השתמשו בממשק ה- 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.
מוּמלָץ:
מדידת הטמפרטורה: 7 שלבים
מדידת טמפרטורה: هو قياس درجه الحراره باستخدام الكاميرا االحراريه
מד הטמפרטורה והלחות הפשוט ביותר של IoT: 5 שלבים (עם תמונות)
מד הטמפרטורה והלחות הפשוט ביותר של IoT: מד הטמפרטורה והלחות הפשוט ביותר של IoT מאפשרים לך לאסוף טמפרטורה, לחות ומדד חום. לאחר מכן שלח אותם ל- Adafruit IO
מעגל שיכול לחוש את השינוי בערך הטמפרטורה: 10 שלבים
מעגל שיכול לחוש את שינוי ערך הטמפרטורה: מעגל זה מודד את הטמפרטורה באמצעות חיישן טמפרטורה LM35 ומשווה את מתח הכניסה באמצעות מגבר IC עם המידע שנאסף המעגל יפעיל ויכבה את הממסר
תרמוסטט מודבוס ESP8266 עם מגע: 5 שלבים
ESP8266 תרמוסטט מודבוס עם מגע: אראה לך במדריך זה כיצד להכין תרמוסטט עם מסך מגע יפה עם תמיכה אופציונלית במודוס באמצעות RS485 עם ArduiTouch ESP ו- ESP8266 (NodeMCU או Wemos D1 Mini)
אנטנת לולאה מהדהדת שידור להקת שידור AM בינונית גל: 31 שלבים
אנטנת לולאה להקת שידור להקת שידור בינונית Wave AM: אנטנת לולאה של להקת שידור AM בינונית (MW) AM. נבנה באמצעות כבל 'סרט' טלפוני זול (8 חוטים), & (אופציונלי) שוכן בגינה זולה 13 מ"מ (~ חצי אינץ ') צינור השקיה מפלסטיק. הגרסה הנוקשה יותר לתמיכה עצמית מתאימה יותר