-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPlcTask.h
69 lines (49 loc) · 1.66 KB
/
PlcTask.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef TERANIS_PLC_PLCTASK_H
#define TERANIS_PLC_PLCTASK_H
#include "PlcMemory.h"
/**
* Basisklasse für SPS-Tasks. Durch diese Basisklasse wird das Timing der Ausführung des Tasks implementiert
*
* @authors Mirko Wittek, Tim Trense
*/
//TODO: aktuell kann die SPS nur einen einzigen Task ausführen,
// aber es sollten auch mehrere Tasks (vllt. sogar in jeweils eigenen Threads) ausgeführt werden können
class PlcTask {
public:
PlcTask();
PlcTask(unsigned int minCycleMs, unsigned int maxCycleMs);
/// Initialsierung
void begin();
/// laufender Zyklus
void run();
/// Aufraeumen
void end();
unsigned int getMinCycleSetMs() const;
void setMinCycleSetMs(unsigned int minCycleSetMs);
unsigned int getMaxCycleSetMs() const;
void setMaxCycleSetMs(unsigned int maxCycleSetMs);
unsigned int getCycleActMs() const;
unsigned int getMinCycleActMs() const;
unsigned int getMaxCycleActMs() const;
protected:
/// Tatsächliche Implementierung des Task
virtual void beginImpl();
/// Tatsächliche Implementierung des Task
virtual void runImpl();
/// Tatsächliche Implementierung des Task
virtual void endImpl();
private:
/// minimale Zykluszeit in Millisekunden
unsigned int minCycleTime;
/// minimale Zykluszeit in Millisekunden
unsigned int maxCycleTime;
/// aktuelle Zykluszeit in Millisekunden
unsigned int actualCycleTime;
/// minimale Zykluszeit in Millisekunden
unsigned int actualMinCycleTime;
/// maximale Zykluszeit in Millisekunden
unsigned int actualMaxCycleTime;
/// gemerkte letzte Zeit
plc_timepoint lastCycleTimepoint;
};
#endif