Nieuws:

Zin in een spoors uitstapje? Kijk eens in onze kalender!

Loconet terugmelding initiele status

Gestart door xanderb woensdag 15 april 2009, 09:30:25

0 leden en 1 gast bekijken dit board.
Loconet terugmelding initiele status
Het loconet protocol is beschreven hoe je veranderingen aan terugmelders kan uitlezen. Mijn vraag is hoe lees je de initiele status uit? Dus i.p.v. naar het event luisteren een commando geven om events te laten genereren. Dit kan ik niet vinden in document van Digitrax.

Met vriendelijke groeten

Xander Berkhout
Re:Loconet terugmelding initiele status
Hoi Xander,

Dit zul je ook niet gaan vinden, het commando bestaat namelijk niet ;)

Sommige modules sturen hun initieele status bij 'power-on' andere kun je instellen dat te doen, weer andere helemaal niet... Het is dus m.a.w. aan de maker dit in te vullen.

Volgens het protocol hoeft er helemaal niets gestuurd te worden tijdens power-up.

Grtzz,

Karst

P.S. Digitrax zelf heeft iets in zijn eigen decoders ingebouwd, waarmee via een DCC !! commando, de module bewogen wordt om z'n data prijs te geven...
Re:Loconet terugmelding initiele status
Bedankt voor je reactie.

Baal er wel van. :x

Hoe kan je dan ooit met terugmelders werken. Behalve dan door ze na elke sessie op te slaan en hopen dat er niets veranderd is? Koploper en TrainController werken toch ook met Loconet? De nieuwe Intellibox Basic en II hebben alleen nog maar Loconet. Hoe werkt het daar?

Met vriendelijke groeten,

Xander Berkhout


Re:Loconet terugmelding initiele status
Hoi,

Beiden werken met z.g. transities. Dwz de overgangen van bezet naar vrij en omgekeerd worden gedetecteerd door de hardware en geevalueerd door de software.

Statische bezetmelding wordt volgens mij door geen enkel commercieel pakket als zodanig gebruikt.

Grtzz,

Karst
Re:Loconet terugmelding initiele status
Hoi Karst,

Dat snap ik wel, maar ik wil bij het opstarten van m'n programma zien welke blokken bezet zijn. Als er geen transitie (=overgang) plaatsvindt weet ik dus niet wat de status is. Of denk ik verkeerd? Ik heb alles al gemaakt alleen als ik een wagon op de baan zet voordat ik m'n programma opstart weet ik dat gewoon niet. Dat is met de IB, ECoS en Marklin 6051 allemaal geen probleem.

Met vriendelijke groeten

Xander Berkhout
Re:Loconet terugmelding initiele status
Koploper onthoud in ieder geval de standen.

Ik zal eens kijken of ik die speciale DCC string kan vinden die Digitrax gebruikt. Wellicht reageert daar je IB ook op ???

( Ik neem tenminste aan dat je nu met een IB werkt... )

Grtzz,

Karst
Re:Loconet terugmelding initiele status
Citaat van: karst.drenth op woensdag 15 april 2009, 16:43:39
Hoi,

Beiden werken met z.g. transities. Dwz de overgangen van bezet naar vrij en omgekeerd worden gedetecteerd door de hardware en geevalueerd door de software.

Statische bezetmelding wordt volgens mij door geen enkel commercieel pakket als zodanig gebruikt.

Grtzz,

Karst
Karst,

Hoe goed ken jij commerciele en freeware pakketten? Graag had ik ook de initiele status kunnen uitlezen. Het is altijd prettig als je weet bij start welke bezetmelders reeds bezet zijn. Volgens mij is er een freeware pakket welke hier wel gebruik van maakt.
Save van die stand werkt alleen maar als je dan in de tijd dat de Pc niet actief is ook niets veranderd op je baan.

Ik vind dat zelf ook echt een gemis bij Loconet.

Mvg,
Paul.
Re:Loconet terugmelding initiele status
Hoi Paul,

Bedankt voor je meeleven. Ik begrijp dat bij Koploper je het dus ook niet ideaal kon oplossen. Ik heb nog van alles geprobeerd door zelf valse meldingen te sturen die dan door de melder gecorrigeerd worden. Lijkt allemaal niks uit te halen.

Hallo Karst,

Dat DCC commando staat wel in de Digitrax handleiding, maar hoe verstuur je dat met Loconet.  Ik snap die a,b,c,d niet helemaal. Heb wel al van alles geprobeerd. Ben natuurlijk nog niet echt een DCC man (Märklin) al leer ik snel bij.

Groeten

Xander

Re:Loconet terugmelding initiele status
Hoi Paul  :D

