Sisukord:

Simulatsioon Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 sammu
Simulatsioon Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 sammu

Video: Simulatsioon Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 sammu

Video: Simulatsioon Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3): 8 sammu
Video: Как связать промышленные датчики 4–20 мА с ПЛК Raspberry Pi Pico | ПЛК Мицубиси FX1N 2024, November
Anonim
Simulatsioon Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)
Simulatsioon Transmisor De Temperatura Modbus (Labview + Raspberry Pi 3)

POST ESCRITO EN ESPAÑOL

Seadme temperatuuri ja vooluahela transmissor, el elemento primario (Sensor) fue implementado mediante un potenciometro el cual varia el voltaje de entrada. Anduri (Elemento Secundario) jaoks on enesetundlik teave, mis on varustatud MODBUS RTU protokolliga, mis on keskmiselt ja seeria hacia una computadora que será el maestro.

Como maestro se elaboró un program en labVIEW haciendo uso de la librería MODBUS que ya implementa. Esclavo es capaz de recibir las siguientes funciones del maestro:

  1. Funktsioon 0X01
  2. Funktsioon 0x02
  3. Funktsioon 0x03
  4. Funktsioon 0x04
  5. Funktsioon 0x05
  6. Funktsioon 0x06

Los registros implementados en el esclavo son:

  1. MODBUS -i suund (16 bitti)
  2. Transmissiooni kiirus (16 bitti)
  3. Temperatuuri meditsiin (16 bitti)
  4. Vea viga (1 bit)
  5. Valiku bitt (1 bit) C o F
  6. Meditsiiniline meditsiin (16 bitti)
  7. Meditsiiniline ravim (16 bitti)

Tarvikud

  • LabVIEW
  • Vaarika Pi 3
  • ADC MCP3008
  • 1 Potenciometro
  • Džemprid
  • FTDI (FT232RL)
  • Protoboard

Samm: vooluringid

Vooluringid
Vooluringid

Circuito MCP3008 ja Frambuesa Pi

Conexión Raspberry Pi 3 ja FTDI:

  1. GND ja GND
  2. TX ja RX
  3. RX ja TX

2. samm: Esclavo MODBUS ja Raspberry Pi 3B

Como praimer pazo vaja konfigureerida ja paigaldada süsteemi operatiivse ja Raspberry Pi 3B. Sugiero instalar NOOBS desde la pagina Official. Lugege konfiguratsiooni Raspberry Pi 3B jaoks, mis on ette nähtud seeria ja puerto SPI kasutamiseks.

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

Originaalne el valor del ADC esindaja, mis esindab temperatuuri temperatuuri, mis on ette nähtud anduri esta en grados Celsiuse ja al -stari jaoks, kuid valiku tegemiseks ja 1 väärtuseks Fahrenheiti järgi.

Ya sabiendo todo esto, esclavo MODBUS realiseerib Python haciendo uso de la librería Pyserial. Para la simulatsioon del transmisor se trabajo con 4 lists:

  1. Rullid
  2. Sisendregistrid
  3. Registrite pidamine
  4. Diskreetsed sisendid

Kuue elemendi nimekiri. Lühikirjeldus de los elementos de cada list:

  • 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)
  • diskreetne_sisend [0] = bitiviga (see 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 potentsometro) dependiento del valor de bit de selección.
  • holdingRegister_lista [0] = esclavo suund
  • holdingRegister_lista [1] = valor de temperatura máxima
  • holdingRegister_lista [2] = valor de temperatura mínimo
  • holdingRegister_lista [3] = käiguvahetuse kiirus.

Esclavo MODBUS ja isikliku kuraatori otsus, mis käsitleb parrotetros iniciales como lo son:

  • Valor de temperatura max 500 Celsiuse järgi
  • Temperatuurivalik 200 kraadi Celsiuse järgi
  • 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 de 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 -funktsiooni saate kohandada ja kasutada CRC MODBUS -i linki

CRC kalkulaator

Códigos de excepción MODBUS

3. samm: 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 para and usuario final fue hecha por por medio de labVIEW y librería MODBUS la cual hõlbustamiseks ja loomiseks MODBUS RTU.

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

  • selles
  • kontuur: see on API API, mis loob uue maestro modbus con la opción habilitada de SERIAL.
  • escribir: aquí se utiliza la funcion write single holding register y write single coil
  • see: konfiguratsiooni seadistuste registreerimised ja importimise parameetrid para mactro lectura.

4. samm: 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

Continueción Exlicare Detalladamente la konfiguratsioon en cada opción:

konektar:

Kasutage API -liidese loomiseks ja uueks maestro MODBUS -i valimiseks ning uue opsüsteemi "Uus jadameister" valimiseks, konfigureerige järgmisi seadistusi:

  • Baudrate
  • Pariteet
  • Seeriaport (viisaressurss)
  • Seeria tüüp (RTU)
  • Esclavo ID.

kirjeldus:

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 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. Lo lo que las funciones utilizadas fueron:

  • Kirjutage üks mähis
  • Kirjutage üheosaline register.

leer:

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

Fueroni kasutamise funktsioonid:

  • Lugege sisendregistrit
  • Loe rullid.

Samm: esipaneel

Esipaneel
Esipaneel

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

Installige DMC GUI Suite paraviisi jaoks, mis on parem ja parem, kui soovite juhtida ja näidata.

2 termomeetrit (1 para indicar la temperatura en Celsius y second 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 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)

Samm: arhiivige Python

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

Me quedo pendiente implementar las funciones 15 ja 16.

Samm: HMI

Master Modbus RTU

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

8. samm: tulemuse finaal

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

Soovitan: