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

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

Thema: Blockmove mit Datenformat Int und String

  1. #1
    Registriert seit
    25.02.2008
    Ort
    Bayern
    Beiträge
    611
    Danke
    64
    Erhielt 27 Danke für 23 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Ich möchte mit SFC 20 Blockmove einen Datenbereich kopieren der aus Integerwerten und einer String[30] besteht. Ich habe im Zeiger P#DB10.DBX 0.0 Byte 130 Byte stehen. Die Integerwerte werden richtig geschrieben, aber der String nicht.
    Wer weiss, warum?
    Gruß
    Sailor
    Zitieren Zitieren Blockmove mit Datenformat Int und String  

  2. #2
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Hast Du daran gedacht, dass ein STRING[30] eine Länge von 32 BYTE hat?

    Wenn nein, kannst Du mal folgendes probieren:

    P#DB10.DBX 0.0 BYTE 132

    Gruß Kai

  3. #3
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Datenformat STRING

    Byte 1 = maximale Länge des Strings

    Byte 2 = aktuelle Länge des Strings

    Byte 3 = 1. Zeichen des Strings

    Byte 4 = 2. Zeichen des Strings

    Byte 5 = 3. Zeichen des Strings

    Byte 6 = 4. Zeichen des Strings

    usw.

    Gruß Kai

  4. #4
    Avatar von sailor
    sailor ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.02.2008
    Ort
    Bayern
    Beiträge
    611
    Danke
    64
    Erhielt 27 Danke für 23 Beiträge

    Standard

    Hallo Kai.

    Danke.

    Die String steht an 2. Stelle in einen DB. 1. Stelle ist ein INT 3. und weitere Stellen sind auch INT. Alle Integerwerte werden richtig übertragen nur die String nicht.
    Der Datenbereich ist 130 Byte lang.

    Verdammter Mist.

    Sailor

  5. #5
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von sailor Beitrag anzeigen
    Hallo Kai.

    Danke.

    Die String steht an 2. Stelle in einen DB. 1. Stelle ist ein INT 3. und weitere Stellen sind auch INT. Alle Integerwerte werden richtig übertragen nur die String nicht.
    Der Datenbereich ist 130 Byte lang.

    Verdammter Mist.

    Sailor
    Es macht es uns leichter, wenn du die Struct des DB uns zeigen würdest.
    Denn ich verstehe nicht wie dein DB aussieht und wo welcher Wert ankommt bzw ankommen soll.


    bike

  6. #6
    Avatar von sailor
    sailor ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.02.2008
    Ort
    Bayern
    Beiträge
    611
    Danke
    64
    Erhielt 27 Danke für 23 Beiträge

    Standard

    Hi,

    ich koper einfach mal die ersten rein:
    Sorry, 1. zeile ist schon die string


    recipe_name STRING[30] ''
    recipe_NR INT 0
    min_S1 INT 0
    max_S1 INT 0
    alert_S1 INT 0
    min_S2 INT 0
    max_S2 INT 0
    alert_S2 INT 0

    usw.


    und hier die AWL:

    L B#16#10 //10h für s7
    T LB 0
    L B#16#5 //Typ BYTE
    T LB 1
    L 130 //Anzahl (Wiederholungsfaktor)
    T LW 2
    L 30 //Datenbaustein
    T LW 4
    L "DB10 recipe data".recipe_ID //Anfangsadresse
    L 130
    *I
    SLD 3 //Pointer generieren
    T LD 6
    L B#16#84 //Speicherbereich (hier DB)
    T LB 6

    UN "recipe data general".Command_save_recipe
    SPB SV
    CALL "BLKMOV"
    SRCBLK :=P#DB10.DBX 0.0 Byte 130
    RET_VAL:=MW330
    DSTBLK :=#myzeiger_S
    SV: NOP 0

    Wie gesagt, die Integerwerte werden geschrieben aber die String nicht, also die ersten 32 Byte.

    was mach ich nur falsch?
    Gruß
    Sailor

  7. #7
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.719
    Danke
    729
    Erhielt 1.159 Danke für 970 Beiträge

    Standard

    Was mir als erstes auffällt. Du schreibst
    L B#16#5 //Typ BYTE
    5 ist aber INT, 2 steht für Byte.

    Wie Kai auch schon angemerkt hat, weisst du das ein 30 Zeichen langer String 32 Bytes benötigt.

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.205
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von sailor Beitrag anzeigen
    Wie gesagt, die Integerwerte werden geschrieben aber die String nicht, also die ersten 32 Byte.
    Ganz sicher?
    Vielleicht werden die recipe_name STRING[30] mitkopiert, aber an anderer Stelle im Programm ständig überschrieben?
    Was sagt denn der RET_VAL vom BLKMOV im MW330?

    Probiere mal in PLCSIM nur Deine Kopier-Anweisung im OB1 aus, sonst nichts.
    Oder ändere mal den Ziel-String per VAT. Bleiben Deine Änderungen drin stehen?

    Gruß
    Harald

  9. #9
    Registriert seit
    18.10.2007
    Beiträge
    127
    Danke
    1
    Erhielt 15 Danke für 13 Beiträge

    Standard

    Warum einfach, wenn es auch kompliziert geht.

    Fasse den zu übertragenden Block in einer STRUCT zusammen, die kannst Du symbolisch adressieren, dann hast du garantiert alles drin, was Du übertragen willst und musst dich nicht mit einem Any-Pointer herumschlagen der Rätsel aufgibt.

    Gruß Rolf

  10. #10
    Avatar von sailor
    sailor ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.02.2008
    Ort
    Bayern
    Beiträge
    611
    Danke
    64
    Erhielt 27 Danke für 23 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke (Gemein).de

    Das Problem war die 5<>Byte.

    Scheiss Alzheimer.
    Gruß
    Sailor

Ähnliche Themen

  1. SFC20 BlockMove mit variablem Quell DB
    Von t-poke im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.09.2009, 05:12
  2. Blockmove in einem FC (UDT als IN Parameter)
    Von Jochen Kühner im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 30.09.2008, 09:37
  3. SFC20 - Blockmove - indirekt Adressiert ???
    Von DaMeista im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 10.01.2007, 12:03
  4. Blockmove
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.01.2005, 08:43
  5. Blockmove Probleme....
    Von Jochen Kühner im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 05.10.2004, 10:21

Lesezeichen

Berechtigungen

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