Ett bra sätt att få kommunikation mellan PI & Arduino?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av TomasL »

Jag skrev nog mitt samtidigt som du, alternativt så såg jag inte ditt inlägg.
Ja, det är en bra standard och rätt enkel att implementera om man är medveten om just detta med 32 och 64-bitars register samt endinessen på dessa register.

En annan grej som kan ge ytterligare en massa smolk i bägaren, Modbus över serielina, dvs RS232/RS422/RS485 osv, skall använda 8 bitar + paritet + en stoppbit, eller 8 bitar + 2 stoppbitar. Alla tillverkare stöder inte alltid detta, vilket kan skapa problem.
TheUnreal
Inlägg: 115
Blev medlem: 4 september 2005, 16:04:57
Ort: Sundsvall
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av TheUnreal »

Hej Al, du är en underhållande personlighet och varje gång jag ser en ny tråd du startat så förväntar jag mig en stunds underhållande läsning :)

Ur mitt perspektiv läser jag din nu aktuella frågeställning lite så här:
HEJ!!
Jag har hört att man kan köra minräknare i datorn om man har windows, därför har jag beställt en cludserver med windows super server ultamate edition på den coolaste serverfamen, och ett ethernet till RS232 interface.
Det interfacet ska jag sätta hos min måg som har fiber via ComHem, och koppla ihop det med en Casio fx-82 http://www.voidware.com/calcs/fx82.htm
Har ni några enklare idéer?
Svaren kommer ofta med lösningar som är på en låg komplexitetsnivå:
Har du provat trycka win-tangenten och skriva calc.exe?
Du gillar naturligtvis den lite mer komplicerade lösningen, och inget fel med det egentligen, det kan vara mycket lärorikt.
En lärd man jag studerat för hade på sin dörr citatet: An expert is a man who has made all the mistakes which can be made, in a narrow field. (Niels Bohr)

Men jag tycker att du ska titta på enklare lösningar och sätta dig in i hur enkla de är.
Det finns massor av IO-expanders för både i2c och spi som du kan sätta direkt på din paj och helt slippa all programmering av en arduino.
Både som moduler att bara koppla kablar till och som rena IC som du kan bygga på labbplatta med.

Allt du behöver göra är att lära dig hur du aktiverar de portarna på pajen samt hur du i linux ger en användare rätt att läsa och skriva på de portarna.
Det går mycket fortare än att skapa ett projekt för arduino och uppfinna ett protokoll för kommunikationen.

Men för att besvara din fråga i rubriken: Använd UART på båda sidor, men det finns ingen anledning att göra det alls.
Lycka till! :)
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Mr Andersson »

Re. modbus.. Som jag ser det är modbus ett transportprotokoll, inte ett dataprotokoll. Så då är det inte så konstigt om olika tillverkare med olika dataprotokoll inte kan prata med varandra.
Jämför med t.ex. nätverkskommunikation. En klient som förväntar sig http kan inte prata med en ssh-server trots att bägge kör över fullt standardiserad tcp/ip.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av TomasL »

Modbus är både Data, Transport och hårdvaruprotokoll, eftersom alla dessa bitar är specificerade i standarden, men, iom begränsningarna så har alla tillverkare implementerat sina egna mer eller mindre konstiga lösningar för att kringgå dessa begränsningar, tyvärr.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Alltså bara tiden läsa era diskussioner är ju längre än att implementera ett eget protokol. Som det visserligen brukar vara med standarder...kolla ex CANopen implementationen....
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Jan Almqvist »

Mr Andersson skrev:Re. modbus.. Som jag ser det är modbus ett transportprotokoll, inte ett dataprotokoll. Så då är det inte så konstigt om olika tillverkare med olika dataprotokoll inte kan prata med varandra.
Jämför med t.ex. nätverkskommunikation. En klient som förväntar sig http kan inte prata med en ssh-server trots att bägge kör över fullt standardiserad tcp/ip.
Min uppfattning är att i de flesta fall så kan en godtycklig Modbus-klient (som t.ex. HMI Droid) prata med en godtycklig Modbus-server. Det finns givetvis några undantag:

- Det finns en färdig Modbus-modul som är ganska vanlig och som bara klarar max 16 Modbus Holding register per telegram och inte 250 som specifikationen anger.
- Ett open source bibliotek för Arduino jag testat stänger ner tcp/ip anslutningen efter varje Request/Response-cykel.
- Ett annat open source bibliotek för Arduino jag provat stödjer inte FC16 som ingår i Class 0 utan förlitar sej på att klienten använder FC06 som ingår i Class 1.
- En viss PLC avviker ordentligt från standarden och använder 32-bitars register för alla adresser under 512.
- En viss frekvensomformare stöder inte FC01 (Read Coil Status) men däremot FC05 (Force Single Coil).

Eftersom det inte råder ett ett-till-ett förhållande mellan datatyperna i Modbus och datatyperna i PLC:er så får man läsa manualen för Modbus-klienten noga, välja rätt datatyp (Holding Register, Discrete Input, Coil eller Input Register) och använda rätt adress. Vissa IO-moduler erbjuder flera alternativ att hantera variabler. Digitala ingångar kan vara mappade både enskilt på Discrete Input och som 16-bitars ord på Input Register.

Man ska naturligtvis inte förvänta sej att Modbus ska fungera problemfritt för datatyper som inte ingår i specifikationen t.ex. heltal med fler än 16 bitar eller flyttal. Trots att Modbus använder big-endian så är det inte ovanligt att PLC tillverkare placerar hög- och lågorden i ett flyttal "fel".
Senast redigerad av Jan Almqvist 26 september 2018, 09:32:08, redigerad totalt 2 gånger.
svanted
Inlägg: 5082
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av svanted »

Rick81 skrev:Alltså bara tiden läsa era diskussioner är ju längre än att implementera ett eget protokol
:lol:

många trådar här är huvudsyftet, inte själva projektet.
ingen nämnd ingen glömd. :vissla:
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Shimonu »

Håller på att lösa exakt det här problemet hemma, fast det är en ATmega som skickar over UART till min Pi. Det är inte något man gör snyggt på nolltid men håller man det simpelt kan det göras snabbt.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Icecap »

Vad jag vet har en Rasp-Pi UART på pinnarna. Jag hade kopplat en MAX3232 (liknande) på Rasp-Pi'en och en MAX232 (liknande) på ATmegan och sedan gjort ett enkelt protokoll som även innehöll checksum osv.

Jag har gjort sådana protokoll många år även om att jag på sista tiden har gjort ord-baserade versioner också, då främst för att kunde koppla på en PC med terminalprogram för att justera inställningar.

Det kan vara enklare att fatta "Set Intensity Low xxx" än "<STX>07xxxx??<ETX>" för en användare. Såklart är det en del overhead för att tolka texten men jag har tid, minne och kraft nog för det.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Varför ska du köra UART till RS232 och sedan RS232 till UART? låter väl ganska onödigt
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Icecap »

Tja, om sakerna ska vara byggt ihop kan det gå med en vanlig nivå-skiftare från Pajen till ATmegan och en spänningsdelare från ATmegan till Pajen.

Men är enheterna inte monterat tät ihop ska man ha IF-kretsar mellan! Speciellt i TS' fall.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av johano »

Dessutom är det ju oerhört smidigt att kunne stoppa in en PC med terminalprog. i ena änden för
att kunna debugga.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Ett bra sätt att få kommunikation mellan PI & Arduino?

Inlägg av Rick81 »

Har man inte långa avstånd är det ju mycket smidigare med UART. PC kan du ju debugga via USB UART (det är ju faktiskt 2018)
Skriv svar