Using the 20|20 ADAPT plugin

The 20|20 ADAPT plugin reads all .2020 files from the Precision Planting 20|20 Generation 3 monitors.

The plugin is released as a .NET NuGet package for easy integration into other software packages. The latest version can also be downloaded directly from the 20|20 ADAPT download page.

What is ADAPT?

ADAPT is an open-source, industry defined specification and framework for agricultural field operation data sponsored by AgGateway. The ADAPT framework is based on Microsoft's .NET Framework. The ADAPT source code is available on Github.

Prior to ADAPT's widespread adoption, FODM was primarily used. FODM is an earlier approach to standardizing Field Operations data. ADAPT was developed to replace FODM, and it's development has been influenced by a wider group of industry participants. Precision Planting does not offer a FODM or FODD for 20|20 data.

Please note that the 20/20 SeedSense Generation 1 or Generation 2 monitors produce .dat files that utilize the Climate FieldView file format and are readable only by the Climate FODD. Climate provides information about using the .dat file format via the FieldView for Developers portal.

Framework 2.0

In 2018, AgGateway released ADAPT framework version 2.0. The 20|20 ADAPT plugin uses ADAPT framework 2.0.

Data Visualizer

The ADAPT project contains an open source Visualizer program. The ADAPT Visualizer can be used in conjunction with the 20|20 ADAPT plugin to examine the contents of a .2020 file.

Please visit to the 20|20 ADAPT Visualizer tutorial for more information.

Integrating the plugin to your code

To integrate the 20|20 ADAPT plugin into your software, reference the plugin using the NuGet package, or reference the DLL files directly. Additionally, a reference must be added to the AgGatewayADAPTFramework package, available from, or from Github.

Within your code, instantiate the PrecisionPlanting.ADAPT._2020.Plugin class and invoke the import method with the path to the .2020 files intending to be read.

// Instantiate the 20|20 ADAPT plugin
var myPlugin = new PrecisionPlanting.ADAPT._2020.Plugin();

// Import data from a given path.  The plugin will return a single ADM object.
string datapath = @"C:\My_2020_Files";

AgGateway.ADAPT.ApplicationDataModel.ADM.ApplicationDataModel admObject =

if (admObject != null)
  // Retrieve data from admObject

Data Formatting

The data within the ADAPT ApplicationDataModel uses the following conventions.


Totals/Summaries recorded by the 20|20 for an operation are included under Documents/Summaries. Per-product summaries are under OperationSummaries, and all products summaries are under SummaryData.

ADAPT Representations

Where a standard ADAPT Representation exists, the 20|20 ADAPT plugin reports values using that Representation. For example, ADAPT defines vrSeedRateSeedsActual as the instantaeous actual planting population; the 20|20 ADAPT plugin reuses this representation.

Where types specific to the 20|20 are present, the 20|20 ADAPT plugin uses a Representation of CodeSource = UserDefined. Examples of this are Representations for SmartFirmer. A complete list of Representations are present on the 20|20 ADAPT download page.

Operation Data

There exists a set of OperationData objects for regions of the operation. If Insecticide or Fertilizer was applied alongside Seed, these data will be separate OperationData objects with correlated timestamps.

Because the 20|20 ADAPT plugin complies with ADAPT Framework 2.0, it is possible to use the OperationData.CoincidentOperationDataIds property to identify such correlated data.

Null Values

In the case of SpatialRecords that have <null> WorkingData values, the <null> represents a case where no value was logged by the sensor. For the purposes of interpreting this data where other SpatialRecords on corresponding WorkingData objects contain values, consumers may wish to consider interpolating values from other SpatailRecords instead of treating these values as zero, depending on the nature of the sensor.

Inline Offsets

ADAPT provides a detailed model for modeling the implement offsets. The inline offsets as reported by the 20|20 ADAPT plugin have the following meanings:

  • MachineConfiguration.GPSXOffset: distance the GPS receiver is forward of the rear axle
  • HitchPoint.ReferencePoint.XOffset (Tractor): distance the hitch is behind of the rear axle
  • HitchPoint.ReferencePoint.XOffset (Implement): distance the hitch point is forward of the implement reference point
  • ImplementConfiguration.ControlPoint.XOffset: distance the implement reference point is backward of the hitch. This value is the inverse of HitchPoint.ReferencePoint.XOffset (Implement).
  • SectionConfiguration.InlineOffset: distance the section reference point is backward of the hitch

Positive values are forward and negative values are backward. The EquipmentConfiguration objects model the Connector mappings of the MachineConfiguration (in most cases, the tractor) to the ImplementConfiguration.

Lateral Offsets

Positive values are right of the reference point from the point of view of the driver's seat, and negative values are left.