abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 00:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.3. Současně oznámila, že nadcházející větší vydání 24.04-2.0 bude mít modernější webový prohlížeč.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | Zajímavý projekt

    Ploopy po DIY trackballech či sluchátkách představuje nový externí DIY trackpoint se čtyřmi tlačítky Bean. Obsahuje snímač Texas Instruments TMAG5273, spínače Omron D2LS-21 a řadič RP2040, používá firmware QMK. Schémata jsou na GitHubu; sadu lze předobjednat za 69 kanadských dolarů (bez dopravy a DPH).

    |🇵🇸 | Komentářů: 0
    včera 03:33 | Zajímavý článek

    Mozilla před dvěma týdny na svém blogu oznámila, že díky Claude Mythos Preview bylo ve Firefoxu nalezeno a opraveno 271 bezpečnostních chyb. Včera vyšel na Mozilla Hacks článek s podrobnějšími informacemi. Z 271 bezpečnostních chyb mělo 180 chyb vysokou závažnost, 80 chyb střední závažnost a 11 chyb nízkou závažnost. Celkově bylo v dubnu ve Firefoxu opraveno 423 bezpečnostních chyb. Čísla CVE nemusí být přiřazována jednotlivým chybám. CVE-2026-6784 například představuje 154 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    7.5. 22:55 | Bezpečnostní upozornění

    Před týdnem zranitelnost Copy Fail. Dnes zranitelnost Dirty Frag. Běžný uživatel může na Linuxu získat práva roota (lokální eskalaci práv). Na většině linuxových distribucí vydaných od roku 2017. Aktuálně bez oficiální záplaty a CVE čísla [oss-security mailing list].

    Ladislav Hagara | Komentářů: 8
    7.5. 14:00 | Humor

    Ačkoli je papež Lev XIV. hlavou katolické církve a stojí v čele více než miliardy věřících po celém světě, také on někdy řeší všední potíže. A kdo v životě neměl problémy se zákaznickou linkou? Krátce poté, co nastoupil do úřadu, musel papež se svou bankou řešit změnu údajů. Operátorka ale nechtěla uvěřit, s kým mluví, a Svatému otci zavěsila.

    Ladislav Hagara | Komentářů: 11
    7.5. 05:11 | Nová verze

    Incus, komunitní fork nástroje pro správu kontejnerů LXD, byl vydán ve verzi 7.0 LTS (YouTube). Stejně tak související LXC a LXCFS.

    Ladislav Hagara | Komentářů: 0
    7.5. 05:00 | Nová verze

    Google Chrome 148 byl prohlášen za stabilní. Nejnovější stabilní verze 148.0.7778.96 přináší řadu novinek z hlediska uživatelů i vývojářů. Vypíchnout lze Prompt API (demo) pro přímý přístup k AI v zařízení. Podrobný přehled v poznámkách k vydání. Opraveno bylo 127 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    6.5. 16:44 | Komunita

    Richard Hughes oznámil, že po společnostech Red Hat a Framework a organizacích OSFF a Linux Foundation, službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzorují také společnosti Dell a Lenovo. Do dnešního dne bylo díky LVFS provedeno více než 145 milionů aktualizací firmwarů od více než 100 různých výrobců na milionech linuxových zařízení.

    Ladislav Hagara | Komentářů: 0
    6.5. 15:22 | IT novinky

    Americké technologické společnosti Microsoft, Google a xAI souhlasily, že vládě Spojených států poskytnou přístup k novým modelům umělé inteligence (AI) před jejich uvedením na trh. Oznámila to americká vláda, která tak bude moci prověřit, zda modely nepředstavují hrozbu pro národní bezpečnost. Oznámení podtrhuje rostoucí obavy Washingtonu z rizik spojených s výkonnými AI systémy. Americké úřady chtějí v rámci předběžného přístupu

    … více »
    Ladislav Hagara | Komentářů: 1
    6.5. 14:11 | IT novinky

    Společnost Valve zveřejnila (GitLab) nákresy ovladače Steam Controller a puku. Pro všechny, kdo by jej chtěli hacknout nebo modifikovat, případně pro ně navrhnout nějaké příslušenství. Pod licencí Creative Commons (CC BY-NC-SA 4.0).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (9%)
     (2%)
     (14%)
     (32%)
     (4%)
     (7%)
     (3%)
     (16%)
     (24%)
    Celkem 1539 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Jak funguje Modbus a RS-485

    27.9.2021 20:50 | Přečteno: 12079× | Meteopress | Výběrový blog | poslední úprava: 27.9.2021 20:50

    Protokol Modbus tunelovaný přes RS-485 (též nazýváno Modbus-RTU) se často používá pro komunikaci s malými průmyslovými zařízeními. Pojďme se podívat, jak vypadá a jak implementovat komunikaci s takovým zařízením.

    RS-485

    RS-485 je sběrnice, která má následující parametry:

    Z praktického provozu dvě pozorování learned the hard way:

    Modbus

    Modbus je protokol, který definuje, že každé zařízení má svoji adresu (jeden bajt) a různé množství (až 4*64K) 16bitových registrů. Registry můžou být buď read-only (tomu říkají input register), například u teploměru to bude naměřená teplota, nebo read-write (holding register), například u motoru to bude nastavení jak rychle se má točit. Pak mají ještě coils a discrete inputs, což jsou jakoby relátka (jednobitové registry), ale efektivně jsou to prostě registry.

    Velká nevýhoda je pevná velikost registru 16 bitů, větší 32b hodnoty tak jsou typicky rozděleny do dvou registrů "LO" a "HI". Všechny věci jsou big-endian, a je mrzuté, když výrobce dá LO registr níž než HI, protože to pak nejde concatenovat a dostat big endian číslo, ale musí se to prohodit.

    Modbus má definováno, jak zprávy posílat přes různá rozhraní - například přes TCP nebo přes sériák přes RS-485 - a to je to, co potkávám nejčastěji, a proč píšu tento článek.

    Modbus přes RS-485 posílá krátké zprávy, které vypadají takto:

    0x01       # adresa zařízení
    0x04       # příkaz. 4 = přečíst input registry
    0x33 0x12  # první registr, který chceme přečíst - 13075. registr
    0x00 0x02  # kolik registrů chceme přečíst - 2. Zařízení má limit kolik dat najednou může poslat, bývají to desítky registrů.
    0xDE 0x8A  # CRC
    

    Jako fakt blbý je, že registry jsou někdy číslované od jedničky, ale adresy jsou číslované od nuly. Takže například registr 6 má adresu 0x0005.

    Odpověď pak vypadá:

    0x01        # adresa zařízení
    0x04        # příkaz; kdyby došlo k chybě, tak to bude zORované s 0x80
    0x04        # kolik bajtů bude následovat. 2 16bit registry = 4 bajty
    0x01 0x01   # data - 1. čtený registr
    0x00 0x00   # data - 2. čtený registr
    AB B8       # CRC
    

    Zprávy jsou chráněny CRC-16, které se spočítá takto:

    def modcrc(buf):
      crc = 0xFFFF;
      for pos in range(len(buf)):
        crc ^= buf[pos]
        for i in range(7,-1,-1):
          if ((crc & 0x0001) != 0):
            crc >>= 1
            crc ^= 0xA001
          else:
            crc >>= 1
      return (crc>>8) | ((crc&0xff)<<8)
    
    assert(modcrc([0x01, 0x04, 0x00, 0x00, 0x00, 0x01]) == 0x31CA)

    Standardní rychlost je 19200, ale viděl jsem i zařízení co má 115200 a někdy to jde nastavit.

    Jak to tedy celé zapojit

    Pokud chcete komunikovat Modbus-RTU, tak si pořiďte tenhle modul s MAX485. Pokud to dáváte na vlastní desku, tak tam MAX485 snadno dáte (nepotřebuje to žádné externí součástky), případně se podívejte na variantu MAX3485, která má 3.3V logiku. Ten modul z GME si ale pořiďte i pokud děláte vlastní desku, protože ho budete používat pro sniffování sběrnice až vám to nebude fungovat.

    Následně se zapojí DI na TX (data input modulu) vašeho UARTu, RO na RX (receiver output) a řídící piny DE (driver enable) a #RE (#receiver enable)křížky u signálů znamenají active low (invertovaná logika) můžete spojit pokud nechcete používat power save (to by se dělalo tak, že dáte 1 na #RE a 0 na DE). Následně se to používá tak, že:

    Na Arduinu mi to fungovalo s bitbangovaným SoftSerial (protože menší AtMegy nemívají více sériáků), pouze pro rychlost 115200 jsem musel zakomentovat čekání na stop bit, protože další bajt přišel moc rychle a nestíhalo se to. (nechápu proč tam to čekání na stop bit je, když se stejně nekontroluje)

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Max avatar 27.9.2021 21:46 Max | skóre: 73 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Poprvé jsem se s Modbus setkal asi na MaR systému (Měření a Regulace), kterým se řeší automatizace budovy (topení, klima, větrání, teplotní křivky, monitoring CO2, kotlů, bojlerů, tlaku, rekuperace, vypalování legionelly atd. atd. atd.).
    Ale protokol jako takový jsem nikdy nestudoval, takto nízkoúrovňové věci jdou mimo mě.
    Zdar Max
    Měl jsem sen ... :(
    Bluebear avatar 27.9.2021 22:00 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Skvělý článek - konečně jsem pochopil pár věcí, které mi nebyly jasné už od prváku. Díky moc!
    To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
    28.9.2021 16:40 _
    Rozbalit Rozbalit vše trolling

    Vlákno bylo přesunuto do samostatné diskuse.

    4.10.2021 06:27 _
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Nekomentuj si vlastni prispevky.
    4.10.2021 12:57 Gluebar
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Nechci být zbytečně nějaký nepříjemný, ale jdi do kšá. Jenda je odlišná osoba, což by šlo zjistit velmi jednoduchým zagooglením.
    4.10.2021 14:23 _
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    no
    4.10.2021 14:40 ~
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    yes
    28.9.2021 11:54 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Osobně jsem se na tohle vykašlal a delší propoje jsem vyřešil nákupem routříků s OpenWRT a roztaháním ethernetu, který je oddělený trafíčky defaultně, a případný výstup na RS-485 dělám až na druhé straně. Cenově to vyjde podobně
    Určitě bude záležet na tom, kolik kusů toho děláte (tj. kdy úspora na těch routerech zaplatí práci), ale když mluvíte o těch trafíčkách, tak mě napadá FSK modulace - digitální signál přes ta trafíčka neproleze, ale sinusovka by měla.

    Akorát mě teď nenapadá, jak řešit ten bias do klidového stavu
    V mnoha zařízeních když zavoláte write na sériák, tak se to jenom vloží do fronty a write hned vrátí a vysílání ještě běží. Potřebujete třeba udělat flush.
    Nedávno jsem zrovna psal něco, co komunikovalo po sériáku, v Ruby. Dopracoval jsem se k tomu, že při odvysílání zprávy se vypočítá čas, kdy je odeslání hotové, a podle toho se pak posílá dál. Oproti MCU, které udělá interrupt, když má volno v 1B velkém bufferu, docela pakárna. Na druhou stranu je to na straně PC a v Ruby, takže tam si můžu dělat a ladit, co chci.

    Teda skoro. Narazil jsem na to, že se mezi zařízeními "náhodně" rozpadá časování, takže mi to přecházelo do chybového stavu (timeouty, nesedlo pořadí zpráv a tak) a přestalo se to dít, když jsem vypnul ladící výstupy na terminál. Počítač (nebo Ruby) prostě nestíhal komunikovat po sériáku a zároveň kreslit do konzole hromadu textu.
    Quando omni flunkus moritati
    29.9.2021 13:14 ehmmm
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    RS485 je z doby, kdy ethernet nebyl tak bezny, presneji receno proste nebyl. Proste se natahly dva draty pres nekolik (desitek) stanic na delku nekolika (stovek) metru, i kratsi odbocky se delaly, na zacatku a na konci se zapnuly odpory a nejakou rychlosti 9600 baudu to vzdycky jelo. Pro debugovani to chtelo mit galvanicky oddeleny osciloskop nebo moznost triggerovat na rozdil kanalu A-B, ale obvykle stacilo pouze zmerit napeti A-B v klidu. Pokud jste meli nejake normalni komponenty, tak to proste fungovalo.

    Na Modbusu je nejslozitejsi ten kontrolni soucet. Jinak to je trivialita. Spravne autor upozornuje na chytak, ze nekdo cisluje od jednicky, nekdo od nuly a nekdy jeste zalezi, jakou funkci pouzivate (cteni registru vs. civek...).

    Na co jsem narazil tohle leto, je to, ze existuje Modbus ASCII, Modbus RTU, Modbus TCP a kdyz uz nejake zarizeni umi Modbus TCP, tak obvykle umi i Modbus UDP, coz ma oproti TCP vyrazne nizsi rezii (timeouty a preposlani si vyresim sam). Jenze jeden vyrobce s novou verzi sveho produktu to UDP jaksi nenaprogramoval. Musim tedka jak sulin otevirat a zavirat TCP spojeni, pri stovce zarizeni v jedne siti to je velka spousta paketu navic.
    30.9.2021 19:32 Miriam | blog: RychlovarnaKonvice
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Ty jsi hustej týpek Jendo, respekt!
    30.9.2021 23:01 billgates | skóre: 27
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Příloha:
    Ak treba riesit RS-485 po vonku alebo v budove cez vela poschodi, tak musim len odporucit tento interface ADM2865E. Ma 5.7 kV rms izolaciu na datach aj VCC+VSS. Spolu s ochranami je to prakticky neznicitelne. Pouzivame to takto uz isty cas a prezilo to aj priamy uder blesku do jedneho nodu (solarna elektraren) a vsetky ostatne nody dalej fungovali. Pravda, je o trochu drahsi ako bezne interfacy bez izolacie. Su dostupne varianty pre 500kbps a 25Mbps a taktiez full a half duplex.

    Poznamka k obrazku - ide o 3.3V komunikaciu, ale modul podporuje aj 5V na 485. Dalsia vyhoda je, ze IO na casti k procesoru je nezavysla na VCC, takze sa da pripojit napriklad 1.8V IO MCU k 5V RS-485 sieti bez dalsieho menica urovne.
    9.1.2022 18:58 Rozelak
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    Zdravím, máme kotel Tronic Heat od Bosche s externím modulem ekvitermní regulace. Kotel teď hlásí chybu komunikace s tímto externím modulem, tak jsem to otevřel a zjistil jsem, že spolu komunikují přes RS-485 rozhraní. Čili mě napadlo, že by to mohlo jet přes modbus.

    Zkoušel jsem tedy zachytávat komunikaci modbus snifferem s použitím RS485-USB převodníku (https://www.gme.cz/modul-prevodniku-usb-rs-485), ale lezou z toho nesmysly - neplatné zprávy, chyba CRC, atd. Nicméně to vypadá, že se tam opakují určité vzory.

    Nemáte náhodou někdo tip, čím by to mohlo být? Přijde mi, že kdyby se modul rozbil, tak buď nevysílá nic nebo vysílá třeba jen šum, a z toho by nějaká posloupnost Bytů sestavit nešla. Nejspíš tam ale nějaká chyba bude, když ji kotel hlásí. Já jsem ale s rozumem v koncích ...

    Díky, R.
    20.6.2022 21:33 frr | skóre: 34
    Rozbalit Rozbalit vše Re: Jak funguje Modbus a RS-485
    S křížkem po funuse, tak aspoň do záznamu: debugovat analogové chyby v RS485 prakticky nelze bez dvoukanálového osciloskopu :-( Poté, co vyřešíte společnou referenční zem, terminaci, upadlé dráty a případně nahnilé/postřelené transceivery, takže obdélník je znovu obdélníkem, začnou chodit správně data - a teprve v tu chvíli má smysl řešit odposlech UARTem...

    Jo a jestli ten TRONIC je toto tak je to zřejmě fakt Modbus/RTU.
    [:wq]

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.