Fastclock - RUT protokoll

Boostrar, dekodrar, signaler, m.m. Montering av dekodrar i lok. Datorprogram och programmering.
Användarvisningsbild
LLJ
Inlägg: 4314
Blev medlem: 2012-05-08, 10:27

Fastclock - RUT protokoll

Inlägg av LLJ »

Jag kan fixa RUT-programmet så att det pratar med Arduinon.

Förslag på protokoll mellan PC och Arduino. Detta protokoll bygger på Lars förslag att PC:n kan konfigurera Arduinon, men att Arduinon också kan gå självständigt, och att Arduinon ansvarar för att snabbstega om det behövs.

Serieporten konfigureras för 9600 baud, 8 databitar, 1 stoppbit, ingen paritet. (Standardkonfiguration)

Alla kommandon inleds med tecknet #.
PC -> Arduni: Kommando "Ställ klockan"

#1hhmmssfffa

# = Starttecken. Arduino lyssnar på serieporten och börjar lyssna när detta kommer.
1 = Kommando, 1 siffra. Kommando 1 = Snabbklocka. Ardunio bortser från alla andra kommandon, t ex skicka ut texten, m.m.
hh = Timmar, 2 siffror. 00 - 23. Arduino får själv ta hänsyn till 12h-klocka.
mm = Minuter, 2 siffror. 00 - 59.
ss = Sekunder, 2 siffror. 00 - 59.
fff = Fart (hastighet), 3 siffror. 000 - 999. Sista siffran är decimal. Så 045 är hastigheten 4,5.
a = Aktiv. 1 = Klockan går, 0 = klockan stoppad.
Farten behöver bara 2 tecken då aktuella hastigheter för RUT är 3 - 6 med 0.5 steg (frågan är om decimaler behövs egentligen, har aldrig använt det på någon körning med RUT)
Arduni -> PC: Kommando "RUT-klockan"
Används för att PC:n ska kunna visa RUT-tiden.

#1hhmmssfffas

# = Starttecken.
1 = Kommando, 1 siffra. Kommando 1 = Snabbklocka.
hh = Timmar, 2 siffror. 00 - 23. Arduino får själv ta hänsyn till 12h-klocka.
mm = Minuter, 2 siffror. 00 - 59.
ss = Sekunder, 2 siffror. 00 - 59.
fff = Fart (hastighet), 3 siffror. 000 - 999. Sista siffran är decimal. Så 045 är hastigheten 4,5.
a = Aktiv. 1 = Klockan går, 0 = klockan stoppad.
s = Snabbstega. 1 = RUT snabbstegas, 0 = RUT går i takt.
Fart, se ovan

När det gäller snabbstegning så kommer det finnas andra kommandon för det.
Arduino -> PC: Kommando "Statusrapport"
Används för att PC:n ska kunna visa felmeddelanden.

#0ss

ss = Statuskod, 2 siffror

Status "Klockan går"
ss = 01

Status "Klockan stoppad"
ss = 02

Status "Relä 1" felaktigt draget
ss = 03

Status "Relä 2" felaktigt draget
ss = 04


Mvh Daniel
Det kommer att finnas 4 relä om vi använder den shield som diskuteras. Inget relä borde vara felaktigt draget medvetet.
Behöver nog kolla på detta igen ikväll.

/Lars
AndersB
Inlägg: 454
Blev medlem: 2012-05-09, 02:15

Re: Fastclock - RUT protokoll

Inlägg av AndersB »

LLJ skrev: Farten behöver bara 2 tecken då aktuella hastigheter för RUT är 3 - 6 med 0.5 steg (frågan är om decimaler behövs egentligen, har aldrig använt det på någon körning med RUT)
Övriga snabbklockor klarar fler hastigheter så "rut-klockans" protokoll bör inte införa begränsningar.
Hastigheten i "stora protokollet" kan vara 0.1 - 99.9 vilket täcks av Daniels förslag.
Har sedan RUT-klockan inbyggda fysiska begränsningar så får hårdvaran (Arduinon) ta hand om dom (t.ex. finns det antagligen en maxhastighet där den inte hänger med).
mvh/anders
Användarvisningsbild
LLJ
Inlägg: 4314
Blev medlem: 2012-05-08, 10:27

Re: Fastclock - RUT protokoll

Inlägg av LLJ »

Jag ser faktiskt ingen användning för decimaler. Inte heller hastigheter lägre än 3 och snabbare än 6 när det gäller RUT.
Har som sagt inte råkat på varken decimaler eller hastigheter utanför nämnda område för RUT vid de ganska många träffar jag deltagit vid.

Arduino programmet kommer i första hand att skrivas för att gå som "standalone master", med "slave" som option.

/Lars
AndersB
Inlägg: 454
Blev medlem: 2012-05-09, 02:15

Re: Fastclock - RUT protokoll

Inlägg av AndersB »

LLJ skrev:Jag ser faktiskt ingen användning för decimaler. Inte heller hastigheter lägre än 3 och snabbare än 6 när det gäller RUT.
Har som sagt inte råkat på varken decimaler eller hastigheter utanför nämnda område för RUT vid de ganska många träffar jag deltagit vid.

Arduino programmet kommer i första hand att skrivas för att gå som "standalone master", med "slave" som option.

/Lars
Min invändning gäller ju först och främst när klockan drivs från en annan server tillsammans med andra klockor.

Om Daniels protokollsnuttar ovan är en del av det protokoll som används då RUT-klockan går styrd från annat håll så bör det protokollet inte göra inskränkningar på vad det "stora protokollet" klarar.

Om däremot protokolls-snuttarna ovan enbart är för att ställa in "stand-alone-klockan" så spelar det ingen roll för mig.
( dock ser jag ingen anledning att begränsa protokollet enbart beroende på vad man sett i användning hittills. Kan väl vara skoj att kunna köra med hastighet 1, dvs verklig tid ).


mvh/anders
Användarvisningsbild
daniel
Inlägg: 3619
Blev medlem: 2012-05-08, 10:15

Re: Fastclock - RUT protokoll

Inlägg av daniel »

LLJ skrev:Farten behöver bara 2 tecken då aktuella hastigheter för RUT är 3 - 6 med 0.5 steg (frågan är om decimaler behövs egentligen, har aldrig använt det på någon körning med RUT)
Att RUT-klienten byggs om för Arduino betyder inte nödvändigtvis att det är en Arduino som är ansluten. Niklas Westerlund kan t ex använda RUT-klienten som master för sin klocka och eftersom den använder stegmotorer så antar jag att den kan gå betydligt fortare. Därför bör RUT-klienten stödja FastClockprotokollet fullt ut, även om inte just Arduinon stödjer det.

Det är också av den här anledningen Arduinon behöver bortse från okända kommandon. Man kanske senare bygger en stor textdisplay och vill visa FastClock-texterna. Och att man då utökar protokollet, med ett ytterligare kommando för att skicka texten.
LLJ skrev:När det gäller snabbstegning så kommer det finnas andra kommandon för det.
RUT-klienten bryr sig egentligen inte om Arduinon snabbstegar eller inte, men det kan vara bra att RUT-klienten kan informera användaren. Men föredrar du ett extra statusmeddelande istället, t ex Statuskod ss=3 för snabbstegning så är det bra för mig.
LLJ skrev:Det kommer att finnas 4 relä om vi använder den shield som diskuteras. Inget relä borde vara felaktigt draget medvetet.
Behöver nog kolla på detta igen ikväll.
Bra synpunkt. Det kanske blir ytterligare reläer i framtiden. Jag föreslår därför:

Status "Relä <nr>" felaktigt draget
#0ssrr
0 = Kommando 0 (status)
ss = 03
rr = Parameter Relä. 01 = Relä 1, 02 = Relä 2, osv.

Mvh Daniel
Skriv svar

Återgå till "El, elektronik och programvara"