Program Format

The following article describes the XML format in which training programs for JErgometer are defined.

Learning by Example

Here is a short example for a JErgometer training program:

<program name="ImPulse down130, up145 (20 min)" duration="20m">
    <timeEvent time="0"><action type="power" value="80"/></timeEvent>
    <timeEvent time="30"><action type="pulse" value="130"/></timeEvent>
    <timeEvent time="10m"><action type="pulse" value="145"/></timeEvent>
    <timeEvent time="+1m"><action type="pulse" value="130"/></timeEvent>
    <timeEvent time="+4m"><action type="pulse" value="145"/></timeEvent>
    <timeEvent time="+1m"><action type="pulse" value="130"/></timeEvent>
    <timeEvent time="+4m"><action type="pulse" value="145"/></timeEvent>

The first line of this file specifies the title and duration of this program. The title given by the name attribute is later shown in JErgometer's program tree. Make sure you change this name whenever you create a new program based on a copy of another one. Otherwise it will be hard to distinguish between both in JErgometer.

The duration attribute specifies the length of the training session. Choose a program duration that you will usually complete. If you prematurely abort a training session JErgometer will save it too but will hide it in the session list by default. Showing you only the completed sessions should give you a better overview about your performance evolution and should simplify the comparison between multiple sessions. In contrast to that, training longer than defined by a program will never harm the comparability. Though JErgometer will record the whole session it will only consider the fixed program duration then calculating average pulse, average power, and other statistics.

The power that has to be cycled during a training session can be configured via timeEvents and corresponding actions. A timeEvent defines a certain point in time to which the corresponding action may change the strategy to control the power of your ergometer.

Our example program uses two different strategies to control the power. In the first 30 seconds it keeps the power constantly at 80W. This is done by using the power action as shown in the following line:

    <timeEvent time="0"><action type="power" value="80"/></timeEvent>

time="0" denotes beginning of the training, i.e., the power action with 80W starts immediately. The kind and the value of the action are defined in the action tag using the attributes type and value. Each action is valid until it is overridden by a new one. Since the next timeEvent in our example starts at time="30" the first action is replaced after a duration of 30 seconds. Time values can be specified by using units. For instance, 10s denote ten seconds, 5m five minutes, and 1h one hour. To express a duration or point in time such as 5 minutes and 10 seconds you can combine those values to 5m10s. By default time values are absolute. Putting a plus sign in front of a time value tells JErgometer to interpret this value relatively to the last timeEvent. Relative values can be also used in the value attribute of an action.

Apart from the first 30 seconds the example program shows a pulse controlled training program. Thereto, it uses pulse action for the subsequent timeEvents. In this case the anticipated pulse is defined in the action's value. The example program tries to keep the pulse from second 30 to minute 10 at a level of 130 bpm. Since frequency stepping of human hearts does not work as exact as for CPUs the actual pulse may vary. So don't be surprised - it's not a bug of JErgometer. However, in order keep your heart rate at the desired constant level JErgometer tries to predict your heart rate in advance and adapts the power of the ergometer accordingly. The prediction is done by interpolating the current trend linearly.

In our example program the power control alternates between a pulse level of 145 bpm for 1 minute and a pulse of 130 bpm for 4 minutes. Note that relative time values simplify the definition here. For instance, to extend the program length by another 10 minutes we just have to duplicate the last to timeEvent lines two time and maybe adapt the program duration in the first line.

Last modified 6 years ago Last modified on Jan 28, 2012, 10:17:33 PM