WarpClock (FB)¶
FUNCTION_BLOCK WarpClock IMPLEMENTS Util.IDateTimeProvider
“warp” clock is providing development / debugging control on the application time line.
Certain application domains base their functionality / algorithms on real world wall clock date/time. To develop such functionality it is helpful to have control on the application timeline to speedup testing or doesnt loose control on the timeline sitting on breakpoints. WarpClock provides such a control if needed. It allows to:
- run the clock in real time UTC 
- run the clock with a given “warp” factor 
- start at a certain start time - no matter if UTC or local 
- reset time to a a certain (start) time 
- step forward in time by a given increment 
To compute the “warp” factor use ComputeWarpFactor. “warp” forward in time needs some knowledge about application cycle time. Of course there is cycle time jitter, and the application can obtain only the cycle time of last cycle. But for “warp” forward in time this is not so important, approximate cycle time information is sufficient for this use case.
If udiWarpFactor is set to 1 and the WarpClock is enabled (xEnable:=TRUE) uliTime is representing UTC system time.
- InOut:
- Scope - Name - Type - Initial - Comment - Input - xEnable- BOOL- TRUE - Run the clock at real time or “warp time” (system time increments multiplied by “warp” factor). If the clock is running dont use AddTime() and tTimeAdd<>T#0S. - uliStartDateTime- ULINT- Start time in ms since the epoch 1.1.1970 00:00:00.0, default is the epoch - udiWarpFactor- UDINT- 1 - “Warp” factor, 1 => run at real time UTC - tTimeAdd- TIME- TIME#0ms - Time to add at WarpClock function block call, if clock is not running at real time or “warp time”. Alternatively you might want to use AddTime when appropriate. - xReset- BOOL- FALSE - Reset the clock to tStart - Output - itfDateTimeProvider- Util.IDateTimeProvider- Output to connect THIS to other function block inputs - uliDateTime- ULINT- Clock output time in ms since the epoch 1.1.1970 00:00:00.0 - xError- BOOL- Error indication - eErrorID- Error ID 
Methods:
Structure:
