Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0ac498e17b | |||
| 0a24d14e8c | |||
| 9c6694d5ef | |||
| ad46345b8e | |||
| 0fc1fd89d1 | |||
| 09d5c3c152 | |||
| cc9f676866 | |||
| be9c6305fb | |||
| f54320bf30 | |||
| 04c4b8f756 | |||
| 027094d67e | |||
| f0385c5558 | |||
| 4b35bf714e | |||
| c2d4489879 | |||
| d0f062ab32 | |||
| 26b673fc83 | |||
| 5a681e3d60 | |||
| 948ea31698 | |||
| 7ba2d56749 | |||
| f2816185cd | |||
| 205a44075d | |||
| f876850772 | |||
| 2a60d00f61 | |||
| 4d7297c498 | |||
| 9c358734ba | |||
| 88691bddcc | |||
| b633dc4349 | |||
| c443adc95b | |||
| 0f18e03948 | |||
| d8793d5a7a | |||
| deccc61aa1 | |||
| d609a50996 | |||
| 8d01762144 | |||
| ea4c237ab9 | |||
| dc31cfba27 | |||
| a908e52b77 | |||
| fca1cc97a0 | |||
| 37a0b8de9e | |||
| f48d69d54b | |||
| dffbe1fd9e | |||
| e74ed0b666 | |||
| 1ea3ec7c3a | |||
| 167d0ceece | |||
| c462826bbd | |||
| 2faa86507d | |||
| ae2746025e | |||
| 3d1e6dcbf8 | |||
| 038eed3541 | |||
| 5ead166d6d | |||
| 19b0efa341 | |||
| 5f343e9806 | |||
| 827e9e3c03 | |||
| f8c217a85d | |||
| e029dfa64b | |||
| e925500b5f | |||
| cf04020f10 | |||
| f06bfab111 | |||
| d344027033 |
+101
-22
@@ -2,19 +2,27 @@ variables:
|
|||||||
VERS_MAIN: '1.0'
|
VERS_MAIN: '1.0'
|
||||||
MACH_NAME: ''
|
MACH_NAME: ''
|
||||||
MACH_NAME_TEST: ''
|
MACH_NAME_TEST: ''
|
||||||
|
MANUFACTURER: ''
|
||||||
NEW_REL: ''
|
NEW_REL: ''
|
||||||
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
NET_SHARE_X: '\\10.74.82.201\EgwTech'
|
||||||
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
|
||||||
NET_SHARE_S: '\\10.74.82.201\Scambio'
|
NET_SHARE_S: '\\10.74.82.201\Scambio'
|
||||||
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
NET_SHARE_R: '\\10.74.82.201\EgwTech'
|
||||||
|
NET_SHARE_H: '\\10.74.82.252\team drives'
|
||||||
NET_USERQ: 'steamw\egalware'
|
NET_USERQ: 'steamw\egalware'
|
||||||
|
NET_USER_SERVICES: 'steamw\services'
|
||||||
MACH_VERS: '0.0.0.0'
|
MACH_VERS: '0.0.0.0'
|
||||||
TEMP_PATH: 'C:\MachinesDeploy'
|
TEMP_PATH: 'C:\MachinesDeploy'
|
||||||
MACHINES_PATH_R: 'R:\EgtData\Machines'
|
MACHINES_PATH_R: 'R:\EgtData\Machines_GIT'
|
||||||
DEST_MACHINES_PATH_R: 'R:\EgtData\Machines\zTestYAML'
|
DEST_MACHINES_PATH_H: 'H:'
|
||||||
SRC_PATH: ''
|
SRC_PATH: ''
|
||||||
BASE_PATH: ''
|
BASE_PATH: ''
|
||||||
TEST_PATH: ''
|
TEST_PATH: ''
|
||||||
|
URL_VERSIONS_LOG: "https://liman.egalware.com/ELM.API/api/release/save"
|
||||||
|
MACH_VERS_NUM: '0.0.0.0'
|
||||||
|
CRITICAL_STRING: "#critical#"
|
||||||
|
TOOLS_MACHINE_PATH: ""
|
||||||
|
|
||||||
|
|
||||||
#Note compilazione LUA:
|
#Note compilazione LUA:
|
||||||
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
|
||||||
@@ -38,12 +46,29 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Copia macchina su R"
|
echo " Copia macchina su R"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
ROBOCOPY /MIR "$env:SRC_PATH" "$env:DEST_MACHINES_PATH_R\$env:MACH_NAME\" /XD "bin"
|
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||||
ROBOCOPY "$env:TEST_PATH" "$env:DEST_MACHINES_PATH_R\$env:MACH_NAME_TEST\" /E /XD "bin"
|
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
|
||||||
ROBOCOPY /MIR "$env:BASE_PATH" "$env:DEST_MACHINES_PATH_R\Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
ROBOCOPY "$env:TEST_PATH" "$customerPathR\_TestMachines\$env:MACH_NAME_TEST\" /E /XD "bin"
|
||||||
|
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||||
SLEEP 2
|
SLEEP 2
|
||||||
net use R: /delete
|
net use R: /delete
|
||||||
|
|
||||||
|
# helper copia script verso drive condiviso
|
||||||
|
.ReplicaStor01: &ReplicaStor01
|
||||||
|
- |
|
||||||
|
net use H: /delete
|
||||||
|
SLEEP 2
|
||||||
|
net use H: $env:NET_SHARE_H /u:$env:NET_USER_SERVICES $SRVCS_PASSWD
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Copia macchina su stor01"
|
||||||
|
echo "-----------------------"
|
||||||
|
SLEEP 2
|
||||||
|
$customerPathH = $env:DEST_MACHINES_PATH_H + "\" + $env:MANUFACTURER + "\test"
|
||||||
|
$destinationPath = "$customerPathH\$env:MACH_NAME" + "\"
|
||||||
|
ROBOCOPY "$env:BASE_PATH" "$destinationPath\" *.zip
|
||||||
|
SLEEP 2
|
||||||
|
net use H: /delete
|
||||||
|
|
||||||
# helper copia script verso cartella di rete R:\ per develop
|
# helper copia script verso cartella di rete R:\ per develop
|
||||||
.ReplicaR_DEV: &ReplicaR_DEV
|
.ReplicaR_DEV: &ReplicaR_DEV
|
||||||
- |
|
- |
|
||||||
@@ -53,7 +78,8 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Copia macchina su R - DEV"
|
echo " Copia macchina su R - DEV"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
ROBOCOPY /MIR "$env:BASE_PATH" "$env:DEST_MACHINES_PATH_R\Deploy\$env:MACH_NAME\_DEV\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
|
||||||
|
ROBOCOPY /MIR "$env:BASE_PATH" "$customerPathR\_Deploy\$env:MACH_NAME\_DEV\$env:MACH_VERS\" /XD "bin" /XD "$env:MACH_NAME_TEST"
|
||||||
SLEEP 2
|
SLEEP 2
|
||||||
net use R: /delete
|
net use R: /delete
|
||||||
|
|
||||||
@@ -66,8 +92,15 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Recupero file non git da R e copia su macchina virtuale"
|
echo " Recupero file non git da R e copia su macchina virtuale"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
ROBOCOPY "$env:LAST_MACHINE_PATH" "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
# test se la cartella con gli utensili esiste per questa macchina
|
||||||
ROBOCOPY "$env:LAST_MACHINE_PATH" "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
if (!(Test-Path -Path $env:TOOLS_MACHINE_PATH)) {
|
||||||
|
echo "-----------------------"
|
||||||
|
echo "CANNOT FIND TOOLS FOR THIS MACHINE!!"
|
||||||
|
echo "-----------------------"
|
||||||
|
Exit 1}
|
||||||
|
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:TEST_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
|
ROBOCOPY "$env:TOOLS_MACHINE_PATH" "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
SLEEP 2
|
SLEEP 2
|
||||||
net use R: /delete
|
net use R: /delete
|
||||||
|
|
||||||
@@ -84,27 +117,27 @@ variables:
|
|||||||
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.ini" -NewName "$env:MACH_NAME_TEST.ini"
|
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.ini" -NewName "$env:MACH_NAME_TEST.ini"
|
||||||
ROBOCOPY . "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
ROBOCOPY . "$env:SRC_PATH\bin\$env:MACH_NAME\" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Compilazione file *.lua 32/64bit di Common*"
|
echo " Compilazione file *.lua 32/64bit"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$FileList = Get-ChildItem("Common*")
|
$FileList = Get-ChildItem * -Include( "*.mlpe", "*.mlse")
|
||||||
ForEach ($File in $FileList) {
|
ForEach ($File in $FileList) {
|
||||||
$FileName = Split-Path $File -leaf
|
$FileName = Split-Path $File -leaf
|
||||||
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
|
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
|
||||||
echo "lua54 -o bin\$FileName -s $FileName"
|
echo "lua54 -o bin\$FileName -s $FileName"
|
||||||
}
|
}
|
||||||
echo "-----------------------"
|
|
||||||
echo " FINE Compilazione"
|
|
||||||
echo "-----------------------"
|
|
||||||
|
|
||||||
# helper recupero nome macchina
|
# helper recupero nome macchina e costruttore
|
||||||
.machName-fix: &machName-fix
|
.machName-fix: &machName-fix
|
||||||
- |
|
- |
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Recupero nome macchina"
|
echo " Recupero nome macchina e costruttore"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$fileName = dir *.mlde
|
$fileName = dir *.mlde
|
||||||
$env:MACH_NAME = $fileName.BaseName
|
$env:MACH_NAME = $fileName.BaseName
|
||||||
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
|
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
|
||||||
|
$comp = $fileName.BaseName -split "-"
|
||||||
|
$env:MANUFACTURER = $comp[0]
|
||||||
|
Write-Output $env:MANUFACTURER
|
||||||
|
|
||||||
# helper calcolo versione
|
# helper calcolo versione
|
||||||
.version-fix: &version-fix
|
.version-fix: &version-fix
|
||||||
@@ -112,12 +145,22 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Calcolo versione"
|
echo " Calcolo versione"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
|
|
||||||
|
# calcolo versione formato stringa
|
||||||
$fPath = "$env:MACH_NAME.mlde";
|
$fPath = "$env:MACH_NAME.mlde";
|
||||||
$vLine = Select-String -path $fPath -Pattern 'PP_VER';
|
$vLine = Select-String -path $fPath -Pattern '^PP_VER';
|
||||||
$comp = $vLine -split "=";
|
$comp = $vLine -split "=";
|
||||||
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
|
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
|
||||||
# display versione
|
# display versione formato stringa
|
||||||
Write-Output $env:MACH_VERS;
|
Write-Output $env:MACH_VERS
|
||||||
|
|
||||||
|
# calcolo versione formato numerico
|
||||||
|
$fPath = "$env:MACH_NAME.mlde";
|
||||||
|
$vLine = Select-String -path $fPath -Pattern '^PP_NVER';
|
||||||
|
$comp = $vLine -split "=";
|
||||||
|
$env:MACH_VERS_NUM = $comp[1].Replace("'","").Trim()
|
||||||
|
# display versione formato numerico
|
||||||
|
Write-Output $env:MACH_VERS_NUM
|
||||||
|
|
||||||
# helper calcolo versione se develop
|
# helper calcolo versione se develop
|
||||||
.version-fix_DEV: &version-fix_DEV
|
.version-fix_DEV: &version-fix_DEV
|
||||||
@@ -129,7 +172,7 @@ variables:
|
|||||||
$commitAuthor = $commitAuthor[0].Trim()
|
$commitAuthor = $commitAuthor[0].Trim()
|
||||||
$env:MACH_VERS = $commitAuthor
|
$env:MACH_VERS = $commitAuthor
|
||||||
# display versione
|
# display versione
|
||||||
Write-Output $env:MACH_VERS;
|
Write-Output $env:MACH_VERS
|
||||||
|
|
||||||
# helper creazione folders
|
# helper creazione folders
|
||||||
.folder-fix: &folder-fix
|
.folder-fix: &folder-fix
|
||||||
@@ -137,8 +180,8 @@ variables:
|
|||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
echo " Creazione cartelle su macchina virtuale"
|
echo " Creazione cartelle su macchina virtuale"
|
||||||
echo "-----------------------"
|
echo "-----------------------"
|
||||||
$env:LAST_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MACH_NAME";
|
$env:TOOLS_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MANUFACTURER\_DefaultMachineSetup\$env:MACH_NAME"
|
||||||
Write-Output $env:LAST_MACHINE_PATH;
|
Write-Output $env:TOOLS_MACHINE_PATH
|
||||||
$env:SRC_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME";
|
$env:SRC_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME";
|
||||||
$env:BASE_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS";
|
$env:BASE_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS";
|
||||||
$env:TEST_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME_TEST";
|
$env:TEST_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME_TEST";
|
||||||
@@ -161,6 +204,39 @@ variables:
|
|||||||
7zip a -tzip $Target $Source
|
7zip a -tzip $Target $Source
|
||||||
Write-Output "called ZIP $Source --> $Target"
|
Write-Output "called ZIP $Source --> $Target"
|
||||||
|
|
||||||
|
# helper invio notifica a log versioni online (LiMan)
|
||||||
|
.SendToVersionsLog: &SendToVersionsLog
|
||||||
|
- |
|
||||||
|
echo "-----------------------"
|
||||||
|
echo " Invio versione a log online"
|
||||||
|
echo "-----------------------"
|
||||||
|
$tags = ""
|
||||||
|
$date = ""
|
||||||
|
# se critico scrive tag
|
||||||
|
if ( $CI_COMMIT_MESSAGE | Select-String -Pattern $env:CRITICAL_STRING) {
|
||||||
|
$tags = "CRITICAL"
|
||||||
|
$date = (Get-Date).AddDays(1).toString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$date = (Get-Date).AddDays(3).toString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
||||||
|
}
|
||||||
|
$body =
|
||||||
|
@{
|
||||||
|
codInst = "EgalWare"
|
||||||
|
codApp = $env:MACH_NAME
|
||||||
|
uplAppId = "UpdateManager"
|
||||||
|
masterKey = $LiMan_Key
|
||||||
|
tipo = "Machine"
|
||||||
|
versNum = $env:MACH_VERS_NUM
|
||||||
|
versText = $env:MACH_VERS
|
||||||
|
releaseDate = $date
|
||||||
|
relTags = $tags
|
||||||
|
}
|
||||||
|
$jsonBody = ConvertTo-Json -InputObject $body
|
||||||
|
echo $jsonBody
|
||||||
|
Invoke-WebRequest -Method Post -URI $env:URL_VERSIONS_LOG -ContentType "application/json" -Body $jsonBody -UseBasicParsing
|
||||||
|
|
||||||
|
|
||||||
# helper esecuzione test
|
# helper esecuzione test
|
||||||
.RunTest: &RunTest
|
.RunTest: &RunTest
|
||||||
@@ -189,6 +265,8 @@ LuaCompile:build:
|
|||||||
- *LuaCompile
|
- *LuaCompile
|
||||||
- *ZipClean
|
- *ZipClean
|
||||||
- *ReplicaR
|
- *ReplicaR
|
||||||
|
- *ReplicaStor01
|
||||||
|
- *SendToVersionsLog
|
||||||
|
|
||||||
LuaCompileDev:build:
|
LuaCompileDev:build:
|
||||||
stage: build
|
stage: build
|
||||||
@@ -236,4 +314,5 @@ LuaCompileDev:build:
|
|||||||
# script:
|
# script:
|
||||||
# - *LuaCompile
|
# - *LuaCompile
|
||||||
# - *ZipClean
|
# - *ZipClean
|
||||||
# - *ReplicaR
|
# - *ReplicaR
|
||||||
|
|
||||||
|
|||||||
+51
-17
@@ -8,6 +8,7 @@ local BeamData = {
|
|||||||
RIGHT_LOAD = false, -- flag carico da destra
|
RIGHT_LOAD = false, -- flag carico da destra
|
||||||
SIMUL_VIEW_DIR = 2, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
SIMUL_VIEW_DIR = 2, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
|
||||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||||
|
ROT180 = true, -- flag abilitazione rotazione 180 gradi
|
||||||
MIN_WIDTH = 50, -- larghezza minima del grezzo
|
MIN_WIDTH = 50, -- larghezza minima del grezzo
|
||||||
MIN_HEIGHT = 50, -- altezza minima del grezzo
|
MIN_HEIGHT = 50, -- altezza minima del grezzo
|
||||||
MAX_WIDTH = 400, -- larghezza massima del grezzo
|
MAX_WIDTH = 400, -- larghezza massima del grezzo
|
||||||
@@ -67,11 +68,16 @@ local BeamData = {
|
|||||||
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||||
MAXDIAM_POCK_CORNER = 201, -- diametro massimo utensile ammesso per tasche con angoli interni
|
MAXDIAM_POCK_CORNER = 201, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||||
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
||||||
|
HEAD_DIM_FOR_BH = 125, -- dimensione di ingombro della testa per block haus
|
||||||
|
MAX_LEN_BH_FROM_BOTTOM = 210, -- massima lunghezza lavorabile da un lato di block haus da sotto
|
||||||
|
MAX_DIST_BH_FROM_BOTTOM = 600, -- massima distanza tra naso mandrino e sopra della trave senza collisione
|
||||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||||
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||||
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
||||||
DOUBLE_HEAD_MORTISE = false, -- flag abilitazione lavorazione mortase in doppio
|
DOUBLE_HEAD_MORTISE = false, -- flag abilitazione lavorazione mortase in doppio
|
||||||
DOUBLE_HEAD_DRILLING = false, -- flag abilitazione forature in doppio
|
DOUBLE_HEAD_DRILLING = false, -- flag abilitazione forature in doppio
|
||||||
|
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
|
||||||
|
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||||
CLAMP5 = false -- presenza pinza speciale per pezzi piccoli
|
CLAMP5 = false -- presenza pinza speciale per pezzi piccoli
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +102,8 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.DOUBLE_HEAD_DOVETAIL then BeamData.DOUBLE_HEAD_DOVETAIL = ( Machine.Offsets.DOUBLE_HEAD_DOVETAIL == 1) end
|
if Machine.Offsets.DOUBLE_HEAD_DOVETAIL then BeamData.DOUBLE_HEAD_DOVETAIL = ( Machine.Offsets.DOUBLE_HEAD_DOVETAIL == 1) end
|
||||||
if Machine.Offsets.DOUBLE_HEAD_MORTISE then BeamData.DOUBLE_HEAD_MORTISE = ( Machine.Offsets.DOUBLE_HEAD_MORTISE == 1) end
|
if Machine.Offsets.DOUBLE_HEAD_MORTISE then BeamData.DOUBLE_HEAD_MORTISE = ( Machine.Offsets.DOUBLE_HEAD_MORTISE == 1) end
|
||||||
if Machine.Offsets.DOUBLE_HEAD_DRILLING then BeamData.DOUBLE_HEAD_DRILLING = ( Machine.Offsets.DOUBLE_HEAD_DRILLING == 1) end
|
if Machine.Offsets.DOUBLE_HEAD_DRILLING then BeamData.DOUBLE_HEAD_DRILLING = ( Machine.Offsets.DOUBLE_HEAD_DRILLING == 1) end
|
||||||
|
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
||||||
|
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
||||||
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
||||||
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
||||||
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
||||||
@@ -103,6 +111,13 @@ if EgtExistsFile( sData) then
|
|||||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||||
|
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||||
|
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||||
|
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
|
||||||
|
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||||
|
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||||
|
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
|
||||||
|
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||||
end
|
end
|
||||||
if Machine.Trave then
|
if Machine.Trave then
|
||||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||||
@@ -211,30 +226,49 @@ local function GetSetupInfo( sHead)
|
|||||||
local SetupInfo = {}
|
local SetupInfo = {}
|
||||||
|
|
||||||
-- dati comuni
|
-- dati comuni
|
||||||
SetupInfo.bIsCSymmetric = true
|
SetupInfo.bIsCSymmetrical = true
|
||||||
SetupInfo.dCAxisEncumbrance = 180
|
SetupInfo.dCAxisEncumbrance = 180
|
||||||
SetupInfo.bToolOnAggregate = false
|
SetupInfo.bToolOnAggregate = false
|
||||||
|
SetupInfo.Head = {}
|
||||||
|
|
||||||
-- testa 5 assi da sopra
|
-- testa 5 assi da sopra, dietro
|
||||||
if sHead == 'H11' or sHead == 'H21' then
|
if sHead == 'H11' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
SetupInfo.dMinNz = sin( -45)
|
||||||
-- lama su testa 5 assi da sopra
|
-- testa 5 assi da sopra, davanti
|
||||||
elseif sHead == 'H12' or sHead == 'H22' then
|
elseif sHead == 'H21' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||||
SetupInfo.dMaxNegativeAngle = sin( -45)
|
SetupInfo.dMinNz = sin( -45)
|
||||||
|
-- lama su testa 5 assi da sopra, dietro
|
||||||
|
elseif sHead == 'H12' then
|
||||||
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
|
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||||
|
SetupInfo.dMinNz = sin( -45)
|
||||||
|
-- se con aggregato si considera non simmetrico
|
||||||
|
SetupInfo.bIsCSymmetrical = false
|
||||||
|
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||||
|
SetupInfo.dMaxMatDecrease = 20
|
||||||
|
-- lama su testa 5 assi da sopra, davanti
|
||||||
|
elseif sHead == 'H22' then
|
||||||
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
|
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||||
|
SetupInfo.dMinNz = sin( -45)
|
||||||
|
-- se con aggregato si considera non simmetrico
|
||||||
|
SetupInfo.bIsCSymmetrical = false
|
||||||
|
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||||
|
SetupInfo.dMaxMatDecrease = 20
|
||||||
-- motosega 1
|
-- motosega 1
|
||||||
elseif sHead == 'H13' or sHead == 'H23' then
|
elseif sHead == 'H13' or sHead == 'H23' then
|
||||||
SetupInfo.bIsTopHead = true
|
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||||
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
SetupInfo.PreferredSide = {}
|
||||||
SetupInfo.dMaxNegativeAngle = 0
|
SetupInfo.dMinNz = 0
|
||||||
-- motosega 2
|
-- motosega 2
|
||||||
elseif sHead == 'H15' then
|
elseif sHead == 'H15' then
|
||||||
SetupInfo.bIsBottomHead = true
|
SetupInfo.HeadType = { bTop = false, bBottom = true}
|
||||||
SetupInfo.bIsTopHead = not SetupInfo.bIsBottomHead
|
SetupInfo.PreferredSide = {}
|
||||||
SetupInfo.dMaxPositiveAngle = 0
|
SetupInfo.dMaxNz = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
return SetupInfo
|
return SetupInfo
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
22=Long2CutSide
|
22=Long2CutSide
|
||||||
23=SmallToolContour
|
23=SmallToolContour
|
||||||
24=AntiSplintMillCut
|
24=AntiSplintMillCut
|
||||||
|
25=Prof_end
|
||||||
|
26=SideMillAsBlade
|
||||||
|
|
||||||
[Pocketing]
|
[Pocketing]
|
||||||
1=Pocket
|
1=Pocket
|
||||||
|
|||||||
+361
-139
@@ -27,7 +27,10 @@ function OnStart()
|
|||||||
--EMT.LINEINC = 1 -- incremento numerazione linee
|
--EMT.LINEINC = 1 -- incremento numerazione linee
|
||||||
--EMT.Ft = 'F' -- token per feed
|
--EMT.Ft = 'F' -- token per feed
|
||||||
--EMT.St = 'S' -- token per speed
|
--EMT.St = 'S' -- token per speed
|
||||||
EMT.FMAXPINZE = 102000 -- feed massima pinze
|
EMT.FMAXPINZE = EgtClamp( MaxFeedPinze or 102000, 20000, 102000) -- feed massima pinze
|
||||||
|
EMT.MAXACC = MaxAcc or ( EMT.FMAXPINZE / ( 60 * 0.3)) -- accelerazione massima pinze
|
||||||
|
EMT.MINACC = MinAcc or ( EMT.FMAXPINZE / ( 60 * 4)) -- accelerazione minima pinze
|
||||||
|
|
||||||
-- utensili default
|
-- utensili default
|
||||||
EMT.PREVTCPOS_H1 = DefTcPos1
|
EMT.PREVTCPOS_H1 = DefTcPos1
|
||||||
EMT.PREVTCPOS_H2 = DefTcPos2
|
EMT.PREVTCPOS_H2 = DefTcPos2
|
||||||
@@ -56,6 +59,7 @@ function OnProgramStart()
|
|||||||
end
|
end
|
||||||
EmtOutput( sPrefixCommentLine..'('.. CSP_INFO..')')
|
EmtOutput( sPrefixCommentLine..'('.. CSP_INFO..')')
|
||||||
EmtOutput( sPrefixCommentLine..'('.. MACHINE_INFO..')\n')
|
EmtOutput( sPrefixCommentLine..'('.. MACHINE_INFO..')\n')
|
||||||
|
EmtOutput( '(HEADER)')
|
||||||
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
||||||
if TEST_USE then
|
if TEST_USE then
|
||||||
EmitTestProgramStart()
|
EmitTestProgramStart()
|
||||||
@@ -103,6 +107,7 @@ function OnProgramEnd()
|
|||||||
EMT.SPECSPLIT = nil
|
EMT.SPECSPLIT = nil
|
||||||
EMT.RELOAD = nil
|
EMT.RELOAD = nil
|
||||||
EMT.RELOAD2 = nil
|
EMT.RELOAD2 = nil
|
||||||
|
EmtOutput( '(FOOTER)')
|
||||||
-- Se modalità test, termino il programma
|
-- Se modalità test, termino il programma
|
||||||
if TEST_USE then
|
if TEST_USE then
|
||||||
EmtOutput( 'M02')
|
EmtOutput( 'M02')
|
||||||
@@ -124,6 +129,11 @@ function OnToolData()
|
|||||||
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( EMT.TDIST or ChSawLen, 1)
|
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( EMT.TDIST or ChSawLen, 1)
|
||||||
sOut = sOut .. EgtIf( EMT.TCPOS == 'T111', ' G76H9998.2N411N414', ' G76H9998.2N511N514')
|
sOut = sOut .. EgtIf( EMT.TCPOS == 'T111', ' G76H9998.2N411N414', ' G76H9998.2N511N514')
|
||||||
EmtOutput( '('..sOut..')')
|
EmtOutput( '('..sOut..')')
|
||||||
|
-- emissione dati aggregato BlockHaus
|
||||||
|
elseif EMT.HEAD == 'H17' then
|
||||||
|
sPos = EgtIf( #EMT.TCPOS == 2, EMT.TCPOS:gsub( 'T', 'N30'), EMT.TCPOS:gsub( 'T', 'N3'))
|
||||||
|
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( ( AngTrBHOffs), 1)..' G76H9998.2'..sPos..sPos
|
||||||
|
EmtOutput( '('..sOut..')')
|
||||||
-- emissione dati utensile (esclusa sega a catena)
|
-- emissione dati utensile (esclusa sega a catena)
|
||||||
else
|
else
|
||||||
-- output info
|
-- output info
|
||||||
@@ -137,7 +147,6 @@ function OnToolData()
|
|||||||
if EMT.TCPOS == 'T201' then
|
if EMT.TCPOS == 'T201' then
|
||||||
sPos = 'N411'
|
sPos = 'N411'
|
||||||
else
|
else
|
||||||
|
|
||||||
sPos = EgtIf( #EMT.TCPOS == 2, EMT.TCPOS:gsub( 'T', 'N30'), EMT.TCPOS:gsub( 'T', 'N3'))
|
sPos = EgtIf( #EMT.TCPOS == 2, EMT.TCPOS:gsub( 'T', 'N30'), EMT.TCPOS:gsub( 'T', 'N3'))
|
||||||
end
|
end
|
||||||
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( dAddLen + EMT.TTOTLEN, 1)..' G76H9998.2'..sPos..sPos
|
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( dAddLen + EMT.TTOTLEN, 1)..' G76H9998.2'..sPos..sPos
|
||||||
@@ -307,6 +316,8 @@ function OnDispositionEnd()
|
|||||||
MyOutputNoNum( '(PART UNLOAD)')
|
MyOutputNoNum( '(PART UNLOAD)')
|
||||||
for i = 1, #EMT.MDCHAR do
|
for i = 1, #EMT.MDCHAR do
|
||||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||||
|
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
|
||||||
end
|
end
|
||||||
EmitMoveStartChars( 2)
|
EmitMoveStartChars( 2)
|
||||||
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
|
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
|
||||||
@@ -322,7 +333,8 @@ function OnDispositionEnd()
|
|||||||
end
|
end
|
||||||
elseif EMT.SPECUNLOADING then
|
elseif EMT.SPECUNLOADING then
|
||||||
EmtOutput( '(PART SPEC UNLOADING)')
|
EmtOutput( '(PART SPEC UNLOADING)')
|
||||||
EmitBeamHeadData( { T=EMT.L1, Pz5=2})
|
local dAbsHeadPos = EMT.L1pp or EMT.L1
|
||||||
|
EmitBeamHeadData( { T=dAbsHeadPos, Pz5=2})
|
||||||
EMT.SPECUNLOADING = nil
|
EMT.SPECUNLOADING = nil
|
||||||
EMT.W2DELTA = nil
|
EMT.W2DELTA = nil
|
||||||
-- emissione conclusione pezzo precedente
|
-- emissione conclusione pezzo precedente
|
||||||
@@ -424,6 +436,7 @@ function OnMachiningStart()
|
|||||||
EMT.MCHUSERNOTES = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
EMT.MCHUSERNOTES = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||||
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
||||||
EMT.MCHPRECUT = ( EMT.MCHUSERNOTES:find( 'Precut;', 1, true) ~= nil)
|
EMT.MCHPRECUT = ( EMT.MCHUSERNOTES:find( 'Precut;', 1, true) ~= nil)
|
||||||
|
EMT.MCHCUT = ( EMT.MCHUSERNOTES:find( 'Cut;', 1, true) ~= nil)
|
||||||
|
|
||||||
-- se sega a catena, aggiusto subito angolo scelto per asse virtuale A
|
-- se sega a catena, aggiusto subito angolo scelto per asse virtuale A
|
||||||
if EMT.HEAD == 'H13' or EMT.HEAD == 'H15' then
|
if EMT.HEAD == 'H13' or EMT.HEAD == 'H15' then
|
||||||
@@ -602,6 +615,11 @@ function OnMachiningEnd()
|
|||||||
EMT.PREVTOOL = EMT.TOOL
|
EMT.PREVTOOL = EMT.TOOL
|
||||||
EMT.PREVHEAD = EMT.HEAD
|
EMT.PREVHEAD = EMT.HEAD
|
||||||
EMT.PREVTCPOS = EMT.TCPOS
|
EMT.PREVTCPOS = EMT.TCPOS
|
||||||
|
|
||||||
|
-- se taglio finale, aggiorno lunghezza barra
|
||||||
|
if EMT.MCHCUT then
|
||||||
|
EMT.LB = EMT.LT + ( EMT.X_OFF or 0)
|
||||||
|
end
|
||||||
-- salvo anche utlimo utensile su testa
|
-- salvo anche utlimo utensile su testa
|
||||||
local nHSet = GetHeadSet( EMT.HEAD)
|
local nHSet = GetHeadSet( EMT.HEAD)
|
||||||
if nHSet == 1 then
|
if nHSet == 1 then
|
||||||
@@ -609,11 +627,15 @@ function OnMachiningEnd()
|
|||||||
EMT.PREVHEAD_H1 = EMT.HEAD
|
EMT.PREVHEAD_H1 = EMT.HEAD
|
||||||
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
||||||
EMT.PREVHOMEX_H1 = EgtGetAxisHomePos( 'X1')
|
EMT.PREVHOMEX_H1 = EgtGetAxisHomePos( 'X1')
|
||||||
|
EMT.PREVHOMEB_H1 = EgtGetAxisHomePos( 'B1')
|
||||||
|
EMT.PREVHOMEC_H1 = EgtGetAxisHomePos( 'C1')
|
||||||
elseif nHSet == 2 then
|
elseif nHSet == 2 then
|
||||||
EMT.PREVTOOL_H2 = EMT.TOOL
|
EMT.PREVTOOL_H2 = EMT.TOOL
|
||||||
EMT.PREVHEAD_H2 = EMT.HEAD
|
EMT.PREVHEAD_H2 = EMT.HEAD
|
||||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||||
EMT.PREVHOMEX_H2 = EgtGetAxisHomePos( 'X2')
|
EMT.PREVHOMEX_H2 = EgtGetAxisHomePos( 'X2')
|
||||||
|
EMT.PREVHOMEB_H2 = EgtGetAxisHomePos( 'B2')
|
||||||
|
EMT.PREVHOMEC_H2 = EgtGetAxisHomePos( 'C2')
|
||||||
end
|
end
|
||||||
|
|
||||||
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = true end
|
if EMT.DOU_TYPE and not EMT.ZMAX then EMT.DOU_TO_ZMAX = true end
|
||||||
@@ -658,9 +680,9 @@ function OnPathStart()
|
|||||||
if EMT.TOOL == EMT.PREVTOOL and not EMT.ZMAX then
|
if EMT.TOOL == EMT.PREVTOOL and not EMT.ZMAX then
|
||||||
EMT.L1pp = EMT.L1op
|
EMT.L1pp = EMT.L1op
|
||||||
EMT.L2pp = EMT.L2op
|
EMT.L2pp = EMT.L2op
|
||||||
EMT.L3pp = EMT.L3op
|
EMT.L3pp = EMT.L3op or EMT.L3pp
|
||||||
EMT.R1pp = EMT.R1p
|
EMT.R1pp = EMT.R1p or EMT.R1pp
|
||||||
EMT.R2pp = EMT.R2p
|
EMT.R2pp = EMT.R2p or EMT.R2pp
|
||||||
else
|
else
|
||||||
EMT.L1pp = nil
|
EMT.L1pp = nil
|
||||||
EMT.L2pp = nil
|
EMT.L2pp = nil
|
||||||
@@ -679,6 +701,10 @@ function OnPathEnd()
|
|||||||
if not EMT.ZMAX then
|
if not EMT.ZMAX then
|
||||||
EmitResetMachining()
|
EmitResetMachining()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- salvo dati precedenti
|
||||||
|
EMT.L2pp = EMT.L2o
|
||||||
|
|
||||||
EMT.AUXTYPE = nil
|
EMT.AUXTYPE = nil
|
||||||
EMT.UNL = nil
|
EMT.UNL = nil
|
||||||
EMT.PREROT = nil
|
EMT.PREROT = nil
|
||||||
@@ -798,6 +824,12 @@ function OnRapid()
|
|||||||
local PrevR1 = EMT.R1p or EMT.R1pp or HomeR1
|
local PrevR1 = EMT.R1p or EMT.R1pp or HomeR1
|
||||||
local PrevR2 = EMT.R2p or EMT.R2pp or HomeR2
|
local PrevR2 = EMT.R2p or EMT.R2pp or HomeR2
|
||||||
EmtResetPrev()
|
EmtResetPrev()
|
||||||
|
-- gestione speciale per pezzi molto alti. Se il movimento successivo è più alto del precedente, allora prendo il successivo
|
||||||
|
if EMT.L3s then
|
||||||
|
if EMT.L3s > EMT.L3 then
|
||||||
|
EMT.L3 = EMT.L3s
|
||||||
|
end
|
||||||
|
end
|
||||||
-- se prima lavorazione
|
-- se prima lavorazione
|
||||||
if EMT.LOAD then
|
if EMT.LOAD then
|
||||||
EMT.V2POS = ParkV2
|
EMT.V2POS = ParkV2
|
||||||
@@ -840,26 +872,50 @@ function OnRapid()
|
|||||||
local HomeB1 = EgtGetAxisHomePos( 'B1')
|
local HomeB1 = EgtGetAxisHomePos( 'B1')
|
||||||
local HomeC1 = EgtGetAxisHomePos( 'C1')
|
local HomeC1 = EgtGetAxisHomePos( 'C1')
|
||||||
local dTRad, dTLen = GetToolRadLen()
|
local dTRad, dTLen = GetToolRadLen()
|
||||||
local dXref = EMT.L2
|
|
||||||
if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then
|
|
||||||
dXref = -LimX1PlRotSaw
|
|
||||||
end
|
|
||||||
-- se fresa o lama
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MyMaxZ1, B=ParkB1, C=ParkC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
EmitMoveWaitHead( 1)
|
EmitMoveWaitHead( 1)
|
||||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||||
|
local bMoveZbeforeX = false
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
-- se carico destro e ho due teste, altrimenti in caso abbia una testa , tipo ONE, il controlo è invertito
|
-- se carico destro e ho due teste, altrimenti in caso abbia una testa , tipo ONE, il controlo è invertito
|
||||||
if EMT.HEAD == 'H12' and ( EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
if EMT.HEAD == 'H12' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
||||||
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
||||||
end
|
end
|
||||||
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
|
if EMT.L3 > dZref then
|
||||||
|
bMoveZbeforeX = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
|
||||||
|
local dMoveXtoFinalPosition = false
|
||||||
|
local dXref = EMT.L2
|
||||||
|
if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then
|
||||||
|
dXref = -LimX1PlRotSaw
|
||||||
|
EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed})
|
||||||
|
dZref = max( EMT.L3, dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2))
|
||||||
|
dMoveXtoFinalPosition = true
|
||||||
|
elseif not bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed})
|
||||||
|
else
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1PlRotSaw, Z=MyMaxZ1, B=ParkB1, C=ParkC1, S=Speed})
|
||||||
|
dZref = max( EMT.L3, dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2))
|
||||||
|
dMoveXtoFinalPosition = true
|
||||||
|
end
|
||||||
|
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
||||||
EmitMoveDataHead( 1, { X=dXref, Z=MyMaxZ1, B=0, C=ParkC1, S=Speed})
|
EmitMoveDataHead( 1, { B=0, S=Speed})
|
||||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
if dMoveXtoFinalPosition then
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, S=Speed})
|
||||||
|
end
|
||||||
-- caso standard
|
-- caso standard
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=dXref, Z=dZref, B=ParkB1, C=ParkC1, S=Speed})
|
EmitMoveDataHead( 1, { X=dXref, Z=dZref, B=ParkB1, C=ParkC1, S=Speed})
|
||||||
@@ -907,31 +963,45 @@ function OnRapid()
|
|||||||
-- allontanamento o eventuale preselezione successiva testa 1
|
-- allontanamento o eventuale preselezione successiva testa 1
|
||||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||||
-- movimento testa
|
-- movimento testa
|
||||||
local dSafeZ1 = EgtGetAxisHomePos( 'Z21')
|
local dSafeZ1 = EgtGetAxisHomePos( 'Z1')
|
||||||
local MyMaxZ1 = EgtGetAxisMax( 'Z1')
|
local MyMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||||
local HomeC1 = EgtGetAxisHomePos( 'C1')
|
local HomeC1 = EgtGetAxisHomePos( 'C1')
|
||||||
local HomeB1 = EgtGetAxisHomePos( 'B1')
|
local HomeB1 = EgtGetAxisHomePos( 'B1')
|
||||||
local dTRad, dTLen = GetToolRadLen()
|
local dTRad, dTLen = GetToolRadLen()
|
||||||
-- se fresa o lama
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=MyMaxZ1, B=HomeB1, C=HomeC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 1, { X=-ParkX2, Z=MyMaxZ1, B=HomeB1, C=HomeC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
EmitMoveWaitHead( 1)
|
EmitMoveWaitHead( 1)
|
||||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||||
|
local bMoveZbeforeX = false
|
||||||
|
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
if EMT.HEAD == 'H12' and ( EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 > 91) then
|
if EMT.HEAD == 'H12' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 > 91) then
|
||||||
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
||||||
end
|
end
|
||||||
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
|
if EMT.L3 > dZref then
|
||||||
|
bMoveZbeforeX = true
|
||||||
|
end
|
||||||
|
if not bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=MyMaxZ1, B=HomeB1, C=HomeC1, S=Speed})
|
||||||
|
else
|
||||||
|
EmitMoveDataHead( 1, { X=-LimX1RotSawTC2, Z=MyMaxZ1, B=HomeB1, C=HomeC1, S=Speed})
|
||||||
|
end
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=MyMaxZ1, B=0, C=HomeC1, S=Speed})
|
EmitMoveDataHead( 1, { B=0, S=Speed})
|
||||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
-- altrimenti caso standard
|
-- altrimenti caso standard
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=dZref, B=HomeB1, C=HomeC1, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, S=Speed})
|
||||||
EmitMoveDataHead( 1, { B=EMT.R2, S=Speed})
|
|
||||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { B=EMT.R2, S=Speed})
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
@@ -968,24 +1038,44 @@ function OnRapid()
|
|||||||
local dTRad, dTLen = GetToolRadLen()
|
local dTRad, dTLen = GetToolRadLen()
|
||||||
-- se fresa o lama
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=MyMaxZ2, B=HomeB2, C=HomeC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MyMaxZ2, B=HomeB2, C=HomeC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveStartHead( 2)
|
EmitMoveStartHead( 2)
|
||||||
EmitMoveWaitHead( 2)
|
EmitMoveWaitHead( 2)
|
||||||
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
EmitMoveWaitChars( EgtIf( bOnlyCharY, 1, 3))
|
||||||
|
local bMoveZbeforeX = false
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
if EMT.HEAD == 'H22' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX2RotSaw, EMT.L2 > -LimX2RotSaw) or EMT.R2 > 91) then
|
if EMT.HEAD == 'H22' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 > 91) then
|
||||||
dZref = min( dSafeZ2 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ2)
|
dZref = min( dSafeZ2 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ2)
|
||||||
end
|
end
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
|
||||||
if EMT.HEAD == 'H22' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC2 - EMT.R1) > 30.1 or abs( HomeB2 - EMT.R2) > 30.1) then
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=MyMaxZ2, B=0, C=HomeC2, S=Speed})
|
if EMT.L3 > dZref then
|
||||||
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
bMoveZbeforeX = true
|
||||||
EmitMoveDataHead( 2, { Z=dZref, B=EMT.R2, S=Speed})
|
end
|
||||||
-- altrimenti caso standard
|
if not bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 2, { X=EMT.L2, Z=MyMaxZ2, B=HomeB2, C=HomeC2, S=Speed})
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=dZref, B=HomeB2, C=HomeC2, S=Speed})
|
EmitMoveDataHead( 2, { X=-LimX2RotSaw, Z=MyMaxZ2, B=HomeB2, C=HomeC2, S=Speed})
|
||||||
EmitMoveDataHead( 2, { B=EMT.R2, S=Speed})
|
end
|
||||||
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
|
||||||
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
|
if abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC2 - EMT.R1) > 30.1 or abs( HomeB2 - EMT.R2) > 30.1) then
|
||||||
|
if EMT.HEAD == 'H22' then
|
||||||
|
EmitMoveDataHead( 2, { B=0, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { Z=dZref, B=EMT.R2, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 2, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
-- altrimenti caso standard
|
||||||
|
else
|
||||||
|
EmitMoveDataHead( 2, { Z=dZref, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 2, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
@@ -1059,17 +1149,18 @@ function OnRapid()
|
|||||||
else
|
else
|
||||||
--EmtOutput( string.format( 'V1Pos=%.3f V2Pos=%.3f', EMT.V1POS, EMT.V2POS))
|
--EmtOutput( string.format( 'V1Pos=%.3f V2Pos=%.3f', EMT.V1POS, EMT.V2POS))
|
||||||
local bToPresel = true
|
local bToPresel = true
|
||||||
if not EMT.RELOAD and not EMT.ZMAX and #EMT.AUXCMD > 0 and EMT.TO_ZMAX then
|
if not EMT.ZMAX and #EMT.AUXCMD > 0 and EMT.TO_ZMAX then
|
||||||
-- allontanamento o eventuale preselezione successiva testa differente
|
-- allontanamento o eventuale preselezione successiva testa differente
|
||||||
if not EMT.DOU_TYPE then
|
if not EMT.DOU_TYPE then
|
||||||
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
PreselectNextDiffHead( EMT.MCHID, EMT.HEAD)
|
||||||
end
|
end
|
||||||
bToPresel = false
|
bToPresel = false
|
||||||
-- risalita a Zmax
|
-- risalita a Zmax
|
||||||
EmitZmax( false, false, EMT.TO_XHOME, PrevR1, PrevR2)
|
EmitZmax( false, false, EMT.TO_XHOME, PrevR1, PrevR2, nil, true)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
EMT.TO_ZMAX = nil
|
EMT.TO_ZMAX = nil
|
||||||
EMT.TO_XHOME = nil
|
EMT.TO_XHOME = nil
|
||||||
|
EMT.L1pp = nil
|
||||||
EMT.L3pp = nil
|
EMT.L3pp = nil
|
||||||
PrevR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
PrevR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
||||||
PrevR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
PrevR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
||||||
@@ -1081,43 +1172,38 @@ function OnRapid()
|
|||||||
EMT.AUXCMD = {}
|
EMT.AUXCMD = {}
|
||||||
-- se necessario posizionamento in home (sono sicuramente già a Zmax)
|
-- se necessario posizionamento in home (sono sicuramente già a Zmax)
|
||||||
if EMT.TO_XHOME then
|
if EMT.TO_XHOME then
|
||||||
local nHSet = GetHeadSet( EMT.HEAD)
|
-- se devo andare in home, ma lo sono già, non faccio nulla
|
||||||
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
if not EMT.XHOME then
|
||||||
|
local nHSet = GetHeadSet( EMT.HEAD)
|
||||||
-- se successivo non è sega a catena e la testa è la stessa, vado in home con utensile succesivo
|
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
||||||
if not HeadIsChainSaw( EMT.HEAD) and nHSet == nPrevHSet then
|
-- vado in parcheggio sempre con utensile precedente
|
||||||
if nHSet == 1 then
|
|
||||||
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
|
||||||
EmitMoveDataHead( 1, { X=-HomeX1, Z=MaxZ1, B=ParkB1, C=ParkC1})
|
|
||||||
EmitMoveStartHead( 1, 'EA1')
|
|
||||||
else
|
|
||||||
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
|
||||||
EmitMoveDataHead( 2, { X=-HomeX2, Z=MaxZ2, B=ParkB2, C=ParkC2})
|
|
||||||
EmitMoveStartHead( 2, 'EA1')
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
||||||
if nPrevHSet == 1 then
|
if nPrevHSet == 1 then
|
||||||
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
||||||
EmitMoveDataHead( 1, { X=-EMT.PREVHOMEX_H1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
EmitMoveDataHead( 1, { X=-EMT.PREVHOMEX_H1, Z=MaxZ1, B=EMT.PREVHOMEB_H1, C=EMT.PREVHOMEC_H1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||||
EmitMoveStartHead( 1, 'EA1')
|
EmitMoveStartHead( 1, 'EA1')
|
||||||
|
EmitMoveWaitHead( 1)
|
||||||
else
|
else
|
||||||
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
local HomeX2 = EgtGetAxisHomePos( 'X2')
|
||||||
EmitMoveDataHead( 2, { X=-EMT.PREVHOMEX_H2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
EmitMoveDataHead( 2, { X=-EMT.PREVHOMEX_H2, Z=MaxZ2, B=EMT.PREVHOMEB_H2, C=EMT.PREVHOMEC_H2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
||||||
EmitMoveStartHead( 2, 'EA1')
|
EmitMoveStartHead( 2, 'EA1')
|
||||||
|
EmitMoveWaitHead( 2)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC1' or GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC2' then
|
if GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC1' or GetHeadTCSet( EMT.PREVHEAD, EMT.PREVTCPOS) == 'Head1_TC2' then
|
||||||
EmitMoveDataHead( 1, { X=-ParkCSawX1S, Z=MaxZ1, B=HomeR2, C=HomeR1, TPos='50'})
|
EmitMoveDataHead( 1, { X=-ParkCSawX1S, Z=MaxZ1, B=HomeR2, C=HomeR1, TPos='50'})
|
||||||
EmitMoveStartHead( 1, 'EA1')
|
EmitMoveStartHead( 1, 'EA1')
|
||||||
|
--EmitMoveWaitHead( 1)
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 2, { X=-ParkCSawX2S, Z=MaxZ2, B=HomeR2, C=HomeR1, TPos='50'})
|
EmitMoveDataHead( 2, { X=-ParkCSawX2S, Z=MaxZ2, B=HomeR2, C=HomeR1, TPos='50'})
|
||||||
EmitMoveStartHead( 2, 'EA1')
|
EmitMoveStartHead( 2, 'EA1')
|
||||||
|
--EmitMoveWaitHead( 2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
EMT.TO_XHOME = nil
|
EMT.TO_XHOME = nil
|
||||||
|
EMT.L1pp = nil
|
||||||
EMT.L3pp = nil
|
EMT.L3pp = nil
|
||||||
PrevR1 = HomeR1
|
PrevR1 = HomeR1
|
||||||
PrevR2 = HomeR2
|
PrevR2 = HomeR2
|
||||||
@@ -1139,7 +1225,7 @@ function OnRapid()
|
|||||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||||
end
|
end
|
||||||
if #EMT.MDCHAR > 0 then
|
if #EMT.MDCHAR > 0 then
|
||||||
local nMoveType = EgtIf( EMT.RELOAD, 1, 3)
|
local nMoveType = EgtIf( EMT.POSTROT or EMT.RELOAD, 1, 3)
|
||||||
EmitMoveStartChars( nMoveType)
|
EmitMoveStartChars( nMoveType)
|
||||||
EmitMoveWaitChars( nMoveType)
|
EmitMoveWaitChars( nMoveType)
|
||||||
end
|
end
|
||||||
@@ -1162,23 +1248,48 @@ function OnRapid()
|
|||||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||||
-- se fresa o lama
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
|
local CurrX1 = EMT.L1pp or ( -LimX1PlRotSaw)
|
||||||
local CurrZ1 = EMT.L3pp or MyMaxZ1
|
local CurrZ1 = EMT.L3pp or MyMaxZ1
|
||||||
local CurrB1 = PrevR2
|
local CurrB1 = PrevR2
|
||||||
local CurrC1 = PrevR1
|
local CurrC1 = PrevR1
|
||||||
|
|
||||||
|
local bMoveZbeforeX = false
|
||||||
|
local dZref = EMT.L3
|
||||||
|
if EMT.HEAD == 'H12' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
||||||
|
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
||||||
|
end
|
||||||
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
|
if EMT.L3 > dZref then
|
||||||
|
bMoveZbeforeX = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
|
||||||
|
local dMoveXtoFinalPosition = false
|
||||||
local dXref = EMT.L2
|
local dXref = EMT.L2
|
||||||
if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then
|
if EMT.HEAD == 'H12' and EMT.L2 < -LimX1PlRotSaw then
|
||||||
dXref = -LimX1PlRotSaw
|
dXref = -LimX1PlRotSaw
|
||||||
|
EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
|
dZref = max( EMT.L3, dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2))
|
||||||
|
dMoveXtoFinalPosition = true
|
||||||
|
elseif not bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
|
else
|
||||||
|
EmitMoveDataHead( 1, { X=CurrX1, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
|
dZref = max( EMT.L3, dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2))
|
||||||
|
dMoveXtoFinalPosition = true
|
||||||
end
|
end
|
||||||
EmitMoveDataHead( 1, { X=dXref, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
|
||||||
local dZref = EMT.L3
|
|
||||||
if EMT.HEAD == 'H12' and ( EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
|
||||||
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
|
||||||
end
|
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
||||||
EmitMoveDataHead( 1, { B=0, S=Speed})
|
EmitMoveDataHead( 1, { B=0, S=Speed})
|
||||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
if dMoveXtoFinalPosition then
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, S=Speed})
|
||||||
|
end
|
||||||
-- altrimenti caso standard
|
-- altrimenti caso standard
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { Z=dZref, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, S=Speed})
|
||||||
@@ -1236,24 +1347,40 @@ function OnRapid()
|
|||||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||||
-- se fresa o lama
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
|
local CurrX1 = EMT.L1pp or ( -LimX1PlRotSaw)
|
||||||
local CurrZ1 = EMT.L3pp or MyMaxZ1
|
local CurrZ1 = EMT.L3pp or MyMaxZ1
|
||||||
local CurrB1 = PrevR2
|
local CurrB1 = PrevR2
|
||||||
local CurrC1 = PrevR1
|
local CurrC1 = PrevR1
|
||||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
|
||||||
|
local bMoveZbeforeX = false
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
if EMT.HEAD == 'H12' and ( EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 > 91) then
|
if EMT.HEAD == 'H12' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX1RotSaw, EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
||||||
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
dZref = min( dSafeZ1 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ1)
|
||||||
end
|
end
|
||||||
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
|
if EMT.L3 > dZref then
|
||||||
|
bMoveZbeforeX = true
|
||||||
|
end
|
||||||
|
|
||||||
|
if not bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { X=EMT.L2, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
|
else
|
||||||
|
EmitMoveDataHead( 1, { X=CurrX1, Z=CurrZ1, B=CurrB1, C=CurrC1, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
|
end
|
||||||
|
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
if EMT.HEAD == 'H12' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC1 - EMT.R1) > 30.1 or abs( HomeB1 - EMT.R2) > 30.1) then
|
||||||
EmitMoveDataHead( 1, { B=0, S=Speed})
|
EmitMoveDataHead( 1, { B=0, S=Speed})
|
||||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||||
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, B=EMT.R2, S=Speed})
|
||||||
-- altrimenti caso standard
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 1, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
-- altrimenti caso standard
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 1, { Z=dZref, S=Speed})
|
EmitMoveDataHead( 1, { Z=dZref, S=Speed})
|
||||||
EmitMoveDataHead( 1, { B=EMT.R2, S=Speed})
|
|
||||||
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
EmitMoveDataHead( 1, { C=EMT.R1, S=Speed})
|
||||||
|
EmitMoveDataHead( 1, { B=EMT.R2, S=Speed})
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
@@ -1284,24 +1411,45 @@ function OnRapid()
|
|||||||
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
if EMT.ZMAX or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||||
-- se fresa o lama
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
|
local CurrX2 = EMT.L1pp or ( -LimX2RotSaw)
|
||||||
local CurrZ2 = EMT.L3pp or MyMaxZ2
|
local CurrZ2 = EMT.L3pp or MyMaxZ2
|
||||||
local CurrB2 = PrevR2
|
local CurrB2 = PrevR2
|
||||||
local CurrC2 = PrevR1
|
local CurrC2 = PrevR1
|
||||||
EmitMoveDataHead( 2, { X=EMT.L2, Z=CurrZ2, B=CurrB2, C=CurrC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
|
||||||
|
local bMoveZbeforeX = false
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
if EMT.HEAD == 'H22' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX2RotSaw, EMT.L2 > -LimX2RotSaw) or EMT.R2 > 91) then
|
if EMT.HEAD == 'H22' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 > -LimX2RotSaw, EMT.L2 > -LimX2RotSaw) or EMT.R2 < -91) then
|
||||||
dZref = min( dSafeZ2 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ2)
|
dZref = min( dSafeZ2 + GetZExtra( EMT.HEAD, EMT.R2) - 100, MyMaxZ2)
|
||||||
end
|
end
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
if EMT.HEAD == 'H22' and abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC2 - EMT.R1) > 30.1 or abs( HomeB2 - EMT.R2) > 30.1) then
|
if EMT.L3 > dZref then
|
||||||
EmitMoveDataHead( 2, { B=0, S=Speed})
|
bMoveZbeforeX = true
|
||||||
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
end
|
||||||
EmitMoveDataHead( 2, { Z=dZref, B=EMT.R2, S=Speed})
|
|
||||||
-- altrimenti caso standard
|
if not bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 2, { X=EMT.L2, Z=CurrZ2, B=CurrB2, C=CurrC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
else
|
else
|
||||||
EmitMoveDataHead( 2, { Z=dZref, S=Speed})
|
EmitMoveDataHead( 2, { X=CurrX2, Z=CurrZ2, B=CurrB2, C=CurrC2, TRad=dTRad, TLen=dTLen, S=Speed})
|
||||||
EmitMoveDataHead( 2, { B=EMT.R2, S=Speed})
|
end
|
||||||
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
|
||||||
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
|
if abs( PrevR1 - EMT.R1) > 1 and ( abs( HomeC2 - EMT.R1) > 30.1 or abs( HomeB2 - EMT.R2) > 30.1) then
|
||||||
|
if EMT.HEAD == 'H22' then
|
||||||
|
EmitMoveDataHead( 2, { B=0, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { Z=dZref, B=EMT.R2, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 2, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
-- altrimenti caso standard
|
||||||
|
else
|
||||||
|
EmitMoveDataHead( 2, { Z=dZref, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { B=EMT.R2, S=Speed})
|
||||||
|
EmitMoveDataHead( 2, { C=EMT.R1, S=Speed})
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
EmitMoveDataHead( 2, { Z=EMT.L3, S=Speed})
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
@@ -1377,6 +1525,7 @@ function OnRapid()
|
|||||||
end
|
end
|
||||||
EMT.REFLOC = 0
|
EMT.REFLOC = 0
|
||||||
EMT.MCHFIRST = false
|
EMT.MCHFIRST = false
|
||||||
|
EMT.PLANEACTIVE = true
|
||||||
EMT.ZMAX = false
|
EMT.ZMAX = false
|
||||||
-- se standard
|
-- se standard
|
||||||
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
||||||
@@ -1406,6 +1555,7 @@ function OnRapid()
|
|||||||
EmtOutput( 'M175')
|
EmtOutput( 'M175')
|
||||||
end
|
end
|
||||||
EMT.MCHFIRST = false
|
EMT.MCHFIRST = false
|
||||||
|
EMT.PLANEACTIVE = true
|
||||||
end
|
end
|
||||||
-- se necessario, impostazione riferimento locale
|
-- se necessario, impostazione riferimento locale
|
||||||
if EMT.REFLOC == 0 then
|
if EMT.REFLOC == 0 then
|
||||||
@@ -1462,7 +1612,7 @@ function OnRapid()
|
|||||||
MyAdjustLinearAxes()
|
MyAdjustLinearAxes()
|
||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
||||||
local sNextTool = GetNextTool( EMT.MCHID)
|
local sNextTool = GetNextTool( EMT.MCHID, true)
|
||||||
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
||||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
||||||
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
||||||
@@ -1510,6 +1660,7 @@ function OnLinear()
|
|||||||
EMT.L3p = nil
|
EMT.L3p = nil
|
||||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||||
|
EMT.PLANEACTIVE = true
|
||||||
-- emissione movimento
|
-- emissione movimento
|
||||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||||
@@ -1570,6 +1721,45 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnArc()
|
function OnArc()
|
||||||
|
-- se necessario, impostazione riferimento locale
|
||||||
|
if EMT.REFLOC == 0 then
|
||||||
|
-- gruppo della testa
|
||||||
|
local nHSet = GetHeadSet( EMT.HEAD)
|
||||||
|
-- calcolo per piano generico
|
||||||
|
CalcInterpPlane()
|
||||||
|
EMT.REFLOC = 1
|
||||||
|
-- salvo posizione attuale
|
||||||
|
local OldL1 = EMT.L1
|
||||||
|
local OldL2 = EMT.L2
|
||||||
|
local OldL3 = EMT.L3
|
||||||
|
-- imposto posizione precedente (non contiene l'offset in X per sovramateriale di testa EMT.X_OFF)
|
||||||
|
EMT.L1 = EMT.L1o
|
||||||
|
EMT.L2 = EMT.L2o
|
||||||
|
EMT.L3 = EMT.L3o
|
||||||
|
-- trasformo i punti nel piano
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EMT.L1p = nil
|
||||||
|
EMT.L2p = nil
|
||||||
|
EMT.L3p = nil
|
||||||
|
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||||
|
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||||
|
EMT.PLANEACTIVE = true
|
||||||
|
-- emissione movimento
|
||||||
|
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||||
|
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||||
|
EmtOutput( sOut)
|
||||||
|
-- aggiorno precedenti
|
||||||
|
local nOriginalMove = EMT.MOVE
|
||||||
|
EMT.MOVE = 0
|
||||||
|
EmtUpdatePrev()
|
||||||
|
EMT.MOVE = nOriginalMove
|
||||||
|
-- ripristino posizione attuale
|
||||||
|
EMT.L1 = OldL1
|
||||||
|
EMT.L2 = OldL2
|
||||||
|
EMT.L3 = OldL3
|
||||||
|
end
|
||||||
|
|
||||||
-- non modale su archi
|
-- non modale su archi
|
||||||
EmtResetPrevLinear()
|
EmtResetPrevLinear()
|
||||||
-- aggiustamento valori
|
-- aggiustamento valori
|
||||||
@@ -1602,28 +1792,6 @@ function OnArc()
|
|||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
function CalcDinamicaPinze( dH, dS, dL)
|
|
||||||
local MinTempoAcc = 0.3 -- [s]
|
|
||||||
local MaxTempoAcc = 4.0 -- [s]
|
|
||||||
local KgMtCubo= WoodDensity or 550 -- densità legno [Kg / metro cubo]
|
|
||||||
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
|
||||||
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
|
||||||
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
|
||||||
local TempoAcc = ( ( Massa * FMaxPinze) / ( 60 * ForzaAttrito) / 1000)
|
|
||||||
if ( TempoAcc < MinTempoAcc) then TempoAcc = MinTempoAcc end
|
|
||||||
if ( TempoAcc > MaxTempoAcc) then TempoAcc = MaxTempoAcc end
|
|
||||||
local AccMaxPinze = FMaxPinze / ( 60 * MinTempoAcc)
|
|
||||||
local AccPinze = FMaxPinze / ( 60 * TempoAcc)
|
|
||||||
local RidFeed = 100 / Massa * 100
|
|
||||||
if RidFeed > 100 then
|
|
||||||
RidFeed = 100
|
|
||||||
elseif RidFeed < 10 then
|
|
||||||
RidFeed = 10
|
|
||||||
end
|
|
||||||
return AccPinze, AccMaxPinze, RidFeed
|
|
||||||
end
|
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcCharStatusN( sCmd)
|
function CalcCharStatusN( sCmd)
|
||||||
-- aperto
|
-- aperto
|
||||||
@@ -1800,6 +1968,9 @@ function PrepareMoveChar( sCmd, nInd)
|
|||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
EMT.Y1POS = MoveY1 or EMT.Y1POS
|
EMT.Y1POS = MoveY1 or EMT.Y1POS
|
||||||
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
||||||
|
if EMT.V1POS < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
|
||||||
|
EMT.TO_XHOME = true
|
||||||
|
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, BeamVise=EMT.BV}
|
||||||
@@ -1827,6 +1998,9 @@ function PrepareMoveChar( sCmd, nInd)
|
|||||||
end
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
||||||
|
if EMT.V1POS < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
|
||||||
|
EMT.TO_XHOME = true
|
||||||
|
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, BeamVise=EMT.BV}
|
||||||
local MoveY1 = GetCmdAxMove( Cmd, 'Y1')
|
local MoveY1 = GetCmdAxMove( Cmd, 'Y1')
|
||||||
@@ -1853,6 +2027,9 @@ function PrepareMoveChar( sCmd, nInd)
|
|||||||
end
|
end
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
EMT.TPOS = GetCmdAxMove( Cmd, 'T') or EMT.TPOS
|
||||||
|
if EMT.V1POS < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
|
||||||
|
EMT.TO_XHOME = true
|
||||||
|
end
|
||||||
elseif Cmd[1] == '4' then
|
elseif Cmd[1] == '4' then
|
||||||
-- richiesta movimento a ZMAX già gestita
|
-- richiesta movimento a ZMAX già gestita
|
||||||
if Cmd[2] == '1' then
|
if Cmd[2] == '1' then
|
||||||
@@ -2087,10 +2264,13 @@ function PreparePreRotation( sCmd, nInd)
|
|||||||
if Cmd[2] ~= 'Z' then
|
if Cmd[2] ~= 'Z' then
|
||||||
local MDChar
|
local MDChar
|
||||||
if EMT.PREROT then
|
if EMT.PREROT then
|
||||||
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=86, FinStatY1=87, IniStatY2=1, BeamVise=0}
|
-- parcheggio per sicurezza morsa e paratia lato scarico
|
||||||
elseif EMT.SPECSPLIT then
|
MDChar = { Y2=ParkY2, V2=ParkV2, IniStatY2=1, FinStatY2=1, BeamVise=0}
|
||||||
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), IniStatY1=86, FinStatY1=87, BeamVise=0}
|
||||||
|
elseif EMT.SPECSPLIT or EMT.SPLITROT then
|
||||||
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), V1=ParkV1, IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=3, BeamVise=EMT.BV}
|
MDChar = { [Cmd[2]]=tonumber(Cmd[3]), V1=ParkV1, IniStatY1=EMT.ISY1, FinStatY1=EMT.FSY1, IniStatY2=EMT.ISY2, FinStatY2=EMT.FSY2, IniStatV1=3, BeamVise=EMT.BV}
|
||||||
EMT.V1POS = MDChar.V1
|
EMT.V1NEXTPOS = MDChar.V1
|
||||||
else
|
else
|
||||||
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}
|
||||||
end
|
end
|
||||||
@@ -2178,18 +2358,17 @@ function PreparePostRotation( sCmd, nInd)
|
|||||||
-- se dichiarazione inizio riposizionamento carrelli
|
-- se dichiarazione inizio riposizionamento carrelli
|
||||||
if Cmd[2] == 'CARR_MOVE' then
|
if Cmd[2] == 'CARR_MOVE' then
|
||||||
EMT.POSTROT = false
|
EMT.POSTROT = false
|
||||||
table.insert( EMT.MDCHAR, { Start=3})
|
table.insert( EMT.MDCHAR, { Start=1})
|
||||||
table.insert( EMT.MDCHAR, { Wait=3})
|
table.insert( EMT.MDCHAR, { Wait=1})
|
||||||
end
|
end
|
||||||
elseif Cmd[1] == '1' then
|
elseif Cmd[1] == '1' then
|
||||||
-- non interessa
|
-- non interessa
|
||||||
elseif Cmd[1] == '2' then
|
elseif Cmd[1] == '2' then
|
||||||
if Cmd[2] == 'Y1' then
|
if Cmd[2] == 'Y1' then
|
||||||
-- tolgo eventuale sovramateriale presente sul pezzo in posizione iniziale (la misura laser è ora col finito)
|
-- tolgo eventuale sovramateriale presente sul pezzo in posizione iniziale (la misura laser è ora col finito)
|
||||||
local MDChar = { Y1=tonumber(Cmd[3])-EMT.HOVM, IniStatY1=75, V1=ParkV1, V2=ParkV2, FinStatY1=-1, FinStatV1=-1, BeamVise=0, Aux=' (E80058=0)', MovType=1}
|
local MDChar = { Y1=tonumber(Cmd[3])-EMT.HOVM, IniStatY1=75, V1=ParkV1, FinStatY1=-1, BeamVise=0, Aux=' (E80058=0)', MovType=1}
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
EMT.V1POS = ParkV1
|
EMT.V1POS = ParkV1
|
||||||
EMT.V2POS = ParkV2
|
|
||||||
elseif Cmd[2] == 'T' then
|
elseif Cmd[2] == 'T' then
|
||||||
local MDChar = { Y1=tonumber(Cmd[3]), IniStatY1=76, FinStatY1=EMT.FSY1, BeamVise=0, MovType=1}
|
local MDChar = { Y1=tonumber(Cmd[3]), IniStatY1=76, FinStatY1=EMT.FSY1, BeamVise=0, MovType=1}
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
@@ -2217,7 +2396,7 @@ function PreparePostRotation( sCmd, nInd)
|
|||||||
EMT.Y2DELTA = nY2Delta
|
EMT.Y2DELTA = nY2Delta
|
||||||
end
|
end
|
||||||
if not FindReadHeadWithLaser( EMT.MDCHAR) then
|
if not FindReadHeadWithLaser( EMT.MDCHAR) then
|
||||||
local MDChar = { Y1=LoadT, IniStatY1=76, FinStatY1=EMT.FSY1, BeamVise=0, MovType=3}
|
local MDChar = { Y1=LoadT, IniStatY1=76, FinStatY1=EMT.FSY1, BeamVise=0, MovType=1}
|
||||||
table.insert( EMT.MDCHAR, MDChar)
|
table.insert( EMT.MDCHAR, MDChar)
|
||||||
EMT.TPOS = LoadT
|
EMT.TPOS = LoadT
|
||||||
end
|
end
|
||||||
@@ -2229,6 +2408,9 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetV1ToCloseNum( UseCurrV1)
|
function GetV1ToCloseNum( UseCurrV1)
|
||||||
|
if EMT.MCHPRECUT or EMT.MCHCUT then
|
||||||
|
return false
|
||||||
|
end
|
||||||
--EmtOutput( string.format( 'L1m=%.3f L1M=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1]))
|
--EmtOutput( string.format( 'L1m=%.3f L1M=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1]))
|
||||||
--EmtOutput( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT))
|
--EmtOutput( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT))
|
||||||
local dV1Pos
|
local dV1Pos
|
||||||
@@ -2321,10 +2503,15 @@ function MyAdjustLinearAxes()
|
|||||||
local Len = ( EMT.TDIST or ChSawLen) + Mill2Offs
|
local Len = ( EMT.TDIST or ChSawLen) + Mill2Offs
|
||||||
local LenRef = Mill2Offs
|
local LenRef = Mill2Offs
|
||||||
vtE = Vector3d( EMT.ADIR) * Len - Z_AX() * LenRef
|
vtE = Vector3d( EMT.ADIR) * Len - Z_AX() * LenRef
|
||||||
|
elseif EMT.HEAD == 'H17' then
|
||||||
|
local LenAux = AngTrBHOffs + MillOffs
|
||||||
|
local LenRef = MillOffs
|
||||||
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1211, 'Head not defined ' .. ( EMT.HEAD or ''))
|
EmtSetLastError( 1211, 'Head not defined ' .. ( EMT.HEAD or ''))
|
||||||
end
|
end
|
||||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H15' then
|
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H15' or sHead == 'H17' then
|
||||||
EMT.L1 = EMT.L1 - vtE:getX()
|
EMT.L1 = EMT.L1 - vtE:getX()
|
||||||
EMT.L2 = EMT.L2 - DeltaTabY - vtE:getY()
|
EMT.L2 = EMT.L2 - DeltaTabY - vtE:getY()
|
||||||
EMT.L3 = EMT.L3 - DeltaTabZ - vtE:getZ()
|
EMT.L3 = EMT.L3 - DeltaTabZ - vtE:getZ()
|
||||||
@@ -2437,6 +2624,9 @@ function GetToolRadLen()
|
|||||||
-- se sega a catena
|
-- se sega a catena
|
||||||
elseif HeadIsChainSaw( EMT.HEAD) then
|
elseif HeadIsChainSaw( EMT.HEAD) then
|
||||||
return EMT.TLEN, ( EMT.TDIST or ChSawLen)
|
return EMT.TLEN, ( EMT.TDIST or ChSawLen)
|
||||||
|
-- se aggregato BlockHaus
|
||||||
|
elseif EMT.HEAD == 'H17' then
|
||||||
|
return EMT.TDIAM / 2, AngTrBHOffs
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -2532,6 +2722,9 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
end
|
end
|
||||||
-- gruppo della testa
|
-- gruppo della testa
|
||||||
local nHSet = GetHeadSet( EMT.HEAD)
|
local nHSet = GetHeadSet( EMT.HEAD)
|
||||||
|
local dXPos = EgtIf( bUsePrevDelta, EMT.L2pp or EMT.L2o, EMT.L2o)
|
||||||
|
-- reset stato di testa in home
|
||||||
|
EMT.XHOME = nil
|
||||||
-- se testa 1
|
-- se testa 1
|
||||||
if nHSet == 1 then
|
if nHSet == 1 then
|
||||||
-- posizioni sicure
|
-- posizioni sicure
|
||||||
@@ -2550,13 +2743,13 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
-- eseguo la salita a Z1max (oriento solo se assi rotanti non già a posto)
|
-- eseguo la salita a Z1max (oriento solo se assi rotanti non già a posto)
|
||||||
if abs( dSafeC1 - PrevR1) > 0.1 or abs( dSafeB1 - PrevR2) > 0.1 then
|
if abs( dSafeC1 - PrevR1) > 0.1 or abs( dSafeB1 - PrevR2) > 0.1 then
|
||||||
local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2)
|
local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, EgtClamp( PrevR2, -90, 90))
|
||||||
if EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, -EMT.L2o < -LimX1RotSaw, -EMT.L2o > -LimX1RotSaw) then
|
if EgtIf( BD.RIGHT_LOAD, -dXPos < -LimX1RotSaw, -dXPos > -LimX1RotSaw) then
|
||||||
dZref = dZref - EgtIf( not Mortiser, 100, 370)
|
dZref = dZref - EgtIf( not Mortiser, 100, 370)
|
||||||
end
|
end
|
||||||
dZref = min( dZref, dMaxZ1)
|
dZref = min( dZref, dMaxZ1)
|
||||||
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
||||||
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then
|
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then
|
||||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
||||||
@@ -2566,10 +2759,13 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
EmitMoveDataHead( 1, { Z=dMaxZ1})
|
EmitMoveDataHead( 1, { Z=dMaxZ1})
|
||||||
else
|
else
|
||||||
local MovH = { Z = dMaxZ1}
|
local MovH = { Z = dMaxZ1}
|
||||||
MovH.X = -EMT.L2o ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
|
MovH.X = -dXPos ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
end
|
end
|
||||||
if bXhome then EmitMoveDataHead( 1, { X=-dSafeX1}) end
|
if bXhome then
|
||||||
|
EMT.XHOME = true
|
||||||
|
EmitMoveDataHead( 1, { X=-dSafeX1})
|
||||||
|
end
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
-- se lavorazione in doppio
|
-- se lavorazione in doppio
|
||||||
if EMT.DOU_TYPE == 2 then
|
if EMT.DOU_TYPE == 2 then
|
||||||
@@ -2579,14 +2775,15 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
|
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
|
||||||
local MovH = { X = -EMT.L2o, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
||||||
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
||||||
end
|
end
|
||||||
EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1})
|
EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1})
|
||||||
if bXhome then
|
if bXhome then
|
||||||
|
EMT.XHOME = true
|
||||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50})
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50})
|
||||||
end
|
end
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
@@ -2601,33 +2798,35 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2)
|
local dZref = dSafeZ1 + GetZExtra( EMT.HEAD, PrevR2)
|
||||||
dZref = min( dZref, dMaxZ1)
|
dZref = min( dZref, dMaxZ1)
|
||||||
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
||||||
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) then
|
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
||||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
|
||||||
end
|
|
||||||
EmitMoveDataHead( 1, { C=dSafeC1})
|
EmitMoveDataHead( 1, { C=dSafeC1})
|
||||||
EmitMoveDataHead( 1, { B=dSafeB1})
|
EmitMoveDataHead( 1, { B=dSafeB1})
|
||||||
EmitMoveDataHead( 1, { Z=dMaxZ1})
|
EmitMoveDataHead( 1, { Z=dMaxZ1})
|
||||||
else
|
else
|
||||||
local MovH = { Z = dMaxZ1}
|
local MovH = { Z = dMaxZ1}
|
||||||
MovH.X = -EMT.L2o ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
|
MovH.X = -dXPos ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
end
|
end
|
||||||
if bXhome then EmitMoveDataHead( 1, { X=-dSafeX1}) end
|
if bXhome then
|
||||||
|
EMT.XHOME = true
|
||||||
|
EmitMoveDataHead( 1, { X=-dSafeX1})
|
||||||
|
end
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
EmitMoveWaitHead( 1)
|
EmitMoveWaitHead( 1)
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
|
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
|
||||||
local MovH = { X = -EMT.L2o, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
||||||
EmitMoveDataHead( 1, MovH)
|
EmitMoveDataHead( 1, MovH)
|
||||||
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
EmitMoveDataHead( 1, { Z=dSafeZ1, B=dSafeB1})
|
||||||
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
EmitMoveDataHead( 1, { Z=ParkCSawZ1})
|
||||||
end
|
end
|
||||||
EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1})
|
EmitMoveDataHead( 1, { X=-dSafeX1, C=dSafeC1})
|
||||||
if bXhome then
|
if bXhome then
|
||||||
|
EMT.XHOME = true
|
||||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50})
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=ParkCSawZ1, B=ParkB1, C=ParkC1, TPos=50})
|
||||||
end
|
end
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
@@ -2654,7 +2853,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
local dZref = dSafeZ2 + GetZExtra( EMT.HEAD, PrevR2)
|
local dZref = dSafeZ2 + GetZExtra( EMT.HEAD, PrevR2)
|
||||||
dZref = min( dZref, dMaxZ2)
|
dZref = min( dZref, dMaxZ2)
|
||||||
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
||||||
MovH.X = -EMT.L2o ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||||
EmitMoveDataHead( 2, MovH)
|
EmitMoveDataHead( 2, MovH)
|
||||||
if EMT.HEAD == 'H22' and ( abs( dSafeC2 - PrevR1) > 30.1 or abs( dSafeB2 - PrevR2) > 30.1) then
|
if EMT.HEAD == 'H22' and ( abs( dSafeC2 - PrevR1) > 30.1 or abs( dSafeB2 - PrevR2) > 30.1) then
|
||||||
EmitMoveDataHead( 2, { Z=dMaxZ2, B=0})
|
EmitMoveDataHead( 2, { Z=dMaxZ2, B=0})
|
||||||
@@ -2664,23 +2863,27 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
|||||||
EmitMoveDataHead( 2, { Z=dMaxZ2})
|
EmitMoveDataHead( 2, { Z=dMaxZ2})
|
||||||
else
|
else
|
||||||
local MovH = { Z = dMaxZ2}
|
local MovH = { Z = dMaxZ2}
|
||||||
MovH.X = -EMT.L2o ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
|
MovH.X = -dXPos ; MovH.B = PrevR2 ; MovH.C = PrevR1 ;
|
||||||
EmitMoveDataHead( 2, MovH)
|
EmitMoveDataHead( 2, MovH)
|
||||||
end
|
end
|
||||||
if bXhome then EmitMoveDataHead( 2, { X=-dSafeX2}) end
|
if bXhome then
|
||||||
|
EMT.XHOME = true
|
||||||
|
EmitMoveDataHead( 2, { X=-dSafeX2})
|
||||||
|
end
|
||||||
EmitMoveStartHead( 2)
|
EmitMoveStartHead( 2)
|
||||||
EmitMoveWaitHead( 2)
|
EmitMoveWaitHead( 2)
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
|
-- ribadisco movimento perchè in G141 si aspetta sempre tutti i valori
|
||||||
local MovH = { X = -EMT.L2o, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
local MovH = { X = -dXPos, Z = EMT.L3o, B = PrevR2, C = PrevR1}
|
||||||
EmitMoveDataHead( 2, MovH)
|
EmitMoveDataHead( 2, MovH)
|
||||||
EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2})
|
EmitMoveDataHead( 2, { Z=dSafeZ2, B=dSafeB2})
|
||||||
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
EmitMoveDataHead( 2, { Z=ParkCSawZ2})
|
EmitMoveDataHead( 2, { Z=ParkCSawZ2})
|
||||||
end
|
end
|
||||||
EmitMoveDataHead( 2, { X=-dSafeX2, C=dSafeC2})
|
EmitMoveDataHead( 2, { X=-dSafeX2, C=dSafeC2})
|
||||||
if bXhome then
|
if bXhome then
|
||||||
|
EMT.XHOME = true
|
||||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=ParkCSawZ2, B=ParkB2, C=ParkC2, TPos=50})
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=ParkCSawZ2, B=ParkB2, C=ParkC2, TPos=50})
|
||||||
end
|
end
|
||||||
EmitMoveStartHead( 2)
|
EmitMoveStartHead( 2)
|
||||||
@@ -2748,14 +2951,19 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function EmitResetMachining()
|
function EmitResetMachining()
|
||||||
if ( EMT.TOOL ~= GetNextTool( EMT.MCHID) and IsLastPath( EMT.PATHID)) or GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID) then
|
if EMT.PLANEACTIVE then
|
||||||
-- se da MLDE parametro non settato, o settato a true, scrivo il comando arresto mandrino
|
-- se non sono a Z massima e operatore deve entrare in cabina spango sempre
|
||||||
if WriteM05Command == nil or WriteM05Command then
|
if not EMT.ZMAX and ( GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID)) then
|
||||||
|
EmtOutput( 'M05')
|
||||||
|
-- altrimenti spegnimento dipende da parametro
|
||||||
|
elseif ( EMT.TOOL ~= GetNextTool( EMT.MCHID, false) and IsLastPath( EMT.PATHID)) or GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID) then
|
||||||
EmtOutput( 'M05')
|
EmtOutput( 'M05')
|
||||||
end
|
end
|
||||||
|
local sOut = 'G157 EA1'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
-- piano non più attivo
|
||||||
|
EMT.PLANEACTIVE = false
|
||||||
end
|
end
|
||||||
local sOut = 'G157 EA1'
|
|
||||||
EmtOutput( sOut)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -2777,12 +2985,26 @@ function EmitParkRoller( dPosT, bSplitCut, bUsePrevDelta)
|
|||||||
local DiffY2 = MyParkY2 - dPosY2
|
local DiffY2 = MyParkY2 - dPosY2
|
||||||
--EmtOutput( string.format( 'PosT=%.3f DiffY1=%.3f DiffY2=%.3f', dPosT, DiffY1, DiffY2))
|
--EmtOutput( string.format( 'PosT=%.3f DiffY1=%.3f DiffY2=%.3f', dPosT, DiffY1, DiffY2))
|
||||||
if bSplitCut then
|
if bSplitCut then
|
||||||
|
local bYNoMove, bVNoMove
|
||||||
if DiffY1 > 0.1 then
|
if DiffY1 > 0.1 then
|
||||||
|
bYNoMove = false
|
||||||
MDChar.Y1 = dPosY1 + DiffY1
|
MDChar.Y1 = dPosY1 + DiffY1
|
||||||
|
else
|
||||||
|
bYNoMove = true
|
||||||
|
MDChar.Y1 = dPosY1
|
||||||
end
|
end
|
||||||
if DiffY2 < -0.1 then
|
if DiffY2 < -0.1 then
|
||||||
|
bVNoMove = false
|
||||||
MDChar.Y2 = dPosY2 + DiffY2
|
MDChar.Y2 = dPosY2 + DiffY2
|
||||||
dPosT = dPosT + DiffY2
|
dPosT = dPosT + DiffY2
|
||||||
|
else
|
||||||
|
bVNoMove = true
|
||||||
|
MDChar.Y2 = dPosY2
|
||||||
|
end
|
||||||
|
-- se anche solo una morsa è restata in posizione, le sposto comunque entrambe di 5mm per distanziare i pezzi separati
|
||||||
|
if bYNoMove or bVNoMove then
|
||||||
|
MDChar.Y1 = MDChar.Y1 + 30
|
||||||
|
MDChar.Y2 = MDChar.Y2 - 30
|
||||||
end
|
end
|
||||||
elseif DiffY1 > 0.1 and DiffY2 < -0.1 then
|
elseif DiffY1 > 0.1 and DiffY2 < -0.1 then
|
||||||
EmtSetLastError( 1201, 'Error Collision in ParkRoller')
|
EmtSetLastError( 1201, 'Error Collision in ParkRoller')
|
||||||
@@ -2810,7 +3032,7 @@ function EmitParkRoller( dPosT, bSplitCut, bUsePrevDelta)
|
|||||||
local dPosY1 = dPosT + dY1Delta
|
local dPosY1 = dPosT + dY1Delta
|
||||||
local DiffY1 = MyParkY1 - dPosY1
|
local DiffY1 = MyParkY1 - dPosY1
|
||||||
local dMoveY1 = EgtIf( DiffY1 > 0.1, dMoveV1, 0)
|
local dMoveY1 = EgtIf( DiffY1 > 0.1, dMoveV1, 0)
|
||||||
local dTryMoveY1 = ParkV1 - dPosT - EgtIf( bSplitCut or EMT.FALL, EMT.LT, 0)
|
local dTryMoveY1 = min( ParkV1 - dPosT - EgtIf( bSplitCut or EMT.FALL, EMT.LT, 0), MaxY1 - dPosY1 - 10)
|
||||||
if ( dPosT > ParkV2 - ExtraParkV and dPosT < ParkV1 and dPosY1 + dTryMoveY1 < MaxY1) then dMoveY1 = max( dMoveY1, dTryMoveY1) end
|
if ( dPosT > ParkV2 - ExtraParkV and dPosT < ParkV1 and dPosY1 + dTryMoveY1 < MaxY1) then dMoveY1 = max( dMoveY1, dTryMoveY1) end
|
||||||
MDChar.Y1 = dPosY1 + dMoveY1
|
MDChar.Y1 = dPosY1 + dMoveY1
|
||||||
MDChar.MovType = 1
|
MDChar.MovType = 1
|
||||||
@@ -2821,7 +3043,7 @@ function EmitParkRoller( dPosT, bSplitCut, bUsePrevDelta)
|
|||||||
local dPosY2 = dPosT + dY2Delta
|
local dPosY2 = dPosT + dY2Delta
|
||||||
local DiffY2 = MyParkY2 - dPosY2
|
local DiffY2 = MyParkY2 - dPosY2
|
||||||
local dMoveY2 = EgtIf( DiffY2 < -0.1, dMoveV2, 0)
|
local dMoveY2 = EgtIf( DiffY2 < -0.1, dMoveV2, 0)
|
||||||
local dTryMoveY2 = ParkV2 - dPosT - EMT.LT - EMT.DELTA_LT - EMT.HOVM
|
local dTryMoveY2 = max( ParkV2 - dPosT - EMT.LT - EMT.DELTA_LT - EMT.HOVM, MinY2 - dPosY2 + 10)
|
||||||
if ( dPosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM < ParkV1 + ExtraParkV and dPosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM > ParkV2 and dPosY2 + dTryMoveY2 > MinY2) then dMoveY2 = min( dMoveY2, dTryMoveY2) end
|
if ( dPosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM < ParkV1 + ExtraParkV and dPosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM > ParkV2 and dPosY2 + dTryMoveY2 > MinY2) then dMoveY2 = min( dMoveY2, dTryMoveY2) end
|
||||||
MDChar.Y2 = dPosY2 + dMoveY2
|
MDChar.Y2 = dPosY2 + dMoveY2
|
||||||
MDChar.MovType = 2
|
MDChar.MovType = 2
|
||||||
@@ -2883,16 +3105,16 @@ function PreselectNextDiffHead( nMchId, sHead)
|
|||||||
if nNextHSet ~= nHSet then
|
if nNextHSet ~= nHSet then
|
||||||
local sNextTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
local sNextTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
-- se testa attuale da caricare è sega a catena, mando l'altra prima in HomeX (per evitare possibili collisioni) e poi lancio preselezione
|
-- se testa attuale da caricare è sega a catena, mando l'altra prima in HomeX (per evitare possibili collisioni) e poi lancio preselezione
|
||||||
if sHead == 'H13' and EMT.PREVHEAD ~= 'H13' then
|
if sHead == 'H13' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H1) then
|
||||||
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
EmitMoveDataHead( 2, { X=-ParkX2, Z=MaxZ2, B=ParkB2, C=ParkC2, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H2)})
|
||||||
EmitMoveStartHead( 2)
|
EmitMoveStartHead( 2)
|
||||||
EmitMoveWaitHead( 2)
|
EmitMoveWaitHead( 2)
|
||||||
elseif sHead == 'H23' and EMT.PREVHEAD ~= 'H23' then
|
elseif sHead == 'H23' and nHSet ~= GetHeadSet( EMT.PREVHEAD_H2) then
|
||||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
EmitMoveWaitHead( 1)
|
EmitMoveWaitHead( 1)
|
||||||
end
|
end
|
||||||
-- Emetto preselezione (non ammessa per sega a catena H13 e H23)
|
-- Emetto preselezione (non ammessa per sega a catena H13 e H23 e aggregato BlockHaus H17)
|
||||||
if sNextHead == 'H11' then
|
if sNextHead == 'H11' then
|
||||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)})
|
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)})
|
||||||
EmitMoveStartHead( 1)
|
EmitMoveStartHead( 1)
|
||||||
@@ -2971,7 +3193,7 @@ function EmitTestProgramStart()
|
|||||||
EmtOutput( 'M12 $START PER SVINCOLO TESTE')
|
EmtOutput( 'M12 $START PER SVINCOLO TESTE')
|
||||||
EmtOutput( '(SVINCOLO TESTA 1)')
|
EmtOutput( '(SVINCOLO TESTA 1)')
|
||||||
EmitMoveDataHead( 1, {Z=ParkZ1-100, TPos=0})
|
EmitMoveDataHead( 1, {Z=ParkZ1-100, TPos=0})
|
||||||
if Progress then
|
if Progress or SecondToolChanger then
|
||||||
EmtOutput( 'IF E80001<=10 THEN')
|
EmtOutput( 'IF E80001<=10 THEN')
|
||||||
EmitMoveDataHead( 1, {C=ParkC1, TPos=0})
|
EmitMoveDataHead( 1, {C=ParkC1, TPos=0})
|
||||||
EmitMoveDataHead( 1, {Z=-150, B=ParkB1, TPos=0})
|
EmitMoveDataHead( 1, {Z=-150, B=ParkB1, TPos=0})
|
||||||
@@ -3087,12 +3309,12 @@ end
|
|||||||
function EmitBeamHeadData( BhData)
|
function EmitBeamHeadData( BhData)
|
||||||
if not BhData.Pz5 then
|
if not BhData.Pz5 then
|
||||||
local sOut = 'G152'
|
local sOut = 'G152'
|
||||||
if BhData.T then sOut = sOut .. ' Y' .. EmtLenToString( BhData.T, 3) end
|
if BhData.T then sOut = sOut .. ' Y' .. EmtLenToString( BhData.T, 3) end
|
||||||
if BhData.Y1 then sOut = sOut .. ' EY' .. EmtLenToString( BhData.Y1, 3) end
|
if BhData.Y1 then sOut = sOut .. ' EY' .. EmtLenToString( BhData.Y1, 3) end
|
||||||
if BhData.Y2 then sOut = sOut .. ' EV' .. EmtLenToString( BhData.Y2, 3) end
|
if BhData.Y2 then sOut = sOut .. ' EV' .. EmtLenToString( BhData.Y2, 3) end
|
||||||
if BhData.V1 then sOut = sOut .. ' B' .. EmtLenToString( BhData.V1, 3) end
|
if BhData.V1 then sOut = sOut .. ' B' .. EmtLenToString( BhData.V1, 3) end
|
||||||
if BhData.V2 then sOut = sOut .. ' C' .. EmtLenToString( BhData.V2, 3) end
|
if BhData.V2 then sOut = sOut .. ' C' .. EmtLenToString( BhData.V2, 3) end
|
||||||
if BhData.W then sOut = sOut .. ' EW' .. EmtLenToString( BhData.W, 3) end
|
if BhData.W then sOut = sOut .. ' EW' .. EmtLenToString( BhData.W, 3) end
|
||||||
if BhData.ViseY1 then sOut = sOut .. ' EA' .. EgtNumToString( BhData.ViseY1, 0) end
|
if BhData.ViseY1 then sOut = sOut .. ' EA' .. EgtNumToString( BhData.ViseY1, 0) end
|
||||||
if BhData.ViseY2 then sOut = sOut .. ' EB' .. EgtNumToString( BhData.ViseY2, 0) end
|
if BhData.ViseY2 then sOut = sOut .. ' EB' .. EgtNumToString( BhData.ViseY2, 0) end
|
||||||
if BhData.SetHead then sOut = sOut .. ' EC' .. EgtNumToString( BhData.SetHead, 0) end
|
if BhData.SetHead then sOut = sOut .. ' EC' .. EgtNumToString( BhData.SetHead, 0) end
|
||||||
|
|||||||
+246
-69
@@ -24,7 +24,7 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- *** SIMULATION ***
|
-- *** SIMULATION ***
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local COLL_SAFE_DIST = 4
|
local COLL_SAFE_DIST = 3
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnSimulInit()
|
function OnSimulInit()
|
||||||
@@ -119,9 +119,17 @@ function OnSimulStart()
|
|||||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TRAV'},
|
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TRAV'},
|
||||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL1'},
|
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL1'},
|
||||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL2'},
|
{ Grp = 'Base', Sub = 'COLLISION', Name = 'COL2'},
|
||||||
{ Grp = 'Base', Sub = 'BELT', Name = 'COLLISION'}}
|
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC1'},
|
||||||
|
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC2'},
|
||||||
|
{ Grp = 'Base', Sub = 'BELT', Name = 'COLLISION'},
|
||||||
|
{ Grp = 'X1', Sub = 'COLLISION', Name = 'STM'}}
|
||||||
|
|
||||||
|
if EgtGetHeadId( 'H21') then
|
||||||
|
table.insert( McdData, { Grp = 'X2', Sub = 'COLLISION', Name = 'STM'})
|
||||||
|
end
|
||||||
|
|
||||||
-- gruppo CHSAW si attiva solo se progress, one con BIT mortiser o PF
|
-- gruppo CHSAW si attiva solo se progress, one con BIT mortiser o PF
|
||||||
if Progress or Mortiser or EgtGetHeadId( 'H21') then
|
if Progress or Mortiser or EgtGetHeadId( 'H21') or SecondToolChanger then
|
||||||
table.insert( McdData, { Grp = 'Base', Sub = 'COLLISION', Name = 'CHSAW'})
|
table.insert( McdData, { Grp = 'Base', Sub = 'COLLISION', Name = 'CHSAW'})
|
||||||
end
|
end
|
||||||
-- gruppo MORTISER si attiva solo se PF con BIT mortiser attivo
|
-- gruppo MORTISER si attiva solo se PF con BIT mortiser attivo
|
||||||
@@ -132,6 +140,10 @@ function OnSimulStart()
|
|||||||
if Progress and EgtGetHeadId( 'H21') then
|
if Progress and EgtGetHeadId( 'H21') then
|
||||||
table.insert( McdData, { Grp = 'Base', Sub = 'COLLISION', Name = 'SAW1'})
|
table.insert( McdData, { Grp = 'Base', Sub = 'COLLISION', Name = 'SAW1'})
|
||||||
end
|
end
|
||||||
|
-- se non è Progress ed è una ONE, aggiungo collisioni magazzino speciale
|
||||||
|
if not Progress and not EgtGetHeadId( 'H21') then
|
||||||
|
table.insert( McdData, { Grp = 'Base', Sub = 'COLLISION', Name = 'MTC'})
|
||||||
|
end
|
||||||
|
|
||||||
if Clamp5 then
|
if Clamp5 then
|
||||||
table.insert( McdData, { Grp = 'W', Sub = 'COLLISION', Name = 'STM1'})
|
table.insert( McdData, { Grp = 'W', Sub = 'COLLISION', Name = 'STM1'})
|
||||||
@@ -225,18 +237,24 @@ function OnSimulDispositionStart()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- determino la risoluzione dello Zmap
|
-- determino la risoluzione dello Zmap
|
||||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
local dTol = 4.71
|
||||||
local dTol = 4.51
|
if EmtGetVMillStep then
|
||||||
if dArea < CoeffVM * 0.5e6 then
|
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71)
|
||||||
dTol = 1.01
|
else
|
||||||
elseif dArea < CoeffVM * 1.2e6 then
|
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||||
dTol = 1.51
|
if dArea < 0.075e6 then
|
||||||
elseif dArea < CoeffVM * 2.5e6 then
|
dTol = 0.71
|
||||||
dTol = 1.97
|
elseif dArea < 0.15e6 then
|
||||||
elseif dArea < CoeffVM * 5.0e6 then
|
dTol = 1.01
|
||||||
dTol = 2.81
|
elseif dArea < 0.3e6 then
|
||||||
elseif dArea < CoeffVM * 10.0e6 then
|
dTol = 1.51
|
||||||
dTol = 3.77
|
elseif dArea < 0.6e6 then
|
||||||
|
dTol = 1.97
|
||||||
|
elseif dArea < 1.2e6 then
|
||||||
|
dTol = 2.81
|
||||||
|
elseif dArea < 2.4e6 then
|
||||||
|
dTol = 3.77
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- creo lo Zmap
|
-- creo lo Zmap
|
||||||
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
local VMillId = EgtVolZmapBox( nPartRawId, b3Raw:getMin(), b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), dTol, true, GDB_RT.GLOB)
|
||||||
@@ -345,6 +363,8 @@ function OnSimulDispositionStart()
|
|||||||
else
|
else
|
||||||
EgtOutText( 'Barra non ruotata')
|
EgtOutText( 'Barra non ruotata')
|
||||||
end
|
end
|
||||||
|
-- forzo apertura rulli in caso fossero chiusi. Altrimenti all'apertura nell OnSimulMoveStart sposterebbe anche la trave
|
||||||
|
ExecParkRoller( nil, nil, nil, nil, nil, nil)
|
||||||
end
|
end
|
||||||
-- eseguo aggancio
|
-- eseguo aggancio
|
||||||
local nRawId = EgtGetFirstRawPart()
|
local nRawId = EgtGetFirstRawPart()
|
||||||
@@ -493,10 +513,8 @@ function OnSimulToolSelect( dPosA)
|
|||||||
end
|
end
|
||||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||||
if HeadIsChainSaw( EMT.HEAD) then
|
if HeadIsChainSaw( EMT.HEAD) then
|
||||||
-- se non Progress, apro le paratie
|
-- apro le paratie
|
||||||
if not Progress then
|
ExecParkRoller( nil, nil, nil, nil, false, IsStartPhase( EMT.PHASE))
|
||||||
ExecParkRoller( nil, nil, nil, nil, false, IsStartPhase( EMT.PHASE))
|
|
||||||
end
|
|
||||||
-- valore dell'asse virtuale
|
-- valore dell'asse virtuale
|
||||||
dPosA = dPosA or GetNextChainSawingVirtualAxis( EMT.MCHID)
|
dPosA = dPosA or GetNextChainSawingVirtualAxis( EMT.MCHID)
|
||||||
-- imposto il valore di A
|
-- imposto il valore di A
|
||||||
@@ -628,7 +646,7 @@ function OnSimulToolDeselect( dPrevA)
|
|||||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||||
-- deposito utensile lama
|
-- deposito utensile lama
|
||||||
elseif EMT.PREVHEAD_H1 == 'H12' then
|
elseif EMT.PREVHEAD_H1 == 'H12' or EMT.PREVHEAD_H1 == 'H17' then
|
||||||
-- simulo movimento
|
-- simulo movimento
|
||||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||||
@@ -696,12 +714,12 @@ function OnSimulToolDeselect( dPrevA)
|
|||||||
-- nascondo l'utensile sulla testa
|
-- nascondo l'utensile sulla testa
|
||||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||||
-- prendo utensile fresa o lama
|
-- prendo utensile fresa o lama
|
||||||
if EMT.NEXTHEAD == 'H11' or EMT.NEXTHEAD == 'H12' then
|
if EMT.NEXTHEAD == 'H11' or EMT.NEXTHEAD == 'H12' or EMT.NEXTHEAD == 'H17' then
|
||||||
local MyParkX1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkX1, ParkFrnX1)
|
local MyParkX1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkX1, ParkFrnX1)
|
||||||
local MyParkB1 = ParkB1
|
local MyParkB1 = ParkB1
|
||||||
local MyParkC1 = ParkC1
|
local MyParkC1 = ParkC1
|
||||||
-- se ho due teste oppure è progress, significa che ho CU verticale
|
-- se ho due teste oppure è progress, significa che ho CU verticale
|
||||||
if EgtGetHeadId('H21') or bProgress then
|
if EgtGetHeadId('H21') or Progress or SecondToolChanger then
|
||||||
MyParkB1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkB1, ParkFrnB1)
|
MyParkB1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkB1, ParkFrnB1)
|
||||||
MyParkC1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkC1, ParkFrnC1)
|
MyParkC1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkC1, ParkFrnC1)
|
||||||
-- altrimenti su one CU speciale motosega-utensile lungo
|
-- altrimenti su one CU speciale motosega-utensile lungo
|
||||||
@@ -752,6 +770,7 @@ function OnSimulMachiningStart()
|
|||||||
EMT.VMRS = ( EMT.MCHTYPE ~= MCH_MY.DRILLING and not EMT.MCHUSERNOTES:find( 'VMRS=0;', 1, true))
|
EMT.VMRS = ( EMT.MCHTYPE ~= MCH_MY.DRILLING and not EMT.MCHUSERNOTES:find( 'VMRS=0;', 1, true))
|
||||||
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
||||||
EMT.MCHPRECUT = ( EMT.MCHUSERNOTES:find( 'Precut;', 1, true) ~= nil)
|
EMT.MCHPRECUT = ( EMT.MCHUSERNOTES:find( 'Precut;', 1, true) ~= nil)
|
||||||
|
EMT.MCHCUT = ( EMT.MCHUSERNOTES:find( 'Cut;', 1, true) ~= nil)
|
||||||
-- recupero TASKID della feature lavorata
|
-- recupero TASKID della feature lavorata
|
||||||
local vId = EgtGetMachiningGeometry()
|
local vId = EgtGetMachiningGeometry()
|
||||||
if vId and #vId > 0 and #vId[1] > 0 then
|
if vId and #vId > 0 and #vId[1] > 0 then
|
||||||
@@ -945,7 +964,12 @@ function OnSimulMoveStart()
|
|||||||
-- pinza 5
|
-- pinza 5
|
||||||
if EMT.W2DELTA then
|
if EMT.W2DELTA then
|
||||||
EMT.A5n = 'W'
|
EMT.A5n = 'W'
|
||||||
EMT.A5m = 'T'
|
local dPosQW = EgtGetAxisPos( 'QW') or 0
|
||||||
|
if dPosQW < 1 then
|
||||||
|
EMT.A5m = nil
|
||||||
|
else
|
||||||
|
EMT.A5m = 'T'
|
||||||
|
end
|
||||||
EMT.A5 = EMT.L1 + EMT.W2DELTA - EMT.A4
|
EMT.A5 = EMT.L1 + EMT.W2DELTA - EMT.A4
|
||||||
VerifyWStroke( EMT.A5)
|
VerifyWStroke( EMT.A5)
|
||||||
end
|
end
|
||||||
@@ -954,6 +978,7 @@ function OnSimulMoveStart()
|
|||||||
VerifyY2Stroke( EMT.A2)
|
VerifyY2Stroke( EMT.A2)
|
||||||
VerifyV1Stroke( EMT.A3)
|
VerifyV1Stroke( EMT.A3)
|
||||||
VerifyV2Stroke( EMT.A4)
|
VerifyV2Stroke( EMT.A4)
|
||||||
|
|
||||||
-- se devo subito parcheggiare i rulli
|
-- se devo subito parcheggiare i rulli
|
||||||
local nRes = 0
|
local nRes = 0
|
||||||
if bParkV then
|
if bParkV then
|
||||||
@@ -965,6 +990,12 @@ function OnSimulMoveStart()
|
|||||||
end
|
end
|
||||||
-- se movimento in rapido ad inizio lavorazione
|
-- se movimento in rapido ad inizio lavorazione
|
||||||
if EMT.MOVE == 0 and EMT.MOVEIND <= 3 then
|
if EMT.MOVE == 0 and EMT.MOVEIND <= 3 then
|
||||||
|
-- gestione speciale per pezzi molto alti. Se il movimento successivo è più alto del precedente, allora prendo il successivo
|
||||||
|
if EMT.L3s then
|
||||||
|
if EMT.L3s > EMT.L3 then
|
||||||
|
EMT.L3 = EMT.L3s
|
||||||
|
end
|
||||||
|
end
|
||||||
-- Dati
|
-- Dati
|
||||||
local B1Pos = EgtGetAxisPos( 'B1')
|
local B1Pos = EgtGetAxisPos( 'B1')
|
||||||
local B1Home = EgtGetAxisHomePos( 'B1')
|
local B1Home = EgtGetAxisHomePos( 'B1')
|
||||||
@@ -979,20 +1010,44 @@ function OnSimulMoveStart()
|
|||||||
-- se movimento iniziale da Zmax con lama o fresa
|
-- se movimento iniziale da Zmax con lama o fresa
|
||||||
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||||
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
||||||
|
local bMoveZbeforeX = false
|
||||||
|
|
||||||
|
local dZref = EMT.L3
|
||||||
|
if EMT.HEAD == 'H12' and ( EgtIf( BD.RIGHT_LOAD, -EMT.L2 < -LimX1RotSaw, -EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
||||||
|
dZref = Z1Home + GetZExtra( EMT.HEAD, EMT.R2) - 100
|
||||||
|
end
|
||||||
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
|
if EMT.L3 > dZref then
|
||||||
|
bMoveZbeforeX = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- se vado in posizione speciale rotazione assi, poi devo ritornare alla X vera di lavoro
|
||||||
|
local dMoveXtoFinalPosition = false
|
||||||
local dXref = EMT.L2
|
local dXref = EMT.L2
|
||||||
if EMT.HEAD == 'H12' and -EMT.L2 < -LimX1PlRotSaw then
|
if EMT.HEAD == 'H12' and -EMT.L2 < -LimX1PlRotSaw then
|
||||||
dXref = LimX1PlRotSaw
|
dXref = LimX1PlRotSaw
|
||||||
|
SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID)
|
||||||
|
dZref = max( EMT.L3, Z1Home + GetZExtra( EMT.HEAD, EMT.R2))
|
||||||
|
dMoveXtoFinalPosition = true
|
||||||
|
elseif not bMoveZbeforeX then
|
||||||
|
SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID)
|
||||||
|
else
|
||||||
|
SimulMoveAxis( 'X1', LimX1PlRotSaw, MCH_SIM_STEP.RAPID)
|
||||||
|
dZref = max( EMT.L3, Z1Home + GetZExtra( EMT.HEAD, EMT.R2))
|
||||||
|
dMoveXtoFinalPosition = true
|
||||||
end
|
end
|
||||||
SimulMoveAxis( 'X1', dXref, MCH_SIM_STEP.RAPID)
|
|
||||||
local dZref = EMT.L3
|
|
||||||
if EMT.HEAD == 'H12' and ( EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, -EMT.L2 < -LimX1RotSaw, -EMT.L2 > -LimX1RotSaw) or EMT.R2 < -91) then
|
|
||||||
dZref = Z1Home + GetZExtra( EMT.HEAD, EMT.R2) - 100
|
|
||||||
end
|
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
if EMT.HEAD == 'H12' and abs( C1Pos - EMT.R1) > 1 and ( abs( C1Home - EMT.R1) > 30.1 or abs(B1Home - EMT.R2) > 30.1) then
|
if EMT.HEAD == 'H12' and abs( C1Pos - EMT.R1) > 1 and ( abs( C1Home - EMT.R1) > 30.1 or abs(B1Home - EMT.R2) > 30.1) then
|
||||||
SimulMoveAxis( 'B1', 0, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', dZref, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', dZref, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||||
|
end
|
||||||
|
if dMoveXtoFinalPosition then
|
||||||
|
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||||
|
end
|
||||||
-- caso standard
|
-- caso standard
|
||||||
else
|
else
|
||||||
SimulMoveAxis( 'Z1', dZref, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', dZref, MCH_SIM_STEP.RAPID)
|
||||||
@@ -1002,9 +1057,9 @@ function OnSimulMoveStart()
|
|||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
|
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||||
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
||||||
if EMT.CHSAW_OUT then
|
if EMT.CHSAW_OUT then
|
||||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
|
||||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||||
OnSimulToolDeselect()
|
OnSimulToolDeselect()
|
||||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||||
@@ -1033,31 +1088,44 @@ function OnSimulMoveStart()
|
|||||||
else
|
else
|
||||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
||||||
-- se movimento iniziale da Zmax con lama o fresa
|
-- se movimento iniziale da Zmax con lama o fresa
|
||||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' then
|
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H17' then
|
||||||
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||||
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
||||||
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
local bMoveZbeforeX = false
|
||||||
|
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
if EMT.HEAD == 'H12' and ( -EMT.L2 < -LimX1RotSaw or EMT.R2 > 91) then
|
if EMT.HEAD == 'H12' and ( -EMT.L2 < -LimX1RotSaw or EMT.R2 > 91) then
|
||||||
dZref = Z1Home + GetZExtra( EMT.HEAD, EMT.R2) - 100
|
dZref = Z1Home + GetZExtra( EMT.HEAD, EMT.R2) - 100
|
||||||
end
|
end
|
||||||
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
|
if EMT.L3 > dZref then
|
||||||
|
bMoveZbeforeX = true
|
||||||
|
end
|
||||||
|
if not bMoveZbeforeX then
|
||||||
|
SimulMoveAxis( 'X1', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||||
|
else
|
||||||
|
SimulMoveAxis( 'X1', LimX1RotSawTC2, MCH_SIM_STEP.RAPID)
|
||||||
|
end
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 400")
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 400")
|
||||||
if EMT.HEAD == 'H12' and abs( C1Pos - EMT.R1) > 1 and ( abs( C1Home - EMT.R1) > 30.1 or abs(B1Home - EMT.R2) > 30.1) then
|
if EMT.HEAD == 'H12' and abs( C1Pos - EMT.R1) > 1 and ( abs( C1Home - EMT.R1) > 30.1 or abs(B1Home - EMT.R2) > 30.1) then
|
||||||
SimulMoveAxis( 'B1', 0, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', dZref, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', dZref, MCH_SIM_STEP.RAPID, 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
SimulMoveAxis( 'Z1', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||||
|
end
|
||||||
-- caso standard
|
-- caso standard
|
||||||
else
|
else
|
||||||
SimulMoveAxis( 'Z1', dZref, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', dZref, MCH_SIM_STEP.RAPID)
|
||||||
SimulMoveAxis( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
|
||||||
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'C1', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxis( 'B1', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena (H13 o H15)
|
-- altrimenti sega a catena (H13 o H15)
|
||||||
else
|
else
|
||||||
|
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||||
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
||||||
if EMT.CHSAW_OUT then
|
if EMT.CHSAW_OUT then
|
||||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
|
||||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||||
OnSimulToolDeselect()
|
OnSimulToolDeselect()
|
||||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||||
@@ -1095,28 +1163,45 @@ function OnSimulMoveStart()
|
|||||||
-- se movimento iniziale da Zmax con lama o fresa
|
-- se movimento iniziale da Zmax con lama o fresa
|
||||||
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||||
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
||||||
SimulMoveAxis( 'X2', EMT.L2, MCH_SIM_STEP.RAPID)
|
local bMoveZbeforeX = false
|
||||||
local dZref = EMT.L3
|
local dZref = EMT.L3
|
||||||
if EMT.HEAD == 'H22' and ( EgtIf( BD.RIGHT_LOAD, EMT.L2 < -LimX2RotSaw, EMT.L2 > -LimX2RotSaw) or EMT.R2 > 91) then
|
if EMT.HEAD == 'H22' and ( EgtIf( BD.RIGHT_LOAD, -EMT.L2 < -LimX1RotSaw, -EMT.L2 > -LimX1RotSaw) or EMT.R2 > 91) then
|
||||||
dZref = Z2Home + GetZExtra( EMT.HEAD, EMT.R2) - 100
|
dZref = Z2Home + GetZExtra( EMT.HEAD, EMT.R2) - 100
|
||||||
end
|
end
|
||||||
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
-- se la quota di lavoro è più in alta della posizione a ZHOME della testa, prima si va alla Z di lavoro e poi si approccia il pezzo
|
||||||
if EMT.HEAD == 'H22' and abs( C2Pos - EMT.R1) > 1 and ( abs( C2Home - EMT.R1) > 30.1 or abs(B2Home - EMT.R2) > 30.1) then
|
if EMT.L3 > dZref then
|
||||||
SimulMoveAxis( 'B2', 0, MCH_SIM_STEP.COLLROT)
|
bMoveZbeforeX = true
|
||||||
SimulMoveAxis( 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
end
|
||||||
SimulMoveAxes( 'Z2', dZref, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
if not bMoveZbeforeX then
|
||||||
-- caso standard
|
SimulMoveAxis( 'X2', EMT.L2, MCH_SIM_STEP.RAPID)
|
||||||
else
|
else
|
||||||
SimulMoveAxis( 'Z2', dZref, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X2', LimX2RotSaw, MCH_SIM_STEP.RAPID)
|
||||||
SimulMoveAxis( 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
end
|
||||||
SimulMoveAxis( 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
-- caso speciale per trave alta con rotazione lama pericolosa (tolto "and EMT.SB > 379")
|
||||||
|
if abs( C2Pos - EMT.R1) > 1 and ( abs( C2Home - EMT.R1) > 30.1 or abs( B2Home - EMT.R2) > 30.1) then
|
||||||
|
if EMT.HEAD == 'H22' then
|
||||||
|
SimulMoveAxis( 'B2', 0, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxis( 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxes( 'Z2', dZref, MCH_SIM_STEP.RAPID, 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
SimulMoveAxis( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||||
|
end
|
||||||
|
-- caso standard
|
||||||
|
else
|
||||||
|
SimulMoveAxis( 'Z2', dZref, MCH_SIM_STEP.RAPID)
|
||||||
|
SimulMoveAxis( 'B2', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
|
SimulMoveAxis( 'C2', EMT.R1, MCH_SIM_STEP.COLLROT)
|
||||||
|
if bMoveZbeforeX then
|
||||||
|
SimulMoveAxis( 'Z2', EMT.L3, MCH_SIM_STEP.RAPID)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
|
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||||
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
||||||
if EMT.CHSAW_OUT then
|
if EMT.CHSAW_OUT then
|
||||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
|
||||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||||
OnSimulToolDeselect()
|
OnSimulToolDeselect()
|
||||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||||
@@ -1209,6 +1294,7 @@ function OnSimulMoveStart()
|
|||||||
EMT.A4 = EgtIf( GetV2ToClose(), EMT.V2NEXTPOS, ParkV2)
|
EMT.A4 = EgtIf( GetV2ToClose(), EMT.V2NEXTPOS, ParkV2)
|
||||||
end
|
end
|
||||||
EMT.ZMAX = nil
|
EMT.ZMAX = nil
|
||||||
|
EMT.XHOME = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -1261,7 +1347,7 @@ function OnSimulMoveEnd()
|
|||||||
-- eventuale rimozione sfridi
|
-- eventuale rimozione sfridi
|
||||||
ExecRemoveScraps()
|
ExecRemoveScraps()
|
||||||
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
||||||
local sNextTool = GetNextTool( EMT.MCHID)
|
local sNextTool = GetNextTool( EMT.MCHID, true)
|
||||||
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
||||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
||||||
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
||||||
@@ -1317,6 +1403,10 @@ function ExecAuxCmd( sCmd, bPathStart)
|
|||||||
ExecOpenRoller( 1)
|
ExecOpenRoller( 1)
|
||||||
ExecOpenRoller( 2)
|
ExecOpenRoller( 2)
|
||||||
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
|
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
|
||||||
|
-- se stringo i rulli e ho lama, verifico che sia in home
|
||||||
|
if MoveV1 and MoveV1 < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
|
||||||
|
ExecMoveZmax( false, true)
|
||||||
|
end
|
||||||
local bOk, bOk1, bOk2, bOk3 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
|
local bOk, bOk1, bOk2, bOk3 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
|
||||||
sV1, MoveV1, MCH_SIM_STEP.RAPID,
|
sV1, MoveV1, MCH_SIM_STEP.RAPID,
|
||||||
sV2, MoveV2, MCH_SIM_STEP.RAPID)
|
sV2, MoveV2, MCH_SIM_STEP.RAPID)
|
||||||
@@ -1339,6 +1429,10 @@ function ExecAuxCmd( sCmd, bPathStart)
|
|||||||
ExecOpenRoller( 1)
|
ExecOpenRoller( 1)
|
||||||
ExecOpenRoller( 2)
|
ExecOpenRoller( 2)
|
||||||
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
|
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
|
||||||
|
-- se stringo i rulli e ho lama, verifico che sia in home
|
||||||
|
if MoveV1 and MoveV1 < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
|
||||||
|
ExecMoveZmax( false, true)
|
||||||
|
end
|
||||||
local bOk, bOk1, bOk2, bOk3, bOk4 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
|
local bOk, bOk1, bOk2, bOk3, bOk4 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
|
||||||
Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID,
|
Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID,
|
||||||
sV1, MoveV1, MCH_SIM_STEP.RAPID,
|
sV1, MoveV1, MCH_SIM_STEP.RAPID,
|
||||||
@@ -1362,6 +1456,10 @@ function ExecAuxCmd( sCmd, bPathStart)
|
|||||||
ExecOpenRoller( 1)
|
ExecOpenRoller( 1)
|
||||||
ExecOpenRoller( 2)
|
ExecOpenRoller( 2)
|
||||||
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
|
local sV1, MoveV1, sV2, MoveV2 = CalcMoveV1V2ForAuxCmd( Cmd)
|
||||||
|
-- se stringo i rulli e ho lama, verifico che sia in home
|
||||||
|
if MoveV1 and MoveV1 < 400 and ( EMT.HEAD == 'H12' or EMT.HEAD == 'H22') and EMT.ZMAX and not EMT.XHOME then
|
||||||
|
ExecMoveZmax( false, true)
|
||||||
|
end
|
||||||
local bOk, bOk1, bOk2, bOk3, bOk4, bOk5 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
|
local bOk, bOk1, bOk2, bOk3, bOk4, bOk5 = SimulMoveAxes( Cmd[2], tonumber( Cmd[3]), MCH_SIM_STEP.RAPID,
|
||||||
Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID,
|
Cmd[4], tonumber( Cmd[5]), MCH_SIM_STEP.RAPID,
|
||||||
Cmd[6], tonumber( Cmd[7]), MCH_SIM_STEP.RAPID,
|
Cmd[6], tonumber( Cmd[7]), MCH_SIM_STEP.RAPID,
|
||||||
@@ -1383,7 +1481,7 @@ function ExecAuxCmd( sCmd, bPathStart)
|
|||||||
ExecMoveHome( Cmd[2] == '1', EgtIf( bPathStart, false, EMT.MCHSPLIT))
|
ExecMoveHome( Cmd[2] == '1', EgtIf( bPathStart, false, EMT.MCHSPLIT))
|
||||||
elseif Cmd[1] == '11' then
|
elseif Cmd[1] == '11' then
|
||||||
local bClose = Cmd[2] ~= '0'
|
local bClose = Cmd[2] ~= '0'
|
||||||
if bPathStart and EMT.MCHSPLIT and not EMT.FALL and GetPY2Light() then bClose = false end
|
if bPathStart and EMT.MCHSPLIT and not ( EMT.FALL or EMT.TO_FALL) and GetPY2Light() then bClose = false end
|
||||||
ExecMovePY1( bClose)
|
ExecMovePY1( bClose)
|
||||||
elseif Cmd[1] == '12' then
|
elseif Cmd[1] == '12' then
|
||||||
ExecMovePY2( Cmd[2] ~= '0')
|
ExecMovePY2( Cmd[2] ~= '0')
|
||||||
@@ -1542,8 +1640,8 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1' then
|
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1' then
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
||||||
local dZref = HomeZ + GetZExtra( EMT.HEAD, CurrB)
|
local dZref = HomeZ + GetZExtra( EMT.HEAD, EgtClamp( CurrB, -90, 90))
|
||||||
if EgtIf( not EgtGetHeadId( 'H21') or BD.RIGHT_LOAD, -CurrX < -LimX1RotSaw, -CurrX > -LimX1RotSaw) then
|
if EgtIf( BD.RIGHT_LOAD, -CurrX < -LimX1RotSaw, -CurrX > -LimX1RotSaw) then
|
||||||
dZref = dZref - EgtIf( not Mortiser, 100, 370)
|
dZref = dZref - EgtIf( not Mortiser, 100, 370)
|
||||||
end
|
end
|
||||||
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
||||||
@@ -1555,6 +1653,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
end
|
end
|
||||||
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
||||||
if btoXHome then
|
if btoXHome then
|
||||||
|
EMT.XHOME = true
|
||||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
-- se lavorazione in doppio
|
-- se lavorazione in doppio
|
||||||
@@ -1566,6 +1665,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
SimulMoveAxes( 'B2', ParkB2, MCH_SIM_STEP.COLLROT, 'C2', ParkC2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'B2', ParkB2, MCH_SIM_STEP.COLLROT, 'C2', ParkC2, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID)
|
||||||
if bToXHome then
|
if bToXHome then
|
||||||
|
EMT.XHOME = true
|
||||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
EMT.DOU_TO_ZMAX = nil
|
EMT.DOU_TO_ZMAX = nil
|
||||||
@@ -1573,40 +1673,42 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- se sega a catena
|
-- se fresa o lama
|
||||||
if not HeadIsChainSaw( EMT.HEAD) then
|
if not HeadIsChainSaw( EMT.HEAD) then
|
||||||
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
||||||
local dZref = HomeZ + GetZExtra( EMT.HEAD, CurrB)
|
local dZref = HomeZ + GetZExtra( EMT.HEAD, CurrB)
|
||||||
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.HEAD == 'H12' and ( abs( HomeC - CurrC) > 30.1 or abs( HomeB - CurrB) > 30.1) then
|
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
|
||||||
end
|
|
||||||
SimulMoveAxis( 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||||
SimulMoveAxis( 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxis( 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID)
|
||||||
if btoXHome then
|
if btoXHome then
|
||||||
|
EMT.XHOME = true
|
||||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z1', HomeZ, MCH_SIM_STEP.RAPID, 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z1', ParkCSawZ1, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
if btoXHome then
|
if btoXHome then
|
||||||
EgtUnloadTool( EMT.HEAD, 1)
|
EgtUnloadTool( EMT.HEAD, 1)
|
||||||
ShowToolInTcPos( EMT.TCPOS, true)
|
ShowToolInTcPos( EMT.TCPOS, true)
|
||||||
|
-- nascondo l'utensile sulla testa
|
||||||
|
EgtSetMode( EgtGetHeadId( EMT.HEAD or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||||
EMT.PREVTOOL_H1 = nil
|
EMT.PREVTOOL_H1 = nil
|
||||||
EMT.PREVHEAD_H1 = nil
|
EMT.PREVHEAD_H1 = nil
|
||||||
EMT.PREVTCPOS_H1 = nil
|
EMT.PREVTCPOS_H1 = nil
|
||||||
EMT.CHSAW_OUT = true
|
EMT.CHSAW_OUT = true
|
||||||
|
EMT.XHOME = true
|
||||||
end
|
end
|
||||||
SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
@@ -1627,15 +1729,16 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
|||||||
end
|
end
|
||||||
SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z2', MaxZ2, MCH_SIM_STEP.RAPID)
|
||||||
if btoXHome then
|
if btoXHome then
|
||||||
|
EMT.XHOME = true
|
||||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
-- altrimenti sega a catena
|
-- altrimenti sega a catena
|
||||||
else
|
else
|
||||||
SimulMoveAxes( 'Z2', HomeZ, MCH_SIM_STEP.RAPID, 'B2', HomeB, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'Z2', HomeZ, MCH_SIM_STEP.RAPID, 'B2', HomeB, MCH_SIM_STEP.COLLROT)
|
||||||
if EMT.SB > 650 and abs( EMT.R3) < 0.1 then
|
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||||
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
||||||
end
|
end
|
||||||
SimulMoveAxes( 'X2', HomeX, MCH_SIM_STEP.RAPID, 'C2', HomeC, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X2', ParkCSawX2, MCH_SIM_STEP.RAPID, 'C2', HomeC, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
@@ -1762,8 +1865,20 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
|||||||
local DiffY2 = MyParkY2 - PosY2
|
local DiffY2 = MyParkY2 - PosY2
|
||||||
-- se appena eseguito taglio di separazione
|
-- se appena eseguito taglio di separazione
|
||||||
if bSpliCut then
|
if bSpliCut then
|
||||||
|
local dAddMove
|
||||||
|
-- se entrambe le morse si spostano vado in posizione calcolata
|
||||||
|
if DiffY1 > 0.1 and DiffY2 < -0.1 then
|
||||||
|
dAddMove = 0
|
||||||
|
-- se almeno una è rimasta ferma in posizione, allontano comunque di 30mm ulteriori
|
||||||
|
else
|
||||||
|
dAddMove = 30
|
||||||
|
end
|
||||||
local MoveY1 = max( DiffY1, 0.0)
|
local MoveY1 = max( DiffY1, 0.0)
|
||||||
local MoveY2 = min( DiffY2, 0.0)
|
local MoveY2 = min( DiffY2, 0.0)
|
||||||
|
|
||||||
|
MoveY1 = MoveY1 + dAddMove
|
||||||
|
MoveY2 = MoveY2 - dAddMove
|
||||||
|
|
||||||
-- aggancio i pezzi rimanenti all'asse Y1
|
-- aggancio i pezzi rimanenti all'asse Y1
|
||||||
LinkRemainingPartsToY1()
|
LinkRemainingPartsToY1()
|
||||||
-- eseguo i movimenti
|
-- eseguo i movimenti
|
||||||
@@ -1811,7 +1926,7 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
|||||||
local MoveV1 = ParkV1 - PosV1
|
local MoveV1 = ParkV1 - PosV1
|
||||||
local DiffY1 = MyParkY1 - PosY1
|
local DiffY1 = MyParkY1 - PosY1
|
||||||
local MoveY1 = EgtIf( DiffY1 > 0.1, MoveV1, 0)
|
local MoveY1 = EgtIf( DiffY1 > 0.1, MoveV1, 0)
|
||||||
local TryMoveY1 = ParkV1 - PosT - EgtIf( bSpliCut or EMT.FALL, EMT.LT, 0) - EMT.HOVM
|
local TryMoveY1 = min( ParkV1 - PosT - EgtIf( bSpliCut or EMT.FALL, EMT.LT, 0) - EMT.HOVM, MaxY1 - PosY1 - 10)
|
||||||
if ( PosT > ParkV2 - ExtraParkV and PosT < ParkV1 and PosY1 + TryMoveY1 < MaxY1 and not EMT.W2DELTA) then MoveY1 = max( MoveY1, TryMoveY1) end
|
if ( PosT > ParkV2 - ExtraParkV and PosT < ParkV1 and PosY1 + TryMoveY1 < MaxY1 and not EMT.W2DELTA) then MoveY1 = max( MoveY1, TryMoveY1) end
|
||||||
-- se appena eseguito taglio di separazione
|
-- se appena eseguito taglio di separazione
|
||||||
if bSpliCut then
|
if bSpliCut then
|
||||||
@@ -1841,7 +1956,7 @@ function ExecParkRoller( PosY1, PosY2, PosV1, PosV2, bSpliCut, bAgg)
|
|||||||
local MoveV2 = ParkV2 - PosV2
|
local MoveV2 = ParkV2 - PosV2
|
||||||
local DiffY2 = MyParkY2 - PosY2
|
local DiffY2 = MyParkY2 - PosY2
|
||||||
local MoveY2 = EgtIf( DiffY2 < -0.1, MoveV2, 0)
|
local MoveY2 = EgtIf( DiffY2 < -0.1, MoveV2, 0)
|
||||||
local TryMoveY2 = ParkV2 - PosT - EMT.LT - EMT.DELTA_LT - EMT.HOVM
|
local TryMoveY2 = max( ParkV2 - PosT - EMT.LT - EMT.DELTA_LT - EMT.HOVM, MinY2 - PosY2 + 10)
|
||||||
if ( PosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM < ParkV1 + ExtraParkV and PosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM > ParkV2 and PosY2 + TryMoveY2 > MinY2) then MoveY2 = min( MoveY2, TryMoveY2) end
|
if ( PosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM < ParkV1 + ExtraParkV and PosT + EMT.LT + EMT.DELTA_LT + EMT.HOVM > ParkV2 and PosY2 + TryMoveY2 > MinY2) then MoveY2 = min( MoveY2, TryMoveY2) end
|
||||||
if not SimulMoveAxes( 'T', PosT + MoveY2, MCH_SIM_STEP.RAPID,
|
if not SimulMoveAxes( 'T', PosT + MoveY2, MCH_SIM_STEP.RAPID,
|
||||||
'V1', ParkV1, MCH_SIM_STEP.RAPID,
|
'V1', ParkV1, MCH_SIM_STEP.RAPID,
|
||||||
@@ -2095,6 +2210,9 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetV1ToClose()
|
function GetV1ToClose()
|
||||||
|
if EMT.MCHPRECUT or EMT.MCHCUT then
|
||||||
|
return false
|
||||||
|
end
|
||||||
--EgtOutLog( string.format( 'L1m=%.3f L1M=%.3f V2NP=%.3f LB=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1], EMT.V2NEXTPOS, EMT.LB))
|
--EgtOutLog( string.format( 'L1m=%.3f L1M=%.3f V2NP=%.3f LB=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1], EMT.V2NEXTPOS, EMT.LB))
|
||||||
--EgtOutLog( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT or 0))
|
--EgtOutLog( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT or 0))
|
||||||
return ( EMT.MAXMAX[1] <= EMT.V1NEXTPOS + RollCageMin and EMT.MAXMIN[1] + EMT.LB >= EMT.V1NEXTPOS + RollCageMax)
|
return ( EMT.MAXMAX[1] <= EMT.V1NEXTPOS + RollCageMin and EMT.MAXMIN[1] + EMT.LB >= EMT.V1NEXTPOS + RollCageMax)
|
||||||
@@ -2109,11 +2227,17 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function ShowToolInTcPos( sTcPos, bShow)
|
function ShowToolInTcPos( sTcPos, bShow)
|
||||||
|
-- recupero identificativo della posizione sul TC
|
||||||
|
local TcPosId = EgtGetTcPosId( sTcPos or '')
|
||||||
|
if not TcPosId then return end
|
||||||
-- recupero il gruppo dell'utensile
|
-- recupero il gruppo dell'utensile
|
||||||
local TcExitId = EgtGetFirstNameInGroup( EgtGetTcPosId( sTcPos or '') or GDB_ID.NULL, 'T1')
|
local TcExitId = EgtGetFirstNameInGroup( TcPosId or GDB_ID.NULL, 'T1')
|
||||||
if not TcExitId then return end
|
if not TcExitId then return end
|
||||||
-- imposto lo stato di visualizzazione
|
-- imposto lo stato di visualizzazione
|
||||||
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
|
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
|
||||||
|
-- recupero eventuale gruppo ausiliario da visualizzare/nascondere
|
||||||
|
local TcHSId = EgtGetFirstNameInGroup( TcPosId, sTcPos .. '_HS')
|
||||||
|
if TcHSId then EgtSetStatus( TcHSId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF)) end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -2134,7 +2258,7 @@ function LoadNextTool( nHSet, sTcPosDef, bFirst)
|
|||||||
if vTools and vTools[1] and #(vTools[1]) > 0 then
|
if vTools and vTools[1] and #(vTools[1]) > 0 then
|
||||||
sTool = vTools[1]
|
sTool = vTools[1]
|
||||||
sTcPos = sTcPosDef
|
sTcPos = sTcPosDef
|
||||||
if Progress then
|
if Progress or SecondToolChanger then
|
||||||
sHead = EgtIf( sTcPos == 'T11', 'H12', 'H11')
|
sHead = EgtIf( sTcPos == 'T11', 'H12', 'H11')
|
||||||
elseif nHSet == 1 then
|
elseif nHSet == 1 then
|
||||||
sHead = EgtIf( sTcPos == 'T1', 'H12', 'H11')
|
sHead = EgtIf( sTcPos == 'T1', 'H12', 'H11')
|
||||||
@@ -2191,6 +2315,9 @@ local FALL_T = 2 * ESTIMATION_RAPID_COEFF -- s
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnEstimStart()
|
function OnEstimStart()
|
||||||
EMT.INCHES = not EgtUiUnitsAreMM() -- unità di misura mm/inches
|
EMT.INCHES = not EgtUiUnitsAreMM() -- unità di misura mm/inches
|
||||||
|
EMT.FMAXPINZE = EgtClamp( MaxFeedPinze or 102000, 20000, 102000) -- feed massima pinze
|
||||||
|
EMT.MAXACC = MaxAcc or ( EMT.FMAXPINZE / ( 60 * 0.3)) -- accelerazione massima pinze
|
||||||
|
EMT.MINACC = MinAcc or ( EMT.FMAXPINZE / ( 60 * 4)) -- accelerazione minima pinze
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -2276,6 +2403,15 @@ function OnEstimDispositionEnd()
|
|||||||
EMT.OPEISDISP = false
|
EMT.OPEISDISP = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function OnEstimRawMoveData()
|
||||||
|
-- se start del pezzo
|
||||||
|
if IsStartOrRestPhase( EMT.PHASE) then
|
||||||
|
EMT.SPLIT = false
|
||||||
|
end
|
||||||
|
OnRawMoveData()
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnEstimToolSelect()
|
function OnEstimToolSelect()
|
||||||
-- reset indice utensile in tabella lunghezze
|
-- reset indice utensile in tabella lunghezze
|
||||||
@@ -2332,6 +2468,12 @@ function OnEstimMachiningEnd()
|
|||||||
EMT.TLE_NAME = nil
|
EMT.TLE_NAME = nil
|
||||||
EMT.TLE_TIME = nil
|
EMT.TLE_TIME = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
EMT.MCHUSERNOTES = EgtGetMachiningParam( MCH_MP.USERNOTES) or ''
|
||||||
|
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
||||||
|
if EMT.MCHSPLIT then
|
||||||
|
EMT.SPLIT = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
@@ -2457,11 +2599,11 @@ function OnEstimRapid()
|
|||||||
EMT.MCHEXTLEN = EMT.MCHEXTLEN + dLen
|
EMT.MCHEXTLEN = EMT.MCHEXTLEN + dLen
|
||||||
-- calcolo tempo
|
-- calcolo tempo
|
||||||
local dTime = RAPID_MIN_T
|
local dTime = RAPID_MIN_T
|
||||||
local dT1 = abs( dL1) / RAPID_X_FEED * 60
|
local dT1 = CalcMoveTime( abs( dL1), RAPID_X_FEED, EMT.SPLIT)
|
||||||
if dT1 > dTime then dTime = dT1 end
|
if dT1 > dTime then dTime = dT1 end
|
||||||
local dT2 = abs( dL2) / RAPID_Y_FEED * 60
|
local dT2 = CalcMoveTime( abs( dL2), EMT.FMAXPINZE, EMT.SPLIT)
|
||||||
if dT2 > dTime then dTime = dT2 end
|
if dT2 > dTime then dTime = dT2 end
|
||||||
local dT3 = abs( dL3) / RAPID_Z_FEED * 60
|
local dT3 = CalcMoveTime( abs( dL3), RAPID_Z_FEED, EMT.SPLIT)
|
||||||
if dT3 > dTime then dTime = dT3 end
|
if dT3 > dTime then dTime = dT3 end
|
||||||
local dT4 = abs( dR1) / RAPID_C_FEED * 60
|
local dT4 = abs( dR1) / RAPID_C_FEED * 60
|
||||||
if dT4 > dTime then dTime = dT4 end
|
if dT4 > dTime then dTime = dT4 end
|
||||||
@@ -2483,7 +2625,7 @@ function OnEstimLinear()
|
|||||||
local dLen = sqrt( dL1 * dL1 + dL2 * dL2 + dL3 * dL3)
|
local dLen = sqrt( dL1 * dL1 + dL2 * dL2 + dL3 * dL3)
|
||||||
EMT.MCHCUTLEN = EMT.MCHCUTLEN + dLen
|
EMT.MCHCUTLEN = EMT.MCHCUTLEN + dLen
|
||||||
-- calcolo tempo
|
-- calcolo tempo
|
||||||
local dTime = dLen / EMT.F * 60
|
local dTime = CalcMoveTime( dLen, EMT.F, EMT.SPLIT)
|
||||||
EMT.MCHCUTTIME = EMT.MCHCUTTIME + dTime
|
EMT.MCHCUTTIME = EMT.MCHCUTTIME + dTime
|
||||||
EgtOutLog( string.format( ' G1 Len=%.0f Time=%.2f', dLen, dTime), 5)
|
EgtOutLog( string.format( ' G1 Len=%.0f Time=%.2f', dLen, dTime), 5)
|
||||||
-- aggiorno valori come precedenti
|
-- aggiorno valori come precedenti
|
||||||
@@ -2704,7 +2846,7 @@ function GetNextChainSawingVirtualAxis( MchId)
|
|||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetNextTool( nMchId)
|
function GetNextTool( nMchId, bResetOnStart)
|
||||||
-- inizializzo prossimo utensile
|
-- inizializzo prossimo utensile
|
||||||
local sNextTool
|
local sNextTool
|
||||||
-- recupero lavorazione successiva
|
-- recupero lavorazione successiva
|
||||||
@@ -2712,7 +2854,7 @@ function GetNextTool( nMchId)
|
|||||||
while nNextMchId do
|
while nNextMchId do
|
||||||
-- se la prossima lavorazione è lo start di un altro pezzo, faccio finta che cambia utensile in modo che vada in parcheggio con utensili speciali
|
-- se la prossima lavorazione è lo start di un altro pezzo, faccio finta che cambia utensile in modo che vada in parcheggio con utensili speciali
|
||||||
if EgtGetOperationType( nNextMchId) == MCH_OY.DISP then
|
if EgtGetOperationType( nNextMchId) == MCH_OY.DISP then
|
||||||
if IsStartOrRestPhase( EMT.PHASE+1) then
|
if IsStartOrRestPhase( EMT.PHASE+1) and bResetOnStart then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@@ -2737,7 +2879,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
||||||
if sHead == 'H11' or sHead == 'H12' or HeadIsChainSaw( sHead) then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H17' or HeadIsChainSaw( sHead) then
|
||||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||||
elseif sHead == 'H21' or sHead == 'H22' or HeadIsChainSaw( sHead) then
|
elseif sHead == 'H21' or sHead == 'H22' or HeadIsChainSaw( sHead) then
|
||||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||||
@@ -2755,5 +2897,40 @@ function GetCmdAxMove( Cmd, sAx)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function CalcDinamicaPinze( dH, dS, dL)
|
||||||
|
local KgMtCubo= WoodDensity or 550 -- densità legno [Kg / metro cubo]
|
||||||
|
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
||||||
|
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
||||||
|
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
||||||
|
local TempoAcc = ( ( Massa * FMaxPinze) / ( 60 * ForzaAttrito) / 1000)
|
||||||
|
local AccMaxPinze = EMT.MAXACC
|
||||||
|
local AccPinze = EgtClamp( FMaxPinze / ( 60 * TempoAcc), EMT.MINACC, EMT.MAXACC)
|
||||||
|
local RidFeed = 100 / Massa * 100
|
||||||
|
if RidFeed > 100 then
|
||||||
|
RidFeed = 100
|
||||||
|
elseif RidFeed < 10 then
|
||||||
|
RidFeed = 10
|
||||||
|
end
|
||||||
|
return AccPinze, AccMaxPinze, RidFeed
|
||||||
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function CalcMoveTime( dPathLen, dFeed, bIsSplitted)
|
||||||
|
local dTime
|
||||||
|
local dFeedInSec = dFeed / 60
|
||||||
|
local dAcc, _, _ = CalcDinamicaPinze( EMT.HB, EMT.SB, EgtIf( bIsSplitted, EMT.LT, EMT.LB))
|
||||||
|
|
||||||
|
-- Caso 1: dFeed raggiunta
|
||||||
|
if dPathLen >= ( dFeedInSec ^ 2) / dAcc then
|
||||||
|
dTime = ( dFeedInSec / dAcc) + ( dPathLen / dFeedInSec)
|
||||||
|
-- Caso 2: dFeed non raggiunta
|
||||||
|
else
|
||||||
|
dTime = 2 * sqrt( dPathLen / dAcc)
|
||||||
|
end
|
||||||
|
|
||||||
|
return dTime
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- *** END GENERAL ***
|
-- *** END GENERAL ***
|
||||||
|
|||||||
+72
-30
@@ -7,6 +7,31 @@ EgtEnableDebug( false)
|
|||||||
-- Carico libreria
|
-- Carico libreria
|
||||||
local BD = require( 'BeamData')
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Generic Machinings ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
require( 'EmtGenMachining')
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-- *** Special GetPrevMachiningOffset ***
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
-----------------------------------------------------------------------------------------
|
||||||
|
function OnSpecialGetPrevMachiningOffset()
|
||||||
|
-- default
|
||||||
|
EMC.ERR = 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)
|
||||||
|
if EMC.PREVPHASE ~= EMC.CURRPHASE then
|
||||||
|
-- se la fase corrente è di inizio lavorazione di nuova trave
|
||||||
|
if IsStartOrRestPhase( EMC.CURRPHASE) then
|
||||||
|
-- recupero la posizione finale della lavorazione precedente
|
||||||
|
local vPrevAx = EmtGetFinalAxesPos( EMC.PREVMCHID)
|
||||||
|
-- la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset
|
||||||
|
EMC.PREVOFFSX = ParkV1 - vPrevAx[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
---------------------- OnSpecialGetMaxZ -----------------------------
|
---------------------- OnSpecialGetMaxZ -----------------------------
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function CalcExtraZ( vtTp, vtT, vMZ)
|
local function CalcExtraZ( vtTp, vtT, vMZ)
|
||||||
@@ -72,8 +97,8 @@ function OnSpecialGetMaxZ()
|
|||||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
||||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||||
@@ -95,7 +120,7 @@ function OnSpecialGetMaxZ()
|
|||||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2' then
|
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2' then
|
||||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||||
@@ -124,7 +149,7 @@ function OnSpecialGetMaxZ()
|
|||||||
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||||
end
|
end
|
||||||
elseif EMC.HEAD == 'H22' then
|
elseif EMC.HEAD == 'H22' then
|
||||||
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
|
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||||
EMC.MAXZ = MaxZ2 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
EMC.MAXZ = MaxZ2 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||||
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
|
||||||
@@ -173,7 +198,7 @@ function OnSpecialMoveZup()
|
|||||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
||||||
;
|
;
|
||||||
-- se lama posizionata su CU prossimo a testa 1
|
-- se lama posizionata su CU prossimo a testa 1
|
||||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||||
-- se inclinata oltre 90 gradi e interferisce con la trave
|
-- se inclinata oltre 90 gradi e interferisce con la trave
|
||||||
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
||||||
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
||||||
@@ -223,7 +248,7 @@ local MIN_BACK_ENG_V = 115 -- ingombro asse Z a sinistra
|
|||||||
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
||||||
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
||||||
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
||||||
local MAX_BACK_CLAMP_5 = 320 -- massima sporgenza posteriore del pezzo da pinza speciale
|
local MAX_BACK_CLAMP_5 = EgtClamp( MaxBackClamp5 or 320, 200, 380) -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||||
|
|
||||||
----------------------- Variabili -----------------------------------
|
----------------------- Variabili -----------------------------------
|
||||||
local Test = false
|
local Test = false
|
||||||
@@ -824,6 +849,13 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreRotMch)
|
function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreRotMch)
|
||||||
|
-- mi salvo info lavorazione su una lista
|
||||||
|
local AuxInfoMach = {}
|
||||||
|
AuxInfoMach.bPreSplit = bPreSplit
|
||||||
|
AuxInfoMach.bSplitting = bSplitting
|
||||||
|
AuxInfoMach.bPreCut = bPreCut
|
||||||
|
AuxInfoMach.bCutting = bCutting
|
||||||
|
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) or IsMid2Phase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
SPLIT = IsEndPhase( EMC.PHASE) or IsMid2Phase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
|
||||||
@@ -921,7 +953,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
|||||||
local dPosT = LoadT
|
local dPosT = LoadT
|
||||||
if IsFirstMachiningAfterRotation( EMC.MCHID) then dPosT = dPosT + TurnerOffs end
|
if IsFirstMachiningAfterRotation( EMC.MCHID) then dPosT = dPosT + TurnerOffs end
|
||||||
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin + EgtIf( SPLIT, EMC.TCING, 0), EMC.LB - ( MaxY1 - MinY1) + 6))
|
local vCmd = SpecCalcLoad( dPosT, dDistFront, max( dDistBack, MinJoin + EgtIf( SPLIT, EMC.TCING, 0), EMC.LB - ( MaxY1 - MinY1) + 6))
|
||||||
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
local vCmd2 = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||||
if bSplitting and EMC.ERR == 18 then
|
if bSplitting and EMC.ERR == 18 then
|
||||||
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
table.insert( vCmd, { 22, dRollBack, -dRollFront})
|
||||||
end
|
end
|
||||||
@@ -934,7 +966,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
|
|||||||
|
|
||||||
-- Se altrimenti carri entrambi diponibili, eseguo calcoli per carrelli
|
-- Se altrimenti carri entrambi diponibili, eseguo calcoli per carrelli
|
||||||
elseif not IsEndPhase( EMC.PHASE) then
|
elseif not IsEndPhase( EMC.PHASE) then
|
||||||
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
local vCmd = SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||||
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
-- Se non ci sono spostamenti, confermo i parametri di aggancio e di posizione roller
|
||||||
if SpecTestOnlyRemarkInCmds( vCmd) then
|
if SpecTestOnlyRemarkInCmds( vCmd) then
|
||||||
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
|
||||||
@@ -1262,7 +1294,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
|
|||||||
end -- SpecAdjustLoad [L]
|
end -- SpecAdjustLoad [L]
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar)
|
function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1DeltaMaxSP, dY2DeltaMinUL, nChar, AuxInfoMach)
|
||||||
|
|
||||||
local MinFrontJoin = MinJoin + EMC.HCING + EMC.HOVM
|
local MinFrontJoin = MinJoin + EMC.HCING + EMC.HOVM
|
||||||
local MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
local MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
|
||||||
@@ -1301,13 +1333,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
|||||||
WorkTab.dV2PosF = -dRollFront
|
WorkTab.dV2PosF = -dRollFront
|
||||||
WorkTab.bV2CloseF = false
|
WorkTab.bV2CloseF = false
|
||||||
|
|
||||||
-- aggiuntivo per non avere problemi con pezzi a caduta
|
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
|
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
|
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
|
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
|
end
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
|
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- verifico validità intervallo ammesso per Y1
|
-- verifico validità intervallo ammesso per Y1
|
||||||
@@ -1346,13 +1376,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
|
|||||||
WorkTab.dV2PosF = -dRollFront
|
WorkTab.dV2PosF = -dRollFront
|
||||||
WorkTab.bV2CloseF = false
|
WorkTab.bV2CloseF = false
|
||||||
|
|
||||||
-- aggiuntivo per minimizzare scambi carrelli
|
-- dopo che si è calcolato il minimo e massimo dell'intervallo, verifico che in testa rimanga almeno il minimo per poter fare passaggio pinze e scaricare
|
||||||
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
|
if AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
|
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
|
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
|
end
|
||||||
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
|
|
||||||
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- verifico validità intervallo ammesso per Y1
|
-- verifico validità intervallo ammesso per Y1
|
||||||
@@ -1420,7 +1448,14 @@ function SpecCalcSplit( dLenRaw, dMaxLenLeft)
|
|||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
EgtOutLog( ' *[S]', 1)
|
EgtOutLog( ' *[S]', 1)
|
||||||
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
|
||||||
local ParkT = EgtIf( bSplit and dMaxLenLeft > ParkV1 - 50, LoadT, ParkV1)
|
local ParkT = ParkV1
|
||||||
|
if bSplit then
|
||||||
|
if dMaxLenLeft + 100 > LoadT then
|
||||||
|
ParkT = dMaxLenLeft + 300
|
||||||
|
elseif dMaxLenLeft + 100 > ParkV1 then
|
||||||
|
ParkT = LoadT
|
||||||
|
end
|
||||||
|
end
|
||||||
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
local sType = EgtIf( EMC.Y2DELTA, 'Split', EgtIf( EMC.W2DELTA, 'SpecSplit', 'Fall'))
|
||||||
table.insert( vCmd, { 0, sType})
|
table.insert( vCmd, { 0, sType})
|
||||||
if not bSplit then EnsureZmax( false, vCmd) end
|
if not bSplit then EnsureZmax( false, vCmd) end
|
||||||
@@ -1543,8 +1578,11 @@ function SpecCalcUnload()
|
|||||||
EgtOutLog( ' *[U1]', 1)
|
EgtOutLog( ' *[U1]', 1)
|
||||||
end
|
end
|
||||||
local vCmd = {}
|
local vCmd = {}
|
||||||
|
-- Tipo di scarico
|
||||||
|
local bStdUl = ( not MaxUnloadLen or MaxUnloadLen < 1 or EMC.LB - EMC.HOVM < MaxUnloadLen + 1)
|
||||||
|
|
||||||
-- Commento
|
-- Commento
|
||||||
table.insert( vCmd, { 0, 'Unloading'})
|
table.insert( vCmd, { 0, 'Unloading', EgtIf( bStdUl, 'Unloading', 'Manual Unloading')})
|
||||||
-- posizionamento sicuro teste e rulli (non serve ?)
|
-- posizionamento sicuro teste e rulli (non serve ?)
|
||||||
--table.insert( vCmd, { 4, 0})
|
--table.insert( vCmd, { 4, 0})
|
||||||
-- Se pinza Y chiusa, la apro
|
-- Se pinza Y chiusa, la apro
|
||||||
@@ -1552,11 +1590,15 @@ function SpecCalcUnload()
|
|||||||
table.insert( vCmd, { 11, 0})
|
table.insert( vCmd, { 11, 0})
|
||||||
EMC.CNT = nil
|
EMC.CNT = nil
|
||||||
end
|
end
|
||||||
-- Sposto il pezzo in posizione di scarico
|
-- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico
|
||||||
local dFinT = UnloadT - EMC.LB
|
if bStdUl then
|
||||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
local dFinT = UnloadT - EMC.LB
|
||||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||||
|
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||||
|
else
|
||||||
|
table.insert( vCmd, { 1, 'Y2', MaxY2})
|
||||||
|
end
|
||||||
-- 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
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ Active=1
|
|||||||
H11.1=Standard.nge
|
H11.1=Standard.nge
|
||||||
H11.1:MILL_NOTIP=MillNoTip.nge
|
H11.1:MILL_NOTIP=MillNoTip.nge
|
||||||
H12.1=Saw.nge
|
H12.1=Saw.nge
|
||||||
|
H17.1=AngTransmBH.nge
|
||||||
H21.1=Standard.nge
|
H21.1=Standard.nge
|
||||||
H21.1:MILL_NOTIP=MillNoTip.nge
|
H21.1:MILL_NOTIP=MillNoTip.nge
|
||||||
H22.1=Saw.nge
|
H22.1=Saw.nge
|
||||||
@@ -130,6 +131,8 @@ ExitScript=ExitMach.lua
|
|||||||
H11=6608
|
H11=6608
|
||||||
; 5 axis saw
|
; 5 axis saw
|
||||||
H12=6615
|
H12=6615
|
||||||
|
; Angular transmission
|
||||||
|
H17=6617
|
||||||
; Second 5 axis head
|
; Second 5 axis head
|
||||||
H21=6620
|
H21=6620
|
||||||
; Second 5 axis saw
|
; Second 5 axis saw
|
||||||
|
|||||||
+70
-54
@@ -24,54 +24,18 @@
|
|||||||
-- 2023/02/02 ver 2.5b1 Aggiunte lavorazioni in doppio e gestione eventuale mortasatrice.
|
-- 2023/02/02 ver 2.5b1 Aggiunte lavorazioni in doppio e gestione eventuale mortasatrice.
|
||||||
-- 2023/02/03 ver 2.5b2 Gestione controllo NUM (TIPO_CN = 0->Axium vecchio, 2->Flexium). Migliorata gestione Pinza5 (MAX_BACK_CLAMP_5).
|
-- 2023/02/03 ver 2.5b2 Gestione controllo NUM (TIPO_CN = 0->Axium vecchio, 2->Flexium). Migliorata gestione Pinza5 (MAX_BACK_CLAMP_5).
|
||||||
-- 2023/03/03 ver 2.5c1 Correzione per lav.ne in doppio dopo taglio con sega a catena.
|
-- 2023/03/03 ver 2.5c1 Correzione per lav.ne in doppio dopo taglio con sega a catena.
|
||||||
-- 2023/03/20 ver 2.5c2 Abbassato a 379 limite trave alta per discesa passando da B0.
|
-------------------------------------
|
||||||
-- 2023/03/23 ver 2.5c3 Corretti valori risalita a Zsafe per frese e lame (mlse).
|
-- NOTE VERSIONI SUCCESSIVE IN GIT --
|
||||||
-- 2023/04/05 ver 2.5d1 Riportate modifiche da PFrl compresa eliminazione H14. Migliorata gestione Pinza5 e aggiunto DeltaW.
|
-------------------------------------
|
||||||
-- 2023/04/05 ver 2.5d2 In generazione CN corretta verifica movimenti pinze o rulli per necessità G151/G152.
|
|
||||||
-- 2023/04/20 ver 2.5d3 Aggiunta gestione AggLoad da sommare a V1 quando movimento causato da Y1 per AuxCmd (flag * da mlse).
|
|
||||||
-- 2023/04/21 ver 2.5d4 Migliorato riposizionamento testa trave dopo scambio carrelli (ExtraParkV a 100).
|
|
||||||
-- 2023/05/05 ver 2.5e1 Corretta deselezione utensile sega a catena in simulazione.
|
|
||||||
-- 2023/05/09 ver 2.5e2 Corretto riposizionamento carrelli su split con pezzi a caduta. In generazione CN corretto controllo conservazione piano impostato.
|
|
||||||
-- 2023/06/09 ver 2.5f1 In genera CN corretta risalita in Z come in simulazione (riportata da PFrl).
|
|
||||||
-- 2023/06/12 ver 2.5f2 Corretta distanza Back per aggiuntivo al carico prima di scambi carrelli.
|
|
||||||
-- 2023/06/15 ver 2.5f3 Tolte da teste per lame forzature risalite in Z. In generaz. CN aggiunto M05 su ultima lavorazione prima di SpecUnloading o Fall.
|
|
||||||
-- 2023/07/31 ver 2.5g1 Aggiunta apertura V1 allo scarico finale di barra con uso di entrambe Y1 e Y2 (#1399).
|
|
||||||
-- 2023/08/07 ver 2.5h1 In split prima di rotazione migliorato controllo spazio dietro per scambio carrelli. Ripristinata forzatura risalita in Z per lame se DeltaAng > 210 e HzPezzo > 610.
|
|
||||||
-- 2023/09/29 ver 2.5j1 In BeamData e mlde aggiunta la lettura di alcuni parametri da Ts3Data.
|
|
||||||
-- 2023/10/24 ver 2.5j2 Allo scarico pezzo, se necessario si apre paratia 3 (V2) prima dello scarico effettivo perchè questo senza attesa termine esecuzione.
|
|
||||||
-- 2023/11/07 ver 2.5k1 Corretto comportamento in simulazione se motosega come prima lavorazione della fase.
|
|
||||||
-- 2023/11/28 ver 2.6a1 Prima versione con utilizzo post-processore standard per macchine ONE e PF
|
|
||||||
-- 2024/01/22 ver 2.6a2 Allineamento con common ver 2.6a2
|
|
||||||
-- 2024/01/23 ver 2.6a3 Allineamento con common ver 2.6a3
|
|
||||||
-- 2024/01/23 ver 2.6a4 Allineamento con common ver 2.6a4
|
|
||||||
-- In BeamData, parametro VICE_MINH portato a 1000
|
|
||||||
-- 2024/02/19 ver 2.6b1 In BeamData aggiunta funzione GetBlockedAxis che sostituisce la GetChainSawBlockedAxis.
|
|
||||||
-- 2024/02/23 ver 2.6b2 Allineamento con common ver. 2.6b2; in mlde aggiunte chiamate EgtAddToPackagePath
|
|
||||||
-- 2024/02/29 ver 2.6c1 Allineamento con common ver. 2.6c1
|
|
||||||
-- 2024/03/04 ver 2.6c2 Modificato log con nome macchina
|
|
||||||
-- Allineamento con common ver. 2.6c2
|
|
||||||
-- 2024/03/05 ver 2.6c3 Allineamento con common ver. 2.6c3
|
|
||||||
-- In mlde aggiunto parametro EstimationRapidMultiplier per correggere la stima tempi su macchine vecchie. Letto anche da TS3v7 come COEFF_STIMATEMPI.
|
|
||||||
-- 2024/03/28 ver 2.6d1 Allineamento con common ver. 2.6d1
|
|
||||||
-- 2024/04/12 ver 2.6d2 Allineamento con common ver. 2.6d2
|
|
||||||
-- Aggiunto parametro ForceToCloseRollersGate
|
|
||||||
-- 2024/04/30 ver 2.6e1 Allineamento con common ver. 2.6e1
|
|
||||||
-- Aggiunta variabile WoodDensity per gestione WOOD_DENSITY
|
|
||||||
-- 2024/06/03 ver 2.6f1 Aggiunta funzione GetSetupInfo a BeamData per nuovo automatismo
|
|
||||||
-- Allineamento con common ver. 2.6f1
|
|
||||||
-- 2024/07/10 ver 2.6g1 Allineamento con common ver. 2.6g1
|
|
||||||
-- 2024/07/16 ver 2.6g2 Allineamento con common ver. 2.6g2
|
|
||||||
-- 2024/07/17 ver 2.6g3 Allineamento con common ver. 2.6g3
|
|
||||||
-- 2024/07/22 ver 2.6g4 Gestione pezzi fino a 30 metri
|
|
||||||
-- Allineamento con common ver. 2.6g4
|
|
||||||
|
|
||||||
-- Intestazioni
|
-- Intestazioni
|
||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '2.6g4_DEV'
|
PP_VER = '2.7j2'
|
||||||
|
PP_NVER = '2.7.10.2'
|
||||||
MIN_MACH_VER = '2.5k1'
|
MIN_MACH_VER = '2.5k1'
|
||||||
MACH_NAME = 'Essetre-PF'
|
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio
|
||||||
|
|
||||||
|
|
||||||
-- Carico i dati globali
|
-- Carico i dati globali
|
||||||
@@ -180,6 +144,8 @@ ParkCSaw0Z2 = -400
|
|||||||
ParkCSawC2 = 90
|
ParkCSawC2 = 90
|
||||||
ParkCSaw0C2 = 0
|
ParkCSaw0C2 = 0
|
||||||
ParkCSawB2 = 0
|
ParkCSawB2 = 0
|
||||||
|
AngTrBHOffs = 154.5
|
||||||
|
AngTrBHLen = 90
|
||||||
TurnerOffs = 120.0
|
TurnerOffs = 120.0
|
||||||
AggLoad = 50
|
AggLoad = 50
|
||||||
DeltaTabY = 1550.0
|
DeltaTabY = 1550.0
|
||||||
@@ -199,9 +165,9 @@ SecondSaw = false
|
|||||||
AutomaticRotation = true
|
AutomaticRotation = true
|
||||||
OptimizedLoadBeam = true
|
OptimizedLoadBeam = true
|
||||||
AutoRotMinLen = 0
|
AutoRotMinLen = 0
|
||||||
CoeffVM = 0.5
|
|
||||||
EstimationRapidMultiplier = 1
|
EstimationRapidMultiplier = 1
|
||||||
ForceToCloseRollersGate = false
|
ForceToCloseRollersGate = false
|
||||||
|
AggreBlockHaus = false
|
||||||
|
|
||||||
-- Aggiornamento con dati da TechnoEssetre7
|
-- Aggiornamento con dati da TechnoEssetre7
|
||||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF.data"
|
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF.data"
|
||||||
@@ -285,9 +251,17 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
||||||
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
||||||
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
||||||
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||||
|
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
||||||
|
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
||||||
|
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
||||||
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||||
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
||||||
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
||||||
|
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||||
|
AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH or AngTrBHOffs
|
||||||
|
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||||
|
if Machine.Offsets.MAX_BACK_CLAMP_5 then MaxBackClamp5 = Machine.Offsets.MAX_BACK_CLAMP_5 end
|
||||||
-- aggiustamenti
|
-- aggiustamenti
|
||||||
MinY1 = MinV1 + MinDeltaYV
|
MinY1 = MinV1 + MinDeltaYV
|
||||||
MaxY1 = MaxMchY1
|
MaxY1 = MaxMchY1
|
||||||
@@ -335,7 +309,7 @@ local X1Id = EmtAxis {
|
|||||||
Home = ParkX1,
|
Home = ParkX1,
|
||||||
Invert = true,
|
Invert = true,
|
||||||
Geo = 'X1_AXIS/GEO',
|
Geo = 'X1_AXIS/GEO',
|
||||||
Aux = 'X1_AXIS/SOLID'}
|
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
||||||
-- *** Testa 1 ***
|
-- *** Testa 1 ***
|
||||||
EmtAxis {
|
EmtAxis {
|
||||||
Name = 'Z1',
|
Name = 'Z1',
|
||||||
@@ -397,6 +371,23 @@ local H12Id = EmtHead {
|
|||||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||||
Geo = 'H12_HEAD/GEO'}
|
Geo = 'H12_HEAD/GEO'}
|
||||||
EgtSetInfo( H12Id, 'ZMAXONROT', '1,210,610')
|
EgtSetInfo( H12Id, 'ZMAXONROT', '1,210,610')
|
||||||
|
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
local H17Id = EmtHead {
|
||||||
|
Name = 'H17',
|
||||||
|
Parent = 'B1',
|
||||||
|
HSet = 'H11',
|
||||||
|
Type = MCH_HT.STD,
|
||||||
|
Pos = Point3d( -AngTrBHLen, 0, -AngTrBHOffs),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = Z_AX(),
|
||||||
|
Rot1W = 0.2,
|
||||||
|
SolCh = MCH_SCC.ADIR_NEAR,
|
||||||
|
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||||
|
Geo = 'H17_HEAD/GEO',
|
||||||
|
Aux = {'H17_HEAD/SOLID', 'H17_HEAD/COLLISION'}}
|
||||||
|
end
|
||||||
|
|
||||||
-- *** Testa 2 ***
|
-- *** Testa 2 ***
|
||||||
local X2Id = EmtAxis {
|
local X2Id = EmtAxis {
|
||||||
Name = 'X2',
|
Name = 'X2',
|
||||||
@@ -409,7 +400,7 @@ local X2Id = EmtAxis {
|
|||||||
Home = ParkX2,
|
Home = ParkX2,
|
||||||
Invert = true,
|
Invert = true,
|
||||||
Geo = 'X2_AXIS/GEO',
|
Geo = 'X2_AXIS/GEO',
|
||||||
Aux = 'X2_AXIS/SOLID'}
|
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
||||||
local Z2Id = EmtAxis {
|
local Z2Id = EmtAxis {
|
||||||
Name = 'Z2',
|
Name = 'Z2',
|
||||||
Parent = 'X2',
|
Parent = 'X2',
|
||||||
@@ -445,6 +436,7 @@ local B2Id = EmtAxis {
|
|||||||
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
||||||
local vtMove2 = Vector3d( 0, Head2Y, Head2Z)
|
local vtMove2 = Vector3d( 0, Head2Y, Head2Z)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||||
@@ -657,6 +649,7 @@ EmtTable {
|
|||||||
Parent = 'T',
|
Parent = 'T',
|
||||||
Type = MCH_TT.FLAT,
|
Type = MCH_TT.FLAT,
|
||||||
Ref1 = Point3d( - DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
Ref1 = Point3d( - DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
||||||
|
Coll = 'Base/BELT',
|
||||||
Geo = 'TABLE/GEO',
|
Geo = 'TABLE/GEO',
|
||||||
Aux = 'TABLE/SOLID'}
|
Aux = 'TABLE/SOLID'}
|
||||||
-- *** ToolChanger ***
|
-- *** ToolChanger ***
|
||||||
@@ -711,13 +704,24 @@ EmtTcPos {
|
|||||||
TDir = -Y_AX(),
|
TDir = -Y_AX(),
|
||||||
ADir = -X_AX(),
|
ADir = -X_AX(),
|
||||||
Geo = 'BASE/T8'}
|
Geo = 'BASE/T8'}
|
||||||
EmtTcPos {
|
if AggreBlockHaus then
|
||||||
|
local TcpSsId = EmtTcPos {
|
||||||
|
Name = 'T9',
|
||||||
|
Parent = 'Base',
|
||||||
|
Pos = ptTc1 + 8 * vtDt1 + Vector3d( -AngTrBHLen, AngTrBHOffs, 0),
|
||||||
|
TDir = X_AX(),
|
||||||
|
ADir = -Y_AX(),
|
||||||
|
Geo = 'BASE/T9_BH',
|
||||||
|
Aux = 'BASE/T9_HS'}
|
||||||
|
else
|
||||||
|
EmtTcPos {
|
||||||
Name = 'T9',
|
Name = 'T9',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
Pos = ptTc1 + 8 * vtDt1,
|
Pos = ptTc1 + 8 * vtDt1,
|
||||||
TDir = -Y_AX(),
|
TDir = -Y_AX(),
|
||||||
ADir = -X_AX(),
|
ADir = -X_AX(),
|
||||||
Geo = 'BASE/T9'}
|
Geo = 'BASE/T9'}
|
||||||
|
end
|
||||||
EmtTcPos {
|
EmtTcPos {
|
||||||
Name = 'T10',
|
Name = 'T10',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
@@ -824,11 +828,17 @@ EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIGN') or GDB_ID.NULL, vtMovB, GDB_RT.
|
|||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC1') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC1') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC2') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC2') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
if Mortiser then
|
if Mortiser then
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
end
|
end
|
||||||
|
-- sposto geometria aggiuntiva agrgegato BlockHaus
|
||||||
|
if AggreBlockHaus then
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'T9'), 'T9_HS') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||||
|
end
|
||||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||||
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||||
local vtMovC = Vector3d( 0, 0, ( DeltaTabZ + DeltaRulliTappetoZ + 1495)) -- -( -1010 - 485)
|
local vtMovC = Vector3d( 0, 0, ( DeltaTabZ + DeltaRulliTappetoZ + 1495)) -- -( -1010 - 485)
|
||||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'BELT'), vtMovC, GDB_RT.GLOB)
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'BELT'), vtMovC, GDB_RT.GLOB)
|
||||||
local vtMove = Vector3d( 0, ( DeltaTabY - 1550.0), ( DeltaTabZ + 1010.0))
|
local vtMove = Vector3d( 0, ( DeltaTabY - 1550.0), ( DeltaTabZ + 1010.0))
|
||||||
@@ -872,12 +882,16 @@ function OnSetHead()
|
|||||||
EmtModifyAxisHome( 'B1', ParkB1)
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
EmtModifyAxisDirection( 'B1', X_AX())
|
EmtModifyAxisDirection( 'B1', X_AX())
|
||||||
-- se testa H12 (lama)
|
-- se testa H12 (lama)
|
||||||
elseif EMC.HEAD == 'H12' then
|
elseif EMC.HEAD == 'H12' or EMC.HEAD == 'H17' then
|
||||||
EmtModifyAxisHome( 'X1', ParkX1)
|
EmtModifyAxisHome( 'X1', ParkX1)
|
||||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||||
EmtModifyAxisHome( 'C1', ParkC1)
|
EmtModifyAxisHome( 'C1', ParkC1)
|
||||||
EmtModifyAxisHome( 'B1', ParkB1)
|
EmtModifyAxisHome( 'B1', ParkB1)
|
||||||
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
if EMC.HEAD == 'H12' then
|
||||||
|
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
||||||
|
else
|
||||||
|
EmtModifyAxisDirection( 'B1', X_AX())
|
||||||
|
end
|
||||||
-- se testa H21 (fresa2)
|
-- se testa H21 (fresa2)
|
||||||
elseif EMC.HEAD == 'H21' then
|
elseif EMC.HEAD == 'H21' then
|
||||||
local dRawH = GetRawHeight()
|
local dRawH = GetRawHeight()
|
||||||
@@ -914,7 +928,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetHeadSet( sHead)
|
function GetHeadSet( sHead)
|
||||||
if sHead == 'H11' or sHead == 'H12' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||||
return 1
|
return 1
|
||||||
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
||||||
return 2
|
return 2
|
||||||
@@ -928,7 +942,7 @@ end
|
|||||||
function GetHeadTCSet( sHead, sTcPos)
|
function GetHeadTCSet( sHead, sTcPos)
|
||||||
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
||||||
-- testa 1
|
-- testa 1
|
||||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||||
-- testa 1 su CU prossimo a testa 2
|
-- testa 1 su CU prossimo a testa 2
|
||||||
if nPos > 10 then
|
if nPos > 10 then
|
||||||
return 'Head1_TC2'
|
return 'Head1_TC2'
|
||||||
@@ -992,7 +1006,7 @@ end
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
||||||
function GetZExtra( sHead, dAngV)
|
function GetZExtra( sHead, dAngV)
|
||||||
if sHead == 'H11' or sHead == 'H21' then
|
if sHead == 'H11' or sHead == 'H21' or sHead == 'H17' then
|
||||||
if abs( dAngV) < 30.1 then
|
if abs( dAngV) < 30.1 then
|
||||||
return 400
|
return 400
|
||||||
elseif abs( dAngV) < 45.1 then
|
elseif abs( dAngV) < 45.1 then
|
||||||
@@ -1000,7 +1014,7 @@ function GetZExtra( sHead, dAngV)
|
|||||||
elseif abs( dAngV) < 60.1 then
|
elseif abs( dAngV) < 60.1 then
|
||||||
return 200
|
return 200
|
||||||
elseif abs( dAngV) < 90.1 then
|
elseif abs( dAngV) < 90.1 then
|
||||||
return 10
|
return 1
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
@@ -1012,7 +1026,9 @@ function GetZExtra( sHead, dAngV)
|
|||||||
elseif abs( dAngV) < 60.1 then
|
elseif abs( dAngV) < 60.1 then
|
||||||
return 200
|
return 200
|
||||||
elseif abs( dAngV) < 90.1 then
|
elseif abs( dAngV) < 90.1 then
|
||||||
return 10
|
return 1
|
||||||
|
elseif abs( dAngV) < 120 then
|
||||||
|
return -100
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|||||||
Binary file not shown.
+27
-19
@@ -7,18 +7,19 @@
|
|||||||
[Sawing]
|
[Sawing]
|
||||||
|
|
||||||
[Milling]
|
[Milling]
|
||||||
0=d,MaxElev,0
|
0=l,MaxElev,0
|
||||||
1=d,OutRaw,0
|
1=d,OutRaw,0
|
||||||
2=d,SideElev,0
|
2=l,SideElev,0
|
||||||
3=d,TrimExt,0
|
3=d,TrimExt,0
|
||||||
4=sr,VtFaceUse,0,0,0
|
4=s,VtFaceUse,0,0,0
|
||||||
|
5=s,EdgesFaceUse,0
|
||||||
|
|
||||||
[Pocketing]
|
[Pocketing]
|
||||||
0=d,MaxElev,0
|
0=l,MaxElev,0
|
||||||
1=b,Open,0
|
1=b,Open,0
|
||||||
2=d,OpenMinSave,0
|
2=d,OpenMinSafe,0
|
||||||
3=d,OpenOutRaw,0
|
3=d,OpenOutRaw,0
|
||||||
4=d,MaxOptSize,0
|
4=l,MaxOptSize,0
|
||||||
|
|
||||||
[Mortising]
|
[Mortising]
|
||||||
0=d,MaxElev,0
|
0=d,MaxElev,0
|
||||||
@@ -30,21 +31,28 @@
|
|||||||
[SawFinishing]
|
[SawFinishing]
|
||||||
|
|
||||||
[GenMachining]
|
[GenMachining]
|
||||||
0=l,LinTol,0.1
|
|
||||||
1=l,MaxLen,2
|
|
||||||
2=s,Type,ZigZag
|
|
||||||
3=d,SideAng,90
|
|
||||||
4=l,Step,10
|
|
||||||
5=l,OffsProj,0
|
|
||||||
6=l,LiTang,0
|
|
||||||
7=l,LiOrth,0
|
|
||||||
8=l,LiElev,0
|
|
||||||
9=l,LoTang,0
|
|
||||||
10=l,LoOrth,0
|
|
||||||
11=l,LoElev,0
|
|
||||||
12=b,DirFromGuide,1
|
|
||||||
|
|
||||||
[SurfRoughing]
|
[SurfRoughing]
|
||||||
|
0=l,MaxElev,1000
|
||||||
|
1=b,PlaneZ,0
|
||||||
|
|
||||||
[SurfFinishing]
|
[SurfFinishing]
|
||||||
0=b,SkipMaxDown,1
|
0=b,SkipMaxDown,1
|
||||||
|
|
||||||
|
[5AxMilling]
|
||||||
|
0=l,LinTol,0.01
|
||||||
|
1=l,MaxLen,10
|
||||||
|
2=s,Type,ZigZag
|
||||||
|
3=d,SideAng,90
|
||||||
|
4=l,Step,10
|
||||||
|
5=d,AngIni,-90
|
||||||
|
6=d,AngFin,90
|
||||||
|
7=l,LiTang,0
|
||||||
|
8=l,LiOrth,0
|
||||||
|
9=l,LiElev,0
|
||||||
|
10=l,LoTang,0
|
||||||
|
11=l,LoOrth,0
|
||||||
|
12=l,LoElev,0
|
||||||
|
13=b,DirFromGuide,0
|
||||||
|
14=b,SurfAvoid,0
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -30,6 +30,7 @@ local GS = {}
|
|||||||
-- Configurazione posizioni (con o senza TC2)
|
-- Configurazione posizioni (con o senza TC2)
|
||||||
local PositionTable = {}
|
local PositionTable = {}
|
||||||
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
||||||
|
local AggreBH = ( EgtGetHeadId( 'H17') ~= nil)
|
||||||
if SecondSaw then
|
if SecondSaw then
|
||||||
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
||||||
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
||||||
@@ -38,7 +39,7 @@ if SecondSaw then
|
|||||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
||||||
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
||||||
@@ -61,7 +62,7 @@ else
|
|||||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||||
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
||||||
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
||||||
@@ -78,7 +79,7 @@ else
|
|||||||
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T211", Head = "H23", Group = "G2"})
|
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T211", Head = "H23", Group = "G2"})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local UsePositionHead = true
|
local UsePositionHead = false
|
||||||
|
|
||||||
local function IsInGeomSet( ToolHead, PosHead)
|
local function IsInGeomSet( ToolHead, PosHead)
|
||||||
for GsIndex = 1, #GS do
|
for GsIndex = 1, #GS do
|
||||||
|
|||||||
Binary file not shown.
+109
-1
@@ -1,7 +1,115 @@
|
|||||||
==== Common_ONE-PF Update Log ====
|
==== Common_ONE-PF Update Log ====
|
||||||
|
|
||||||
Versione 2.6-- (--/--/2024)
|
Versione 2.7j (21/10/2025)
|
||||||
|
- (GEN) Se SPLIT con pinza 5, corretto salvataggio posizione pinza 2. Ticket#2654
|
||||||
|
|
||||||
|
Versione 2.7j1 (08/10/2025)
|
||||||
|
- (GEN) Salvataggio posizione Z su lavorazione precedente, sbagliava in caso di separazione. Ticket#2637
|
||||||
|
|
||||||
|
Versione 2.7i1 (10/09/2025)
|
||||||
|
- (SIM-GEN) Piccole correzioni per gestire secondo TC su ONE. Ticket#2563
|
||||||
|
- (SIM-GEN) Gestione aggregato BH completato. Ticket#2482
|
||||||
|
- (EST) Stima tempi considerando accelerazioni
|
||||||
|
- (SIM-GEN) Se fase start o restart, si aggiorna la posizione in X dell'asse per calcolare il link corretto
|
||||||
|
- (GEN) Piccola correzione risalita ZMAX dopo RELOAD del pezzo. Generazione allineata a simulazione.
|
||||||
|
|
||||||
|
Versione 2.7h2 (28/08/2025)
|
||||||
|
- (GEN) Migliorata gestione spegnimento utensile e disattivazione piano
|
||||||
|
- (SIM-GEN) Corretto nome variabile e altre piccole modifiche per Progress
|
||||||
|
|
||||||
|
Versione 2.7h1 (20/08/2025)
|
||||||
|
- (SIM-GEN) Non si chiudono i rulli se tagli o pretagli di testa e coda
|
||||||
|
- (SIM) Corretto movimento pinza 5 in caso di riposizionamento pinza 1
|
||||||
|
- (GEN) Corretta quota assoluta posizione testa trave in caso di pinza 5 e testa rimasta bassa
|
||||||
|
- (GEN) Se ultima lavorazione pezzo precedente ha stesso utensile della prima lavorazione pezzo successivo, la speed resta accesa
|
||||||
|
|
||||||
|
Versione 2.7g4 (23/07/2025)
|
||||||
|
- (SIM-GEN) Aggiunto parametro configurabile da TS3 per massima sporgenza trave in coda per pinza 5. Ticket#2538
|
||||||
|
|
||||||
|
Versione 2.7g3 (22/07/2025)
|
||||||
|
- (SIM) Corretto lettura angolo di presa della motosega
|
||||||
|
|
||||||
|
Versione 2.7g2 (08/07/2025)
|
||||||
|
- (SIM) Corretto movimento a parcheggio sega a catena. Ticket#2517
|
||||||
|
|
||||||
|
Versione 2.7g1 (01/07/2025)
|
||||||
|
- (GEN) Rimossa gestione PROBE inserita per sbaglio
|
||||||
|
- (GEN) Corretto gestione accelerazioni
|
||||||
|
- (SIM-GEN) Aggiunta gestione massima lunghezza scarico
|
||||||
|
|
||||||
|
Versione 2.7f1 (04/06/2025)
|
||||||
|
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
||||||
|
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
||||||
|
|
||||||
|
Versione 2.7e1 (28/05/2025)
|
||||||
|
- (SIM-GEN) Alla separazione si spostano i carrelli di 30mm aprendo il taglio. Ticket#2259,Ticket#2328
|
||||||
|
|
||||||
|
Versione 2.7d1 (16/04/2025)
|
||||||
|
- (SIM) Distanza di collisione portata a 3mm, qualità VMILL ridotta a 4mm. Ticket#2395
|
||||||
|
|
||||||
|
Versione 2.7c3 (25/03/2025)
|
||||||
|
- (GEN) Corretto movimento approccio alla lavorazione se utensile lama montata su magazzino 2. Ticket#2361
|
||||||
|
|
||||||
|
Versione 2.7c2 (12/03/2025)
|
||||||
|
- (SIM-GEN) Migliorato calcolo posizione barra dopo split. Tiene in considerazione ingombro lavorazioni pezzo. Ticket#2321
|
||||||
|
- (GEN) Aggiunta commenti HEADER e FOOTER per comunicazione con linea o altre macchine, da parte di Essetre.
|
||||||
|
- (SIm-GEN) Migliorato movimento approccio al pezzo con lama. Allineamento simulazione-generazione che facevano due movimenti leggermente diversi. Ticket#2335
|
||||||
|
|
||||||
|
Versione 2.7c1 (05/03/2025)
|
||||||
|
- (GEN) Corretto movimento in home utensile precedente. Ticket#2324
|
||||||
|
|
||||||
|
Versione 2.7b1 (07/02/2025)
|
||||||
|
- (SIM-GEN) In caso di Progress, alla deselezione utensile testa 1 su TC2 si fa movimento Z raddrizzando asse B. Ticket#2247
|
||||||
|
- (SIM-GEN) Estensione soluzione Ticket#2206. Ora si aprono di 5mm extra anche se solo una morsa resta in posizione. Ticket#2259
|
||||||
|
- (SIM) Migliorato controllo collisioni con traversa. Ora si considera asse X. Serve modifica NGE! Ticket#2257
|
||||||
|
|
||||||
|
Versione 2.7a2 (15/01/2024)
|
||||||
|
- (SIM-GEN) In caso di testa 1 su TC2 (ONE), si ruota prima la C e poi la B. Ticket#2247
|
||||||
|
|
||||||
|
Versione 2.7a1 (07/01/2024)
|
||||||
|
- (GEN) In separazione, quando si porta indietro il restante, si aprono le paratie rulli subito. Ticket#2214
|
||||||
|
- (SIM-GEN) Se entrambe le morse sono restate in posizione, le sposto comunque di 5mm per distanziare i pezzi separati. Ticket#2206
|
||||||
|
|
||||||
|
Versione 2.6l2 (09/12/2024)
|
||||||
|
- (SIM-GEN) Corretto problema introdotto in 2.6l1 per risolvere #2198. Ticket#2203
|
||||||
|
- (SIM-GEN) In MLSE modificato controllo direzione utensile per determinare Z massima. Ticket#2204
|
||||||
|
|
||||||
|
Versione 2.6l1 (02/12/2024)
|
||||||
|
- (SIM) Dopo scarico pezzo per ribaltamento, si aprono sempre i rulli. Ticket#2192
|
||||||
|
- (SIM-GEN) Nei movimenti si ricalcola la Z solo se la quota di lavoro è più in alta della posizione a ZHOME della testa. Ticket#2198
|
||||||
|
- (GEN) Se bisogna andare in home, ma la testa lo è già, non si scrive nulla
|
||||||
|
|
||||||
|
Versione 2.6j3 (21/10/2024)
|
||||||
|
- (GEN) Se richiesto movimento in home, si scrive sempre parcheggio in home dell'utensile precedente. Prima si scriveva solo per lama.
|
||||||
|
|
||||||
|
Versione 2.6j2 (17/10/2024)
|
||||||
|
- (SIM-GEN) Se motosega prelevata con A=0, alla fine la si porta sempre alla quota ZMAX, indipendentemente dall'altezza trave che era fissata a 650mm. Ora lo fa sempre.
|
||||||
|
|
||||||
|
Versione 2.6j1 (08/10/2024)
|
||||||
|
- (SIM-GEN) Corretto primo movimento di approccio al pezzo. Ticket#2093
|
||||||
|
- (SIM-GEN) Corretto movimento in Home in caso di lama e movimento rulliera di carico. Ticket#2054
|
||||||
|
- (GEN) In caso di movimento in Home non si fa più preselezione ma si tiene utensile vecchio. Ticket#1926
|
||||||
|
|
||||||
|
Versione 2.6i2 (13/09/2024)
|
||||||
|
- (GEN) Migliorato calcolo chiusura paratia rulli con aggiornamento lunghezza della barra in caso di ultimo taglio e grezzo residuo in coda. Ticket#2017
|
||||||
|
- (NGE-MLDE-GEN-SIM) Aggiunto solidi collisione TC. Corretto movimento a Y di sicurezza con lama. Ticket#2042
|
||||||
|
- (NGE-SIM) Aggiunta collisione magazzino motosega ONE
|
||||||
|
|
||||||
|
Versione 2.6i1 (02/09/2024)
|
||||||
|
- (SIM-GEN) Quando si aprono i rulli, se la trave non può seguire i rulli perchè la pinza andrebbe in extra-corsa, si sposta comunque la pinza fino al massimo della sua corsa. Ticket#1949
|
||||||
|
- (GEN) In preselezione. Se lavorazione motosega, non mando a parcheggio altra testa con utensile precedente, perchè subito dopo viene chiamata preselezione. Ticket#1961
|
||||||
|
|
||||||
|
Versione 2.6h2 (07/08/2024)
|
||||||
|
- (SIM) Allineata simulazione a generazione in primo movimento rapido approccio al pezzo.
|
||||||
|
|
||||||
|
Versione 2.6h1 (01/08/2024)
|
||||||
|
- (GEN) Corretto segno posizione X di sicurezza per rotazione assi rotanti.
|
||||||
|
|
||||||
|
Versione 2.6g5 (31/07/2024)
|
||||||
- (SIM-GEN) Se motosega allineata ad asse B per tagli di fianco, corretto movimento che manda testa a parcheggio. Pezzi più alti di 650 va solo in Zmax. Ticket#1943
|
- (SIM-GEN) Se motosega allineata ad asse B per tagli di fianco, corretto movimento che manda testa a parcheggio. Pezzi più alti di 650 va solo in Zmax. Ticket#1943
|
||||||
|
- (SIM-GEN) Gestione movimenti speciali per pezzi molto alti. Se HomeZ < primo punto lavorazione, allora vado al punto Z lavorazione prima di approcciare il pezzo in X. Ticket#1943
|
||||||
|
- (GEN) Gestione creazione piano generico in caso il primo movimento della lavorazione sia un arco. Ticket#1891
|
||||||
|
- (SIM-GEN) Modifica limite inferirore intervallo di pinzaggio per garantire, se possibile, il passaggio pezzo a pinza 2. Da Common-PF1250.
|
||||||
- (GEN) Corretta scrittura ISO per parcheggiare morsa 3 dopo ribaltamento. Ticket#1922,#1733
|
- (GEN) Corretta scrittura ISO per parcheggiare morsa 3 dopo ribaltamento. Ticket#1922,#1733
|
||||||
|
|
||||||
Versione 2.6g4 (19/07/2024)
|
Versione 2.6g4 (19/07/2024)
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||||
VERSION = '2.6--DEV', -- versione script
|
VERSION = '2.7j2', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user