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

Ergebnis 1 bis 8 von 8

Thema: BLKMOVE kopiert keinen String mit PLCSIM?!!

  1. #1
    Registriert seit
    27.06.2005
    Beiträge
    51
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum!
    Ich simuliere gerade mit PLCSIM einen Datenverschiebung von 20 Byte mit SFC20 BLKMOVE. Inerhalb der 20 Byte befindet sich auch ein String. Alle Daten bis auf den String werden korrekt verschoben. Der String bleibt praktisch unangetastet. Mir ist im Online-Modus aufgefallen, dass der Hintergrund der Stringvariable im Datenbaustein ausgegraut ist-im Gegensatz zu den Variablen, die sich verschieben lassen. Kann es sein sein, dass sich Strings mit BLKMOVE generell nicht verschieben lassen???? Bin etwas ratlos und würde mich über ein paar Ratschläge freuen
    Gruß Volker

    PS:Ich habe mal in den Anhang einen Screenshot gehängt.Der Ursprungsdatensatz ging von 1576 bis 1616. Der Zieldatensatz geht von 1616 bis 1656. Wie man sieht wurden alle Daten übertragen bis auf den String. Was auffällt, ist auch, dass der Ursprungsstring nicht gelöscht ist
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren BLKMOVE kopiert keinen String mit PLCSIM?!!  

  2. #2
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Zitat Zitat von Wassermann Beitrag anzeigen
    ...
    PS:Ich habe mal in den Anhang einen Screenshot gehängt.Der Ursprungsdatensatz ging von 1576 bis 1616. Der Zieldatensatz geht von 1616 bis 1656. Wie man sieht wurden alle Daten übertragen bis auf den String. Was auffällt, ist auch, dass der Ursprungsstring nicht gelöscht ist
    Erstens kann Quelle(Ursprung) und Ziel sich nicht überschneiden, d.h. dein Ziel fängt bei 1616 an, die Quelle hört bei 1616 auf????

    Zweitens wird lt. deinem Screenshot nicht nur der String nicht kopiert, vgl z.B. 1580 mit 1620.

    Deine Pointer sollten lauten Quelle P#DBxy.DBX1576.0 Byte 38 und Ziel P#DBxy.DBX1616.0 Byte 38

    Für deine Anwendung empfiehlt sich ein UDT "k" zu implementieren.

    MfG MK
    and we all support the team (S.King - Die Arena)

  3. #3
    Registriert seit
    27.06.2005
    Beiträge
    51
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo MK erstmal danke für deinen gründlichen Blick! zu1) Die Datenbereiche überschneiden sich praktisch nicht. Es werden ab Byte 1576 40 Byte kopiert. Hatte ich ungenau ausgedrückt... zu2) Der Quelldatensatz wird nach dem Verschieben gelöscht, deshalb sind 1580 und 1620 ungleich. Tatsächlich sind die Daten vor dem String und nach dem String richtig verschoben, nur der String selbst nicht - und er wird auch nicht gelöscht, obwohl die Daten im Quelldatensatz davor und danach gelöscht werden???!! Was ist denn ein UDT "k" ??? Viele Grüße Volker

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Du kannst Strings nicht in der Onlinesicht eines Datenbausteins beobachten!

    Von Step7 aus ist es nur möglich sich den Inhalt von Strings über eine Variablentabelle anzeigen zu lassen - und dort auch nur zeichenweise.
    Mal angenommen dein String ist 254 Zeichen lang, so legst du dir 256 Bytes aus dem Datenbaustein hintereinander an. Die ersten beiden Bytes stellst du im Anzeigeformat auf DEZ, die restlichen auf Anzeigeformat ZEICHEN.
    Das erste Byte ist die String-Maximallänge, das zweite Byte ist die Aktuallänge.

  5. #5
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Zitat Zitat von Wassermann Beitrag anzeigen
    Was ist denn ein UDT "k" ??? Viele Grüße Volker
    Auszug aus dem Step7 Handbuch:

    9.3.2 Anwenderdefinierte Datentypen (UDT)
    Anwenderdefinierte Datentypen sind von Ihnen erzeugte spezielle Datenstrukturen, die Sie nach Ihrer
    Definition im gesamten S7-Anwenderprogramm verwenden können.
    • UDTs können wie elementare Datentypen oder zusammengesetzte Datentypen in der
    Variablendeklaration von Codebausteinen (FC, FB, OB) oder als Datentyp für Variablen in einem
    Datenbaustein (DB) verwendet werden. Damit haben Sie den Vorteil, dass Sie eine mehrmals zu
    verwendende, spezielle Datenstruktur nur einmal definieren und sie anschließend beliebig vielen
    Variablen zuweisen können.
    • UDTs können als Vorlage für die Erstellung von Datenbausteinen mit gleicher Datenstruktur
    dienen, d. h. Sie erstellen nur einmal die Struktur und erzeugen anschließend die benötigten
    Datenbausteine durch einfache Zuweisung des UDTs (Beispiel Rezepturen: Die Struktur des DB
    ist immer gleich, nur die Mengenangaben sind unterschiedlich).

    • Anwenderdefinierte Datentypen werden - wie die übrigen Bausteine auch - im SIMATIC Manager
    oder im inkrementellen Editor angelegt.
    D.h. du schreibst einen UDT sagen wir k bzw. Waschmaschine und im DB legst du dann k1,k2,k3... oder Waschmaschine 1, Waschmaschine 2 ... mit dem Datentyp "UDTxxx" an. Spart ein haufen Tipparbeit, vorallem wenn noch zusätzliche Variablen dazukommen und am BLKMOV steht auch ein Symbol statt eines Pointers.


    Ansonsten scheint dein BLKMOV richtig, natürlich 40Byte und Thomas_v2.1 hat recht mit dem Beobachten von Strings. Da dein String eine maximale Länge von 28 Zeichen hat musst du nicht mehr in der Variablentabelle beobachten.

    Gruß MK
    and we all support the team (S.King - Die Arena)

  6. Folgender Benutzer sagt Danke zu Sinix für den nützlichen Beitrag:

    Wassermann (18.07.2011)

  7. #6
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Du kannst Strings nicht in der Onlinesicht eines Datenbausteins beobachten!
    Über Datei und Online öffnen gehts, aber nur Online mit Brille geht nicht.
    Wenn ich einen meiner Finger in eines deiner Nasenlöcher stecke, haben wir beide nen Finger in der Nase

  8. Folgende 2 Benutzer sagen Danke zu Zefix für den nützlichen Beitrag:

    Thomas_v2.1 (15.07.2011),Wassermann (18.07.2011)

  9. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Zitat Zitat von Zefix Beitrag anzeigen
    Über Datei und Online öffnen gehts, aber nur Online mit Brille geht nicht.
    Wow, wieder was gelernt. Warum das so aber mit der Brille nicht geht weiß wohl nur Siemens...

  10. #8
    Registriert seit
    27.06.2005
    Beiträge
    51
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    @ Zefix: Super, das funzt

    @Mäuseklavier: Das mit dem UDT klingt gut! Kann ich aber auf einzelne Daten innerhalb des UDTs zugreifen, zum Beispiel zum Visualisieren oder rechnen?
    Wenn ich jetzt nur das Gewicht in Kammer1 der Waschmaschine o.ä. benötige.

    PS: An der Stelle schon mal danke für die hilfreichen Hinweise! Wenn ich den Link finde, sage ich noch offiziell "Danke".

Ähnliche Themen

  1. FB2 konnte nicht kopiert werden
    Von Bro im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 15.02.2011, 07:26
  2. FB kann nicht kopiert werden
    Von Metulski im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 27.10.2010, 08:07
  3. OB kann nicht kopiert werden
    Von SPS_NEU im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.04.2009, 14:11
  4. habe Probleme mit dem blkmove
    Von WaZi im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 18.07.2008, 15:43
  5. OB kann nicht kopiert werden
    Von ouzo im Forum Feldbusse
    Antworten: 16
    Letzter Beitrag: 10.01.2007, 22:01

Stichworte

Lesezeichen

Berechtigungen

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