TIA Struct mit 64 einzelnen BOOL in ARRAY[1..64] of BOOL kopieren (optimierter Zugriff)

nsc2001

Level-2
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

kämpfe gerade mit dem optimierten Bausteinzugriff und nun stehe ich vor einem Problem.

Habe einen Struct mit 64 einzelnen Bool Variabeln. (Einzeln deswegen, damit ich diese im DB einzeln beschriften kann)
Diesen Struct übergebe ich an einen FC als Input.

Nun möchte ich die 64 Bits intern in einen Array kopieren, damit ich die Variablen per Schleife ansprechen kann.

Das ganze sollte mit optimiertem Zugriff laufen.

Z.B. MOVE_BLK_VARIANT geht bei mir nicht, da die Datenstruktur eine andere ist.

Habt ihr noch eine Idee, wie man das lösen kann?

Gruß

NSC2001

(Ich verwende TIA 13)
 
Ich würde mir ganz einfach einen FC erstellen, der als Eingangsparameter die Struct, als Ausgangsparameter ein Array besitzt, und dann die 64 Bits einzeln umkopieren. Dann weißt du auch welches Bit in der Struct auf welchem Array-Index landet.
Wenn es irgendwie geht einen Speicherbereich umzukopieren, müsstest du wissen wo eventuelle Bytedreher eingebaut werden. Dazu habe ich zumindest in den Siemens-Dokus noch nichts gefunden.
 
Ist es überhaupt möglich mit "optimierter Zugriff" ?
In SCL wäre es supereinfach mit AT, aber das geht sicherlich nicht mit optimierter Zugriff ?
Und andere Verfahren mit z.B. indirekte Addressierung geht wohl auch nur ohne optimierter Zugriff.

N.B. Ich bin kein Experte in S7-1500 Programmierung.
 
Über die FC Variante von Thomas_v2.1 klappt es. In dem FC wird dann jedes Bit einzeln übergeben. Nach Außen ist es dann einmal Struct und einmal Array.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist es überhaupt möglich mit "optimierter Zugriff" ?
In SCL wäre es supereinfach mit AT, aber das geht sicherlich nicht mit optimierter Zugriff ?
Doch, das geht:
TIA-Hilfe F1 schrieb:
Variablen mit AT überlagern

...
Regeln
Folgende allgemeine Regeln gelten für das Überlagern von Variablen:

  • In AWL, KOP und FUP ist das Überlagern in S7-1200 und S7-1500 möglich.
  • In SCL ist das Überlagern in allen CPU-Familien möglich.
  • ...
  • Das Überlagern von Variablen ist in folgenden Bausteinen möglich:
    • In Codebausteinen mit Standardzugriff
    • In Codebausteinen mit optimiertem Zugriff für Variablen mit der Remanenzeinstellung "Im IDB setzen"

  • ...
Wenn man aber die Remanenz im IDB setzen muss, bedeutet dass, das auch einer vorhanden sein muss. Das dürfte auf einen FC nicht zutreffen.

Der TE hat somit die Wahl zwischen zusätzlichem FC (bei Thomas_v2.1's Variante) oder zusätzlichem IDB (bzw. MI), in dem er statt FC auf einen FB wechselt und dann die Sicht AT verwendet.
:-|
 
Zurück
Oben