Läsa Modbus med arduino
Re: Läsa Modbus med arduino
Det har iofs inte så mycket med data-protokollet att göra, utan snarare den elektiska specifikationen för mediet att göra.
Re: Läsa Modbus med arduino
Visst är det så men i den här tråden blandas det hej vilt mellan himmel och jord.
Re: Läsa Modbus med arduino
TomasL skrev: ↑2 oktober 2021, 22:22:28 Tja, det heter kompabilitet, dvs du kan problemfritt kompilera biblioteket oavsett vilken kompilator du använder, därav ANSI.
Tja, visst kan du skriva ett eget, det är ju inte så svårt, men varför gå över ån efter vatten.
Dock skall du tänka på timing-kraven, vilket kan stöka till det om du skall ha det portabelt.
Känner inte till någon kompilator som endast kan använda sig av C från 80-talet.
Jag har ett svagt minne att du sa en gång i tiden "Jag skriver alltid mina bibliotek själv för det man hittar på internet är oftast dåligt skrivet".
Hur är RS485 i jämförelse?hummel skrev: ↑2 oktober 2021, 22:40:42CAN klarar följande:
Speed in bit/s - Maximum Cable Length
- 1 Mbit/s - 20 m (65 ft)
- 800 kbit/s - 40 m (131 ft)
- 500 kbit/s - 100 m (328 ft)
- 250 kbit/s - 250 m (820 ft)
- 125 kbit/s - 500 m (1640 ft)
- 50 kbit/s - 1000 m (3280 ft)
- 20 kbit/s - 2500 m (8202 ft)
- 10 kbit/s - 5000 m (16404 ft)
Men vanligast är i fordon och då lär det oftast vara kortare än 40 m.
Re: Läsa Modbus med arduino
Normalt sett ja, men ibland hittar man bra libbar, och då tenderar jag att använda dem.Jag har ett svagt minne att du sa en gång i tiden "Jag skriver alltid mina bibliotek själv för det man hittar på internet är oftast dåligt skrivet".
Min kommentar var troligen mer riktad mot standard-libben som inkluderas, då de av olika naturliga orsaker tenderar att bli rätt stora och klumpiga, dessutom, eftersom jag normalt alltid använder ett RTOS, så måste ju biblioteken vara tråd-säkra, vilket alltid inte är fallet.
Re: Läsa Modbus med arduino
RS485 må vara snabbare än CAN. Men vi får inte glömma att det finns CAN-FD, vilket är senaste versionen av CAN som kan skicka upp till 5 Mb/s.
Själv kör jag CAN 2.0B där B står för en version som kunde ha utökat ID hos CAN meddelandet. CAN 2.0B är viktigt om man vill köra J1939 för J1939 kräver utökat ID.
Men en nackdel som jag har hört med RS485 är att det finns risk för kollision hos meddelanden. Det finns det inte för CAN då CAN modulen kollar först om nätverket är upptaget eller inte.
Själv kör jag CAN 2.0B där B står för en version som kunde ha utökat ID hos CAN meddelandet. CAN 2.0B är viktigt om man vill köra J1939 för J1939 kräver utökat ID.
Men en nackdel som jag har hört med RS485 är att det finns risk för kollision hos meddelanden. Det finns det inte för CAN då CAN modulen kollar först om nätverket är upptaget eller inte.
Re: Läsa Modbus med arduino
Nej det gör den inte.
Men om två (eller flera) enheter "tävlar" om bussen genom att försöka skicka meddelande samtidigt så kommer den enhet vars skickade meddelande har lägst ID att "vinna".
Men om två (eller flera) enheter "tävlar" om bussen genom att försöka skicka meddelande samtidigt så kommer den enhet vars skickade meddelande har lägst ID att "vinna".
Re: Läsa Modbus med arduino
Är det inte så att CAN kollar först om nätverket är ledigt. Sedan skickar den?
Re: Läsa Modbus med arduino
Nu blandar du ihop saker igen.DanielM skrev: ↑3 oktober 2021, 11:25:56 RS485 må vara snabbare än CAN. Men vi får inte glömma att det finns CAN-FD, vilket är senaste versionen av CAN som kan skicka upp till 5 Mb/s.
Själv kör jag CAN 2.0B där B står för en version som kunde ha utökat ID hos CAN meddelandet. CAN 2.0B är viktigt om man vill köra J1939 för J1939 kräver utökat ID.
Men en nackdel som jag har hört med RS485 är att det finns risk för kollision hos meddelanden. Det finns det inte för CAN då CAN modulen kollar först om nätverket är upptaget eller inte.
RS485 är en fysisk standard som specificerar spänningsnivåer, typ av kabel osv.
Det har ingenting med att sända data.
CAN använder också RS485 i vissa applikationer. Huruvida det blir krockar på linan är upp till data-protokollet. Det har inget med RS485 att göra.
Re: Läsa Modbus med arduino
CAN är också en fysisk standard.TomasL skrev: ↑3 oktober 2021, 12:11:35Nu blandar du ihop saker igen.DanielM skrev: ↑3 oktober 2021, 11:25:56 RS485 må vara snabbare än CAN. Men vi får inte glömma att det finns CAN-FD, vilket är senaste versionen av CAN som kan skicka upp till 5 Mb/s.
Själv kör jag CAN 2.0B där B står för en version som kunde ha utökat ID hos CAN meddelandet. CAN 2.0B är viktigt om man vill köra J1939 för J1939 kräver utökat ID.
Men en nackdel som jag har hört med RS485 är att det finns risk för kollision hos meddelanden. Det finns det inte för CAN då CAN modulen kollar först om nätverket är upptaget eller inte.
RS485 är en fysisk standard som specificerar spänningsnivåer, typ av kabel osv.
Det har ingenting med att sända data.
CAN använder också RS485 i vissa applikationer. Huruvida det blir krockar på linan är upp till data-protokollet. Det har inget med RS485 att göra.
Re: Läsa Modbus med arduino
> Är det inte så att CAN kollar först om nätverket är ledigt.
Det spelar ingen roll. Två kan kolla samtidigt och sen börja sända samtidigt.
Det intressanta är hur det hanteras då det händer. Det är specificerat i CAN.
Det spelar ingen roll. Två kan kolla samtidigt och sen börja sända samtidigt.
Det intressanta är hur det hanteras då det händer. Det är specificerat i CAN.
Re: Läsa Modbus med arduino
Dom som utvecklade CAN utvecklade CAN för att det skulle vara säkert och stabilt. Så all fokus har lagts där. Snabbheten har CAN dock inte varit känd för. Det är först sedan 2012 som CAN FD kom till där man kunde skicka 64 bytes som data istället för 8 bytes. CAN FD sägs vara ännu mer säkrare. Jag vet inte hur. Men denna sida förklarar lite kort om CAN FD.
https://www.csselectronics.com/pages/ca ... rate-intro
https://www.csselectronics.com/pages/ca ... rate-intro
Re: Läsa Modbus med arduino
Nej. Eller, den skickar så klart inte när som helst. En nod som vill skicka ett meddelande väntar tills föregående meddelande på bussen är "slut" - sen börjar den skicka sitt meddelande. Men, det kan ju fler än EN nod göra och därmed kan fler än en nod börja skicka i princip samtidigt. Läs på om bus arbitrationÄr det inte så att CAN kollar först om nätverket är ledigt. Sedan skickar den?
Re: Läsa Modbus med arduino
Jag har kollat upp lite jämförelser mellan Modbus och CANopen och det verkar som att Modbus är ett rent av förenklat protokoll och CANopen är en mer detaljerad standard.
Nackdelarna med Modbus som jag har sett är att Modbus är osäkert och det är mycket upp till skaparna att välja hur registerna ska utformas.
Medan CANopen är mer detaljerad, bestämmer hur signalerna ska se ut samt vilka signaler som får finnas.
Bland annat så har CANopen standarder för allt, för den verkar täcka allt från givare till batterier.
Modbus passar alltså små problem där man behöver skicka data från punkt A till punkt B.
https://www.rtautomation.com/rtas-blog/ ... se-modbus/
Rätta mig gärna om artikeln är fel. För jag söker verkligen ett enkelt protokoll, men som jag läser in denna artikel, så verkar Modbus inte alls vara ett säkert protokoll.