Repository navigation
Description
Sub-issue of #132.
Problem
When an implement's sections are combined into one AOG section, either by groupOverlappingSections (#131) or by allSectionsFollowFirst (#130), the PGN 0xF0 bit for that AOG section is an OR of the actual states of the sections behind it (ClientState::is_aog_section_on). If one dispenser fails, AOG still sees the section as on and gets no warning.
Even without grouping, the TC never compares what it commanded (setpoint) with what the implement reports (actual). A section that's commanded on but stays off only shows up in AOG as an "off" bit, with no reason given.
Field evidence
RDS Artemis, unlinked mode, groupOverlappingSections: true, 2026-11-11 14:01–14:04. The motor on dispenser 1 (Seeder 1) was faulty. Every element got Section Control State = Auto and was sent its setpoints. Counts of the implement's reports per element:
| Element | Actual Work State (DDI 141) | Actual Condensed Work State (DDI 161), section 1 | Section Control State (DDI 160) |
|---|---|---|---|
| 2 (Seeder 1, faulty) | Off ×172, never On | always 0 | Auto |
| 3 (Seeder 2) | Off ×144, On ×29 | 0 / 1 | Auto |
| 4 (Seeder 3) | Off ×162, On ×11 | 0 / 1 | Auto |
The Artemis reports truthfully that Seeder 1 is off. Because Seeders 2 and 3 were on, AOG's single section showed on, and the coverage looked complete. The TC log has no alarm. The Artemis alarm, if it raised one, would only appear on its own VT pages.
Proposal
Keep the OR for the section bit: the strip was driven over and partly worked, and turning the bit off would hide the problem in a different way. Add a mismatch alert sent as a hardware message to AOG:
- Condition, per implement section: section control is Auto for its element, the setpoint is ON, and the actual state stays OFF for longer than a debounce time (for example 3 s, to allow for start-up delay on seeders and valve lag on sprayers).
- Message:
<implement>: <element designator> commanded on but reports off. Example:RDS Artemis: Seeder 1 commanded on but reports off. Use the element designator from the DDOP and fall back to "section N". - Send it once when the condition starts, repeat it at most every 30 s while it lasts (the same throttle as the existing conflict messages), and log one line when it clears.
- Do the same in reverse (setpoint OFF, actual ON for longer than the debounce), so a stuck-open valve is also visible.
- Don't check while section control is Manual, while AOG's demand is stale, or for sections that aren't installed.
- Add a setting to turn it off (
sectionMismatchAlert, default on), because some implements report the actual state late or not at all.
Acceptance
- With one Artemis dispenser disconnected and grouping on, AOG shows the alert within the debounce time of the section being commanded on.
- No alert while all dispensers follow their setpoints, during the start-up delay, or in Manual.
- The alert names the element designator.
- The log records when each mismatch starts and clears.
Activity