WinCC Connectivity Pack

tayfa35

Üye
Katılım
15 May 2008
Mesajlar
9
Puanları
1
Yaş
40
Arkadaşlar merhabalar,

1024 Tag WinCC RT/RC lisansım ve Connectivity pack lisansım var. Yapmış olduğum scada da makinelerin güç, gerilim vb verilerini scada üzerinden okuyup arşiv olarak kaydediyorum. bu arşiv taglarını günlük bazda rapor alabilmek için connectivity pack aldım ve bu paketin manuelinde bulunan 191 sayfadaki VB örneğini hazırladım. Program istediğim tag'a ait verileri alabiliyor ancak şöyle bir sorunum var. Örneğin VB programında Saat 00:00:00'daki makinenin güç bilgisi 5000kW olsun. Scada'da trend kontrolden tag export yaptığımda burada saat 03:00:00'daki değer olmuş oluyor. VB programı gerçekte 03:00:00'daki değeri 00:00:00'daki değermiş gibi kabul ediyor. uzun olduysa kusura bakmayın yardımlarınızı bekliyorum. İyi çalışmalar. VB örnek kodu aşağıda veriyorum;

Const MaxRows = 100

'1.1 Make connection string for ADO.NET access

Dim ProviderName As String

Dim CatalogName As String

Dim DataSourceName As String

Dim ConnectionString As String

Dim CommandString As String

ProviderName = "Provider=WinCCOLEDBProvider.1;"

CatalogName = "Catalog=CC_CPSample_07_10_09_13_44_26R;"

DataSourceName = "Data Source=.\WinCC"

ConnectionString = ProviderName + CatalogName + DataSourceName

' 1.2 Define command string for OLE DB access (relative time range, last 10 minutes)

CommandString = "TAG:R,'ArTags\Tag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000'"

Try

Dim DBConnection As System.Data.OleDb.OleDbConnection

Dim DBCommand As System.Data.OleDb.OleDbCommand

Dim DBReader As System.Data.OleDb.OleDbDataReader

' 2.1 Open an OLE DB connection

DBConnection = New System.Data.OleDb.OleDbConnection(ConnectionString)

DBConnection.Open()

' 2.2 Execute command

DBCommand = New System.Data.OleDb.OleDbCommand(CommandString, DBConnection)

DBReader = DBCommand.ExecuteReader()

' 3.1 Prepare list view control

Dim DBTimeStamp As System.DateTime

Dim DBValue As System.Double

Dim DBQualityCode As Integer

Dim DBFlags As Integer

Dim ColumnEntry As String

Me.ListView1.View = View.Details

Me.ListView1.GridLines = True

Me.ListView1.TabIndex = 0

Me.ListView1.Width = 400

Me.ListView1.Columns.Add("TimeStamp",HorizontalAlignment.Center)

Me.ListView1.Columns(0).Width = 150

Me.ListView1.Columns(0).Text = "Time Stamp"

Me.ListView1.Columns.Add("Value", HorizontalAlignment.Center)

Me.ListView1.Columns(1).Width = 60

Me.ListView1.Columns(1).Text = "Value"

Me.ListView1.Columns.Add("QC", HorizontalAlignment.Center)

Me.ListView1.Columns(2).Width = 60

Me.ListView1.Columns(2).Text = "Quality Code"

Me.ListView1.Columns.Add("Flags", HorizontalAlignment.Center)

Me.ListView1.Columns(3).Width = 60

Me.ListView1.Columns(3).Text = "Flags"

Dim SingleRow As ListViewItem

Dim Count As Integer

Count = 0

' 3.2 Fetch subsequent rows of the result set

While (DBReader.Read And Count < MaxRows)

DBTimeStamp = DBReader.GetDateTime(1)

DBValue = DBReader.GetDouble(2)

DBQualityCode = DBReader.GetInt32(3)

DBFlags = DBReader.GetInt32(4)

' 3.3 Fill list view columns

ColumnEntry = String.Format("{0:dd.MM.yy HH:mm:ss.}{1:D2}", DBTimeStamp, DBTimeStamp.Millisecond)

SingleRow = New ListViewItem(ColumnEntry)

ColumnEntry = String.Format("{0:F}", DBValue)

SingleRow.SubItems.Add(ColumnEntry)

ColumnEntry = String.Format("{0:X2}", DBQualityCode)

SingleRow.SubItems.Add(ColumnEntry)

ColumnEntry = String.Format("{0:X4}", DBFlags)

SingleRow.SubItems.Add(ColumnEntry)

Me.ListView1.Items.Add(SingleRow)

Count = Count + 1

End While

' 4 Clean up

DBReader.Close()

DBConnection.Close()

' 5 Exception (error) handling

Catch ex As Exception

MessageBox.Show(ex.Message, "Error Occured !")

End Try

 
Son düzenleme:

Forum istatistikleri

Konular
129,799
Mesajlar
930,196
Kullanıcılar
452,593
Son üye
cKaradeniz301

Yeni konular

Geri
Üst