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

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

Thema: vom FB auf temporäre Lokaldaten des OB´s zugreifen

  1. #1
    Registriert seit
    30.08.2012
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich versuche von meinem FB aus, der in irgendeinem OB aufgerufen wird, mittels Any-Pointer auf die temporären Lokaldaten zuzugreifen.

    In dem Fall interessiere ich mich für die Zykluszeit des OB´s (OBxx_EXC_FREQ). Ich versuche demnach mittels Any-Pointer auf diesen Adressbereich zu zeigen und darauf über den SFC20 den Wert des Adressbereichs in einer temporären Variable im FB abzuspeichern.

    Zum besseren Verständnis hier noch einmal der Code:

    LAR1 P##Zeiger
    L B#16#10 // Syntax-ID
    T LB [AR1,P#0.0] // ablegen im Any Pointer
    L B#16#5 // Datentyp-ID
    T LB [AR1,P#1.0] // ablegen im Any Pointer
    L W#16#1 // Wiederholungsfaktor
    T LW [AR1,P#2.0] // ablegen in Any-Pointer
    L W#16#0 // DB-Nummer laden
    T LW [AR1,P#4.0] // ablegen im Any-Pointer
    L DW#16#87000000 // Bereichserkennung
    L 10 // Anfangsadresse OB
    SLD 3 // Platz für die Bitadressen schaffen
    OD // ODER-Doppelwort
    T LD [AR1,P#6.0] // ablegen in Any-Pointer

    CALL "BLKMOV"
    SRCBLK :=#Zeiger
    RET_VAL:=#fehler
    DSTBLK :=#TA

    Vielen Dank für eure Hilfe!

    Gruß makken
    Geändert von makken (12.11.2012 um 09:28 Uhr)
    Zitieren Zitieren vom FB auf temporäre Lokaldaten des OB´s zugreifen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.168
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Übergebe die benötigten Variablen über die Aufrufschnittstelle des FB. Oder über globale Variablen.

    Erstens: Das "rummachen" in den Lokaldaten des aufrufenden Bausteins ist ein äußerst schlechter Programmierstil. Zweitens kann Dein FB nicht wissen, von welchem "irgendeinem" Baustein er aufgerufen wird und kennt demzufolge die Lokaldaten des aufrufenden Bausteins nicht (bzw. nicht sicher). Außerdem kann man den SFC20 nicht zum Lesen der Vorgänger-Lokaldaten benutzen, das funktioniert nicht.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    makken ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.08.2012
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Harald!

    Das Problem habe ich ja auch zunächst über die Aufrufschnittstelle des FB gelöst. Klar ist mir bewusst, dass das ein schlechter Programmierstil ist. Mein Projekt wird jedoch so aufgebaut das dieser Baustein nicht tiefer verschachtelt wird und somit die Lokaldaten immer die des OB´s sein werden.

    Das Problem mit dem SFC20 habe ich nicht so ganz verstanden. Meinst du damit das ich mit dem Zeiger, wenn dieser auf die Lokaldaten zeigt, nicht mittels SFC20 kopieren kann?

    makken

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Was ist schlecht daran die Lokaldaten in dem jeweiligen Baustein (OB) auszulesen und über einen DB oder was auch immer anderen Bausteinen zur Verfügung zu stellen?

  5. #5
    Registriert seit
    22.12.2006
    Beiträge
    43
    Danke
    0
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo makken,


    zum SFC20.

    Beispiel: Du ruftst im FB 1 den SFC 20 auf und willst die Lokaldaten (Tempvariablen) irgendwohin kopieren, dann mußt Du als Pointerkennung die 27 (glaub ich, mußt Du in der Hilfe noch mal nachlesen). Dann verweißt der SFC20 während der Bearbeitung auf die Lokaldaten des vorherigen Bausteins. Hier FB 1.
    Du müßtest aber auf die Lokaldaten des vorvorherigen Bausteins (OB xy) zu greifen. Dafür gibt es keine Kennung!

    Mit freundlichen Grüßen

    Dominik

  6. #6
    makken ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.08.2012
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    so wie ich das jetzt richtig verstehe, kann ich überhaupt nicht über den SFC20 den Inhalt des Adressbereichs, wo mein Pointer draufzeigt (die Zykluszeit des OB´s), kopieren?

    Sitze an dem Problem wirklich schon einige Tage dran. Ich will den Baustein in CFC nutzen, und da wäre es für mich persönlich besser die Zykluszeit des OB´s, wo der FB aufgerufen wird, in dem FB herauszufinden ohne ein zusätzliche Schnittstelle zu nutzen.

    Gruß makken

  7. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Das funktioniert mit einem REAL-Eingang dessen Attribut
    S7_sampletime = true

    ist.

    Nach dem Übersetzen schreibt CFC den Zeitwert des aufrufenden OB's hin.

    PS: so funktionieren alle Bausteine die eine Zeitabhängigkeit haben.
    Geändert von borromeus (12.11.2012 um 10:46 Uhr)

  8. #8
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Wenn du dem SFC20 sagst er soll die Vorgänger Lokaldaten kopieren, dann sind das für den SFC20 die Lokaldaten in dem Baustein der Ihn aufruft, also die von deinem FB!
    Wenn du auf die Vorgängerlokaldaten zugreifen willst, musst du das über das AR machen, und halt dann in einer Schleife, aber machen würd Ich das auch nicht!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.168
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Zitat Zitat von makken Beitrag anzeigen
    so wie ich das jetzt richtig verstehe, kann ich überhaupt nicht über den SFC20 den Inhalt des Adressbereichs, wo mein Pointer draufzeigt (die Zykluszeit des OB´s), kopieren?
    Exakt, mit dem SFC20 kann man überhaupt nicht von den Lokaldaten des aufrufenden Bausteins kopieren. Weil diese für den SFC20 die Vor-Vorgänger-Lokaldaten wären, wie Dominik schon richtig schrieb.

    Lösung: Der OB selber kann seine Lokalvariablen in globale Variablen kopieren, dann kann JEDER darauf zugreifen.
    Wenn Du denn unbedingt die OB-Variablen in den Lokaldaten Deines FB brauchst, dann kann Dein FB die ja von den globalen Variablen per SFC20 in seine Lokaldaten kopieren.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    makken ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.08.2012
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @borromeus:

    ich habe ja schon so eine ähnliche Lösung. Bei mir ist das Problem nur das ich die Zykluszeit als Eingang meines Bausteins habe, und diese dann in CFC manuell eingeben muss.

    Aber so wie sich das anhört ist dein Lösungsvorschlag sogar die Lösung meines Problems. Kannst du mir etwas besser erklären?

    Vielen Dank!

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 18.05.2011, 23:57
  2. SCL: Lokaldaten des Vorgängerbausteins (87h)
    Von vierlagig im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 01.06.2010, 19:13
  3. Mit Any- Pointer auf Lokaldaten zugreifen
    Von AJ67 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 25.06.2009, 10:01
  4. vom TP277 auf Netzwerkdrucker zugreifen
    Von SvenMarek im Forum HMI
    Antworten: 1
    Letzter Beitrag: 05.09.2007, 17:05
  5. Indirekter Zugriff auf Lokaldaten des Vorgänger
    Von Senator42 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.03.2007, 14:17

Lesezeichen

Berechtigungen

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