Skip to main content

ISOXML ADAPT Plugin Guide

ISOXML ADAPT Plugin handles CNH-specific logic for row-planters. It includes the following:

  • Merging Timelogs that are recorded in parallel into common OperationData objects
  • Rationalizing overlapping Product Allocations within the device hierarchy
  • Defaulting total quantity DDI on product mixes based on Product Form when missing
  • Adding capability for Manufacturer-specific mapping logic
  • Adding handling for CNH Proprietary Attributes Crop Type, Product Form, Product Usage and Product Manufacturer

Downloads

NameLinks
AgGatewayISOPluginDownload at NuGet
ADAPT ISOv4PluginDownload at GitHub

Case AFS Pro 1200 and New Holland IntelliView™ 12 Data Format

The new Case AFS Pro 1200 and New Holland IntelliView 12 monitors export data in ISO 11783-10 (ISOXML) format.

CNH has observed certain conventions in its ISOXML and enhanced the open-source AgGateway ADAPT ISOv4Plugin to assist in translating this data. The ADAPT Plugin handles the following key data concepts:

Parallel TimeLogs

ISOXML TimeLogs contain spatial records of sensor values and other measurements in the field.

These generally define sub-regions within a completed task, and multiple TimeLogs usually cover separate portions of a field. However, these TimeLogs have a limit of 255 DataLogValues, and CNH datasets for row planters often exceed this threshold. When this happens, the monitor logs secondary, parallel TimeLogs covering the same time and space.

The monitor can start a parallel TimeLog at any time, perhaps due to an operator instruction with the effect that more data is logged, or that the TimeLog binary has reached too large of size. However, most often the parallel TimeLogs will indeed commence in parallel, with the first records matching (or matching within a few records of) one another in space and time.

Devices

CNH 12-Series ISOXML data commonly reports three devices:

Device TypeDescription
ImplementThe DeviceElements within this device reflect the implement geometry and the data logged from the implement.
Trip Computer DataThese elements record data from the vehicle or tractor.
Vehicle GeometryThis device exists to provide a geometric model of the vehicle and how its hitches relate to the point at which the latitude/longitude values are recorded. It generally will record only a single record in the TimeLog binary with its offset values.

The ADAPT plugin historically has split TimeLogs into separate OperationData objects by unique device, since there is usually no relation between the data in the separate devices and not all industry data reconciles geometries between devices. The retained split and the above 3 groups will appear as separate OperationData objects, mapped together via the OperationData.CoincidentOperationDataIds property.

For data diagnostic purposes, we keep the Vehicle Geometry Opeation data, but the mapping logic to import DeviceElementConfiguration should map all the offset values from this device inot the Catalog such that implementers need not concern themselves with the third OperationData.

Proprietary Schema Attributes

ISOXML grants implementers a certain amount of latitude in the specifics of implementation and to extend the schema when needed by means of “proprietary schema extensions.” These can be custom XML elements but are usually custom attributes on the standard elements. These attributes begin with P094\_ for CNH data.

CNH-12 Series data reports several data points that are of interest to consumers via these attributes. Among them are Crop, Product Form and Product Manufacturer. The ADAPT ISOv4Plugin has the meaning of these attributes coded into it and values will automatically import inot hte ADAPT model via the Plugin.

Multiple Varieties

CNH 12-Series monitors allow users to enter a default product variety and override it on the row. Data will report multiple ProductAllocation elements for parent/child elements, the product defined by the lowest child.

We have enhanced the ADAPT plugin to identify the lowest level at which products are reported by the monitor, in some cases copying down the default product to that level so that in the case of multiple varieties, the ADAPT model will only report vrProductIndex data at a single level within the device hierarchy.

Product Mixes

CNH 12-Series data omits the Quantity DDI on products in mixed. The product form provides this value. The ADAPT plugin will automatically map liquid components to DDI 0048/vrProvidedAmountVolume and granular components to DDI 004B/vrProvidedAmountMass.

Resolving Latitude and Longitude Values

ISOXML data records the latitude/longitude of spatial data at a Navigation Reference Point on the vehicle. The Vehicle Nav Element DeviceElement in the VehicleGeometry Device defines this element.

CNH data defines this as the center of the rear axle on non-articulating tractors, and the center of the front axle on articulating 4WD tractors. Vehicle hitches (also called connectors) contain offset data that relate their position on the vehicle to the Navigation Reference Point.

The implement similarly has a reference point at its center, and all implement offsets are relative to that reference point.

The convention for offset values is that for the X/Inline direction, positive values are forward and negative values are backward; and for the Y/Lateral direction, positive values are to the right and negative values are to the left.

Every Task element will contain a Connection element that describes how the implement was hitched to the vehicle.

Calculation Example

For example, if an implement is hitched to the rear drawbar on the tractor, and the rear drawbar has reported offsets of X = -2000mm, Y = 0mm, and the implement hitch has reported offsets of X = +5000mm, Y = 0mm from the implement reference point, then the implement reference point is 7.0 meters behind the location of reported latitude or longitude values.

If a certain row has reported offsets of X = -500mm, and Y = 2500mm, then it may be mapped as 7.5 meters behind and 2.5 meters to the right of the reported latitude or longitude.

Code Example

A code example of how to extract this information from the ADAPT model:

//OperationData objects can be mapped to the vehicle and implement by means of the EquipmentConfiguration
var equipConfig = catalog.EquipmentConfigurations.First(e => e.Id.ReferenceId == operationData.EquipmentConfigurationIds.First());

//EquipmentConfigurations reference 2 connectors, defining what 2 things are connected.
var vehicleConnector = catalog.Connectors.First(c => c.Id.ReferenceId == equipConfig.Connector1Id);
var implementConnector = catalog.Connectors.First(c => c.Id.ReferenceId == equipConfig.Connector2Id);

//Each connector specifies a Hitch and a DeviceElementConfiguration
var vehicleHitch = catalog.HitchPoints.First(h => h.Id.ReferenceId == vehicleConnector.HitchPointId);
var vehicleOffsetConfig = catalog.DeviceElementConfigurations.First(d => d.Id.ReferenceId == vehicleConnector.DeviceElementConfigurationId);
var implementHitch = catalog.HitchPoints.First(h => h.Id.ReferenceId == implementConnector.HitchPointId);
var implementOffsetConfig = catalog.DeviceElementConfigurations.First(d => d.Id.ReferenceId == implementConnector.DeviceElementConfigurationId);

//The distance between the vehicle hitch the the navigation reference point (the location of the lat/lon)
//will be defined in on the hitch reference point offsets
double vehicleHitchInlineOffsetmm = vehicleHitch.ReferencePoint.XOffset.Value.Value;
double vehicleHitchLateralOffsetmm = vehicleHitch.ReferencePoint.YOffset.Value.Value;

//The distance between the implement hitch and the implement reference point will be on the implement hitch reference point
double implementHitchInlineOffsetmm = implementHitch.ReferencePoint.XOffset.Value.Value;
double implementHitchLateralOffsetmm = implementHitch.ReferencePoint.YOffset.Value.Value;

//To adjust the lat/lon on the SpatialRecord to the implement reference point, move it as follows
double inlineImplementAdjustmentmm = vehicleHitchInlineOffsetmm - implementHitchInlineOffsetmm;
double lateralImplementAdjustmentmm = vehicleHitchLateralOffsetmm - implementHitchLateralOffsetmm;