PM2+ Interfacespecificatie

Deze interfacespecificatie beschrijft hoe een apparaat kan communiceren met de PM2+ monitor via een RS-232-interface. Een extern apparaat kan informatie over afstanden, snelheid, tijd en hartslag krijgen uit de PM2+. Dit document is bedoeld om ervaren programmeurs die een programmeertaal beheersen en kennis hebben van RS-232 communicatie te helpen.

Vereisten

Een apparaat dat moet communiceren met een PM2+ monitor die draait met microcode v141 of v138 moet ingesteld zijn op 9600 baud, 8 bit, geen pariteit, met 1 stop bit. Sluit de seriële kabel aan op de bovenste aansluiting achterop de PM2+, precies zoals je zou doen als je e-Row zou gebruiken. Controleer of de seriële communicatie is ingesteld op je apparaat.

Inhoud

Dit document beschrijft eerst de commando’s en data formats die ondersteund worden door de PM2+ monitor. Aan het eind van deze sectie volgt een beschrijving van de status byte. Na deze sectie volgt een voorbeeld van seriële communicatie tussen een PC en de PM2+. In dit document zijn twee voorbeelden van code opgenomen. Het eerste voorbeeld is PALM broncode dat gebruikt wordt in een Palm applicatie. Het tweede voorbeeld is een Windows-routine gecompileerd en gedraaid onder Borland C++ Builder 4.0. De voorbeelden zijn bedoeld ter illustratie van het interfaceprotocol en zijn niet bedoeld als voorbeelden van uitmuntende programmeerkunst. Aan het eind van dit document volgt een beschrijving van de fysische connecties waarin wordt omschreven hoe de PM2+ op een PC moet worden aangesloten. Bij je PM2+ is een seriële kabel meegeleverd, maar je kunt eventueel ook losse kabels bestellen bij Concept2.

Concept2 Interfacespecificatie Ondersteuning

Ondersteuning wordt alleen gegeven via een online forum, website, FAQ of e-mail. Concept2 geeft geen ondersteuning voor de PM2+ interfacespecificatie.

Commando/Datasequentie

De notatie [“0x”] gevolgd door twee cijfers of letters (A-F) duidt op een hexadecimale waarde.

Stuur Ontvang Afstand
0xB0   Verstuur deze bytes om afstandsdata te ontvangen van de PM2+..
0x00    
  Status Byte
DistanceLSB
Distance1
Distance2
Distance MSB
Bekijk status byte info
Floating point-weergave van de afstand in meters.
Stuur Ontvang Snelheid
0xB1
0x00
  Verzend deze bytes om snelheidsdata van PM2+ te ontvangen
  Status Rate
PaceLSB
Pace1
Pace2
PaceMSB
Integerweergave van haalsnelheid (halen/minuut)
Floating point-weergave in seconde/meter

 

Stuur Ontvang Tijd
0xB3
0x00
  Verzend deze bytes om verstreken tijd van PM2+ te ontvangen
  Status Byte
TimeLSB
Time1
Time2
TimeMSB
Floating point-weergave van verstreken tijd in seconden

 

Stuur Ontvang Hartslag
0xB2
0x00
  Verzend deze bytes om hartslagdata van PM2+ te ontvangen
  HrLSB
HrMSB
Integerweergave van hartslag. Heart rate = 576,000/heart period.
Status Byte Mask Eerste byte ontvangen in afstandsquery
END_OF_WORKOUT
END_OF_STROKE
WORK_DISTANCE
WORK_TIME
LOW_BATTERY
0X01
0X02
0X04
0X08
0X40
Indien aan, workout beëindigd

Indien aan, haal beëindigd

Indien aan, ergometer geprogrammeerd voor een afstandstraining

Indien aan, ergometer geprogrammeerd voor een tijdstraining

Indien aan, vervang de batterij

De enige bits die gecontroleerd moeten worden zijn [END_OF_STROKE, END_OF_WORKOUT] en [WORK_DISTANCE]. De andere bits worden gebruikt bij een wedstrijd, dit wordt niet behandeld in een gepubliceerde specificatie.

Erg PACE wordt aan het eind van de haal ververst, dus controleer de [END-OF_STROKE] statusbit om te weten wanneer je deze waarde moet uitlezen. Je kunt pace ook continu uitlezen maar hij wordt maar één keer per haal bijgewerkt. Is de pacewaarde uitgelezen? Dan wordt de [END_OF_STROKE] bit gewist. Aan het eind van de volgende haal krijgt hij weer een waarde.

Is de ergometer geprogrammeerd voor een afstandstraining? Ofwel je hebt [WORK_DISTANCE] geselecteerd. Dan moet je de [END_OF_WORKOUT]-bit controleren. Heeft deze bit waarde 1? Dan toont de waarde in het veld Afstand de tijd om de gegeven afstand af te leggen. Dit gebeurt alleen aan het einde van een afstandsworkout. Zie voorbeeld van seriële communicatie.

Voorbeeld van Communicatie met PM2+

Haal afstand, snelheid en hartslagdata op van PM2+

Stuur Ontvang Snelheid
0xb0
0x00
  Query Afstand
erg nummer (altijd nul voor één erg)
  0xc4
0xcb
0x00
0x2c
0x42
erg status: (afstandsworkout)
float afstand
float afstand
float afstand
float afstand (43,0 meter afgelegd)
0xb1
0x00
  Query Haalfrequentie
erg nummer
  0x2d
0x9a
0x41
0x51
0x3e
erg haalsnelheid
float snelheid
float snelheid
float snelheid
float snelheid (0.2)
0xb2
0x00
  Query Hartslag
erg nummer
  0x00
0x00
int heart period
int heart period (0)
0xb0
0x00
  Query afstand
erg nummer (altijd nul voor één erg)
  0xc5
0x40
0xa1
0xc9
0x41
erg status: (afstandsworkout) (einde workout)
float afstand
float afstand
float afstand
float afstand (25,2*)
*Let op: deze waarde geeft de tijd aan die je nog nodig hebt om de afstand af te leggen, in seconden.

Fysische connecties

De volgende tabel beschrijft de pinnen van de bovenste plug op de achterkant van de PM2+, J2. Pin 1 is de meest rechterpin. Hierbij veronderstellen we het gebruik van de meegeleverde kabel en connectoren (ofwel 9 pins ofwel 25 pins).

PM2+ RJ-11 Pin PM2+ Signaalbeschrijving DTE Signaalbeschrijving RS232 9 Pin
(DTE apparaat)
RS232 25 Pin
(DTE apparaat)
1 +12V (zie noot)   n/c n/c
2 Aarde Aarde 5 n/c
3 Ontvangen Data Verzonden Data 3 2
4 Verzonden Data Ontvangen Data 2 3
5 Aarde Aarde n/c 7
6 12 Volt Return (Zie NB)   n/c n/c
NB: Bij gebruik van een 9 Volts voeding, worden pinnen 1 en 6 van de RJ-11 gebruikt om PM2+-monitoren die op elkaar zijn aangesloten van 12 Volt te voorzien. Normaal gesproken wordt zo’n voeding niet gebruikt en kun je een gewone 4-pins FJ-11 telefoonlijn gebruiken in plaats van de 6 pins kabel die met je PM2+ meegeleverd is.

Formules

Vermogen (Watt) = 2,8 / snelheid (sec/meter)³

De calorieën worden berekend uit het vermogen (in Watt), met de aanname dat het rendement van de omzetting van menselijke energie naar vliegwielenergie 25% is en dat het een persoon 300 calorieën kost om zijn/haar lichaam 1 keer heen en weer te bewegen (gebaseerd op een lichaamsgewicht van 80 kg).

Kcal/uur = Vermogen (Watt) x (4,0 x 0,8604 Kcal/Watt) + 300 Kcal/uur