Prima bozza gestione aggregato foratore multiplo

This commit is contained in:
andrea.villa
2024-11-28 17:52:19 +01:00
parent 31404c02bc
commit e0c1a97e87
5 changed files with 157 additions and 13 deletions
+66 -4
View File
@@ -97,10 +97,10 @@ ParkCSaw0Z1 = -400
ParkCSawC1 = -90
ParkCSaw0C1 = 0
ParkCSawB1 = 0
MinLengthLongCSaw = 580 -- gestione speciale per motosega molto lunga. Lunghezza al di sopra della quale e' considerata motosega lunga
ParkLongCSawZ1 = -50 -- gestione speciale per motosega molto lunga. Parcheggio asse Z
ParkLongCSawC1 = 0 -- gestione speciale per motosega molto lunga. Parcheggio asse C
ParkLongCSawB1 = -90 -- gestione speciale per motosega molto lunga. Parcheggio asse B
MinLengthLongCSaw = 580 -- gestione speciale per motosega molto lunga. Lunghezza al di sopra della quale e' considerata motosega lunga
ParkLongCSawZ1 = -50 -- gestione speciale per motosega molto lunga. Parcheggio asse Z
ParkLongCSawC1 = 0 -- gestione speciale per motosega molto lunga. Parcheggio asse C
ParkLongCSawB1 = -90 -- gestione speciale per motosega molto lunga. Parcheggio asse B
LongTool = 390
MinLongTc1C1 = -91
MaxLongTc1C1 = 91
@@ -110,6 +110,11 @@ MaxLongTc2C1 = -89
ParkLongTc2C1 = -180
ParkLongB1 = 0
MinZ1ToChangeH2 = -1400
ParkMultiDrillX1 = ParkCSawX1 -- posizione parcheggio asse X per aggregato forature multiplo
ParkMultiDrillC1 = 0 -- posizione parcheggio asse C per aggregato forature multiplo
ParkMultiDrill0C1 = -90 -- posizione parcheggio asse C per aggregato forature multiplo
ParkMultiDrillB1 = 0 -- posizione parcheggio asse B per aggregato forature multiplo
ParkMultiDrillZ1 = 0 -- posizione parcheggio asse Z per aggregato forature multiplo
MinZ3 = -1550
MaxZ3 = 0
MinX3 = 0
@@ -1153,6 +1158,17 @@ function OnSetHead()
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA, EMC.TOTLEN))
EmtModifyAxisHome( 'B1', EgtIf( EMC.TOTLEN < MinLengthLongCSaw, ParkCSawB1, ParkLongCSawB1))
EmtModifyAxisDirection( 'B1', X_AX())
-- se testa H14 (aggregato forature multiplo)
elseif EMC.HEAD == 'H14' then
-- recupero il valore dell'asse virtuale bloccato A
local MultiDrillPosA = GetCurrMultiDrillVirtualAxis()
EmtModifyAxisHome( 'X1', ParkMultiDrillX1)
EmtModifyAxisHome( 'Z1', ParkMultiDrillZ1)
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1})
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
EmtModifyAxisHome( 'C1', GetMultiDrillCHomeFromVirtualAxis( MultiDrillPosA, EMC.TOTLEN))
EmtModifyAxisHome( 'B1', EgtIf( EMC.TOTLEN < MinLengthLongCSaw, ParkCSawB1, ParkLongCSawB1))
EmtModifyAxisDirection( 'B1', X_AX())
-- se testa H16 ( seconda lama)
elseif EMC.HEAD == 'H16' then
EmtModifyAxisHome( 'X1', ParkTc2X1)
@@ -1286,6 +1302,8 @@ function HeadIsChainSaw( sHead)
return ( sHead == 'H13' or sHead == 'H15')
end
---------------------------------------------------------------------
--- FUNZIONI PER MOTOSEGA -------------------------------------------
---------------------------------------------------------------------
function GetCurrChainSawingVirtualAxis()
-- recupero il valore dell'asse virtuale bloccato A
@@ -1349,6 +1367,37 @@ function GetSawCHomeFromVirtualAxis( dPosA)
end
end
---------------------------------------------------------------------
--- FUNZIONI PER AGGREGATO FORATORE MULTIPLO ------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
function GetCurrMultiDrillVirtualAxis()
-- recupero il valore dell'asse virtuale bloccato A
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
if not sVal or sVal == '' then
if EMC then
sVal = EMC.BLOCKEDAXIS or 'A1=0'
else
sVal = 'A1=0'
end
end
local dPosA = tonumber( sVal:sub( 4)) or 0
return dPosA
end
---------------------------------------------------------------------
-- Funzione che calcola l'angolo Home di C per l'aggregato foratore mutliplo dal valore dell'asse virtuale
---------------------------------------------------------------------
function GetMultiDrillCHomeFromVirtualAxis( dPosA)
-- se A1=0 -> T121 -> HomeC = 0
if abs( dPosA) < 0.1 then
return ParkMultiDrill0C1
-- altrimenti A1=90 -> T124 -> HomeC = -90
else
return ParkMultiDrillC1
end
end
---------------------------------------------------------------------
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
function GetZExtra( sHead, dAngV)
@@ -1378,6 +1427,19 @@ function GetZExtra( sHead, dAngV)
else
return 0
end
-- se aggregato foratore multiplo
elseif sHead == 'H14' then
if abs( dAngV) < 30.1 then
return 400
elseif abs( dAngV) < 45.1 then
return 300
elseif abs( dAngV) < 60.1 then
return 200
elseif abs( dAngV) < 90.1 then
return 10
else
return 0
end
-- altri casi
else
return 0