Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
POST ESCRITO EN ESPAÑOL
Se simulează un circuit transmisor de temperatură, elementul primar (Sensor) a fost implementat printr-un potențiometru care poate varia tensiunea de intrare. Pentru a trimite informația senzorului (Elemento Secundario), și a implementat protocolul MODBUS RTU, pentru mediu de un port serial către o calculatoare care va fi maestrul.
Como maestro se elaboró un programa en labVIEW haciendo uso de la librería MODBUS care ya implementa. El esclavo este capabil să primească următoarele funcții ale maestrului:
- Función 0X01
- Función 0x02
- Función 0x03
- Función 0x04
- Función 0x05
- Función 0x06
Los registros implementados en el esclavo son:
- Direcționare MODBUS (16 biți)
- Viteza de transmisie (16 biți)
- Meditarea temperaturii (16 biți)
- Bit de eroare (1 bit)
- Bit de selecție (1 bit) C o F
- Nivel maxim de mediție (16 biți)
- Nivel minim de mediție (16 biți)
Provizii
- LabVIEW
- Raspberry Pi 3
- ADC MCP3008
- 1 Potenciometro
- Jumpers
- FTDI (FT232RL)
- Protoboard
Pasul 1: Circuitos
Circuito MCP3008 și Frambuesa Pi
Conexión Raspberry Pi 3 și FTDI:
- GND a GND
- TX un RX
- RX a TX
Pasul 2: Esclavo MODBUS En Raspberry Pi 3B
Como primer pazo necesitas configurar e instalar tu sistema operativo en tu Raspberry Pi 3B. Sugerează instalarea NOOBS de pe pagina oficială. Luego configurează-ți Raspberry Pi 3B pentru a putea utiliza portul serial și portul SPI.
(Personalmente me me conectó a mi raspi using VNC Viewer for ello hay that activar the server VNC de la raspi)
Originalmente el valor del ADC reprezintă că temperatura măsură pentru senzorul este în grados Celsius și al fi el bit de selecție în 1 este valor se pas a grados Fahrenheit.
Ya sabiendo todo esto, el esclavo MODBUS se realizează cu Python haciendo uso de la librería Pyserial. Pentru simularea transmisorului se lucrează cu 4 liste:
- Bobine
- Registrele de intrare
- Ținând registre
- Intrări discrete
Cada lista se face de 6 elemente. Breve descriere a elementelor de fiecare listă:
- coils_lista [0] = bit de selecție (dacă este în 0 înseamnă că unitatea de mediție este în Celsius caz contrar unitate de mediție în Fahrenheit)
- discrete_input [0] = bit de error (este bit se înțelege când valoarea de temperatură este în afara rangului stabilit între temperatura maximă și minimă)
- inputRegister_lista [0] = Valor del ADC (sensor de temperatura simulado por un potenciometro) dependent de valoarea de bit de selecție.
- holdingRegister_lista [0] = direcție de esclavo
- holdingRegister_lista [1] = valor de temperatura máxima
- holdingRegister_lista [2] = valor de temperatura mínima
- holdingRegister_lista [3] = viteză de transmisie.
El esclavo MODBUS a decision personal account with ciertos parámetros initiales as lo son:
- Valor de temperatura maximă 500 Celsius
- Valor de temperatura mínima 200 Celsius
- Baudrate inițial de 9600
- Dirección de esclavo 1
- Unitatea de mediție inițială în Celsius.
La lógica aplicată este următorul:
În primul loc se caută leer toată trama MODBUS enviată de maestrul, asta se face în Python prin codul:
În al doilea loc se caută funcția pe care maestrul a solicitat-o pentru apoi valida și cantitatea de salide pedide pentru maestrul erau valide, dar generează un cod de excepție 3, urmărit de validare, iar maestrul pedie o direcție implementată, dar generează un cod de excepție 2 y por ultimo realizează instrucțiunea pedidă conform codului de funcție leído.
Y así sucesivamente cu restul funcțiilor implementate.
Pentru ultimul pas în fiecare funcție crearea unei liste și mandar unul pentru unul pentru portul serial la petiția maestrului.
Aclaro că no valide si el CRC enviada al esclavo era el correcto pero si lo hice para el mensaje enviado al maestro. Funcția CRC adaptează codul meu folosind acest link CRC MODBUS
Calculator CRC
Coduri de excepție MODBUS
Pasul 3: Maestro LabVIEW (HMI)
La crearea unui maestru care afară de ciertă mod amigabil pentru un utilizator final a fost aici pentru mediu de labVIEW și su libreria MODBUS la care a facilitat crearea unui maestru MODBUS RTU.
Se elaborează o mașină de produse în labVIEW cu următoarele opțiuni:
- init
- conectează-te: aici ești API-ul pentru a crea un nou maestru modbus cu opțiunea abilitată de SERIAL.
- scrie: aici se utilizează funcția write single holding register și write single coil
- leer: aici se configurează registrele și bobinele de importanță pentru lectura lecturii maestrului.
Pasul 4: Máquina De Estados
continuare explică detaliat configurarea în fiecare opțiune:
conectar:
Se folosește API-ul pentru a crea un nou maestru MODBUS selectând opțiunea de "New Serial Master", pentru a crea controlul pentru configurare:
- Baudrate
- Paritate
- Port serial (resursă viză)
- Tip de serie (RTU)
- ID del esclavo.
scrie:
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 encontraba la información a la care maestrul accesează. Pentru ceea ce funcțiile utilizate au fost:
- Scrieți o singură bobină
- Scrie un registru de exploatație unic.
leer:
En leer solo me interesaba la lectura del bit de error y el input register asociado a mi variable primaria.
Funcțiile utilizate au fost:
- Citiți Registrul de intrare
- Citiți bobine.
Pasul 5: Panoul frontal
El panel frontal en labVIEW se tratează cel mai bine posibil, care să fie amigabil pentru utilizatorul final. Pentru ceea ce a realizat următorul:
Se instalează DMC GUI Suite pentru labVIEW pentru a avea un design mai bun în comandă și indicatoare.
2 termometri (1 pentru indicarea temperaturii în Celsius și altul pentru indicarea temperaturii în Fahrenheit).
Botonul „Avertisment” care doar se înțelege când bitul de eroare este încins.
Botón para editar los rangos de temperatura a medir (para que únicamente haga el cambio al registro cuando se presionado el botón) caz contrar mereu estuviera modificând ceea ce cauzează un funcționare incorect.
Boton pentru editare la direcția esclavului (pentru care numai să facă schimbarea la registru când se presionează butonul)
Botón para editar el baudrate del esclavo (pentru care numai să facă schimbarea la registru când este presionat butonul)
Un buton pentru "Excepții" (Pentru a căror genere o excepție depinde de funcția MODBUS selectată)
Pasul 6: Archivos Python
În aceste fișiere este implementat esclavul MODBUS (Transmisor de temperatura) împreună cu arhivul ADC pentru leer variabilă de interes a senzorului de temperatură (Simulat în canalul 0 cu un potențiometru).
Me quedo pendiente implementa funcțiile 15 și 16.
Pasul 7: HMI
Master Modbus RTU
Este es maestro implementado en labVIEW. Hay cosas para mejorar, por ejemplo no pude corregir un error al conectar la primer intento, investigate și nu am găsit o soluție pentru a aplica.
Pasul 8: Rezultatul final
Sper să ajut câteva persoane să înțeleagă mai bine comunicarea modbus RTU și o implementare în labVIEW.
Recomandat:
ECG automatizat: simulare de amplificare și filtrare folosind LTspice: 5 pași
ECG automatizat: amplificare și simulare a filtrelor folosind LTspice: Aceasta este imaginea dispozitivului final pe care îl veți construi și o discuție foarte aprofundată despre fiecare parte. De asemenea, descrie calculele pentru fiecare etapă. Imaginea prezintă diagrama bloc pentru acest dispozitiv Metode și materiale: Obiectivul acestui pr
Software de simulare LED Cube: 5 pași
Software de simulare LED Cube: aproape am terminat construirea cubului meu LED 8x8x8 și odată cu acesta a venit acest software pentru PC! Vă ajută să creați animații și să le simulați pe un ecran 2D înainte de a fi încărcate pe cel 3D. Nu există niciun sprijin (încă) pentru comunicarea prin
Cum se face înregistrarea de date în timp real a umidității și temperaturii cu Arduino UNO și cardul SD - Simulare DHT11 Data-logger în Proteus: 5 pași
Cum se face înregistrarea de date în timp real a umidității și temperaturii cu Arduino UNO și cardul SD | Simulare DHT11 Data-logger în Proteus: Introducere: salut, acesta este Liono Maker, aici este linkul YouTube. Realizăm un proiect creativ cu Arduino și lucrăm pe sisteme încorporate. Data-Logger: Un data logger (de asemenea, data-logger sau înregistrator de date) este un dispozitiv electronic care înregistrează date în timp
Transmițător RF Flysky alimentat prin USB + Conexiune semnal sârmă la PC + Software de simulare gratuită: 6 pași
Transmițător RF Flysky alimentat prin USB + Conexiune semnal sârmă la PC + Software gratuit Simulator: Dacă sunteți ca mine, veți dori să testați transmițătorul RF și să învățați înainte de a vă prăbuși dragul avion / dronă RF. Acest lucru vă va oferi o distracție suplimentară, economisind în același timp tone de bani și timp. Pentru a face acest lucru, cel mai bun mod este să vă conectați transmițătorul RF la dvs
Cum se face înregistrarea temperaturii și a intensității luminii - Simulare Proteus - Fritzing - Liono Maker: 5 pași
Cum se face înregistrarea temperaturii și a intensității luminii | Simulare Proteus | Fritzing | Liono Maker: Bună, acesta este Liono Maker, acesta este canalul meu oficial de YouTube. Acesta este canalul YouTube open source. Aici este linkul: canalul YouTube Liono Maker aici este linkul video: Temp & Înregistrare intensitate ușoară În acest tutorial vom învăța cum să facem Temper