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

Ergebnis 1 bis 9 von 9

Thema: Diskussion, Meinungen erwünscht !! (ST)

  1. #1
    Registriert seit
    04.09.2014
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Schönen guten Abend,


    wir sind gerade am wild diskutieren und bräuchten mal einige Meinungen. Ist es im strukturierten Text (ST) möglich den Name eines Structelements auszulesen? Zum Beispiel:


    struct_beispeil: STRUCT
    var1 : BOOL;
    var2 : BOOL;
    var3 : BOOL;
    END_STRUCT


    Irgendwie das erste Element var1 der struct_beispiel auszulesen. Die Länge und der Datentyp ist ja möglich aber der Variablen Name.


    Wir sind auf eure Vorschläge und Meinungen sehr gespannt.



    Grüße
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien
    Geändert von Joh90 (21.09.2014 um 02:18 Uhr)
    Zitieren Zitieren Diskussion, Meinungen erwünscht !! (ST) Programmier Aufgabe  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Da wir hier im IEC-Bereich sind: Nein, es gibt dort keine Introspektion. So würde man es nennen wenn im Programm Informationen über das eigene Programm abgerufen werden können.

    Bei Programmen in der Automatisierungsumgebung sehe ich keinen sinnvollen Einsatzzweck für so etwas. Siemens versucht beim TIA-Portal und den neuen Steuerungen Anweisungen einzubauen mit denen das evtl. möglich wäre.

    Warum würdest du so etwas benötigen?

  3. #3
    Joh90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2014
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    dank Thomas_v2.1 bin dabei eine struct mit x Werten an einen Input Eingang eines FBs zu übergeben. Nur leider wird mit dem Zeiger das erste Element, zweite Element, dritte Element, usw. an die erste Stelle der struct im FB geschrieben. Was gar kein Problem wäre wenn die struct fest wäre. Mein Wunsch ist es aber irgendeine struct zu übergeben, welche dann automatisch im FB ausgewertet wird. Das wäre z.B. ich definiere eine Struct mit dem Befehl: go, wait, stop, drive -> diese übergebe ich mit einem Zeiger dem FB und dieser setzt automatisch die richtigen Befehle. Was natürlich genauso funktionieren soll, wenn ich eine Struct definiere mit: stop und drive (andere Reihenfolge und weniger Befehlen).
    Vielleicht hast du eine Idee?
    Danke für deine Antwort.

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Vielleicht verstehe ich das falsch was du vorhast, aber du könntest eine struct verwenden welche z.B. ein Integer für den Befehl beinhaltet (go, wait, stop, drive, etc.) und dann einen Parametersatz der je nach Befehl unterschiedlich ausgewertet wird. Der grundsätzliche Aufbau der Strukturen sollte dann identisch sein, nicht verwendete Parameter eines Befehls werden dann ignoriert.

    Bei Codesys gibt es soweit ich weiß auch das Konzept eines unbestimmten Zeigers, der man dann zwecks besseren Zugriffs auf eine entsprechende Struktur casten kann (wie man es aus Sprachen wie C kennt). Ich persönlich sehe solche Konstrukte in einer SPS aber eher ungern.

  5. #5
    Joh90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2014
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich finde deinen Vorschlag sehr interessant! Mich würde aber interessieren, ob bei einem Parametersatz ohne Kenntnisse über den FB einfach die ParameterReihenfolge getauscht werden könnte oder ob z.B. ein Parameter einfach gelöscht werden könnte und dadurch jeder weiterer Parameter in der Task-Structreihenfolge um einen Eintrag nach unten/hinten verrutschen könnte. Im Grunde soll ein Parametersatz übergeben werden, aber mit verschiedener Reihenfolge und mit verschiedener Anzahl. Jetzt ist es so, dass wenn ich keine Kenntnisse über die struct in der Task habe, nicht weiß auf welche stelle in die struct im FB geschrieben wird. Beispiel: also die Namen in der Task-struct sind var1,var2,var3,var4.... im FB ist eine struct definiert mit "REFERENCE TO" und den Variablen "var1,var3,var2,var5" . Wenn nun in der Task-struct var2 = TRUE ist ==> FB-struct var3 =TRUE. Ich will aber, dass eine Art Sortierung der Variablen stattfinden, damit var1 = var1, var2 = var2, var3 = var3, var4 = var 4. Jetzt ist es so: erstes Element = erstes Element, zweites Element = zweites Element, drittes Element = drittes Element usw. die Variablen Namen der Task-struct sind nicht identisch mit denen der FB-struct ( bei FB-struct := ACCESS ADR (Tast-struct)).

    Ich hoffe ich konnte das verständlich rüber bringen.
    PS ich nutze AS.4.0

  6. #6
    Joh90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2014
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe zum Verständnis einige Bilder hinzugefügt.

  7. #7
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.485
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    So wie das verstehe willst du irgendwelche Abläufe dynamisch / einstellbar machen.

    Für solche Zwecke erstelle ich eine UDT

    Code:
    cmd : INT;
    subcmd : INT;
    Para1 : DINT;
    Para2 : DINT;
    Para3 : DINT;
    ...
    Die eigentliche Ablauf steht dann in einem (oder mehreren) DB als Array [1..x] of UDT.

    In den entsprechenden FBs wird dann eben cmd und subcmd entsprechend decodiert.

    Beispiel:
    Code:
    cmd=10 Positioniere Achse absolut
    subcmd=01 X-Achse
    subcmd=02 Y-Achse
    subcmd=04 Z-Achse
    Parameter1=Position
    Parameter2=Speed
    
    cmd=30 Starte Bearbeitung
    subcmd=01 Bohren
    subcmd=02 Gewindeschneiden
    Parameter1=Tiefe
    
    ...
    Ist natürlich nicht so elegant, wie in heutigen Hochsprachen, funktioniert aber.
    Durch die Verwendung von Arrays sind Dinge wie Einfügen, Sortieren, Gruppieren ohne Riesenaufwand möglich.

    Gruß
    Dieter

  8. #8
    Joh90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2014
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Dieter, ich programmiere in AS 4.0 . Leider finde ich dort keine User Defined Types. Wo hast du den code denn geschrieben?

  9. #9
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.485
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Joh90

    Für das Verfahren spielt es eigentlich keine Rolle ob du UDTs hast.
    Ich kenne AS 4.0 nicht und weiss nicht, ob z.b. ein Array of struct möglich ist.
    Im Prinzip lässt sich das Verfahren mit jeglicher Form von indirekter Adressierung / Zeigerzugriffen realisieren.
    Ist halt nur eine Frage des Komfort bzw. des Aufwands.

    Gruß
    Dieter

Ähnliche Themen

  1. Meinungen/Kaufberatung zu grafischem Logger
    Von OWP im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 16.01.2014, 09:33
  2. Fertige Beschriftung auf den Bus-Klemmen erwünscht?
    Von Chräshe im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 28.09.2011, 00:29
  3. Programmierwettbewerb: Diskussion
    Von Kai im Forum Stammtisch
    Antworten: 51
    Letzter Beitrag: 20.06.2011, 10:05
  4. Meinungen bzw.Erfahrung mit Wago
    Von viech im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 23.02.2008, 23:30
  5. Umfrage/Meinungen zu Sensorhersteller
    Von cmm1808 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 31.05.2006, 06:56

Stichworte

Lesezeichen

Berechtigungen

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