User Documentation
Datenrekorder
Systemhandbuch
2696780000/02/04.2020
88
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "TestDataRecApp.h"
#include "MemApi.h"
#include "LogApi.h"
#include "DataRecApi.h"
/
*****************************************************************************
* interface functions
*/
ModuleInitFunc moduleInit = &ModuleInit;
ModuleStartFunc moduleStart = &ModuleStart;
ModuleStopFunc moduleStop = &ModuleStop;
ModuleExitFunc moduleExit = &ModuleExit;
HookClientFunc moduleCallback = &ModuleCallback;
/
*****************************************************************************
* macros
*/
#define ReturnIfNot(cond) \
if (!(cond)) { LogApiTrace(traceid, "### ReturnIfNot@line %d ###",
__LINE__);return;}
/
*****************************************************************************
* constants
*/
static const char scProfileName[] = "TestDataRecAppP1";
static const char scVarNameTemp[] = "temperature";
static const char scVarNamePres[] = "pressure";
/
*****************************************************************************
* static variables
*/
static int32_t sTemp;
static float sPres;
static DataRecApiProfileId sP1Id;
static DataRecApiVarId sTempId;
static DataRecApiVarId sPresId;
Allgemeine Hinweise
Automatische Aufzeichnungen sind in C-Applikationen mit der Funktion Da-
taRecApiSetRecContext zu konfigurieren. Die Funktion definiert einen
Task-Kontext für die Aufzeichnung anhand folgender Angaben:
● Zeitlicher Abstand der Einzelaufzeichnungen in μs
● Task-Priorität der Einzelaufzeichnungen (von 1 = hoch bis 31 = niedrig)
● CPU-Bindung des Tasks (ab 0, oder -1 für systemseitig gewählte Stan-
dard-Bindung)
Mit diesen Einstellungen wird systemseitig ein Task angelegt, der sich be-
züglich Periodizität und Priorität unter die übrigen Applikationstasks einreiht.
Zur Erfüllung bestimmter Anforderungen an den Determinismus der Auf-
zeichnung ist das Zusammenwirken dieses Tasks mit übrigen Applikations-
tasks zu berücksichtigen. Lassen die Zeitstempel der Daten z.B. uner-
wünschten Jitter erkennen, ist die Wahl der obigen Parameter zu überden-
ken. Weiters sollte die Priorität nicht zu hoch, der Abstand nicht zu kurz und
die Datenmenge nicht zu groß sein, um eine Blockierung echtzeitkritischer
Tasks zu vermeiden.