Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
28.06.2020, 10:47 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2020 11:00 von Mistered.)
Hallo,
Ich benötige mal wieder etwas Hilfestellung. Mein Programm kommuniziert über mehrere Serielle Schnittstellen mit verschiedenen Geräten. Alle sind ähnlich aufgebaut, ein Muster habe ich mal angehängt. Grundsätzlich funktioniert das erstmal so, nur manchmal wird die Verbiindung zum Port verloren. Nach Programmstop und wieder starten läuft wieder alles. In seltenen Fällen hilf jedoch nur ein Rechner-Neustart. Ich würde jetzt gern den Verbindungsstatus überwachen und im Falle eines Verlustes schliessen und wieder öffnen, weiss aber nicht genau wie ich das am besten mache. Über die Auswertung des Fehlercodes wäre eine Möglichkeit, dann ist aber der Befehl, der gesendet werden sollte verloren. Wär nicht gut. Geht das auch über eine Abfrage in den Pausen mittels VISA STB? Oder gibt es klügere Vorgehensweisen?
Vielen Dank
Ed
28.06.2020, 12:41 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2020 12:41 von Martin.Henz.)
(28.06.2020 10:47 )Mistered schrieb: Grundsätzlich funktioniert das erstmal so, nur manchmal wird die Verbiindung zum Port verloren. Nach Programmstop und wieder starten läuft wieder alles. In seltenen Fällen hilf jedoch nur ein Rechner-Neustart.
So etwas passiert nicht ohne Not. Ich wage mal die Vorhersage, dass du damit nie glücklich wirst, wenn du nicht die eigentliche Ursache suchst und beseitigst. So etwas kenne ich hauptsächlich von USB-RS232 Adaptern, evtl. auch USB-Hubs und alles was damit zusammenhängt (USB Kabel, Stecker/Buchsen).
BTW: Deine VIs habe ich nicht betrachtet - da könnte natürlich auch etwas grob falsch sein.
Sicherlich hast Du damit recht, Ursache finden ist die beste Massnahme. Sehe ich auch so. Das ist aber erstmal nicht so einfach, die betroffenen Ports haben verschiedene Adapter. USB auf CAN, Ethernet auf CAN, Ethernet auf RS485. Ich habe leider keine zweite Installation zum testen, dann wäre das einfacher. Daher würde ich gerne erstmal die Ausfälle durch die Portüberwachung reduzieren und im zweiten Schritt, wenn die Sache im Winter steht, auf die Suche nach dem Ausöser gehen.
Hallo Ed,
das problem liegt in dem VI "CAN_DeviceSet.vi".
Auszug aus der Hilfe:
Zitat:Unter bestimmten Bedingungen (Erreichen des Pufferendes, Erreichen eines Endzeichens oder Timeout) gibt die Funktion nicht die gewünschte Anzahl von Bytes aus. Ob ein Timeout aufgetreten ist, wird am Fehler-Cluster-Ausgang angezeigt.
Hier kann/ wird ein Error ausgegeben, fängst Du dies ab?
Wenn nicht könnte dies der Grund für die Abstürze sein.
Hallo Freddy,
nein, bisher unternehme ich nichts mit den Fehlermeldungen. Soll ich die einfach speichern oder bei auftreten bestimmter Fehler die Schnittstelle schliessen und und neu starten? Momentan logge ich die Kommunikation mit dem Serial Port Monitor in der Hoffnung, einen Hinweis zu finden. Der CAN Bus scheint mir auch recht empfindlich auf die Verkabelung zu reagieren. Die Schnittstellen an den Ventilen werden parallel gerade auf niedrigere Übertragungsraten umprogrammiert, heisst neue Firmware geschrieben.
1. Es fehlt die Vi in der Du die Schnittstelle initialisierst.
2. Du lässt zwischen schreiben und lesen 5msec reicht das?
Oder kann es sein, dass die "alte" Antwort (read) noch nicht gelesen wurde und die neue Frage (write) schon läuft?
Hallo Freddy,
vielen Dank für den Link. Scheint ja ein Kollege mit ähnlichen Problemen zu sein (UNI). Werd das morgen früh mal n diese Richtung umbauen, auch wenns mehrere Änderungen gleichzeitig sind, und dann mal berichten. Da der Fehler einige Tage bis zur Oberfläche braucht, wird das nicht gleich sein.
Danke schön
Ed
Hallo,
ich habe jetzt die VISA auf synchron gestellt und parallel die Verkabelung soweit wie möglich auf CAN-zertifizierte Kabel umgestellt. Nun scheint es zu funktionieren, zumindest die unerwarteten Neustarts bleiben aus. Allerdings reagiert beim ansprechen der ID 12 auch weiterhin die ID 8 mit. Das hab ich erstmal mittels Änderung der ID behoben.
Vielen Dank!
Ed