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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Ergebnis von DI_String in Temp-Var

  1. #11
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hatte ich so auch probiert und dabei aber nur im baustein online geguckt.
    ich hatte erwartet das ich in der anzeige des akkus nach dem srd die 12 stehen habe.
    dem ist aber nicht so. wenn man die var lädt steht da die erwartete 12.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  2. #12
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    so langsam zweifel ich an meinen kenntnissen.

    L LB [AR1,P#1.0] sollte eigentlich die tasächliche stringlänge liefern, liefert mir aber schon das erste zeichen. 43 also das plus.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von volker (30.08.2012 um 15:26 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #13
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    voriges hat sich erledigt.
    aus irgendeinem grund stimmte das ar1 nicht mehr (was man im status nicht sehen kann)

    wenn ich nach dem aufruf des fc501 LAR1 P##t_string erneut aufrufe passt alles.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von volker (30.08.2012 um 16:04 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  4. #14
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    Um nochmal auf die Zahl 2 zurückzukommen. Nach einem
    Code:
    TAR1
    SRD 3
    steht natürlich nicht "2" im Akku, da das Laden des AR1 mittels
    Code:
    LAR1 P##t_string
    auch keinen typlosen Pointer, sondern einen auf die Lokaldaten geladen hat, nämlich: 16#86000010.

    Also ergibt das Zurückrechnen eine 16#10C00002. Zum Erhalten des typlosen Pointers sollte man immer vorher alles oberhalb von Bit 18 wegmaskieren:
    Code:
    TAR1
    L16#0007FFFF
    UD
    oder eben nach dem Schieben nur das untere Wort verwenden:
    Code:
    TAR1
    SRD 3
    L 16#ffff
    UW

  5. #15
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    Und jetzt noch zum Problem mit dem SFC20:

    Dein erster Versuch war ja fehlgeschlagen, da du als Typ die 86 (Lokaldaten) und nicht die 87 (Vorgängerlokaldaten) verwendet hattest wie Gebs geschrieben hatte.

    Dein zweiter Anlauf kopiert etwas unsinnige Daten, da du jetzt versuchst den gesamten temporären String als Bytefolge in den Ziel-String zu kopieren. Dabei werden auch die Längenbytes des temporären Strings als Nutzzeichen in den Zielstring kopiert.
    Entweder String nach String kopieren (also den qany als Pointer vom Typ String aufbauen) oder nur die eigentlichen Nutzdaten des temporären Strings als Bytes in den Ziel-String kopieren (so, wie du es im ersten Versuch probiert hast, der mit dem 86/87 Problem fehlgeschlagen war). Also bei einem Anypointer des Typs Byte als Startadresse des Pointers nicht den Anfang des Strings (die Längenbytes), sondern erst die Adresse des ersten Zeichens angeben, als Länge dann (in deinem Falle) maximal die 11 Bytes.

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

    Standard

    Zitat Zitat von hovonlo Beitrag anzeigen
    Um nochmal auf die Zahl 2 zurückzukommen. Nach einem
    Code:
    TAR1
    SRD 3
    steht natürlich nicht "2" im Akku, da das Laden des AR1 mittels
    Code:
    LAR1 P##t_string
    auch keinen typlosen Pointer, sondern einen auf die Lokaldaten geladen hat, nämlich: 16#86000010.

    Also ergibt das Zurückrechnen eine 16#10C00002. Zum Erhalten des typlosen Pointers sollte man immer vorher alles oberhalb von Bit 18 wegmaskieren:
    Code:
    TAR1
    L16#0007FFFF
    UD
    oder eben nach dem Schieben nur das untere Wort verwenden:
    Code:
    TAR1
    SRD 3
    L 16#ffff
    UW
    Wie ich schon in #10 schrieb, geht das auch einfacher, indem man das Ergebnis von SRD 3 gleich in eine einfache INT transferiert, Da wird das High-Word mit der Typinfo einfach unter den Tisch fallen gelassen.
    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

  7. #17
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    Zitat Zitat von hovonlo Beitrag anzeigen
    Und jetzt noch zum Problem mit dem SFC20:

    Dabei werden auch die Längenbytes des temporären Strings als Nutzzeichen in den Zielstring kopiert.
    das war nur ein test. nicht das was ich dann wirklich machen will.
    nicht desto trotz hätte die sfc aber den gesamten string kopieren sollen.
    der sfc ist es völlig egal was sie kopiert. ich kopiere einfach 13 byte und gut ist. oder ist das nicht so?
    die sfc hat aber gar nichts gemacht.

    poniterdadresse als int:
    so wie ralle das geschrieben hat klappt das gut.
    ich habe da nur falsch im status beobachtet und deshalb was falschen gesehen.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #18
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    aus irgendeinem grund stimmte das ar1 nicht mehr (was man im status nicht sehen kann)
    Die Adressregister kann man im AWL-Programmstatus beobachten.
    einblenden: rechter Mausklick im AWL-Programmstatus-Bereich > Einblenden > Adressregister 1
    ausblenden: rechter Mausklick in die auszublendende Spalte > Ausblenden

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #19
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Die Adressregister kann man im AWL-Programmstatus beobachten.
    weiss ich schau dir das bild im post 12 an. da bleibt das ar1 auf 2.0
    im bild des post 13 auch schön zu sehen bei
    TAR1
    LAR1
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  10. Folgender Benutzer sagt Danke zu volker für den nützlichen Beitrag:

    PN/DP (31.08.2012)

  11. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von volker Beitrag anzeigen
    weiss ich schau dir das bild im post 12 an. da bleibt das ar1 auf 2.0
    im bild des post 13 auch schön zu sehen bei
    TAR1
    LAR1
    Ja richtig, ich hätte mir Deine Screenshots vorher ansehen sollen ... da sehe ich, daß Du es weißt.

    Im Bild von #13 ist deutlich zu sehen, daß der AR1-Status bei TAR1 falsch angezeigt wird. (ich meine, das ist ein Bug von PLCSIM)

    Allerdings wundere ich mich nicht, daß das AR1 nach dem Aufruf eines anderen Bausteins verändert ist. AR1 wird bei CALL nicht automatisch gesichert und wiederhergestellt. Das muß man ggf. selber machen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 13.04.2011, 07:22
  2. Antworten: 3
    Letzter Beitrag: 13.02.2011, 22:33
  3. Ergebnis CDT von SFC1 in DB ablegen
    Von rapser im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 17.02.2010, 15:02
  4. Wie in Step7 #temp- Var anzeigen ?
    Von mega_ohm im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 03.09.2009, 07:43
  5. Antworten: 6
    Letzter Beitrag: 07.03.2007, 14:28

Lesezeichen

Berechtigungen

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