Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

DB Cargo gaat op Betuweroute proeven doen met automatisch rijdende locomotief door Rick
Vandaag om 13:20:28
Groningers blij verrast met opening station, maar er is ook reden voor gemopper door R1954
Vandaag om 13:12:32
Raadplaatje door grossraumwagen
Vandaag om 12:49:07
Heroplage Artitec Plan W? door Tomasso
Vandaag om 12:41:16
Ervaringen met veilingsites enzo (Marktplaats, Ebay, Catawiki, etc). door Martijn1974
Vandaag om 12:37:55
Hulp gevraagd: Yamorc YD7010 en ESU loksound door Ben
Vandaag om 12:26:06
De Projecten van RetroJack door Theo Mol
Vandaag om 12:20:55
Mijn eerste H0-modeltreinbaan in aanbouw door RetroJack
Vandaag om 11:57:31
Ronald doet de Fork Challenge! door Klaas Zondervan
Vandaag om 11:29:45
De Hasseberg (spoor nul op 9mm) door spoorijzer
Vandaag om 11:18:45
Defensie wil oude koplopers ombouwen tot hospitaaltrein door MarcNL
Vandaag om 11:13:57
Ombouw Hornby LMS Class 2P 4-4-0 naar NS 2100 door puntenglijder
Vandaag om 11:12:51
Spoorwegmuseum krimpt collectie in door R1954
Vandaag om 11:10:32
"Ein kleines Kalkwerk", een nieuwe tentoonstellingsbaan door Eric v C
Vandaag om 11:08:38
ICR-rijtuigen, voor welk merk ga je? LSmodels, PBmodels, Exact Train of Piko? door spoorijzer
Vandaag om 11:07:52
365 "Het is weekend foto's" door Wim Vink
Vandaag om 10:43:07
Een NS 5500 knutselen door vpeters1984
Vandaag om 10:11:25
Westinghouse en knorr luchtpomp wat is het verschil? door orientexpress
Vandaag om 10:03:13
De bouw van mijn modelbaan in Thailand door puntenglijder
Vandaag om 09:23:25
Onlangs gespot - gefotografeerd, de foto's door Loki
Vandaag om 09:08:56
Nederland jaren 50 op basis van mijn roots door spoorijzer
Vandaag om 07:07:40
Sfeer op je modelbaan door Rody v. G.
13 July 2025, 22:48:25
BR-18.6 Schaal-0. door Benelux795
13 July 2025, 20:03:26
Rheinburg, TP V/VI door Dave.......
13 July 2025, 19:56:08
UP Mikado. Messing model schaal-0. De zaag er in. door FritsT
13 July 2025, 19:26:27
vervolg op "veel AC wielen" door Dirk
13 July 2025, 18:24:58
Sikje 225 door Huup
13 July 2025, 18:03:31
De bouw van een modulebaan met Nederlands landschap. door Frits C
13 July 2025, 17:20:30
Klein baantje 1200x1200mm door Frits C
13 July 2025, 17:12:28
Rhätische Bahn in 0m; van Filisur naar Stuls door NS264
13 July 2025, 16:20:08
  

Auteur Topic: P50x commando's  (gelezen 4282 keer)

**Jelle**

  • Offline Offline
  • Berichten: 329
P50x commando's
« Gepost op: 15 February 2007, 23:43:13 »
Vandaag bezig geweest met een (mislukt) :'( experiment. Ik gebruik eigen in Visual Basic geschreven software in combinatie met MrDirect.

De dekoders stonden in MrDirect op 14 snelheidsstappen (type NB), vandaag heb ik dat overgezet naar type N1, dus met 28 snelheidsstappen. Alle dekoders zijn ook omgeprogrammeerd naar 28 snelheidsstappen, dus CV29 op 2 gezet.
Vanuit MrDirect werkte alles weer direkt zonder problemen, maar vanuit mijn besturingsprogramma krijg ik er niet een meer in beweging. Het gekke is dat het omkeren van rijrichting wel werkt, (binnen)verlichting aan en uit werkt ook, maar de snelheidsinformatie komt niet aan in MrDirect. Terwijl dat voorheen wel werkte.
De commando's worden binair doorgegeven aan MrDirect volgens het volgende format:


*** XLok (080h) - length = 1+4 bytes
1st   low byte of Lok address
2nd   high byte of Lok address
3rd   speed (0..127: 0 = Stop, 1 = Stop/Em.Stop)
   N.B. bit #7 is reserved for future use!
4th   this byte has the following format:

   bit#   7     6     5     4     3     2     1     0
       +-----+-----+-----+-----+-----+-----+-----+-----+
       |ChgF |Force| Dir | FL  | F4  | F3  | F2  | F1  |
       +-----+-----+-----+-----+-----+-----+-----+-----+


