# Maximale Anzahl gleichzeitiger Verbindungen AGLink



## Bitreactor (17 Dezember 2010)

Hallo zusammen,
weiß jemand wie viele gleichzeitige Verbinungen man
mit Deltalogic AGLink aufbauen kann?
Ich habe für unseren Betrieb eine Datenerfassungssoftware programmiert
an der mittlerweile ca. 30 Adapter hängen welche in unterschiedlichen Intervallen abgefragt werden. Für jeden Adapter wird ein separaten Thread gestartet. Leider kommt es zu dem Problem dass scheinbar nicht ausreichend Verbindungen gleichzeitig aufgebaut werden können.
Nun würde ich gerne wissen wo das begrenzt ist, AGLink, Betriebssystem (XP Pro)?

Vielen Dank im Voraus


----------



## Rainer Hönle (17 Dezember 2010)

In der Standardkonfiguration kann ACCON-AGLink 16 Geräte mit bis zu jeweils 16 SPS-Verbindungen. Durch einen entsprechenden Konfigurations-Eintrag kann die Anzahl der Geräte auf bis 1024 erhöht werden. Die Geräte sind dabei alle vollkommen unabhängig voneinander.
Welche Adapter werden denn verwendet? Wieviele SPSen werden über einen Adapter angesprochen?
Anmerkung: Bei asynchroner Kommunikation genügt ein Thread in der Applikation, den Rest erledigt ACCON-AGLink. In welcher Programmiersprache wird denn ACCON-AGLink verwendet?


----------



## Bitreactor (17 Dezember 2010)

Hallo, erstmal danke für die schnelle Antwort.
Die Anwendung ist in c# (NET 4.0) geschrieben.
Die angesprochenen CPU´s (ca. 30) sind Siemens S315/317 teilweise mit NetLink Adaptern und teilweise mit CP Baugruppen. Die Anwendung startet pro Adapter/CP Baugruppe 1 Thread (andere Vorgehensweise über AGLink/aync) ist mir bekannt wird aber nicht verwendet.
Das Problem ist dass aus irgend einem Grund nicht ausreichend gleichzeitige Verbindungen aufgebaut werden können. Am stärksten zeigt sich das wenn einige Anlagen ausgeschaltet sind und die Abfrage erst nach eingestelltem Timeout abgebrochen wird, also sehr lange dauert.
Nun möchte ich gerne wissen woher diese Begrenzung kommt.

Gruß Stephan


----------



## Rainer Hönle (17 Dezember 2010)

Welches der möglichen .net-Interfaces wird verwendet?


----------



## Bitreactor (17 Dezember 2010)

Hallo meinen sie welche Version der API?

AGL4DotNET.dll 4.4.0.3


----------



## Rainer Hönle (17 Dezember 2010)

Nein, ich meine welches Interface. Im API-Guide kann man die verschiedenen Interfaces auswählen. 
Welche Funktionen bzw. welchen Namensraum verwenden Sie?


----------



## Bitreactor (17 Dezember 2010)

Hallo die Hauptfunktionen sind:

Accon.AGLink.AGL4.OpenDevice 
Accon.AGLink.AGL4.DialUp
Accon.AGLink.AGL4.InitAdapter
Accon.AGLink.AGL4.PLCConnect
 

Accon.AGLink.AGL4.ReadDataBytes

Accon.AGLink.AGL4.PLCDisconnect
Accon.AGLink.AGL4.ExitAdapter
Accon.AGLink.AGL4.HangUp
Accon.AGLink.AGL4.CloseDevice


----------



## Rainer Hönle (17 Dezember 2010)

Diese Funktionen leiten nur direkt an ACCON-AGLink weiter. Ein Blockieren auf dieser Seite ist nicht vorgesehen bzw. implementiert. Einzig und allein OpenDevice erfolgt intern synchron.
Aber noch einmal zum genauen Aufbau:
- wieviele ACCON-AGLink-Geräte sind konfiguriert?
- welches Gerät hat welchen Typ?
- wieviele SPSen werden über welches Gerät angesprochen?
- wer bekommt einen eigenen Thread, das Gerät oder die SPS (Verbindung)?
- wer hängt und was macht der Rest?
- am besten einfach mal die Konfigurations-XML-Dateien an support at deltalogic.de schicken.