1 heel aardig, een aantal redelijk  :)

En... idd dat andere freeware pakket JMRI vergeten. Die zelfs op source niveau ;)

Ik ben het met je eens dat het een gemis in het LocoNet protocol is.

Het gekke van het hele verhaal is, dat er wel een commando: OPC_SW_STATE is om wisselstanden op te vragen...  :?

Om de Digitrax modules DS54 hun inputstate te 'ontfutselen', schtijft Digitrax in hun LocoNet specs:

Citeer
Stationary Interrogate Command:
The DCC packet <sync>,<1011-1111>,<1100-D c b a> <ecb>is an Interrogation for all DS54's. This causes a 2 LocoNet <B1> messages encoding both Output state and Input state, for each sensor adr a/b/c encodes.
Interrogate LocoNet Switch adr is <SW2>=<0,0,a,1-0,1,1,1>, <SW1>= <0,1,1,1-1,0,c,b>
This is generated by DCS100 at power ON, and scans all 8 inputs of all DS54's.

Dit packet kan met de LocoNet OPC_IMM_PACKET verzonden worden.

dus: 0xED, 0x0B, 0x7F, 0x01, < high bits 1..5 >, 0xBF, 0xF0 + adres, < checksum >, 0x00, 0x00, <CHK>

Wat het resultaat is, ik weet het niet. Heb hier geen modules die daar op antwoorden...

Grtzz,

Karst
Re:Loconet terugmelding initiele status
Een idee:
Wat gebeurt er normaal bij Loconet als de stroom eraf gaat (door Stop) en daarna weer aan gaat. In principe zouden de terugmelders die bezet zijn daarna een niet bezet status door moeten geven en als er weer stroom staat (Go) dan zouden ze weer bezet worden dus een overgang.
Ik gebruik een Intellibox met S88 terugmelders dus die zal deze informatie wel niet doorgeven en vergelijken met de stand voordat de stroom eraf gaat, maar in de S88 monitor stand zie ik voordat ik op Go druk even alles uit zijn.
Wat nu als ik zelf events genereer voor alle bezetmeldingen die het programma kent, zodat de IB hetzelfde denkt als het programma en dan even Stop en daarna Go.

Ga het vanavond even proberen.

Xander
Re:Loconet terugmelding initiele status
Niet gelukt. Dan toch maar die DCC string proberen.

Karst,

Wat is High bits 1..5 en 0xF0 + adres ? en het verschil tussen checksum en CHK?

0xED, 0x0B, 0x7F, 0x01, < high bits 1..5 >, 0xBF, 0xF0 + adres, < checksum >, 0x00, 0x00, <CHK>

Waarschijnlijk is <checksum> voor het DCC packet en CKK voor het Loconet pakket. Ik weet nog niks van DCC paketten.
Heb je suggesties voor further reading.

Mvgr

Xander
Re:Loconet terugmelding initiele status
Je kunt bij de IB/TC het geheugen uitlezen van de s88. Dus na power up.

For ScanCounter = 0 To 127
    'ID1 = 49  'I'
    'ID2 = 42  'B'
    'cc = &HED Xor &HF Xor &H1 Xor ID1 Xor ID2 Xor &H13 Xor ScanCounter
    Temp = Chr$(&HED) + Chr$(&HF) + Chr$(&H1) + Chr$(ID1) + Chr$(ID2) + Chr$(&H13) + Chr$(&H0) + Chr$(ScanCounter) + Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H0)
    SendLocoNet (Temp)
Next

Re:Loconet terugmelding initiele status
Citaat van: pahasoft op woensdag 15 april 2009, 18:44:55

Hoe goed ken jij commerciele en freeware pakketten? Graag had ik ook de initiele status kunnen uitlezen. Het is altijd prettig als je weet bij start welke bezetmelders reeds bezet zijn. Volgens mij is er een freeware pakket welke hier wel gebruik van maakt.
Save van die stand werkt alleen maar als je dan in de tijd dat de Pc niet actief is ook niets veranderd op je baan.

Ik vind dat zelf ook echt een gemis bij Loconet.

Mvg,
Paul.

En hoe goed ken jij je eigen programma??  Volgens mij heb jij dit er zelf op aanwijzen ingezet.
Re:Loconet terugmelding initiele status
Grappig,

Niet dus. Loconet is er ingekomen door jouw bemoeienis, want zelf had ik het al lang opgegeven. Dit staat ook in handleiding genoemd.
Er is prive tijdens de inbouwtijd ook heel veel gebeurd (zeker niet plezierig!). Ik hou wel mijn hart vast voor het gehele loconet verhaal. Of bij iedere digitale centale de oplossing werkt? Geen idee!

Mvg,
Paul.
Re:Loconet terugmelding initiele status
Draadje is geschoond, ik hoop dat we nu gewoon weer on-topic kunnen blijven.
Re:Loconet terugmelding initiele status
Nee, Paul dat werkt niet bij alle centrales, dat werkt alleen bij centrales met ID1 = 49 en ID2 = 42
Dit stukje LocoNet-protocol is dus specifiek voor Uhlenbrock.
Door Slot 0 op te vragen krijg je gegevens binnen, daarin staat met welke centrale jij verbonden bent. En aan de hand daarvan kun je diverse handelingen wel of niet uitvoeren.
Weet je het nog??!!
Re:Loconet terugmelding initiele status
Wim,

Bedankt voor de informatie. Ik ga het proberen, want ik heb een IB IR. Hopelijk werkt het ook goed voor de nieuwe IB Basic, IB COM en IB 2.

Ik neem aan dat de reactie is dat er events worden gegenereerd met INPUT_REP die alle sensors meld of moet ik nog meer doen?

Met vriendelijke groeten

Xander Berkhout
Re:Loconet terugmelding initiele status
Nee, daar komt een <OPC_PEER_XFER> op terug. Met daarin de gegevens van 1 complete S88 module.
Re:Loconet terugmelding initiele status
Wim,

1e vraag: Heb je nog informatie hoe dat terugkomt in PEER_XFER. Zijn deze S88 modules dan 8 of 16 bits en in welke velden komen ze dan terug? Ik ga het wel proberen, maar voor het geval ik er niet uit kom.

2e vraag: Hoe zou ik het moeten oplossen bij een Dgitrax centrale?

Alvast bedankt

Xander
Re:Loconet terugmelding initiele status
Xander,

op je IB via menu en knopje 3 kiezen voor de S88 monitor, en kijken wat er terugkomt als loconet info. Diverse meldingen geven op een S88 melder.

Een S88 is altijd 16 contacten. S=Signal 8 + 8 =16 kortweg s88


Bij digitrax los je het op met de info die Karst je gaf.

Re:Loconet terugmelding initiele status
Wim,

Ik heb het geprobeerd en het lukt wel met trial en error. Ik heb wel het idee dat er oneigenlijk gebruikt gemaakt wordt van de specificaties. Een PEER_XFRE zou 8 bytes moeten hebben en een lengte van 16, maar ik krijg er 15. Het ID is nu 49 4b i.p.v. 49 42.  Van de 11 weet ik niet wat het is, daarna komen in bit 5,6 de hoogste bits van de twee laatste bytes (voor de checksum) die een mask zijn voor de S88 bits. Daartussen zit nog een onbekende 7f 7f 00 00.

PEER_XFER (15) :  e5 0f 00 49 4b 11 26 00 7f 7f 00 00 00 0d 2d
PEER_XFER (15) :  e5 0f 00 49 4b 11 66 01 7f 7f 00 00 01 6b 0b
PEER_XFER (15) :  e5 0f 00 49 4b 11 66 02 7f 7f 00 00 45 6d 4a
PEER_XFER (15) :  e5 0f 00 49 4b 11 06 03 7f 7f 00 00 66 70 15

Kortom een special PEER_XFER.

Kan jij hier nog meer licht op werpen, waarom en hoe. Ik kan nu niet echt checken of ik dit wil processen, omdat het ID anders is dan bij het sturen.

Groeten

Xander
Re:Loconet terugmelding initiele status
Ik heb je toch al verteld dat het een speciaal IB loconet is.

Staat in de specificaties van Uhlenbrock.

Met &H1 vraag je informatie op uit de KPU van de IB.

49 4B geeft aan dat de informatie uit de KPU komt, de users interface van de IB is dat.

*** IB-related LocoNet messages:

There are a few LocoNet messages which have been defined by us (Uhlenbrock
Elektronik GmbH) for use with our devices. The IB uses these messages for
various purposes. We document here their general structure as well as the
content in case of messages which pertain to the control of LN-mode.

The general structure is:
Opcode   OPC_PEER_XFER (0E5h) - for replies (or 'spontaneous messages')
   OPC_IMM_PACKET (0EDh) - for messages which expect a reply
length   15 bytes (0Fh)
12 message data bytes
Checksum

format of data bytes:
SRC, DSTL, DSTH,
ReqId,
PXCT1, D1, D2, D3, D4, D5, D6, D7

SRC   0 = master, 1 = KPU, 2 = DAISY, 3 = TB or FRED
        4 = IB-Switch, 5 = LocoNet modules
   70h..7Eh = reserved

