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

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
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 »

Går det snabbare att implementera än att hitta nåt "som redan finns" så brukar detta vara att föredra.

I detta fall är implementation av mitt förslag mycket snabbare än att hitta och anpassa något redan befintligt, då det är sällsynt man hittar exakt det man vill ha.

Ska man exempelvis implementera en Ethernet stack då vil man gärna börja med nåt befintligt för att slippa uppfinna hjulet på nytt men detta är mycket mer komplicerat.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

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

Inlägg av lillahuset »

Modbus-RTU är ett utmärkt och enkelt protokoll. Lätt att implementera och är man lat implementerar man bara det man behöver för stunden.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

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

Inlägg av Al_Bundy »

Jag uppfattar dig som att man ska skriva C-kod för hand och skicka ett bit i taget, och tills slut bygga eget "bibliotek"?
Jag ska alltså inte skicka text mellan Arduino och Pi. Snarare så ska jag skicka ASCII-kod mellan enheterna så dem får tala med varandra.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

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

Inlägg av Al_Bundy »

lillahuset skrev:Modbus-RTU är ett utmärkt och enkelt protokoll. Lätt att implementera och är man lat implementerar man bara det man behöver för stunden.
Det är inte bara. Jag måste ju ändå skriva C-kod som ändrar ingångarna till hög/låg osv
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

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

Inlägg av lillahuset »

Al, läs på lite grand så kanske det går lättare för dig. Och när det gäller din Arduino så blir du väl tvungen att använda C eller liknande.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

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

Inlägg av Al_Bundy »

Jo, men ni talar som att "det är bara!". Men det är inte bara.

Jag måste först hitta ett bibliotek för att kunna använda sig av ModBus-RTU protokollet som passar för Arduino.

Jag får väll använda Raspberry PI's inbyggda GPIO pinnar om jag inte får något annat att fungera - som vanligt.
Mr Andersson
Inlägg: 1397
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 »

Jag ska alltså inte skicka text [...] Snarare så ska jag skicka ASCII-kod
WTF?

Och jo, det är faktiskt "det är bara" som gäller i de flesta fall om man vill ha det rätt på en gång.
Det är det här som är problemet med klipp & klistra-programmerare. Finns det inget att kopiera från blir ni handlingsförlamade.

Edit:
Du får garanterat hjälp här på forumet med koden så länge du visar på att du faktiskt gjort ett seriöst försök själv.
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 »

Ascii = textsträngar

Jag garanterat att det är mycket snabbare att skicka de bytes jag sagt än implementera Modbus-RTU på raspberry pi och arduino.
Ex:
UART_Send(1); // kommando, sätt GPIO
UART_Send(0); // 0 = port A
UART_Send(0x01); // mask för lägsta biten
UART_Send(0x01); // sätt lägsta biten hög
checksum = 1+0+0x01+0x01;
UART_Send(checksum);

Det var väl inte så svårt?


Och du kommer inte komma undan skriva egen C-kod i Arduino om du inte hittar ett färdigt projekt som är precis som du vill ha det.
Mr Andersson
Inlägg: 1397
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 »

Jo det skulle fungera bra* men fördelen med t.ex. Modbus är att det är standardiserat, större chans att du kan återanvända samma kod i andra projekt, och att det är adresserbart så du kan ha flera enheter på samma serielina.

*) med reservation för checksumman.. Addition kan fortfarande ge rätt summa för enbitsfel i vissa fall. Använd hellre någon standardiserad CRC-algoritm, eller ännu hellre någon form av ECC.
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 »

Instämmer med checksumma men tog bara enklast möjliga.

Jag tror Al har mer nytta av att lära sig implementra detta själv då det är ett bra programneringstest och liknande utnaningar återkommer ofta fast med vissa modifierangar.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45291
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 att det är standardiserat
Nja skall man vara petig, så har varenda tillverkare av Modbussapparater sin egen standard, ofta olika standarder på olika produktserier.
Kontentan är att Modbus kan vara väldigt stökigt, tro mig, jag vet :shock:
Mr Andersson
Inlägg: 1397
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 »

Hmm okej det var ju mindre bra. Jag har bara använt modbus i PLC:er där protokollet redan finns färdigt så jag ingen direkt erfarenhet av det på bitnivå. Jag utgick bara från vad wikipedia sa.

Edit:
Nu fick jag lust att implementera det själv bara för att testa :)
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

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

Inlägg av lillahuset »

Om jag inte minns helt fel så är (eller var när jag höll på med det) Modbus väl standardiserat utom när det gäller representation av heltal med mer än 16 bitar och flyttal.
Sedan att saker och ting kan ligga på helt olika portar i olika system är ju inget brott mot någon standard eftersom det inte är standardiserat.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45291
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 »

Problemet är att Modbus-standarden fortfarande befinner sig på 70-talsnivå, samma som när den engång skapades.
Utvecklingen har sprungit iväg från relälogik, kan man säga.
Problemet uppkommer när tillverkarna implementerar 32 och 64-bitars register, vilket är rätt vanligt i dag.
En del tillverkare låter mastern läsa/skriva 2 resp 4 16-bitarsregister, en hos en del är det rena 32 och 64-bitars register som läses/skrives som ett register.
Följaktligen, skall man skriva till ett 32/64 bitars register så använder man antingen "Write Single register" med funktionskod 0x06 eller "Write Multiple Register" med funktionskoden 0x16 helt beroende på hur tillverkaren valt att implementera det hela

För att krångla till det ytterligare så använder en del Little Endian en del Big Endian, dvs om ett 32-bitarsregister skickas, ordningen på de två 16-bitars orden som då skickas, en del tillverkare skickar data som heltal, en del som flyttal.
Dessutom är det inte säkert att två produktserier från samma tillverkare är likadana.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

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

Inlägg av lillahuset »

Varför så nedlåtande?

Det var väl ungefär vad jag skrev men inte fullt så utförligt.
Att det är en gammal standard gör det inte till en dålig standard. Den duger väldigt bra till väldigt många tillämpningar.
Skriv svar