TIA Datenbausteinbereich umkopieren mit blokmove

Zuviel Werbung?
-> Hier kostenlos registrieren
Da Bilder ja bekanntlich mehr sagen als tausende von Worte, man beachte vor allem Netzwerk 3 ;) :
blkmov.jpg

Das man sowas speziell in der Hinsicht das dieses ganz AR und Any Gehopse auf der S7-1500 nur mehr schlecht als performant emuliert wird vermeiden sollte, steht außer Frage,
nichtsdestotrotz muss das auf der 1500er trotzdem funktionieren.
Obendrein steht in deinem Dokument in Bezug auf die Adressregister auch nichts, was in deinem Fall eine Auswirkung haben sollte.

P.S. Dann stell halt nochmal ein passendes Bild rein, am besten mit Online-Sicht des ganzen.
Wobei es wenn dann aber immer noch keine schlüssige Begründung gibt, warum das nicht funktionieren könnte.

Andere Variante wäre natürlich auch noch, sich mal janz dumm zu stellen, und zu schauen was TIA aus dem Konstrukt bei der automatischen Migration von 300 - 1500 macht.

Mfg
Manuel
 
Zuletzt bearbeitet:
Now its your turn, wobei zugegebnermaßen alle Varianten mit DI als Bereichskennung nicht funktionieren, und zur von dir beschriebenen Fehlermeldung führen.
Ist aber insofern unproblematisch weil man die Bereichskennung DIX ja eher unproblematisch durch DBX ersetzen kann.
Hier aber jetzt der Eindeutigkeit wegen der Hinweis, das das Bildchen mit Hilfe von PLCSIM V13 SP1 UPD1 entsanden ist.

blkmov2.jpg

Hier der vollständige Code, welcher nicht zufällig (fast) wie deiner ausschaut:
Code:
FUNCTION_BLOCK "Baustein_1"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
   VAR 
      arQuelle : Array[0..9] of Byte;
      arZiel : Array[0..9] of Byte;
   END_VAR

   VAR_TEMP 
      TestQuelle : Any;
      TestZiel : Any;
      rvSFC20 : Int;
   END_VAR


BEGIN
NETWORK
TITLE = 
      L P##TestQuelle;
      LAR1;

      L B#16#10;// S7-Kennung
      T B[ AR1, P#0.0];
      L B#16#2;// Datentyp=Byte
      T B[ AR1, P#1.0];
      L 10        ;// Wiederholfaktor
      T W[ AR1, P#2.0];
      L DINO                 ;// DB-Nummer
      T W[ AR1, P#4.0];
      L P#DBX0.0           ;// Speicherbereich, Byte/Bit-Adr.
      T D[ AR1, P#6.0];


      L P##TestZiel;
      LAR1;

      L B#16#10;// S7-Kennung
      T B[ AR1, P#0.0];
      L B#16#2;// Datentyp=Byte
      T B[ AR1, P#1.0];
      L 10        ;// Wiederholfaktor
      T W[ AR1, P#2.0];
      L DINO                  ;// DB-Nummer
      T W[ AR1, P#4.0];
      L P#DBX10.0          ;// Speicherbereich, Byte/Bit-Adr.
      T D[ AR1, P#6.0];

NETWORK
TITLE = 
      CALL BLKMOV
      {blk_type := 'Variant'}
      (  SRCBLK                      := #TestQuelle , 
         RET_VAL                     := #rvSFC20 , 
         DSTBLK                      := #TestZiel
      );


END_FUNCTION_BLOCK

Mfg
Manuel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Manuel

DBX ist leider Global
Global geht.
DiX bezieht sich auf Instand D-Baustein
Instanz geht nicht.
ich brauche Instanz!!!!!!

werde Später das Beispiel-Programm an die Hotline veröffentlichen.

Die Ähnlichkeit beruht auf Beispiele von Siemens Hilfethemen.

Gruß Waldi
 
Hallo Waldi,

Du schriebst daß Du Dich mit ANY usw. auskennst - doch anscheinend ist Dir nicht klar, daß es dem BLKMOV herzlich egal ist, ob die Bereichskennung in den ANYs DIX oder DBX ist. Für den BLKMOV sind das eh' globale DBs.

Also egal, ob Du
- von "P#DB200.DIX94.0 BYTE 227" zu "P#DB200.DIX457.0 BYTE 227"
- oder "P#DB200.DBX94.0 BYTE 227" zu "P#DB200.DBX457.0 BYTE 227"
kopierst, es kommt das gleiche raus.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja genau und das nächste Update von TIA lässt diesen dann vielleicht nicht mehr zu. So die Aussage von der Hotline,
da die Datenbausteinkennung angefragt wird.

Außerdem beziehe ich mich ja auf eine Instanz. #VonQuelle >>> #NachZiel ergibt DW# 8500 xxxx also DIX.

Also Pointer ändern in DW#8400 xxxx Vorgaukeln eines DBX.

Zu Harald

1000 Mal erfolgreich eingesetzt, aber ich weiß noch immer nicht wie das funktioniert :rolleyes::cool:

Das Thema ist für mich jetzt abgeschlossen, ich wollte euch noch mitteilen, was die Hotline zu diesem Problem gesagt hat.
Ihr könnt das jetzt so annehmen oder lasst es bleiben.

Gruß Waldi
 
Die Hotline erzählt Dir Schmarrn. Oder vielleicht redet Ihr da auch so unpräzise aneinander vorbei wie hier?
Siemens wird die einmal eingebaute Funktionalität des BLKMOV nicht aus der S7-1500 entfernen.

Doch wenn Du Angst hast, TIA könnte die Unterstützung des BLKMOV eines Tages einstellen, dann ist die logische Konsequenz: schmeiß das notdürftig konvertierte old-style-Programm weg und schreibe es sauber vollsymbolisch komplett neu.


Da ich noch nie eine S7-1500 programmiert habe und TIA nur äußerst selten anfasse, würde mich mal interessieren, was denn so anders sein soll, wenn man in ANY-Pointern die Bereichskennung DIX durch DBX ersetzt? Hatte die Hotline eine Erklärung dazu oder weißt Du das womöglich, wo Du doch so vehement darauf bestehst, daß es unbedingt DIX sein müsse?

(Hast Du auch eine HMI, welche auf IDB zugreift? Hast Du mal gesniffert, wie die HMI Variablen in IDB adressiert?)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.. Wenn ich versuche die Daten im Instands DB umzukopieren, stürzt die Steuerung ab, mit der Meldung Bereichsfehler..
Warum das so gewesen ist, ist selbst nach über 30 Beiträgen und mit Unterstützung Hotline noch immer nicht ergründet? Als TIA-Anwärter interessieren mich solche Probleme schon sehr. Und Waldi, du als Programmierer hast zwar jetzt irgendeine Lösung deines Problems, es interessiert dich jedoch nicht woran es eigentlich lag? So wie ich es verstanden habe, hätte es doch mit der SFC20 in TIA genau so funktionieren müssen, wie in Klassik? Bin ich der einzige, der es nicht verstanden hat?
 
Das Thema ist für mich jetzt abgeschlossen, ich wollte euch noch mitteilen, was die Hotline zu diesem Problem gesagt hat.
Ihr könnt das jetzt so annehmen oder lasst es bleiben.
Also wenn du der Hotline genau so präzise geschrieben hast wie hier in diesem Thread, dann kann die Antwort der Hotline gar nicht korrekt sein.

Aber nichtsdestotrotz, Siemens hat sich bei der 1500er auf das Abenteuer Any eingelassen, also muss man auch erwarten können, das das wie erwartet (und gewohnt) funktioniert.
Im übrigen wäre das nicht der erste Firmwarebug den BigS diesbezüglich eingebaut hat.
Hattest du eigentlich eine reale CPU oder auch nur PLCSim?

Wenn du aber der Hotline glaubst das dass demnächst verschwinden wird dann solltest du BLKMOVE sowieso tunlichst vermeiden, egal worauf der Any pointer zeigt.

Gruß
Manuel
 
Zurück
Oben