RS 485 Mellan två picar och en dator
Re: RS 485 Mellan två picar och en dator
Såklart!
Alternativet är att alla enheter inte har någon och inte begär någon adress alls förrän man trycker på en knapp på enheten (eller kortsluter en bygel). När man gör det begär enheten en adress hos mastern och sedan är saken biff. Då är det bara att knalla runt och trycka på en efter en.
Det slår alla DIP-switchar eller "sitta med terminalprogram för att lägga in adress" i båda pris och felrisk.
Alternativet är att alla enheter inte har någon och inte begär någon adress alls förrän man trycker på en knapp på enheten (eller kortsluter en bygel). När man gör det begär enheten en adress hos mastern och sedan är saken biff. Då är det bara att knalla runt och trycka på en efter en.
Det slår alla DIP-switchar eller "sitta med terminalprogram för att lägga in adress" i båda pris och felrisk.
Re: RS 485 Mellan två picar och en dator
Intressanta idéer här! Fördelen med DIP-switch är ju om man enkelt ska kunna byta ut en enhet och den nya ska få samma adress som den gamla. Jag vet inte hur det skulle fungera med knapp-tryckning... Det kan uppstå många speciella situationer då det inte blir som man tänkt sig om mastern och slaven ska försöka gissa vad man vill. T.ex. om man tar bort två enheter och sätter dit två andra, då kan ju inte mastern se vilken som sitter var. (Det är ju bra om mastern vet var de sitter, annars har man snabbt blandat ihop alla mätdata).
Kretskort ska kunna sitta dolda och då finns inte en chans att trycka på nån knapp. De kanske inte strömsätts förrän allt är inbyggt. Då ska mastern kunna identifiera enheten med en kod som jag känner till i förväg som säger exakt var enheten finns. Slumpartad numrering fungerar alltså inte. Det ska vara idiotsäkert.
En variant jag funderat på är att alla enheter har en unik 16-bitars kod. Mastern identifierar alla vid uppstart och tilldelar dem var sitt ordningsnummer. .... Jag ska fundera vidare på det...
Kretskort ska kunna sitta dolda och då finns inte en chans att trycka på nån knapp. De kanske inte strömsätts förrän allt är inbyggt. Då ska mastern kunna identifiera enheten med en kod som jag känner till i förväg som säger exakt var enheten finns. Slumpartad numrering fungerar alltså inte. Det ska vara idiotsäkert.
En variant jag funderat på är att alla enheter har en unik 16-bitars kod. Mastern identifierar alla vid uppstart och tilldelar dem var sitt ordningsnummer. .... Jag ska fundera vidare på det...

Re: RS 485 Mellan två picar och en dator
En adress som ligger i tex koden eller kanske i EEPROM känns enkelt och felsäkert för min del iom att koden för att identifiera nya koder osv är rätt avancerad. Det finns ju en variant i OneWire där man tar BIT för BIT bara att läsa databladet för ds1820 så står det där (eller om det var i ett tillägg till detta.
Skulle aldrig för mitt liv bygga in något egenbygge så att den inte går att repa
Skulle aldrig för mitt liv bygga in något egenbygge så att den inte går att repa

Re: RS 485 Mellan två picar och en dator
jesse: det fungerar synnerligt väl med knapptryckningen - om du gör rätt!
Säg att du har 10 sub-units. Mastern har ingen adresser sparade men med knapptryckningen ges första lediga nummer till den aktiverade enheten.
Om vi nu antar att adress 0 är gruppkall blir det alltså adress 1-10 till de 10 sub-units.
Sedan pajar #5. Du fixar en ny, kopplar in den och begär en adress till den, under tiden har mastern pollat sin tabell med adress 1-10 men inte fått svar från #5 på ett tag - varför den adress är ledig. Lediga adresser inom adress-spannet pollas en gång för varje gång alla andra är pollade, bara utifall att...
Sedan begärs det adress till nya enheten, den får adress #5 som ju är ledig och alla är glada och nöjda.
Om t.ex. 5 enheter är trasiga kommer alla aktiva adresser att pollas - och sedan en av de tidigare aktiva - sedan pollas alla aktiva - och sedan en av de inaktiva osv. fram till att det begäras att mastern ska utföra en adressrensning.
Eller du lagar #5 som ju har adressen sparat i sig, den pollas och adressen blir aktiv igen.
Vad är problemet?
För att nollställa en enhets adress kan det vara lämpligt att den nollställer sin egen adress om den startar med knappen intryckt, då kan POST/INIT kolla och fixa.
Säg att du har 10 sub-units. Mastern har ingen adresser sparade men med knapptryckningen ges första lediga nummer till den aktiverade enheten.
Om vi nu antar att adress 0 är gruppkall blir det alltså adress 1-10 till de 10 sub-units.
Sedan pajar #5. Du fixar en ny, kopplar in den och begär en adress till den, under tiden har mastern pollat sin tabell med adress 1-10 men inte fått svar från #5 på ett tag - varför den adress är ledig. Lediga adresser inom adress-spannet pollas en gång för varje gång alla andra är pollade, bara utifall att...
Sedan begärs det adress till nya enheten, den får adress #5 som ju är ledig och alla är glada och nöjda.
Om t.ex. 5 enheter är trasiga kommer alla aktiva adresser att pollas - och sedan en av de tidigare aktiva - sedan pollas alla aktiva - och sedan en av de inaktiva osv. fram till att det begäras att mastern ska utföra en adressrensning.
Eller du lagar #5 som ju har adressen sparat i sig, den pollas och adressen blir aktiv igen.
Vad är problemet?
För att nollställa en enhets adress kan det vara lämpligt att den nollställer sin egen adress om den startar med knappen intryckt, då kan POST/INIT kolla och fixa.
Re: RS 485 Mellan två picar och en dator
Fast om man antar att man (som jag) har en enhet där utetempen ligger en annan där elförbrukningen ligger osv då måste man ju ändå hålla reda på vilken som är vilken dvs det duger inte att en enhet är 5 sen är den 7 isf måste man ha en "master" där alla adresser efterfrågas.
Som Icecap säger fungerar i princip alla trådlösa brytare också man håller in knappen på dem så lär de sig koden, enkelt och smart.
Som Icecap säger fungerar i princip alla trådlösa brytare också man håller in knappen på dem så lär de sig koden, enkelt och smart.
Re: RS 485 Mellan två picar och en dator
Nu vet jag inte hur applikationen ser ut och om detta är möjligt...
Men man skulle kunna ha en knapp på mastern som man trycker på när man ska koppla in en ny enhet.
När man trycker på den börjar den polla rätt tätt efter en enhet utan adress. Och om den hittar någon tilldelas nästa lediga, eller högsta +1 beroende på hur det ser ut. Kanske man kan ha två knappar byt ut enhet och lägg till enhet.
På byt ut så får den nya enheten adress 5 (om det är som ovan att 5 är borta) och på lägg till får den nya enheten adress 11.
Idén är att master pollar tillräckligt tätt för att man inte ska lägga till två samtidigt. Kanske ett par sek mellan varje poll.
Såklart kan ju även det pajja om man nu vill pajja det, men jag tror det är väldigt stor osannolikhet att det händer av olycka (dvs. att man råkar koppla in två nya enheter inom loppet av två sek efter att man tryckt på knappen.)
Men man skulle kunna ha en knapp på mastern som man trycker på när man ska koppla in en ny enhet.
När man trycker på den börjar den polla rätt tätt efter en enhet utan adress. Och om den hittar någon tilldelas nästa lediga, eller högsta +1 beroende på hur det ser ut. Kanske man kan ha två knappar byt ut enhet och lägg till enhet.
På byt ut så får den nya enheten adress 5 (om det är som ovan att 5 är borta) och på lägg till får den nya enheten adress 11.
Idén är att master pollar tillräckligt tätt för att man inte ska lägga till två samtidigt. Kanske ett par sek mellan varje poll.
Såklart kan ju även det pajja om man nu vill pajja det, men jag tror det är väldigt stor osannolikhet att det händer av olycka (dvs. att man råkar koppla in två nya enheter inom loppet av två sek efter att man tryckt på knappen.)
Re: RS 485 Mellan två picar och en dator
Om man har olika funktioner på enheterna finns det såklart en identifikation av enhetstyp med i källkoden så när mastern tilldelar adresser får den samtidig en tabell över adress & funktion.
Att göra adresseringen manuellt är såklart möjligt också, det viktiga är egentligen att undvika DIP-switches eller liknande. Dels tar de onödigt med plats, kostar för mycket, upptar processorpinnar och de kan glappa.
Att göra adresseringen manuellt är såklart möjligt också, det viktiga är egentligen att undvika DIP-switches eller liknande. Dels tar de onödigt med plats, kostar för mycket, upptar processorpinnar och de kan glappa.
Re: RS 485 Mellan två picar och en dator
>undvika DIP-switches eller liknande.
Det är nog det viktigaste egentligen. Sen får jag lösa det hela i mjukvara på något vis. Jag kommer att ha ett antal av samma typ av enheter, samt några andra olika typer. Jag vill att de av samma typ ska ha adresser efter varandra i ordning. Men det löser sig nog om jag bara gör hårdvaran först (utan dip-switchar: även om de kan utelämnas i ett senare skede så märker jag att de är fruktansvärt skrymmande, särskilt de ytmonterade som har sina stift vinklade utåt).
Men det är alltid intressant att diskutera och få tips och idéer. Så jag tackar så mycket för svaren (och att jag fick låna tråden lite / hoppas det var OK).
Det är nog det viktigaste egentligen. Sen får jag lösa det hela i mjukvara på något vis. Jag kommer att ha ett antal av samma typ av enheter, samt några andra olika typer. Jag vill att de av samma typ ska ha adresser efter varandra i ordning. Men det löser sig nog om jag bara gör hårdvaran först (utan dip-switchar: även om de kan utelämnas i ett senare skede så märker jag att de är fruktansvärt skrymmande, särskilt de ytmonterade som har sina stift vinklade utåt).
Men det är alltid intressant att diskutera och få tips och idéer. Så jag tackar så mycket för svaren (och att jag fick låna tråden lite / hoppas det var OK).

Re: RS 485 Mellan två picar och en dator
Jesse, det är ju inget som hindrar dig att köra TCP/IP/DHCP över RS485, då det är ett elektriskt protokoll, eller för den delen andra protokoll som CAN osv.
Personligen tror jag, att iom du håller på med Bil-El, så bör du (läs Skall) implementera CAN enligt gängse standarder.
Personligen tror jag, att iom du håller på med Bil-El, så bör du (läs Skall) implementera CAN enligt gängse standarder.
Re: RS 485 Mellan två picar och en dator
Fast det är skillnad på om det ska styra bromsljus eller "nästa låt" på ljudanläggningen. 

Re: RS 485 Mellan två picar och en dator
Nä, egentligen inte, eftersom CAN är standard i fordonsmiljö, och om du läst lite vad jesse pysslar med i tidigare inlägg, så handlar det om batteriladdning och styrning i fordon, och jag vill då påstå att allt annat än CAN är dömt att misslyckas
Re: RS 485 Mellan två picar och en dator
Det är ju internt mellan mina egna enheter. Så varför skulle rs485 inte lyckas?
Interface mot laddare mm. kan däremot vara CAN
Interface mot laddare mm. kan däremot vara CAN
Re: RS 485 Mellan två picar och en dator
Jesse, Personligen så tror jag att man skall vara kompatibel, så min rek är kör CAN även internt, då gör du industrin glad, och får en poäng.
Re: RS 485 Mellan två picar och en dator
Btw, hittade det här
Dock vet jag inte hur mycket sanning det ligger idet.And if you want, you can run CAN on RS-485 (that's supposedly
how they tested CAN controller chips before CAN xcvr chips were
ready). It's sort of a hack, because you're not driving the
bus for both bit transitions.
Re: RS 485 Mellan två picar och en dator
Jag får väl kolla CAN då. Har ju några CAN-drivers liggandes, så kan ju testa med dessa.
Finns ju även AVR processorer med CAN.
Finns ju även AVR processorer med CAN.