Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: Instanz in Struktur anlegen funktionier tnicht

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute.

    Ich möchte mir gerad eine Struktur für meine Antriebe in Codesys V3 aufbauen.
    Nun habe ich eine Antriebsstruktur erstellt, in welcher auch Instanzen von Bausteinen liegen.
    Die Struktur (Den Datentyp) habe ich nun in Einer Globalen Variablenliste deklariert.

    Wenn ich nun über die eingabehilfe Instanzaufrufe einfügen möchte bekomme ich die Instanzen, welche in der Struktur deklariert sind nicht angezeigt.
    Wenn ich die Instanzen direkt in der Globalen Variablenliste deklariere funktioniert es.
    Was ist da los? Kann man keine Instanzen in einer Struktur definieren?

    Kann mir jemand helfen? Danke
    Zitieren Zitieren Instanz in Struktur anlegen funktionier tnicht  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.800
    Danke
    399
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo Benson,

    hattest du nicht irgendwann mal geschrieben, dass du schon Erfahrung mit OOP hast ?
    Überleg mal, was du da machen willst - eine Struktur ist ein Bauvorschlag für etwas. Den kannst du 100 mal einsetzen - immer mit der gleichen Instanz da drin ?

    Versuch das Gleiche doch mal in Visual Studio mit C# oder VB - geht das ?

    Gruß
    Larry

  3. #3
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Also ich habe eine Struktur vom Typ Achse
    Dort liegt ein Typ (Instanz) vom Typ Achsen_FB drin. Diesen haben ich AchsenInstanz genannt.

    Wann ich jetzt Folgendes machen:

    Code:
    Achse_1 : Achse;
    Achse_2 : Achse;
    Dann kann ich doch mit:

    Code:
    Achse_1.AchsenInstanz
    Achse_2.AchsenInstanz
    2 Verschiedene Instanzen ansprechen. Das geht doch.

    Warum sollte das nicht gehen?


    Ps. Zu Bspw. C# ..... Da geht es sehrwohl
    ist doch nichts anderes, als eine Klasse verschachtelt in einer anderen.
    Geändert von Bensen83 (03.01.2013 um 17:49 Uhr)
    Zitieren Zitieren Warum geht das nicht?  

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.800
    Danke
    399
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Da hast du Recht - so hatte ich deine Frage aber auch nicht verstanden.

    Natürlich kannst du in Visual Studio (und wahrscheinlich auch in TC3) eine Variable (also ein Objekt) vom Typ meineKlasse in einer Struktur definieren. Nur instanzieren kannst du sie nur nachdem du der Struktur selbst wieder eine Zuweisung gegeben hast (und dann mußt die die Instanz auch erstmal zuweisen). Deine Frage war ja :
    Kann man keine Instanzen in einer Struktur definieren?
    Gruß
    Larry

  5. #5
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Ich habe ein ähnliches Problem einmal so gelöst:

    Meine Achse war eine Struct von Soll und Ist Werten (Drehzahl, Moment, ...)

    dann ein Array von Achsen angelegt und mit den entsprechenden Werten zum Beginn des Zyklus aus dem EtherCAT Bus die Sollwerte eingetragen,

    durch die entsprechenden SoftMotion FUBS alle einzelnen Achsen in einer Schleife nacheinander durchgemangelt (Achse[n] mit VAR InOut übergeben),

    im Anschluss ggf. die Istwerte überprüft und darauf reagiert.

    Also ein Array of Datastructs und nicht ein Array oder eine (Super) Struct of FUB Instances.

    Übrigens noch einen Spruch von meinem Programmier Vorbild: "eine struct ist eine class, bei der alle member public sind".
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Instanzen etc.  

  6. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ok hatte mich falsch ausgedrückt. Wollte einfach nur ein Datentypen von FB myFB in eine Struct myStruct packen. Das funktioniert ja auch.
    Wenn ich nun die Struct also den gesamten Datentypen instanziere: myIntanz : myStruct;
    Dann kann ich den FB auch mit myInstanz.myFBInstanz aufrufen und es funktioniert auch alles, aber ....... Wenn ich die eingabehilfe Aufrufe bekomme ich ihn nicht unter Instanzen angezeigt.
    Gibt es da einen Grund für?
    Zitieren Zitieren Falsch ausgedrückt  

  7. #7
    Registriert seit
    30.08.2005
    Beiträge
    280
    Danke
    41
    Erhielt 96 Danke für 66 Beiträge

    Standard

    Bei mir geht das, möglicherweise war das mal ein Fehler in der Eingabehilfe? Instanzen in Strukturen sind nicht sehr häufig, aber durchaus erlaubt.
    Wenn die Instanz nicht auftaucht, dann musst du halt ohne Eingabehilfe arbeiten

    instanzInStruct.PNG

  8. #8
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Wieso sind die nicht so häufig? Wie ist es denn üblich? Eine Instanz in einer globalen Variablenliste? Oder lokal?


    Also ich habe die neuste Version von Codesys und bei mir geht's nicht.
    Denke lege mir einfach ne Struktur an und deklariere die Instanzen lokal im PRG.
    Wenn ich mein Programm und die Visu auf meine Struktur anpasse und nicht auf bspw. Instanzen von Regler Bausteinen, dann kann ich es auch besser wieder benutzen, wenn andere Regler eingesetzt werden.
    Geändert von Bensen83 (05.01.2013 um 09:52 Uhr)
    Zitieren Zitieren Aha ok  

  9. #9
    Registriert seit
    30.08.2005
    Beiträge
    280
    Danke
    41
    Erhielt 96 Danke für 66 Beiträge

    Standard

    Ich habe auch die neueste Version von CODESYS. Wie schaut die Eingabehilfe denn bei dir aus?
    Und was würdest du erwarten?
    Tatsächlich erlaubt die Norm (bisher) keine FB-Instanzen in Strukturen. Vermutlich wird das deshalb nicht so häufig gemacht.
    Es spricht aber überhaupt nichts dagegen, weswegen das CODESYS auch erlaubt. Vor allem wenn du mehrere FBs hast, die gleichzeitig
    instanziert werden sollen.
    Häufiger wird man FB-Instanzen in anderen FBs finden. Strukturen und FBs sind ja verwandt, und die Idee ist, Strukturen für einfache
    Aufgaben zu verwenden (z.B. Koordinaten) und FBs für komplexe Aufgaben.

  10. #10
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ich habe nun meine Bausteininstanzen lokal im Programm deklariert und die Ein- und Ausgänge mit Variablen einer Struktur beschaltet.
    Denke es ist dann auch einheitlich, wenn ich über die Struktur zugreife und immer die Gleiche Verschachtelung vorfinde.
    Zitieren Zitieren Anderst gelöst  

Ähnliche Themen

  1. Zusätzlich zu einer Instanz noch Struktur anlegen?
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 16
    Letzter Beitrag: 05.01.2013, 09:49
  2. SCL : Instanz in Instanz
    Von Larry Laffer im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 16.02.2009, 11:01
  3. Antworten: 13
    Letzter Beitrag: 18.01.2008, 12:47
  4. Antworten: 18
    Letzter Beitrag: 22.03.2007, 07:36
  5. ProTool - Logoutzeit funktionier nicht...
    Von Jochen Kühner im Forum HMI
    Antworten: 2
    Letzter Beitrag: 10.01.2006, 09:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •