Jump to content

Schnittstelle - Kommandos und Ereignisse - (VB)


Empfohlene Beiträge

Hallo,

es wäre toll, wenn die Spezialisten für die Schnittstelle noch ein kleines Beispiel

einstellen würden, wo z.B. die Signalstellung(ID 401) und oder die Weichenstellung

(ID 304) abgefragt würden. In Beispiel01 können ja nur die Ereignisse bei Veränderung

angezeigt und weiterverarbeitet werden.

So können auch die Anfänger(zähle auch dazu) einen Eindruck erhalten, was man mit der

Schnittstelle alles machen kann.

 

Viele Grüße, Gartenbahner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Gartenbahner,

... ich mache Dir folgenden Vorschlag:

wenn Du eine einfache kleine Anlage aufbaust und eine kurze Beschreibung mitgibst, was Dich an Steuerung interessieren würde, würde ich versuchen es als Beispiel mit der Steuerschnittstelle umzusetzen....

Gruß

EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

danke für die schnelle Antwort. Anbei kleine Anlage mit folgender Zielstellung:

-Zug soll erst fahren wenn Signal 1 auf grün steht(also ständiges senden des Kommandos [401;s1] und was mich jetzt interessiert, MBS soll ja

 alle gesendeten Kommandos zurück senden, mit je nach ID(Command)einem Rückgabewert. In diesem Fall die Stellung des S1.)

-Im Beispiel01 zur Schnittstelle wurden ja nur eine Handvoll Ereignisse mit Case select ausgewertet.

-wie kann ich nun auch statische Rückgabewerte vom MBS überprüfen(ID 401 oder ID 304 oder ID 370 usw.). Neo sagte mir, dass im Bspl.01 nur

 die unter Punkt 3. aufgelisteten Ereignisse ausgewertet werden können.

-zurück zur Anlage , wenn der Zug fährt soll er bevor er die w2 betritt S1 abfragen(grün/rot) und dann bei rot vor S1 stoppen oder bei grün

 weiterfahren.

Kurz gesagt, kann man mit Bspl.01 auch alle Commands mit Rückgabewerten zur Anzeige bringen.

Ich hoffe ich konnte mich etwas verständnisvoll ausdrücken, ist schriftlich ganz schön schwer, wie ich feststellen muss.

Mit freundlichem Gruß

Gartenbahner

Testanlage02.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Gartenbahner,

Bevor ich Dir mit einem Programm antworte, erst einmal meine prinzipiellen Überlegungen zu Deiner Testanlage, sozusagen als Trockenübung.

Die prinzipiellen Überlegung zu Kommandos und Ereignissen sind folgende:

-Ich weiß was ich möchte also kann ich gezielt Kommandos senden, das MBS weiß nicht an welchen Informationen ich interessiert bin, also liefert es mir alle Informationen in Form von Ereignissen über das, was auf der Anlage gerade geschieht ( (z.B. ID 200 Signalzustand hat sich geändert), die es kann und ich muß mir die Informationen, die ich haben möchte herausfiltern.

-Mit dem Senden eines Kommandos können zwei Ziele Verfolgt werden. Entweder ich möchte eine Abfrage machen, also ich bin interessiert an einer Information (z.B ID370 Lokgeschwindigkeit) oder ich möchte aktiv in das Geschehen eingreifen (ID 402 Signalzustand setzen).

-Ich habe einen Grund, weshalb ich ein Kommando sende. Entweder ich reagiere damit auf ein Ereignis oder ich möchte über eine eigene "Bedienoberfläche" in das Geschehen eingreifen oder etwas anzeigen.

Nun, warum erzähle ich das?

Solange ich mit Kommandos auf Ereignisse reagiere, kann ich mir eine "Steuerung" so vorstellen, als ob ich über die Ereignisverwaltung arbeite. Wenn ich mir selbst eine Oberflache schaffe, gehe ich über die Ereignisverwaltung hinaus, da die Schnittstelle mehr Möglichkeiten bietet.

Und hier bin ich an Deiner Frage angelangt, nach einer Abfrage von statischen Werten.

Zitat

-Zug soll erst fahren wenn Signal 1 auf grün steht(also ständiges senden des Kommandos [401;s1]

Da ich aktiv ein Kommando senden muß, würde dies bedeuten, daß ich ständig dieses Kommando sende um an die Information zu gelangen, wann das Signal schaltet. Nun bietet mir das MBS diese Information ja schon in Form von einem Ereignis (ID200). Also würde ich dieses Kommando nur einmal beim Start senden (ob das Signal schon auf grün steht) und dann nur noch das Ereignis auswerten. (Ist jetzt keine Kritik an Deinem Beispiel, sondern eine rein logische Überlegung...)

Zitat

  -wie kann ich nun auch statische Rückgabewerte vom MBS überprüfen(ID 401 oder ID 304 oder ID 370 usw.)

Lapidar gesagt, indem ich das entsprechende Kommando sende... hilft Dir natürlich nicht weiter...

Da kommt es auf den Grund an warum... Ist es eine Reaktion auf ein Ereignis?, habe ich ein Bedienelement (Button/Schaltknopf) auf einer Bedienoberfläche den ich betätigen muß um das Kommando zu senden?, möchte ich eine zyklische Abfrage über einen Timer/Zeitgeber?

Nun, alle drei Möglichkeiten sind über die Schnittstelle umsetzbar und Anzeigen kann man auch etwas, es muß allerdings in der Bedienoberfläche auch ein "Anzeigeelement" vorhanden sein...

... nun hoffe ich, daß ich Dich nicht zu sehr erschreckt habe... aber einfach nur ein Programm einstellen mit ein paar Erklärungen zur Funktion wolle ich nicht...

Zitat

Ich hoffe ich konnte mich etwas verständnisvoll ausdrücken, ist schriftlich ganz schön schwer, wie ich feststellen muss.

... gilt auch meinerseits. (Beispielprogramm kommt noch...)

Gruß

EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

danke für die schnelle Antwort, was du schreibst ist alles einleuchtend. Das mit dem ständigen senden (401;s1) war

nur zur Erläuterung in dem Beispielkreis gedacht und ist sonst in einem ext. Programm natürlich Unsinn. Meine

Überlegungen gingen in eine andere Richtung, es soll perspektivisch vielleicht mal mit Abfahrzeiten experimentiert

werden und einer Modelluhrzeit(Zukunft).

Warte gespannt auf dein Beispielprogramm.

 

Gruß

Gartenbahner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Gartenplaner,

ich habe mich mal entschieden, die Sache etwas langsam anzugehen...

... mit dem beigefügten VB-Projekt lassen sich "nur" die 2 Signale über die Schnittstelle schalten. Die Lok fährt also noch nicht!

Testanlage02.jpg

Mit dem Button "Connect" wird die Verbindung zur Schnittstelle aufgebaut.

Mit dem Button "Disconnect" wird die Verbindung zur Schnittstelle unterbrochen.

Mit dem Button "S1" kann das Signal "s1" umgeschalten werden, Mit dem Button "S2" kann das Signal "s2" umgeschalten werden (ID 402 schalten; ID 200 anzeigen).

Wenn der Button "Connect" angeklickt wird, wird die Farbe der Buttons "S1" und S2" auf den Schaltzustand des jeweiligen Signales gebracht (Rot=geschlossen; grün=offen) -> Anfangszustand erfassen (ID 401).

Die Buttons ändern auch ihre Farbe, wenn die Signale manuell (Leertaste) geschalten werden. Dies geschieht über die Auswertung des Ereignisses (ID 200).

... mal für den Anfang "step by step"...

... wer es noch ausprobieren möchte... müßte die Testanlage von Gartenplaner aus Beitrag #3 noch downloaden...

Gruß

EASY

 

Testanlage02-vb.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

... Fortsetzung...

Hinzugekommen ist:

- ID41 (Längeneinheit setzen) beim Betätigen von "Connect". Ist eine persönliche Note von mir, die Längeneinheit auf mm zu setzen, so muß bei Geschwindigkeitsangaben nicht umgerechnet werden (Standard ist cm)

- ID 350 (Rollmaterialliste) zur Abfrage ob und welche Lok (Name) sich auf dem Gleis "r1" befindet. Dadurch kann die Lok ausgetauscht werden ohne daß man im VB-Projekt einen konkreten Namen eingeben muß. Außerdem liefert dies eine Information, ob eine Lok gestartet werden muß, wenn das Signal "s1" auf "offen" geschaltet wird.

-ID 371 (Lockgeschwindigkeit setzen)

Zusätze:

Zug fährt durch ("s1" auf offen) -> Im Bereich von "r5" (betreten) bis "w1" (verlassen) ist die Lockgeschwindigkeit 80mm/s (damit sie nicht so über die Weicher rumpelt), Nach dem Verlassen von "w1" ist die Lokgeschwindigkeit 220 mm/s

 Zug muß anhalten ("s1" auf geschlossen) gelten folgende Lokgeschwindigkeiten -> Mit dem Betreten von "r5" - 80mm/s, mit dem Betreten von r1 - 20mm/s, mit dem Betreten von "r1a" - 0 mm/s. Mit dem Betreten von "r1a" gibt es folgende Besonderheit: Die Geschwindigkeit 0 mm/s wird der Istgeschwindigkeit zugeordnet, dadurch gibt es kein "Auslaufen" sondern die Lok stopt unmittelbar.

Da ich die Gleise etwas umgestellt habe und die Gleisnamen "r1a" und "r3a" noch hinzu gekommen sind, ist die geänderte Testanlage mit in der .zip ("Testanlage02a.mbp")

Besonderheit beim Lokwechsel: Die Schnittstelle definiert ein Rollmaterial, das sich auf einem Gleis befindet über den Mittelpunkt des Rollmaterials. Die Lok muß also so auf "r1" gesetzt werden, daß sich deren Mittelpunkt noch innerhalb von "r1" befindet. Damit es noch für  die E-lok (silber) oder das Krokodil passt, habe ich "r1" und "r3" etwas länger gemacht. (da das verwendete Gleissystem wenig Auswahlmöglichkeiten hat, möge man mir die eine oder andere "Anpassung" verzeihen...)

... gerne Rückmeldung, ob das hier Geschriebene und die Kommentare im VB-Projekt so sind, daß man es (einigermaßen) nachvollziehen kann... aber auch überhaupt...

Gruß

EASY

Testanlage02a-vb-mbp.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

bin begeistert von deinen Bemühungen, dass so verständlich rüber zu bringen.

Ich habe auch meinen Fehler(Rückgabewerte) auch schon entdeckt, war der

irrigen Meinung die Rückgabeparameter(C_Parameter(0)) werden so zurück ge-

sendet wie im Beispiel01 (zuerst ID, dann Paramerter1, dann Parameter2 usw.),

was bei mir zu Fehlerausgaben führte oder zu gar nichts, hatte immer mit Index 1 und

höher versucht auszuwerten. Jetzt klappt es, dank deiner sehr guten Erklärungen.

Nochmals vielen Dank für die Bemühungen, nun kann ich mich ja weiter mit der

Schnittstelle befassen.

Falls ich noch weitere Probleme und Fragen habe werde ich mich hier melden.

 

Mit freudigsten Grüßen

Gartenbahner

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Gartenbahner,

... Danke! und es freut mich, daß es irgendwie verständlich ist.

Eine Version habe ich noch.

In der Bedienoberfläche sind noch zwei Buttons für die Ansteuerung und Anzeige der Weichen hinzugekommen. Ich habe es mal mit Symbolen gemacht, um zu zeigen, daß es diese Möglichkeit auch gibt (... ist für Weichen auch übersichtlicher...)

So ist noch die ID304 (Abfrage Weichenstellung) und die ID 305 (Weiche schalten) hinzugekommen.

Testanlage02b.jpg

Den 2. Zweig mit "s2" habe ich auch in Betrieb genommen so daß die Lok nun auf beide Signale reagiert wenn sie auf dem entsprechenden Zweig ist...

... die Weiche "w1" wird nun auch gesteuert umgeschalten, so das "Weiche freischalten" bei der Lok nicht mehr benötigt wird.

... damit würde ich die "Aufgabenstellung" mal als erfüllt betrachten.

Am MBS-Projekt hat sich zwar nichts geändert, ist aber trotzdem in der .zip mit bei.

Gruß

EASY

 

 

Testanlage02b-vb-mbp.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...