Is iemand wel eens vaker tegen dit probleem aangelopen?

Jelle.
NS, DDW, Edits booster, LocoNet met LbServer, besturing met eigen geschreven software in VB

Wim Ros

  • BHV
  • Offline Offline
  • Berichten: 7820
  • Alleen de waarheid ligt in het midden.
    • Perrongeluk
Re: P50x commando's
« Reactie #1 Gepost op: 15 February 2007, 23:57:14 »
Jelle,

Zend je dan ook de snelheids stappen volgens die 28 stappen.

0.127. Als je stap 127 zend zal hij op volle snelheid moeten gaan rijden.

De waardes voor de tussen stappen verschillen met de waardes voor 14 stappen.

Mvg
Wim.


DEFINT A-Z
FUNCTION P50_Speed% (P50X_Speed AS INTEGER)
SELECT CASE P50X_Speed
CASE 0, 1
   P50_Speed = 0
CASE ELSE
   P50_Speed = INT((P50X_Speed * 2) / 19) + 1
END SELECT
END FUNCTION

(Obvioulsy, it cannot ever happen that P50_Speed() = 15.)

The opposite conversion is performed using a table, indexed by the
P50 speed:
   0,  2, 10, 19, 29, 38, 48, 57, 67, 76, 86, 95, 105, 114, 127, 1

The speed conversion routines for the other protocols/speed steps are:

Speed_15:
(FMZ protocol: 0 = Stop, 1..15 = non-stop speed steps)
   IF (P50X_Speed = 0) OR (P50X_Speed = 1) THEN
      Speed_15 = 0
   ELSE
      Speed_15 = INT((P50X_Speed + 1) / 9) + 1
   ENDIF


Speed_27:
(DCC 27 protocol: 0 = Stop, 1 = Em. Stop, 2..28 = non-stop speed steps)
   IF (P50X_Speed = 0) OR (P50X_Speed = 1) THEN
      Speed_27 = P50X_Speed
   ELSE
      IF (P50X_Speed < 8) THEN
         Speed_27 = 2
      ELSE
         nTemp = P50X_Speed * 2
         nTemp1= INT(nTemp / 9)
         nTemp2= nTemp - (nTemp1 * 9)
         IF (nTemp2 >= 7) THEN
            nTemp1 = nTemp1 + 2
         ELSE
            nTemp1 = nTemp1 + 1
         ENDIF
         IF nTemp1 > 28 THEN
            Speed_27 = 28
         ELSE
            Speed_27 = nTemp1
         ENDIF
      ENDIF
   ENDIF


Speed_28:
(DCC 28 protocol: 0 = Stop, 1 = Em. Stop, 2..29 = non-stop speed steps)
   IF (P50X_Speed = 0) OR (P50X_Speed = 1) THEN
      Speed_28 = P50X_Speed
   ELSE
      Speed_28 = INT(((P50X_Speed - 2) * 2) / 9) + 2
   ENDIF


Speed_31:
(Selectrix protocol: 0 = Stop, 1..31 = non-stop speed steps)
   IF (P50X_Speed = 0) OR (P50X_Speed = 1) THEN
      Speed_31 = 0
   ELSE
      IF (P50X_Speed < 4) THEN
         Speed_31 = 1
      ELSE
         Speed_31 = INT(P50X_Speed / 4)
      ENDIF
   ENDIF

« Laatst bewerkt op: 16 February 2007, 00:02:10 door Wim Ros »
Intellibox via LocoNet-Interface met s88 via een s88 naar LocoNet adapter.Of L.NET-S88SD16-N Marklin 6021 via een 63820, LocoNet-Interface en een s88 naar LocoNet adapter. Lenz Digital Plus via  LI101F of s88XPressNetLi s88SD16-n. http://rosoft.boards.net

**Jelle**

  • Offline Offline
  • Berichten: 329
Re: P50x commando's
« Reactie #2 Gepost op: 16 February 2007, 00:20:39 »
Hallo Wim,

bedankt voor je reaktie. Ik heb net even rechtstreeks in de regel die de lokcommando's verzendt de snelheid op 127 gezet, geen reaktie. In MrDirect bleef de snelheid gewoon 0.

Groetjes, Jelle.
NS, DDW, Edits booster, LocoNet met LbServer, besturing met eigen geschreven software in VB

Wim Ros

  • BHV
  • Offline Offline
  • Berichten: 7820
  • Alleen de waarheid ligt in het midden.
    • Perrongeluk
Re: P50x commando's
« Reactie #3 Gepost op: 16 February 2007, 00:47:14 »
En hoe ziet die regel er dan verder uit?

