fix: pålæsningsdiagnose kun ved stationen (ikke Wait/mark)

This commit is contained in:
2026-09-30 23:28:58 +02:00
parent ba98cf83d3
commit e229a27624
3 changed files with 19 additions and 5 deletions
+1
View File
@@ -8,6 +8,7 @@ står i [docs/BRUGERMANUAL.md](docs/BRUGERMANUAL.md) (dansk) og [docs/USER_MANUA
## 1.62 — Kæder slås selv til ## 1.62 — Kæder slås selv til
- **1.62.6** Pålæsningsdiagnosen logger kun, når en trigger med varen er inden for 20 m (køretøjer der holder ved Wait-punkter eller marker gav falske meldinger).
- Manualerne understreger nu, at parkering og hentning af redskaber kun virker ved at bakke: ruten til `P <navn>` og `Connect P <navn>` skal slutte som en bakrute. - Manualerne understreger nu, at parkering og hentning af redskaber kun virker ved at bakke: ruten til `P <navn>` og `Connect P <navn>` skal slutte som en bakrute.
- **1.62.5** Diagnose: står AutoDrive 30 s ved et LOAD-mål uden at fylde, skriver loggen én linje med markør, vare og for hver vogn den nærmeste AD-læssetrigger (afstand, har varen, står vognen i triggerens boks). Ingen indgreb. - **1.62.5** Diagnose: står AutoDrive 30 s ved et LOAD-mål uden at fylde, skriver loggen én linje med markør, vare og for hver vogn den nærmeste AD-læssetrigger (afstand, har varen, står vognen i triggerens boks). Ingen indgreb.
- **1.62.4** Rettet: påfyldning af et langt sæt fik AutoDrive til at oprette ekstra markører med stationens navn (fx "Buying Station Multifruit"). Det gør AutoDrives `getMarkerAtStation`, når ingen markør passer til togets længde. Moden kalder den ikke længere; markøren findes ved stationens læssetriggere eller ved bygningen. - **1.62.4** Rettet: påfyldning af et langt sæt fik AutoDrive til at oprette ekstra markører med stationens navn (fx "Buying Station Multifruit"). Det gør AutoDrives `getMarkerAtStation`, når ingen markør passer til togets længde. Moden kalder den ikke længere; markøren findes ved stationens læssetriggere eller ved bygningen.
+17 -4
View File
@@ -2,11 +2,13 @@
-- Diagnose når AutoDrive står ved et LOAD-mål uden at fylde (in-game 30/9: Fendt + MEGA-sprøjte ved "Market Price -- Diagnose når AutoDrive står ved et LOAD-mål uden at fylde (in-game 30/9: Fendt + MEGA-sprøjte ved "Market Price
-- Liquid Fill Station"). AutoDrive fylder kun, når en fyldenhed står i triggerens boks (trigger.fillableObjects) og -- Liquid Fill Station"). AutoDrive fylder kun, når en fyldenhed står i triggerens boks (trigger.fillableObjects) og
-- triggeren har varen. Efter REPORT_MS ved målet uden fremgang skrives én linje: markør, vare, og for hver vogn den -- triggeren har varen. Efter REPORT_MS ved målet uden fremgang skrives én linje: markør, vare, og for hver vogn den
-- nærmeste AD-læssetrigger (afstand, har varen?, står vognen i boksen?). Ingen indgreb — kun log. -- nærmeste AD-læssetrigger (afstand, har varen?, står vognen i boksen?). Kun når en trigger med varen er inden for
-- NEAR_M (holder ved Wait-punkter logges ikke). Ingen indgreb — kun log.
ADLoadDiag = {} ADLoadDiag = {}
ADLoadDiag.LOG_PREFIX = "ADSmartPickup: pålæsning: " ADLoadDiag.LOG_PREFIX = "ADSmartPickup: pålæsning: "
ADLoadDiag.REPORT_MS = 30000 ADLoadDiag.REPORT_MS = 30000
ADLoadDiag.NEAR_M = 20 -- m: trigger med varen herinden for = køretøjet står ved stationen (ellers Wait/mark: ingen log)
-- ---- ren logik ---- -- ---- ren logik ----
@@ -27,6 +29,14 @@ function ADLoadDiag.tick(state, dt, reached, level)
return true return true
end end
-- distances = afstande fra vognene til nærmeste AD-trigger med varen -> står ved stationen?
function ADLoadDiag.atStation(distances)
for _, d in ipairs(distances or {}) do
if d <= ADLoadDiag.NEAR_M then return true end
end
return false
end
-- ---- spil ---- -- ---- spil ----
local function fillTypeName(fillType) local function fillTypeName(fillType)
@@ -65,20 +75,23 @@ local function describeTrailer(adEnv, trailer, fillType)
inBox(nearestOk.trigger, trailer) and "i boksen" or "ikke i boksen")) inBox(nearestOk.trigger, trailer) and "i boksen" or "ikke i boksen"))
end end
if nearestOk == nil then table.insert(parts, "INGEN AD-læssetrigger med varen") end if nearestOk == nil then table.insert(parts, "INGEN AD-læssetrigger med varen") end
return string.format("'%s': %s", tostring(name), table.concat(parts, ", ")) return string.format("'%s': %s", tostring(name), table.concat(parts, ", ")), nearestOk ~= nil and nearestOk.d or nil
end end
local function report(adEnv, task) local function report(adEnv, task)
local vehicle = task.vehicle local vehicle = task.vehicle
local fillType = vehicle.ad.stateModule.getFillType ~= nil and vehicle.ad.stateModule:getFillType() or nil local fillType = vehicle.ad.stateModule.getFillType ~= nil and vehicle.ad.stateModule:getFillType() or nil
local marker = task.destinationID ~= nil and adEnv.ADGraphManager:getMapMarkerByWayPointId(task.destinationID) or nil local marker = task.destinationID ~= nil and adEnv.ADGraphManager:getMapMarkerByWayPointId(task.destinationID) or nil
local lines = {} local lines, distances = {}, {}
for _, trailer in ipairs(task.trailers or {}) do for _, trailer in ipairs(task.trailers or {}) do
if trailer.getFillUnits ~= nil and #trailer:getFillUnits() > 0 then if trailer.getFillUnits ~= nil and #trailer:getFillUnits() > 0 then
local ok, line = pcall(describeTrailer, adEnv, trailer, fillType) local ok, line, distance = pcall(describeTrailer, adEnv, trailer, fillType)
if ok and line ~= nil then table.insert(lines, line) end if ok and line ~= nil then table.insert(lines, line) end
if ok and distance ~= nil then table.insert(distances, distance) end
end end
end end
-- holder ved Wait/mark (ingen trigger med varen tæt på): det er ikke en fejlet pålæsning
if not ADLoadDiag.atStation(distances) then return end
local maxDistance = adEnv.AutoDrive.getMaxTriggerDistance ~= nil and adEnv.AutoDrive.getMaxTriggerDistance(vehicle) or nil local maxDistance = adEnv.AutoDrive.getMaxTriggerDistance ~= nil and adEnv.AutoDrive.getMaxTriggerDistance(vehicle) or nil
Logging.warning(ADLoadDiag.LOG_PREFIX .. "'%s' står ved '%s' uden at fylde %s i %d s (AD-triggerafstand %s m): %s", Logging.warning(ADLoadDiag.LOG_PREFIX .. "'%s' står ved '%s' uden at fylde %s i %d s (AD-triggerafstand %s m): %s",
tostring(ADRuns.vehicleLabel(vehicle)), tostring(marker ~= nil and marker.name or task.destinationID), fillTypeName(fillType), tostring(ADRuns.vehicleLabel(vehicle)), tostring(marker ~= nil and marker.name or task.destinationID), fillTypeName(fillType),
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107"> <modDesc descVersion="107">
<author>masterdraco</author> <author>masterdraco</author>
<version>1.62.5.0</version> <version>1.62.6.0</version>
<title> <title>
<en>AD Smart Pickup</en> <en>AD Smart Pickup</en>
</title> </title>