Căutare
MENU
  • Expresii / Limbajul scriptului
  • Utilizatori și permisiuni
  • Backup, restaurare backup, resetare la setările din fabrică
  • Software release notes
  • Modbus

    Introducere în Modbus

    Modbus este un protocol de comunicație simplu, adesea folosit pentru a integra echipamente HVAC. Utilizează comunicarea master-slave, atunci când mai multe dispozitive pot fi conectate la magistrala comună, fiecare trebuie să aibă un ID unic Slave, iar dispozitivul master interogă întotdeauna dispozitivele slave individuale care răspund la acesta.

    Master - topologie slave

    În cele mai multe cazuri, TapHome este utilizat în modul în care unitatea de control Core este Modbus Master, iar dispozitivele conectate sunt Modbus Slave. Acesta este setat în secțiunea Hardware → Modbus RTU sau Modbus TCP. Cu toate acestea, este și posibil să folosiți direcția opusă, atunci când TapHome Core oferă un alt sistem superior cu informații despre dispozitivele sale. Este definit în secțiunea Expunere dispozitive → Modbus RTU sau Modbus TCP.

    Straturi fizice

    Modbus poate comunica prin diferite straturi fizice:

    • printr-o linie serială, de obicei RS485. Acesta este denumit Modbus RTU
    • prin rețeaua LAN prin protocolul TCP/IP
    • prin rețeaua LAN prin protocolul UDP - momentan nu este acceptat de sistemul TapHome

    Înregistrări Modbus

    Modbus definește 4 tipuri de registre:

    Inregistreaza-te

    În scurt

    Acces

    mărimea

    Function codes
    Holding RegistersHRead-write16-bitsRead: 03, Write multiple: 16 (0x10)
      - Write Single HoldingSHRead-write16-bitsWrite single: 06
    Coil (Discrete Output Coils)CRead-write1-bitRead: 01, Write multiple: 15 (0xF)
      - Write Single CoilSCRead-write1-bitWrite single: 05
    Discrete Input ContactsDRead-only1-bitRead: 02
    Analog Input RegistersARead-only16-bitsRead: 04

    Numărul de registru este de 16 biți, adică poate avea o valoare de la 0 la 65535. Operațiile pot fi efectuate pe registre:

    • citirea mai multor registre
    • înregistrarea unui singur registru
    • înregistrarea mai multor registre

    Unele implementări Modbus adaugă comenzi suplimentare: raportează id-ul slave, mascarea biților, scriere și citire simultan etc., dar acestea nu sunt acceptate de TapHome.

    Informațiile despre ce este stocat în ce registru și în ce format fac parte din documentația echipamentului furnizată de furnizorul sau producătorul echipamentului. Un exemplu de documentație Modbus de la un furnizor de dispozitiv Modbus:

    Registrul de tip C (Coil), indice 58, deoarece are doar 2 valori (deschis/închis) și permite pe lângă citire și scriere, tipul adecvat de dispozitiv TapHome este ieșire digitală.

    Instrucțiuni accelerate pentru integrarea unui dispozitiv Modbus în TapHome

    1. Conectați dispozitivul la magistrala corespunzătoare (pentru Modbus RTU și ASCII) sau la LAN (pentru Modbus TCP). Pentru un dispozitiv TCP, asigurați-vă că se află în aceeași rețea cu controlerul TapHome Core, de exemplu folosind Fing (iOS, Android) sau IP Scanner (Windows).
    2. În TapHome → Hardware, adăugați o nouă interfață Modbus RTU sau Modbus TCP și setați parametrii de comunicare conform documentației. Pentru Modbus RTU este rata de transmisie, biți de oprire, paritate, biți de date, pentru Modbus TCP este adresa IP.
    3. Găsiți în documentația Modbus a dispozitivului ce ID slave folosește. În cazul Modbus TCP, acesta este uneori denumit ID unitate. Dacă doriți să utilizați mai multe dispozitive pe o singură magistrală cu Modbus RTU, trebuie să schimbați ID-ul slave al fiecăruia, astfel încât să fie unic pentru linia de magistrală dată.
    4. Test de comunicare - folosind instrumentul Operațiuni manuale, încercați să citiți unele informații conform documentației (tabel Modbus) pentru dispozitivul dat. Dacă totul funcționează, ar trebui să vedeți o citire.
    5. Dacă testul de comunicare a avut succes, creați un Modul care reprezintă dispozitivul Modbus
    6. Alegeți ce informații din documentația Modbus doriți să prezentați în sistemul TapHome și creați dispozitivele corespunzătoare. Începeți prin a citi valorile (Citiți scenariul), iar în cazul actorilor, continuați prin a scrie (Scrieți scenariul).
    7. Dacă funcțiile de bază ale dispozitivului funcționează, adăugați definiții de eroare, avertisment sau informații la scripturi.
    8. Dacă este necesar, puteți defini, de asemenea, atribute de serviciu și acțiuni de serviciu pentru dispozitivele și modulele TapHome
    9. Dacă totul este reglat și comunică corect, exportați Modulul într-un fișier XML, astfel încât să îl puteți utiliza data viitoare. De asemenea, puteți contribui la comunitate la github.com/taphome-official/modbus_templates

    Implementare în TapHome

    Această documentație este destinată scenariului în care unitatea de control TapHome Core este un master Modbus, iar dispozitivele fizice care sunt adăugate la secțiunea Hardware → Modbus RTU / TCP sunt slave Modbus.

    Ierarhie

    Interfață

    Hardware → Modbus RTU: dispozitivele sunt conectate pe unele BUS, sunt definiți parametrii de bază ai transmisiei RS485, cum ar fi baudrate, paritate, biți de oprire sau dacă datele sunt ASCII sau binare. Numai dispozitivele cu aceleași setări de comunicare pot fi conectate pe această magistrală. De asemenea, comunicarea corectă poate funcționa numai dacă cablurile A și B sunt conectate corect. Hardware → Modbus TCP: dispozitivele sunt conectate pe aceeași rețea LAN ca și unitatea de control Core. Este definit un port TCP, care este comun tuturor dispozitivelor conectate la această interfață.

    Modul

    O interfață poate conține unul sau mai multe module, care în majoritatea cazurilor acoperă comunicarea cu întregul dispozitiv fizic. Din punct de vedere al configurației, Modulul definește ID-ul unic Slave al dispozitivului conectat pentru Modbus RTU și, în plus, adresa IP pentru Modbus TCP.

    Dispozitiv

    Reprezintă un anumit element de control sau senzor în sistemul TapHome. Trebuie să facă întotdeauna parte dintr-un singur Modul părinte.

    Exemplu

    5 unități de aer condiționat conectate pe o singură magistrală, utilizează o interfață comună Modbus RTU, care definește portul magistralei, viteza de transmisie și alți parametri de comunicare. Interfața conține 5 module, fiecare dintre acestea reprezentând o unitate de aer condiționat cu un ID unic Slave. Fiecare modul are dispozitive definite sub el, cum ar fi un termostat, modul de răcire/încălzire, puterea ventilatorului sau înclinarea lamelelor. Dispozitivele individuale au comenzi definite pentru citirea și/sau scrierea valorilor Modbus.

    Dispozitive acceptate:

    • Ieșire digitală
    • Ieșire analogică
    • Termostat
    • Comutator cu mai multe valori
    • Senzor de temperatura
    • Metru electric
    • Contact de stare
    • Buton
    • O variabilă

    Scripturi pentru citirea și scrierea valorilor Modbus

    Dispozitivele TapHome comunică cu dispozitivele fizice Modbus folosind scripturi.

    Viac informácii o skriptovacom jazyku, predovšetkým sekcia 

    Operații bit

    Pentru comunicarea cu dispozitivele Modbus, secțiunile de scripting sunt definite pe acestea:

    • Inițializare script: este rulat când dispozitivul pornește (de exemplu, după ce unitatea de control este repornită)
    • Citire script: setarea valorilor variabilelor globale sau stările de eroare de citire
    • Scriptul de citire a valorii: scriptul pentru citirea unei anumite valori (cantități) de pe un dispozitiv Modbus (de exemplu, temperatura setată pe termostat sau temperatura măsurată pe termostat)
    • Scrieți scriptul valorii: scrieți valoarea pe dispozitivul Modbus

    Funcții pentru comunicarea cu dispozitivele Modbus

    MODBUSR (citire Modbus) Funcție pentru citirea registrului din Modbus. În funcție de tipul de date, acesta poate fi 1 registru (pentru tipuri de date pe 16 biți), 2 registre (pentru tipuri de date pe 32 de biți) sau mai multe registre (pentru tipuri de date String)

    MODBUSR(register_type, register_address, data_type, [OPTIONAL: number_of_characters if data_type=String])
    Example: MODBUSR(H, 20, Int16)/100

    Citiți numărul de registru H (sau adresa) 20 și interpretați-l ca un număr întreg de 16 biți (un număr întreg cu semnul +-). În cele din urmă, împărțiți această valoare la numărul 100 (deplasați punctul zecimal cu 2 locuri la stânga).

    Adresa de registru poate fi introdusă și în format hexazecimal, de ex. valoarea 20 poate fi scrisă ca 0x14.

    MODBUSW (scriere Modbus)

    MODBUSW(register_type, register_address, data_type, value_to_write)
    Example: MODBUSW(H, 20, Int16, Te * 100)

    În registrul H cu adresa 20, scrieți valoarea variabilei Te înmulțită cu numărul 100 (deplasând punctul zecimal cu 2 la dreapta).

    MODBUSWNE (Modbus Scriere dacă nu este egal)

    La fel ca MODBUSW cu diferența că citește valoarea din registru înainte de a scrie, și o scrie doar dacă valoarea scrisă este diferită de cea citită. Întreaga operațiune durează mai mult, iar utilizarea sa tipică este atunci când setați proprietățile unui dispozitiv Modbus, unde configurația este scrisă în memoria EEPROM cu un număr limitat de scrieri.

     

    Funcțiile MODBUSR, MODBUSW și MODBUSWNE pot fi utilizate numai în scripturile Modbus. Dacă sunt utilizate în alte scripturi, acestea sunt considerate o eroare.

    Tipuri de date Modbus

    Conținutul registrelor este definit în tabelul modbus. Deoarece dimensiunea unui registru Modbus este de 16 biți, valorile Int16 sau UInt16 de 16 biți sunt cele mai des folosite, iar zecimale sunt numărate invers prin diviziuni de 10 sau 100. Dar unele dispozitive Modbus folosesc și registre de 16 biți cu flotant. -numere de puncte (Float), sau au o ordine de biți schimbată (big endian, little endian), scriu un număr în două registre (variații de 32 de biți). Uneori, cea mai ușoară modalitate de a afla tipul corect de date este să utilizați utilitarul direct în aplicația TapHome (Operații manuale), unde puteți încărca 1 sau mai multe registre și puteți schimba dinamic tipul de date.

    • Int16 (de la -32,768 la 32,767)
    • Uint16 (de la 0 la 65.535)
    • Int32 (de la -2.147.483.648 la 2.147.483.647)
    • Uint32 (de la 0 la 4.294.967.295)
    • Float (IEEE 754 virgulă mobilă de precizie unică)
    • Bool 0 = fals, 1 = adevărat
    • BigEndianInt16 = Int16
    • LittleEndianInt16
    • BigEndianUint16 = Uint16
    • LittleEndianUint16
    • BigEndianInt32 / BigEndianInt32ByteSwap
    • LittleEndianInt32 / LittleEndianInt32ByteSwap
    • BigEndianUint32 / BigEndianUint32ByteSwap
    • LittleEndianUint32 / LittleEndianUint32ByteSwap
    • BigEndianFloat / BigEndianFloatByteSwap
    • LittleEndianFloat / LittleEndianFloatByteSwap
    • Snur

      Formatul BCD poate fi folosit și, datorită funcțiilor TOBCD() și FROMBCD()

    Actualizare și interval de sondaj

    Fiecare dispozitiv din interfața Modbus are un atribut definit Interval de interogare. Acesta determină cât de des trebuie să interogheze unitatea de control TapHome pentru noile valori ale dispozitivului Modbus. Comunicarea Modbus este de tip Master-Slave și astfel informațiile de la dispozitivul Modbus pot ajunge la TapHome doar atunci când TapHome o solicită. Cu cât intervalul de sondaj este mai lung, cu atât valoarea din TapHome este reîmprospătată mai târziu. Un interval de sondaj prea scurt poate însemna că TapHome va fi împovărat în mod inutil de obținerea de valori inutile și este posibil să nu aibă timp să servească toate dispozitivele în intervalul de timp dat. De exemplu, cu Modbus RTU și viteze mai mici de baud Rate, de ex. 9600, o interogare/răspuns poate dura zeci de ms. Pentru termometre, în majoritatea cazurilor, un interval de 15000ms (15s) este suficient, pentru butoane, dimpotrivă, cât mai puțin posibil, de ex. 50 ms. Unele dispozitive Modbus se așteaptă ca masterul să scrie periodic valoarea curentă în registru. Pentru aceasta este atributul Scriere periodică.

    Definirea stărilor de eroare din scripturi

    În unele scripturi este posibilă definirea unei erori/avertisment/informații asupra dispozitivului, pe baza informațiilor citite din registrele Modbus ale dispozitivului. Aceste mesaje sunt afișate în TapHome în același mod ca și mesajele de eroare interne TapHome. Opțional, un cod de eroare numeric poate fi adăugat la mesajul de eroare dacă este posibil pentru întreținerea dispozitivului Modbus.

    Pe dispozitiv poate fi definit un singur mesaj de eroare fără cod sau un singur mesaj de eroare per cod de eroare.

    ADDERROR(), ADDWARING(), ADDINFO()

    ADDERROR([Optional: custom_code], text)

     

    Exemplu: în secțiunea Read Script a dispozitivului Analog Output există un cod:

    ADDERROR("Error without code");
    ADDWARNING("Warning without code");
    ADDINFO("Info without code");
    
    ADDERROR(1, "Error with code");
    ADDWARNING(1, "Warning with code");
    ADDINFO(1,"Info with code");

    ...care se reflectă pe dispozitiv prin mesaje:

    Atribute și acțiuni ale serviciului

    Pe lângă o valoare (sau mai multe valori, cum ar fi un termostat) de la un dispozitiv Modbus conectat, modulele și dispozitivele TapHome pot citi și atribute de serviciu sau pot efectua acțiuni de service. Acestea nu sunt apoi accesibile pe desktop pentru alți utilizatori ai sistemului, ci servesc doar pentru informații mai detaliate despre dispozitivul Modbus, fără a supraîncărca inutil sistemul cu un număr mare de variabile și acțiuni.

    Atributele serviciului sunt afișate în setările de serviciu ale modulului sau dispozitivului TapHome. De obicei, acestea sunt utilizate pentru a afișa informații despre dispozitiv, cum ar fi modelul, numărul de serie, versiunea firmware, versiunea hardware, timpul de la ultima repornire etc. Acestea sunt informații utile din punctul de vedere al deservirii unui dispozitiv Modbus, dar nu are sens să creați dispozitive TapHome separate pentru ele.

    Acțiunile de service sunt afișate în setările de serviciu ale modulului sau dispozitivului TapHome, în partea de jos sub formă de butoane. Când sunt apăsate, aceștia efectuează o acțiune Modbus presetată care scrie informațiile necesare în registru. Exemplu de utilizare: Setarea sau modificarea ID-ului Slave, Înlocuirea filtrului, Setarea contorului la valoarea necesară, Resetarea dispozitivului și altele asemenea.

    Scripturi și variabile auxiliare pe modul

    Variabile globale ale modulului

    Variabilele definite pe un modul sunt utilizabile în toate scripturile de pe modul și sunt partajate cu toate dispozitivele alocate acelui modul.

    Scriptul de pornire

    Opțional. Se rulează când pornește modulul. Dacă este completat și nu a fost încă rulat, nu vor fi permise alte scripturi.

    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale ale modulului
    ⚠️ Suport stare de eroare: nu

    Citiți scenariul

    Se rulează de fiecare dată când un modul este interogat.

    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale ale modulului
    ⚠️ Suport pentru starea erorilor: da

    Scrieți scenariul

    Alergare:

    • la modificarea variabilei dispozitivului
    • dacă este activat atributul „Scriere periodică”, acesta pornește automat

      💬 Valoare returnată: ignorată
      ⚙️ Acces la variabile: variabile globale ale modulului, valori ale dispozitivelor aparținând modulului dat (atenție, nu sunt variabile globale de dispozitiv - scriptul modulului nu are acces la ele). Acesta este utilizat în cazul în care valorile mai multor dispozitive ale modulului dat trebuie scrise într-un singur registru.
      ⚠️ Suport stare de eroare: nu

    Atributele serviciului

    Fiecare modul poate avea un număr nelimitat de atribute de serviciu definite. Scripturile sunt executate de fiecare dată când un utilizator (cu privilegii de serviciu) deschide ecranul de setări de serviciu al modulului în aplicație. Sunt scrise în partea de sus, imediat după citirea de pe dispozitivul Modbus.

    💬 Valoare returnată: este afișată ca valoare a atributului dat
    ⚙️ Acces la variabile: variabile globale ale modulului
    ⚠️ Suport stare de eroare: nu

    Acțiuni de service

    Fiecare modul poate avea un număr nelimitat de acțiuni de service definite. Scripturile sunt pornite atunci când utilizatorul (cu privilegii de serviciu) deschide aplicația pe ecranul de setări de serviciu al modulului și apasă unul dintre butoanele definite cu numele acțiunii de serviciu. Fiecare acțiune de serviciu este definită de numele, parametrii și scriptul de execuție.

    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale ale modulului, parametri specificați de utilizator
    ⚠️ Suport stare de eroare: nu

    Scripturi și variabile de ajutor pe dispozitiv

    Variabilele globale ale dispozitivului

    Variabilele definite pe un dispozitiv sunt utilizabile în toate scripturile definite pe acel dispozitiv și nu sunt utilizabile oriunde în afara dispozitivului. Dispozitivul își poate stoca starea în ele, poate partaja între scripturile sale și așa mai departe.

    Scriptul de pornire

    Opțional. Pornește când pornește dispozitivul. Dacă este completat și nu a fost încă rulat, nu vor fi permise alte scripturi.
    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale modul, variabile globale dispozitiv
    ⚠️ Suport stare de eroare: nu

    Citiți scenariul

    Se rulează de fiecare dată când dispozitivul este interogat, înainte de „Citiți scripturi de valoare”.
    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale modul, variabile globale dispozitiv
    ⚠️ Suport pentru starea erorilor: da. Erorile privesc întregul dispozitiv (de exemplu, întregul termostat, nu doar valoarea sa de referință sau valoarea actuală a temperaturii).

    Scrieți un script de valoare

    Alergare:

    • la fiecare schimbare de valoare
    • dacă atributul „Scriere periodică” este activat, de asemenea, la fiecare sondaj

    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale ale modulului, variabile globale ale dispozitivului, valoarea specifică a cantității de scris prin Modbus pe dispozitiv.
    ⚠️ Suport stare de eroare: nu

    Citiți scriptul de valoare

    Rulează de fiecare dată când un dispozitiv este interogat.
    💬 Valoare returnată: este atribuită automat ca valoare a dispozitivului dat
    ⚙️ Acces la variabile: variabile globale ale modulului, variabile globale ale dispozitivului, cea mai recentă valoare încărcată a variabilei, scoarța de citit (utilă, de exemplu, dacă dispozitivul indică că nu a fost încă încărcat etc. .)
    ⚠️ Suport pentru starea erorilor: da. Mesajele de eroare trebuie să se refere la cantitatea dată de pe dispozitiv. De exemplu dacă comanda ADDERROR(1, "Sensor not connected") este în scriptul Citire temperatură din dispozitivul termostat, utilizatorul va vedea un mesaj de eroare în aplicație pe termostat cu trei informații: Temperatură, cod 1, text " Senzorul nu este conectat”.

    Atributele serviciului

    Fiecare dispozitiv poate avea un număr nelimitat de atribute de serviciu definite. Scripturile sunt executate de fiecare dată când un utilizator (cu privilegii de serviciu) deschide ecranul de setări de servicii al dispozitivului în aplicație. Sunt scrise în partea de sus, imediat după citirea de pe dispozitivul Modbus.
    💬 Valoare returnată: este afișată ca valoare a atributului dat
    ⚙️ Acces la variabile: variabile globale modul, variabile globale dispozitiv
    ⚠️ Suport stare de eroare: nu

    Acțiuni de service

    Fiecare dispozitiv poate avea un număr nelimitat de acțiuni de service definite. Scripturile sunt executate atunci când utilizatorul (cu privilegii de serviciu) deschide aplicația pe ecranul de setări de serviciu al dispozitivului și apasă unul dintre butoanele definite cu numele acțiunii de serviciu. Fiecare acțiune de serviciu este definită de numele, parametrii și scriptul de execuție.
    💬 Valoare returnată: ignorată
    ⚙️ Acces la variabile: variabile globale ale modulului, variabile globale ale dispozitivului, parametri specificați de utilizator
    ⚠️ Suport stare de eroare: nu


    Utilități utile

    Adăugați din șablon

    Vă permite să configurați comunicația Modbus cu dispozitivul fără nicio cunoaștere a protocolului Modbus sau a modului de configurare în TapHome. Șabloane prefabricate pot fi găsite:

    • direct în aplicație: Adăugați din șablon → selectați un anumit dispozitiv → completați informațiile de bază și confirmați. Toate aceste șabloane sunt menținute într-un proiect comunitar git la https://github.com/taphome/modbus_templates și oricine poate sugera noi moduri acolo. Ceea ce intră în aplicații trebuie aprobat direct de echipa TapHome
    • în propriul fișier XML: Adăugați din șablon → Adăugați din fișier. Puteți crea propriul fișier XML care definește întreg șablonul direct pe modulul Modbus, în meniul contextual (3 puncte în dreapta sus), acțiunea Salvare ca șablon. Vom fi fericiți dacă ne ajutați să extindem numărul de dispozitive acceptate și să contribuim cu fișierul dvs. XML la proiectul comun git al comunității.

    Mai multe informații despre configurarea comunicării Modbus folosind șabloane

    Operații manuale

    Un instrument practic pentru verificarea inițială rapidă a tabelului Modbus. Permite:

    • încărcați următoarele X registre în tabel dintr-un registru specific și apoi comutați dinamic valorile citite în diferite tipuri de date
    • scrieți valoarea în registrul dat

    Scanați ID-urile slave

    O practică obișnuită atunci când configurați comunicarea cu un dispozitiv Modbus este aceea că ID-ul Slave implicit din fabrică este altul decât 1 și nu este ușor să determinați numărul corect. Pentru asta este acest utilitar. Poate scana intervalul specificat de ID-uri slave încercând să citească din registrul selectat întotdeauna cu ID-ul slave testat.

    Informații despre registre

    Este situat în partea inferioară a modulului Modbus. Pentru fiecare registru utilizat, listează informații despre:

    • Numele TapHome al dispozitivului care citește sau scrie pe acesta
    • Data și ora ultimei citiri cu succes din registru
    • Ultima valoare citită din registru
    • Data și ora ultimei înregistrări reușite în registru
    • Ultima valoare scrisă în registru

    Setari avansate

    Preluare

    TapHome creează o listă de registre din care să citească și să scrie pe dispozitivele Modbus, în funcție de intervalul de interogare setat. Prefetch este un proces datorită căruia unitatea de control preface în buffer valorile de care va avea nevoie în timpul actualizării. Scopul este de a minimiza numărul de solicitări și călătorii dus-întors. Preluarea este afectată de 2 setări:

    • Dimensiunea maximă a grupului de registre prefetch (situat în setările de serviciu ale modulului): determină numărul maxim de registre care pot fi citite sau scrise prin comunicare Modbus cu o singură solicitare.
    • Modul Prefetch (reglabil pentru fiecare dispozitiv):
    • Fără preluare. Preîncărcarea nu va fi efectuată pentru acest dispozitiv. Aceasta înseamnă că valorile vor fi citite individual și exact atunci când scriptul este executat. Exemplu de utilizare: la comunicarea cu un convertor DALI, valoarea unei anumite lumini nu poate fi citită direct, dar trebuie solicitată cât mai curând posibil, convertizorul o va pregăti, iar abia apoi o va returna. Orice preîncărcare este inutilă în acest caz.
    • Prefetch izolat. Preîncarcă mai multe registre deodată, dar numai pe cele care sunt definite în acest dispozitiv. De exemplu cand am nevoie de registrele 3 si 4 in dispozitivul termostat, la celelalte aparate se folosesc registrele 1, 2, 5, 6, deci cererea registrelor 3 si 4 se va face separat doar pentru aceste 2 registre. Unele dispozitive Modbus necesită acest lucru.
    • Preluare normală. Toate registrele solicitate de la dispozitivele ce urmează a fi restaurate se încearcă să fie citite cu un număr minim de solicitări. În cazul unei secvențe necontinue de registre, se citește și registrele care nu sunt utilizate, dacă acestea au fost citite cu succes în trecut. Exemplu: sunt solicitate registrul 99 și 101. Dacă registrul 100 a fost citit cu succes în trecut, iar dimensiunea maximă a grupului de registru de preluare preliminară este de 3 sau mai mult, va citi 3 registre cu o solicitare din registrul 99. Dacă registrul 100 nu este folosit nicăieri și nu a fost niciodată citit cu succes, există riscul ca citirea unui astfel de registru să returneze o excepție Modbus, de ex. „Adresă ilegală a datelor” ca răspuns la întreaga solicitare.

    Prefetch-ul poate fi influențat și direct din script: Dacă folosim registrul SC sau SH (în loc de C sau H) când citim, atunci valoarea este citită câte un registru în timpul execuției scriptului și nu este extrasă. din memoria cache. În mod similar, la scriere, dacă folosim registrul SC sau SH (în loc de C sau H), valoarea este scrisă câte un registru și de o altă funcție modbus. Protocolul Modbus acceptă 4 funcții de scriere: scrierea mai multor H, mai multe C, scrierea unui registru H sau C odată. Atenție: nu toate dispozitivele pot suporta toate aceste funcții. În acest fel, dacă este necesar, cititul și scrisul pot fi combinate împreună și „pe rând”.

    Port TCP (Modbus TCP)

    În cele mai multe cazuri, valoarea implicită este 502, dar este posibil ca unele dispozitive să asculte pe un alt port.

    Timeout pentru citire/scriere

    Timpul după care TapHome renunță la așteptarea unui răspuns și raportează o eroare „Timeout”, ceea ce înseamnă că dispozitivul nu a răspuns la cerere în intervalul de timp dat. Este posibil ca dispozitivele Modbus lente să nu poată răspunde prompt și este necesar să se extindă acest interval de ordinul a 1 sau câteva secunde. Atenție însă la valorile inutil de mari, deoarece, dacă din anumite motive, comunicarea cu un dispozitiv Modbus eșuează, aceasta întârzie inutil alte dispozitive Modbus în așteptarea unui răspuns.

    Întârziere între solicitări

    Întârzierea pe care TapHome o introduce între cererile individuale către un dispozitiv Modbus. Pentru Modbus TCP este 0 ms implicit, pentru Modbus RTU această întârziere conform specificației se bazează pe viteza de comunicare (rată de transmisie) de cel puțin 3,5 caractere. Cu toate acestea, există dispozitive Modbus TCP care necesită până la 5000 ms între solicitări sau invers, unele dispozitive Modbus RTU pot gestiona întârzieri și mai scurte și, prin urmare, sunt capabile să comunice mai rapid.

    Utilizați comunicarea ASCII

    Modbus ASCII este un standard mai puțin utilizat unde comunicarea nu este binară, ci utilizează caractere ASCII. Majoritatea acestor dispozitive folosesc și setarea „7 biți de date”.