Mvg
Wim.
Intellibox via LocoNet-Interface met s88 via een s88 naar LocoNet adapter.Of L.NET-S88SD16-N Marklin 6021 via een 63820, LocoNet-Interface en een s88 naar LocoNet adapter. Lenz Digital Plus via  LI101F of s88XPressNetLi s88SD16-n. http://rosoft.boards.net

**Jelle**

  • Offline Offline
  • Berichten: 329
Re: P50x commando's
« Reactie #4 Gepost op: 16 February 2007, 17:09:09 »
Goedendag,

De aanstuurregel om loks aan te sturen vanuit Visual Basic ziet er als volgt uit:

MDIForm1.MrDirectAanst.Output = "X" + Chr$(&H80) + Chr$(DekAdres(LokNo) And &HFF) + Chr$(DekAdres(LokNo) \ 256) + Chr$(AanstSnel) + Chr$(&H80 + &H40 * Force + &H20 * Ri + F14)

Chr$(DekAdres(LokNo) And &HFF), low byte of Lok adress
Chr$(DekAdres(LokNo) \ 256), high byte of Lok adress
Chr$(AanstSnel), snelheid
Chr$(&H80 + &H40 * Force + &H20 * Ri + F14), hierin zit de richting, funkties etc.

Aan deze regel is niets veranderd sinds het omzetten naar 28 rijstappen. De waarde AanstSnel bevat de gewenste snelheid, en deze heeft allerlei waarden tussen 0 en 127 gehad, maar in MrDirect gebeurde niets. ??? Omzetten rijrichting, funkties etc werkt wel.

Jelle.


NS, DDW, Edits booster, LocoNet met LbServer, besturing met eigen geschreven software in VB

Wim Ros

  • BHV
  • Offline Offline
  • Berichten: 7820
  • Alleen de waarheid ligt in het midden.
    • Perrongeluk
Re: P50x commando's
« Reactie #5 Gepost op: 16 February 2007, 18:38:45 »
Dit is een onderdeel van een werkend voorbeeld programma te vinden op
http://groups.yahoo.com/group/IBX/files/Simple_VB6_Program/

Misschien dat je even lid moet worden van de group.


P50XCmd Chr(XLok) + Chr(Adresse% And &HFF) + Chr(Adresse% \ 256) + Chr(Vitesse%) + Chr(&HC0 + (Direction% And &H1) * 32 + (Lumiere% And &H1) * 16 + (F14% And &HF))

De juiste waardes voor Vitesse%

staan in spd

 Case "28", "28ADR", "28DAC"
        Select Case spd
        Case 0: spd = 0
        Case 1: spd = 2
        Case 2: spd = 7
        Case 3: spd = 11
        Case 4: spd = 16
        Case 5: spd = 20
        Case 6: spd = 25
        Case 7: spd = 29
        Case 8: spd = 34
        Case 9: spd = 38
        Case 10: spd = 43
        Case 11: spd = 47
        Case 12: spd = 52
        Case 13: spd = 56
        Case 14: spd = 61
        Case 15: spd = 65
        Case 16: spd = 70
        Case 17: spd = 74
        Case 18: spd = 79
        Case 19: spd = 83
        Case 20: spd = 88
        Case 21: spd = 92
        Case 22: spd = 97
        Case 23: spd = 101
        Case 24: spd = 106
        Case 25: spd = 110
        Case 26: spd = 115
        Case 27: spd = 119
        Case 28: spd = 124

'Function to send a P50Xa (P50X ASCII) or P50Xb cmd.
'It returns the ASCII reply to the cmd

Public Function P50XCmd(s As String)

If Programmer.Port.PortOpen Then
send = IIf(Asc(Left(s, 1)) < &H80, s + vbCr, s)

If P50 Then
    send = "x" + send
End If

    While Programmer.Port.OutBufferCount > 0: Wend

   
    With Programmer.Port
    j = Len(send)
        For i = 1 To j
            Tmp = Left(send, 1)
            send = Mid(send, 2)
           
            .Output = Tmp
           
        Next
        End With



    If Asc(Left(s, 1)) >= &H80 Then
                Call Events(s)
     else
        r$ = ""
        Do
            t% = WaitRx%()
            If t% = -1 Then     'I.e. if rx timeout
                Debug.Print (t%)
                P50XCmd = ""
                Exit Function
            Else
                r$ = r$ + Chr$(t%)
               
            End If
           
        Loop While t% <> Asc(IB_OK_Prompt): '"]"
       

P50XCmd = r$
End If
End Function

« Laatst bewerkt op: 16 February 2007, 18:55:29 door Wim Ros »
Intellibox via LocoNet-Interface met s88 via een s88 naar LocoNet adapter.Of L.NET-S88SD16-N Marklin 6021 via een 63820, LocoNet-Interface en een s88 naar LocoNet adapter. Lenz Digital Plus via  LI101F of s88XPressNetLi s88SD16-n. http://rosoft.boards.net