DSTL/H   destination (addressed) device, 0/0 = broadcast
   "I"/"B" = Intellibox (SPU: the 'main' CPU of the Intellibox)
   "I"/"K" = Intellibox (KPU: the 'user interface' CPU of the Intellibox)
   0..15/"T" = Twin-Box
   "I"/"S" = IB-Switch
   "D"/"Y" = DAISY throttle

PXCT1   0, D7.7, D6.7, D5.7, D4.7, D3.7, D2.7, D1.7

ReqId   this byte is used in order to tell the type of the message, hence
   also to tell what D1..D7 do hold.

In case of LN-mode related messages, ReqId has the decimal value 46 (2Eh):

   46 = used for configuring/terminating PC access to LocoNet through the
        RS-232 interface of the IB.
        This msg is sent by a non-SPU device with 0EDh header and SRC=1.
        The reply to this msg is an OPC_LONG_ACK msg (LACK).
        The SPU automatically sends this msg with 0E5h header and SRC=0
      when the RS-232 LocoNet mode is activated by P50Xa cmd.
        DSTL/H always hold the value 'I'/'B'.
        D1 holds the cmd. Currently defined cmds are:

        0:   ask RS-232 'LocoNet' mode driver version #
      The version # is reported as LACK code, the 1st sw release
      featuring LN-mode (SPU vers. 1.500) reports a LACK code of 01h.

        1:   set value of 'tx flags'
      D2   the value of the 'tx flags':
         Bit #0: set (1) if the SPU will also "see" this msg
            (local echo), reset (0) if the SPU will
            not "see" this msg: it will "only" be
            seen by LocoNet devices other than the SPU.
         Bit #1: set (1) if normal priority (non sensor),
            reset (0) if high priority (sensor)
         These two flags default to the 'set' status.
         Bits #2..7: please do not use (leave them at 0)
      D3..D7   (not currently used)

        2: terminate 'LocoNet mode' of the IB RS-232 interface and
      start mixed P50+P50X mode
      D2   must hold the value 'P' (50h)
      D3..D7   (not currently used)
      After sending the 'LACK Ok' reply, the IB shall also
      send <CR> + ']' (0Dh, 5Dh) to the RS-232/PC (i.e., the
      typical 'end of cmd reply' for P50Xa cmd replies.

        3: set # of stop bits
      D2   1 or 2 stop bits
      D3..D7   (not currently used)
      N.B.: this is a _temporary_ change to the IB RS-232
            configuration. The # of stop bits shall revert
            to the value specified by SO #5 at the next IB
            reset or at the next RS-232 configuration change
            (per menus, i.e. per SO's).

        The reply is either 'LACK Ok' or 'LACK fail' (except for
        the 0 and 2 cmds, of course).


Mvg
Wim.

Re:Loconet terugmelding initiele status
Hallo Wim,

Weer erg bedankt. Nu begrijp ik het. Zijn deze Uhlenbrock specificaties ergens te vinden of is wat je net geschreven hebt alles? Ik zou graag een linkje ontvangen.

Ik heb in Dortmund een Loconet terugmelder 63350 gekocht en zag dat het ook mogelijk is om door een magneetartikel adres te schakelen (report) deze melder een event genereert voor al zijn ingangen. Is dat gangbaar in Loconet land? Ik vraag dat omdat dat ook werkt zonder IB? Ik snap die andere regel van Karst namelijk nog niet met die a,b,c,D.

Laatste vraag: IB Basic en II werken via USB. Nu heb ik begrepen dat deze een seriele poort simuleren, maar dan zonder flow control. Klopt dat. Is dat niet raar? :shock:

Met vriendelijke groeten

Xander
Re:Loconet terugmelding initiele status
Xander,  krijg ik zo meteen 10% van je omzet? Of blijft het bij een dank je wel. Vergeet je ook niet om DigiTrax zometeen een deel van je omzet te betalen.

Re:Loconet terugmelding initiele status
Xander,

Als je software maakt voor een bepaald protocol, en je hebt niet alle informatie naar jouw idee, schrijf dan de fabrikant aan. Dat is wat wij ook altijd doen. Dan krijg je alle informatie netjes opgestuurd. In het LocoNet document van Digitrax staat hoe je aan het complete LocoNet protocol kunt komen. Krijg je ook gelijk te horen of je het mag gebruiken, of wat de condities zijn waaronder je het mag gebruiken.

Voor het IB/TC deel schrijf je Uhlenbrock aan.
Als je een bepaald deel dan niet begrijpt dan kunnen we altijd een poging doen om het uit te leggen.