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

Ergebnis 1 bis 9 von 9

Thema: Eigenschaften - wie benutzt man sie?

  1. #1
    Registriert seit
    20.08.2007
    Beiträge
    112
    Danke
    13
    Erhielt 10 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe jetzt endlich auch mal die Eigenschaften bei Codesys V3(bzw. SoMachine Motion von Schneider Electric) genauer unter die Lupe genommen und bekomme Sie einfach nicht zum Laufen. Könnt ihr mir sagen was ich falsch mache?

    Ich habe einen FB mit der Eigenschaft myInteger mit getter und setter angelegt:
    Code:
    {attribute 'monitoring':='variable'} 
    (*ich habs auch schon mit dem Attribut 'call' oder keinen Pragma probiert. Leider funktioniert alles nicht*)
    
    PROPERTY myInteger : INT
    Dann hab ich eine Methode iterate: INT die die Eigenschaft myInteger hochzählen soll:
    Code:
    METHOD iterate : INT
    VAR_INPUT
    END_VAR
    ______________________________
    
    myInteger := myInteger + 1;
    iterate := myInteger;
    Dann hab ich den FB in einem Programm deklariert und so aufgerufen:
    Code:
    getNext : BOOL;
    next : INT;
    iterate : Iterate;
    _____________________________
    
    IF getNext THEN
        next := iterate.iterate();
    END_IF

    Aber die Eigenschaft bleibt immer auf 0. Egal was ich mache. Ich kann soviel hochzählen wie ich will.
    Ich mache ganz sicher etwas falsch. Aber ich find einfach nicht was. Seht ihr den Fehler?
    Gruß
    wonderfulworld
    Solls was Rechtes sein, oder darfs auch was von Siemens sein?
    Zitieren Zitieren Eigenschaften - wie benutzt man sie?  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    der Fehler ist, dass du es falsch benutzt ...
    Eine Eigenschaft (Property) hat z.B. den Sinn (wie eine Funktion) den Wert von im Baustein schon bekannten Variablen/Ergebnissen/Methoden zu verrechnen und ihn dir direkt auszugeben (via Get) oder (via Set) eine Variable zu beeinflussen.
    Deinen Inkrementierer kannst du aber so nicht benutzen, da er m.E. ziemlich unkontrolliert (oder unsinnig) ´hochzählt, wenn du ihn im Get-Teil der Property programmierst (oder aufrufst).

    Gruß
    Larry

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    wonderfulworld (26.06.2013)

  4. #3
    wonderfulworld ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.08.2007
    Beiträge
    112
    Danke
    13
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Hey super,
    genau so eine Antwort hab ich gebraucht .
    Solls was Rechtes sein, oder darfs auch was von Siemens sein?

  5. #4
    wonderfulworld ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.08.2007
    Beiträge
    112
    Danke
    13
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Mmh ich hab jetzt wirklich nochmal viel probiert, aber so richtig verstanden habe ich immer noch nicht, was Properties mir für einen Mehrwert bringen. Natürlich kann ich sie im Interface deklarieren und dann in der Anwendung gegen das Interface implementieren. Aber ich kann doch dann auch genauso einfach eine getMyProperty() oder setMyProperty() Methode anlegen. Die macht doch im Grunde genau dasselbe, oder?
    gruß wonderfulworld
    Solls was Rechtes sein, oder darfs auch was von Siemens sein?

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von wonderfulworld Beitrag anzeigen
    Mmh ich hab jetzt wirklich nochmal viel probiert, aber so richtig verstanden habe ich immer noch nicht, was Properties mir für einen Mehrwert bringen.
    Hallo,
    dafür bekomme ich jetzt "so aus der Hüfte geschossen" auch nichts genannt.
    Ich denke mal, es hängt von deiner Anwendung und deimer Vorstellung der Struktur ab. Im Grunde ist es (aus meiner Sicht) eine Möglichkeit, den Code eines "Monster"-FB's ein bißchen besser zu organisieren. Aber wie schon geschrieben : ich habe dafür (auf SPS-Basis) kein vernünftiges Beispiel - bei .Net (Visual Studio) wäre das schon etwas Anderes.

    Gruß
    Larry

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

    Standard

    Zitat Zitat von wonderfulworld Beitrag anzeigen
    Mmh ich hab jetzt wirklich nochmal viel probiert, aber so richtig verstanden habe ich immer noch nicht, was Properties mir für einen Mehrwert bringen. Natürlich kann ich sie im Interface deklarieren und dann in der Anwendung gegen das Interface implementieren. Aber ich kann doch dann auch genauso einfach eine getMyProperty() oder setMyProperty() Methode anlegen. Die macht doch im Grunde genau dasselbe, oder?
    gruß wonderfulworld
    Das ist genau das gleiche. Das ist nur ein "optischer" Unterschied, manche finden
    Instanz.Property := wert; schöner als Instant.SetMyProperty(Wert);

    Wirklich interessant ist das Feature für unsere OEM-Kunden. So können beispielsweise Parameter auf der Steuerung vom Anwender wie Variablen benutzt werden,
    während in Wirklichkeit ein funktionaler Zugriff erfolgt.
    Bernhard Werner
    3S-Smart Software Solutions (CODESYS)

  8. Folgender Benutzer sagt Danke zu Werner29 für den nützlichen Beitrag:

    wonderfulworld (27.06.2013)

  9. #7
    wonderfulworld ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.08.2007
    Beiträge
    112
    Danke
    13
    Erhielt 10 Danke für 8 Beiträge

    Standard

    Edit: Ups ich hab das hier wahrscheinlich gleichzeitig mit dem Vorposter geschrieben. Die Antwort über meinem Post, ist für mich schon ausreichend.


    Mein Problem ist halt, dass ich OOP bis jetzt nur von Java her kenne und da gibt es, soweit ich weiß, gar keine Eigenschaften. Das ist eine komplett neue Technologie für mich. Deshalb fällt es mir auch so schwer zu verstehen was der Sinn hinter dem ganz ist. Ich hab jetzt schon einige Artikel aus der .Net-Welt zu dem Thema gelesen, gestern den ganzen damit herumgespielt, aber so richtig versteh ich immer noch nicht wo den da der Vorteil liegt. Das wurde ja von Menschen in Codesys hineinimplementiert, die sich was dabei gedacht haben. Und jetzt einfach hergehen und Eigenschaften nicht benutzten, weil man sie nicht versteht, will ich auch nicht.
    Gruß wonderfulworld
    Geändert von wonderfulworld (27.06.2013 um 07:59 Uhr)
    Solls was Rechtes sein, oder darfs auch was von Siemens sein?

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

    Standard

    Wir haben uns das Feature von C# abgeschaut. Aber du hast es doch komplett verstanden, da steckt wirklich nicht mehr dahinter.
    Jeder Zugriff der Art:

    inst.prop := wert;

    wird implizit vom Compiler zu einem Aufruf inst.__setProp(wert); umgebaut und jeder Zugriff der Art:

    var := inst.Prop;

    wird zu var := inst.__getProp();

    Das ist alles. Gewünscht hat sich ein OEM-Kunde eine Funktionalität damit er bestimmte Parameter in seiner Steuerungskonfiguration wie Variablen darstellen kann.
    Er muss diese Parameter aber funktional auslesen. Und wir haben daraus ein allgemein verwendbares Feature gemacht.
    Bernhard Werner
    3S-Smart Software Solutions (CODESYS)

  11. #9
    wonderfulworld ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.08.2007
    Beiträge
    112
    Danke
    13
    Erhielt 10 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Werner29 Beitrag anzeigen
    Das ist alles. Gewünscht hat sich ein OEM-Kunde eine Funktionalität damit er bestimmte Parameter in seiner Steuerungskonfiguration wie Variablen darstellen kann.
    Er muss diese Parameter aber funktional auslesen. Und wir haben daraus ein allgemein verwendbares Feature gemacht.
    Dagegen spricht ja auch nichts. Vielen Dank für die Erklärung. Ihr hab mir sehr geholfen.
    Gruß wonderfulworld
    Solls was Rechtes sein, oder darfs auch was von Siemens sein?

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 16.04.2012, 22:32
  2. bedrahtete Feinsicherung wo bekommt man sie
    Von mitchih im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 13.07.2011, 14:32
  3. Wie oft kann der FC AG_LSEND benutzt werden
    Von SinusQuadrat im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.10.2010, 11:11
  4. Antworten: 12
    Letzter Beitrag: 22.02.2009, 20:00
  5. Antworten: 12
    Letzter Beitrag: 28.08.2007, 10:03

Lesezeichen

Berechtigungen

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