変数の経時変化のグラフを使用して、作成済みの(ただし空の)トレンドパネルをアニメーション化してみましょう。ただし、傾向を確認する前に、それらを構成し、データベースに蓄積されるように何らかの方法で値を設定する必要があります。システムには、その値を変更する変数が必要です。値がアーカイブに追加されるように、この変数に対応する構成をハングアップする必要があります。フラップデータポイントタイプの場合、Flowと呼ばれるDPEがあり、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 , , , . , .
最終的に、EXPORTボタンハンドラーは次のようになります。
main(mapping event)
{
dyn_dyn_anytype Tab;
dpQuery("SELECT ALL '_original.._value', '_original.._stime' FROM 'Flap*'", Tab);
DebugN("SQL", Tab);
}
スクリプトを保存したら、メインウィンドウを再度起動して実行します。ログビューアウィンドウ(システムの起動時に常に自動的に開きます)を見つけ、便宜上「クロス」ボタンを使用してログ出力をクリアします。
実行時にEXPORTボタンを押して、ログの出力を確認します。
荷降ろしは非常に大きいことが判明し、すべてからはほど遠いことが示されています。これはLogViewerが正直に報告しています。
残念ですが、論理的です。ジャーナルに数メガバイトのテキストを出力することは良い選択ではありません。実際には、Tab変数を解析して、数学で再生することができます。テーブルなどに情報を表示できます。