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

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

Thema: 124 Byte von DB an Ausgang Schreiben

  1. #1
    Registriert seit
    10.06.2010
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ich habe das ganze netz schon zu meinem Problem durchsucht aber keine passende Lösung gefunden bzw. verstanden.

    Folgender Quellcode funktioniert bei mir aber gibt es keine einfacherere lösung?


    Code:
     
          U     "m_daten"
          SPBNB _01a
          L     "DB_Borries".Texttelegramm.x_pos[1]       (DB80.DBB104)
          T     PAB  260
          L     "DB_Borries".Texttelegramm.x_pos[2]       (DB80.DBB105)
    T     PAB  261       
          L     "DB_Borries".Texttelegramm.x_pos[3]       
          T     PAB  262
          L     "DB_Borries".Texttelegramm.x_pos[4]
          T     PAB  263
          L     "DB_Borries".Texttelegramm.y_pos[1]
          T     PAB  264
          L     "DB_Borries".Texttelegramm.y_pos[2]
          T     PAB  265
          L     "DB_Borries".Texttelegramm.y_pos[3]
          T     PAB  266
          L     "DB_Borries".Texttelegramm.y_pos[4]
          T     PAB  267
          L     "DB_Borries".Texttelegramm.abs_rel_koord[1]
          T     PAB  268
          L     "DB_Borries".Texttelegramm.abs_rel_koord[2]
          T     PAB  269
          L     "DB_Borries".Texttelegramm.mark_richtung[1]
          T     PAB  270
          L     "DB_Borries".Texttelegramm.mark_richtung[2]
          T     PAB  271
          L     "DB_Borries".Texttelegramm.Schrift_breite[1]
          T     PAB  272
          L     "DB_Borries".Texttelegramm.Schrift_breite[2]
          T     PAB  273
          L     "DB_Borries".Texttelegramm.Schrift_breite[3]
          T     PAB  274
          L     "DB_Borries".Texttelegramm.Schrift_breite[4]
          T     PAB  275
          L     "DB_Borries".Texttelegramm.Schrift_hoehe[1]
          T     PAB  276
          L     "DB_Borries".Texttelegramm.Schrift_hoehe[2]
          T     PAB  277
          L     "DB_Borries".Texttelegramm.Schrift_hoehe[3]
          T     PAB  278
          L     "DB_Borries".Texttelegramm.Schrift_hoehe[4]
          T     PAB  279
          L     "DB_Borries".Texttelegramm.schriftwinkel[1]
          T     PAB  280
          L     "DB_Borries".Texttelegramm.schriftwinkel[2]
          T     PAB  281
          L     "DB_Borries".Texttelegramm.schriftwinkel[3]
          T     PAB  282
          L     "DB_Borries".Texttelegramm.schriftwinkel[4]
          T     PAB  283
          L     "DB_Borries".Texttelegramm.text[1]
          T     PAB  284
          L     "DB_Borries".Texttelegramm.text[2]
          T     PAB  285
          L     "DB_Borries".Texttelegramm.text[3]
          T     PAB  286
          L     "DB_Borries".Texttelegramm.text[4]
          T     PAB  287
          L     "DB_Borries".Texttelegramm.text[5]
          T     PAB  288
          L     "DB_Borries".Texttelegramm.text[6]
          T     PAB  289
          L     "DB_Borries".Texttelegramm.text[7]
          T     PAB  290
          L     "DB_Borries".Texttelegramm.text[8]
          T     PAB  291
          L     "DB_Borries".Texttelegramm.text[9]
          T     PAB  292
          .
          .
          .
          L     "DB_Borries".Texttelegramm.text[80]
          T     PAB  293
    _01a: NOP   0
    

    Die Ausgänge gehen zu einem Borries Markiercontroller. In der Hardwareconfig hat er 128 Byte Eingänge 32 Byte Eingänge (SPS 128 A /32 E) jeweils startend bei 256. Diese liegen außerhalb des PA.
    Geändert von chickmc (14.06.2010 um 10:52 Uhr)
    Zitieren Zitieren 124 Byte von DB an Ausgang Schreiben  

  2. #2
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    Schonmal den SFC 20 "BLKMOV" angeschaut?

    Pylades

  3. #3
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Hi,

    ja der SFC20 ist hier angebracht:

    CALL SFC 20
    SRCBLK :=P#DB400.DBX0.0 BYTE 124 // hier dein DB eintragen
    RET_VAL:=#Dummy
    DSTBLK :=P#A 260.0 BYTE 124
    NOP 0

    So müsste es gehen.

    Gruß
    @Move

  4. #4
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    so sollte es auch gehen


    Code:
    // Adressregister sichern
          TAR1  #savear1
          TAR2  #savear2
     
    Auf DB 80                              //DB öffnen
          L     104                         // Startadresse  DBB
          SLD 3   
          LAR1     
     
          L     260                         // Startadresse  PEB
          SLD   3
          LAR2  
     
          U m_daten
          FP Mxx
          SPBN next
     
          L     124                  // Schleife vorbelegen(Anzahl der Durchläufe)
    next: T     #count              
          L     DBB [AR1,P#0.0]             
          T     PAB [AR2,P#0.0]             
     
          +AR1  P#1.0
          +AR2  P#1.0
     
          L     #count
          LOOP  next
    // Adressregister rückschreiben
          LAR1  #savear1
          LAR2  #savear2
    next: NOP 0
    Geändert von Gerhard K (14.06.2010 um 11:13 Uhr)
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  5. #5
    chickmc ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.06.2010
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnell antwort.

    Das mit dem Blkmov habe ich auch schon versucht aber die daten kommen nicht am Markiercontroller an.

    Zur version in AWL
    Was Soll ich mit "FP Mxx" machen?

    und was ist #count für ein variablentyp?
    Geändert von chickmc (14.06.2010 um 11:32 Uhr)

  6. #6
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Code:
    // Adressregister sichern
          TAR1  #savear1
          TAR2  #savear2
     
    Auf DB 80                              //DB öffnen
          L     104                         // Startadresse  DBB
          SLD 3   
          LAR1     
     
          L     260                         // Startadresse  PEB
          SLD   3
          LAR2  
     
          U m_daten
          FP Mxx                         // Freier Merker z.B. 100.0
          SPBN ENDE
     
          L     124                  // Schleife vorbelegen(Anzahl der Durchläufe)
    next: T     #count              
          L     DBB [AR1,P#0.0]             
          T     PAB [AR2,P#0.0]             
     
          +AR1  P#1.0
          +AR2  P#1.0
     
          L     #count
          LOOP  next
    // Adressregister rückschreiben
          LAR1  #savear1
          LAR2  #savear2
    ENDE: NOP 0
    da muss ein freier merker rein zur Pulsbildung z.B. M100.0 oder M11.0

    Der SFC20 geht nicht ,da dieser nich auf Ausgänge ausserhalb des PA schreibt.
    Geändert von jabba (14.06.2010 um 11:37 Uhr)

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    Hallo,
    du solltest den Vorschlag von Gerhard weiterverfolgen. Der SFC20 kann NICHT von der Perepherie lesen und auch nicht dahin schreiben. Prozessabbild hilft hier sehr wahrscheinlich nicht, da ich annehme, dass es sich um einen PB- oder PN-Slave handelt an den die Daten übergeben werden sollen.

    In Gerhards Vorschlag ist Count in INT und alle nicht weiter spezifizierten Variablen (wie z.B. Mxxx) sollten von dir korrekt beschaltet werden - z.B. mit M100.0.
    Der Merker M_Daten starten in dem Fall die Übertragung und der Mxx sdorgt dafür, dass du pro Trigger nur einmal Daten überträgst ...

    Gruß
    LL

    Edit:
    Jabba war da dann wohl "etwas" schneller ...

  8. #8
    chickmc ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.06.2010
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank

    klapt wunderbar

  9. #9
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    du solltest den Vorschlag von Gerhard weiterverfolgen. Der SFC20 kann NICHT von der Perepherie lesen und auch nicht dahin schreiben.
    Kann er, kann er... schon erfolgreich eingesetzt und funktioniert, sonst würde ich es nicht posten.

    Gruß

  10. #10
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kanner nicht, nur wenn die Sachen im prozessabbild liegen.

    Mit der SFC 20 "BLKMOV" (block move) kopieren Sie den Inhalt eines Speicherbereiches (= Quellbereich) in einen anderen Speicherbereich (= Zielbereich).

    Zulässige Quellbereiche sind:

    · Teile von Datenbausteinen

    · Merker

    · Prozeßabbild der Eingänge

    · Prozeßabbild der Ausgänge

    Der Quellparameter kann auch in einem nicht ablaufrelevanten Datenbaustein im Ladespeicher liegen (DB, der mit dem Schlüsselwort UNLINKED compiliert wurde)!

Ähnliche Themen

  1. INT in ein Byte schreiben
    Von TimoK im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 16.06.2009, 11:52
  2. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52
  3. Antworten: 2
    Letzter Beitrag: 27.02.2008, 19:28
  4. Elau: Ein Byte, bitweise in ein Array schreiben?
    Von Trashman im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 24.10.2007, 19:27
  5. Mit Button Bit in Byte schreiben?
    Von apachler im Forum HMI
    Antworten: 2
    Letzter Beitrag: 31.03.2006, 09:00

Lesezeichen

Berechtigungen

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