Dekodér Modbus registrů
Vložte surové registry a uvidíte všechny způsoby, jak je lze číst: 16, 32 i 64bitová celá čísla a floaty, ve všech čtyřech pořadích bajtů. Zadejte hodnotu, kterou ukazuje vaše zařízení, a dekodér za vás najde správný formát.
Registry
PříkladOddělujte mezerami, čárkami nebo novými řádky. Fungují i řádky zkopírované z Modbus Poll, například 3 = 17254.
Najít moji hodnotu
Zadejte hodnotu, kterou ukazuje váš elektroměr, měnič nebo HMI. Dekodér vyzkouší všechny registry, datové typy, pořadí bajtů i běžné škálování (÷10, ÷100, ÷1000) a nejlepší shodu zobrazí jako první.
Export pro Home Assistant
Použije vybranou shodu výše; jinou vyberete kliknutím. Výsledek vložte do configuration.yaml.
Už máte hub modbus:? Zkopírujte jen položku senzoru pod sensors:. Po úpravě souboru restartujte Home Assistant.
32bitové hodnoty
Dva registry čtené jako jedna hodnota. Vyberte první registr dvojice.
| Pořadí | Float32 | Int32 | UInt32 | Bajty |
|---|
64bitové hodnoty
Čtyři registry čtené jako jedna hodnota, od registru vybraného výše.
| Pořadí | Float64 | Int64 | UInt64 | Bajty |
|---|
16bitové registry
| Adresa | Hex | UInt16 | Int16 | Bity 15 … 0 |
|---|
Běží celé ve vašem prohlížeči. Nic z toho, co zadáte, se neodesílá na server.
Jak funguje pořadí bajtů
32bitová hodnota má čtyři bajty A B C D rozdělené do dvou 16bitových registrů. Výrobci se na pořadí neshodnou, a proto mohou tytéž registry znamenat 230.5 nebo nesmysl.
- ABCD
- Big-endian. Nejdřív vyšší slovo, jak zamýšlí specifikace Modbus. Zkuste jako první.
- CDAB
- Prohozená slova. Nejdřív nižší slovo. Velmi časté u elektroměrů a PLC.
- BADC
- Prohozené bajty. Bajty prohozené uvnitř každého registru. Vzácné.
- DCBA
- Little-endian. Vše obráceně.
Jak číst výsledky
Modbus přenáší jen 16bitové registry. Co znamenají – číslo se znaménkem, 32bitový float, hodnotu v desetinách – určuje výrobce zařízení, ne protokol. Dekodér ukáže všechna běžná čtení vedle sebe, abyste je mohli porovnat s displejem nebo s mapou registrů.
- 16bitové registry ukazují každý registr jako číslo bez znaménka (0 až 65535), se znaménkem (−32768 až 32767) a po jednotlivých bitech. Stavová a alarmová slova se čtou po bitech.
- 32bitové hodnoty spojí dva sousední registry do jedné hodnoty Float32, Int32 nebo UInt32 ve všech čtyřech pořadích bajtů. První registr dvojice vyberete nad tabulkou.
- 64bitové hodnoty spojí čtyři registry do jedné hodnoty Float64, Int64 nebo UInt64. Některé elektroměry a střídače je používají pro součty energie, které by se do 32 bitů nevešly.
- Najít moji hodnotu vezme hodnotu z displeje a vyzkouší každý registr, typ, pořadí bajtů i škálování ÷10, ÷100 a ÷1000. Zobrazí shody do 0.5 %, nejbližší první. Kliknutím na 32bitovou shodu ji zvýrazníte v tabulce.
- Export pro Home Assistant z vybrané shody vytvoří senzor pro integraci Modbus. Datový typ, swap, měřítko, přesnost i adresu počítanou od nuly doplní za vás.
Časté chyby
- Adresa posunutá o jednu. Když manuál uvádí „registr 40001“, v dotazu je to obvykle adresa 0. Pokud se všechny hodnoty zdají posunuté, čtěte o jeden registr dřív nebo později.
- Prohozená slova. Napětí 1.2e-38 nebo 2.6e+9 místo 230 V téměř vždy znamená, že registry jsou v opačném pořadí. Zkuste CDAB.
- Holding, nebo input registry. Registry 4xxxx se čtou funkcí 03, registry 3xxxx funkcí 04. Stejné číslo může v každé tabulce obsahovat jiná data.
- Skryté škálování. 2305 místo 230.5 je hodnota posílaná v desetinách. Mapy registrů to uvádějí jako násobitel (0.1) nebo počet desetinných míst.
- Hodnota se znaménkem čtená bez znaménka. Výkon dodávaný do sítě nebo teplota pod nulou se při čtení jako UInt16 ukáže jako číslo blízké 65535.
Otázky z praxe
Proč místo mého floatu vidím obrovské číslo nebo NaN?
Registry jsou téměř jistě spojené ve špatném pořadí. Float32 má znaménko a exponent v prvních bajtech; když přijde nižší slovo jako první, dostanou se do exponentu bity zlomku a vzniknou hodnoty jako 4.6e-41 nebo 2.6e+9. Porovnejte čtyři řádky v tabulce 32bitových hodnot: řádek, který odpovídá displeji, je pořadí bajtů, které potřebuje váš software.
Manuál uvádí 40001, ale software chce 0. Co je správně?
Obojí ukazuje na stejný registr. 40001 je číslo registru v klasickém zápisu Modicon: úvodní 4 označuje holding registr a číslování začíná od 1. Dotaz po sběrnici ale nese adresu od nuly, takže z 40001 je 0 a z 40002 je 1. Většina softwaru chce adresu od nuly. Zde zadejte jako první adresu 40001, aby popisky odpovídaly manuálu.
Jaké pořadí bajtů používají elektroměry a solární střídače?
Jednotné pravidlo neexistuje. Specifikace Modbus definuje jen 16bitové registry, takže každý výrobce si sám volí, jak uloží 32bitové hodnoty. Mnoho zařízení posílá nejdřív vyšší slovo (ABCD), velká část elektroměrů a PLC ale nejdřív nižší slovo (CDAB). Mapa registrů by to měla uvádět. Pokud ne, přečtěte hodnotu, kterou znáte, třeba napětí sítě nebo frekvenci, a použijte Najít moji hodnotu.
Jak vložit hodnoty z Modbus Poll nebo z logu?
Vložte řádky tak, jak jsou. Dekodér vezme hodnotu za rovnítkem nebo dvojtečkou, takže z 0 = 17254 a 1 = 32768 budou dva registry. Pokud jsou hodnoty desítkové, zvolte Desítkově; když vstup nemůže být hex (třeba pěticiferná čísla), dekodér přepne sám.
Odesílají se moje data někam?
Ne. Dekódování běží ve vašem prohlížeči jako součást této stránky. Nic z toho, co vložíte, se nenahrává ani neukládá na server.
Související nástroje
- Převod adres40001 ↔ offset 0, zápis 4x/3x/0x/1x, 5- i 6místné adresy.
- Kódování hodnotyHodnotu jako 230.5 převede na registry pro všechna pořadí bajtů.