Sisällysluettelo:

Simulaatio Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 vaihetta
Simulaatio Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 vaihetta

Video: Simulaatio Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 vaihetta

Video: Simulaatio Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 vaihetta
Video: 8. Arduino & Labview | Salida Analógica | 2da Edición 2024, Marraskuu
Anonim
Simulaatio Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)
Simulaatio Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)

POST ESCRITO EN ESPAÑOL

Se on yksinkertainen ja virtapiirilähetin, lämpötilaelementti, anturielementti (anturi), joka on toteutettu keskimäärin ja potentiaalisesti. Parasta tietoa anturista (Elemento Secundario), MODBUS RTU -protokollan toteuttaja, joka on keskitetty sarjakuvaan, jossa on tietokoneen sarja.

Como maestro se kehittää ja ohjelma en labVIEW haciendo uso de la librería MODBUS que ya implementa. 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

Los registros implementados en el esclavo son:

  1. Suunta MODBUS (16 bittiä)
  2. Velocidad de transmisión (16 bittiä)
  3. Lääketieteellinen lämpötila (16 bittiä)
  4. Bittivirhe (1 bitti)
  5. Valintabitti (1 bitti) C o F
  6. Nivel -lääke (16 bittiä)
  7. Nivel lääkitys (16 bittiä)

Tarvikkeet

  • LabVIEW
  • Raspberry Pi 3
  • ADC MCP3008
  • 1 Potenciometro
  • Puserot
  • FTDI (FT232RL)
  • Protoboard

Vaihe 1: Piirit

Piirit
Piirit

Circuito MCP3008 ja Frambuesa Pi

Conexión Raspberry Pi 3 ja FTDI:

  1. GND ja GND
  2. TX ja RX
  3. Vastaanota ja lähetä

Vaihe 2: Esclavo MODBUS ja Raspberry Pi 3B

Como -alukkeen pakollinen tarve konfiguroida ja asentaa järjestelmän käyttö ja Raspberry Pi 3B. Sugiero -asennus NOOBS desde la pagina virallinen. Lue lisää Raspberry Pi 3B: n konfiguroinnista, joka on tarkoitettu käytettäväksi sarjassa ja puerto SPI: ssä.

(Personalmente yo me conectó a mi raspi utilizando VNC Viewer para ello hay que activar el servidor VNC de la raspi)

Alkuperäinen el valor del ADC edustaa que la temperatura medida por el sensoria esta en grados Celsius y al estar el bit de selección en 1 este valor se pasa a grados Fahrenheit.

Ya sabiendo todo esto, esclavo MODBUS realization for Python haciendo uso de la librería Pyserial. Para la simulación del transmisor se trabajo con 4 listas:

  1. Kelat
  2. Syöttörekisterit
  3. Rekisterien pitäminen
  4. Erilliset tulot

Luettelo kuudesta elementistä. Luettelon kuvaus:

  • coils_lista [0] = bit de selección (si está en 0 signa que la unidad de medición es en Celsius caso contrario unidad de medición en Fahrenheit)
  • diskreetti_syöttö [0] = bittivirhe (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 (anturi lämpötilan simulaatioon ja potentiaaliin) riippuvainen arvojen bitin valinnasta.
  • holdingRegister_lista [0] = esclavo -suunta
  • holdingRegister_lista [1] = valor de temperatura máxima
  • holdingRegister_lista [2] = valor de temperatura mínimo
  • holdingRegister_lista [3] = velocidad de transmisión.

Esclavo MODBUS ja henkilökohtainen päätös henkilökohtaisista asioista, jotka liittyvät kunnianosoitukseen:

  • Valor de temperatura max 500 Celsius
  • Valor de temperatura mínima 200 Celsius
  • 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:

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 directcción implementada sino generar un codigo 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 crear una list 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. CRC MODBUS -laitteen CRC -toiminnot ovat yhteensopivia

CRC -laskin

Códigos de excepción MODBUS

Vaihe 3: Maestro LabVIEW (HMI)

Maestro LabVIEW (HMI)
Maestro LabVIEW (HMI)
Maestro LabVIEW (HMI)
Maestro LabVIEW (HMI)

Luoda maestro que fuera de cierta manera amigable para ja usuario final fue hecha por por medio de labVIEW y librería MODBUS la cual helpitaba de luonti maestro MODBUS RTU.

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

  • sen sisällä
  • conectar: aquí está el API de crear un nuevo maestro modbus con la opción habilitada de SERIAL.
  • escribir: aquí se utiliza la funcion kirjoittaa yhden tilan rekisteri ja kirjoittaa yhden kelan
  • kirja: aquí se configuran los registros y coils de importancia para la lectura del maestro.

Vaihe 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

jatkuva selitys Yksityiskohtaiset tiedot asetusten määrittämisestä ja valitsemisesta:

konektari:

Jos haluat käyttää APIa luomalla uuden maestro MODBUS -valinnan, valitse "New Serial Master" ja valitse sen asetukset:

  • Baudrate
  • Pariteetti
  • Sarjaportti (Visa Resource)
  • Sarjatyyppi (RTU)
  • Esclavo -tunnus.

escribir:

Kirjoita yksin minulle mielenkiintoaba que el maestro pudiera cambiar la temperatura máxima y mínima, el bit de selección, asignarle una nueva directcción al maestro y por ultimo asignarle un nuevo Baudrate al esclavo por lo que ya sabia de antemano en que direcciones en a la que el maestro accedería. Luo lo que las funciones utilizadas fueron:

  • Kirjoita yksi kela
  • Kirjoita yhden tilan rekisteri.

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:

  • Lue syöttörekisteri
  • Lue kelat.

Vaihe 5: Etupaneeli

Etupaneeli
Etupaneeli

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

Asenna DMC GUI Suite para labVIEW -ohjelmaan, joka on tarkoitettu useimmille sairauksille ja ohjauksille.

2 termometriä (1 indikaattori lämpötilassa ja Celsius y toinen para indikaattori lämpötilassa ja 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 registerro cuando se es presionado el botón) caso contrario siempre los estuviera modificando lo cual causaría un funcionamiento inserecto.

Botón para editar la directcción del esclavo (para que únicamente haga el cambio al registerro cuando se es presionado el botón)

Botón para editar el baudrate del esclavo (para que únicamente haga el cambio al registerro cuando se es presionado el botón)

Un botón para "Excepciones" (Para que genere una excepción dependiendo de la función MODBUS seleccionada)

Vaihe 6: Archivos Python

En estos archivos está implementado el esclavo MODBUS (Transmisor de Temperatura) junto con el archivo ADC para leer la muuttuja de interés del sensor de Temperatura (Simulado en el canal 0 con un potenciometro).

Me quedo pendiente implementar las funciones 15 ja 16.

Vaihe 7: HMI

Master Modbus RTU

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

Vaihe 8: Lopputulos

Espero ayudar ja algunas persoonat a comprender mejor la comunicación modbus RTU y una implementación en labVIEW.

Suositeltava: