DE10065498B4 - Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms - Google Patents

Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms Download PDF

Info

Publication number
DE10065498B4
DE10065498B4 DE10065498A DE10065498A DE10065498B4 DE 10065498 B4 DE10065498 B4 DE 10065498B4 DE 10065498 A DE10065498 A DE 10065498A DE 10065498 A DE10065498 A DE 10065498A DE 10065498 B4 DE10065498 B4 DE 10065498B4
Authority
DE
Germany
Prior art keywords
task
identifier
procmeasarray
control program
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10065498A
Other languages
English (en)
Other versions
DE10065498A1 (de
Inventor
Gabriel Wetzel
Jens Fiedler
M. Falcucci
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE10065498A priority Critical patent/DE10065498B4/de
Priority to US10/034,546 priority patent/US7086054B2/en
Publication of DE10065498A1 publication Critical patent/DE10065498A1/de
Application granted granted Critical
Publication of DE10065498B4 publication Critical patent/DE10065498B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23271Decompiler, translate machine code to HLL, reverse processing, easy modification
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23452Simulate sequence on display to control program, test functions
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25265Flash memory
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25343Real time multitasking
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25347Multitasking machine control

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Verfahren zur Rekonstruktion des Ablaufs von Prozessen eines von einem Rechengerät, insbesondere von einem Mikroprozessor, abgearbeiteten Steuerprogramms aus dem Inhalt einer ersten Tabelle (ProcMeasArray) und einer zweiten Tabelle (TaskMeasArray), wobei
– das Steuerprogramm in mehrere Tasks (A, B, C, D) unterteilt ist und jede Task (A, B, C, D) mindestens einen Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) umfasst;
– während der Abarbeitung des Steuerprogramms in der ersten Tabelle (ProcMeasArray) jeweils für eine beendete Task (A, B, C, D) eine Kennung des vor Beginn der beendeten Task (A, B, C, D) zuletzt abgearbeiteten Prozesses (111; 212, 222; 313, 323, 333; 413, 423, 433) und in der zweiten Tabelle (TaskMeasArray) die Reihenfolge der jeweils beendeten Tasks (A, B, C, D) abgelegt wird;
– zunächst aus dem Inhalt der ersten Tabelle (ProcMeasArray) und der zweiten Tabelle (TaskMeasArray) eine dritte Tabelle (SimArrayIdent) erstellt wird, die jeweils...

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur Rekonstruktion des Ablaufs von Prozessen eines von einem Rechengerät, insbesondere von einem Mikroprozessor, abgearbeiteten Steuerprogramms.
  • Die Erfindung betrifft außerdem ein Speicherelement, insbesondere ein Read-Only-Memory, ein Random-Access-Memory oder ein Flash-Memory. Auf dem Speicherelement ist ein Computerprogramm gespeichert, das auf einem Rechengerät, insbesondere auf einem Mikroprozessor, ablauffähig ist. Schließlich betrifft die vorliegende Erfindung ein Computerprogramm, das auf einem Rechengerät, insbesondere auf einem Mikroprozessor, ablauffähig ist.
  • Ein Steuerprogramm im Sinne der vorliegenden Erfindung dient bspw. zur Steuerung/Regelung von technischen Vorgängen und anderer Funktionen in einem Kraftfahrzeug. Das Steuerprogramm ist auf einem Rechengerät, insbesondere auf einem Mikroprozessor, eines Steuergeräts eines Kraftfahrzeugs ablauffähig. Das Steuerprogramm ist in mehrere Tasks unterteilt und jede Task umfasst mindestens einen Prozess. Den einzelnen Tasks sind unterschiedliche Prioritäten zugeordnet. Das Steuerprogramm kann in einem kooperativen oder in einem preemptiven Modus abgearbeitet werden.
  • Die Abarbeitung einzelner Tasks eines Steuerprogramms im kooperativen Modus bedeutet, dass bei unterschiedlich priorisierten Tasks eine auszuführende höherpriorisierte Task zu einer Unterbrechung einer aktuell ausgeführten niederpriorisierten Task führt. Anders als im preemptiven Modus, bei dem eine auszuführende höherpriorisierte Task einen aktuell ausgeführten Prozess einer niederpriorisierten Task unterbricht, wartet im kooperativen Modus die höherpriorisierte Task das Ende des aktuell ausgeführten Prozesses der niederpriorisierten Task ab. Erst danach wird die niederpriorisierte Task unterbrochen und die höherpriorisierte Task ausgeführt. Wenn die höherpriorisierte Task fertig ist, wird die niederpriorisierte Task bei dem Prozess fortgesetzt, vor dem sie unterbrochen wurde.
  • Die Abarbeitung der Tasks eines Steuerprogramms im kooperativen Modus ist aus der DE 195 00 957 A1 bekannt. Die Unterbrechung einer niederpriorisierten Task durch eine höherpriorisierte Task gehört zu den Aufgaben eines Multi-Tasking Betriebssystems. Ein solches Multi-Tasking Betriebssystem, das sowohl den kooperativen Modus als auch den preemptiven Modus bei der Abarbeitung von Steuerprogrammen unterstützt, ist bspw. das Echtzeitbetriebssystem ERCOSEK von der Firma ETAS Entwicklungs- und Applikationswerkzeuge für elektronische Systeme GmbH & Co. KG, Stuttgart, Deutschland (vgl. ETAS GmbH & Co. KG: ERCOSEK V2.0.0 Manual, Stuttgart, 1998). Auf die DE 195 00 957 A1 und das ERCOSEK-Handbuch wird ausdrücklich Bezug genommen.
  • Die Laufzeit der Prozesse schwankt je nach Belastung des Rechengeräts. Aus diesem Grund und aufgrund der möglichen, von anderen höherpriorisierten Tasks verursachten Unterbrechungen kann die Reihenfolge der Prozessaufrufe ein und desselben Steuerprogramms bei mehrmaliger Abarbeitung unterschiedlich sein. Das heisst, dass nach der Abarbeitung des Steuerprogramms die genaue Reihenfolge der Prozessaufrufe nicht bekannt ist und auch nicht bspw. für Simulationszwecke rekonstruiert werden kann.
  • Zur Simulation eines Steuerprogramms oder von Teilen davon (Algorithmus) sind verschiedene Verfahren bekannt. Eine nachträgliche Simulation eines Algorithmus oder des Steuerprogramms mit gemessenen Daten wird als Offline Open Loop Simulation (OOL) bezeichnet. Bei der sogenannten Offline Closed Loop Simulation (OCL) handelt es sich um eine Simulation eines Algorithmus oder des Steuerprogramms mit einem Simulationsmodell in einem geschlossenen Simulationskreis. Die mangelnde Reproduzierbarkeit der Reihenfolge der abgearbeitenden Prozesse führt insbesondere bei einer nachträglichen Simulation des Algorithmus mit gemessenen Daten (OOL) zu erheblichen Schwierigkeiten.
  • Nach dem Stand der Technik werden Algorithmen, die mit einem Multi-Tasking Betriebssystem gesteuert werden, üblicherweise in einem optimalen Zustand simuliert. Das bedeutet, dass die einzelnen Tasks des Steuerprogramms so aufgerufen werden, dass keine Unterbrechung stattfindet.
  • Das hat jedoch den Nachteil, dass eine Simulation unter realen Bedingungen nicht möglich ist.
  • Um eine Simulation eines Steuerprogramms unter realen Bedingungen zu ermöglichen, wird in der nachveröffentlichten Schrift DE 100 61 001 ein neuartiges "Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug" vorgeschlagen. Das vorgeschlagene Verfahren beruht auf der Überlegung, während der realen Abarbeitung des Steuerprogramms auf einem Rechengerät den Prozessablauf zu speichern. Es wird insbesondere vorgeschlagen, vor der Abarbeitung des Steuerprogramms jedem Prozess eine eindeutige Kennung zuzuordnen und während der Abarbeitung des Steuerprogramms jeweils die Kennung einer beendeten Task und für die beendete Task die Kennung eines vor Beginn der beendeten Task zuletzt abgearbeiteten Prozesses zu speichern. Dies ist bspw. mit der Speicherung der Kennungen in zwei Tabellen, einer ersten Tabelle (vgl. 3 der vorliegenden Anmeldung) für die Kennung der vor Beginn der beendeten Tasks zuletzt abgearbeiteten Prozesse und einer zweiten Tabelle (vgl. 4 der vorliegenden Anmeldung) für die beendeten Tasks, möglich. Alternativ kann für jede Task eine eigene Tabelle vorgesehen werden, in der die Kennungen mit einem entsprechenden Zeitstempel gespeichert werden. Das aus der DE 100 61 001 bekannte Verfahren zur Speicherung des Prozessablaufs wird nachfolgend anhand der 2 bis 4 der vorliegenden Anmeldung näher beschrieben.
  • In 2 ist der Prozessablauf eines Steuerprogramms dargestellt. Das Steuerprogramm ist in vier Tasks A, B, C, D unterteilt. Die Task A umfasst einen Prozess 111, die Task B Prozesse 212, 222, die Task C Prozesse 313, 323, 333 und die Task D Prozesse 413, 423, 433. Die einzelnen Prozesse der Tasks sind in 2 als Balken dargestellt. Der Task A ist die höchste Priorität zugeordnet, der Task D die niedrigste. Die Prioritäten der Tasks ergeben sich aus der Höhe der dargestellten Balken. Wenn für den in 2 dargestellten Prozessablauf die Kennung eines jeden einzelnen Prozesses abgespeichert würde, müßten alle 22 Prozesskennungen der Prozessablaufliste abgespeichert werden. Die Prozessablaufliste hat den Inhalt: 111, 313, 212, 111, 222, 323, 111, 212, 222, 333, 413, 423, 433, 111, 313, 111, 323, 333, 413, 423, 433, 111.
  • Um Speicherplatz zu sparen werden deshalb in der ersten Tabelle (vgl. 3) jeweils für eine beendete Task die Kennung eines vor Beginn der beendeten Task zuletzt abgearbeiteten Prozesses gespeichert. Die erste beendete Task des in 2 dargestellten Prozessablaufs ist die Task A (Prozess 111). Der vor Beginn der Task A zuletzt abgearbeitete Prozess ist nicht bekannt. Deshalb ist das erste Element der ersten Tabelle "xxx".
  • Als nächstes wird die Task C begonnen (Prozess 313), jedoch nicht beendet. Anschließend wird die Task B begonnen (Prozess 212), aber ebenfalls nicht beendet. Die nächste beendete Task ist somit wieder die Task A (Prozess 111). Der vor Beginn der Task A zuletzt abgearbeitete Prozess ist der Prozess 212. Deshalb ist das zweite Element der ersten Tabelle "212".
  • Als nächstes wird die Task B fortgesetzt (Prozess 222) und beendet. Der vor Beginn der Task B, also vor dem Prozess 212, zuletzt abgearbeitete Prozess ist der Prozess 313. Deshalb ist das dritte Element der ersten Tabelle "313".
  • Anschließend wird die Task C fortgesetzt (Prozess 323), jedoch nicht beendet. Die nächste beendete Task ist somit wieder die Task A (Prozess 111). Der vor Beginn der Task A zuletzt abgearbeitete Prozess ist der Prozess 323. Deshalb ist das vierte Element der ersten Tabelle "323".
  • Als nächstes wird die Task B begonnen (Prozess 212) und auch beendet (Prozess 222). Der vor Beginn der Task B zuletzt abgearbeitete Prozess ist der Prozess 111. Deshalb ist das fünfte Element der ersten Tabelle "111".
  • Anschließend wird die Task C beendet (Prozess 333). Der vor Beginn der Task C, also vor dem Prozess 313, abgearbeitete Prozess ist der Prozess 111. Deshalb ist das sechste Element der ersten Tabelle wieder "111".
  • Als nächstes wird die Task D begonnen (Prozess 413) und auch beendet (Prozess 433). Der vor Beginn der Task D, also vor dem Prozess 413, abgearbeitete Prozess ist der Prozess 333. Deshalb ist das siebte Element der ersten Tabelle "333". Dieses Verfahren zur Speicherung des Prozessablaufs wird auf den gesamten in 2 dargestellten Prozessablauf angewandt und man erhält die in 3 dargestellte erste Tabelle.
  • In der zweiten Tabelle (vgl. 4) werden jeweils die beendeten Tasks abgelegt. Die erste beendete Task des Prozessablaufs aus 2 ist die Task A. Danach werden die Tasks C und B begonnen, jedoch nicht beendet. Die nächste beendete Task ist somit wieder die Task A. Danach wird die Task B fortgesetzt und auch beendet. Anschließend wird die Task C fortgesetzt jedoch immer noch nicht beendet. Die nächste beendete Task ist somit wieder die Task A. Danach wird wieder die Task B begonnen und auch beendet. Anschließend wird die Task C wieder fortgesetzt und auch beendet. Das Verfahren wird so lange fortgesetzt bis man als letzten Eintrag in die zweite Tabelle die Task A als letzte beendete Task des in 2 dargestellten Prozessablaufs erhält.
  • Der vorliegenden Erfindung liegt die Aufgabe zugrunde, den realen Prozessablauf auf eine möglichst einfache Weise aus dem Inhalt der ersten Tabelle und der zweiten Tabelle vollständig zu reproduzieren.
  • Zur Lösung dieser Aufgabe schlägt die vorliegende Erfindung ausgehend von dem Verfahren der eingangs genannten Art vor, dass
    • – zunächst aus dem Inhalt der ersten Tabelle und der zweiten Tabelle eine dritte Tabelle erstellt wird, die jeweils für eine neue Task die Kennung eines vor Beginn der neuen Task zuletzt abgearbeiteten Prozesses enthält, und
    • – dann aus der dritten Tabelle in Kenntnis des Prozessablaufs der einzelnen Tasks der vollständige Prozessablauf des Steuerprogramms rekonstruiert wird.
  • Vorteile der Erfindung
  • Mit dem erfindungsgemäßen Verfahren kann nach der Abarbeitung des Steuerprogramms der Prozessablauf auf einfache Weise anhand der in der ersten und zweiten Tabelle gespeicherten Informationen vollständig reproduziert werden. Bedeutsam ist insbesondere, dass in der ersten Tabelle während der Abarbeitung des Steuerprogramms nicht die Kennungen sämtlicher abgearbeiteter Prozesse, sondern lediglich jeweils für eine beendete Task die Kennung eines vor Beginn der beendeten Task zuletzt abgearbeiteten Prozesses abgelegt wurden. Da die Messungen zum Abspeichern der Reihenfolge der einzelnen Prozesse am Ende der Tasks ausgeführt werden, enthält die zweite Tabelle lediglich Informationen über das Ende der einzelnen Tasks. Mit dem erfindungsgemäßen Verfahren können in der ersten Tabelle fehlende Informationen über den Beginn der einzelnen Tasks rekonstruiert werden.
  • Der reproduzierte Prozessablauf kann einer Simulation der Algorithmen des Steuerprogramms zugrundegelegt werden.
  • Dadurch ist eine besonders realitätsnahe Simulation der Algorithmen, insbesondere mit gemessenen Daten nach einer OOL-Simulation, möglich. Aufgrund der Reproduzierbarkeit der simulierten Prozessabläufe können die Messungen und die Simulationsergebnisse miteinander verglichen werden und eine besonders effektive Fehlersuche in dem Steuerprogramm ist möglich.
  • In der dritten Tabelle ist bis auf eine Ausnahme die vollständige Reihenfolge der einzelnen abgearbeiteten Prozesse abgelegt. Die Ausnahme betrifft eine Folge mehrerer unmittelbar aufeinanderfolgend abgearbeiteter Prozesse derselben Task, wobei für die Folge jeweils nur die letzte Task der Folge in der dritten Tabelle abgelegt ist. Aus dem Inhalt der dritten Tabelle kann somit in Kenntnis des Prozessablaufs der einzelnen Tasks der vollständige Prozessablauf des Steuerprogramms problemlos rekonstruiert werden.
  • Gemäß einer vorteilhaften Weiterbildung der vorliegenden Erfindung vorgeschlagen, dass zum Erstellen der dritten Tabelle
    • – zunächst die Kennungen der jeweils letzten Prozesse der in der zweiten Tabelle abgelegten Tasks in der dritten Tabelle abgelegt werden;
    • – für jede Kennung in der ersten Tabelle geprüft wird, ob der entsprechende Prozess der letzte Prozess seiner Task ist, und
    • – falls die Kennung dem letzten Prozess ihrer Task entspricht, in der dritten Tabelle kein Eintrag erfolgt; oder
    • – falls die Kennung nicht dem letzten Prozess ihrer Task entspricht, in der dritten Tabelle die geprüfte Kennung vor die Kennung des ersten in der ersten Tabelle enthaltenen Prozesses der Task abgelegt wird, die an einer der Position der geprüften Kennung in der ersten Tabelle entsprechenden Position beendet war.
  • Die geprüfte Kennung wird in der dritten Tabelle vor die Kennung des ersten in der ersten Tabelle enthaltenen Prozesses einer bestimmten Task abgelegt. Der erste in der Tabelle enthaltene Prozess der Task kann der erste Prozess der Task sein. Es ist jedoch auch der Fall denkbar, dass der erste Prozess einer Task garnicht in der ersten Tabelle abgelegt ist, da der erste Prozess während der Abarbeitung des Steuerprogramms nie der vor Beginn einer beendeten Task zuletzt abgearbeitete Prozess ist. In einem solchen Fall wird die geprüfte Kennung dann vor die Kennung des ersten in der ersten Tabelle enthaltenen Prozesses (z. B. des zweiten oder dritten Prozesses) der Task in der dritten Tabelle abgelegt.
  • Die geprüfte Kennung wird vor die Kennung eines bestimmten Prozesses der Task abgelegt, die an einer der Position der geprüften Kennung in der ersten Tabelle entsprechenden Position beendet war. Mit anderen Worten wird die geprüfte Kennung vor die Kennung eines bestimmten Prozesses der Task abgelegt, die zum Zeitpunkt der Speicherung der geprüften Kennung beendet war.
  • Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird vorgeschlagen, dass zum Ermitteln der Kennung des ersten in der ersten Tabelle enthaltenen Prozesses der Task
    • – eine vierte Tabelle herangezogen wird, in der für jede Task abgelegt ist, ob sie bereits begonnen hat oder nicht, und
    • – der Inhalt der vierten Tabelle für die Task geprüft wird, die an einer der Position der geprüften Kennung in der ersten Tabelle entsprechenden Position beendet war.
  • Es wird des weiteren vorgeschlagen, dass in der vierten Tabelle eine Speicherzelle für eine Task gesetzt wird, sobald während der Rekonstruktion des Prozessablaufs auf den Prozess, der als erster von einer anderen Task unterbrochen wird, der Task getroffen wird, und die Speicherzelle für die Task gelöscht wird, sobald während der Rekonstruktion des Prozessablaufs auf den letzten Prozess der Task getroffen wird.
  • Gemäß einer weiteren bevorzugten Ausführungsform der vorliegenden Erfindung wird vorgeschlagen, dass zum Ermitteln des Prozesses, der als erster von einer anderen Task unterbrochen wird, der Task, die an der der Position der geprüften Kennung in der ersten Tabelle entsprechenden Position beendet war,
    • – eine fünfte Tabelle herangezogen wird, in der für die in der dritten Tabelle abgelegten Prozesse abgelegt ist, ob die abgelegten Prozesse die Prozesse, die als erste von einer anderen Task unterbrochen werden, der entsprechenden Task sind, und
    • – der Inhalt der fünften Tabelle für die der Position der geprüften Kennung in der dritten Tabelle vorangehenden Prozesse geprüft wird, ob sie die Prozesse, die als erste von einer anderen Task unterbrochen werden, der Task sind, die an einer der Position der geprüften Kennung in der ersten Tabelle entsprechenden Position beendet war.
  • Vorteilhafterweise wird in der fünften Tabelle eine Speicherzelle gesetzt, sobald während der Rekonstruktion des Prozessablaufs auf einen in der dritten Tabelle abgelegten Prozess getroffen wird, der der Prozess, der als erster von einer anderen Task unterbrochen wird, der entsprechenden Task ist.
  • Schließlich wird gemäß noch einer anderen bevorzugten Ausführungsform der vorliegenden Erfindung vorgeschlagen, dass zur Rekonstruktion des vollständigen Prozessablaufs
    • – die Kennungen der dritten Tabelle in einer Richtung entgegen dem Prozessablauf daraufhin überprüft werden, ob der der geprüften Kennung entsprechende Prozess zu einer Task mit lediglich einem Prozess gehört oder ob es sich bei dem der geprüften Kennung entsprechenden Prozess um den Prozess, der als erster von einer anderen Task unterbrochen wird, der entsprechenden Task handelt;
    • – die Kennungen der geprüften Prozesse entgegen dem Prozessablauf in einer eindimensionalen siebten Tabelle abgelegt werden, und
    • – falls der einer geprüften Kennung entsprechende Prozess zu einer Task mit lediglich einem Prozess gehört oder falls es sich bei dem der geprüften Kennung entsprechenden Prozess um den Prozess, der als erster von einer anderen Task unterbrochen wird, der entsprechenden Task handelt, kein Eintrag in die siebte Tabelle erfolgt, oder
    • – falls der einer geprüften Kennung entsprechende Prozess zu einer Task mit mehreren Prozessen gehört und es sich bei dem der geprüften Kennung entsprechenden Prozess nicht um den Prozess, der als erster von einer anderen Task unterbrochen wird, der entsprechenden Task handelt, in der dritten Tabelle ausgehend von der Position der geprüften Kennung entgegen dem Prozessablauf die Kennung des der geprüften Kennung vorangehenden Prozesses der entsprechenden Task gesucht wird und
    • – falls vor dem der geprüften Kennung entsprechenden Prozess mindestens ein Prozess fehlt, die Kennung des mindestens einen fehlenden Prozesses in die siebte Tabelle vor den der geprüften Kennung entsprechenden Prozess eingefügt wird.
  • Von besonderer Bedeutung ist die Realisierung des erfindungsgemäßen Verfahrens in der Form eines Speicherelements. Dabei ist auf dem Speicherelement ein Computerprogramm gespeichert, das auf einem Rechengerät, insbesondere auf einem Mikroprozessor, ablauffähig und zur Ausführung des erfindungsgemäßen Verfahrens geeignet ist. In diesem Fall wird also die Erfindung durch ein auf dem Speicherelement abgespeichertes Computerprogramm realisiert, so dass dieses mit dem Computerprogramm versehene Speicherelement in gleicher Weise die Erfindung darstellt wie das Verfahren, zu dessen Ausführung das Computerprogramm geeignet ist. Als Speicherelement kann insbesondere ein elektrisches Speichermedium zur Anwendung kommen, bspw. ein Read-Only-Memory, ein Random-Access-Memory oder ein Flash-Memory.
  • Die Erfindung betrifft auch ein Computerprogramm, das zur Ausführung des erfindungsgemäßen Verfahrens geeignet ist, wenn es auf einem Rechengerät, insbesondere auf einem Mikroprozessor, abläuft. Besonders bevorzugt ist dabei, wenn das Computerprogramm auf einem Speicherelement, insbesondere auf einem Flash-Memory, abgespeichert ist.
  • Als eine weitere Lösung der Aufgabe der vorliegenden Erfindung wird ausgehend von der Vorrichtung zur Rekonstruktion des Ablaufs von Prozessen eines Steuerprogramms der eingangs genannten Art vorgeschlagen, dass die Vorrichtung Mittel zur Ausführung des erfindungsgemäßen Verfahrens aufweist.
  • Zeichnungen
  • Es zeigen:
  • 1 ein Ablaufdiagramm eines erfindungsgemäßen Verfahrens gemäß einer bevorzugten Ausführungsform;
  • 2 einen Prozessablauf eines Steuerprogramms gemäß einer bevorzugten Ausführungsform;
  • 3 eine erste Tabelle, in der für den Prozessablauf aus 2 jeweils für eine beendete Task die Kennung eines vor Beginn der beendeten Task zuletzt abgearbeiteten Prozesses abgelegt ist;
  • 4 eine zweite Tabelle, in der für den Prozessablauf aus 2 die Reihenfolge der jeweils beendeten Tasks abgelegt ist;
  • 5 eine dritte Tabelle zu Beginn des erfindungsgemäßen Verfahrens, in der die Kennungen der jeweils letzten Prozesse der in der zweiten Tabelle aus 4 abgelegten Tasks abgelegt sind;
  • 6 die dritte Tabelle aus 5 am Ende des erfindungsgemäßen Verfahrens, in der jeweils für eine neue Task die Kennung eines vor Beginn der neuen Task zuletzt abgearbeiteten Prozesses abgelegt ist;
  • 7 eine vierte Tabelle, in der während der Ausführung des erfindungsgemäßen Verfahrens für jede Task abgelegt wird, ob sie bereits begonnen hat oder nicht;
  • 8 eine fünfte Tabelle, in der während der Ausführung des erfindungsgemäßen Verfahrens abgelegt wird, ob die in der dritten Tabelle abgelegten Prozesse die ersten Prozesse der entsprechenden Task sind;
  • 9 Inhalt der dritten Tabelle aus 6 am Ende des erfindungsgemäßen Verfahrens;
  • 10 eine siebte Tabelle mit einem aus der ersten Tabelle aus 3 und der zweiten Tabelle aus 4 rekonstruierten Prozessablauf des Steuerprogramms; und
  • 11 eine erfindungsgemäße Vorrichtung gemäß einer bevorzugten Ausführungsform.
  • Beschreibung der Ausführungsbeispiele
  • Auf einem Rechengerät, insbesondere auf einem Mikroprozessor, eines Steuergeräts können Steuerprogramme zur Steuerung von technischen Vorgängen insbesondere in einem Kraftfahrzeug abgearbeitet werden. Die Steuerprogramme können in mehrere Tasks unterteilt sein, wobei jede Task wiederum mindestens einen Prozess umfasst. Eine Task wird zu einem bestimmten Zeitpunkt oder regelmäßig mit einer bestimmten Abtastzeit aufgerufen und kann in einem kooperativen oder in einem preemptiven Modus abgearbeitet werden. Jeder Task ist eine bestimmte Priorität zugeordnet. wenn während der Abarbeitung des Steuerprogramms zwei Tasks gleichzeitig ausgeführt werden sollen, werden die Prioritäten der beiden Tasks verglichen und die Task mit der höheren Prioriät als erste abgearbietet.
  • Wenn bspw. eine TaskA abgearbeitet wird und ein TaskB ausgeführt werden soll, können je nach der von einem Programmierer gewählten Konfiguration der Tasks verschiedene Fälle auftreten:
    Falls die TaskA eine höhere Priorität als die TaskB hat, wird mit der Ausführung der TaskB gewartet bis die TaskA beendet ist.
  • Falls die TaskB eine höhere Priorität als die TaskA hat, wird die Abarbeitung der TaskA unterbrochen und die TaskB ausgeführt. Falls der Programmierer die Ausführung der Tasks in dem kooperativen Modus gewählt hat, wird mit der Ausführung der TaskB auf das Ende des aktuellen Prozesses der TaskA gewartet. Sobald dieser Prozess beendet ist, wird die TaskA unterbrochen und die TaskB ausgeführt. Wenn die TaskB beendet ist, wird die TaskA zu Beginn des Prozesses, vor dem Sie zur Ausführung der TaskB unterbrochen wurde, weiter abgearbeitet.
  • Falls der Programmierer die Abarbeitung der Tasks in dem preemptiven Modus gewählt hat, unterbricht die Task B den aktuellen Prozess der TaskA und die TaskB wird unmittelbar ausgeführt. Anschließend wird die TaskA bei dem unterbrochenen Prozess weiter abgearbeitet.
  • Die Unterbrechung einer Task durch eine andere Task mit einer höheren Prioriät gehört zu den Aufgaben eines Multi-Tasking Betriebsystems. Die Laufzeit der Prozesse schwankt je nach der Belastung des Rechengeräts, auf dem das Steuerprogramm abgearbeitet wird. Aus diesem Grund und aufgrund der möglichen, von anderen Tasks verursachten Unterbrechungen kann die Reihenfolge der Prozessaufrufe bei einer mehrmaligen Ausführung ein und desselben Steuerprogramms unterschiedlich sein. Nach der Abarbeitung des Steuerprogramms ist also die Reihenfolge, in der die einzelnen Prozesse der Tasks aufgerufen wurden, nicht bekannt.
  • Um eine Simulation eines Steuerprogramms unter realen Bedingungen zu ermöglichen, wird in einer weiteren Patentanmeldung der Anmelderin der vorliegenden Patentanmeldung ein neuartiges "Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug" vorgeschlagen. Das dort vorgeschlagene Verfahren beruht auf der Überlegung, während der realen Abarbeitung des Steuerprogramms auf einem Rechengerät den Prozessablauf zu speichern. Es wird insbesondere vorgeschlagen, vor der Abarbeitung des Steuerprogramms jedem Prozess eine eindeutige Kennung zuzuordnen und während der Abarbeitung des Steuerprogramms lediglich jeweils für eine beendete Task die Kennung eines vor Beginn der beendeten Task zuletzt abgearbeiteten Prozesses in einer ersten Tabelle ProcMeasArray zu speichern. Das Verfahren zur Speicherung des Prozessablaufs bildet den Ausgangspunkt für die vorliegende Patentanmeldung und ist in der Beschreibungseinleitung ausführlich beschrieben, worauf Bezug genommen wird.
  • Die vorliegende Patentanmeldung betrifft ein Verfahren zur Rekonstruktion des realen Prozessablaufs des Steuerprogramms aus dem Inhalt der ersten Tabelle ProcMeasArray (vgl. 3). Zur besseren Zuordnung der einzelnen Elemente der Tabellen ist neben den Tabellen aus den 3 bis 10 eine Laufvariable, ein sog. LoopIndex, aufgetragen.
  • Das Verfahren beginnt in einem Funktionsblock 1 in 1a. Dann wird in einem Funktionsblock 2 zunächst ein Initialisierungsschritt ausgeführt, in dem alle für das Verfahren notwendigen Größen initialisiert werden und eine zweite Tabelle TaskMeasArray (vgl. 4) ausgewertet wird. In einem Funktionsblock 3 wird dann ein Rekonstruktionsalgorithmus abgearbeitet, um die Unterbrechnungen der Tasks A, B, C, D rekonstruieren zu können. Der Algorithmus basiert hauptsächlich auf der Auswertung der ersten Tabelle ProcMeasArray. Für jeden Aufruf einer Folge von mindestens einem Prozess derselben Task wird die Kennung des letzten abgearbeiteten Prozesses in der dritten Tabelle SimArrayIdent abgelegt. In einem Funktionsblock 4 werden dann anhand der dritten Tabelle SimArrayIdent alle Prozesse in der richtigen Reihenfolge aufgerufen. In einem Funktionsblock 5 ist das erfindungsgemäße Verfahren beendet.
  • Anhand 1b wird der Initialisierungsschritt 2 näher erläutert. In einem Funktionsblock 6 wird eine dritte Tabelle SimArrayIdent (vgl. 5) der Dimension (Anzahl gemessener Taskaufrufe·Taskanzahl) initialisiert. Die Anzahl der gemessenen Taskaufrufe ist gleich der Dimension der ersten Tabelle ProcMeasArray, also gleich zwölf. Die Taskanzahl ist gleich vier (Task A, Task B, Task C, Task D). In der ersten Zeile der dritten Tabelle SimArrayIdent wird jeweils die Kennung des letzten Prozesses 111, 222, 333, 433 jeder in der zweiten Tabelle TaskMeasArray abgelegten Task A, B, C, D abgelegt. In der zweiten Tabelle TaskMeasArray wurde während der Abarbeitung des Steuerprogramms für den Prozessablauf aus 2 die Reihenfolge der jeweils beendeten messenden Tasks A, B, C, D abgelegt.
  • In einem Funktionsblock 7 wird eine vierte Tabelle BegunTask (vgl. 7) der Dimension (Taskanzahl·1) initialisiert. In der vierten Tabelle BegunTask wird während der Ausführung des Rekonstruktionsalgorithmus eine Speicherzelle für eine Task A, B, C, D gesetzt, sobald auf den ersten in der ersten Tabelle ProcMeasArray enthaltenen Prozess 111; 212; 313; 413 einer Task A, B, C, D getroffen wird. Die Speicherzelle wird für die Task A, B, C, D gelöscht, sobald auf den letzten Prozess 111; 222; 333; 433 einer Task A, B, C, D getroffen wird. Der Inhalt der vierten Tabelle BegunTask wird auf Null gesetzt, da die dritte Tabelle SimArrayIdent zunächst nur beendete Tasks A, B, C, D (die letzten Prozesse 111, 222, 333, 433 der Tasks A, B, C, D) beinhaltet.
  • In einem Funktionsblock 8 wird des weiteren eine fünfte Tabelle SimArrayBeginning (vgl. 8) der Dimension (Anzahl gemessener Taskaufrufe·Taskanzahl) initialisiert. wird während der Ausführung des Rekonstruktionsalgorithmus der Anfang einer Task in der dritten Tabelle SimArrayIdent gefunden, wird an der gleichen Position (gleiche Zeile und Spalte) in der fünften Tabelle SimArrayBeginning eine entsprechende Speicherzelle auf Eins gesetzt. Wird während des Rekonstruktionsalgorithmus mit Hilfe der vierten Tabelle BegunTask festgestellt, dass die zu einem in der ersten Tabelle ProcMeasArray abgelegten gemessenen Prozess gehörende Task bereits begonnen hat, wird die Speicherzelle in der ersten Zeile dieser Spalte der fünften Tabelle SimArrayBeginning zurückgesetzt. Die erste Zeile der fünften Tabelle SimArrayBeginning wird im Rahmen des Initialisierungsschritts 2 auf Eins gesetzt.
  • In einem Funktionsblock 9 wird eine sechste Tabelle ColProcNum der Dimension (Anzahl gemessener Taskaufrufe ·1) initialisiert. In der sechste Tabelle ColProcNum wird während der Ausführung des Rekonstruktionsalgorithmus für jede Spalte der Zeilenindex der letzten Speicherzelle, die ungleich Null ist, der fünften Tabelle SimArrayBeginning abgelegt.
  • Anhand 1c wird der Rekonstruktionsalgorithmus 3 näher erläutert. Es wird beginnend bei dem ersten Element der ersten Tabelle ProcMeasArray nacheinander jedes Element, d.h. jeder gemessene Prozess, überprüft. In einem Funktionsblock 10 wird der LoopIndex auf Null gesetzt (LoopIndex = 0). In einem Abfrageblock 11 wird überprüft ob der dem aktuellen LoopIndex entsprechende Prozess 111 dem letzten Prozess 111 der dem Prozess 111 zugeordneten Task A entspricht. Da dies der Fall ist, erfolgt kein Eintrag in der dritten Tabelle SimArrayIdent, und es wird zu einem Funktionsblock 12 verzweigt, wo der LoopIndex um Eins erhöht wird (LoopIndex = 1).
  • In dem Abfrageblock 11 wird dann der nächste Prozess 212 der ersten Tabelle ProcMeasArray überprüft. Da der Prozess 212 nicht dem letzten Prozess 222 der dem Prozess 212 zugeordneten Task B entspricht, wird zu einem Funktionsblock 13 verzweigt, wo die dem aktuellen LoopIndex entsprechende messende Task anhand der zweiten Tabelle TaskMeasArray ermittelt wird (Task A). Anschließend wird in einem Funktionsblock 14 der Beginn, d.h. der erste in der ersten Tabelle ProcMeasArray enthaltene Prozess, der messenden Task ermittelt. Zur Ermittlung des Beginns der messenden Task werden die vierte Tabelle BegunTask (vgl. 7), die fünfte Tabelle SimArrayBeginning und die sechste Tabelle ColProcNum herangezogen. Selbstverständlich kann der Beginn der messenden Task auch auf eine andere Weise ermittelt werden.
  • Für die Task A ist die Ermittlung des Beginns der messenden Task sehr einfach, da der Prozess 111 immer auch den Beginn der Task A darstellt. Dann wird der aktuelle überprüfte Prozess 212 in einem Funktionsblock 15 vor den Beginn der messenden Task A in der dritten Tabelle SimArrayldent abgelegt (vgl. 6). Schließlich wird in einem weiteren Abfrageblock 16 überprüft, ob alle in der ersten Tabelle ProcMeasArray abgelegten Prozesse überprüft worden sind. Falls nein, wird zu dem Funktionsblock 12 verzweigt, der LoopIndex um Eins erhöht (LoopIndex = 2) und der nächste Prozess der ersten Tabelle ProcMeasArray überprüft. Falls ja, wird zu dem Aufruf 4 des Prozessablaufs in der richtigen Reihenfolge verzweigt.
  • In Fortsetzung des Rekonstruktionsalgorithmus 3 wird für den LoopIndex = 2 der Prozess 313 der ersten Tabelle ProcMeasArray überprüft. In dem Abfrageblock 11 wird festgestellt, dass der Prozess 313 nicht dem letzten Prozess 333 der dem Prozess 313 zugeordneten Task C entspricht. In dem Funktionsblock 13 wird die Task B als die dem aktuellen LoopIndex = 2 entsprechende messende Task ermittelt. Anschließend wird in dem Funktionsblock 14 der Beginn, d.h. der erste in der ersten Tabelle ProcMeasArray enthaltene Prozess 212, der messenden Task B ermittelt. Dann wird der aktuelle überprüfte Prozess 313 in dem Funktionsblock 15 vor den Beginn der messenden Task B in der dritten Tabelle SimArrayIdent abgelegt (vgl. 6). Der Rekonstruktionsalgorithmus wird so lange fortgesetzt bis sich die dritte Tabelle SimArrayIdent mit dem in 6 dargestellten Inhalt ergibt.
  • Anhand 1d wird der Aufruf 4 aller Prozesse in der richtigen Reihenfolge näher erläutert. Die in der dritten Tabelle SimArrayIdent abgelegten Prozesse werden in der in 6 durch Pfeile gekennzeichneten Reihenfolge aus der dritten Tabelle SimArrayIdent ausgelesen. Man erhält so eine Folge von vor Beginn einer neuen Task A, B, C, D zuletzt abgearbeiteten Prozessen 111; 212, 222; 313, 323, 333; 413, 423, 433. In der dritten Tabelle SimArrayIdent ist für eine Folge mehrerer Prozesse 212, 222; 313, 323, 333; 413, 423, 433 derselben Task B; C; D lediglich der jeweils letzte Prozess 222; 333; 433 der Task B; C; D abgelegt. Die fehlenden Prozesse werden in dem Funktionsblock 4 ergänzt.
  • Die einzelnen Kennungen der dritten Tabelle SimArrayIdent werden ausgehend von der letzten Kennung in einer Richtung entgegen dem Prozessablauf überprüft. Zum besseren Verständnis ist in 9 der Inhalt der dritten Tabelle SimArrayIdent in einer eindimensionalen Tabelle mit einem mit dem Prozessablauf zunehmenden Zeiger LoopIndex neben den entsprechenden Tabellenelementen dargestellt. In einem Funktionsblock 17 wird der Zeiger LoopIndex auf die Anzahl der in der dritten Tabelle SimArrayIdent abgelegten Kennungen abzüglich Eins gesetzt (LoopIndex = 15). Über den Zeiger LoopIndex wird die zu prüfende Kennung ausgewählt. Zunächst wird die Kennung des der geprüften Kennung entsprechenden Prozesses 111 in einer eindimensionalen siebten Tabelle (vgl. 10) als letztes Element abgelegt. In einem Abfrageblock 18 wird überprüft, ob der Prozess 111 einer Task mit lediglich einem Prozess zugeordnet ist. Der Prozess 111 ist der Task A zugeordnet, die lediglich einen Prozess 111 umfasst. Es wird zu dem Funktionsblock 24 verzweigt, in dem ausgehend von dem der geprüften Kennung entsprechenden Prozess alle Prozesse der betrachteten Task bis zu dem ersten Prozess der Task vor den geprüften Prozess in die siebte Tabelle eingefügt werden. Im vorliegenden Fall werden keine weiteren Kennungen von Prozessen in der siebten Tabelle abgelegt. Es wird zu einem Funktionsblock 19 verzweigt, wo der LoopIndex um Eins erniedrigt wird (LoopIndex = 14). Anschließend wird in einem weiteren Abfrageblock 20 überprüft, ob alle in der dritten Tabelle SimArrayIdent abgelegten Kennungen überprüft worden sind (LoopIndex < 0?).
  • Zunächst wird die Kennung des der geprüften Kennung entsprechenden Prozesses 433 in der siebten Tabelle (vgl. 10) als vorletztes Element abgelegt. Dann wird in dem Abfrageblock 18 überprüft, ob der Prozess 433 einer Task D mit lediglich einem Prozess 413, 423, 433 zugeordnet ist. Das ist nicht der Fall, und es wird zu einem weiteren Abfrageblock 21 verzweigt, wo überprüft wird, ob es sich bei dem der geprüften Kennung entsprechenden Prozess um den Prozess, der als erster von einer anderen Task unterbrochen wird, der entsprechenden Task handelt. Anhand der fünften Tabelle wird ermittelt, dass der Prozess 433 der erste von einer anderen Task unterbrochene Prozess ist. Es wird zu dem Funktionsblock 24 verzweigt, in dem ausgehend von dem der geprüften Kennung entsprechenden Prozess 433 alle Prozesse 423, 413 der betrachteten Task D bis zu dem ersten Prozess 413 der Task D vor den geprüften Prozess 433 in der siebten Tabelle abgelegt werden. Dann wird zu dem Funktionsblock 19 verzweigt, wo der LoopIndex wieder um Eins erniedrigt wird (LoopIndex = 13). Anschließend wird in dem Abfrageblock 20 wieder überprüft, ob alle in der dritten Tabelle SimArrayIdent abgelegten Kennungen überprüft worden sind (LoopIndex < 0?).
  • Zunächst wird die Kennung des der geprüften Kennung entsprechenden Prozesses 333 in der siebten Tabelle (vgl. 10) abgelegt. Dann wird in dem Abfrageblock 18 überprüft, ob der Prozess 333 einer Task C mit lediglich einem Prozess 313, 323, 333 zugeordnet ist. Das ist nicht der Fall, und es wird zu einem weiteren Abfrageblock 21 verzweigt, wo überprüft wird, ob es sich bei dem der geprüften Kennung entsprechenden Prozess 333 um den Prozess, der als erster von einer anderen Task unterbrochen wird, der entsprechenden Task handelt.
  • In diesem Fall ist der Prozess 333 jedoch nicht der erste Prozess 313 der Task C, der von einer anderen Task unterbrochen wird. Deshalb wird zu einem Funktionsblock 22 verzweigt, in dem die dritte Tabelle SimArrayIdent entgegen dem Prozessablauf nach einem dem aktuell überprüften Prozess vorangehenden Prozess durchsucht und mit Hilfe der fünten Tabelle der erste Prozess der Task C ermittelt wird, der von einer anderen Task unterbrochen wird. Anschließend werden in einem Funktionsblock 23 diejenigen Prozesse vor den überprüften Prozess 333 in die siebte Tabelle (vgl. 10) eingefügt, die zwischen dem überprüften Prozess 333 und dem in dem Funktionsblock 23 ermittelten ersten von einer anderen Task unterbrochenen Prozess 313 der Task C liegen. Im vorliegenden Fall wird also lediglich die Kennung des Prozesses 323 eingefügt.
  • Das in 1d dargestellte Verfahren wird so lange fortgesetzt, bis sämtliche in der dritten Tabelle SimArrayIdent abgelegten Kennungen überprüft worden sind (LoopIndex < 0 in dem Abfrageblock 20). Man erhält dann den in der siebten Tabelle abgelegten vollständigen reproduzierten Prozessablauf des Steuerprogramms (vgl. 10).
  • In 11 ist eine erfindungsgemäße Vorrichtung mit dem Bezugszeichen 30 bezeichnet. Die Vorrichtung 30 weist ein Rechengerät, insbesondere einen Mikroprozessor 31 auf, auf dem ein Computerprogramm ablauffähig ist. Die Vorrichtung 30 umfasst des Weiteren ein Speicherelement 32, auf dem das Computerprogramm gespeichert ist. Über eine Datenverbindung 33, die bspw. als eine Bus-Leitung ausgebildet ist, wird das von dem Mikroprozessor 31 auszuführende Computerprogramm oder Teile davon zu dem Mikroprozessor 31 übertragen und dort abgearbeitet. Über geeignete Schnittstellen 34 werden dem Mikroprozessor 31 während der Abarbeitung des Computerprogramms Messgrößen zugeführt und in dem Mikroprozessor 31 verarbeitet. Die Messgrößen können aber auch in dem Speicherelement 32 gespeichert werden und während der Abarbeitung des Computerprogramms an den Mikroprozessor 31 übertragen werden. Die Messgrößen umfassen bspw. auch Informationen über den Prozessablauf, insbesondere die Reihenfolge der Abarbeitung der Prozesse, eines Steuerprogramms. Diese Informationen sind in einer ersten Tabelle ProcMeasArray abgelegt. Durch die Abarbeitung des Computerprogramms auf dem Mikroprozessor 31 kann das oben beschriebene erfindungsgemäße Verfahren ausgeführt werden.

Claims (11)

  1. Verfahren zur Rekonstruktion des Ablaufs von Prozessen eines von einem Rechengerät, insbesondere von einem Mikroprozessor, abgearbeiteten Steuerprogramms aus dem Inhalt einer ersten Tabelle (ProcMeasArray) und einer zweiten Tabelle (TaskMeasArray), wobei – das Steuerprogramm in mehrere Tasks (A, B, C, D) unterteilt ist und jede Task (A, B, C, D) mindestens einen Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) umfasst; – während der Abarbeitung des Steuerprogramms in der ersten Tabelle (ProcMeasArray) jeweils für eine beendete Task (A, B, C, D) eine Kennung des vor Beginn der beendeten Task (A, B, C, D) zuletzt abgearbeiteten Prozesses (111; 212, 222; 313, 323, 333; 413, 423, 433) und in der zweiten Tabelle (TaskMeasArray) die Reihenfolge der jeweils beendeten Tasks (A, B, C, D) abgelegt wird; – zunächst aus dem Inhalt der ersten Tabelle (ProcMeasArray) und der zweiten Tabelle (TaskMeasArray) eine dritte Tabelle (SimArrayIdent) erstellt wird, die jeweils für eine neue Task (A, B, C, D) die Kennung des vor Beginn der neuen Task zuletzt abgearbeiteten Prozesses (111; 212, 222; 313, 323, 333; 413, 423, 433) enthält; und – dann aus der dritten Tabelle (SimArrayIdent) in Kenntnis der Reihenfolge der Abarbeitung der Prozesse (111; 212, 222; 313, 323, 333; 413, 423, 433) der einzelnen Tasks (A, B, C, D) der vollständige Prozessablauf des Steuerprogramms rekonstruiert wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass zum Erstellen der dritten Tabelle (SimArrayIdent) – zunächst die Kennungen der jeweils letzten Prozesse (111; 222; 333; 433) der in der zweiten Tabelle (TaskMeasArray) abgelegten Tasks (A, B, C, D) in der dritten Tabelle (SimArrayIdent) abgelegt werden; – für jede Kennung in der ersten Tabelle (ProcMeasArray) geprüft wird, ob der entsprechende Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) der letzte Prozess (111; 222; 333; 433) seiner Task (A, B, C, D) ist, und – falls die Kennung dem letzten Prozess (111; 222; 333; 433) ihrer Task (A, B, C, D) entspricht, in der dritten Tabelle (SimArrayIdent) kein Eintrag erfolgt; oder – falls die Kennung nicht dem letzten Prozess (111; 222; 333; 433) ihrer Task (A, B, C, D) entspricht, in der dritten Tabelle (SimArrayIdent) die geprüfte Kennung vor die Kennung des ersten in der ersten Tabelle (ProcMeasArray) enthaltenen Prozesses (111; 212; 313; 413) der Task (A, B, C, D) abgelegt wird, die an einer der Position der geprüften Kennung in der ersten Tabelle (ProcMeasArray) entsprechenden Position beendet war.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass zum Ermitteln der Kennung des ersten in der ersten Tabelle (ProcMeasArray) enthaltenen Prozesses (111; 212; 313; 413) der Task (A, B, C, D) – eine vierte Tabelle (BegunTask) herangezogen wird, in der für jede Task (A, B, C, D) abgelegt ist, ob sie bereits begonnen hat oder nicht, und – der Inhalt der vierten Tabelle (BegunTask) für die Task (A, B, C, D) geprüft wird, die an einer der Position der geprüften Kennung in der ersten Tabelle (ProcMeasArray) entsprechenden Position beendet war.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass in der vierten Tabelle (BegunTask) eine Speicherzelle für eine Task (A, B, C, D) gesetzt wird, sobald während der Rekonstruktion des Prozessablaufs auf den ersten von einer anderen Task unterbrochenen Prozess (111; 212; 313; 413) der Task (A, B, C, D) getroffen wird, und die Speicherzelle für die Task (A, B, C, D) gelöscht wird, sobald während der Rekonstruktion des Prozessablaufs auf den letzten Prozess (111; 222; 333; 433) der Task (A, B, C, D) getroffen wird.
  5. Verfahren nach einem der Ansprüche 2 bis 4, dadurch gekennzeichnet, dass zum Ermitteln des ersten von einer anderen Task unterbrochenen Prozesses (111; 212; 313; 413) der Task (A, B, C, D), die an der der Position der geprüften Kennung in der ersten Tabelle (ProcMeasArray) entsprechenden Position beendet war, – eine fünfte Tabelle (SimArrayBeginning) herangezogen wird, in der für die in der dritten Tabelle (SimArrayIdent) abgelegten Prozesse (111; 212, 222; 313, 323, 333; 413, 423, 433) abgelegt ist, ob die abgelegten Prozesse (111; 212, 222; 313, 323, 333; 413, 423, 433) die ersten von einer anderen Task unterbrochenen Prozesse (111; 212; 313; 413) der entsprechenden Task (A, B, C, D) sind, und – der Inhalt der fünften Tabelle (SimArrayBeginning) für die der Position der geprüften Kennung in der dritten Tabelle (SimArrayIdent) vorangehenden Prozesse (111; 212, 222; 313, 323, 333; 413, 423, 433) geprüft wird, ob sie die ersten von einer anderen Task unterbrochenen Prozesse der Task (A, B, C, D) sind, die an einer der Position der geprüften Kennung in der ersten Tabelle (ProcMeasArray) entsprechenden Position beendet war.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass in der fünften Tabelle (SimArrayBeginning) eine Speicherzelle gesetzt wird, sobald während der Rekonstruktion des Prozessablaufs auf einen in der dritten Tabelle (SimArrayIdent) abgelegten Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) getroffen wird, der der erste von einer anderen Task unterbrochene Prozess (111; 212; 313; 413) der entsprechenden Task (A, B, C, D) ist.
  7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass zur Rekonstruktion des vollständigen Prozessablaufs – die Kennungen der dritten Tabelle (SimArrayIdent) in einer Richtung entgegen dem Prozessablauf daraufhin überprüft werden, ob der der geprüften Kennung entsprechende Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) zu einer Task (A) mit lediglich einem Prozess (111) gehört oder ob es sich bei dem der geprüften Kennung entsprechenden Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) um den ersten in der ersten Tabelle (ProcMeasArray) enthaltenen Prozess (111; 212; 313; 413) der entsprechenden Task (A, B, C, D) handelt; – die Kennungen der geprüften Prozesse entgegen dem Prozessablauf in einer eindimensionalen siebten Tabelle abgelegt werden, und – falls ein der geprüften Kennung entsprechende Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) zu einer Task (A) mit lediglich einem Prozess (111) gehört oder falls es sich bei dem der geprüften Kennung entsprechenden Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) um den ersten von einer anderen Task unterbrochenen Prozess (111; 212; 313; 413) der entsprechenden Task (A, B, C, D) handelt, kein Eintrag in die siebte Tabelle erfolgt, oder – falls ein der geprüften Kennung entsprechende Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) zu einer Task (B, C, D) mit mehreren Prozessen (212, 222; 313, 323, 333; 413, 423, 433) gehört und es sich bei dem der geprüften Kennung entsprechenden Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) nicht um den ersten von einer anderen Task unterbrochenen Prozess (212; 313; 413) der entsprechenden Task (B, C, D) handelt, in der dritten Tabelle (SimArrayIdent) ausgehend von der geprüften Position entgegen dem Prozessablauf die Kennung des der geprüften Kennung vorangehenden Prozesses (212; 313, 323; 413, 423) der entsprechenden Task (B, C, D) gesucht wird und – falls vor dem der geprüften Kennung entsprechenden Prozess (222; 323, 333; 423, 433) mindestens ein Prozess (212; 313, 323; 413, 423) fehlt, die Kennung des mindestens einen fehlenden Prozesses (212; 313, 323; 413, 423) in die siebte Tabelle vor den der geprüften Kennung entsprechenden Prozess (222; 323, 333; 423, 433) eingefügt wird.
  8. Speicherelement (32) mit einem darauf abgespeicherten, auf einem Rechengerät ablauffähigen Computerprogramm, wobei das Computerprogramm von dem Speicherelement (32) zumindest teilweise an das Rechengerät übertragbar ist und ein Verfahren nach einem der Ansprüche 1 bis 7 ausführt, wenn das Computerprogramm zumindest teilweise auf dem Rechengerät abläuft.
  9. Computerprogramm, dadurch gekennzeichnet, dass das Computerprogramm ein Verfahren nach einem der Ansprüche 1 bis 7 ausführt, wenn es auf einem Rechengerät abläuft.
  10. Vorrichtung zur Rekonstruktion des Ablaufs von Prozessen eines von einem Rechengerät abgearbeiteten Steuerprogramms aus dem Inhalt einer ersten Tabelle (ProcMeasArray) und einer zweiten Tabelle (TaskMeasArray), wobei – das Steuerprogramm in mehrere Tasks (A, B, C, D) unterteilt ist und jede Task (A, B, C, D) mindestens einen Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) umfasst; – während der Abarbeitung des Steuerprogramms in der ersten Tabelle (ProcMeasArray) jeweils für eine beendete Task (A, B, C, D) eine Kennung eines vor Beginn der beendeten Task (A, B, C, D) zuletzt abgearbeiteten Prozesses (111; 212, 222; 313, 323, 333; 413, 423, 433) und in der zweiten Tabelle (TaskMeasArray) die Reihenfolge der jeweils beendeten Tasks (A, B, C, D) abgelegt ist; und – das Steuerprogramm in mehrere Tasks (A, B, C, D) unterteilt ist und jede Task (A, B, C, D) mindestens einen Prozess (111; 212, 222; 313, 323, 333; 413, 423, 433) umfasst; und die Vorrichtung umfasst: – Mittel zum Ablegen einer Kennung des jeweils vor Beginn einer beendeten Task (A, B, C, D) zuletzt abgearbeiteten Prozesses (111; 212, 222; 313, 323, 333; 413, 423, 433) in der ersten Tabelle (ProcMeasArray) während der Abarbeitung des Steuerprogramms; – Mittel zum Ablegen der Reihenfolge der jeweils beendeten Tasks (A, B, C, D) in der zweiten Tabelle (TaskMeasArray) während der Abarbeitung des Steuerprogramms; – Mittel zum Erstellen einer dritte Tabelle (SimArrayIdent), die jeweils für eine neue Task (A, B, C, D) die Kennung des vor Beginn der neuen Task zuletzt abgearbeiteten Prozesses (111; 212, 222; 313, 323, 333; 413, 423, 433) enthält, aus dem Inhalt der ersten Tabelle (ProcMeasArray) und der zweiten Tabelle (TaskMeasArray); und – Mittel zum Rekonstruieren des vollständigen Prozessablaufs des Steuerprogramms aus der dritten Tabelle (SimArrayIdent) in Kenntnis der Reihenfolge der Abarbeitung der Prozesse (111; 212, 222; 313, 323, 333; 413, 423, 433) der einzelnen Tasks (A, B, C, D).
  11. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung Mittel zur Durchführung eines Verfahrens nach einem der Ansprüche 2 bis 7 aufweist.
