This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Edge 1040 with xc200 power drops during workout for FTP - how to get garmin connect to update power curve with values excluding power drops.

Had up to 9 power dropouts to 0 during 20 minute period when doing FTP 
e.g. for a 5 second dropout period when power was 0, the first two seconds had non zero cadence data and then cadence goes to 0 also. 

Lap power recorded in fit file shows Avg Power of 295w (like if there were no dropouts or they are discarded)
--- avg_power_position=295=295 watts,65535

I got a power record notification of 295w on edge 1040 screen with an updated FTP of 280w
But in garmin connect the best 20 minutes recorded for the activity is 285w, hence a lower FTP of 270w and lower value of 285w going to power curve. 

I used FitCSVTool.jar to export to CSV, removed the rows where there were power dropouts to 0 but makes no difference to garmin connect power curve - still 285 for 20 minutes. while golden cheetah calculates using the individual 1 second recordings to record best 20 mins as 295w in power curve.

So I can only conclude that accumulated_power is used for calculating records in garmin connect and power curve entries.... which makes it very difficult to correct, rather than removing records with power drops to 0, you would need to do some sort of smoothing of the power and update the running  accumulated_power for every single record in the fit file.

QQQ...Is there any tool that can give me a smoothed accumulated_power for the power dropouts to 0?? none of the garmin fit repair tools that I looked at do this.

