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;
[TABLE="width: 582"]
[TR]
[TD]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)
[/TD]
[/TR]
[/TABLE]
[TABLE="width: 409"]
[TR]
[TD]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)
[/TD]
[/TR]
[/TABLE]
[TABLE="width: 620"]
[TR]
[TD]' 3.3 Fill list view columns
ColumnEntry = String.Format("{0:dd.MM.yy HH:mm:ss.}{1
2}", 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
[/TD]
[/TR]
[/TABLE]
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;
[TABLE="width: 582"]
[TR]
[TD]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)
[/TD]
[/TR]
[/TABLE]
[TABLE="width: 409"]
[TR]
[TD]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)
[/TD]
[/TR]
[/TABLE]
[TABLE="width: 620"]
[TR]
[TD]' 3.3 Fill list view columns
ColumnEntry = String.Format("{0:dd.MM.yy HH:mm:ss.}{1

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
[/TD]
[/TR]
[/TABLE]
Son düzenleme: