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

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

Thema: FC38 und der Any....

  1. #1
    Registriert seit
    09.09.2007
    Beiträge
    7
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen, ich verzweifle langsam....
    Folgendes Problem
    Ich habe ein Programmabschnitt in dem mittels des FC38
    aus einem String eine Integer gewandelt wird.
    Der String liegt in einem DB als Typ String und alles klappt prima.

    Problem:
    Ich möchte diese Funktion in einem anderen Programm verwendet,
    habe also den FC38 eingefügt mir einen DB generiert und möchte nun
    den FC mit diesem DB verbinden.
    Da fängt mein Problem an
    Ich habe am Eingan s des FC38 den Aktualwert als Symbol eingegen
    nur leider funktioniert das beim Simulieren nicht.

    Beim Vergleich mit dem alten Programm fällt mit auf das der Eingangsparameter am FC38 eine Any ist.
    Wie gebe ich den sowas ein?? und warum ein Any
    Habe auch versucht den Any einfach mal zu kopieren geht auch nicht
    Sowie diesen so zu schreiben.
    Im DB alt sowie neu sind identisch aufgebaut

    call FC38
    s : P#DB1.dbx4.0 Byte 6
    RET_VAL :=MW10

    Bitte was verstehe ich da nicht
    Zitieren Zitieren FC38 und der Any....  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Hier die Hilfe zum FC38:

    FC 38 STRNG_I

    Beschreibung

    Die Funktion FC 38 wandelt eine Zeichenkette in eine Variable im INT*Format. Das erste Zeichen in der Zeichenkette darf ein Vorzeichen oder eine Ziffer sein, die dann folgenden Zeichen müssen aus Ziffern bestehen. Ist die Länge der Zeichenkette Null oder größer als 6 oder befinden sich unerlaubte Zeichen in der Zeichenkette, findet keine Wandlung statt und das BIE*Bit wird auf "0" gesetzt. Liegt das Ergebnis der Wandlung außerhalb des INT-Zahlenbereichs, wird das Ergebnis auf den entsprechenden Wert begrenzt und das Binärergebnis BIE auf "0" gesetzt.



    Parameter Deklaration Datentyp Speicherbereich Beschreibung
    S INPUT STRING D, L Eingangszeichenkette
    RET_VAL OUTPUT INT E, A, M, D, L Ergebnis


    Der Eingangsparameter kann nur mit einer symbolisch definierten Variable belegt werden.
    Warum das so ist, weiß nur Siemens, aber du mußt einen symbolischen Parameter anlegen. Dazu muß dein DB unbedingt auch in der Symbolik ein Symbol erhalten, welches du dann am FC verwendest. Auch der Name der Variablen im DB gehört ja dann mit zu Symbolik. Hinter einem String verbirgt sich beim FC38 wohl nichts anderes als ein Typ ANY.
    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. #3
    Registriert seit
    11.10.2006
    Ort
    Verden (Aller)
    Beiträge
    530
    Danke
    31
    Erhielt 58 Danke für 49 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Warum das so ist, weiß nur Siemens, aber du mußt einen symbolischen Parameter anlegen.
    Öhm, das ist zur Abwechslung mal IEC 61131-3-konform und der FC38 stammt ja aus der IEC-Bibliothek.
    "Ein lahmer Drecksplanet ist das, ich habe nicht das geringste Mitleid" (Prostetnik Vogon Jeltz)

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von derwestermann Beitrag anzeigen
    Öhm, das ist zur Abwechslung mal IEC 61131-3-konform und der FC38 stammt ja aus der IEC-Bibliothek.
    Meinst du wirklich, das es wegen der IEC-Konformität nicht geht, an den FC38 einen nicht symbolischen Parameter anzupappen? Das wär ja das erste mal, daß Siemens sich darum schert und dann auch noch als Einschränkung? Vermutest du das oder weißt du das genau?
    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

  5. #5
    Registriert seit
    11.10.2006
    Ort
    Verden (Aller)
    Beiträge
    530
    Danke
    31
    Erhielt 58 Danke für 49 Beiträge

    Standard

    Jep.
    Die Bausteine der IEC-Bibliothek sind ja Funktionen nach besagter Norm; damit Siemens zumindest eine Zertifizierung nach IEC 61131-3 bekommt.

    Das mit den Bausteinen, steht in anhängendem pdf nicht explizit. Irgendwo habe ich davon aber gelesen. Wenn ich's finde, stell ich's hier rein.
    Angehängte Dateien Angehängte Dateien
    "Ein lahmer Drecksplanet ist das, ich habe nicht das geringste Mitleid" (Prostetnik Vogon Jeltz)

  6. Folgender Benutzer sagt Danke zu derwestermann für den nützlichen Beitrag:

    mav (27.10.2008)

  7. #6
    mav ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.09.2007
    Beiträge
    7
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich Danke Euch, so funktioniert es auch.
    Als nächstes hatte ich das Problem einen Bereich aus einem
    String auszulesen.
    Der FC 26 klappt hierfür hervoragend, wenn man nur darauf kommt
    im einzulesenden DB, in dem 2 Byte, die Stringlände anzugeben.
    Selbst bei der Hotline von Siemens konnten sie mir das nicht sagen.
    Woher weiß man sowas oder was muß man lesen um dieses Wissen zu erhalten...?

  8. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von mav Beitrag anzeigen
    Ich Danke Euch, so funktioniert es auch.
    Als nächstes hatte ich das Problem einen Bereich aus einem
    String auszulesen.
    Der FC 26 klappt hierfür hervoragend, wenn man nur darauf kommt
    im einzulesenden DB, in dem 2 Byte, die Stringlände anzugeben.
    Selbst bei der Hotline von Siemens konnten sie mir das nicht sagen.
    Woher weiß man sowas oder was muß man lesen um dieses Wissen zu erhalten...?
    Hier im Forum, wird bei Fragen zu Strings und deren Manipulation mit Step7 immer wieder darauf hingewiesen. Woher man das weiß? Keine Ahnung, gerade dazu ist das wie die Frage, wer zuerst da war, die Henne oder das Ei, ich weiß es einfach nicht mehr?

    ...

    Ah, ich hab noch was gefunden. Wenn du mal die Hilfe zum FC26 in Step7 ansiehst, dann kannst du dort bei IN bei Datentyp auf String klicken.
    Da steht dann:

    STRING

    Wenn Sie diesem Formalparameter einen Aktualparameter zuweisen, den Sie im Lokaldatenbereich des aufrufenden Bausteins definiert haben, so beachten Sie bitte:
    Vor dem FC-Aufruf müssen Sie in der temporären Variable vom Datentyp STRING das Verwaltungsbyte "maximale Länge des Strings" mit der definierten Stringlänge beschreiben.
    Das ist schon mal die eine Hälfte, oder es reicht vielleicht sogar. Ich trage immer die tatsächliche Länge auch noch ein.
    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

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

    mav (27.10.2008)

  10. #8
    Registriert seit
    01.11.2007
    Beiträge
    1.235
    Danke
    91
    Erhielt 406 Danke für 367 Beiträge

    Standard

    F1: Format des Datentyps STRING
    F1: Hilfe zum FC26

    Strings haben vor dem eigentlichen Inhalt 2 Bytes vorangestellt, das 1. Byte gibt die max. und das 2. Byte gibt die tatsächliche (aktuelle) Länge des Strings an.
    In der Hilfe zum FC26 steht drin, dass die aktuelle Länge ausgewertet wird und ggfs. ein Leerstring zurückgeliefert wird.
    Sowas sollte eigentlich auch eine Hotline wissen.

    Zum Thema STRING wirst du sicher hier im Forum auch so einiges finden.

    Grüße von HaDi

  11. Folgende 2 Benutzer sagen Danke zu HaDi für den nützlichen Beitrag:

    mav (27.10.2008),SIGGI (27.10.2008)

  12. #9
    Registriert seit
    03.11.2008
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Hier die Hilfe zum FC38:


    Der Eingangsparameter kann nur mit einer symbolisch definierten Variable belegt werden.


    Warum das so ist, weiß nur Siemens, aber du mußt einen symbolischen Parameter anlegen. Dazu muß dein DB unbedingt auch in der Symbolik ein Symbol erhalten, welches du dann am FC verwendest. Auch der Name der Variablen im DB gehört ja dann mit zu Symbolik. Hinter einem String verbirgt sich beim FC38 wohl nichts anderes als ein Typ ANY.
    was so nicht ganz stimmt weil mit einem selbstgebastelten any pointer ist sehr viel möglich in ner s7. so auch die dynamisierung von stringbearbeitung oder das dynamisierte übergeben ganzer datenfelder in einen fc. man muss nur wissen wie die kiste arbeitet und wie man den miesen compiler durch guten code compensiert. dazu muss man aber ziemlich genau wissen was der any pointer ist wie er arbeitet und das eigentlich eh fast alles ein pointer ist. nur sieht mans halt nicht sofort. ein fc eingangsparameter is auch nix anderes als ein anypointer. nur muss man sich nicht darum kümmern. wenn mans doch tut kann man einige ekelhafte limitierungen aber elegant umgehen

  13. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hpl Beitrag anzeigen
    was so nicht ganz stimmt weil mit einem selbstgebastelten any pointer ist sehr viel möglich in ner s7. so auch die dynamisierung von stringbearbeitung oder das dynamisierte übergeben ganzer datenfelder in einen fc. man muss nur wissen wie die kiste arbeitet und wie man den miesen compiler durch guten code compensiert. dazu muss man aber ziemlich genau wissen was der any pointer ist wie er arbeitet und das eigentlich eh fast alles ein pointer ist. nur sieht mans halt nicht sofort. ein fc eingangsparameter is auch nix anderes als ein anypointer. nur muss man sich nicht darum kümmern. wenn mans doch tut kann man einige ekelhafte limitierungen aber elegant umgehen
    Prima. Und nun läßt du bitte alle an deinem Wissen teilhaben und postest hier, wie man umgehen kann, daß symbolisch parametriert werden muß!

    PS: Es ging um FC38 und nicht um irgendeinen selbst geschriebenen FC. Im FAQ des Forums ist ja schön erklärt, wie das mit Any funktioniert, aber ich hoffe, du kannst nun neue Erkenntnisse beisteuern.
    Geändert von Ralle (03.11.2008 um 10:07 Uhr)
    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

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54

Lesezeichen

Berechtigungen

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