Სარჩევი:

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 ბიტი)
  2. Velocidad de transmisión (16 ბიტი)
  3. მედიცინის ტემპერატურა (16 ბიტი)
  4. ცოტა შეცდომა (1 ბიტი)
  5. სელექცია (1 ბიტი) 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: წრედები

Circuitos
Circuitos

Circuito MCP3008 y Frambuesa Pi

Conexión Raspberry Pi 3 y FTDI:

  1. GND და GND
  2. TX და RX
  3. RX და TX

ნაბიჯი 2: Esclavo MODBUS და ჟოლო Pi 3B

Como primer pazo necesitas configurar e instalar tu sistema operativo en tu Raspberry Pi 3B. დააინსტალირეთ NOOBS ოფიციალური გვერდი. გამოიყენეთ Raspberry Pi 3B კონფიგურაციისთვის, რათა გამოიყენოთ სერიული სერია და SPI SPI.

(პერსონალურად შემეხმიანეთ და მიმიერთეთ VNC Viewer– ის გამოყენებით, თუ რა გააქტიურებულია VNC de la raspi)

ორიგინალური ღირებულების ADC წარმოადგენს ტემპერატურის მედიცინას, რომელიც გამოიყენება სენსორში და გრადუს ცელსიუსში და მის სიღრმეში 1 გრადუს ფარენჰეიტში.

Ya sabiendo todo esto, el esclavo MODBUS გააცნობიერებს პითონს, რომლითაც თავისუფალია 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] = სელექციის ნაწილი (როგორც ეს არის 0 ნიშანი, რაც ნიშნავს მედიკამენტების მიღებას ცელსიუსში caso contrario unidad de medición en Fahrenheit)
  • discrete_input [0] = bit de შეცდომა (ეს არის bit en enciende cuando el valor de temperatura esta fuera del rango establecido entre temperatura máxima y mínima)
  • inputRegister_lista [0] = Valor del ADC (sensour de temperatura simulado for un potenciometro) დამოკიდებული del valor de bit de selección.
  • HoldRegister_lista [0] = ესკლავოს მითითება
  • HoldRegister_lista [1] = valor de temperatura máxima
  • HoldRegister_lista [2] = valor de temperatura mínimo
  • HoldRegister_lista [3] = გადაცემის სიჩქარე.

El esclavo MODBUS გადამწყვეტი პირადი cuenta con ciertos parámetros iniciales como lo son:

  • Valor de temperatura máxima 500 ცელსიუსი
  • Valor de temperatura mínima 200 გრადუსი
  • ბაუდრატის ოფიციალური მონაცემებით 9600 წ
  • ესკლავოს მიმართულება 1
  • Unidad de medición inicial en Celsius.

La lógica aplicada es la siguiente:

პირველ რიგში, თქვენ უნდა გადახედოთ MODBUS– ს ტრავმის შესახებ, რომლითაც თქვენ დაინახავთ, რომ ეს არის 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 dirección განხორციელება s 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.

უპირველეს ყოვლისა, შემიძლია შევქმნა სია და შევადგინო მანდარინი, რათა გამოვიყენო სერია la petición del maestro.

ეს არის CRC enviada al esclavo era el correcto pero si lo hice para el menaje enviado al maestro. CRC ფუნქცია 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 para un usuario final fue hecha for medio de labVIEW y librería MODBUS la cual lehtabilita 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.
  • აღწერეთ: aquí se utiliza la funcion ჩაწერეთ ერთი ჰოლდინგის რეგისტრი და დაწერეთ ერთი გრაგნილი
  • leer: aquí se configuran los registras 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

გაგრძელება დეტალური დეტალური კონფიგურაციისა და ოპერაციის შემდეგ:

კონექტორი:

გამოიყენეთ API– ის ახალი მოდელი MODBUS– ისთვის, რათა აირჩიოთ "ახალი სერიული ოსტატი", კონფიგურაციის შემდგომი კონტროლისთვის:

  • ბოდრატი
  • პარიტეტი
  • სერიული პორტი (სავიზო რესურსი)
  • სერიული ტიპი (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 antemació en enonta en en enacano en quecc a la que el maestro accedería. Por lo que las funciones utilizadas fueron:

  • ჩაწერეთ ერთი კოჭა
  • ჩაწერეთ ერთჯერადი ჰოლდინგის რეგისტრაცია.

ლერი:

მხოლოდ ამის შემდეგ შემიძლია ვიმსჯელო ლექტურაზე, შეცდომით და შეცდომით შევიტანო რეგისტრაცია ასოციაციურად და ცვლადი პირველობით.

Las funciones utilizadas fueron:

  • წაიკითხეთ შეყვანის რეგისტრაცია
  • წაიკითხეთ კოილსი.

ნაბიჯი 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 LabVIEW– სთვის, რათა დადგინდეს კონტროლი და მითითებები.

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 არასწორი.

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 for "Excepciones" (Para que genere una excepción დამოკიდებული და დამცავი ფუნქციები MODBUS სელექციაზე)

ნაბიჯი 6: არქივოს პითონი

ეს არის არქივი MODBUS (Transmisor de temperatura), რომელიც დაკავშირებულია არქივში ADC– ს ცვლადი ტემპერატურის სენსორთან (Simulado en el canal 0 con un potenciometro).

მე შევასრულე სამუშაოების შესრულება 15 და 16 წლით.

ნაბიჯი 7: HMI

ოსტატი Modbus RTU

Este es el maestro implementado en labVIEW. ჩემი აზრით, მე არ შემიძლია ვივარაუდოთ, რომ შეცდომა და შეცდომა არ არის, გამოძიება არ შეიძლება გამოყენებულ იქნას ერთი გადაწყვეტილებით.

ნაბიჯი 8: შედეგი საბოლოო

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

გირჩევთ: