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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Codesys Objektorientiertes Programmieren

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Werner29

    Danke für die Klärung,

    die REF Lösung ist schon verstanden, aber ich habe eine Safety Anwendung (SIL 2 in ST) zu programmieren und da sind mir mit internen Vorschriften Referenzen (auch als "expert") verboten. Spätestens von meinem Review Partner bekomme ich dann "geht nicht" beschieden. Sonst würde ich durchweg VAR_IN_OUT verwenden.

    Das Performance Problem ist hier auf mich den Applikations Programmierer verschoben, denn dann muss ich alles temporär kopieren oder für jedes benötigte Element der struct Property eine eigene Get Property anlegen.
    In C# ist die Dereferenzierung einer Property Struct erlaubt. Das ist eine Frage, wie tief (intelligent) der Compiler den Ausdruck analysiert, denn er weiss ja, dass ich nur das eine Element der Struct an dieser Stelle benötige.

    Noch ein Hinweis allgemein zur OOP: Wenn ich Methoden etc. anlege, sind sie aus "Gründen der Kompatibilität" automatisch PUBLIC, es wäre defensiver sie PROTECTED oder PRIVATE zu machen, ggf. könnte man so etwas in den Options einstellen, aber zumindest vom Editor automatisch das Schlüsselwort PUBLIC einfügen.

    Bitte das nicht als Verriss ansehen, ich muss auch TIA manchmal einsetzen und da hat Codesys Lichtjahre Vorsprung.
    Als Freelancer immer auf der Suche nach interessanten Projekten.

  2. #22
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    @Werner

    Das liest sich nun aber, als ob man die erste beschriebene Methode auch gleich ganz weglassen könnte?
    Gibt es einen Fall, für den die dann besser geeignet ist?

    Eigentlich sind das die Sachen, über die ich mir gerade bei einer SPS nicht den Kopf zerbrechen möchte. Ich hätte da Angst, durch eine fasche Verwendung eine Maschine zu zerstören.
    Vielleicht bin ich da zu konservativ, aber ich halte solche Dinge in einer Maschine per se für unsicher, da muß man schon ganz genau wissen, was man macht oder?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

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

    mawa (21.04.2015)

  4. #23
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard

    Hallo,

    in Thread #8 steht das:
    Das mag zunächst umständlicher wirken, aber nur dadurch kann man zur Laufzeit das eine Objekt gegen ein anderes austauschen, weil es eben dieselbe Schnittstelle bietet.

    Wie macht man das in der Praxis?

    MfG

    CAS
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!

  5. #24
    Registriert seit
    13.01.2010
    Beiträge
    56
    Danke
    11
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von Werner29 Beitrag anzeigen
    Hallo toto45,

    1. Variablen in VAR .. END_VAR sind grundsätzlich nicht von aussen zugreifbar. Deswegen wie schon von StructuredTrash geschrieben VAR_INPUT oder VAR_OUTPUT-Variablen verwenden.
    2. Properties werden spätestens dann notwendig, sobald man mit Interfaces arbeitet. Properties sind aber Code und per default werden diese nicht gemonitort, denn wenn der Code beim Monitoring einen Seiteneffekt produziert dann könnte das sehr unangenehm sein.
    Wenn man sich sicher ist, dass durch die Ausführung des Properties kein Unsinn passieren kann, dann kann man das Monitoring mit folgendem Attribut einschalten:

    {attribute 'monitoring':= 'call'}
    PROPERTY Dingsbums: INT


    Bernhard
    Hallo Bernhard,

    von welchen Seiteneffekten ist hier zum Beispiel die Rede? Das Einzige, das mich stört an den Properties ist, dass sie nicht gemonitort werden. Ich möchte sie aber auch ungern durch attribute aktivieren, wenn es
    triftige Gründe gibt, das nicht zu tun.

    Viele Grüße

    Dax

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

    Standard

    Hallo Dax,

    das Property wird dann tatsächlich ausgeführt, um den Wert zu ermitteln.
    Nehmen wir an du hast ein Property NextId, das folgendermassen implementiert ist:

    NextId := _locVar;
    _locVar := _locVar + 1;

    dann wird der Member _locVar in der Instanz deines FBs allein dadurch hochzählen, dass du ihn im WatchFenster anschaust.
    Das würde dann tatsächlich alle 200 ms hochgezählt werden, das ist der typische Zyklus für das Variablen-Monitoring.
    Wenn du weist, dass du keinen Seiteneffekt in dem Property hast, dann kannst du das Attribut ohne Probleme setzen.
    Bernhard Werner
    3S-Smart Software Solutions (CODESYS)

  7. #26
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard

    Hallo Werner,

    hattest du meine Frage gelesen in #23 ?
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das Demo Beispiel zeigt genau das. Darin kommt die folgende Deklaration vor:

    m_units : ARRAY [0..10] OF IUnit;

    die Elemente von m_units werden zur Laufzeit mit konkreten Instanzen belegt die jeweils einen unterschiedlichen Typ haben, aber gleichartig behandelt werden über die gemeinsame Schnittstelle.
    Mit herkömmlichen Mitteln ist sowas nicht möglich.
    Bernhard Werner
    3S-Smart Software Solutions (CODESYS)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 15.10.2012, 09:44
  2. Ablaufsequenz programmieren in CodeSys
    Von ElektoEsel im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.02.2011, 22:13
  3. CoDeSys programmieren
    Von Jumpinjack im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 15.12.2010, 15:01
  4. Codesys Programmieren
    Von Shierasse im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 15.12.2009, 09:00

Lesezeichen

Berechtigungen

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