TIA Array variable kopieren

fbeine

Level-2
Beiträge
134
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe ein TIA-Problem.

Ich möchte ein Array[1..30] of char kopieren.

Quelle: DB normaler Zugriff
Ziel: DB Zugriff mit variabler Startadresse des Arrays. Der Baustein hat keinen optimierten Zugriff.

In Bild sieht man meinen Fehlversuch:

Ich rechne mir die Startdresse des Ziels aus, und möchte mit MOVE_BLK kopieren.

Was muss ich in "OUT" bei MOVE_BLK reinschreiben, damit ich meine Kopie in die berechnete Adresse schreibe ?

Dank im voraus
Gruß Frank
 

Anhänge

  • TIA__MOVE_BLK.jpg
    TIA__MOVE_BLK.jpg
    279,1 KB · Aufrufe: 80
Was für eine CPU hast Du?
Wie ist das Ziel-Array (oder Struktur?) im DB deklariert?

Willst Du nun symbolisch kopieren oder absolut adressiert ohne Rücksicht auf die tatsächliche Strukur? Halb symbolisch und halb absolut adressiert geht nicht.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

- ich habe eine CPU 1515F

- Deklariert ist es als "Array[1..30] of Char", keine Struktur, den Haken bei "Optimierter Bausteinzugriff" habe ich rausgenommen, damit ich absoluten Zugriff habe, wenn ich das richtig verstanden habe.

Frank
 
Also bei einer S7-1500 würde ich das mit SCL und "optimiert" machen, mit dem Befehlt MOVE_BLK_VARIANT.
Mit diesem kannst du einen Bereich eines Arrays ab einem Startpunkt in einen Zielbereich kopieren.

Gruß

Jens
 
Hallo Jens,

ich glaube ich muss besser erklären, ich eigentlich möchte:

Ich habe einige Rezepte, deren Werte ich in DBs speichere. Jedes Rezept hat einen eigenen DB.
Die Überschriften des Rezeptes stehen in einen gesonderten DB. Dort ist für jede Rezeptnummer ein Array vorgesehen. Das sieht man auf dem Bild im Fenster unten links.

Beispiel:

Ich habe ein neues Rezept angelegt mit Rezeptnummer 4. Es soll nur die Bezeichnung (Überschrift) in einen separaten DB geschrieben werden, in diesem Beispiel "Rez_004" ab DBB96. Die 96 habe berechnet und steht in einer int-Variable "tAdresse". Diese Variable ist die Startadresse meines Ziels.

Hoffentlich konnte ich es verständlich erklären

Gruß
Frank
 
Mach doch einfach mal aus deinen Rezeptnamen ein Array of Strukt a 30 Char
dann kannst du doch mit Mov Block deine Char kopieren kannst das ganze Optimiert anlegen, symbolisch Programieren
und das Berechnen der Start Adresse brauchtes auch nicht mehr, einfach einfügen der "auswahlnr"


Code:
CALL  MOVE_BLK
         value_type:=Char
         count_type:=UInt
         IN    :=#Bezeichnung[1]
         COUNT :=30
         OUT   :="Dbwatweisich".Rez[#auswahlnr].Name[1]
 
Zurück
Oben