QQQ....why are the lap power times recorded like if there were no power dropouts and the FTP on the edge device itself? can there be power dropouts at a software level when using garmin connectIQ data fields for power? I did notice in egde 1040 FW changelog for much earlier version 12.11 to 12.14: -> Fixed sensor dropouts when using Connect IQ data fields

  • Hi Jonathan, good question!

    In my history of data analysis, I often encountered these kind of things. Then a fellow forum user helped me out by analysing my fit file in detail (I think he was a former Garmin employee).

    What I learned from him is written below in 'normal people language'. I am not certain all is right, but it comes close.

    A powermeter provides a sort of cumulative power number to the headunit. In case of a dropout, when the headunits 'misses' a second, it can be smoothed, filled in afterwards. And there is where things go weird. Sometimes the unit is too busy and cannot fill in, or the gap is too large and the device just starts over.

    Calculation of the average power of a section is not always updated correctly either!

    So what are your options:

    1) for me I changed a power number in TrainingPeaks (from say 300 watt to 301 watt) and back again. Then when saved, TrainingPeaks would recalculate all invervals correctly. Sometimes I corrected other powerspikes as well.

    2) If you are not using Trainingpeaks, you could download your fit file and load it into Golden Cheetah (a free analysis tool). Here you can adjust / fill in the gaps. Save again (export) as fit file, delete the file in Garmin Connect and upload the adjusted one.

    Hope this helps a bit.

    The power dropouts for ConnectIQ fields in these (old) FW versions was only for CIQ fields that used communication. Most datafields for power do not require communication, they just use the data that the Garmin device receives.

  • Hi sirfive, thanks for your comments, what worked for me was removing the records manually where the power dropped to 0 (I did it in csv format used garmin sdk FitCSVTool to covert between fit/csv) and then in Goldencheetah I applied "Fix Gap in recording" to make up for the records i removed and exported the fit file from goldencheetah.

    Note that the fit file Goldencheetah exported is reduced and doesn't have the accumulated_power field which was problematic for power curve. Maybe the "Fix Gap in recording" step is not necessary... Just remove the dropouts manually and import/export to Goldencheetah to remove the accumulated_power field.

    I include an original fit file record from with power drop (still has cadence) and from Goldencheetah with its generated record  A point to note, for when I had paused the garmin, in my warmup, i see Goldencheetah has registered gps cordinates in a different continent for this time...but at least my garmin powercurve is correct now.


    Original Records
    ==
    = TYPE=3 NAME=record NUMBER=20
    --- timestamp=1038402465=2022-11-26T13:07:45Z
    --- position_lat=-409428588=-34.3179078 deg
    --- position_long=-700813261=-58.7414890 deg
    --- distance=2081760=20817.60 m
    --- accumulated_power=419023=419023 watts
    --- grit=0=0
    --- flow=0=0
    --- altitude=2546=9.2 m
    --- speed=9909=35.672 km/h
    --- power=0=0 watts
    --- xxx108=3926=3926
    --- heart_rate=167=167 bpm
    --- cadence=91=91 rpm
    --- temperature=33=33 deg.C
    --- left_right_balance=179=179
    --- fractional_cadence=0=0.00 rpm
    --- left_pco=2=2 mm
    --- right_pco=-5=-5 mm
    --- xxx90=4=4
    --- xxx107=1=1
    --- xxx137=89=89
    --- xxx138=56=56
    --- 0_0_Battery_level=97=97
    --- 1_0_bal=66.8984832763672=66.8984832763672

    Output from Goldencheetah (generated record) 
    = TYPE=1 NAME=record NUMBER=20
    --- timestamp=1038402465=2022-11-26T13:07:45Z
    --- position_lat=-409428036=-34.3178615 deg
    --- position_long=-700812155=-58.7413962 deg
    --- altitude=2546=9.2 m
    --- heart_rate=166=166 bpm
    --- cadence=91=91 rpm
    --- distance=2082430=20824.30 m
    --- speed=9908=35.669 km/h
    --- power=318=318 watts
    --- temperature=34=34 deg.C
    --- left_right_balance=179=179

  • What does it happen if you change the recording settings: Data Recording - Power Averaging - Do not include zeros?

  • in the edge 1040 head unit in data recording I have what I think are default settings
    cadence - dont include zeros
    power - include zeros

    not sure what effect this would have on the accumulated_power values reported in the 1s fit records and the lap records.

  • Fit 1s second record fields

    grep "timestamp|accumulated|power=|\scadence" dropout.txt
    --- timestamp=1038402463=2022-11-26T13:07:43Z
    --- accumulated_power=418698=418698 watts
    --- power=334=334 watts
    --- cadence=90=90 rpm
    --- timestamp=1038402464=2022-11-26T13:07:44Z
    --- accumulated_power=419023=419023 watts
    --- power=325=325 watts
    --- cadence=91=91 rpm
    --- timestamp=1038402465=2022-11-26T13:07:45Z
    --- accumulated_power=419023=419023 watts
    --- power=0=0 watts
    --- cadence=91=91 rpm
    --- timestamp=1038402466=2022-11-26T13:07:46Z
    --- accumulated_power=419023=419023 watts
    --- power=0=0 watts
    --- cadence=91=91 rpm
    --- timestamp=1038402467=2022-11-26T13:07:47Z
    --- accumulated_power=419023=419023 watts
    --- power=0=0 watts
    --- cadence=0=0 rpm
    --- timestamp=1038402468=2022-11-26T13:07:48Z
    --- accumulated_power=419023=419023 watts
    --- power=0=0 watts
    --- cadence=0=0 rpm
    --- timestamp=1038402469=2022-11-26T13:07:49Z
    --- accumulated_power=419023=419023 watts
    --- power=0=0 watts
    --- cadence=0=0 rpm
    --- timestamp=1038402470=2022-11-26T13:07:50Z
    --- accumulated_power=420757=420757 watts
    --- power=289=289 watts
    --- cadence=91=91 rpm
    --- timestamp=1038402471=2022-11-26T13:07:51Z
    --- accumulated_power=421058=421058 watts
    --- power=301=301 watts
    --- cadence=92=92 rpm
    --- timestamp=1038402472=2022-11-26T13:07:52Z
    --- accumulated_power=421384=421384 watts
    --- power=326=326 watts
    --- cadence=91=91 rpm


    Power Drop to 0 between 13:07:45Z and 13:07:49Z inclusive. 
    accumulated_power -> 420757 - 289 - 419023 = 1445 / 5 = 289w avg over 5 seconds of drop.
    the next non zero power value after drops for 13:07:50 also happens to be 289w the same as this avg...like that value was also calculated as part of the accumulated_power averages as the power before and after the drops is much higher. The golden cheetah smoothed value applied to the records with 0 power was 318w for 13:07:45Z which looks correct.

    A few things that are confusing

    1. for 2 seconds in a sample drop there was cadence and not power?? (cadence drops to 0 between 13:07:47Z and 13:07:49Z inclusive) 

    2. the accumulated_power jump in 1445w after some drops if it is used to average out and try and recover from power drops is still a lot lower at 289w that what i would expect and less than the golden cheetah smoothed value of 318w (which looks about right).

    3. the fact the lap record field in fit file for the 20mins is 295w, and the max 20 minute record power on the head unit showed up as 295w and a new FTP displayed on the head unit of 280w .... it just seems like it working off other data to generate these records. But surprisingly Accumulated power at both the start and end of lap looks good with an avg of 295w rounded up. excerpts from fit file

      --- timestamp=1038402328=2022-11-26T13:05:28Z
      --- accumulated_power=374427=374427 watts

      --- timestamp=1038403528=2022-11-26T13:25:28Z
      --- accumulated_power=728169=728169 watts

       (728169-374427)/1200 = 294.785w

    4. Does garmin connect use some sort of rolling accumulated_power  from the 1 second records to calculate best time records for an activity and for entries in the power curve?

    5. The root cuase of the drops ?? Can this be attributed to some sw/hw issue in the firmware rather than just a ANT transmission receive error in the head unit (I dont see any ANT receive/fail stats if they exist)....as the accumulated_power compensated looks too low in the individual 1s records but it looks correct at the start and at the end of the lap???? How can this be the case ???


    Fit 20 min lap record (some fields remove to shorted the post!!)
    = TYPE=4 NAME=lap NUMBER=19
    --- timestamp=1038403528=2022-11-26T13:25:28Z
    --- start_time=1038402328=2022-11-26T13:05:28Z
    --- total_elapsed_time=1200000=1200.000 s
    --- total_timer_time=1200000=1200.000 s
    --- total_distance=1182324=11823.24 m
    --- total_cycles=1776=1776 cycles
    --- total_work=353757=353757 J
    --- avg_power_position=295=295 watts,65535 ****
    --- max_power_position=534=534 watts,65535
    --- message_index=6=selected=0,reserved=0,mask=6
    --- avg_speed=9853=35.471 km/h
    --- max_speed=11253=40.511 km/h
    --- avg_power=295=295 watts ****
    --- max_power=534=534 watts
    --- normalized_power=296=296 watts ****
    --- left_right_balance=38032=38032
    --- wkt_step_index=5=selected=0,reserved=0,mask=5
    --- event=9=lap
    --- event_type=1=stop
    --- avg_heart_rate=170=170 bpm
    --- max_heart_rate=174=174 bpm
    --- avg_cadence=90=90 rpm
    --- max_cadence=109=109 rpm
    --- lap_trigger=1=time
    --- avg_fractional_cadence=38=0.30 rpm
    --- max_fractional_cadence=0=0.00 rpm
    --- avg_cadence_position=90=90 rpm,255
    --- max_cadence_position=109=109 rpm,255
    ==