Hallo Zusammen,
ich bin dabei eine Software zu entwickeln mit der ich in Abhängigkeit von verschiedenen Zuständen in einer SPS Emails absetzen kann.
Als Schnittstelle zur SPS dient ein OPC-Server. Bei der Verbindung zum OPC server kommt es immer mal wieder zu einem nicht reproduzierbaren Problem. Beim Anlegen eines neuen OPC Items tritt folgender AccessViolationException Fehler auf:
Error1.jpg
Mein OS ist Windows7 Professional. Ich arbeite mit Visual Studio 2010. Mein Code sieht wie folgt aus:
Kann weiß jemand wodurch dieser Fehler entstehen kann? Was kann ich dagegen tun?
Vielen Dank im Voraus für eure Hilfe!
Gruß Stumpi
ich bin dabei eine Software zu entwickeln mit der ich in Abhängigkeit von verschiedenen Zuständen in einer SPS Emails absetzen kann.
Als Schnittstelle zur SPS dient ein OPC-Server. Bei der Verbindung zum OPC server kommt es immer mal wieder zu einem nicht reproduzierbaren Problem. Beim Anlegen eines neuen OPC Items tritt folgender AccessViolationException Fehler auf:
Error1.jpg
Mein OS ist Windows7 Professional. Ich arbeite mit Visual Studio 2010. Mein Code sieht wie folgt aus:
Code:
Public Class Watchdog Dim aServer As New OPCAutomation.OPCServer Public WithEvents aGroup As OPCAutomation.OPCGroup Public Item1 As OPCAutomation.OPCItem Public Items As OPCAutomation.OPCItem() Public ItemCount As Integer Dim Itemlist As New ArrayList 'Bei Datenänderung wird Private Sub aGroup_DataChange(ByVal TransactionID As Integer, ByVal NumItems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues As System.Array, ByRef Qualities As System.Array, ByRef TimeStamps As System.Array) Handles aGroup.DataChange Dim Count As Integer 'Label1.Text = Item1.Value Count = 0 For Count = 0 To ItemCount - 1 gvStatus.Rows(Count).Cells(0).Value = Items(Count).ItemID gvStatus.Rows(Count).Cells(1).Value = Items(Count).Value gvStatus.Rows(Count).Cells(2).Value = Items(Count).TimeStamp 'Änderung der Zeilenfarbe If Items(Count).Value = "False" Then gvStatus.Rows(Count).DefaultCellStyle.BackColor = Color.Green Else gvStatus.Rows(Count).DefaultCellStyle.BackColor = Color.Red End If Next End Sub 'Liest die EMSR Stellen ein und erstellt die Liste mit den zu überwachenden OPC Items Private Sub ReadEMSR() Dim Count As Integer Count = 0 For Count = 0 To ItemCount - 1 Items(Count) = aGroup.OPCItems.AddItem(Itemlist.Item(Count), Count) 'HIER TRITT DER FEHLER AUF gvStatus.Rows(Count).Cells(0).Value = Items(Count).ItemID gvStatus.Rows(Count).Cells(1).Value = Items(Count).Value gvStatus.Rows(Count).Cells(2).Value = Items(Count).TimeStamp Next End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load gvStatus.ColumnCount = 3 gvStatus.Columns(0).Name = "EMSR Stelle" gvStatus.Columns(1).Name = "Wert" gvStatus.Columns(2).Name = "Zeitstempel" Dim aStreamReader As StreamReader Dim aCSVItem As String Try aStreamReader = New System.IO.StreamReader("C:\ERR.csv") Do aCSVItem = aStreamReader.ReadLine Itemlist.Add(aCSVItem & "/SMO") Loop Until (aCSVItem Is Nothing) aStreamReader.Close() Catch ex As Exception End Try ItemCount = Itemlist.Count - 1 ReDim Items(ItemCount) For Count = 0 To ItemCount gvStatus.Rows.Add() gvStatus.Rows(Count).Cells(0).Value = Itemlist(Count).ToString Next End Sub Private Sub btConnect_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConnect.Click 'On Error GoTo ConnectionERR Call aServer.Connect("Freelance2000OPCServer.30") aGroup = aServer.OPCGroups.Add("Errors") aGroup.IsSubscribed = True aGroup.UpdateRate = 500 'Item1 = aGroup.OPCItems.AddItem("MBIN1/SMO", 1) ReadEMSR() ToolStripStatusLabel1.Text = "Verbunden" Exit Sub 'ConnectionERR: ' ToolStripStatusLabel1.Text = "Verbindungsfehler" End Sub Private Sub btDisconnect_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btDisconnect.Click On Error GoTo DisonnectionERR aServer.Disconnect() ToolStripStatusLabel1.Text = "Getrennt" 'Änderung der Zeilenfarbe For Count = 0 To ItemCount gvStatus.Rows(Count).DefaultCellStyle.BackColor = Color.White Next Exit Sub DisonnectionERR: ToolStripStatusLabel1.Text = "Fehler beim Trennen" End Sub End Class
Vielen Dank im Voraus für eure Hilfe!
Gruß Stumpi
Comment