-> Hier kostenlos registrieren
Hallo,
ich versuche zur Zeit per ADS-DLL einen Wert von meiner EL3702 (AD-Wandler) einzulesen und ihn auf der EL4732 (DA-Wandler) auszugeben. Dieser Vorgang soll alle 50µs ausgeführt werden (So ist auch die Zykluszeit im System Manager von Beckhoff eingestellt).
Nun habe ich folgendes Problem:
ich habe mit einer Notification-Funktion (AdsSyncAddDeviceNotificationReq) ein Callback-Programm aufgerufen, dass zuerst den Wert vom AD-Wandler auslesen und danach auf der EL4732 ausgeben soll.
Der Wert wird ohne Probleme ausgelesen, doch beim Ausgeben kommt es zu einer sehr starken Verzögerung (circa 1s) und ein ADS-Fehlercode erscheint der besagt "timeout elapsed". Dann wird der Wert jedoch trotzdem ausgegeben.
Folgendes habe ich ausprobiert:
- Wenn ich die Ausgabe-Funktion einzeln ausführe funktioniert sie
einwandfrei und schnell.
- Wenn ich das komplette Programm ohne die Ausgabe-Funktion starte
funktioniert auch alles
Deshalb verstehe ich nicht, warum ich einen Timeout bekomme wenn ich die Ausgabe-Funktion mit in das Callback-Programm kopiere.
Kann es sein, dass das Callback-Programm an die eine Variable (in meinem Fall die des AD-Wandlers) gebunden ist und deshalb es problematisch ist in ihm die Variable des DA-Wandlers anzusprechen? Wenn dem so sein sollte wie erreiche ich dann diesen Zylkus von 50µs vom möglichst schnellen einlesen und ausgeben?
Naja war nur eine Vermutung, vielleicht habt ihr ja eine Idee, woran es liegen könnte. Für den Fall, dass es ein programmier-technisches Problem ist, habe ich den Quellcode in den Anhang als .doc-Datei kopiert.
*@font-face {font-family:Calibri; mso-font-alt:"Century Gothic"; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:Calibri; mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New Roman"; mso-fareast-language:EN-US;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 2.0cm 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section[FONT="][/FONT]
ich versuche zur Zeit per ADS-DLL einen Wert von meiner EL3702 (AD-Wandler) einzulesen und ihn auf der EL4732 (DA-Wandler) auszugeben. Dieser Vorgang soll alle 50µs ausgeführt werden (So ist auch die Zykluszeit im System Manager von Beckhoff eingestellt).
Nun habe ich folgendes Problem:
ich habe mit einer Notification-Funktion (AdsSyncAddDeviceNotificationReq) ein Callback-Programm aufgerufen, dass zuerst den Wert vom AD-Wandler auslesen und danach auf der EL4732 ausgeben soll.
Der Wert wird ohne Probleme ausgelesen, doch beim Ausgeben kommt es zu einer sehr starken Verzögerung (circa 1s) und ein ADS-Fehlercode erscheint der besagt "timeout elapsed". Dann wird der Wert jedoch trotzdem ausgegeben.
Folgendes habe ich ausprobiert:
- Wenn ich die Ausgabe-Funktion einzeln ausführe funktioniert sie
einwandfrei und schnell.
- Wenn ich das komplette Programm ohne die Ausgabe-Funktion starte
funktioniert auch alles
Deshalb verstehe ich nicht, warum ich einen Timeout bekomme wenn ich die Ausgabe-Funktion mit in das Callback-Programm kopiere.
Kann es sein, dass das Callback-Programm an die eine Variable (in meinem Fall die des AD-Wandlers) gebunden ist und deshalb es problematisch ist in ihm die Variable des DA-Wandlers anzusprechen? Wenn dem so sein sollte wie erreiche ich dann diesen Zylkus von 50µs vom möglichst schnellen einlesen und ausgeben?
Naja war nur eine Vermutung, vielleicht habt ihr ja eine Idee, woran es liegen könnte. Für den Fall, dass es ein programmier-technisches Problem ist, habe ich den Quellcode in den Anhang als .doc-Datei kopiert.
*@font-face {font-family:Calibri; mso-font-alt:"Century Gothic"; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:Calibri; mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New Roman"; mso-fareast-language:EN-US;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 2.0cm 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section[FONT="][/FONT]