DE10065498A 2000-12-28 2000-12-28 Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms Expired - Fee Related DE10065498B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE10065498A DE10065498B4 (de) 2000-12-28 2000-12-28 Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms
US10/034,546 US7086054B2 (en) 2000-12-28 2001-12-28 Method and device for reconstructing the process sequence of a control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10065498A DE10065498B4 (de) 2000-12-28 2000-12-28 Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms

Publications (2)

Publication Number Publication Date
DE10065498A1 DE10065498A1 (de) 2002-07-18
DE10065498B4 true DE10065498B4 (de) 2005-07-07

Family

ID=7669291

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10065498A Expired - Fee Related DE10065498B4 (de) 2000-12-28 2000-12-28 Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms

Country Status (2)

Country Link
US (1) US7086054B2 (de)
DE (1) DE10065498B4 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020178148A1 (en) * 2001-03-30 2002-11-28 Jonathan Sobel Source-level threads
WO2003081429A1 (fr) * 2002-03-22 2003-10-02 Toyota Jidosha Kabushiki Kaisha Procede et dispositif de gestion de taches, procede et dispositif d'evaluation de fonctionnement et programme devant etre evalue
JP4682513B2 (ja) * 2003-12-05 2011-05-11 トヨタ自動車株式会社 タスク管理システム
KR101626378B1 (ko) * 2009-12-28 2016-06-01 삼성전자주식회사 병렬도를 고려한 병렬 처리 장치 및 방법
CN105164639B (zh) * 2013-04-23 2018-11-09 起元科技有限公司 控制由计算系统执行的任务
US10387238B2 (en) * 2016-09-22 2019-08-20 Rockwell Automation Technologies, Inc. Industrial control program sequence monitoring
US11048552B2 (en) * 2018-05-30 2021-06-29 Texas Instruments Incorporated High-speed broadside communications and control system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19500957A1 (de) * 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
US5872909A (en) * 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05197573A (ja) * 1991-08-26 1993-08-06 Hewlett Packard Co <Hp> タスク指向パラダイムによるタスク管理システム
US6304891B1 (en) * 1992-09-30 2001-10-16 Apple Computer, Inc. Execution control for processor tasks
US5628013A (en) * 1992-09-30 1997-05-06 Apple Computer, Inc. Apparatus and method for allocating processing time in a frame-based computer system
FR2696259A1 (fr) * 1992-09-30 1994-04-01 Apple Computer Organisation en tâches et en modules d'une exécution dans un processeur.
FR2723652B1 (fr) * 1994-08-11 1996-09-13 Cegelec Procede pour ordonnancer des taches successives
FR2723653B1 (fr) * 1994-08-11 1996-09-13 Cegelec Procede pour ordonnancer des taches successives qui ne subissent que des contraintes du type delais
US5619409A (en) * 1995-06-12 1997-04-08 Allen-Bradley Company, Inc. Program analysis circuitry for multi-tasking industrial controller
US5828880A (en) * 1995-07-06 1998-10-27 Sun Microsystems, Inc. Pipeline system and method for multiprocessor applications in which each of a plurality of threads execute all steps of a process characterized by normal and parallel steps on a respective datum
US5844795A (en) * 1995-11-01 1998-12-01 Allen Bradley Company, Llc Diagnostic aid for industrial controller using multi-tasking architecture
FR2760109B1 (fr) * 1997-02-25 1999-05-28 Sextant Avionique Procede et dispositif pour l'execution par un processeur unique de plusieurs fonctions de niveaux de criticite differents, avec une grande securite de fonctionnement
US6272388B1 (en) * 1998-09-29 2001-08-07 Rockwell Technologies, Llc Program structure and method for industrial control
US6775582B2 (en) * 2001-02-21 2004-08-10 Siemens Aktiengesellschaft Data processing system and device for implementing cohesive, decentralized and dynamic management of a technical process

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19500957A1 (de) * 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
US5872909A (en) * 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ERCOS EK V2.0.0 Manual. ETAS GmbH & Co. KG, Stuttgart 1998 *

