WinTr Scada grafikleri realtime ve historical olarak çalışır. Grafikler tüm dataları lokal veya uzak database’lerden olduğu gibi getirir. Özel grafik çizimleri için xy grafikler kullanılabilir fakat bunlar sadece realtime olarak kullanılır. Bu konuda script ile database’den veri çekip bu veriyi grafik üzerinde göstermeyi anlatacağım. Böylece database’deki verilerden özel hesaplamalar ile üreteceğiniz tüm datalar grafiklerde gösterilebilir.

Bu işlemin yapılabilmesi için aşağıdaki script’i hazırladım. Bu scripti grafiğin bulunduğu sayfada refresh fonksiyonunda seçtim. Böylece sayfa refresh zamanında(default 1000 ms.) bu script çalışarak grafik yeniden çiziliyor.

Imports System

Imports System.IO

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports System.Data.SqlClient

Imports System.Globalization

Namespace WinTr

Public Class MainClass

Public ObjectNameOfActiveScreen As System.Collections.ArrayList

Public ObjectOfActiveScreen As System.Collections.ArrayList

Public QT250_eff_hour_dt As DateTime

Public Sub Load()

Try

QT250_eff_hour_dt = now.AddHours(-1)

Dim Index As Integer

Index = ObjectNameOfActiveScreen.IndexOf(“Chart_0”)

If Index = -1 Then

MsgBox(“Chart_0 cannot found!”)

Exit Sub

End If

Dim MyChart As Object = ObjectOfActiveScreen(Index) ‘Acces WinTr Chart object

MyChart.ChartAreas(0).AxisX.Minimum = QT250_eff_hour_dt.AddHours(-1).ToOADate

MyChart.ChartAreas(0).AxisX.Maximum = QT250_eff_hour_dt.ToOADate

Dim FirstTime As String = QT250_eff_hour_dt.AddHours(-1).ToString(“G”, CultureInfo.CreateSpecificCulture(“en-US”))

Dim LastTime As String = QT250_eff_hour_dt.ToString(“G”, CultureInfo.CreateSpecificCulture(“en-US”))

Dim Query As String = “SELECT [QT250_eff_hour_dt],[QT250_eff_hour] FROM Table1 WHERE [QT250_eff_hour_dt] between ‘” & FirstTime & and ‘” & LastTime & ‘”

Dim SQL_cn As New SqlConnection()

SQL_cn.ConnectionString = “Server=(local)\WinTr;uid=sa;pwd=WinTr@2013;database=Stef”

Dim command As SqlCommand = New SqlCommand(Query, SQL_cn)

MyChart.DataSource = command

MyChart.Series(0).ValueMemberX = “QT250_eff_hour_dt”

MyChart.Series(0).ValueMembersY = “QT250_eff_hour”

MyChart.DataBind()

MyChart.Tag = now & “” & now & “bitti” ‘Blocking WinTr refresh.

command.Connection.Close()

SQL_cn.Close()

Catch ex As Exception

MessageBox.Show(Ex.ToString, ” Chart Script” & Ex.Message)

End Try

End Sub

End Class

End Namespace

 

Örnek projeyi buradan indirebilirsiniz.