fix(kobling): stoppedAway logger afstanden til markøren; flow prøver én gang mere at hente vognen efter stoppedAway; puljens skyld-regel matcher årsagen med afstand (v1.56.1.0)
This commit is contained in:
@@ -32,6 +32,13 @@ function ADFlowWagons.startAction(s)
|
||||
return "fetch"
|
||||
end
|
||||
|
||||
-- Hent vogn fejlede: ét nyt forsøg når AD standsede undervejs (forbigående, fx spærret af en anden traktor);
|
||||
-- ikke ved kobling der fejler ved markøren (den skal rettes).
|
||||
ADFlowWagons.FETCH_RETRIES = 1
|
||||
function ADFlowWagons.retryFetch(reason, retries)
|
||||
return tostring(reason):find("^stoppedAway") ~= nil and (retries or 0) < ADFlowWagons.FETCH_RETRIES
|
||||
end
|
||||
|
||||
-- Hvorfor "wait" (til loggen). s som startAction.
|
||||
function ADFlowWagons.waitReason(s)
|
||||
if s.tractorBusy then return "tractorBusy" end
|
||||
@@ -133,6 +140,7 @@ local waiting = setmetatable({}, {__mode = "k"}) -- traktor -> runId (venter p
|
||||
local fetching = setmetatable({}, {__mode = "k"}) -- traktor -> runId (henter sin vogn)
|
||||
local emptying = setmetatable({}, {__mode = "k"}) -- traktor -> {stage, since, fillType, runName}
|
||||
local homing = setmetatable({}, {__mode = "k"}) -- traktor -> true (flowets hjemtur: vogn af, traktor hjem)
|
||||
local fetchRetries = setmetatable({}, {__mode = "k"}) -- traktor -> antal nye hente-forsøg
|
||||
local missingCount = {} -- runId -> tjek i træk
|
||||
local seenBuildings = {} -- bygnings-id'er set i denne session
|
||||
local rememberTimer, buildingTimer = 0, 0
|
||||
@@ -304,6 +312,7 @@ function ADFlowWagons.beforeStart(adEnv, run, vehicle)
|
||||
return
|
||||
end
|
||||
if ok then
|
||||
fetchRetries[tractor] = nil
|
||||
local result = ADRunsController.startVehicle(adEnv, current, tractor)
|
||||
if result ~= nil and not result.ok then
|
||||
-- flowet kan ikke startes (markør, bygning …): ikke efterladt ved Connect med vognen
|
||||
@@ -311,7 +320,13 @@ function ADFlowWagons.beforeStart(adEnv, run, vehicle)
|
||||
tostring(current.name), tostring(ADRuns.vehicleLabel(tractor)), tostring(result.reason))
|
||||
ADHitch.returnHome(adEnv, tractor)
|
||||
end
|
||||
elseif ADFlowWagons.retryFetch(detail, fetchRetries[tractor]) then
|
||||
fetchRetries[tractor] = (fetchRetries[tractor] or 0) + 1
|
||||
waiting[tractor] = runId -- retryWaiting starter den igen om lidt
|
||||
Logging.warning(ADFlowWagons.LOG_PREFIX .. "flow '%s': '%s' kunne ikke hente sin vogn (%s) — prøver igen", tostring(current.name),
|
||||
tostring(ADRuns.vehicleLabel(tractor)), tostring(detail))
|
||||
else
|
||||
fetchRetries[tractor] = nil
|
||||
Logging.warning(ADFlowWagons.LOG_PREFIX .. "flow '%s': '%s' kunne ikke hente sin vogn (%s)", tostring(current.name),
|
||||
tostring(ADRuns.vehicleLabel(tractor)), tostring(detail))
|
||||
end
|
||||
|
||||
@@ -123,7 +123,7 @@ function ADHitch.step(job, state, dt, succeeded)
|
||||
elseif ADHitch.hasArrived(state) then
|
||||
job.state = "acting"
|
||||
elseif state.distance > arriveDistanceOf(state) and (job.seenActive or job.elapsed >= ADHitch.START_GRACE_MS) then
|
||||
job.state, job.reason = "failed", "stoppedAway"
|
||||
job.state, job.reason = "failed", string.format("stoppedAway (%.0f m fra markøren)", state.distance)
|
||||
end
|
||||
elseif job.state == "acting" then
|
||||
if succeeded then
|
||||
|
||||
@@ -124,7 +124,7 @@ end
|
||||
|
||||
-- Hvem fik koblingen til at fejle? Kom traktoren ikke frem, er det traktoren (ingen AD-rute), ellers redskabet.
|
||||
function ADPool.failureBlames(reason)
|
||||
if reason == "stoppedAway" then return "tractor" end
|
||||
if tostring(reason):find("^stoppedAway") ~= nil then return "tractor" end
|
||||
return "implement"
|
||||
end
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.56.0.0</version>
|
||||
<version>1.56.1.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
Reference in New Issue
Block a user