07.08.2012, 16:23
Hallo zusammen. 
Ich bin neu hier, und auch neu im Thema Labview, Echtzeit, EtherCat, und Beckhoff TwinCat.
Folgende Komponenten versuche ich zum Zusammenspiel zu bringen:
Beckhoff EtherCat Klemmen mit Buskoppler EK1100 und klemmen EL3632, EL3011, EL4132.....
TwinCat I/O V2.11 build 2666
LabView 2011
Das alles auf einen Standart PC mit Pentium 4 Einkernprozessor bei 2,8 GHz
Betriebssystem Windows XP
Mein Problem ist folgendes:
Zur Überwachung eines Prüfstands soll ich mit Beckhoff EtherCat Klemmen unterschiedliche Sensoren auswerten und Ausgangsgrößen schreiben. Die gewandelten Signale sollen in Labview weiterverarbeitet werden z.B. Spektralanalyse, Erkennung von Schäden, Notabschaltung.
Mein bisheriges Vorgehen zum Lesen der Eingänge ist, die Ethercat Klemmen in der Beckhoff Software "Twincat Systemmanager" als Variablen in einen Task zu verknüpfen. Die Task-Zykluszeit beträgt 1ms.
Die so erzeugten Variablen lese ich dann mit LabView über über die ADS DLL (AdsSyncReadReq) aus. Dieses Auslesen findet in einer Schleife statt. Diese soll im Bestfall sobald ein neuer Wert anliegt (einmal pro millisekunde) diesen in Ihr Schieberegister speichern, sodass ich nach einer voreingestellten Menge von Abtastungen aus dem so enstandenen Array einen Signalverlauf mit äquidistant abgetasteten Werten erzeugen kann.
Hier fängt das Problem an. Die so gesammelten Werte sind eben nicht zeitlich äquidistant. Versuche mit/ohne Wartezeit, Zeitgesteuerter Schleife und auch mit ADS OCX, führen immer zu gleichen Durchlaufzeiten der Schleife. Meistens sind es zwei millisekunden, mal drei, mal vier und ganz selten auch mal eine millisekunde.
Sieht jemand eine Chance, diese Abfrage des Eingagssignals exakt einmal pro millisekunde ablaufen zu lassen, vllt mit einer synchronisierung auf eine der EtherCat Uhren? Oder kennt jemand ein Möglichkeit auf TwinCat seite einen Ringpuffer einzurichten, der nur mal alle paar 100 millisekunden ausgelesen wird.
Ich brauche letztlich "nur" einen nahtlosen zeitlich äquidistant abgetasteten Datenstream der gewandelten Sensorsignale von z.B. 2 Sekunden Länge und diesen z.B. alle 10 Sekunden.
Ich habe ein Beispiel .vi Angehängt, in dem man meinen Versuch der Signalabtastung mit AdsSyncReadReq zzgl. Spektralanalyse sieht.
Ich hoffe damit habe ich alles zusammen damit mir geholfen werden kann und nicht zu viele Forenregeln missachtet. Wenn nicht korrigiert mich. Wie gesagt ich bin neu hier.

Ich bin neu hier, und auch neu im Thema Labview, Echtzeit, EtherCat, und Beckhoff TwinCat.
Folgende Komponenten versuche ich zum Zusammenspiel zu bringen:
Beckhoff EtherCat Klemmen mit Buskoppler EK1100 und klemmen EL3632, EL3011, EL4132.....
TwinCat I/O V2.11 build 2666
LabView 2011
Das alles auf einen Standart PC mit Pentium 4 Einkernprozessor bei 2,8 GHz
Betriebssystem Windows XP
Mein Problem ist folgendes:
Zur Überwachung eines Prüfstands soll ich mit Beckhoff EtherCat Klemmen unterschiedliche Sensoren auswerten und Ausgangsgrößen schreiben. Die gewandelten Signale sollen in Labview weiterverarbeitet werden z.B. Spektralanalyse, Erkennung von Schäden, Notabschaltung.
Mein bisheriges Vorgehen zum Lesen der Eingänge ist, die Ethercat Klemmen in der Beckhoff Software "Twincat Systemmanager" als Variablen in einen Task zu verknüpfen. Die Task-Zykluszeit beträgt 1ms.
Die so erzeugten Variablen lese ich dann mit LabView über über die ADS DLL (AdsSyncReadReq) aus. Dieses Auslesen findet in einer Schleife statt. Diese soll im Bestfall sobald ein neuer Wert anliegt (einmal pro millisekunde) diesen in Ihr Schieberegister speichern, sodass ich nach einer voreingestellten Menge von Abtastungen aus dem so enstandenen Array einen Signalverlauf mit äquidistant abgetasteten Werten erzeugen kann.
Hier fängt das Problem an. Die so gesammelten Werte sind eben nicht zeitlich äquidistant. Versuche mit/ohne Wartezeit, Zeitgesteuerter Schleife und auch mit ADS OCX, führen immer zu gleichen Durchlaufzeiten der Schleife. Meistens sind es zwei millisekunden, mal drei, mal vier und ganz selten auch mal eine millisekunde.
Sieht jemand eine Chance, diese Abfrage des Eingagssignals exakt einmal pro millisekunde ablaufen zu lassen, vllt mit einer synchronisierung auf eine der EtherCat Uhren? Oder kennt jemand ein Möglichkeit auf TwinCat seite einen Ringpuffer einzurichten, der nur mal alle paar 100 millisekunden ausgelesen wird.
Ich brauche letztlich "nur" einen nahtlosen zeitlich äquidistant abgetasteten Datenstream der gewandelten Sensorsignale von z.B. 2 Sekunden Länge und diesen z.B. alle 10 Sekunden.
Ich habe ein Beispiel .vi Angehängt, in dem man meinen Versuch der Signalabtastung mit AdsSyncReadReq zzgl. Spektralanalyse sieht.
Ich hoffe damit habe ich alles zusammen damit mir geholfen werden kann und nicht zu viele Forenregeln missachtet. Wenn nicht korrigiert mich. Wie gesagt ich bin neu hier.