Máš k tomu měniči (nebo co to je) nějaký manuál s popisem registrů? Ta informace v registrech může mít různou délku (1-4 byty), navíc byty mohou být mezi sebou prohozené a i dvoubajty mohou být prohozené.
Tohle je daň za jednoduchost čtení pomocí nějaké knihovny - to, že to funguje na jednom zařízení neznamená, že vyčteš i jiné.
Co se týče modbusu, detaily najdeš třeba zde.
Já bych to řešil (prozatím) přes PC. Převodník USB/485 bych použil buď ten co nabízejí nebo mám osvědčený tento - včetně bezvadné podpory.
Jako SW mi výrobce kabelu Fiedler doporučil Qmodbus.
Jak píší v manuálu k registrům, všechny jsou 4bytové, tj. 32 bitů. A na straně 10 máš pak příklady čtení. Takže když pomocí aplikace QModBus odešleš 01 03 90 00 00 0F 28 CE, měl bys dostat odpověď 01 03 1E 00 00 00 C8 01 2C 06 40 05 DC 05 DC 05 B4 05 A0 05 64 05 28 04 EC 04 C4 04 B0 04 56 04 24 72 A5, resp. něco podobného.
Založen: Jan 01, 2023 Příspěvky: 2079 Bydliště: Česká Lípa
Zaslal: po květen 15 2023, 16:27 Předmět:
petrfilipi napsal(a):
Jak píší v manuálu k registrům, všechny jsou 4bytové, tj. 32 bitů. A na straně 10 máš pak příklady čtení. Takže když pomocí aplikace QModBus odešleš 01 03 90 00 00 0F 28 CE, měl bys dostat odpověď 01 03 1E 00 00 00 C8 01 2C 06 40 05 DC 05 DC 05 B4 05 A0 05 64 05 28 04 EC 04 C4 04 B0 04 56 04 24 72 A5, resp. něco podobného.
Je to viditelné z příkladu v odkazovaném manuálu na str. 6 kde v odpovědi na požadavek čtení aktuálního napětí baterie je hodnota pouze 16-ti bitová a přenáší se jako celé číslo v setinách voltu.
0x04CE (hexa) je dekadicky 1230 a jelikož je v tabulce pro položku "A36 Battery voltage" uveden dělitel 100 tak výsledná hodnota je 12,30V.
Stejně tak i na straně 10 ve zmíněné odpovědi viz níže vyseparovaná data registrů z paketu odpovědi
ani jedna z hodnot není 32-bitová. Jedná se o patnáct samostatných 16-ti bitových registrů.
32-bitových datových položek je v tom popisu registrů od Le_Ze naprosté minimum
Pouze viz 3 níže uvedené dvojice 16-ti bitových registrů mají význam jako 32-bitové hodnoty.
F3 Array rated power L, 3002, dolních 16 bitů hodnoty
F4 Array rated power H, 3003, horních 16 bitů hodnoty
F7 Battery rated power L, 3006, dolních 16 bitů hodnoty
F8 Battery rated power H, 3007, horních 16 bitů hodnoty
F11 Rated load power to L, 300F, dolních 16 bitů hodnoty
F12 Rated load power to H, 3010, horních 16 bitů hodnoty
Endianita
Endianita je uspořádání bajtů u 16 a 32 bitových hodnot v paměti tj. i v bafrech tedy i v komunikačních paketech. Podrobnější popis jak jsou uloženy bajty vícebajtových položek v paketu podle Big-Endian a Little-Endian je viz tento odkaz.
Dle standardu Modbus jsou data přenášena jako Big-Endian tj. všechny specifikace 16 a 32 bitových položek, a to včetně adres registrů jsou Big-Endian. V odkazovaném popisu registrů od Le_Ze není zmíněno, že by endianita datových položek dle standardu Modbus nebyla dodržena. Pokud jde o nějakou knihovnu určenou specificky pro komunikaci protokolem Modbus tak tam závisí převod endianity na tom, pro jakou cílovou platformu je knihovna určena a jak to má řešeno. Pokud se jedná o knihovnu pro Arduino nebo pro PC s Windows tak tam je v obou zmíněných případech cílová endianita Little-Endian, ale záleží na té či oné knihovně zda tento převod provádí automaticky nebo na základě nastavení nějakého konfiguračního parametru a nebo jen prostřednictvím nějakých samostatných funkcí k převodu 16 a 32 bitových datových položek z jednoho typu endianity na druhý.
Jj, máš pravdu, nečetl jsem ten manuál tak podrobně.
Prostě je třeba zkoušet a číst raději kratší úseky a zaměřit se na jasné veličiny (napětí, teplota, výrobní číslo, ...). Když mi na 12V Aku vyjde (po dělení 100) třeba 50V, tak je něco špatně. A doporučuji to opravdu vyčíst jako surová data a pak je dle specifikace ModBusu ořezat od režijních dat. A až budeš vědět co číst a jak byty řadit, tak není problém to vyčítat knihovnou a ESP.
Všichni tam řeši čtení a vypisovaní přes jeden ser.port.
Netušim co na to ten EPsolar, když se do něj cpou jide data.
Chtěl jsem to pořešit přes SoftwareSerial, ale nějak to nefunguje.
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.