-> Hier kostenlos registrieren
Hallo Leute,
mein Problem ist folgendes:
Ich habe ein System mit mehreren SPSen (S7-300). Ich lese nun über ein .Net-Projekt Daten aus den SPSen. Die Komunikation erfolgt über AGLink3.7 und TCP/IP.
Es kann nun aber vor kommen, daß einzelne SPSen abgeschaltet werden (Störung, Umbau oder einfach keine Produktion auf der Anlage)
Mein Problem ist es nun, daß mein Projekt nicht erkennt ob eine SPS wieder eingeschlaltet wurde oder nicht.
Die Verbindung wird mit folgendem Code aufgebaut:
Die Funktion gibt nun an, daß die Verbindung in Ordnung ist, aber wenn ich Daten aus der SPS lese, ergibt sich das die Verbindung nicht in Ordnung ist.
Der Versuch die Verbindungen mit folgendem Code zu kappen
und sie dann erneut auszubauen (mit dem 1. Code) scheitert auch.
Erst wenn das komplette Projekt gestoppt wird und neu gestartet wird, werden die SPSen richtig erkannt. (Auch die nicht vorhandenen.
Dieses Problem habe ich nun schon einige Monate, aber keiner konnte helfen...
Ich hoffe ich komme auf diesem Weg zu einer Lösung.
Gruß
Dirk-Uwe
mein Problem ist folgendes:
Ich habe ein System mit mehreren SPSen (S7-300). Ich lese nun über ein .Net-Projekt Daten aus den SPSen. Die Komunikation erfolgt über AGLink3.7 und TCP/IP.
Es kann nun aber vor kommen, daß einzelne SPSen abgeschaltet werden (Störung, Umbau oder einfach keine Produktion auf der Anlage)
Mein Problem ist es nun, daß mein Projekt nicht erkennt ob eine SPS wieder eingeschlaltet wurde oder nicht.
Die Verbindung wird mit folgendem Code aufgebaut:
Code:
rv = AGL.OpenDevice(KonfSys.konf_sps(i).DevNr)
If (rv = AGL.AGL_SUCCESS) Then
rv = AGL.DialUp(KonfSys.konf_sps(i).DevNr, 1)
If (rv = AGL.AGL_SUCCESS) Then
rv = AGL.InitAdapter(KonfSys.konf_sps(i).DevNr, 1)
If (rv = AGL.AGL_SUCCESS) Then
For ii = 1 To KonfSys.AnzSPS
rv3 = AGL.PLCConnect(KonfSys.konf_sps(ii).DevNr, KonfSys.konf_sps(ii).PlcNr, AGL.WAIT)
KonfSys.konf_sps(ii).rv = rv3
If (rv3 = AGL.AGL_SUCCESS) Then
KonfSys.konf_sps(ii).Alive = True
Else
KonfSys.konf_sps(ii).Alive = False
End If
Next
Else
rv2 = AGL.ExitAdapter(KonfSys.konf_sps(i).DevNr, 1)
rv2 = AGL.HangUp(KonfSys.konf_sps(i).DevNr, 1)
rv2 = AGL.CloseDevice(KonfSys.konf_sps(i).DevNr)
End If
Else
rv2 = AGL.HangUp(KonfSys.konf_sps(i).DevNr, 1)
rv2 = AGL.CloseDevice(KonfSys.konf_sps(i).DevNr)
End If
Else
rv2 = AGL.CloseDevice(KonfSys.konf_sps(i).DevNr)
End If
Die Funktion gibt nun an, daß die Verbindung in Ordnung ist, aber wenn ich Daten aus der SPS lese, ergibt sich das die Verbindung nicht in Ordnung ist.
Der Versuch die Verbindungen mit folgendem Code zu kappen
Code:
For ii = 1 To KonfSys.AnzSPS
rv = AGL.PLCDisconnect(KonfSys.konf_sps(ii).DevNr, KonfSys.konf_sps(ii).PlcNr, AGL.WAIT)
Next ii
If (rv = AGL.AGL_SUCCESS) Then
rv = AGL.ExitAdapter(KonfSys.konf_sps(i).DevNr, 1)
If (rv = AGL.AGL_SUCCESS) Then
rv = AGL.HangUp(KonfSys.konf_sps(i).DevNr, 1)
If (rv = AGL.AGL_SUCCESS) Then
rv = AGL.CloseDevice(KonfSys.konf_sps(i).DevNr)
End If
End If
End If
und sie dann erneut auszubauen (mit dem 1. Code) scheitert auch.
Erst wenn das komplette Projekt gestoppt wird und neu gestartet wird, werden die SPSen richtig erkannt. (Auch die nicht vorhandenen.
Dieses Problem habe ich nun schon einige Monate, aber keiner konnte helfen...
Ich hoffe ich komme auf diesem Weg zu einer Lösung.
Gruß
Dirk-Uwe