Animieren wir das bereits erstellte (aber leere) Trendfenster mit einem Diagramm der Änderungen der Variablen im Zeitverlauf. Bevor Sie sich jedoch die Trends ansehen, müssen Sie sie konfigurieren und die Werte so einstellen, dass sie sich in der Datenbank ansammeln. Es ist erforderlich, dass das System über eine Variable verfügt, die ihren Wert ändert. Es ist erforderlich, die entsprechende Konfiguration für diese Variable aufzuhängen, damit die Werte zum Archiv hinzugefügt werden. Für den Flap-Datenpunkttyp haben wir eine DPE namens Flow und geben int ein. Diese DPE wird verwendet, um sich mit Trends vertraut zu machen. Um das Verhalten des Systems zu simulieren, haben wir bereits ein Steuerungsskriptmodell erstellt. Ich schlage es vor und benutze es, um den Fluss zu simulieren. Öffnen wir das Modellskript:
, « » ( C) main(). main() , DPE - (callback-), main , callback-.
main :
main()
{
dpConnect("OnOpen_CB1", "System1:Flap1.Commands.Open");
dpConnect("OnOpen_CB2", "System1:Flap2.Commands.Open");
dpConnect("OnOpen_CB3", "System1:Flap3.Commands.Open");
for (;;) {
dpSet("System1:Flap1.Inputs.Flow", rand());
dpSet("System1:Flap2.Inputs.Flow", rand());
delay(1);
}
}
DPE callback ( for(;;)), 1 2, 1 delay. main , CTRL-.
(, — dpSet, . , ).
CTRL- ( ) , , para.
. Trends. Trend gedi.
— . — Value over value «» . — , X — , Y — . , — , . , .
Append — . Curve ()
… #1_1, :
… ( , ) #1_2. Close. Trends
Trends Main, TRENDS. , - , , … .
, , ( ), . , «». , X , , . , , . , . «- , », «1:1» , .
«» ruler:
Shift , .. « ».
, . . . .. . , .
, , . , , .. . para. Flap1.Input.Flow _archive.
Archive Settings. _archive, .
:
, :
, (, ) . WinCC OA Oracle. 3.17 InfluxDB, , NextGen . . ( ) . , . « » -, . , , «». ( , «» ) , - . , , — . , . NextGen InfluxDB, , , , «».
, , . ValueArchive_0000.
Active, Apply.
. Main, , , :
, — . , . , , . «Active» «Apply».
, ( , ) - . - SQL-. WinCC OA SQL Query. ( gedi Module) System Management.
Reports:
SQL-Query. ALL Value type ( , ).
SELECT DPE, . , , « — », . — originalvalue originalstime. Configuration Elements of the SELECT Statements «Append» «Insert», . . , .
From , .
, Flap* Elements of the FROM statement.
Data:
Create query, Start query, .
. - SQL-. Main EXPORT.
Click . SQL-, SQL-query :
dpQuery. dpQuery dpGet , , SQL-, , dpGet . — SQL. , WinCC OA — dyndynanytype. . , , — . , .
main(mapping event)
{
dyn_dyn_anytype Tab;
dpQuery("SELECT ALL '_original.._value', '_original.._stime' FROM 'Flap*'", Tab);
}
Tab, - . Log Viewer DebugN. , . . — DebugN , «» . , , . — , . , — , , , . , DebugN , , , . , .
Letztendlich sieht der EXPORT-Button-Handler folgendermaßen aus:
main(mapping event)
{
dyn_dyn_anytype Tab;
dpQuery("SELECT ALL '_original.._value', '_original.._stime' FROM 'Flap*'", Tab);
DebugN("SQL", Tab);
}
Nachdem Sie das Skript gespeichert haben, starten Sie das Hauptfenster erneut zur Ausführung. Suchen Sie das Log Viewer-Fenster (es wird beim Systemstart immer automatisch geöffnet) und löschen Sie die Protokollausgabe mit der Schaltfläche "Kreuz".
Drücken Sie zur Laufzeit die EXPORT-Taste und sehen Sie sich die Ausgabe im Protokoll an:
Das Entladen stellte sich als sehr groß heraus und es wird weit von allem gezeigt, was LogViewer ehrlich berichtet:
Es ist eine Schande, aber logisch. Die Ausgabe einiger Megabyte Text in ein Journal ist keine gute Wahl. In der Praxis kann die Tab-Variable analysiert und mit Ihrer Mathematik gespielt werden. Sie können Informationen in einer Tabelle usw. anzeigen.