Jump to content

Drehscheibe und VB


quackster

Empfohlene Beiträge

schon mal vorab sorry wenn mein erstes vb-projekt nicht gefällt.

zunächst die entpackte datei drehscheibe.mbp über (meine anlagen) und vorhandene anlage importieren
dann die drehscheibe.exe starten und durch [Connect] mit der geöffneten anlage verbinden.

damit alles funkioniert ist es erforderlich das die drehscheibe im "lot" liegt (rotationsachsen x=0 und y=0)

und dass das an der drehscheibe angebrachte gleis "dreh_gleis24" (das gleis ohne gleisbettung) muss zusätzlich die
rotationsachse z = 0 haben. dieses gleis hat den anschluss 24 an der drehscheibe. gezählt wird im uhrzeigersinn.

das drehgleis mit der bühne weigert sich seltsamerweise bislang noch, sich gegen den uhrzeigersinn zu drehen,
so das es nur rechts herun funktioniert. um an diesem drehgleis fest zu stellen wo vorn und hinten ist, wurde
eine animierte lampe (die rot blinkt wenn sich das gleis dreht) vorne angebracht.

damit sich das gleis dahin dreht wo man es gerne hätte, wird mit hilfe der ereignisverwaltung der varialbe "dreh_soll"
der wert zugeteilt der der nummer des gleisanschlusses an der drehscheibe entspricht.

in diesem beispiel stetzt die lok die variable auf 4 = vierter gleisanschluss und
der schalter die variable auf 10. so ist eine einfache steuerung der drehscheibe über die ereignisverwaltung möglich.

das drehen wird von der vb anwendung nach setzen der "dreh_soll" variable besorgt, die vorher gestartet wurde und im
hintergrund laufen kann.

viel spass wünscht
quackster

 

Drehscheibe.jpg

ps alle benötigten teile wurden aus dem 3d-mbs forum oder dem 3d-mbs onlinekatalog gestohlen ;-)

 

Drehscheibe.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 50
  • Erstellt
  • Letzte Antwort

Höchste Beteiligung

Höchste Beteiligung

Bilder

Hallo Quackster,

weiter so, der Ansatz ist gemacht.
Bei der Verwendungder Steuerschnittstelle ist der Einsatz der Ereignisverwaltung eigentlich überflüssig, ausser bei einem automatisch gesteuerten Zugverkehr mittels Evw.

Position und Ziel sollten in der VB-Form angezeigt und geändert werden können.

Gut so, sagt der Seehund

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster

habe deine Drehscheibe in meine im Bau befindliche Anlage integriert und alle 24 Gleise angesteuert. Die rote Kontrollleuchte habe ich durch ein Gleissperrsignal, ein Unterstand für die Bedienung und einen Arbeiter ersetzt. So ist der Anfang der Scheibe gekennzeichnet, zusätzlich wird beim Belegen des Mittelteils das Gleissperrsignal gesetzt und eine gelbe Rundumleuchte auf dem Dach der "Steuerhütte" leuchtet. Wird das Gleis wieder freigegeben setzt sich das Signal und die Rundumleuchte zurück.

Die anderen Gleise der Drehscheibe werden nach und nach angeschlossen und die Steuertaster entsprechend angebracht. Habe diese Version mal eingestellt, damit alle, die auf eine Drehscheibe mit allen Gleisen warten (so wie ich) was zu bauen haben. Das ganze lässt sich bestimmt noch verbessern aber deine Version ist toll geworden und funktioniert bei mir ganz hervorragend.

Gruß............Horst

Horsts_bahnland.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo quackster,

Zitat

schon mal vorab sorry wenn mein erstes vb-projekt nicht gefällt.

da ist nix mit "sorry"... ich finde es eher bemerkenswert das erste VB-Projekt zu veröffentlichen.

Zitat

das drehgleis mit der bühne weigert sich seltsamerweise bislang noch, sich gegen den uhrzeigersinn zu drehen,

... was hast Du denn bisher in dieser Richtung versucht?

Gruß

EASY

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo an alle,

danke für die feedbacks

--> Seehund

ja da hast du recht, ich mich nach allen problemen mit auslesen und weiter benutzen der arrays dann für den einfachsten weg entschieden. lasse aber nicht den kopf hängen und plane schon an er weiterentwicklung der drehscheiben steuerung.

