[go: up one dir, main page]

DE10062553A1 - System zur Steuerung eines Prozesses - Google Patents

System zur Steuerung eines Prozesses

Info

Publication number
DE10062553A1
DE10062553A1 DE2000162553 DE10062553A DE10062553A1 DE 10062553 A1 DE10062553 A1 DE 10062553A1 DE 2000162553 DE2000162553 DE 2000162553 DE 10062553 A DE10062553 A DE 10062553A DE 10062553 A1 DE10062553 A1 DE 10062553A1
Authority
DE
Germany
Prior art keywords
time
function
procedure
variable
software
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.)
Withdrawn
Application number
DE2000162553
Other languages
English (en)
Inventor
Johannes Fasolt
Peter Hofmann
Florian Wohlgemuth
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.)
Mercedes Benz Group AG
Original Assignee
DaimlerChrysler AG
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 DaimlerChrysler AG filed Critical DaimlerChrysler AG
Priority to DE2000162553 priority Critical patent/DE10062553A1/de
Publication of DE10062553A1 publication Critical patent/DE10062553A1/de
Withdrawn 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/23255Object oriented programming, OOP
    • 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/23267Program derived from sequence time diagram and stored in table
    • 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/25342Real time controller
    • 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/25369Control of states, real time

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

Ein System zur Steuerung oder Regelung eines Prozesses, wobei das System eine Software mit einzelnen Modulen jeweils zur Durchführung von Teilprozessen aufweist, zwischen den Modulen Schnittstellen vorgesehen sind, über die Daten ausgetauscht werden, und wobei ein Zeiterfassungsmittel zur Überwachung der Zeitdauer der Teilprozesse vorgesehen ist. Als Zeiterfassungsmittel ist einer Prozedur oder Funktion eine Variable zugeordnet, in der die zeitliche Dauer der Verarbeitung darstellbar ist und ein Zeitbegrenzungsmittel vergleicht den Wert der Variablen mit einer zu der Prozedur oder Funktion definierten Bedingung, in der die Zeitanforderungen für den Teilprozess auf einem Modul festgehalten sind.

Description

