Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e9912eb5f | |||
| 0c2333df8b | |||
| d1ddc26d8f |
+189
-37
@@ -32,6 +32,10 @@ function OnStart()
|
|||||||
EMT.MAXACC = MaxAcc or 6000 -- accelerazione massima pinze. In realtà è il tempo in millisecondi, quindi MAXACC corrisponde al tempo massimo per raggiungere la velocità desiderata
|
EMT.MAXACC = MaxAcc or 6000 -- accelerazione massima pinze. In realtà è il tempo in millisecondi, quindi MAXACC corrisponde al tempo massimo per raggiungere la velocità desiderata
|
||||||
EMT.MINACC = MinAcc or 600 -- accelerazione minima pinze. In realtà è il tempo in millisecondi, quindi MINACC corrisponde al tempo massimo per raggiungere la velocità desiderata
|
EMT.MINACC = MinAcc or 600 -- accelerazione minima pinze. In realtà è il tempo in millisecondi, quindi MINACC corrisponde al tempo massimo per raggiungere la velocità desiderata
|
||||||
SetToParkLine() -- si inizia con linee da parcheggiare su stack
|
SetToParkLine() -- si inizia con linee da parcheggiare su stack
|
||||||
|
|
||||||
|
-- se il pezzo dev'essere scaricato al carico
|
||||||
|
local dUnloadType = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'UNLOAD', 'd')
|
||||||
|
EMT.UNLOAD = dUnloadType == 1 or dUnloadType == -1
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -289,28 +293,47 @@ function OnDispositionEnd()
|
|||||||
-- altrimenti disposizione finale, eventuale scarico pezzo lavorato se non ci sono lavorazioni
|
-- altrimenti disposizione finale, eventuale scarico pezzo lavorato se non ci sono lavorazioni
|
||||||
else
|
else
|
||||||
if #EMT.MDCHAR > 0 then
|
if #EMT.MDCHAR > 0 then
|
||||||
EmitRemark( 'PART UNLOAD')
|
if EMT.AUXTYPE == 'R' and EMT.UNLOAD then
|
||||||
|
EmitRemark( 'PART UNLOAD ON LOAD POSITION')
|
||||||
|
else
|
||||||
|
EmitRemark( 'PART UNLOAD')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
for i = 1, #EMT.MDCHAR do
|
for i = 1, #EMT.MDCHAR do
|
||||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
-- Se è un'istruzione del piano ferma pezzo
|
||||||
if EMT.MDCHAR[i].Y1 then EMT.CHY_ON = true end
|
if EMT.MDCHAR[i].StopBeamStat then
|
||||||
if EMT.MDCHAR[i].V1 then EMT.V1POS = EMT.MDCHAR[i].V1 end
|
EmitStopBeam( EMT.MDCHAR[i])
|
||||||
if EMT.MDCHAR[i].V2 then EMT.V2POS = EMT.MDCHAR[i].V2 end
|
EMT.LASTOISBRAKE = true
|
||||||
|
else
|
||||||
|
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||||
|
if EMT.MDCHAR[i].Y1 then EMT.CHY_ON = true end
|
||||||
|
if EMT.MDCHAR[i].V1 then EMT.V1POS = EMT.MDCHAR[i].V1 end
|
||||||
|
if EMT.MDCHAR[i].V2 then EMT.V2POS = EMT.MDCHAR[i].V2 end
|
||||||
|
EMT.LASTOISBRAKE = false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if #EMT.MDCHAR > 0 then
|
if #EMT.MDCHAR > 0 then
|
||||||
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
|
if not EMT.LASTOISBRAKE then
|
||||||
EmitMoveStartChars( nMoveType)
|
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
|
||||||
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
|
EmitMoveStartChars( nMoveType)
|
||||||
if IsRestPhase( EMT.PHASE + 1) then
|
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
|
||||||
EmitMoveWaitChars( nMoveType)
|
if IsRestPhase( EMT.PHASE + 1) then
|
||||||
|
EmitMoveWaitChars( nMoveType)
|
||||||
|
else
|
||||||
|
EmitMoveWaitChars( nMoveType, true)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
EmitMoveWaitChars( nMoveType, true)
|
EMT.LASTOISBRAKE = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
-- emissione conclusione pezzo precedente (se non in modalità test)
|
-- emissione conclusione pezzo precedente (se non in modalità test)
|
||||||
if not TEST_USE and EMT.PRODID then
|
if not TEST_USE and EMT.PRODID then
|
||||||
local sEnd= 'M113 P1='..tostring( EMT.PRODID)..' P2='..tostring( EMT.PATTID)..' P3='..tostring( EMT.CUTID)..' P4=2'
|
local sEnd= 'M113 P1='..tostring( EMT.PRODID)..' P2='..tostring( EMT.PATTID)..' P3='..tostring( EMT.CUTID)..' P4=2'
|
||||||
MyOutput( sEnd)
|
MyOutput( sEnd)
|
||||||
end
|
end
|
||||||
|
if EMT.UNLOAD then
|
||||||
|
MyOutput('M77')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
EMT.MDCHAR = {}
|
EMT.MDCHAR = {}
|
||||||
EMT.AUXTYPE = nil
|
EMT.AUXTYPE = nil
|
||||||
@@ -491,6 +514,10 @@ function OnMachiningEnd()
|
|||||||
elseif EMT.AUXTYPE == 'U' then
|
elseif EMT.AUXTYPE == 'U' then
|
||||||
EmitRemark( 'PART UNLOAD')
|
EmitRemark( 'PART UNLOAD')
|
||||||
elseif EMT.AUXTYPE == 'P' then
|
elseif EMT.AUXTYPE == 'P' then
|
||||||
|
local nNextPathId
|
||||||
|
local nNextMchId
|
||||||
|
if EMT.PATHID then nNextPathId = EgtGetNextActiveOperation( EMT.PATHID) end
|
||||||
|
if EMT.MCHID then nNextMchId = EgtGetNextActiveOperation( EMT.MCHID) end
|
||||||
if EMT.PREROT then
|
if EMT.PREROT then
|
||||||
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
@@ -502,6 +529,12 @@ function OnMachiningEnd()
|
|||||||
EMT.TO_ZMAX = nil
|
EMT.TO_ZMAX = nil
|
||||||
end
|
end
|
||||||
EmitRemark( 'PART FALL')
|
EmitRemark( 'PART FALL')
|
||||||
|
elseif EMT.UNLOAD and not nNextPathId and not nNextMchId then
|
||||||
|
if not EMT.ZMAX then
|
||||||
|
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
||||||
|
EMT.ZMAX = true
|
||||||
|
end
|
||||||
|
EmitRemark( 'PART UNLOAD ON LOAD POSITION')
|
||||||
else
|
else
|
||||||
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
EmitZmax( false, true, EMT.R1, EMT.R2, false, false, false)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
@@ -510,20 +543,31 @@ function OnMachiningEnd()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i = 1, #EMT.MDCHAR do
|
for i = 1, #EMT.MDCHAR do
|
||||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
-- Se è un'istruzione del piano ferma pezzo
|
||||||
|
if EMT.MDCHAR[i].StopBeamStat then
|
||||||
|
EmitStopBeam( EMT.MDCHAR[i])
|
||||||
|
EMT.LASTOISBRAKE = true
|
||||||
|
else
|
||||||
|
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||||
|
EMT.LASTOISBRAKE = false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if #EMT.MDCHAR > 0 then
|
if #EMT.MDCHAR > 0 then
|
||||||
if EMT.AUXTYPE == 'S' then
|
if EMT.AUXTYPE == 'S' then
|
||||||
EmitMoveStartChars( 1)
|
if not EMT.LASTOISBRAKE then
|
||||||
EmitMoveWaitChars( 1)
|
EmitMoveStartChars( 1)
|
||||||
|
EmitMoveWaitChars( 1)
|
||||||
|
end
|
||||||
elseif EMT.AUXTYPE == 'U' then
|
elseif EMT.AUXTYPE == 'U' then
|
||||||
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
|
if not EMT.LASTOISBRAKE then
|
||||||
EmitMoveStartChars( nMoveType)
|
local nMoveType = EgtIf( EMT.CHY_ON, 3, 2)
|
||||||
-- se dopo cè scarico spezzone devo mettere attesa termine esecuzione
|
EmitMoveStartChars( nMoveType)
|
||||||
if IsRestPhase( EMT.PHASE + 1) then
|
-- se dopo cè scarico spezzone devo mettere attesa termine esecuzione
|
||||||
EmitMoveWaitChars( nMoveType)
|
if IsRestPhase( EMT.PHASE + 1) then
|
||||||
else
|
EmitMoveWaitChars( nMoveType)
|
||||||
EmitMoveWaitChars( nMoveType, true)
|
else
|
||||||
|
EmitMoveWaitChars( nMoveType, true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- emissione conclusione pezzo precedente (se non è modalità test)
|
-- emissione conclusione pezzo precedente (se non è modalità test)
|
||||||
if not TEST_USE and EMT.PRODID then
|
if not TEST_USE and EMT.PRODID then
|
||||||
@@ -531,8 +575,10 @@ function OnMachiningEnd()
|
|||||||
MyOutput( sEnd)
|
MyOutput( sEnd)
|
||||||
end
|
end
|
||||||
elseif EMT.AUXTYPE == 'P' then
|
elseif EMT.AUXTYPE == 'P' then
|
||||||
EmitMoveStartChars( 3)
|
if not EMT.LASTOISBRAKE then
|
||||||
EmitMoveWaitChars( 3)
|
EmitMoveStartChars( 3)
|
||||||
|
EmitMoveWaitChars( 3)
|
||||||
|
end
|
||||||
if EMT.FALL then
|
if EMT.FALL then
|
||||||
MyOutput( 'M155')
|
MyOutput( 'M155')
|
||||||
-- emissione conclusione pezzo (se non in modalità test)
|
-- emissione conclusione pezzo (se non in modalità test)
|
||||||
@@ -542,6 +588,11 @@ function OnMachiningEnd()
|
|||||||
end
|
end
|
||||||
EMT.FALL = nil
|
EMT.FALL = nil
|
||||||
elseif not EMT.PREROT then
|
elseif not EMT.PREROT then
|
||||||
|
-- emissione conclusione pezzo (se non in modalità test)
|
||||||
|
if not TEST_USE and EMT.PRODID and ( EMT.UNLOAD and ( not nNextPathId) and ( not nNextMchId)) then
|
||||||
|
local sEnd= 'M113 P1='..tostring( EMT.PRODID)..' P2='..tostring( EMT.PATTID)..' P3='..tostring( EMT.CUTID)..' P4=2'
|
||||||
|
MyOutput( sEnd)
|
||||||
|
end
|
||||||
MyOutput( 'M77')
|
MyOutput( 'M77')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -583,11 +634,8 @@ function OnPathStart()
|
|||||||
EMT.MCHFIRST = true
|
EMT.MCHFIRST = true
|
||||||
EMT.MCHFIRSTFEED = true
|
EMT.MCHFIRSTFEED = true
|
||||||
-- primo posizionamento sempre in globale
|
-- primo posizionamento sempre in globale
|
||||||
-- primo posizionamento sempre in globale
|
|
||||||
EMT.REFLOC = nil
|
EMT.REFLOC = nil
|
||||||
EMT.IPLGL = false
|
EMT.IPLGL = false
|
||||||
|
|
||||||
|
|
||||||
-- se taglio di precut verifico quanto è più lungo il grezzo rispetto al pezzo (non tiene conto dell'ultimo cubetto)
|
-- se taglio di precut verifico quanto è più lungo il grezzo rispetto al pezzo (non tiene conto dell'ultimo cubetto)
|
||||||
EMT.DELTA_LT = 0
|
EMT.DELTA_LT = 0
|
||||||
if EMT.MCHPRECUT then
|
if EMT.MCHPRECUT then
|
||||||
@@ -1973,20 +2021,40 @@ function PrepareResidue( sCmd, nInd)
|
|||||||
else
|
else
|
||||||
EMT.UNL = true
|
EMT.UNL = true
|
||||||
end
|
end
|
||||||
|
-- se è scarico al carico
|
||||||
|
if Cmd[2] == 'Unload-On-Load' then
|
||||||
|
EMT.UNL2 = true
|
||||||
|
end
|
||||||
elseif Cmd[1] == '1' then
|
elseif Cmd[1] == '1' then
|
||||||
if Cmd[2] ~= 'Z' then
|
if Cmd[2] ~= 'Z' then
|
||||||
local MDChar
|
local MDChar
|
||||||
if not EMT.UNL then
|
if not EMT.UNL then
|
||||||
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
||||||
else
|
else
|
||||||
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY2=1, FinStatY2=-84, BeamVise=0}
|
if IsLastMachining( EMT.MCHID) then
|
||||||
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY2=1, FinStatY2=-84, V2=ParkV2, BeamVise=0}
|
||||||
|
else
|
||||||
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY2=1, FinStatY2=-84, BeamVise=0}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if EMT.ROLL_IN then
|
if EMT.ROLL_IN then
|
||||||
MDChar.V1 = MinV1 ; EMT.V1POS = MDChar.V1
|
MDChar.V1 = MinV1 ; EMT.V1POS = MDChar.V1
|
||||||
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
|
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
|
||||||
EMT.ROLL_IN = nil
|
EMT.ROLL_IN = nil
|
||||||
end
|
end
|
||||||
|
-- se scarico al carico parcheggio per sicurezza morsa e paratia lato scarico
|
||||||
|
if EMT.UNL2 then
|
||||||
|
MDChar.V1 = ParkV1 ; EMT.V1POS = MDChar.V1
|
||||||
|
MDChar.V2 = ParkV2 ; EMT.V2POS = MDChar.V2
|
||||||
|
MDChar.BeamVise = 0
|
||||||
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Se scarico in linea con abbassamento piano ferma pezzo allo scarico
|
||||||
|
if Cmd[4] == 'UnBrakeBeam' then
|
||||||
|
-- Abbassa ferma pezzo
|
||||||
|
local MDStopBeam = { StopBeamStat=2, Load=1}
|
||||||
|
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '2' then
|
elseif Cmd[1] == '2' then
|
||||||
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV2=1, BeamVise=EMT.BV}
|
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV2=1, BeamVise=EMT.BV}
|
||||||
@@ -1998,6 +2066,11 @@ function PrepareResidue( sCmd, nInd)
|
|||||||
EMT.ROLL_IN = nil
|
EMT.ROLL_IN = nil
|
||||||
end
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Alza ferma pezzo
|
||||||
|
if Cmd[6] == 'BrakeBeam' then
|
||||||
|
local MDStopBeam = { StopBeamStat=1, Load=1}
|
||||||
|
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||||
|
end
|
||||||
elseif Cmd[1] == '3' then
|
elseif Cmd[1] == '3' then
|
||||||
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=1, IniStatV2=1, BeamVise=EMT.BV}
|
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=1, IniStatV2=1, BeamVise=EMT.BV}
|
||||||
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
|
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
|
||||||
@@ -2084,19 +2157,53 @@ function PrepareUnload( sCmd, nInd)
|
|||||||
end
|
end
|
||||||
elseif Cmd[1] == '1' then
|
elseif Cmd[1] == '1' then
|
||||||
if Cmd[2] == 'Y2' then
|
if Cmd[2] == 'Y2' then
|
||||||
-- se non è ultima fase e non è fase successiva a scarico su carico c'è una barra sulla pinza Y1
|
|
||||||
local dUnloadMacroCode = EgtIf( EMT.MANUAL_UNL, 85, 84)
|
|
||||||
EMT.MANUAL_UNL = nil
|
|
||||||
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
||||||
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=-dUnloadMacroCode, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
-- Se scarico in linea con abbassamento piano ferma pezzo allo scarico
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
if Cmd[4] == 'UnBrakeBeam' then
|
||||||
|
-- Muove carrello aperto e lo mantiene aperto
|
||||||
|
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=1, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Abbassa ferma pezzo
|
||||||
|
local MDStopBeam = { StopBeamStat=2, Unload=1}
|
||||||
|
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||||
|
-- Dopo che si è abbassato il ferma pezzo chiude il pezzo in morsa per evitare che esso possa essere pinzato inclinato dal pistone
|
||||||
|
MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=-1, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Se non è ultima fase e non è fase successiva a scarico su carico c'è una barra sulla pinza Y1
|
||||||
|
else
|
||||||
|
if EMT.MANUAL_UNL then
|
||||||
|
-- se non è ultima fase e non è fase successiva a scarico su carico c'è una barra sulla pinza Y1
|
||||||
|
local dUnloadMacroCode = EgtIf( EMT.MANUAL_UNL, 85, 84)
|
||||||
|
EMT.MANUAL_UNL = nil
|
||||||
|
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
||||||
|
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=-dUnloadMacroCode, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
else
|
||||||
|
local nFinStatY2 = EgtIf( Cmd[4] == 'NoWaitUnload', -84, -1)
|
||||||
|
local MDChar = { Y2=tonumber(Cmd[3]), V2=ParkV2, IniStatY2=1, FinStatY2=nFinStatY2, BeamVise=EgtIf( bBarOnY, 1, 0), MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '2' then
|
elseif Cmd[1] == '2' then
|
||||||
if Cmd[4] == 'Y2' then
|
if Cmd[4] == 'Y2' then
|
||||||
-- se non è ultima fase c'è una barra sulla pinza Y1
|
|
||||||
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
local bBarOnY = ( EMT.PHASE < EgtGetPhaseCount() and not IsEnd2Phase( EMT.PHASE))
|
||||||
local MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
-- Se scarico in linea con alzata piano ferma pezzo allo scarico
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
if Cmd[6] == 'BrakeBeam' then
|
||||||
|
-- Muove carrello e lo mantiene in presa
|
||||||
|
local MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=-1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Alza ferma pezzo
|
||||||
|
local MDStopBeam = { StopBeamStat=1, Unload=1}
|
||||||
|
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||||
|
-- Ribadisce le quote del carrello appena mosso e Apre la pinza
|
||||||
|
MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- se non è ultima fase c'è una barra sulla pinza Y1
|
||||||
|
else
|
||||||
|
local MDChar = { Y2=tonumber(Cmd[5]), IniStatY1=EgtIf( bBarOnY, -1, 1), FinStatY1=EgtIf( bBarOnY, -1, 1), IniStatY2=-1, FinStatY2=1, IniStatV2=1, BeamVise=2, MovType=EgtIf( EMT.CHY_ON, 3, 2)}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '3' then
|
elseif Cmd[1] == '3' then
|
||||||
-- non interessa
|
-- non interessa
|
||||||
@@ -2130,27 +2237,55 @@ function PreparePreRotation( sCmd, nInd)
|
|||||||
EMT.PREROT = true
|
EMT.PREROT = true
|
||||||
elseif Cmd[2] == 'SplitRot' then
|
elseif Cmd[2] == 'SplitRot' then
|
||||||
EMT.SPLITROT = true
|
EMT.SPLITROT = true
|
||||||
|
-- se è scarico al carico
|
||||||
|
elseif Cmd[2] == 'Unload-On-Load' then
|
||||||
|
EMT.UNL2 = true
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '1' then
|
elseif Cmd[1] == '1' then
|
||||||
if Cmd[2] ~= 'Z' then
|
if Cmd[2] ~= 'Z' then
|
||||||
local MDChar
|
local MDChar
|
||||||
if not EMT.PREROT then
|
if not EMT.PREROT then
|
||||||
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
||||||
|
if EMT.UNL2 then
|
||||||
|
MDChar.V1 = ParkV1 ; EMT.V1POS = MDChar.V1
|
||||||
|
MDChar.V2 = ParkV2 ; EMT.V2POS = MDChar.V2
|
||||||
|
end
|
||||||
else
|
else
|
||||||
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=86, FinStatY1=87, IniStatY2=1, BeamVise=0}
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=86, FinStatY1=87, IniStatY2=1, BeamVise=0}
|
||||||
end
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Se scarico in linea con abbassamento piano ferma pezzo allo scarico
|
||||||
|
if Cmd[4] == 'UnBrakeBeam' then
|
||||||
|
-- Abbassa ferma pezzo
|
||||||
|
local MDStopBeam = { StopBeamStat=2, Load=1}
|
||||||
|
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '2' then
|
elseif Cmd[1] == '2' then
|
||||||
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV2=1, BeamVise=EMT.BV}
|
||||||
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
|
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
|
||||||
if Cmd[4] ~= 'T' then MDChar[Cmd[4]] = tonumber( Cmd[5]) end
|
if Cmd[4] ~= 'T' then MDChar[Cmd[4]] = tonumber( Cmd[5]) end
|
||||||
|
if EMT.ROLL_IN then
|
||||||
|
MDChar.V1 = MinV1 ; EMT.V1POS = MDChar.V1
|
||||||
|
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
|
||||||
|
EMT.ROLL_IN = nil
|
||||||
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
-- Alza ferma pezzo
|
||||||
|
if Cmd[6] == 'BrakeBeam' then
|
||||||
|
local MDStopBeam = { StopBeamStat=1, Load=1}
|
||||||
|
table.insert( EMT.MDCHAR, MDStopBeam)
|
||||||
|
end
|
||||||
elseif Cmd[1] == '3' then
|
elseif Cmd[1] == '3' then
|
||||||
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, BeamVise=EMT.BV}
|
local MDChar = { IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=1, IniStatV2=1, BeamVise=EMT.BV}
|
||||||
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
|
if Cmd[2] ~= 'T' then MDChar[Cmd[2]] = tonumber( Cmd[3]) end
|
||||||
if Cmd[4] ~= 'T' then MDChar[Cmd[4]] = tonumber( Cmd[5]) end
|
if Cmd[4] ~= 'T' then MDChar[Cmd[4]] = tonumber( Cmd[5]) end
|
||||||
if Cmd[6] ~= 'T' then MDChar[Cmd[6]] = tonumber( Cmd[7]) end
|
if Cmd[6] ~= 'T' then MDChar[Cmd[6]] = tonumber( Cmd[7]) end
|
||||||
|
if EMT.ROLL_IN then
|
||||||
|
MDChar.V1 = MinV1 ; EMT.V1POS = MDChar.V1
|
||||||
|
MDChar.V2 = MaxV2 ; EMT.V2POS = MDChar.V2
|
||||||
|
EMT.ROLL_IN = nil
|
||||||
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
elseif Cmd[1] == '4' then
|
elseif Cmd[1] == '4' then
|
||||||
EMT.TO_ZMAX = true
|
EMT.TO_ZMAX = true
|
||||||
@@ -3051,6 +3186,23 @@ function EmitMoveWaitHead( nHead)
|
|||||||
MyOutput( sOut)
|
MyOutput( sOut)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- Emette i movimenti di esecuzione movimenti trave e alzata o discesa del piano ferma pezzo
|
||||||
|
function EmitStopBeam( MoData)
|
||||||
|
if MoData.StopBeamStat then
|
||||||
|
if MoData.Load then
|
||||||
|
EmitMoveStartChars( 3)
|
||||||
|
EmitMoveWaitChars( 3)
|
||||||
|
sOut = 'M125 P1=' .. EgtNumToString( MoData.StopBeamStat, 0)
|
||||||
|
else
|
||||||
|
EmitMoveStartChars( 2)
|
||||||
|
EmitMoveWaitChars( 2)
|
||||||
|
sOut = 'M125 P2=' .. EgtNumToString( MoData.StopBeamStat, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
MyOutput( sOut)
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function EmitMoveDataChars( MoData)
|
function EmitMoveDataChars( MoData)
|
||||||
local sOut = 'M111'
|
local sOut = 'M111'
|
||||||
|
|||||||
+38
-3
@@ -1768,17 +1768,36 @@ function ExecUnloading()
|
|||||||
local vMillId = EMT.VMILL[1]
|
local vMillId = EMT.VMILL[1]
|
||||||
-- gruppo dei Vmill
|
-- gruppo dei Vmill
|
||||||
local nVmGrpId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill')
|
local nVmGrpId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill')
|
||||||
|
local sUnloadType = ''
|
||||||
|
local sUnloadTypeOld = ''
|
||||||
|
local vtMove = Vector3d( 0, 0, 0)
|
||||||
|
local vtMoveOldElements = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, ( EMT.HB + 50.0), -( EMT.HB + 50.0)), 0)
|
||||||
|
-- Se scarico in linea
|
||||||
|
if MinBeamLenUnloadInLine and EMT.LT >= MinBeamLenUnloadInLine then
|
||||||
|
sUnloadType = 'LINE'
|
||||||
|
vtMove = Vector3d( EgtIf( BD.RIGHT_LOAD, -MinBeamLenUnloadInLine, MinBeamLenUnloadInLine), EgtIf( BD.RIGHT_LOAD, ( EMT.HB + 50.0), -( EMT.HB + 50.0)), 0)
|
||||||
|
else
|
||||||
|
if EMT.FALL then
|
||||||
|
sUnloadType = 'FALL'
|
||||||
|
vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 3200, -2600), -1150)
|
||||||
|
else
|
||||||
|
sUnloadType = 'STD'
|
||||||
|
vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 1600, -1600), 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
-- li sposto per lasciare spazio al nuovo pezzo
|
-- li sposto per lasciare spazio al nuovo pezzo
|
||||||
local nId = EgtGetFirstInGroup( nVmGrpId)
|
local nId = EgtGetFirstInGroup( nVmGrpId)
|
||||||
while nId do
|
while nId do
|
||||||
EgtMove( nId, Vector3d( 0, EgtIf( BD.RIGHT_LOAD, ( EMT.HB + 50.0), -( EMT.HB + 50.0)), 0), GDB_RT.GLOB)
|
sUnloadTypeOld = EgtGetInfo( nId, 'UNLOAD_TYPE')
|
||||||
|
if sUnloadTypeOld == sUnloadType then
|
||||||
|
EgtMove( nId, vtMoveOldElements, GDB_RT.GLOB)
|
||||||
|
end
|
||||||
nId = EgtGetNext( nId)
|
nId = EgtGetNext( nId)
|
||||||
end
|
end
|
||||||
-- creo un nuovo layer e vi inserisco il nuovo pezzo
|
-- creo un nuovo layer e vi inserisco il nuovo pezzo
|
||||||
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
local nLayId = EgtGroup( nVmGrpId, EgtGetGlobFrame( vMillId))
|
||||||
EgtRelocate( vMillId, nLayId)
|
EgtRelocate( vMillId, nLayId)
|
||||||
local vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 1600, -1600), 0)
|
EgtSetInfo( nLayId, 'UNLOAD_TYPE', sUnloadType)
|
||||||
if EMT.FALL then vtMove = Vector3d( 0, EgtIf( BD.RIGHT_LOAD, 3200, -2600), -1150) end
|
|
||||||
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
EgtMove( nLayId, vtMove, GDB_RT.GLOB)
|
||||||
EgtSetLevel( vMillId, GDB_LV.USER)
|
EgtSetLevel( vMillId, GDB_LV.USER)
|
||||||
-- aggiungo gli spigoli
|
-- aggiungo gli spigoli
|
||||||
@@ -2991,6 +3010,22 @@ function IsLastPath( nPathId)
|
|||||||
return not EgtGetNext( nPathId)
|
return not EgtGetNext( nPathId)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function IsLastMachining( nMchId)
|
||||||
|
local nOpeId = EgtGetNextActiveOperation( nMchId)
|
||||||
|
while nOpeId do
|
||||||
|
local nType = EgtGetOperationType( nOpeId)
|
||||||
|
-- se c'è una lavorazione
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
return false
|
||||||
|
elseif nType == MCH_OY.DISP and IsRestPhase( EMT.PHASE + 1) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
nOpeId = EgtGetNextActiveOperation( nOpeId)
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
||||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H16' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H16' then
|
||||||
|
|||||||
+163
-30
@@ -47,7 +47,6 @@ function OnSpecialGetPrevMachiningOffset()
|
|||||||
-- default
|
-- default
|
||||||
EMC.ERR = 0
|
EMC.ERR = 0
|
||||||
EMC.PREVOFFSX = 0
|
EMC.PREVOFFSX = 0
|
||||||
|
|
||||||
-- se c'è cambio di fase tra le lavorazioni (quindi la precedente è l'ultima della sua fase e la corrente la prima)
|
-- se c'è cambio di fase tra le lavorazioni (quindi la precedente è l'ultima della sua fase e la corrente la prima)
|
||||||
if EMC.PREVPHASE ~= EMC.CURRPHASE then
|
if EMC.PREVPHASE ~= EMC.CURRPHASE then
|
||||||
-- se la fase corrente è di inizio lavorazione di nuova trave
|
-- se la fase corrente è di inizio lavorazione di nuova trave
|
||||||
@@ -382,7 +381,7 @@ local function GetNextRawInOrd( nCurrRawId)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
local function EnsureZmax( bCloseV, vCmd)
|
local function EnsureZmax( bCloseV, vCmd, nInd)
|
||||||
-- verifico non sia già inserito nella lista dei comandi
|
-- verifico non sia già inserito nella lista dei comandi
|
||||||
for i = 1, #vCmd do
|
for i = 1, #vCmd do
|
||||||
if vCmd[i][1] == 4 then
|
if vCmd[i][1] == 4 then
|
||||||
@@ -394,7 +393,11 @@ local function EnsureZmax( bCloseV, vCmd)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- posizionamento sicuro teste e rulli
|
-- posizionamento sicuro teste e rulli
|
||||||
table.insert( vCmd, { 4, EgtIf( bCloseV, 1, 0)})
|
if not nInd then
|
||||||
|
table.insert( vCmd, { 4, EgtIf( bCloseV, 1, 0)})
|
||||||
|
else
|
||||||
|
table.insert( vCmd, nInd, { 4, EgtIf( bCloseV, 1, 0)})
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -568,6 +571,14 @@ function OnSpecialApplyDisposition()
|
|||||||
end
|
end
|
||||||
-- eseguo scarico
|
-- eseguo scarico
|
||||||
SpecSetCarrPosFromCmds( vCmd2)
|
SpecSetCarrPosFromCmds( vCmd2)
|
||||||
|
-- determino posizione testa trave
|
||||||
|
local nLastEntId = EgtGetLastInGroup( EgtGetLastInGroup( EgtGetFirstNameInGroup( EgtGetPrev( EMC.DISPID), 'CL')))
|
||||||
|
if nLastEntId then
|
||||||
|
local vAxes = EmtGetAxesPos( nLastEntId)
|
||||||
|
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
|
||||||
|
else
|
||||||
|
EMC.TPOS = EgtGetInfo( EMC.DISPID, 'TPOS', 'd')
|
||||||
|
end
|
||||||
local vCmd3 = SpecCalcUnload()
|
local vCmd3 = SpecCalcUnload()
|
||||||
-- unisco ed emetto i comandi
|
-- unisco ed emetto i comandi
|
||||||
vCmd = EgtJoinTables( vCmd, vCmd2)
|
vCmd = EgtJoinTables( vCmd, vCmd2)
|
||||||
@@ -694,7 +705,7 @@ function OnSpecialApplyMachining()
|
|||||||
local OriY2Delta = EMC.Y2DELTA
|
local OriY2Delta = EMC.Y2DELTA
|
||||||
local OriV1Pos = EMC.V1POS
|
local OriV1Pos = EMC.V1POS
|
||||||
local OriV2Pos = EMC.V2POS
|
local OriV2Pos = EMC.V2POS
|
||||||
local OriCnt = EMC.CNT
|
local OriCnt = EMC.CNT
|
||||||
-- eseguo le elaborazioni
|
-- eseguo le elaborazioni
|
||||||
SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bLast and bUnload)
|
SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bLast and bUnload)
|
||||||
-- se separazione, verifico il risultato
|
-- se separazione, verifico il risultato
|
||||||
@@ -751,7 +762,10 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
|||||||
|
|
||||||
-- Verifico se lavorazione pareti
|
-- Verifico se lavorazione pareti
|
||||||
local bWall = ( EgtGetInfo( EgtGetCurrMachGroup() or GDB_ID.NULL, 'Wall', 'd') == 1)
|
local bWall = ( EgtGetInfo( EgtGetCurrMachGroup() or GDB_ID.NULL, 'Wall', 'd') == 1)
|
||||||
|
-- se il pezzo dev'essere scaricato al carico
|
||||||
|
local dUnloadType = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'UNLOAD', 'd')
|
||||||
|
local bUnloadOnLoadPos = dUnloadType == 1 or dUnloadType == -1
|
||||||
|
|
||||||
-- mi salvo info lavorazione su una lista
|
-- mi salvo info lavorazione su una lista
|
||||||
local AuxInfoMach = {}
|
local AuxInfoMach = {}
|
||||||
AuxInfoMach.bPreSplit = bPreSplit
|
AuxInfoMach.bPreSplit = bPreSplit
|
||||||
@@ -759,7 +773,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
|||||||
AuxInfoMach.bPreCut = bPreCut
|
AuxInfoMach.bPreCut = bPreCut
|
||||||
AuxInfoMach.bCutting = bCutting
|
AuxInfoMach.bCutting = bCutting
|
||||||
AuxInfoMach.bUnload = bUnload
|
AuxInfoMach.bUnload = bUnload
|
||||||
|
|
||||||
-- Assegno flag di pezzo separato dal resto del grezzo
|
-- Assegno flag di pezzo separato dal resto del grezzo
|
||||||
SPLIT = IsEndPhase( EMC.PHASE)
|
SPLIT = IsEndPhase( EMC.PHASE)
|
||||||
|
|
||||||
@@ -767,6 +781,13 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
|||||||
local b3Tot = BBox3d()
|
local b3Tot = BBox3d()
|
||||||
local b3Raw = BBox3d()
|
local b3Raw = BBox3d()
|
||||||
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
|
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
|
||||||
|
-- se esistono più grezzi toglie l'impostazione di scarico al carico e ritorna errore
|
||||||
|
if bUnloadOnLoadPos and ( nNextOddPhase and nNextOddPhase <= EgtGetPhaseCount()) then
|
||||||
|
bUnloadOnLoadPos = false
|
||||||
|
EMC.ERR = 22
|
||||||
|
EMC.MSG = ' Error : Unload on Load Position not reachable if raw part on Load Position'
|
||||||
|
return
|
||||||
|
end
|
||||||
local nRawId = EgtGetFirstRawPart()
|
local nRawId = EgtGetFirstRawPart()
|
||||||
local nCurrRawId = GDB_ID.NULL
|
local nCurrRawId = GDB_ID.NULL
|
||||||
while nRawId do
|
while nRawId do
|
||||||
@@ -817,6 +838,10 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
|||||||
elseif bPreCut or bCutting then
|
elseif bPreCut or bCutting then
|
||||||
local dDistF, dDistB, dRollF, dRollB = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
local dDistF, dDistB, dRollF, dRollB = SpecialCalcPhaseEncumbrance( EMC.PHASE + 1)
|
||||||
dDistFront = min( dDistFront, dDistF)
|
dDistFront = min( dDistFront, dDistF)
|
||||||
|
-- Se è previsto lo scarico al carico aumenta l'ingombro dell'area di lavoro
|
||||||
|
if bUnloadOnLoadPos then
|
||||||
|
dDistFront = dDistFront -( MinDeltaYV*2 + AGG_V)
|
||||||
|
end
|
||||||
dDistBack = min( dDistBack, dDistB)
|
dDistBack = min( dDistBack, dDistB)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -886,12 +911,6 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
|||||||
if not EMC.Y2DELTA then
|
if not EMC.Y2DELTA then
|
||||||
EgtOutLog( ' Warning SPLITTING -> separazione con caduta pezzo')
|
EgtOutLog( ' Warning SPLITTING -> separazione con caduta pezzo')
|
||||||
SpecOutputCNT()
|
SpecOutputCNT()
|
||||||
-- non funziona ma servirebbe un controllo simile, di modo che non possa avvenire la presenza di un pezzo "FALL" più grande di LEN_VERY_SHORT_PART
|
|
||||||
--if EMC.LT > LEN_VERY_SHORT_PART then
|
|
||||||
-- EMC.ERR = 19
|
|
||||||
-- EMC.MSG = ' Error SPLIT : Y1 or Y2 not clamped'
|
|
||||||
-- return false
|
|
||||||
--end
|
|
||||||
if IsEndPhase( EMC.PHASE + 1) then
|
if IsEndPhase( EMC.PHASE + 1) then
|
||||||
EgtSetInfo( NextDispId, 'SKIP', '1')
|
EgtSetInfo( NextDispId, 'SKIP', '1')
|
||||||
local NextOpeId = EgtGetNextOperation( NextDispId)
|
local NextOpeId = EgtGetNextOperation( NextDispId)
|
||||||
@@ -921,7 +940,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload)
|
|||||||
EgtSetInfo( NextDispId, 'V1POS', EMC.V1POS)
|
EgtSetInfo( NextDispId, 'V1POS', EMC.V1POS)
|
||||||
EgtSetInfo( NextDispId, 'V2POS', EMC.V2POS)
|
EgtSetInfo( NextDispId, 'V2POS', EMC.V2POS)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Se previsto scarico, lo eseguo
|
-- Se previsto scarico, lo eseguo
|
||||||
if bUnload then
|
if bUnload then
|
||||||
@@ -1353,8 +1372,100 @@ function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
|||||||
return vCmd
|
return vCmd
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- Scarica il pezzo in zona di carico
|
||||||
|
function SpecCalcUnloadOnLoadPos()
|
||||||
|
local vCmdPre = {}
|
||||||
|
EgtOutLog( ' *[UL]', 1)
|
||||||
|
if not EMC.Y1DELTA and not EMC.Y2DELTA then
|
||||||
|
EMC.ERR = 21
|
||||||
|
EMC.MSG = ' Error : Y1 and Y2 not clamped for unloading'
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
-- Se pinza Y2 chiusa, devo effettuare uno scambio
|
||||||
|
local dY1DeltaMaxSP = MaxY1 - UnloadOnLoadTPos - TurnerOffs - 10 * GEO.EPS_SMALL
|
||||||
|
if EMC.Y2DELTA or EMC.Y1DELTA > dY1DeltaMaxSP then
|
||||||
|
-- imposto quote aggancio per avere solo pinza Y
|
||||||
|
local dDistFront = 0
|
||||||
|
local dDistBack = EMC.LB - MinOther - EMC.HOVM + 10 * GEO.EPS_SMALL
|
||||||
|
-- dico che le paratie sono chiuse perchè poi se ho dei movimenti, verranno chiuse, quindi parto considerandole già chiuse
|
||||||
|
EMC.V1POS = 0
|
||||||
|
EMC.V2POS = 0
|
||||||
|
-- effettuo scambio
|
||||||
|
vCmdPre = SpecCalcCarriages( dDistFront, dDistBack, 0, 0, dY1DeltaMaxSP)
|
||||||
|
-- recupero nuova posizione carrelli
|
||||||
|
SpecSetCarrPosFromCmds( vCmdPre)
|
||||||
|
EgtOutLog( ' [UL1]', 1)
|
||||||
|
end
|
||||||
|
-- porto il pezzo alla zona di rotazione con il carro Y1
|
||||||
|
local vCmd = {}
|
||||||
|
-- Commento
|
||||||
|
table.insert( vCmd, { 0, 'Unload-On-Load'})
|
||||||
|
-- posizionamento sicuro teste e rulli
|
||||||
|
if #vCmdPre > 0 then
|
||||||
|
EnsureZmax( true, vCmdPre, 2)
|
||||||
|
else
|
||||||
|
EnsureZmax( true, vCmd)
|
||||||
|
end
|
||||||
|
-- Se pinza V chiusa, la apro
|
||||||
|
if EMC.Y2DELTA then
|
||||||
|
table.insert( vCmd, { 12, 0})
|
||||||
|
end
|
||||||
|
-- riporto la trave al carico
|
||||||
|
local dRotT = UnloadOnLoadTPos + TurnerOffs
|
||||||
|
local dY1Move = dRotT + EMC.Y1DELTA
|
||||||
|
if dY1Move > MaxY1 then
|
||||||
|
local dRotTStep, dY1MoveStep = dRotT - dY1Move + MaxY1, MaxY1
|
||||||
|
if MinBeamLenUnloadInLine and EMC.LB >= MinBeamLenUnloadInLine then
|
||||||
|
table.insert( vCmd, { 2, 'Y1', dY1MoveStep, 'T', dRotTStep, 'BrakeBeam'})
|
||||||
|
-- apro la morsa
|
||||||
|
table.insert( vCmd, { 11, 0})
|
||||||
|
-- riporto il carrello in fondo alla trave
|
||||||
|
dY1MoveStep = dRotTStep + ( EMC.HCING or 0)
|
||||||
|
dY1Move = dY1MoveStep + dY1Move - MaxY1
|
||||||
|
table.insert( vCmd, { 1, 'Y1', dY1MoveStep, 'UnBrakeBeam'})
|
||||||
|
-- chiudo la morsa
|
||||||
|
table.insert( vCmd, { 11, 1})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.insert( vCmd, { 2, 'Y1', dY1Move, 'T', dRotT, 'BrakeBeam'})
|
||||||
|
-- apro la morsa
|
||||||
|
table.insert( vCmd, { 11, 0})
|
||||||
|
EMC.CNT = nil
|
||||||
|
-- riporto il carrello in home
|
||||||
|
table.insert( vCmd, { 1, 'Y1', ParkY1, 'UnBrakeBeam'})
|
||||||
|
|
||||||
|
-- eventuale unione tabelle
|
||||||
|
if #vCmdPre > 0 then
|
||||||
|
vCmd = EgtJoinTables( vCmdPre, vCmd)
|
||||||
|
end
|
||||||
|
|
||||||
|
return vCmd
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecCalcUnload()
|
function SpecCalcUnload()
|
||||||
|
-- In caso di condizioni rispettate richiama lo scarico al carico e ritorna
|
||||||
|
local nNextPathId
|
||||||
|
local nNextMchId
|
||||||
|
local nNextDispId
|
||||||
|
if EMC.PATHID then nNextPathId = EgtGetNextActiveOperation( EMC.PATHID) end
|
||||||
|
if EMC.MCHID then nNextMchId = EgtGetNextActiveOperation( EMC.MCHID) end
|
||||||
|
if EMC.DISPID then nNextDispId = EgtGetNextActiveOperation( EMC.DISPID) end
|
||||||
|
-- se il pezzo dev'essere scaricato al carico
|
||||||
|
local dUnloadType = EgtGetInfo( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL, 'UNLOAD', 'd')
|
||||||
|
local bUnloadOnLoadPos = dUnloadType == 1 or dUnloadType == -1
|
||||||
|
if bUnloadOnLoadPos then
|
||||||
|
-- è l'ultimo path, è l'ultima lavorazione, non ci sono altre disposizioni e non c'è rimanenza
|
||||||
|
if not nNextPathId and not nNextMchId and not nNextDispId and not IsStartOrRestPhase(EMC.PHASE) then
|
||||||
|
local vCmd = SpecCalcUnloadOnLoadPos()
|
||||||
|
return vCmd
|
||||||
|
else
|
||||||
|
EMC.ERR = 21
|
||||||
|
EMC.MSG = ' Error : Unload on Load Position not reachable if raw part on Load Position'
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
end
|
||||||
local vCmdPre = {}
|
local vCmdPre = {}
|
||||||
EgtOutLog( ' *[U]', 1)
|
EgtOutLog( ' *[U]', 1)
|
||||||
if not EMC.Y1DELTA and not EMC.Y2DELTA then
|
if not EMC.Y1DELTA and not EMC.Y2DELTA then
|
||||||
@@ -1403,8 +1514,30 @@ function SpecCalcUnload()
|
|||||||
if bStdUl then
|
if bStdUl then
|
||||||
local dFinT = EgtIf( EMC.LB < MaxLenSmT, UnloadSmT, UnloadT) - EMC.LB
|
local dFinT = EgtIf( EMC.LB < MaxLenSmT, UnloadSmT, UnloadT) - EMC.LB
|
||||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
local dBeamTailY2 = dFinY2 + ( EMC.LB - EMC.Y2DELTA) - ( EMC.TCING or 0)
|
||||||
|
-- Se scarico in linea scrivo una nota in più per l'attivazione del piano ferma pezzo (M125)
|
||||||
|
if MinBeamLenUnloadInLine and EMC.LB >= MinBeamLenUnloadInLine then
|
||||||
|
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2, 'BrakeBeam'})
|
||||||
|
else
|
||||||
|
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||||
|
end
|
||||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||||
|
-- Se scarico in "linea"
|
||||||
|
if MinBeamLenUnloadInLine and EMC.LB >= MinBeamLenUnloadInLine then
|
||||||
|
-- apro la morsa
|
||||||
|
table.insert( vCmd, { 12, 0})
|
||||||
|
local dY2MoveMax = MinY2
|
||||||
|
if dBeamTailY2 >= ( dY2MoveMax + ( EMC.TCING or 0)) then
|
||||||
|
local dTMove = dY2MoveMax - EMC.LB + ( EMC.TCING or 0)
|
||||||
|
-- riporto il carrello in fondo alla trave
|
||||||
|
table.insert( vCmd, { 1, 'Y2', dBeamTailY2, 'UnBrakeBeam'})
|
||||||
|
-- chiudo la morsa
|
||||||
|
table.insert( vCmd, { 12, 1})
|
||||||
|
-- finisco scarico trave
|
||||||
|
table.insert( vCmd, { 2, 'T', dTMove, 'Y2', dY2MoveMax})
|
||||||
|
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dY2MoveMax), 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
local dFinT = min( MaxY2 - EMC.Y2DELTA, max( UnloadT - MaxUnloadLen, MinY2 - EMC.Y2DELTA))
|
local dFinT = min( MaxY2 - EMC.Y2DELTA, max( UnloadT - MaxUnloadLen, MinY2 - EMC.Y2DELTA))
|
||||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||||
@@ -1413,7 +1546,7 @@ function SpecCalcUnload()
|
|||||||
-- apro la morsa
|
-- apro la morsa
|
||||||
table.insert( vCmd, { 12, 0})
|
table.insert( vCmd, { 12, 0})
|
||||||
-- riporto il carrello in home
|
-- riporto il carrello in home
|
||||||
table.insert( vCmd, { 1, 'Y2', ParkY2})
|
table.insert( vCmd, { 1, 'Y2', ParkY2, 'NoWaitUnload'})
|
||||||
|
|
||||||
-- eventuale unione tabelle
|
-- eventuale unione tabelle
|
||||||
if #vCmdPre > 0 then
|
if #vCmdPre > 0 then
|
||||||
@@ -1590,7 +1723,7 @@ local function PosForEnl1FY1( dY1a, dY2a, dTa, dExtra, dCorsaY1e, dCorsaY2Te)
|
|||||||
if dDispl/2 <= dCorsaY1e then
|
if dDispl/2 <= dCorsaY1e then
|
||||||
dY1a = dY1a + dDispl / 2
|
dY1a = dY1a + dDispl / 2
|
||||||
dY2a = dY2a - dDispl / 2
|
dY2a = dY2a - dDispl / 2
|
||||||
dTa = dTa - dDispl / 2
|
dTa = dTa - dDispl / 2
|
||||||
else
|
else
|
||||||
dY1a = dY1a + dCorsaY1e
|
dY1a = dY1a + dCorsaY1e
|
||||||
dY2a = dY2a - (dDispl - dCorsaY1e)
|
dY2a = dY2a - (dDispl - dCorsaY1e)
|
||||||
@@ -1612,7 +1745,7 @@ local function PosForEnl1FY2( dY1a, dY2a, dTa, dExtra, dCorsaY1Te, dCorsaY2e)
|
|||||||
if dDispl/2 <= dCorsaY1Te then
|
if dDispl/2 <= dCorsaY1Te then
|
||||||
if dDispl/2 <= dCorsaY2e then
|
if dDispl/2 <= dCorsaY2e then
|
||||||
dY1a = dY1a + dDispl / 2
|
dY1a = dY1a + dDispl / 2
|
||||||
dTa = dTa + dDispl / 2
|
dTa = dTa + dDispl / 2
|
||||||
dY2a = dY2a - dDispl / 2
|
dY2a = dY2a - dDispl / 2
|
||||||
else
|
else
|
||||||
dY2a = dY2a - dCorsaY2e
|
dY2a = dY2a - dCorsaY2e
|
||||||
@@ -1640,7 +1773,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
|||||||
-- allontano (Y1+T) e (Y2)
|
-- allontano (Y1+T) e (Y2)
|
||||||
dY1a = MaxY1
|
dY1a = MaxY1
|
||||||
dY2a = MinY2
|
dY2a = MinY2
|
||||||
dTa = ( dY1a - TabI.dY1PosI) + dTa
|
dTa = ( dY1a - TabI.dY1PosI) + dTa
|
||||||
-- **[M2]** = allontanamento dei trascinatori con Y2 in presa
|
-- **[M2]** = allontanamento dei trascinatori con Y2 in presa
|
||||||
elseif sType == 'M2' then
|
elseif sType == 'M2' then
|
||||||
EmitComment( vCmd, '[M2]')
|
EmitComment( vCmd, '[M2]')
|
||||||
@@ -1651,7 +1784,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
|||||||
-- allontano (Y2+T) e (Y1)
|
-- allontano (Y2+T) e (Y1)
|
||||||
dY1a = MaxY1
|
dY1a = MaxY1
|
||||||
dY2a = MinY2
|
dY2a = MinY2
|
||||||
dTa = ( dY2a - TabI.dY2PosI) + dTa
|
dTa = ( dY2a - TabI.dY2PosI) + dTa
|
||||||
-- **[M3]** = accentramento dei trascinatori con Y1 in presa
|
-- **[M3]** = accentramento dei trascinatori con Y1 in presa
|
||||||
elseif sType == 'M3' then
|
elseif sType == 'M3' then
|
||||||
EmitComment( vCmd, '[M3]')
|
EmitComment( vCmd, '[M3]')
|
||||||
@@ -1661,7 +1794,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
|||||||
-- accentro (Y1+T) e (Y2)
|
-- accentro (Y1+T) e (Y2)
|
||||||
dY1a = TabI.MyMinY1V1
|
dY1a = TabI.MyMinY1V1
|
||||||
dY2a = TabI.MaxY2V2
|
dY2a = TabI.MaxY2V2
|
||||||
dTa = ( dY1a - TabI.dY1PosI) + dTa
|
dTa = ( dY1a - TabI.dY1PosI) + dTa
|
||||||
-- **[M4]** = accentramento dei trascinatori con Y2 in presa
|
-- **[M4]** = accentramento dei trascinatori con Y2 in presa
|
||||||
elseif sType == 'M4' then
|
elseif sType == 'M4' then
|
||||||
EmitComment( vCmd, '[M4]')
|
EmitComment( vCmd, '[M4]')
|
||||||
@@ -1672,7 +1805,7 @@ local function MaxDispl( TabI, vCmd, sType)
|
|||||||
-- accentro (Y2+T) e (Y1)
|
-- accentro (Y2+T) e (Y1)
|
||||||
dY1a = TabI.MyMinY1V1
|
dY1a = TabI.MyMinY1V1
|
||||||
dY2a = TabI.MaxY2V2
|
dY2a = TabI.MaxY2V2
|
||||||
dTa = ( dY2a - TabI.dY2PosI) + dTa
|
dTa = ( dY2a - TabI.dY2PosI) + dTa
|
||||||
end
|
end
|
||||||
--
|
--
|
||||||
table.insert( vCmd, { 3, 'Y1', dY1a, 'Y2', dY2a, 'T', dTa, EMC.CNT})
|
table.insert( vCmd, { 3, 'Y1', dY1a, 'Y2', dY2a, 'T', dTa, EMC.CNT})
|
||||||
@@ -1960,7 +2093,7 @@ local function PosY1Y2B( TabI, vCmd)
|
|||||||
PosY2FromY1B( TabI, vCmd)
|
PosY2FromY1B( TabI, vCmd)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
bXW = false
|
bXW = false
|
||||||
-- se posso posizionare 'direttamente' Y2 all'interno dell'intervallo I2 (casi [rp] o [ri])
|
-- se posso posizionare 'direttamente' Y2 all'interno dell'intervallo I2 (casi [rp] o [ri])
|
||||||
else
|
else
|
||||||
-- |POSIZIONO MORSA 2| e poi MORSA 1
|
-- |POSIZIONO MORSA 2| e poi MORSA 1
|
||||||
@@ -1971,7 +2104,7 @@ local function PosY1Y2B( TabI, vCmd)
|
|||||||
TabI.dY1PosI < TabI.dTPosI + EMC.LB - MinJoin - EgtIf( SPLIT, EMC.TCING, 0) + 10 * GEO.EPS_SMALL then
|
TabI.dY1PosI < TabI.dTPosI + EMC.LB - MinJoin - EgtIf( SPLIT, EMC.TCING, 0) + 10 * GEO.EPS_SMALL then
|
||||||
PosY2FromY1A( TabI, vCmd)
|
PosY2FromY1A( TabI, vCmd)
|
||||||
PosY1FromY2B( TabI, vCmd)
|
PosY1FromY2B( TabI, vCmd)
|
||||||
bXW = false
|
bXW = false
|
||||||
end
|
end
|
||||||
-- in **accentramento**
|
-- in **accentramento**
|
||||||
else
|
else
|
||||||
@@ -1980,9 +2113,9 @@ local function PosY1Y2B( TabI, vCmd)
|
|||||||
TabI.dY1PosI <= TabI.dTPosI + EMC.LB - MinJoin - EgtIf( SPLIT, EMC.TCING, 0) + 10 * GEO.EPS_SMALL then
|
TabI.dY1PosI <= TabI.dTPosI + EMC.LB - MinJoin - EgtIf( SPLIT, EMC.TCING, 0) + 10 * GEO.EPS_SMALL then
|
||||||
PosY2FromY1B( TabI, vCmd)
|
PosY2FromY1B( TabI, vCmd)
|
||||||
PosY1FromY2B( TabI, vCmd)
|
PosY1FromY2B( TabI, vCmd)
|
||||||
bXW = false
|
bXW = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if bXW then
|
if bXW then
|
||||||
-- Massimo trascinamento della trave in direzione positiva (casi **[xw]** )
|
-- Massimo trascinamento della trave in direzione positiva (casi **[xw]** )
|
||||||
@@ -1992,10 +2125,10 @@ local function PosY1Y2B( TabI, vCmd)
|
|||||||
TabI.dY1PosI < TabI.dTPosI + EMC.LB - MinJoin - EgtIf( SPLIT, EMC.TCING, 0) + 10 * GEO.EPS_SMALL then
|
TabI.dY1PosI < TabI.dTPosI + EMC.LB - MinJoin - EgtIf( SPLIT, EMC.TCING, 0) + 10 * GEO.EPS_SMALL then
|
||||||
-- allontanamento morse, trascinamento trave con Y1
|
-- allontanamento morse, trascinamento trave con Y1
|
||||||
MaxDispl( TabI, vCmd, 'M1')
|
MaxDispl( TabI, vCmd, 'M1')
|
||||||
else
|
else
|
||||||
-- accentramento morse, trascinamento trave con Y2
|
-- accentramento morse, trascinamento trave con Y2
|
||||||
MaxDispl( TabI, vCmd, 'M4')
|
MaxDispl( TabI, vCmd, 'M4')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
nCnt = nCnt + 1
|
nCnt = nCnt + 1
|
||||||
if nCnt > 10 then return end
|
if nCnt > 10 then return end
|
||||||
@@ -2541,11 +2674,11 @@ function SpecOutputCmds( vCmd, bEnd)
|
|||||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||||
-- movimento di 1 asse
|
-- movimento di 1 asse
|
||||||
elseif Cmd[1] == 1 then
|
elseif Cmd[1] == 1 then
|
||||||
local sInfo = '1,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..EgtIf( Cmd[4], ',*', '')
|
local sInfo = '1,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..EgtIf( Cmd[4], ','..tostring(Cmd[4]), '')
|
||||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||||
-- movimento di 2 assi
|
-- movimento di 2 assi
|
||||||
elseif Cmd[1] == 2 then
|
elseif Cmd[1] == 2 then
|
||||||
local sInfo = '2,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..','..Cmd[4]..','..EgtNumToString( Cmd[5],3)..EgtIf( Cmd[6], ',*', '')
|
local sInfo = '2,'..Cmd[2]..','..EgtNumToString( Cmd[3],3)..','..Cmd[4]..','..EgtNumToString( Cmd[5],3)..EgtIf( Cmd[6], ','..tostring(Cmd[6]), '')
|
||||||
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
EgtSetInfo( EMC.PATHID, sKey, sInfo)
|
||||||
-- movimento di 3 assi
|
-- movimento di 3 assi
|
||||||
elseif Cmd[1] == 3 then
|
elseif Cmd[1] == 3 then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
==== Common_PF1250 Update Log ====
|
==== Common_PF1250 Update Log ====
|
||||||
|
|
||||||
|
Versione 3.1-- (--/--/2026)
|
||||||
|
- (GEN) In caso di ultimo movimento come scarico rimanenza, porta V2 in posizione di parcheggio. Ticket#3006
|
||||||
|
|
||||||
Versione 3.1e2 (15/05/2026)
|
Versione 3.1e2 (15/05/2026)
|
||||||
- (SIM-GEN) Corretta gestione scarico manuale ( errore in versione 3.1e1)
|
- (SIM-GEN) Corretta gestione scarico manuale ( errore in versione 3.1e1)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common_PF1250', -- nome script PP standard
|
NAME = 'Common_PF1250', -- nome script PP standard
|
||||||
VERSION = '3.1e2', -- versione script
|
VERSION = '3.1--', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user