Πίνακας περιεχομένων:

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 temperatureura, el elemento primario (Sensor) fue implementado mediante un potenciometro el cual varia el voltaje de entrada. Για πληροφορίες σχετικά με τον αισθητήρα (Elemento Secundario), για την εφαρμογή του πρωτοκόλλου MODBUS RTU, μέσω του σχετικού σειριακού λογισμικού, μπορείτε να υπολογίσετε τον υπολογιστή σας.

Εκπαιδεύστε το πρόγραμμα για ένα πρόγραμμα και εργαστηριακά Δείτε το δωρεάν πρόγραμμα 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 bit)
  2. Velocidad de transmisión (16 bit)
  3. Medición de la temperatura (16 bit)
  4. Bit de error (1 bit)
  5. Bit de sección (1 bit) C o F
  6. Nivel máximo de medición (16 bit)
  7. Nivel mínimo de medición (16 bit)

Προμήθειες

  • LabVIEW
  • Raspberry Pi 3
  • ADC MCP3008
  • 1 Ποτενσιομέτρο
  • Άλτες
  • FTDI (FT232RL)
  • Protoboard

Βήμα 1: Circuitos

Circuitos
Circuitos

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 αντιπροσωπεύει τη θερμοκρασία του μεσαίου μεγέθους για τον αισθητήρα που είναι βαθμός Κελσίου και του κόσμου της επιλογής του 1 βαθμού Φαρενάιτ.

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 λίστες:

  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] = 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) εξαρτάται από την αξία του 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 αποφασίζει για την προσωπική του δυνατότητα να λάβει γνώση του γιου του:

  • 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:

Πρώτα απ 'όλα, μπορείτε να δείτε το MODBUS που σας ενδιαφέρει, αλλά και στο Python mediante el código:

Εν τω μεταξύ, θα πρέπει να ακολουθήσετε τη λειτουργία σας στο maestro solicitaba για το luego validar ως 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 εφαρμογή 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.

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)

La creación de un maestro que fuera de cierta manera amigable for un usuario final fue hecha por medio de labVIEW y su librría MODBUS la cual lehtababa 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

Máquina De Estados
Máquina De Estados
Máquina De Estados
Máquina De Estados
Máquina De Estados
Máquina De Estados

Συνέχεια που εξηγεί λεπτομερώς τη διαμόρφωση και τη λειτουργία:

conectar:

Χρησιμοποιήστε το API για να δημιουργήσετε ένα νέο maestro MODBUS επιλέγοντας την επιλογή "New Serial Master", για να ελέγξετε τις παραμέτρους του crearon:

  • Baudrate
  • Ισοτιμία
  • Σειριακή θύρα (πόρος Visa)
  • Σειριακός τύπος (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 antesano en queontcco 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 input register asociado a mi variable primaria.

Las funciones utilizadas fueron:

  • Διαβάστε το μητρώο εισαγωγής
  • Διαβάστε Coils.

Βήμα 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 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

Ενδείξεις αρχείων για την εφαρμογή του 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: Τελικός Αποτέλεσμα

Πραγματοποιήστε ένα μεγάλο πρόσωπο που είναι ένας κατανοητός τρόπος επικοινωνίας modbus RTU και una implementación en labVIEW.

Συνιστάται: