Variable vom Typ Date_and_Time in ein Array schreiben???

Alfa-Uwek

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jungs

Ich will in SCL mit dem SFC1 die CPU Uhr/Datum auslesen die gibt mir den Wert in Date and Time aus Jetzt will ich die einzelnen Bytes manipulieren und aus diesem Grund die Variable in ein Array schreiben hat da jemand ein Quelltext als beistpiel weil mit der einfachen zuordnung klappt es nich

CPU_Zeit :Date_and_Time;
CPU_Zeit_Arr :Array[0..7] of Byte;

CPU_Zeit_Arr := CPU_Zeit ;
 
In AWL würde ich das so machen.

Code:
// #CPU_Zeit ist in diesem Falle eine Date_And_Time-Variable mit der lokalen Adresse 0.0 !!

      CALL  "READ_CLK"
       RET_VAL:=#retval
       CDT    :=#CPU_Zeit

      L     LB     0
      T     #CPU_Zeit_Arr[0]
      L     LB     1
      T     #CPU_Zeit_Arr[1]
      L     LB     2
      T     #CPU_Zeit_Arr[2]
      L     LB     3
      T     #CPU_Zeit_Arr[3]
      L     LB     4
      T     #CPU_Zeit_Arr[4]
      L     LB     5
      T     #CPU_Zeit_Arr[5]
      L     LB     6
      T     #CPU_Zeit_Arr[6]
      L     LB     7
      T     #CPU_Zeit_Arr[7]

es sollte ohne weiteres auf SCL übertragbar sein. Lediglich die Adressierung muß passen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...Ich will in SCL mit dem SFC1 die CPU Uhr/Datum auslesen die gibt mir den Wert in Date and Time aus Jetzt will ich die einzelnen Bytes manipulieren und aus diesem Grund die Variable in ein Array schreiben hat da jemand ein Quelltext als beistpiel weil mit der einfachen zuordnung klappt es nich

CPU_Zeit Date_and_Time;
CPU_Zeit_Arr :Array[0..7] of Byte;

CPU_Zeit_Arr := CPU_Zeit ;

Ganz einfach mit einer zweiten Sicht (AT) auf die Variable.

z.B.:
Code:
VAR
  CPU_Zeit: DATE_AND_TIME;
     arCPU_Zeit  [B]AT[/B] CPU_Zeit : ARRAY[0..7] OF BYTE; 
  CPU_Zeit_Arr : ARRAY[0..7] OF BYTE;
END_VAR

CPU_Zeit_Arr := arCPU_Zeit;
Gruss Daniel
 
Gut zu wissen.

Ich hab immer krampfhaft nach einem "Record mit Überlagerung" in Step 7 gesucht und nicht gefunden. Etwa so:

Zeit = Record
case interger of
1: DATE_AND_TIME
2: Array [0..7] off Byte
end

Bekommt man sowas auch ohne SCL hin ?
 
Gut zu wissen.

Ich hab immer krampfhaft nach einem "Record mit Überlagerung" in Step 7 gesucht und nicht gefunden. Etwa so:

Zeit = Record
case interger of
1: DATE_AND_TIME
2: Array [0..7] off Byte
end

Bekommt man sowas auch ohne SCL hin ?

Verstehe die Frage nicht so ganz. Aber mit den Adressregistern (indirekte Adressierung) kann man das selbe in AWL machen.

Gruss Daniel
 
hallo dalbi,

ich hab jetzt versucht auf dieser Grundlage

VAR
CPU_Zeit: DATE_AND_TIME;
arCPU_Zeit AT CPU_Zeit : ARRAY[0..7] OF BYTE;
CPU_Zeit_Arr : ARRAY[0..7] OF BYTE;
END_VARCPU_Zeit_Arr := arCPU_Zeit;
zwei überlappende Variablen in einem DB und auch in einem FB anzulegen.

Habs nicht geschafft. In einem "normalen" DB geht es nicht, weil ich bei der Dekleration schon gar keine Sonderzeichen eingeben kann.
In der Schnittstelle eines FB könnte man soetwas eingeben. Aber was müsste ich da eingeben?

zeit1 | Date_And_Time
zeit2 | at zeit1 : array[0..7] of byte

oder wie kann es funktionieren ? (abgesehen vom Zugriff auf Lokaldaten) :?:

Was meinst du mit

Vielen Dank im Voraus
Holger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

in AWL geht das natürlich nicht mein Beispiel bezog sich auf SCL (hat nix mit AWL zu tun).
In AWL geht das ähnlich, suche mal im Forum nach Pointer (Zeiger). ;)

Gruss Daniel
 
Zurück
Oben