Die Erfindung betrifft ein System zur Steuerung oder Regelung eines Prozesses, wobei das System eine Software mit einzelnen Modulen jeweils zur Durchführung von Teilprozessen aufweist, zwischen den Modulen Schnittstellen vorgesehen sind, über die Daten ausgetauscht werden, und wobei ein Zeiterfassungsmittel zur Überwachung der Zeitdauer der Teilprozesse vorgesehen ist.
Heute werden Systeme zur Steuerung und/oder Regelung von Pro­ zessen in technischen Produkten meist durch Software gesteuert, die auf speziellen Mikrorechnern oder Steuergeräten lauffähig sind. Derartige Software-Systeme sind meist in einzelne Module untergliedert, die unterschiedliche Aufgaben durchführen. Bei derartigen verteilten Software-Systemen werden einzelne Re­ chenoperationen mittels eines ersten Moduls ausgeführt und die Ergebnisdaten dann an ein weiteres Modul übergeben, wo diese Ergebnisdaten dann weiterverarbeitet werden. Die einzelnen Mo­ dule können auch in unterschiedlichen Mikrorechnern und/oder Steuergeräten implementiert sein, so dass hinsichtlich des zeitlichen Verlaufs bei der Berechnung keine Aussagen getroffen werden können, da insbesondere auch die Rechendauer der einzel­ nen Teilprozesse nicht bekannt ist. Zeitanforderungen und Zeit­ verläufe gehen dadurch verloren und können im weiteren Prozess­ verlauf nicht verfolgt werden. Infolgedessen ist es oft schwer eine Aussage darüber zu treffen, ob eine Software in Echtzeit­ systemen den zeitlichen Anforderungen gerecht wird und welche Module zu langsam in der Verarbeitung sind.
Insbesondere bei Echtzeiterfordernissen ist dabei sicherzustel­ len, dass die Software die Gesamtberechnungen auch in der erforderlichen Zeit durchführt. In K. H. Kim, COMPSAC 1994, IEEE Computer Society's Int'1 Computer Software & Applications Con­ ference in Taipei, Seiten 392-402, Nov. 1994 wird ein separates Zeitbeschreibungsmittel in ein generisches Objektmodell einge­ führt, wobei die Wiederverwendbarkeit derartiger Zeitbeschrei­ bungsmittel nicht berücksichtigt werden. Dabei ist die Software für ein verteiltes Computersystem objektorientiert programmiert und es sind abstrakte Datentypen vorgesehen. Für jede Ausfüh­ rung eines Verfahrens ist eine zeitliche Grenze (Deadline) vor­ gegeben. Für einige Verfahren nach einem bestimmten Objekt dient ein Uhrentakt zum zeitlichen Abgleich des Verfahrens ent­ sprechend den Echtzeitbedingungen. Nach dem Ablauf einer vorge­ gebenen Zeitdauer werden bestimmte Daten beispielsweise ungül­ tig. Üblicherweise werden bei der Definition der Variablen die Zeitbedingungen bestimmt, für die die Variable gültige Werte annehmen kann und/oder aktiv in einem Prozess eingebunden sein kann.
In Eiffel: The Language, Bertrand Meyer, Prentice Hall, 1992 ist zur Sicherung von Softwareeigenschaften bei der Program­ miersprache Eiffel vorgesehen, bei einer Datenübergabe von ei­ nem Modul zum anderen an das Datenformat Vor- und/oder Nachbe­ dingungen zu vergeben. Allerdings können zeitliche Anforderun­ gen in Eiffel nicht abgelegt werden.
Der Erfindung liegt die Aufgabe zugrunde, ein System der ein­ gangs genannten Art so weiterzubilden, dass die Einhaltung von Zeitabhängigkeiten und Zeitanforderungen bei der Ausführung ei­ ner Software überprüfbar ist. Insbesondere soll das System zum Einsatz bei Echtzeitanforderungen geeignet sein.
Diese Aufgabe wird erfindungsgemäß durch die Merkmale nach An­ spruch 1 gelöst. Danach ist einer Prozedur oder Funktion als Zeiterfassungsmittel eine Variable zugeordnet, in der die zeit­ liche Dauer der Verarbeitung darstellbar ist, und ein Zeitbe­ grenzungsmittel vergleicht den Wert der Variable mit einer zu der Prozedur oder Funktion definierten Bedingung, in der die Zeitanforderungen für den Teilprozess auf einem Modul festge­ halten ist.
Zeitanforderungen, wie maximale Laufzeiten, werden erfindungs­ gemäß in Nachbedingungen von Prozeduren oder Funktionen abge­ legt, während Periodizitäten, bspw. eine Aufruffrequenz, als deren Vorbedingung abgelegt sind. Alternativ dazu kann auch die Periodizität als Nachbedingung und die Zeitanforderungen als Vorbedingungen festgelegt werden, oder beide werden entweder als Vor- oder Nachbedingung festgelegt. Durch diese Definition für Funktionen und Prozeduren wird jeder Schnittstelle die Zeitanforderung zugeordnet, so dass für jede Programmausführung die Zeitdauer bei Ausführung vorab schon feststeht.
Eine Variable ist zur Speicherung der Zeitwerte vorgesehen, bspw. werden Zeiten von Funktionsabläufen oder Prozedurzeiten aufsummiert und mit der Nachbedingung, bspw. eine maximale Laufzeit der aufgerufenen Funktionen, Prozeduren oder Methoden verglichen. Wenn eine Funktion zur Ausführung aufgerufen wird, werden zunächst die zeitlichen Vorbedingungen für die Funktion gelesen und in die variable wird ein Zeitwert geladen. Während dem Funktionsablauf wird die Variable dann entsprechend einem Zeittakt einer Uhr inkrementiert.
Bei einer bevorzugten Ausführungsform weist das System eine Software auf, die objektorientiert programmiert ist und auf einzelne Module verteilt ist. Beim Einsatz in objektorientier­ ten Sprachen weisen Klassenhierarchien, in denen Zeitverträge genutzt werden, einen entsprechenden Aufbau mit Zeitvariablen auf. Weiterhin können die Zeitanforderungen graphisch beschrie­ ben werden. Dazu kann die Entwicklungsbeschreibungssprache UML (Unified Modeling Language) entsprechend angepasst werden. Die Zeitanforderungen können auch graphisch Dargestellt werden. Da­ zu werden die MSC (Message Sequence Charts) der UML angepasst.
Bei einer Weiterbildung der Erfindung wird bei objektorientier­ ter Programmierung der Software jeder Funktion oder Prozedur eine Variable zugewiesen, die die Zeitdauer bei der Abarbeitung mitführt. Bei der Übergabe an die nächste Funktion bzw. Proze­ dur über die Schnittstelle zwischen den Modulen wird der zu­ letzt gespeicherte Zeitwert an die nächste Funktion bzw. Proze­ dur als Startwert übergeben. Nach abgeschlossener Ausführung des Gesamtprozesses ist in der Variable die Zeit der Gesamtbe­ arbeitung festgehalten. Alternativ dazu kann bei Aufruf der folgenden Funktion die Zeitdauer von einer konstanten Start­ zeit, bspw. Null Sekunden, an hochgezählt werden, so dass die Laufzeit der Funktion oder Prozedur separat festgehalten wird. Anderseits kann vom Zeitwert am Ende einer Funktion deren Startwert abgezogen werden, wodurch sich ebenfalls die Laufzeit ergibt.
Zeitanforderungen können dadurch präzise im Zusammenhang mit einer Funktion oder Prozedur abgelegt werden und sind eng mit der Software verbunden. Folglich können Zeitanforderungen von Systemen, die in anderen Unternehmen erstellt oder programmiert werden, exakt definiert werden. Dadurch können auch vertragli­ che Garantien über bestimmte Programmlaufzeiten überprüft und vorgeben werden. Andererseits ist es auch möglich, wenn eine Funktion oder Prozedur nach einer vorgegebenen Laufzeit kein Ergebnis übermittelt hat, die Verarbeitung zu unterbrechen und mit einer Fehlerbehandlung fortzufahren.
Es gibt nun verschiedenen Möglichkeiten, die Lehre der vorlie­ genden Erfindung in vorteilhafter Weise auszugestalten und wei­ terzubilden. Dazu ist einerseits auf die untergeordneten An­ sprüche und andererseits auf die nachfolgende Erläuterung einer Ausführungsform zu verweisen.
Das technische System weist eine Software auf, die im Quellcode üblicherweise aufgeteilt in mehrere Module strukturiert ist. Zwischen den Modulen sind Schnittstellen vorhanden, über die vordefinierte Datenformate ein- oder ausgegeben werden oder von einem Modul an das andere übergeben werden. Jedes Modul weist eine oder mehrere Funktionen bzw. Prozeduren auf, die bestimmte Aufgaben, bspw. Berechnungen durchführen.
Das technische System ist ein sogenanntes Echtzeitsystem, d. h. die Software läuft in einem fahrzeugtauglichen Steuergerät und ist dort als sogenanntes embedded System umgesetzt. Die Ergeb­ nisdaten des Systems müssen rechtzeitig vor Ablauf einer be­ stimmten Zeit zur Verfügung stehen. Beim Kraftfahrzeug kann ein derartiges System den Zündzeitpunkt für die Zündkerzen verän­ dern, der berechnete Zeitpunkt muss also rechtzeitig vor der Zündung zur Verfügung stehen.
Wenn nun einzelne Module für ein Steuergerät bei unterschiedli­ chen Firmen programmiert werden, ist es erforderlich, dass spä­ ter das Gesamtsystem den Echtzeitbedingungen gerecht wird. Er­ findungsgemäß wird jeder Prozedur eine maximale Laufzeit vorge­ geben, und diese hat dann jeder Programmierer eines einzelnen Moduls zu berücksichtigen.
Bei der objektorientierten Programmierung sind dann im Quellcode der Software wie übliche die Klassen und Objekte de­ finiert. Erfindungsgemäß wird nun zusätzlich zum Datentyp der Funktion eine Vorbedingung und/oder eine Nachbedingung defi­ niert. Außerdem weist das System eine Zeitvariable oder ein Feld von Zeitvariablen auf, in der der aktuelle Uhrentakt oder eine Uhrzeit mitgeführt wird, während eine Funktion oder Proze­ dur ausgeführt wird. Durch eine Vorbedingung, die an die Funk­ tion/Prozedur übergeben wird, können dann bestimmte Zeittakte oder Frequenzen für die Uhr oder Anfangs- bzw. Abbruchzeiten an die Variable übergeben werden. Als Nachbedingung einer Funkti­ on/Prozedur kann dann eine zeitliche Wertung, Zeitanforderung oder andere Übergabebedingung geprüft oder auf einem anderen Modul an die nächste Funktion/Prozedur als Eingangsdatum mit übergeben werden.
Als Vorbedingungen der Funktionen, Prozeduren oder auch für die Ausgabeprozedur an die Schnittstellen sind bevorzugt Daten über Periodizitäten bei der Abarbeitung, wie Aufruffrequenzen, abge­ legt. Als Nachbedingungen sind bevorzugt Zeitanforderungen für den Ablauf der betreffenden Funktion, Prozedur oder bei Schnittstellen die Zeitanforderungen an den Teilprozess abge­ legt.
Durch die erfindungsgemäße Struktur des Systems kann die Lauf­ zeit einer Bearbeitung an jeder Schnittstelle durch Abfrage ei­ ner Variablen einfach überprüft oder abgefragt werden. Dadurch können zeitlichen Anforderungen leicht abgefragt, überprüft und eingehalten werden. Auf diese Weise können aufgrund der zeitli­ chen Werte in der Variablen auch Abbruchbedingungen überprüft werden und Fehlerbehandlungen aufgerufen werden, wenn eine Funktion/Prozedur nach der vorgegebenen maximalen Laufzeit nicht den erforderlichen Ergebniswert zurückgeliefert. Durch die vorliegende Erfindung lassen sich Echtzeitsystem aufteilen und verschiedene Module können an unterschiedlichen Orten pro­ grammiert werden, indem dabei die zeitlichen Anforderungen ein­ gehalten werden.
Aber auch während des Ablaufs der Software im Steuergerät kann durch die Mitführung der Laufzeit, überprüft werden, welche Funktion/Prozedur die Zeitanforderungen nicht einhält. Das Sy­ stem der vorliegenden Erfindung ermöglicht daher bei Echtzeit­ systemen die Überprüfung, welche Komponenten die Zeitanforde­ rungen nicht einhalten.

Claims (8)

1. System zur Steuerung oder Regelung eines Prozesses, wobei das System eine Software mit einzelnen Modulen jeweils zur Durchführung von Teilprozessen aufweist, zwischen den Modulen Schnittstellen vorgesehen sind, über die Daten ausgetauscht werden, und wobei ein Zeiterfassungsmittel zur Überwachung der Zeitdauer der Teilprozesse vorgesehen ist, dadurch gekennzeichnet, dass als Zeiter­ fassungsmittel einer Prozedur oder Funktion eine Variable zuge­ ordnet ist, in der die zeitliche Dauer der Verarbeitung dar­ stellbar ist und ein Zeitbegrenzungsmittel den Wert der Varia­ ble mit einer zu der Prozedur oder Funktion definierten Bedin­ gung vergleicht, in der die Zeitanforderungen für den Teilpro­ zess auf einem Modul festgehalten ist.
2. System nach Anspruch 1, dadurch gekennzeichnet, dass die Variable bei der Definition der Datentypen bei Objekten, Klas­ sen, Prozeduren oder Funktionen festlegbar ist.
3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Zeitwert der Variable von einer vorhergehenden Proze­ dur/Funktion an eine darauf folgende Prozedur/Funktion übergeb­ bar ist.
4. System nach einem der Ansprüche 1 bis 3, dadurch gekenn­ zeichnet, dass als Vorbedingung einer Prozedur/Funktion eine Periodizität festlegbar ist.
5. System nach einem der Ansprüche 1 bis 4, dadurch gekenn­ zeichnet, dass als Nachbedingung für eine Prozedur/Funktion ei­ ne Zeitanforderung, wie eine maximale Laufzeit, festlegbar ist.
6. System nach Anspruch 5, dadurch gekennzeichnet, dass das System eine Schnittstelle aufweist, über die an das System vor­ bestimmte Periodizitäten und Zeitanforderungen vor Pro­ grammablauf übertragbar sind, um die zeitlichen Randbedingungen für den Prozess festzulegen.
7. System nach einem der Ansprüche 1 bis 6, dadurch gekenn­ zeichnet, dass die Zeitwerte der Variablen bei einem embedded System an Schnittstellen zur Verfügung steht und während des Programmablaufs abfragbar ist.
8. System nach Anspruch 7, dadurch gekennzeichnet, dass das System bei Echtzeitbedingungen zur Steuerung eines Prozesses einsetzbar ist.
DE2000162553 2000-12-15 2000-12-15 System zur Steuerung eines Prozesses Withdrawn DE10062553A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2000162553 DE10062553A1 (de) 2000-12-15 2000-12-15 System zur Steuerung eines Prozesses

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2000162553 DE10062553A1 (de) 2000-12-15 2000-12-15 System zur Steuerung eines Prozesses

