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;
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.}{12}", 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: