Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 46421

Step 7 SFC1 austauschen gegen direktes auslesen.

$
0
0
Hallo,

Habe folgenden SCL Code im Internet gefunden:

Code:

DATA_BLOCK Umlaufspeicher_DT
STRUCT
fm_trigger : BOOL;
schreib_index : INT;
zeiten : ARRAY [0..20] OF DATE_AND_TIME;
END_STRUCT
BEGIN
END_DATA_BLOCK


Code:

FUNCTION ZeitenMerken_DT : VOID
VAR_INPUT
NIO_TVR : BOOL; // NiO Merker
END_VAR
VAR_TEMP
 x : INT;
 jetzt : DATE_AND_TIME;
 rv : INT;
END_VAR
BEGIN
 IF e0.1 AND NOT Umlaufspeicher_DT.fm_trigger THEN
 rv := Read_Clk (CDT := jetzt);
 x := Umlaufspeicher_DT.schreib_index;
 Umlaufspeicher_DT.zeiten[x] := jetzt;
 IF x = 20 THEN
 Umlaufspeicher_DT.schreib_index := 0;
 ELSE
 Umlaufspeicher_DT.schreib_index := x+1;
 END_IF;
 END_IF;
 Umlaufspeicher_DT.fm_trigger := e0.1;
END_FUNCTION

Womit ich über ein Eingangssignal Zeiten als Date_and_Time in einem Ringpuffer abspeichern kann.

Funktioniert vom Grundprinzip bestens aber ich habe ein Problem mit unserem System.

Der SFC1 liest ja die Zeit aus der Baugruppe herraus und die hat absichtlich einen
Versatz von 2 Stunden gegenüber der PG Zeit. Hat irgendetwas mit Zeitservern zu tun.

Da ich dies als Logbuch nutzen wollte kann ich das so nicht gebrauchen.

Könnte mir einer behilflich sein den SCL Code so abzuändern das nicht mehr mit dem SFC 1 die Zeit
gelesen wird sondern aus einem DB die Zeit entnommen wird.

Wir haben einen FB1 und DB1 der extra für diese 2 Stunden Versatz geschrieben wurde.
Jedenfalls ist in diesem DB1.dbd20 immer die aktuelle Zeit vorhanden als Date_and_Time.

Im voraus vielen Dank.

Mfg Tommylik

Viewing all articles
Browse latest Browse all 46421


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>