Hallo,
wir verwenden für ein Schulprojekt die USB-LRB_Relaiskarte zur Weichensteuerung. Wir programmieren diese unter VisualC++.
Ein Problem gibt es jedoch, da die Relais nur kurz angeschaltet werden sollen und nach kurzer Zeit wieder automatisch ausgeschaltet werden sollen. Dazu haben wir versucht, eine Zeitverzögerung in das Programm einzubauen, so dass ein Programmabschnitt z.B. so aussieht:
REL1 -> REL_1 = 1 ;
REL1 -> REL_7 = 1 ;
Thread::Sleep(1000);
REL1 -> REL_1 = 0 ;
REL1 -> REL_7 = 0 ;
Leider führt dies dazu, dass die ersten beiden Befehle nicht ausgeführt werden. Die beiden letzten Befehle laufen aber problemlos (wenn man die Relais vorher anschaltet, werden diese vom Programm ausgeschaltet). Meine Vermutung ist, dass die Verzögerung des Programms mit der Schaltzeit der Relaiskarte kollidiert.
Über einen Lösungsvorschlag wären wir sehr dankbar.
Gruß, Holger
USB-LRB-Relaiskarte Zeitverzögerung?
Re: USB-LRB-Relaiskarte Zeitverzögerung?
Ich würde lieber in einschlägigen Programmierforen stöbern oder nachfragen.
Möglichkeiten gibt es immer viele. Systemzeit abfragen, Timer verwenden, etc.
Möglichkeiten gibt es immer viele. Systemzeit abfragen, Timer verwenden, etc.
ABACOM support
Re: USB-LRB-Relaiskarte Zeitverzögerung?
Vielen Dank,
wir haben inzwischen eine Lösung mit einem Timer, der nach den ersten beiden Befehlen gestartet wird, gefunden. Bei C++ scheint die Zeitverzögerung je nach Version und Compiler sehr unterschiedlich zu sein, so dass viele mögliche Lösungen unter VisualC++ nicht funktionieren .
Gruß,
Holger
wir haben inzwischen eine Lösung mit einem Timer, der nach den ersten beiden Befehlen gestartet wird, gefunden. Bei C++ scheint die Zeitverzögerung je nach Version und Compiler sehr unterschiedlich zu sein, so dass viele mögliche Lösungen unter VisualC++ nicht funktionieren .
Gruß,
Holger
Re: USB-LRB-Relaiskarte Zeitverzögerung?
Wenn Lösungen zu Aufgaben gefunden wurden, dürfen diese hier auch gerne vorgestellt werden.
ABACOM support