88 lines
2.9 KiB
Lua
88 lines
2.9 KiB
Lua
-- 2016/03/14
|
|
-- Comando muovi un asse
|
|
|
|
-- Intestazioni
|
|
require( 'EgtBase')
|
|
_ENV = EgtProtectGlobal()
|
|
EgtEnableDebug( false)
|
|
|
|
-- Tavola di passaggio valori
|
|
local CMD = {}
|
|
CMD.CMDSTRING = ""
|
|
_G.CMD = CMD
|
|
|
|
function CmdString()
|
|
-- Modo di funzionamento
|
|
local bNewMode = true
|
|
-- Nuovo modo
|
|
if bNewMode then
|
|
local sMove
|
|
-- se movimento assi lineari
|
|
if CMD.AXISNAME == 'X' or CMD.AXISNAME == 'Y' or CMD.AXISNAME == 'Z' then
|
|
-- se modalità 3 assi
|
|
if not CMD.G24 then
|
|
-- movimento lungo l'asse indicato
|
|
local dMove = 0
|
|
if CMD.AXISNAME == 'X' then
|
|
dMove = CMD.L1o + CMD.AXISMOVE
|
|
elseif CMD.AXISNAME == 'Y' then
|
|
dMove = CMD.L2o + CMD.AXISMOVE
|
|
else -- 'Z'
|
|
dMove = CMD.L3o + CMD.AXISMOVE
|
|
end
|
|
sMove = CMD.AXISNAME..EgtNumToString(dMove,3)
|
|
-- altrimenti modalità 5 assi
|
|
else
|
|
-- vettore movimento
|
|
local vtMove
|
|
if CMD.AXISNAME == 'X' then
|
|
vtMove = Vector3d( CMD.AXISMOVE, 0, 0)
|
|
elseif CMD.AXISNAME == 'Y' then
|
|
vtMove = Vector3d( 0, CMD.AXISMOVE, 0)
|
|
else -- 'Z'
|
|
vtMove = Vector3d( 0, 0, CMD.AXISMOVE)
|
|
end
|
|
-- porto il movimento in riferimento macchina
|
|
vtMove:rotate( Y_AX(), CMD.R2 - 90)
|
|
vtMove:rotate( Z_AX(), CMD.R1)
|
|
sMove = 'X' .. EgtNumToString( CMD.L1o + vtMove:getX(), 3) ..
|
|
' Y' .. EgtNumToString( CMD.L2o + vtMove:getY(), 3) ..
|
|
' Z' .. EgtNumToString( CMD.L3o + vtMove:getZ(), 3)
|
|
end
|
|
-- altrimenti movimento assi rotanti
|
|
else
|
|
sMove = CMD.AXISNAME..EgtNumToString(CMD.AXISMOVE,3)
|
|
end
|
|
-- comando
|
|
if CMD.G0 then
|
|
CMD.CMDSTRING = "G24- G52 G0 G71 "..sMove
|
|
else
|
|
CMD.CMDSTRING = "G24- G52 G1 G71 "..sMove.." F"..EgtNumToString(CMD.F,0)
|
|
end
|
|
-- Vecchio modo
|
|
else
|
|
-- assegno pre-comando
|
|
local sPre = ""
|
|
-- assegno il valore dell'asse
|
|
local dVal = 0
|
|
-- gli assi lineari sono in incrementale : aggiungo il movimento al valore corrente
|
|
if CMD.AXISNAME == 'X' then
|
|
dVal = CMD.L1 + CMD.AXISMOVE
|
|
elseif CMD.AXISNAME == 'Y' then
|
|
dVal = CMD.L2 + CMD.AXISMOVE
|
|
elseif CMD.AXISNAME == 'Z' then
|
|
dVal = CMD.L3 + CMD.AXISMOVE
|
|
-- gli assi rotanti disabilitano il piano di lavoro generico e sono in assoluto rispetto a 0M
|
|
elseif CMD.AXISNAME == 'C' or CMD.AXISNAME == 'B' then
|
|
sPre = "G24- G52 "
|
|
end
|
|
-- comando
|
|
if CMD.G0 then
|
|
CMD.CMDSTRING = sPre.."G0 G71 "..CMD.AXISNAME..EgtNumToString(dVal,3)
|
|
else
|
|
CMD.CMDSTRING = sPre.."G1 G71 "..CMD.AXISNAME..EgtNumToString(dVal,3).." F"..EgtNumToString(CMD.F,0)
|
|
end
|
|
end
|
|
end
|
|
_G.CmdString=CmdString
|