Publications (1)

Publication Number Publication Date
DE10062553A1 true DE10062553A1 (de) 2002-06-20

Family

ID=7667291

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2000162553 Withdrawn DE10062553A1 (de) 2000-12-15 2000-12-15 System zur Steuerung eines Prozesses

Country Status (1)

Country Link
DE (1) DE10062553A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10250285A1 (de) * 2002-10-29 2004-05-13 Daimlerchrysler Ag Vorhersage des Termintreuegrads in der Serienfertigung

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10250285A1 (de) * 2002-10-29 2004-05-13 Daimlerchrysler Ag Vorhersage des Termintreuegrads in der Serienfertigung
US7039484B2 (en) 2002-10-29 2006-05-02 Daimlerchrysler Ag Prediction of the degree of delivery reliability in serial production

Similar Documents

Publication Publication Date Title
DE69515958T2 (de) Verfahren und Einrichtung zum Beseitigen von Fehlern in Multitask-Programmen
DE19648422A1 (de) Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm
EP3306295B1 (de) Verfahren und vorrichtung zum testen elektronischer steuerungen, insbesondere zum testen von automobilsteuerungen
DE102009055752A1 (de) Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung
DE10243856A1 (de) Regler und Verfahren zum Betreiben eines Reglers
DE4445651A1 (de) Verfahren zur Steuerung von technischen Vorgängen
EP1514180A2 (de) Reaktionszeit-beschränkung eines software-prozesses
EP2496993B1 (de) Verfahren zur absicherung von end-user programmänderungen durch formale kontrakte und programmverifikation in der automatisierungstechnik
EP2083339A1 (de) Verfahren und Vorrichtung zur Ausführung von Tests mittels funktional kaskadierten Test- und Experimentiervorrichtungen
DE10062553A1 (de) System zur Steuerung eines Prozesses
WO2000019283A1 (de) Verfahren zum betrieb eines automatisierungssystems
DE19815185A1 (de) Steuerrechner für eine Druckmaschine
DE19901879A1 (de) Verfahren zum Tracen von Daten
DE10061001A1 (de) Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug
EP4174641A1 (de) Verfahren zum erzeugen von programmcode, verfahren zum konfigurieren eines steuergeräts und computersystem
DE102022109055A1 (de) Verfahren zur Dokumentation von auf einem Rechnerkern eines Prozessors ausgeführten Rechenschritten eines Echtzeitsystems, Prozessor und Echtzeitsystem
EP2567295A1 (de) Verfahren zum selektiven aufzeichnen, rekonstruieren und analysieren des programmlaufs eines steuerungsprogramms
DE102020102996A1 (de) Verfahren für einen integrierten Entwurf zur Modellierung, Simulation und Test einer Echtzeit-Architektur innerhalb einer modellbasierten System- und Softwareentwicklung
WO1996033450A1 (de) Verfahren zum betrieb einer numerischen steuerung mit zeitkritischen und nicht zeitkritischen prozessen in einem echtzeitsystem
DE102004050293B3 (de) Verfahren zur Simulation des Betriebs eines Netzwerks
EP2160670A1 (de) Prozessor und verfahren zu seiner ansteuerung
DE102008042894A1 (de) Verfahren und Vorrichtung zum Testen eines Rechnerkerns in einer mindestens zwei Rechnerkerne aufweisenden Recheneinheit
DE4435456A1 (de) Programmbearbeitungssystem
EP0568717A1 (de) Computerprogrammgesteuertes Verfahren (Tracing) zur schrittweisen Protokollierung der Ausführung eines Zielprogrammes bezüglich der Aufrufe des Zielprogrammes durch andere Programme
DE19946096A1 (de) Steuergerät, insbesondere für ein Kraftfahrzeug

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: DAIMLERCHRYSLER AG, 70327 STUTTGART, DE

8139 Disposal/non-payment of the annual fee