TwinCAT 2: automatisieren von Projektdownload?

bitte akzeptiere, dass wir nicht mal eben nebenbei ein C# Programm erstellt haben, sorry

hab ich doch schon für euch gemacht :)

Für uns (zumindest für mich), sah es so aus, dass diese Werte gemeldet werden, wenn die Funktion erfolgreich beendet wurde.

Für mich auch - nur eben passt das leider nicht zum Zeit- und/oder Fehlerverhalten der Funktionen
 
IsTwinCATStarted funktioniert - damit kann ich schon mal ein Sleep entfernen

die Zeit dich ich zwischen OpenConfiguration/ActiveConfiguration warten muss variiert ein bisschen mit der Projektgröße - bei einem kleinen Projekt 10ms, bei was großem auch mal 100ms - habt ihr dafür noch eine Ideen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was habt ihr nur mit dem Return-Wert? in .Net werden alle COM-Fehler von Microsoft auf Exceptions gemappt - das kann man gar nicht verhindern - und es kommt keine Exception

Ich will da jetzt auch nicht lange drauf herum reiten, aber das stimmt nicht so ganz. Der Entwickler des COM-Objects kann durchaus beeinflussen was zurück gegeben wird. Und wenn ein E_Fail zurückgegeben wird, dann ist das nicht unbedingt ein Fehler in der COM-Komponente, sondern wirklich dass das Aktivieren des Projektes fehlgeschlagen ist. Das "Problem" in TwinCAT 2 ist, dass die Meldungen was der Fehler ist, nicht wirklich zurück gegeben wurden. Das müsste zusätzlich zum E_Fail als Text zurückgegeben werden. Das liegt wohl so ein bisschen in der Historie. Das Automation Interface ist so gewachsen, wie Kunden Funktionalität gebraucht haben. Das sieht in TwinCAT 3 ganz anders aus. Hier war es von vorn herein Teil des Gesamtkonzeptes, so dass da auch mehr Fehlermeldungen geliefert werden bzw. das ganze Verhalten optimiert wurde.

Nichts desto trotz muss man speziell in TwinCAT 2 schauen was dahinter steckt. Mit dem AutomationInterface bedient man quasi TwinCAT fern und man nutzt die selben Kommandos die auch in der Oberfläche verwendet werden. Ein OpenConfiguration lädt das Projekt. Unmittelbar danach versucht der SystemManager automatisch Kontakt zum eingestellten Zielsystem aufzubauen etc.. Und auch auf der Oberfläche kann man in dieser Zeit das Projekt nicht aktivieren. Man bekommt es halt nur nicht mit, weil die Zeiten so kurz sind. Die Rückgabe S_OK kommt aber tatsächlich vom SystemManager, der damit zurück gibt, dass das Projekt erfolgreich geladen wurde.

Andere Kommandos, wie z.B. StartTwinCAT stößt der SystemManager auch nur an und wartet bis die Laufzeit OK zurück meldet. Wenn diese das Tut heißt das auch nur, dass diese im RunMode ist und die Treiber etc. geladen wurde. Trotzdem muss sich das System dann noch vollständig hochfahren. Z.B. muss das Bussystem vollständig aufgestartet sein etc. bevor man mit dem System was anfangen kann. Aber auch das ist von der Oberfläche aus das selbe. Auch wenn die Laufzeit bereits anzeigt, dass TwinCAT im RunMode ist, kann man sich nicht sofort mit der SPS einloggen. Man muss halt nur schnell genug sein, damit man das auf der Oberfläche überhaupt merkt. Für letzteres gibt es aber ja dann die Möglichkeit mit IsTwinCATStarted zu schauen ob es vollständig aufgestartet ist. Die Rückmeldungen der Komponenten sind also korrekt, auch wenn dir das nicht weiter hilft. Für TwinCAT 2 musst Du wohl leider mit den Sleep-Zeiten leben. Funktionen wie IsTwinCATActivated gibt es leider nicht.
 
Der Entwickler des COM-Objects kann durchaus beeinflussen was zurück gegeben wird.

das schon - aber wenn ich ein COM-Objekt in .Net/C#/VStudio einbinde wird eben der HResult einer Methode auf eine Exception gemappt wenn nicht S_OK - wird mit allen Komponenten so gemacht - das hat mit dem COM-Objekt-Entwickler erstmal nichts zu tun

das hängt auch hier leider von verschiedenen Faktoren ab. Zum einen wie du geschrieben hast mit der Größe des Projektes und zum anderen auch mit der Konnektivität des Zielsystems!

blöd - aber wird wohl so reichen müssen

Danke an euch beide
 
Zurück
Oben