fix(markarbejde): tom sprøjte/spreder/såmaskine fyldes af AutoDrive (LOAD) før marken; uden påfyldning med AD-markør sendes den ikke ud; Courseplay startes aldrig med tom tank (sprøjten kørte F108 tom) (v1.29.2.0)
This commit is contained in:
@@ -288,6 +288,27 @@ local function preflight(field, role)
|
||||
return true
|
||||
end
|
||||
|
||||
ADFieldWork.REFILL_ROLES = {seeder = true, fertilizer = true, limer = true, weeder = true}
|
||||
|
||||
local function fillTypeName(fillType)
|
||||
return g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeNameByIndex(fillType) or tostring(fillType)
|
||||
end
|
||||
|
||||
-- Før udsendelse: forkert vare af (kalk på, skal gøde), og er sættet tomt, findes påfyldningen.
|
||||
-- Returnerer {fillType, empty, refillId} eller nil (sættet bruger intet fyld: strigle, plov ...).
|
||||
local function refillPlan(adEnv, fieldId, vehicle, role, x, z)
|
||||
if not ADFieldWork.REFILL_ROLES[role] then return nil end
|
||||
local dumped, dumpedName = ADCpBridge.emptySprayerIfWrong(vehicle, role)
|
||||
if dumped > 0 then
|
||||
log(fieldId, "'%s' tømt for %.0f l %s (skal bruges til %s)", ADRuns.vehicleLabel(vehicle), dumped, tostring(dumpedName), tostring(role))
|
||||
end
|
||||
local fillType = ADCpBridge.getRefillFillType(vehicle, role)
|
||||
if fillType == nil then return nil end
|
||||
local empty = ADCpBridge.getRefillLevel(vehicle, fillType) <= 0
|
||||
local refillId = empty and ADFieldWork.findRefillMarker(adEnv, vehicle, fillType, x, z) or nil
|
||||
return {fillType = fillType, empty = empty, refillId = refillId}
|
||||
end
|
||||
|
||||
function ADFieldWork.dispatch(adEnv, field, info, decision)
|
||||
local role = decision.role
|
||||
local ok, reason = preflight(field, role)
|
||||
@@ -319,11 +340,25 @@ function ADFieldWork.dispatch(adEnv, field, info, decision)
|
||||
groupSize = decision.helper and 1 or count, lane = count > 1 and lanes[index] or nil, leader = index == 1,
|
||||
fillType = decision.helper and info.harvestFillType or nil,
|
||||
}
|
||||
local refill = refillPlan(adEnv, field.id, rig.vehicle, role, info.x, info.z)
|
||||
if refill ~= nil and refill.empty and refill.refillId == nil then
|
||||
-- tom og intet sted at fylde op: ud på marken ville den bare køre kurset uden at sprede
|
||||
fail(field.id, string.format("'%s' er tom for %s og der er ingen påfyldning med AutoDrive-markør — fyld den op", rig.label, fillTypeName(refill.fillType)))
|
||||
return
|
||||
end
|
||||
ADFieldJobs.state.assignments[rig.id] = assignment
|
||||
if refill ~= nil and refill.empty then
|
||||
-- AutoDrive LOAD: påfyldningen (2. markør), fyld op, videre til F-markøren (1.) — så Courseplay
|
||||
startAd(adEnv, rig.vehicle, adEnv.AutoDrive.MODE_LOAD, info.markerId, refill.refillId)
|
||||
local marker = adEnv.ADGraphManager:getMapMarkerByWayPointId(refill.refillId)
|
||||
log(field.id, "%s '%s' er tom — fyldes med %s ved %s og kører så til %s", role, rig.label, fillTypeName(refill.fillType),
|
||||
tostring(marker ~= nil and marker.name or refill.refillId), tostring(info.markerName))
|
||||
else
|
||||
startAd(adEnv, rig.vehicle, adEnv.AutoDrive.MODE_DRIVETO, info.markerId, nil)
|
||||
log(field.id, "%s '%s' sendt til %s (%.1f m%s)", role, rig.label, tostring(info.markerName), rig.width or 0,
|
||||
assignment.lane ~= nil and string.format(", bane %d", assignment.lane) or "")
|
||||
end
|
||||
end
|
||||
note(field.id, {reason = false})
|
||||
end
|
||||
|
||||
@@ -379,11 +414,6 @@ end
|
||||
-- og genstarter CP. Findes ingen påfyldning, stopper sættet når det er tomt ("tom for …", se finish).
|
||||
local function prepareRefill(adEnv, field, info, assignment)
|
||||
local vehicle = assignment.vehicle
|
||||
-- forkert vare på (kalk, skal gøde): tøm først, så AutoDrive fylder den rigtige på
|
||||
local dumped, dumpedName = ADCpBridge.emptySprayerIfWrong(vehicle, assignment.role)
|
||||
if dumped > 0 then
|
||||
log(field.id, "'%s' tømt for %.0f l %s (skal bruges til %s)", ADRuns.vehicleLabel(vehicle), dumped, tostring(dumpedName), tostring(assignment.role))
|
||||
end
|
||||
local fillType = ADCpBridge.getRefillFillType(vehicle, assignment.role)
|
||||
if fillType == nil then return end
|
||||
assignment.refillFillType = fillType
|
||||
@@ -514,6 +544,15 @@ end
|
||||
|
||||
local function beginWork(adEnv, field, info, assignment)
|
||||
local vehicle = assignment.vehicle
|
||||
-- aldrig Courseplay med tom tank (den kører kurset uden at sprede/så)
|
||||
if ADFieldWork.REFILL_ROLES[assignment.role] then
|
||||
local fillType = ADCpBridge.getRefillFillType(vehicle, assignment.role)
|
||||
if fillType ~= nil and ADCpBridge.getRefillLevel(vehicle, fillType) <= 0 then
|
||||
ADFieldWork.release(assignment)
|
||||
fail(field.id, string.format("'%s' er stadig tom for %s ved marken — fyld den op", ADRuns.vehicleLabel(vehicle), fillTypeName(fillType)))
|
||||
return
|
||||
end
|
||||
end
|
||||
if assignment.role == "unloader" then return beginUnloader(adEnv, field, info, assignment) end
|
||||
if assignment.role == "baleCollector" then return beginBaleCollector(adEnv, field, info, assignment) end
|
||||
-- høsteren: halmskår efter planen (hakkes = fra; samles op/presses = skår)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.29.1.0</version>
|
||||
<version>1.29.2.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
@@ -119,9 +119,10 @@ Afgrøde "Samme som høstet", Tromle Ja. Kalk Ja.
|
||||
(stort ukrudt, > 4). Græs ukrudtsbehandles ikke.
|
||||
- [ ] **6.4 Kalk.** Jord der trænger til kalk → kalkspreder.
|
||||
- [ ] **6.5 Påfyldning.** Sprøjte/spreder der løber tør → AutoDrive fylder op og kører tilbage.
|
||||
- [ ] **6.6 Tom spreder (v1.28.8).** Tom Bredal-spreder bag en traktor vises i markflåden og sendes til
|
||||
gødskning (F109) → Courseplay melder tom med det samme → AutoDrive fylder gødning og kører tilbage.
|
||||
⚠ Usikkert: starter Courseplay overhovedet med en tom spreder? Hvis ikke, skriv loggen.
|
||||
- [ ] **6.6 Tom sprøjte/spreder (v1.29.2).** Tom sættes i gang → log `er tom — fyldes med X ved <markør> og
|
||||
kører så til F<nr>` → AutoDrive (LOAD) fylder op og kører til marken → Courseplay starter med fyld.
|
||||
Ingen påfyldning med AD-markør → sendes IKKE ud; marken viser "er tom for X … fyld den op".
|
||||
Sikkerhedsnet: Courseplay startes aldrig med tom tank ("er stadig tom … ved marken").
|
||||
- [ ] **6.7 Forkert vare (v1.28.8).** Spreder med kalk sendes til gødskning kun hvis ingen tom/gødet spreder
|
||||
findes → log `tømt for N l LIME (skal bruges til fertilizer)` → fyldes med gødning.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user