Wie gesagt, an dieser Stelle gibt es AGLink-seitig keine Begerenzung. Unsere Kunden haben Lösungen mit weit über 100 SPSen am laufen, die von einem PC aus abgefragt werden.


----------



## Bitreactor (17 Dezember 2010)

Die genaue Zahl der Geräte muss ich gleich nachschauen wenn ich in der Firma bin, es sind glaube ich 23.

Die Geräte sind vom Typ S7-TCP/IP bzw. S7-NetLink

Es wird jeweils 1 SPS pro Gerät angesprochen, allerdings
gibt es teilweise pro SPS mehre Unterstationen welche Ihre Daten
in separate DB´s schreiben. Diese werden nach dem Verbindungsaufbau
nacheinander abgefragt.

Jedes Gerät bekommt einen Threat.

Wenn zu viele Verbindungen bereits geöffnet sind, ich schätze so 5-6, können sich die anderen Geräte nicht mehr verbinden. Am stärksten tritt dieser Effekt auf wenn einige Geräte nicht erreichbar sind und deshalb die Verbindung für diese Geräte lange, also bis zum Timeout geöffnet bleiben.

17 Config Dateien habe ich geschickt, den Rest könnte ich später senden wenn ich in der Firma bin.


----------



## Bitreactor (17 Dezember 2010)

"OpenDevice erfolgt intern synchron"
Wenn ich das richtig verstehe kann diese Funktion nicht mehrfach "gleichzeitig" ausgeführt werden.
Das würde bedeuten wenn eines der Geräte nicht erreichbar ist, müssen alle anderen warten bis der Timeout abgelaufen ist?


----------



## Rainer Hönle (17 Dezember 2010)

bitrider schrieb:


> "OpenDevice erfolgt intern synchron"
> Wenn ich das richtig verstehe kann diese Funktion nicht mehrfach "gleichzeitig" ausgeführt werden.
> Das würde bedeuten wenn eines der Geräte nicht erreichbar ist, müssen alle anderen warten bis der Timeout abgelaufen ist?



Dies bedeutet nur, dass die anderen "gleichzeitig" abgesetzten OpenDevice-Aufrufe warten müssen, bis das vorige OpenDevice beendet ist. Hier wird intern nur Speicher allokiert und Strukturen initialisiert. Dies dauert also nicht lange.

Können Sie mir noch die restlichen Datien schicken und die restlichen Fragen beantworten? 

Nur noch zu meinem Verständnis: Sie fragen pro ACCON-AGLink-Gerät nur eine SPS ab? D.h. es kommen keine Vernetzungen über MPI/PROFIBUS (bei ACCON-NetLink-PRO-Verwendung) vor? Und bei S7-TCP/IP ist auch nur eine der 16 möglichen SPSen pro ACCON-AGLink-Gerät parametriert?


----------



## Bitreactor (17 Dezember 2010)

Ich habe jetzt nochmal nachgeschaut. 
Es sind momentan "nur" 17 Geräte konfiguriert, die Dateien sind also vollständig.
Es wird pro Gerät nur 1 SPS angesprochen und es gibt auch keine Vernetzung über MPI/PB.
Es werden bei einigen SPSen nur mehrere Datenbausteine abgefragt was aber in einer Schleife innerhalb einer Verbindung passiert (bis zu 4), daher sollte das ja nicht von Bedeutung sein.


----------



## Rainer Hönle (17 Dezember 2010)

Ok, dann fehlt nur noch dir Antwort auf
- wer hängt (bei welcher Funktion) und was macht der Rest?


----------



## Rainer Hönle (17 Dezember 2010)

Ach ja, der NetLink muss ja schon bei InitAdapter eine Fehlermeldung bringen (wenn die SPS, an der er steckt ausgeschaltet ist). Wie sieht die Fehlerbehandlung in der Applikation aus.


----------



## Bitreactor (18 Dezember 2010)

Die erste Funktion die eine Fehlermeldung bei nicht erreichbarem Adapter zurückgibt ist
PLCConnect -720894 "Keine Verbindung zum AG".

Was die eigentlich Erreichbaren dann gerade tun wenn keine Verbindung zu ihnen aufgebaut werden kann, kann ich im Moment nicht sagen, das ist schwierig zu debuggen.

Ich habe allerdings das Ganze mal in einer virtuellen Umgebung
getestet.
Ich habe bis zu 40 nicht erreichbare Stationen hinzugefügt und dort tritt das Problem nicht auf. Die Timeouts im Schritt "PLCConnect" laufen schön parallel zueinander ab, es wird also nichts blockiert und die, die noch erreichbar sind bereiten auch keine Probleme.

Meine Vermutung ist jetzt dass es an unserem Firmennetz liegen könnte, dass da evtl. nicht genügend TCP Verbindungen von einem Rechner aus zugelassen werden.
Das könnte ja vom Betriebssystem (alle Rechner im Werk werden mit einem Standard Image installiert) oder von einer Switch verursacht werden. Ich werde versuchen das mit unserer IT Abteilung zu klären und melde mich dann nochmal.

Erstmal vielen Dank für Ihre Hilfe.


----------



## Rainer Hönle (18 Dezember 2010)

Dann stimmt etwas nicht. Wie geschrieben, liefert InitAdapter einen Fehler, wenn ein NetLink verwendet wird, der nicht erreichbar ist und nicht erst PLCConnect. Bei S7-TCP/IP wäre das Verhalten in Ordnung.
Ansonsten bin ich auf das Ergebnis gespannt. Allerdings hätte ich erwartet, dass dann ein Fehler gemeldet wird und das Ganze nicht in einen Timeout läuft.


----------



## Bitreactor (18 Dezember 2010)

Ich hätte da allerdings noch eine Frage.
Man kann ja jeder der verwendeten Funktionen einen Timeout als Parameter mitgeben. Inwiefern spielt der Stationsbezogene Timeout in der
Gerätekonfiguartion da noch eine Rolle?
Gibt es Richtwerte für die Timeouts im LAN?


----------



## Rainer Hönle (18 Dezember 2010)

Ganz einfach: 
- wird bei den Funktionen ein Timeoutwert von 1 angegeben, dann wird der Standardtimeoutwert mit synchronem Aufruf verwendet
- wird bei den Funktionen ein Timeoutwert von 0 angegeben, dann wird der Standardtimeoutwert mit asynchronem Aufruf verwendet
- wird bei den Funktionen ein Timeoutwert von -1 angegeben, dann wird unendlich lange mit asynchronem Aufruf gewartet

Dadurch kann der Timeoutwert ohne Programmänderung verändert werden. Bei manchen Funktionen macht ein langer Timeoutwert Sinn, z. B. bei der Anwahl über Modem, dann kann genau dies bei der jeweiligen Funktion eingetragen werden.

Richtwerte gibt es nicht. Er sollte nur mindestens so groß sein, dass ein erfolgreicher Abschluss auf jeden Fall erkannt wird und noch nicht zu einem Fehler führt. Bei direkter Kopplung reichen oft 1000 ms, bei Kopplungen über das Internet können auch mal 30000 ms sinnvoll sein.


----------



## Bitreactor (20 Januar 2011)

Hallo,
ich glaube nun das Problem gefunden zu haben.

Das Problem ist die mit dem SP2 von Windows XP  eingeführte Limitierung
der "halb offenen Verbindungen". D.h. Verbindungen die keine Rückantwort bekommen.
Dieses Limit ist bei XP Pro auf 10 festgelegt.
Ich konnte das Problem in einer Testumgebung mit Win XP jetzt nachstellen.
Ich habe 22 nicht erreichbare Geräte eingerichtet und 1 Gerät welches erreichbar ist. Das erreichbare Gerät hat nicht immer eine Verbindung bekommen, nachdem ich mit dem EventId Patcher das Verbindungslimit auf 50
gesetzt hatte trat dieses Verhalten nicht mehr auf und die erreichbare Station konnte immer verbunden werden.
Ich werde die Änderung morgen früh auf den Produktivrechner übernehmen
und hoffe dass das Problem damit gelöst ist.


----------

