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

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

Thema: Vorgabe des Bereichs (A/E/M) Über die Variablen Deklaration

  1. #1
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Kollegen

    wie kann ich in einem FC von außen vorgeben in welchem Bereich Merker, Ausgänge oder Eingänge etwas geladen werden soll es geht genauer um das Bsp.

    http://www.sps-forum.de/phpBB2/viewtopic.php?t=1363

    Wir wollen dort über die Vorgabe einer Zahl ein Betimmtes Bit Laden um den FC aber Flexibler z gestalten will ich net im FC stehn haben
    U E [AR1,P#0.0] sonder will das E irgendwie auch Variabel haben so das da auch mal M oder A stehen soll (aber immer Lesend auch bei A)

    MfG Balou
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.
    Zitieren Zitieren Vorgabe des Bereichs (A/E/M) Über die Variablen Deklaration  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.590
    Danke
    581
    Erhielt 2.788 Danke für 2.019 Beiträge

    Standard

    Nimm am besten einen Any-Typ und bastel dir, je nach Bedarf, den richtigen Typ (M,E,A etc.) zusammen (Hilfe "Any" unter Step7 zeigt, wie der Typ Any aufgebaut ist)

    Gruß Ralle

    (Hab letztens hier einen Block-Move-Baustein eingestellt, da ist so ein Any-Typ drin)

  3. #3
    Registriert seit
    06.10.2003
    Beiträge
    3.730
    Danke
    497
    Erhielt 577 Danke für 460 Beiträge

    Standard

    Hallo Balou,

    ein Pointer tut's auch. Sieh in der Step7-Hilfe unter "Format des Parametertyps Pointer". Dort ist sind Aufbau des Pointers sowie die Hex-Codes für die Speicherbereiche beschrieben. Im einfachsten Fall übergibst du die Byte-Adresse und den Speicherbereich als Byte an den Baustein.


    Code:
          L     #ADRESSE                    // hex
          SLD   3
          L     #BEREICH                    // hex (z.Bsp. B#16#81 für "E")
          SLD   24
          OD    
          LAR1  
    
          U      [AR1,P#0.0]
          ..

    Gruß, Onkel

  4. #4
    Balou ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mahlzeit

    bin wohl zu doof oder noch net Ausgeschlafen

    in der Erklärung steht das der Pointer 6 Byte länge hat.
    Nun bin ich nicht sicher wo ich den hinladen soll ins Adressregister und dann mit U [AR1,P#0.0] aufrufen muss oder mit U P#M50.0
    wenn ich ihn vorher im Merkerbereich 50 -55 definiert hab.

    Ach ja ich will irgendwie auch den DB aufruf mitnutzen der ja im Byte 0 und 1 steht.

    Sorry aber ich steh voll auf dem Schlauch

    MfG Balou
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.

  5. #5
    Registriert seit
    06.10.2003
    Beiträge
    3.730
    Danke
    497
    Erhielt 577 Danke für 460 Beiträge

    Standard

    Hallo Balou,

    richtig, der Pointer besteht im Allgemeinen aus 6 Byte, das ist der sogenannte DB-Pointer. Da du nur auf E/A/M zugreifen wolltest, könnst du wie oben beschrieben einen bereichsübergreifenden Pointer (4Byte) verwenden. Er unterscheidet sich dadurch, daß die zwei Bytes mit der DB-Nummer fehlen. Der Vorteil ist die einfache Bearbeitung da ja ein Doppelwort direkt in den Akku bzw. in ein Adressregister geladen werden kann.

    Byte n Byte n+1 Byte n+2 Byte n+3
    10000zzz_00000yyy_yyyyyyyy_yyyyyxxx

    x - Bitadresse
    y - Byteadresse
    z - Operandenbereich

    Die Werte für den Operandenbereich findest du in der Online-Hilfe.
    Wenn du nun auf Daten in einem DB zugreifen willst, öffnest du den DB und verwendest als Operandenbereich, bzw "Byte n" b#16#84.


    Ich habe dich doch richtig verstanden, daß du den Operandenbereich und die Adresse als Parameter an den Baustein anlegen möchtest?


    Wenn du einen DB-Pointer oder Any-Zeiger zusammenstellen willst, dann würde ich eine Variable vom Typ Any in den temporären Lokaldaten anlegen. Dann kannst du über absolute Adressierung byte- oder wortweise die gewünschten Daten dort hinein schreiben. Wegen der absoluten Adressierung sollte die Adresse dieser Variable nicht verändert werden, also möglichst Adresse 0 usw. dafür reservieren! Diesen Any-Pointer kannst du als Parameter an andere Bausteine wie "BLKMOV" übergeben.


    Gruß, Onkel

  6. #6
    Balou ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nabend

    richtig für das erste reicht mir der Nrmale (4 Byte) Pointer den ich ins AR Laden kann.

    Aber da mein wissens durst nicht zu stillen ist wollte ich wissen wie und wohin ich den DB Pointer laden muss da das AR meines wissens nur 4 Byte hat geht er da ja net rein oder lieg ich da verkehrt??

    Wie gesagt ich weiß halt net wirklich wo ich den hinschreiben muss und wie ich das dann anwende so das ich einen db Flexibel aufrufen kann und auch die bytes flexibel rufen kann???

    MfG Balou
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.

  7. #7
    Registriert seit
    06.10.2003
    Beiträge
    3.730
    Danke
    497
    Erhielt 577 Danke für 460 Beiträge

    Standard

    Hallo Balou,

    Zitat Zitat von Balou
    ...Aber da mein wissens durst nicht zu stillen ist wollte ich wissen wie und wohin ich den DB Pointer laden muss da das AR meines wissens nur 4 Byte hat geht er da ja net rein oder lieg ich da verkehrt??
    ...
    Na das sieht dann z.Bsp. so aus:

    Code:
          L     P##HMI_DATEN_REGELKREIS     // Pointer-Adresse
          LAR2                              // ins AR2
          L     W [AR2,P#0.0]               // DB-Nummer
          T     #TEMP_INT
          AUF   DB [#TEMP_INT]              // DB öffnen
          L     D [AR2,P#2.0]               // bereichsübergreifenden Pointer
          LAR2                              // ins AR2
          L     W [AR2,P#0.0]               // ...

    Gruß, Onkel

  8. #8
    Balou ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Moin

    erstmal besten Dank

    ich werd das mal auf meiner CPU Testen und werde mich dann wieder Melden.

    MfG Balou
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.

  9. #9
    wannabee Gast

    Standard

    hallo balou,
    ich habe auch vor, einem baustein die erste adresse eines ew oder mw zu geben, aber dann noch vorgeben wie viel worte kopiert werden sollen. möchte auch vorgeben ab welchem aw oder mw sie geschrieben werden sollen. komme leider nicht weiter.

    bist du schon vorran gekommen? kannst du helfen oder soll ich ein neuen thread aufmachen?
    mfg wannabee

  10. #10
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi wannabee
    wir haben in diesem thread weiter darüber gerätselt vielleicht hilft dir mein letzter beitrag (sry das ich ihn nicht nochmal schreibe aber ....)
    http://www.sps-forum.de/phpBB2/viewt...=1363&start=15

    guck einfach mal bei fragen kannst du dann ja nochmal posten
    ich habe im praktikum die Anypointer für eine Rezepturverwaltung genommen
    dort konnten über ein touchpanel 25 verschiedene Datensätze geladen werden und ich habe dafür die anypointer geschrieben
    hoffe das bringt dich weiter

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 01.06.2010, 14:06
  2. Variablen über Internet anzeigen und steuern
    Von settelma im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 26.02.2010, 17:50
  3. Beckhoff Variablen deklaration
    Von Gerri im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 08.06.2009, 12:18
  4. drehzahl vorgabe
    Von prinz1978 im Forum Programmierstrategien
    Antworten: 25
    Letzter Beitrag: 28.03.2008, 16:47
  5. Unterscheidung Variablen Deklaration
    Von chstad im Forum Sonstige Steuerungen
    Antworten: 19
    Letzter Beitrag: 21.01.2007, 14:51

Lesezeichen

Berechtigungen

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