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

Ergebnis 1 bis 3 von 3

Thema: Übergabe von Pointer an ein Unterprogramm S7-200

  1. #1
    Registriert seit
    20.02.2004
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    musss mich jetzt mit Microwin rumschlagen und vielleicht kann mir jemand auf die schnelle helfen.
    Ich möchte einen Pointer mit einer Byte bzw. Word Adresse an ein Unterprogramm übergeben und dann 10 Byte ab pointeradresse aus den Speicher auslesen.
    Soviel ich weiss wird das Pointerformat mit &VW100 in ein Dword geschrieben. Wenn ich jetzt den Eingangsparamter zb. LD1 einlesen will meckert der Compiler.

    Beispiel

    MOVD &LD1,AC0
    Zitieren Zitieren Übergabe von Pointer an ein Unterprogramm S7-200  

  2. #2
    Registriert seit
    17.09.2003
    Ort
    Zell bei Dietfurt a.d. Altmühl
    Beiträge
    357
    Danke
    8
    Erhielt 27 Danke für 25 Beiträge

    Standard

    Hallo Hamlet.

    Das mit dem Pointer bei der S7-200 ist eine ganz einfache Sache.
    Willst du nur Daten auslesen oder auch Daten in die Variablen schreiben. Meinn Beispiel beinhaltet lesen und schreibe von 10 Bytes.
    Du Deklariest in deinem Unterprogramm ein IN alls DWORD oder DINT. Als Beispiel den erste "IN" LD0 als "Pointer Daten". Als nächsten legst du dir 10 Bytes im "TEMP" des Unterprogrammes an z.B. als "Byte" Format mit dem Text als Beispiel "Daten 1", "Daten 2", usw. bis du 10 Bytes hast. Die Absoluten Adressen für diese Temp Daten stehen an der Linken Seite, in diesem fall LB4,LB5;LB6 usw. Der nächste Schritt in deinem Unterprogramm ist, im 1. Netzwerl folgendes zu schreiben.

    NETWORK 1 Daten laden
    LD SM0.0 // VKE 1
    BMB *LD0,LB4,10 // Blockmove 10 Bytes

    Im letztem Netzwerk brauchst du den Aufruf nur machen, wenn du die geladenen Daten bearbeites hast.

    NETWORK 30 Daten sichern
    LD SM0.0 // VKE 1
    BMB LB4,*LD0,10 // Blockmove 10 Bytes.

    In dem Zwischenraum zwischen 1. und letztem Netzwerk stehen die Daten der geladenen Variablen (10 Bytes lang) in LB4, LB5, LB6, LB7, LB8, LB9, LB10, LB11, LB12, LB13. Mit diesen Daten kannst du in deinem Unterprogramm machen wast du willst

    Beim Aufruf des Unterprogrammes im MAIN must du nur am "IN" eine Pointervariable angeben vom dem die 10 Bytes gelesen werden. Ein Pointer wird am in immer "&" angegeben. Als Beispiel hier am "IN" &VB100. Es werden also 10 Bytes ab VB100 geladen.

    Achtung du kannst in deinem Unterprogramm maximal mit 60 Byte arbeiten, da die S7-200 für den Aufruf von Unterprogrammen schon 4 Bytes reserviert.

    Ich hoffe ich konnte dir weiterhelfen. Bei weiteren fragen einfach melden ich kann dir auch gerne ein Unterprogramm mit Pionteraufruf zusende.

    MfG
    Wittmann Hubert

  3. #3
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Hubert,
    danke für die Lösung.

Ähnliche Themen

  1. S7 200 Unterprogramm für Rolladensteuerung
    Von frankuc45 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 14.09.2010, 09:40
  2. Problem bei Übergabe von Wert an Pointer
    Von rapser im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 26.08.2009, 15:30
  3. S7 - 200 Unterprogramm funktioniert nicht
    Von godi im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.08.2008, 15:00
  4. Antworten: 0
    Letzter Beitrag: 11.08.2008, 14:40
  5. S7-200 CPU 222 Unterprogramm mit Timer
    Von bmshine im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.10.2006, 14:35

Lesezeichen

Berechtigungen

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