Also Published As

Publication number Publication date
US20020152256A1 (en) 2002-10-17
DE10065498A1 (de) 2002-07-18
US7086054B2 (en) 2006-08-01

Similar Documents

Publication Publication Date Title
EP1330685B1 (de) Prüfverfahren und prüfvorrichtung zur inbetriebnahme von mittels einer programmlogik gesteuerten systemen
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE3416939A1 (de) Verfahren zur steuerung von betriebseinrichtungen
DE10115729B4 (de) Vielseitiges Boot-Verfahren für eine Anwendungs-Software eines Mikrocontrollers
DE19535546A1 (de) Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems
DE10065498B4 (de) Verfahren und Vorrichtung zur Rekonstruktion des Prozessablaufs eines Steuerprogramms
DE2101949A1 (de) Verfahren zum Schutz von Datengruppen in einer Multiprocessing-Datenverarbeitungsanlage
DE4106164A1 (de) Verfahren zum suchen und beseitigen von programmfehlern durch ausfuehren eines blockmodenlaufes
DE10061001B4 (de) Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug, sowie Speicherelement und Steuerprogramm hierfür
DE4445651A1 (de) Verfahren zur Steuerung von technischen Vorgängen
DE60217729T2 (de) Verfahren zum erkennen eines elektronischen geräts in einem mehrfachsteuersystem
DE3938517C2 (de)
DE19630415A1 (de) Software-Werkzeug
WO1997040442A1 (de) Verfahren und steuereinrichtung für eine graphische steuerung von abläufen in einem netzwerkmanagementsystem
DE3546332C2 (de) Mikroprozessor mit verbessertem Befehlszyklus
EP0860758B1 (de) Einrichtung zur Programmierung einer SPS
WO2000019283A1 (de) Verfahren zum betrieb eines automatisierungssystems
DE10110444A1 (de) Verfahren und Vorrichtung zum Ermitteln der Auslastung eines Rechengeräts
DE69128159T2 (de) Programmierbare Steuereinrichtung mit automatischer Steuerung des Verriegelungsprozesses
DE3688506T2 (de) Datenverarbeitungsanlage.
EP3948449B1 (de) Verfahren und engineering-system zur änderung eines programms einer industriellen automatisierungskomponente
EP0439559B1 (de) Verfahren zur datenübertragung über einen seriellen datenbus in verteilten systemen
DE4116309C2 (de) Steuerverfahren für eine Produktionsanlage unter Durchführung eines Inferenzvorganges
DE19629055C2 (de) Verfahren zum Herstellen eines Startzustandes bezüglich einer Schnittstelle durch zwei identische Befehlsfolgen
DE4424375C1 (de) Verfahren zur Behandlung von Unterbrechungsanforderungen und Prozeßaufrufen bei im Echtzeitbetrieb arbeitenden Datenverarbeitungsanlagen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee