- Corretto pinzaggio in caso di passo del pellegrino con recupero completo di una sola pinza

- Semplificato salvataggio stato in PreparePostRotation
- Cambio versione per rilasci oa cliente
This commit is contained in:
andrea.villa
2026-04-22 16:26:15 +02:00
parent 7a6bdaf637
commit f8464fa0de
5 changed files with 29 additions and 70 deletions
+7 -22
View File
@@ -1501,28 +1501,10 @@ function PreparePostRotation( sCmd)
elseif Cmd[1] == '11' then
local sMsg = 'PY' .. ' ' .. Cmd[2]
table.insert( EMT.AUXCMD, sMsg)
local bPrevEA76 = ( #EMT.AUXSTR > 0 and EMT.AUXSTR[#EMT.AUXSTR]:find( 'EA76', 1, true))
if #EMT.AUXSTR > 0 and not bPrevEA76 then
local sVal = ' EB11' .. CalcCharStatus( Cmd[2])
local sOut = EMT.AUXSTR[#EMT.AUXSTR]
EMT.AUXSTR[#EMT.AUXSTR] = sOut:gsub( EMT.SB, sVal)
end
if not bPrevEA76 then
EMT.SA = ' EA11' .. CalcCharStatus( Cmd[2])
end
EMT.SB = ' EB11' .. CalcCharStatus( Cmd[2])
EMT.SE = EgtIf( Cmd[2] ~= '0', ' EE1', ' EE2')
elseif Cmd[1] == '12' then
local sMsg = 'PV' .. ' ' .. Cmd[2]
table.insert( EMT.AUXCMD, sMsg)
if #EMT.AUXSTR > 0 then
local sVal = ' ED14' .. CalcCharStatus( Cmd[2])
local sOut = EMT.AUXSTR[#EMT.AUXSTR]
EMT.AUXSTR[#EMT.AUXSTR] = sOut:gsub( EMT.SD, sVal)
end
EMT.SC = ' EC14' .. CalcCharStatus( Cmd[2])
EMT.SD = ' ED14' .. CalcCharStatus( Cmd[2])
EMT.SE = EgtIf( Cmd[2] ~= '0', ' EE2', ' EE1')
elseif Cmd[1] == '21' then
local nYDelta = tonumber( Cmd[2])
local nVDelta = tonumber( Cmd[3])
@@ -1535,10 +1517,13 @@ function PreparePostRotation( sCmd)
elseif nVDelta > 0 then
EMT.YDELTA = nil
EMT.VDELTA = nVDelta
end
local sYLoad = ' Y'..EmtLenToString( LoadT)
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
table.insert( EMT.AUXSTR, sOut)
end
local sYLoad = ' Y'..EmtLenToString( LoadT)
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
table.insert( EMT.AUXSTR, sOut)
-- setto parametri di pinzaggio reali
EMT.SA = ' EA110'
EMT.SE = ' EE1'
end
end
+7 -22
View File
@@ -1588,28 +1588,10 @@ function PreparePostRotation( sCmd)
elseif Cmd[1] == '11' then
local sMsg = 'PY' .. ' ' .. Cmd[2]
table.insert( EMT.AUXCMD, sMsg)
local bPrevEA76 = ( #EMT.AUXSTR > 0 and EMT.AUXSTR[#EMT.AUXSTR]:find( 'EA76', 1, true))
if #EMT.AUXSTR > 0 and not bPrevEA76 then
local sVal = ' EB11' .. CalcCharStatus( Cmd[2])
local sOut = EMT.AUXSTR[#EMT.AUXSTR]
EMT.AUXSTR[#EMT.AUXSTR] = sOut:gsub( EMT.SB, sVal)
end
if not bPrevEA76 then
EMT.SA = ' EA11' .. CalcCharStatus( Cmd[2])
end
EMT.SB = ' EB11' .. CalcCharStatus( Cmd[2])
EMT.SE = EgtIf( Cmd[2] ~= '0', ' EE1', ' EE2')
elseif Cmd[1] == '12' then
local sMsg = 'PV' .. ' ' .. Cmd[2]
table.insert( EMT.AUXCMD, sMsg)
if #EMT.AUXSTR > 0 then
local sVal = ' ED14' .. CalcCharStatus( Cmd[2])
local sOut = EMT.AUXSTR[#EMT.AUXSTR]
EMT.AUXSTR[#EMT.AUXSTR] = sOut:gsub( EMT.SD, sVal)
end
EMT.SC = ' EC14' .. CalcCharStatus( Cmd[2])
EMT.SD = ' ED14' .. CalcCharStatus( Cmd[2])
EMT.SE = EgtIf( Cmd[2] ~= '0', ' EE2', ' EE1')
elseif Cmd[1] == '21' then
local nYDelta = tonumber( Cmd[2])
local nVDelta = tonumber( Cmd[3])
@@ -1622,10 +1604,13 @@ function PreparePostRotation( sCmd)
elseif nVDelta > 0 then
EMT.YDELTA = nil
EMT.VDELTA = nVDelta
end
local sYLoad = ' Y'..EmtLenToString( LoadT)
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
table.insert( EMT.AUXSTR, sOut)
end
local sYLoad = ' Y'..EmtLenToString( LoadT)
local sOut = 'G111'..sYLoad..' EA76'..EMT.SB..' EE0 EF'..EmtLenToString( EMT.FMAXPINZE,0)..' ET1'
table.insert( EMT.AUXSTR, sOut)
-- setto parametri di pinzaggio reali
EMT.SA = ' EA110'
EMT.SE = ' EE1'
end
end
+7 -19
View File
@@ -1610,25 +1610,10 @@ function PreparePostRotation( sCmd)
elseif Cmd[1] == '11' then
local sMsg = 'PY' .. ' ' .. Cmd[2]
table.insert( EMT.AUXCMD, sMsg)
if #EMT.AUXSTR > 0 then
local sVal = ' P5=11' .. CalcCharStatus( Cmd[2])
local sOut = EMT.AUXSTR[#EMT.AUXSTR]
EMT.AUXSTR[#EMT.AUXSTR] = sOut:gsub( EMT.SB, sVal)
end
EMT.SA = ' P4=11' .. CalcCharStatus( Cmd[2])
EMT.SB = ' P5=11' .. CalcCharStatus( Cmd[2])
EMT.SE = EgtIf( Cmd[2] ~= '0', ' P8=1', ' P8=2')
elseif Cmd[1] == '12' then
local sMsg = 'PV' .. ' ' .. Cmd[2]
table.insert( EMT.AUXCMD, sMsg)
if #EMT.AUXSTR > 0 then
local sVal = ' P7=14' .. CalcCharStatus( Cmd[2])
local sOut = EMT.AUXSTR[#EMT.AUXSTR]
EMT.AUXSTR[#EMT.AUXSTR] = sOut:gsub( EMT.SD, sVal)
end
EMT.SC = ' P6=14' .. CalcCharStatus( Cmd[2])
EMT.SD = ' P7=14' .. CalcCharStatus( Cmd[2])
EMT.SE = EgtIf( Cmd[2] ~= '0', ' P8=2', ' P8=1')
elseif Cmd[1] == '21' then
local nYDelta = tonumber( Cmd[2])
local nVDelta = tonumber( Cmd[3])
@@ -1641,10 +1626,13 @@ function PreparePostRotation( sCmd)
elseif nVDelta > 0 then
EMT.YDELTA = nil
EMT.VDELTA = nVDelta
end
local sYLoad = ' P2='..EmtLenToString( LoadT)
local sOut = 'M111 P1=11'..sYLoad..' P4=76'..EMT.SB..' P8=0 P9='..GetFmaxClamp()
table.insert( EMT.AUXSTR, sOut)
end
local sYLoad = ' P2='..EmtLenToString( LoadT)
local sOut = 'M111 P1=11'..sYLoad..' P4=76'..EMT.SB..' P8=0 P9='..GetFmaxClamp()
table.insert( EMT.AUXSTR, sOut)
-- setto parametri di pinzaggio reali
EMT.SA = ' P4=110'
EMT.SE = ' P8=1'
end
end
+6 -6
View File
@@ -1917,10 +1917,10 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- recupero una corsa massima e l'altra solo di quello che serve
elseif abs( dYDeltaI - dYDeltaF) > dMaxMovePilgrimStepSingleClampV then
-- suddivido il movimento su entrambe le morse
local dTotMove = ( dYDeltaF - dYDeltaI) / 2
local dTotMove = ( ( dYDeltaF + dVDeltaF) / 2 + ( dYDeltaI + dVDeltaI) / 2) / 2
-- morsa Y arriva in posizione finale
dVPosA = MaxV - dTotMove
dTPosA = dTPosI - dVPosI + MaxV - dTotMove
dVPosA = EgtClamp( MaxV - dTotMove, MaxV, MinV)
dTPosA = dTPosI - dVPosI + dVPosA
dYPosA = dYDeltaF + dTPosA
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 11, CalcCharStatus( 'Y', dYDeltaF)})
@@ -2024,10 +2024,10 @@ function SpecAdjustCarriages( vCmd, dTPosI, dYDeltaI, dVDeltaI, dTPosF, dYDeltaF
-- recupero una corsa massima e l'altra solo di quello che serve
elseif abs( dVDeltaI - dVDeltaF) > dMaxMovePilgrimStepSingleClampY then
-- suddivido il movimento su entrambe le morse
local dTotMove = ( dVDeltaI - dVDeltaF) / 2
local dTotMove = ( ( dYDeltaF + dVDeltaF) / 2 + ( dYDeltaI + dVDeltaI) / 2) / 2
-- morsa V arriva in posizione finale
dYPosA = MinY + dTotMove
dTPosA = dTPosI + ( MinY - dYPosI) + dTotMove
dYPosA = EgtClamp( MinY + dTotMove, MinY, MaxY)
dTPosA = dTPosI - dYPosI + dYPosA
dVPosA = dVDeltaF + dTPosA
table.insert( vCmd, { 3, 'Y', dYPosA , 'T', dTPosA, 'V', dVPosA})
table.insert( vCmd, { 12, CalcCharStatus( 'V', dVDeltaF)})
+2 -1
View File
@@ -1,7 +1,8 @@
==== Common_FAST Update Log ====
Versione 3.1-- (--/--/2026)
Versione 3.1d2 (22/04/2026)
- (GEN) Corretta generazione del PreparePostRotation (in tutti i CN) ora salva lo stato della pinza per lo spostamento successivo. Ticket#2933
- (SIM-GEN) Corretto pinzaggio in caso di passo del pellegrino con recupero completo di una sola pinza
Versione 3.1d1 (14/04/2026)
- (SIM-GEN) Aggiorna lo step totale del PilgrimStep e lo step Y con il valore di MyMinY, di modo che tenga conto del AGG_LOAD quando c'è. Ticket#2919