grüße über die wupper aus rs :)

-->  Horst

schön das es dir gefällt un du die drehscheibe nutzen willst.
übrigens habe ich jetzt auch ein "ein Gleissperrsignal, ein Unterstand für die Bedienung und einen Arbeiter" auf meiner drehscheibe :D.
bei deiner anlage ist mir aufgefallen das die anschlussgleise der ds 22mm höher liegen. da du sie aber auf eine höhe von etwa 100mm gesetzt hast, brauchst du ja nur ein "loch zu buddeln" um die ds da einzulassen. so passen dann auch die anschlssgleise zum rest der tollen! anlage.

--> EASY

ach ich hatte richtige probleme mit den rotations angaben des mbs (-180° bis 180)

#Neo  ...ähm warum ist das so gemacht worden anstatt einfach bis 360° zu gehen

und mit so einfachen sachen wie for to next - so das ich irgend wann als es "rechts herum ging" nicht mehr daran gedacht habe auch den rückwärtsgang noch mal einzubauen.

die ganze idee für die drehscheibe ist mir bei der durchsicht deiner tollen vb-projekte gekommen. so habe ich dann angefangen deinen mini schattenbahnhof umzu stricken.

habe mich vor länger zeit mal ein wenig in excel vba versucht (aller dings nur das auswerten eingelesener textdateien. so das ich noch nichts mit windows form zu tuen hatte.

Bei dem versuch der steuerrung und anzeigen des aktuellen standes der gleisbühne (s. Seehund)- über 24 radiobutton und zur anzeige des aktuellen standes eine imagebox (? ist das so das die bilder die darin sind sich nur in 90° schritten drehen lassen?) haben sich meine probleme aufsummiert das ich erst mal alles gelassen habe.

ich denke 24 einzel bildchen werden es irgendwann auch tun.

nochmals grüße an alle

quackster

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster,

ich lege meine Gleisanlage immer 100mm hoch, so kann man Gleise, Strassen oder sonstige Dinge wenn nötig versenken oder auch mal eine Unterführung bauen. Da meine Anlagen alle nur virtuell sind spielt es keine Rolle. Mittlerweile ist das Loch für die DS gebuddelt und die Anschlussgleise liegen mit den anderen Plan. Funktioniert mit der DS alles super bei mir, baue gerade am restlichen Betriebswerk weiter.

Gruß..........Horst

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo quackster,

Zitat

Bei dem versuch der steuerrung und anzeigen des aktuellen standes der gleisbühne (s. Seehund)- über 24 radiobutton und zur anzeige des aktuellen standes eine imagebox (? ist das so das die bilder die darin sind sich nur in 90° schritten drehen lassen?) haben sich meine probleme aufsummiert das ich erst mal alles gelassen habe.

... es ist schon möglich ein Bild in VB in kleineren (definierten) Schritten drehen zu lassen und es gibt dazu auch fertige "Code-Schnipsel"... persönlich würde ich Dir aber (vorerst) davon abraten sie einzusetzen solange Du noch keine "Sicherheit" in VB hast und (ungefähr) verstehst, was da gemacht wird... gehe es lieber in kleinen Schritten an, die Du nachvollziehen kannst...

... solltest Du etwas Unterstützung brauchen... einfach nachfragen...

Gruß

EASY 

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo an alle,

nun hab ich doch tatsächlich nochwas gelernt, man solle keine unausgereiften sachen hier einstellen, den der qualitätsanspruch ist doch sehr hoch.

natürlich werde ich für mich weiter an schnittstellen-programmen arbeiten daber mir eine veröffentlichung  gründlicher überlegen.

quackster

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo quackster,

das sehe ich etwas Anders. Erst das Veröffentlichen Deiner Idee hat ja dazu gführt, das EASY dieses Projekt realisiert hat.

Warum nicht über Ideen diskutieren. Wer endlich das finale Ergebnis realisiert ist meiner Ansicht nach egal. Du hast aber den Anstoß dazu gegeben.

Viele Grüße aus Berlin

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

... danke für die Blumen... Es freut mich, wenn der eine oder andere etwas damit anfangen kann.

@quackster

Zitat

nun hab ich doch tatsächlich nochwas gelernt, man solle keine unausgereiften sachen hier einstellen, den der qualitätsanspruch ist doch sehr hoch.

natürlich werde ich für mich weiter an schnittstellen-programmen arbeiten daber mir eine veröffentlichung  gründlicher überlegen.

... so nicht!

Du hast das Projekt auf den Weg gebracht und ohne Deine Arbeit wäre ich nicht so schnell ans Ziel gekommen... (... ich weiß auch nicht, ob es jemals zustande gekommen wäre...) und so gilt der allgemeine Zuspruch auch Dir!

... und den Qualitätsanspruch gibt es sowieso nicht... (es sollte allerdings funktionieren...)

... also ruhig "unausgereift" veröffentlichen... nur so verbreiten sich Ideen...

... und wenn Du Fragen hast ober nicht mehr weiter kommst... gerne!

Damit Du weißt was ich gemacht habe... anbei noch das VB-Projekt... (wie in Deiner PN "angefordert"...)

Gruß

EASY

 

Drehscheibe-01.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster,

nobody is perfect, auch die Anderen nicht. Wir können hier immer nur dazu lernen. Um es Jedem gerecht zu machen, das schafft wohl keiner.

Auch ich baue an einer Drehscheiben-Steuerung für die kleine Feldbahn. Habe das Projekt aber noch nicht vorgestellt, da ich über 1 Jahr nichts mehr geschrieben habe und mich in die neue Befehlsstruktur der Steuerschnittstelle für das MBS erst einmal wieder einarbeiten muß.
Ob wie bei der Feldbahn nur 5 Abgänge oder wie bei der großen Scheibe sehr viele Abgänge vorhanden sind, spielt dabei eine untergeordnete Rolle, vielmehr aber das auswerten und versenden der Befehle. Hier können sehr schnell kleinere Fehler auftreten, die ein Projekt etwas wackelig aussehen lassen.

Auch stellt sich jeder User sogar eine universelle Steuerung wie hier von Easy hervorragend erstellt worden ist, immer etwas anders vor, j e nachdem wie er sie nutzen will. Es hier Jedem gerecht zu machen, wird wohl nie erreichbar sein.

Gruß Seehund

@ EASY : Habe auf meiner Testanlage den --Drehteller-- mittels "Ersetzen" mit einem neueren Modell ersetzt.
Danach funktionierte das Send_Command(("103;Drehteller;" & x1.ToString & ";" & y1.ToString & ";" & z1.ToString).Replace(",", ".")) nicht mehr,
obwohl --Drehteller-- vom Kommando 102 erkannt wurde. Erst als ich den Drehteller löschte und aus dem Katalog neu einstellte, funktionierte wieder alles.

Scheinbar wird beim Ersetzen (MBS Menü Bearbeiten) eine neue ID vergeben, obwohl der Name bleibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Seehund,

Zitat

@ EASY : Habe auf meiner Testanlage den --Drehteller-- mittels "Ersetzen" mit einem neueren Modell ersetzt.
Danach funktionierte das Send_Command(("103;Drehteller;" & x1.ToString & ";" & y1.ToString & ";" & z1.ToString).Replace(",", ".")) nicht mehr,
obwohl --Drehteller-- vom Kommando 102 erkannt wurde. Erst als ich den Drehteller löschte und aus dem Katalog neu einstellte, funktionierte wieder alles.

Scheinbar wird beim Ersetzen (MBS Menü Bearbeiten) eine neue ID vergeben, obwohl der Name bleibt.

... merkwürdig... ich habe es gerade ausprobiert... bei mir geht Kommando 103 direkt nach "Bearbeiten" -> "Ersetzen"...

Kann es sein, daß Dein Drehteller nach dem Ersetzen schon an der "richtigen" Position war? (... klingt zwar blöde... aber manchmal sind es die einfachen Dinge...)

Gruß

EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

Nein, der Drehteller war nicht an der schon richtigen Position. Drehgleis und Drehteller richten sich nach der Position von Drehkranz.
Starte iche die EXE dann prüft das Programm zuerst das Vorhandensein aller notwendigen Bauelemente.
Danach liest es die derzeitige Position mit 102 und den Winkel mit 104 des "Drehkranz".
Je nach dieser Position und Winkel werden Drehgleis und Drehteller mit 103 und 105 gesetzt.
Hat auf der Testanlage, wo alle Bauteile direkt aus dem Katalog gezogen und der EXE entsprechend umbenannt wurden, immer einwandfrei funktioniert.
Egal auf welcher Position die Bauteile lagen, setzte sich nach dem Start des Steuerprogramms die komplette Drehscheibe an der Position des Drehkranzes zusammen.

Nachdem ich das Modell des Drehkranzes von 4 auf 5 Abgänge geändert hatte ( was vom MBS auch sofort nach dem Speichern neu angezeigt wurde, funktioniert der Drehteller nicht mehr, da der Drehteller noch als Dummylok also als Rollmaterial auf der Anlage war, obwohl dieser nun als Drehteller bezeichnet war. Nach dem Ersetzen mit dem gleichen Modell als 3D-Modell funktionierte es erst, nachdem ich das ersetzte Modell gelöscht und neu auf die Platte gesetzt hatte.

Da bei dem Kommando 103 und 105 nur Befehlsnummer,Objektname und x,y,z angegeben werden, also das jeweilige Objekt nur nach dem Namen angesteuert wird, verstehe ich diesen Fehler nicht, da der Befehl für welches Objekt auch immer gilt.
Jedoch war das Drehgleis noch aus der alten Ereignisverwaltungssteuerung mit dem Drehteller verknüpft.

Hier alle Kommandos abzufragen um ein Reset für das Objekt zu erzwingen, würde jedes Script sprengen. Aber leider gibt es noch keinen Reset-Befehl für alle Parameter eines Objekts .
Scheinbar war dies der Fehler.

Danke für deine Tests sagt der Seehund

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Seehund,

... die Problemstellung interessier mich sehr... nur leider verstehe ich die Reihenholge der Abläufe und Zusammenhänge noch nicht ganz...

Hast Du mal noch irgendwie ein erklärendes Bild?

Was mir spontan noch einfällt ist folgendes:

Eine Verknüpfung ist "stärker" als das Verschieben ober Drehen eines Objektes über die Schnittstelle. Man kann zwar ein verknüpftes Objekt mit der Maus oder über die Eigenschaften verschieben oder drehen, dies geht allerdings nicht über die Schnittstelle. Hier wird das Objekt zwar verschoben bzw. gedreht aber es wird durch die Verknüpfung sofort wieder in seine ursprüngliche Lage zurückversetzt (dies gilt überigens auch für Rollmaterial, das sich auf einem Gleis befindet.) Ob eine Verknüpfung besteht, läßt sich mit Kommando 142 "erfragen".

Was verstehst Du unter "Reset-Befehl für alle Parameter eines Objekts "? Was soll auf was zurückgesetzt werden?

Gruß

EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

egal wo die 3 Objekte auf der Anlage waren, sollten diese laut Script alle die Position x=0, y=0, z=0 haben. Bei unverknüpften Objekten ist dies auch kein Problem. Hier war aber der Drehteller und das Drehgleis mit einer Dummylok (unsichtbar) verknüpft.

Ich hatte lediglich die Objektnamen ausgetauscht und vergessen die Verknüpfungen zu lösen, sowie die Dummylok zu löschen. Der Fehler lag also nicht am Ersetzen, sonder an meiner Schusseligkeit.

Gruß Seehund

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

man merkt sofort, dass man 1  1/2  Jahre nichts mehr programmiert hat und immer noch die alten Funktionen ganz weit im Hinterkopf hat. :(

Jedoch kann ich mich langsam mit der neuen Befehlsstruktur anfreunden. Obwohl ich ja nur an einer Feldbahn-Drehscheibe mit 5 Abgängen arbeite, gefiel mir das erste erarbeitete Bedienelement mit den neben einander liegenden Buttons, nachdem ich Deines gesehen habe, gar nicht mehr und arbeite es momentan um.

Ds01.jpg

Wie du siehst habe ich auf die Verbindungs-Buttons verzichtet und dafür eine Fehlermeldung eingebaut. Auch auf eine rotierende Scheibe im Display habe ich verzichtet, und stelle die 3 Positionen mittels wechselnden Backgroundimages dar.

Nun muss das Ganze noch scriptmäßig komprimiert werden und dann läufts.

Sende dir den Mischmasch vor der Veröffentlichung mal per Mail zum Testen zu, damit ich aus den von dir gefundenen Fehlern weiter lernen kann.

Gruß Seehund

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...