Animamos el panel de Tendencias ya creado (pero vacío) con un gráfico de los cambios de la variable a lo largo del tiempo. Sin embargo, antes de mirar las tendencias, deben configurarse y de alguna manera establecer los valores para que se acumulen en la base de datos. Es necesario que el sistema tenga una variable que cambie su valor. Es necesario colgar la configuración correspondiente en esta variable para que los valores se agreguen al archivo. Para el tipo de punto de datos Flap, tenemos un DPE llamado Flow y tipo int. Este DPE se utilizará para familiarizarse con las tendencias. Para simular el comportamiento del sistema, ya tenemos un modelo de script de control creado. Sugiero usarlo para simular el caudal. Abramos el script Modelo:
, « » ( 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 , , , . , .
En última instancia, el controlador del botón EXPORTAR se ve así:
main(mapping event)
{
dyn_dyn_anytype Tab;
dpQuery("SELECT ALL '_original.._value', '_original.._stime' FROM 'Flap*'", Tab);
DebugN("SQL", Tab);
}
Una vez guardado el script, vuelva a iniciar la ventana principal para su ejecución. Busquemos la ventana del Visor de registros (siempre se abre automáticamente cuando se inicia el sistema), borre la salida del registro con el botón "cruz" para nuestra conveniencia:
Presione el botón EXPORTAR en tiempo de ejecución y observe la salida en el registro:
La descarga resultó ser muy grande y no se muestra todo, lo que LogViewer informa honestamente:
Es una pena, pero lógico. Enviar unos pocos megabytes de texto a una revista no es una buena opción. En la práctica, puede analizar la variable Tab y jugar con ella. Puede mostrar información en una tabla y así sucesivamente.