لنحرك لوحة الاتجاهات المنشأة بالفعل (ولكن الفارغة) برسم بياني لتغييرات المتغير بمرور الوقت. ومع ذلك ، قبل النظر إلى الاتجاهات ، يجب تكوينها وتعيين القيم بطريقة ما بحيث تتراكم في قاعدة البيانات. من الضروري أن يكون للنظام متغير يغير قيمته. من الضروري تعليق التكوين المقابل على هذا المتغير بحيث تتم إضافة القيم إلى الأرشيف. بالنسبة لنوع نقطة بيانات Flap ، لدينا DPE يسمى Flow واكتب int. سيتم استخدام DPE هذا للتعرف على الاتجاهات. لمحاكاة سلوك النظام ، لدينا بالفعل نموذج نصي للتحكم. أقترحه وأستخدمه لمحاكاة معدل التدفق. لنفتح النموذج النصي:
, « » ( 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 , , , . , .
في النهاية ، يبدو معالج زر التصدير كما يلي:
main(mapping event)
{
dyn_dyn_anytype Tab;
dpQuery("SELECT ALL '_original.._value', '_original.._stime' FROM 'Flap*'", Tab);
DebugN("SQL", Tab);
}
بعد حفظ النص ، ابدأ النافذة الرئيسية مرة أخرى للتنفيذ. دعنا نعثر على نافذة عارض السجل (تُفتح دائمًا تلقائيًا عند بدء تشغيل النظام) ، امسح إخراج السجل باستخدام الزر "التقاطع" لراحتنا:
اضغط على زر EXPORT في وقت التشغيل وانظر إلى الإخراج في السجل:
تبين أن التفريغ كبير جدًا ، ولم يظهر كل شيء أن LogViewer يبلغ بصدق:
إنه لأمر مخز ، لكنه منطقي. لا يعد إخراج بضع ميغا بايت من النص في إحدى المجلات خيارًا جيدًا. في الممارسة العملية ، يمكنك تحليل متغير Tab وتشغيل الرياضيات عليه. يمكنك عرض المعلومات في جدول وما إلى ذلك.