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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Unbekannter Variabeltyp

  1. #1
    Registriert seit
    08.08.2007
    Ort
    Süd-Süd-Deutschland (CH)
    Beiträge
    220
    Danke
    29
    Erhielt 27 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Bin gerade an einer Funktion dran, die unter Anderem eine Plausibilitätsprüfung von Variabelwerten durchführen soll.
    Die Funktion hat einige Eingangsparameter, auch solche für genau diese Plausibilitätsprüfung.
    Leider weiss ich ja jetzt noch nicht, welchen Variabeltyp der Baustein dann effektiv vergleichen muss.
    Hängt ganz von der Anwendung ab.

    So wäre es doch schön, wenn der Eingangsparameter im Typ undefiniert wäre. Aber sowas in der Art von Object kenn ich von CoDeSys nicht.

    Da erliegt man doch Glatt der Versuchung, den MEMORYCMP einzusetzen, die Eingangsparameter als Word zu deklarieren und dem Bausteinbenutzer
    halt vorzugeben seine Eingänge als ADR(Variabelname) zu deklarieren und die vom Typ abhängige Speichergrösse anzugeben (Int = 2, Real = 4 usw).

    Würde ja eigentlich funktionieren. Nur kann ich ja dann die Prüfvariabel nicht mit dem Grenzwert überschreiben. Was in dieser Plausibilitätsprüfung eigentlich vorgesehen wäre.

    Hat jemand noch eine Idee, wie sowas realisiert werden könnte?


    Grüsse
    "Hätte ich das gewusst, hätte ich einen anderen Beruf gelernt." - "Hast Du gelernt diese Scheisse?"
    (Zitat aus Knockin' on Heaven's Door)

    "Kommentare? Wieso? Steht doch alles im Code..!"

    Avatar erstellt auf www.sp-studio.de
    Zitieren Zitieren Unbekannter Variabeltyp  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,
    kennt Codesys nicht auch den Parametertyp ANY ?
    Der sollte das leisten können ...

    Gruß
    Larry

  3. #3
    Avatar von Schnick und Schnack
    Schnick und Schnack ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.08.2007
    Ort
    Süd-Süd-Deutschland (CH)
    Beiträge
    220
    Danke
    29
    Erhielt 27 Danke für 21 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    kennt Codesys nicht auch den Parametertyp ANY ?
    Danke für die ANtwort.
    Scheint nicht der Fall zu sein. Zumindest kenne ich Ihn nicht und finde in der Hilfe auch nichts darüber

    Gruss
    "Hätte ich das gewusst, hätte ich einen anderen Beruf gelernt." - "Hast Du gelernt diese Scheisse?"
    (Zitat aus Knockin' on Heaven's Door)

    "Kommentare? Wieso? Steht doch alles im Code..!"

    Avatar erstellt auf www.sp-studio.de

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

    Standard

    Kommt drauf an welche Codesys Version du verwendest. Ich weiß nicht ob die aktuelle Version mit Objektorientierung sowas wie Funktionsüberladung kennt. Bei den 2.x Versionen gibt es sowas für eigene Funktionen zumindest nicht.

    Dein konkreter Anwendungsfall hört sich doch nach der Verwendung von LIMIT() an. Das ist eine integrierte Funktion die mit allen numerischen Typen arbeitet (ANY_NUM). Wobei ich schätze dass es kein echter Funktionsaufruf ist, sondern ein Makro was während des Compilier-Vorganges je nach Datentyp der Parameter eingesetzt wird.

    Der Siemens-Any Pointer ist eigentlich das was du selber programmieren willst. Nur dass dort der Zeiger und der Datentyp zusammengesetzt sind. Der einzige Vorteil beim S7 Any-Pointer ist der, dass wenn man symbolisch programmiert dieser automatisch den richtigen Datentyp enthält (Siemens kennt aber auch nicht so viele Typen wie Codesys).

    Falls du bei deiner Auswertung einen Wert nur auf 0 setzen willst, könntest du am Speichergrößen-Eingang auch den Sizeof() Operator verwenden, da die 0 bei allen numerischen Datentypen gleich aussieht.

    Ob das unbedingt sinnvoll ist wenn man die Typüberprüfung des Compilers durch die Verwendung von Zeigern aufgibt ist eine andere Frage.

  5. #5
    Avatar von Schnick und Schnack
    Schnick und Schnack ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.08.2007
    Ort
    Süd-Süd-Deutschland (CH)
    Beiträge
    220
    Danke
    29
    Erhielt 27 Danke für 21 Beiträge

    Standard

    Ja es ist die 2er Version. Da gibt es noch keine Möglichkeit Überladungen zu schreiben.


    Ob das unbedingt sinnvoll ist wenn man die Typüberprüfung des Compilers durch die Verwendung von Zeigern aufgibt ist eine andere Frage.
    Hast schon recht. LIMIT ist die Funktion welche in meiner Funktion aufgerufen wird. Aaaber,
    ich muss die LIMIT-Funktion ja auch mit Variabeln füttern, und die kämen aus der Schnittstelle meiner eigenen Funktion.
    Und da ist nun die Problematik der Typbestimmung. Prinzipiell geht es echt nur um die Schnittstelle. Den Vergleich macht
    mir ja dann die LIMIT-Funktion.

    Ich dachte nur am MEMORYCMP da ich dort die Adresse als Schnittstelle übernehmen könnte
    "Hätte ich das gewusst, hätte ich einen anderen Beruf gelernt." - "Hast Du gelernt diese Scheisse?"
    (Zitat aus Knockin' on Heaven's Door)

    "Kommentare? Wieso? Steht doch alles im Code..!"

    Avatar erstellt auf www.sp-studio.de

  6. #6
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Da gibt es wohl keine elegante Lösung. Also entweder eine eigene Funktion für jeden Datentyp, oder einen FB mit eigenen INPUT-/OUTPUT-Variablen und einer eigenen Aufruf-Aktion für jeden Typ. Nur für die Grenzwerte reicht dann eine Variable vom Datentyp mit dem grössten Wertebereich. Die notwendigen Typumwandlungen kann man dann in die Aktionen packen.

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    ... jetzt bin ich aber enttäuscht ... es gibt keinen ANY oder ein Pendant dazu ...!?
    In dem Fall käme der (etwas unelegante) Vorschlag von ST allerdings einer Überladung noch am Nächsten ...

  8. #8
    Avatar von Schnick und Schnack
    Schnick und Schnack ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.08.2007
    Ort
    Süd-Süd-Deutschland (CH)
    Beiträge
    220
    Danke
    29
    Erhielt 27 Danke für 21 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... jetzt bin ich aber enttäuscht ... es gibt keinen ANY oder ein Pendant dazu ...!?
    In dem Fall käme der (etwas unelegante) Vorschlag von ST allerdings einer Überladung noch am Nächsten ...

    Hast Du was gegen Überladungen??
    Also ich finde das eine Top Sache. Gerade in diesem Fall wäre es super. Wenn es dann möglich wäre
    "Hätte ich das gewusst, hätte ich einen anderen Beruf gelernt." - "Hast Du gelernt diese Scheisse?"
    (Zitat aus Knockin' on Heaven's Door)

    "Kommentare? Wieso? Steht doch alles im Code..!"

    Avatar erstellt auf www.sp-studio.de

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Nein ... habe ich nicht - ganz im Gegenteil.
    In der Siemens-Welt geht es halt nur nicht und in (zumindestens deiner) Codesys-Welt anscheinend auch nicht.
    Den Vorschlag von ST habe ich so aufgenommen, dass er einen Baustein macht mit mehreren unterschiedlichen Input-Variablen von denen die jeweils beschaltete weiterverwendet wird - das ist nur eine Pseudo-Überladung (leider).

    Gruß
    Larry

  10. #10
    Avatar von Schnick und Schnack
    Schnick und Schnack ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.08.2007
    Ort
    Süd-Süd-Deutschland (CH)
    Beiträge
    220
    Danke
    29
    Erhielt 27 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich kenn es halt auch nur aus dem VB.Net. Ist haltz schon ne schöne Sache.
    Mal schauen ob es in CoDeSys 3 geht.

    Laut ST schon, sofern ich ihn richtig verstanden habe.
    "Hätte ich das gewusst, hätte ich einen anderen Beruf gelernt." - "Hast Du gelernt diese Scheisse?"
    (Zitat aus Knockin' on Heaven's Door)

    "Kommentare? Wieso? Steht doch alles im Code..!"

    Avatar erstellt auf www.sp-studio.de

Ähnliche Themen

  1. Unbekannter Datenbausteinwörter in Referenzdaten
    Von Buschmann im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.04.2010, 11:13
  2. Antworten: 0
    Letzter Beitrag: 19.09.2006, 09:52
  3. Antworten: 0
    Letzter Beitrag: 30.09.2005, 11:13

Lesezeichen

Berechtigungen

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