Autor Thema: TaskStop-Funktion für Unittest???  (Gelesen 3833 mal)

Offline belunas

  • Newbie
  • *
  • Beiträge: 3
TaskStop-Funktion für Unittest???
« am: April 12, 2007, 10:39:00 Vormittag »
Hallo Pro´s  ;)

ich suche nun schon länger eine Biblothek/Funktion die es möglich macht, einen Task (evtl auch den Maintask PLC_PRG) zur Laufzeit meines Programms zu stoppen oder für eine gewisse Zeit anzuhalten.

Eine weitere Einschränkung ist, dass die Funktion auf 3 Zielsystemen funktionieren soll: ELAU, MOELLER & WAGO, da eine Testsoftware entwickelt werden soll, die dann Zielsystemübergreifend läuft.

Wenn IHR Informationen zu meinem Problem oder zum Thema Softwaretest habt (evtl auch Erfahrungen) dann legt los ....

Offline boppel

  • Full Member
  • ***
  • Beiträge: 192
  • Zwei mal Halbwissen ist noch kein Vollwissen.
Re: TaskStop-Funktion für Unittest???
« Antwort #1 am: April 12, 2007, 18:22:17 Nachmittag »
Hallo belunas,

bin zwar kein "Pro", will dieser hochbezahlten und stets an Zeit mangelnden Spezies aber mal Arbeit vorweg abnehmen:

ELAU, MOELLER, WAGO sind sehr weit gefaßte Begriffe!

ELAU bietet (soweit ich das auf deren Homepage sehen konnte) primär Motion-Control-Systeme an (detaillierte Informationen sind leider nur nach einem Login möglich -> keíne Lust dazu).

WAGO hat, wie MOELLER, sehr verschiedene Systeme im Angebot, die untereinander nicht (bzw. nur bedingt) kompatibel sind.

Wir sind hier im EASY-Forum. Am Ehesten würde der Anfrage die EASY-CONTROL gerecht werden. Hier kann mit CoDeSys programmiert werden. Die entsprechenden "Fremd"-Fabrikate müssen das dann natürlich auch unterstützen. Zudem muß man sich bei der Programmierung dann auch genau an die Normen halten, damit das Programm portiert werden kann.

Wenn detailliertere Informationen verfügbar sind (über die einzusetzenden Geräte sowie die Anwendung), kann sich mit etwas Glück vielleicht hier ein "Pro" finden, der weiterhelfen kann.

Gruß

Boppel
« Letzte Änderung: April 12, 2007, 18:44:56 Nachmittag von boppel »

Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: TaskStop-Funktion für Unittest???
« Antwort #2 am: April 12, 2007, 20:12:27 Nachmittag »
Hallo belunas,

ich suche nun schon länger eine Biblothek/Funktion die es möglich macht, einen Task (evtl auch den Maintask PLC_PRG) zur Laufzeit meines Programms zu stoppen oder für eine gewisse Zeit anzuhalten.

So eine Funktion bzw. Bibliothek gibt's bei den Steuerungen von Moeller nicht.

Beschreib doch mal genauer, was Du eigentlich damit machen möchtest.
Vielleicht gibt's ja eine Lösung.

Viele Grüße
Dieter

Offline belunas

  • Newbie
  • *
  • Beiträge: 3
Re: TaskStop-Funktion für Unittest???
« Antwort #3 am: April 13, 2007, 10:00:01 Vormittag »
hey, jetzt nochmal genaueres vom überbezahlten Studenten  ;D

Mein Projekt besteht aus 2 Teilen, (1) dem Programm zur Steuerung einer Eismaschine und (2) einem Testprogramm, das das Steuerprogramm (1) auf richtigkeit überprüft. Genauer frage ich Zustände ab die ich von der Eismaschine erwarte und kontrolliere desweiteren globale Variablen, Sensoren- und Aktorenaktivitäten. Dieses Testprogramm soll dem Programmierer bei späteren Veränderungen am Steuerprogramm unerwartete Zustände mitteilen und somit zur Qualitätskontrolle beitragen.

Problem: Beim Testen der FUN-Bausteine, die das Steuerprogramm zur Laufzeit benutzt, entstehen Fehler im Testprogramm!

D.H. das ich das Steuerprogramm zum testen der FUN-Bausteine stoppen oder pausieren muss >>> So eine TaskStop() - Funktion gibt es für manche Zielsysteme, aber da ich das Testprogramm für alle zukünftigen Steuerprogramme einsetzen möchte bräuchte ich eine allgemeine Funktion oder eine für jedes Zielsystem!!!!

Alle Zielsysteme programmiere ich mit CoDeSys! Die Bibliothek SysLibTasks.lib bietet ähnliches an doch muss ich dort erst einen Task erzeugen um eine TaskID zu bekommen, mit der ich dann "suspend oder resume" auf die ID ausführen kann. Unten mal ein Beispiel wie ich es bräuchte  ;)

Oder evtl. andere Ideen????????????



Codeauszug:
IF StopTasks THEN (* Test mit TaskStop(), abhängig von Zielsystem *)
TaskStop(pszTaskName := '', bSelf := FALSE);
IF TaskStopGet('Task_Main') = 1 THEN
StopTasks := FALSE;
TasksStopped := TRUE;
END_IF;

Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: TaskStop-Funktion für Unittest???
« Antwort #4 am: April 14, 2007, 16:05:34 Nachmittag »
Hallo belunas,

für deinen Lösungsansatz braucht du ein Multitasking fähiges Zielsystem, auf dem mehrere Tasks
parallel laufen können. Das ist aber nicht bei allen Steuerungen gegeben. Die EC4P zB. ist  ein Single-Task System.
Wie das bei Wago und ELAU aussieht, kann ich nicht beurteilen.

Eine andere Möglichkeit könnte sein, ein Programm so zu strukturieren, das man mit mehreren "Programmen" arbeitet. Ein Programm erledigt die eigentliche Steuerungsaufgabe und ein zweites dient der Überwachung.
Das Scheduling der einzelnen Programm-"Tasks" kann man dann nach belieben programmieren.
Ein wesentlicher Vorteil dieses Lösungswegs ist, das das Programm auf jedem Zielsystem lauffähig ist.

Viele Grüße
Dieter

Offline belunas

  • Newbie
  • *
  • Beiträge: 3
Re: TaskStop-Funktion für Unittest???
« Antwort #5 am: April 17, 2007, 16:40:57 Nachmittag »
Danke nochmal an alle ...

Jetzt hab ich die Lösung für mein Multitasking-System. Die SysLibTasks.lib von CoDeSys machts!!! Mit SysTaskSuspend(TaskID) stoppt man einen Task und mit SysTaskResume(TaskID) kann man ihn wieder fortsetzen.

Jetzt gehts nur noch um die Kompatiblität der Zielsysteme .... die Hoffnung stirbt ...  ;D

thx
« Letzte Änderung: April 17, 2007, 16:42:39 Nachmittag von belunas »