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

Ergebnis 1 bis 9 von 9

Thema: s7 indirekte adressierung in einem parametrierbarem fc

  1. #1
    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
    hallo

    irgendwie will es mir nicht gelingen.

    deklaration:
    12.0 in_out Hilfsbyte BYTE

    UN #Impuls_T
    SPB c000
    L #Hilfsbyte
    L 0
    ==I
    S #Hilfsbyte.0 <<<<====== so gehts natürlich nicht
    c000: NOP 0


    aber wie spreche ich dieses bit an ?

    mfg
    volker
    Zitieren Zitieren s7 indirekte adressierung in einem parametrierbarem fc  

  2. #2
    Anonymous Gast

    Standard

    Die im Bausteinkopf deklarierten Variablen kannst Du mit L-ansprechen:

    L #Hilfsbyte // Adresse = 4.0
    L 0
    ==I
    S L 4.0

    Die Adresse findest Du im Bausteinkopf.

    Eine andere Variante ist das Hilfsbyte mit 00000001 zu "ver-UNDen":
    L #Hilfsbyte
    L 1
    UW
    T #Hilfsbyte

    Gruss
    Daniel

  3. #3
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Dein Beispiel sieht so aus, als wenn es nur darum ginge ein Bit im Hilfsbyte zu setzen. Dann kannst Du schreiben:
    Code:
    L #Hilfsbyte
    L 1	 // 1 für .0, 2 für .1, 4 für .2 usw.
    OB	// setzt bit im Muster, für Rücksetzen nimmst Du UB mit 
    	// einem Muster aus 0 für das rückzusetzende Bit und 	// ansonsten Einsen.
    T #Hilfsbyte
    Wenn Du viel mit den Bits machen willst, ist das zu umständlich.
    Dann hilft die alte Sache mit einem "Schmiermerker"-Wort:
    Code:
    L #Hilfsbyte
    T MB1
    S M 1.0
    // Hier können nun viele weitere Dinge mit den Merkern 1.0 bis 1.7
    // folgen. Am Ende&#58;
    L MB1
    T #Hilfsbyte
    Nun gäbe es noch die Möglichkeit, dass dein Hilfsbyte die Nummer des Bytes enthalten soll, dessen Bit 0 Du benutzen willst. Ich mache es hier mal mit Bit 3 stat 0, weil man dann besser sieht, wo es hingehört:

    Code:
    L #Hilfsbyte	
    L 8		// 8 bits weiter
    *D
    L P#M0.3	// ein Zeiger auf &#40;letztlich die Adresse von&#41; 			//Merker 0.3
    +D		// Zeiger sind Doppelworte bzw. ein DW lang.
    T MD2		// irgenein Zwischenspeicher.
    		// wenn Hilfsbyte den Wert 7 hatte enthält
    		// er nun die Adresse von M7.3	
    S M&#91;MD2&#93;	// setze den Merker, dessen Nummer in MD2 		// steht

  4. #4
    Anonymous Gast

    Standard

    Zitat Zitat von Zottel
    Dein Beispiel sieht so aus, als wenn es nur darum ginge ein Bit im Hilfsbyte zu setzen. Dann kannst Du schreiben:
    nein. ich muss mindestens 2 bits daraus ansprechen. das ganze wird ein schieberegister mit impuls/pause für das output-byte

    mit code 1 könnte ich was machen.
    da ich auf schmiermerker verzichten wollte kommen code 2 und 3 nicht in frage.

    -------------------------------------------

    aber die antwort vom gast finde ich recht gut. an genau sowas hatte ich gedacht.

    L #Hilfsbyte // Adresse = 4.0
    L 0
    ==I
    S L 4.0

    da bei mir die adresse im deklarationsbereich 12 ist gehe ich mal davon aus, dass ich S L 12.0 bzw U L 12.7 benutzen muss.

    Da es schon fast 16.00 uhr ist werde ich das erst am montag testen.
    Irgendwann muss man ja auch mal feierabend sein.

    danke für eure hilfe.
    ich melde mich dann nach dem test

    mfg volker

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

    Standard

    mfg volker[/quote]

    kurzer nachtrag.

    bis jetzt habe ich das folgendermassen gelöst:

    im deklarationsteil habe ich 8 temp-variablen angelegt (adr 0.0-0.7)
    (Hilfsbyte_Bit_0 - ....._7)

    L #Hilfsbyte
    T LW 0

    mit #Hilfsbyte_Bit_0 - 7 kann ich dann auch die Bits ansprechen.

    bis montag

    mfg
    volker

  6. #6
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Dann (mehrere Bits) ist das Beispiel 2 das richtige, nur verwendest Du halt eine Reihe Bits im Bereich der Lokalvariablen.

    Mit "indirekter Adressierung" hat das wenig zu tun.

    Zum Schieben gibt es spezielle Befehle. Du must dann nicht jedes Bit "anfassen", sondern eventuell das erste und letzte, wenn Du etwas hineinschiebst oder Überträge in ein anderes Wort benötigst.

    Das letzte Beispiel kann anstelle der Schmiermerker in ähnlicher Form auch mit den Adressregistern AR1 oder AR2 realisiert werden. (Siehe Hilfe zu STEP7)

    Schmiermerker haben manchmal den Vorteil, das der Code 1:1 auf andere SPS (S5 oder ganz andere Hersteller übertragbar ist).

  7. #7
    loop2003 Gast

    Standard

    Hallo Volker,

    probiers mal damit:

    deklaration:
    12.0 in_out Hilfsbyte BYTE

    UN #Impuls_T
    SPB c000

    L P##Hilfsbyte //lädt einen Zeiger auf dein Hilfsbyte
    LAR1
    L #Hilfsbyte
    L 0
    ==I
    S [AR1,P#0.0] // Setzt Bit 0 von Hilfsbyte
    c000: NOP 0


    Gruss
    loop
    Zitieren Zitieren Re: s7 indirekte adressierung in einem parametrierbarem fc  

  8. #8
    Registriert seit
    02.07.2003
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Loop2003 hat recht! So müsste es funktionieren.

    @Loop: Grüße nach China. Das du auch überall Breitband haben musst, tztztztz...

    B72

  9. #9
    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
    Zitat Zitat von loop2003
    Hallo Volker,

    probiers mal damit:

    deklaration:
    12.0 in_out Hilfsbyte BYTE

    UN #Impuls_T
    SPB c000

    L P##Hilfsbyte //lädt einen Zeiger auf dein Hilfsbyte
    LAR1
    L #Hilfsbyte
    L 0
    ==I
    S [AR1,P#0.0] // Setzt Bit 0 von Hilfsbyte
    c000: NOP 0

    Gruss
    loop
    Alles klar. hab ich eben getestet und läuft wunderbar.

    bei der variante mit
    L 14.0
    usw
    muss ich, wie in meiner variante, mehrmals schieben.

    danke für eure hilfe
    mfg
    volker
    Zitieren Zitieren Re: s7 indirekte adressierung in einem parametrierbarem fc  

Ähnliche Themen

  1. KOP/FUB indirekte Adressierung
    Von S7-kub im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 14.03.2010, 19:13
  2. Indirekte Adressierung von einem DB
    Von Sirus im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.08.2009, 18:08
  3. Indirekte adressierung DB
    Von elko im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.04.2006, 22:00
  4. Indirekte Adressierung von SFC 20
    Von andre im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.09.2005, 09:44
  5. Indirekte Adressierung mit S5!!
    Von Anonymous im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 20.10.2004, 15:15

Lesezeichen

Berechtigungen

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