Compare commits

..

117 Commits

Author SHA1 Message Date
daniele.nicoli 306cf1715b Aggiunto Clamp di sicurezza per lettura dei parametri MinJoin da Ts3Data 2026-04-23 12:28:34 +02:00
daniele.nicoli 8f387d99a6 Merge remote-tracking branch 'origin/main' into develop 2026-04-23 12:28:01 +02:00
andrea.villa d4f0842845 Merge branch 'develop' 2026-03-17 15:18:13 +01:00
andrea.villa 412cd2c8f3 Allineamento a common ver. 3.1c2 2026-03-17 15:18:01 +01:00
daniele.nicoli 0e1b202e68 Aggiunto info "PreviewShow" per anteprima utensile/testa nel MACH 2026-03-09 08:37:05 +01:00
daniele.nicoli 5a43e3263c Aggiunti parametri letti da TS3Data.lua: MIN_JOIN_S, MIN_JOIN_L e MAX_ANGLE_DRILL_CUT 2026-03-05 14:49:49 +01:00
daniele.nicoli 54e4c885f0 Merge branch 'main' into develop 2026-03-05 14:49:08 +01:00
andrea.villa b95d7bbb55 Allineamento con common ver. 3.1c1 2026-03-04 10:34:34 +01:00
andrea.villa be793b7914 Merge remote-tracking branch 'origin/develop' 2026-02-20 09:10:19 +01:00
andrea.villa dc83f4c5e5 Allineamento con common ver. 3.1b1 2026-02-20 09:10:04 +01:00
daniele.nicoli e7dd38942a Aggiunta la lettura da TS3Data.lua delle corse dell'asse W (MIN_W e MAX_W) 2026-02-03 11:05:43 +01:00
daniele.nicoli d105e85014 Merge remote-tracking branch 'origin/main' into develop 2026-02-03 11:03:50 +01:00
andrea.villa 7c51694819 Allineamento con common ver. 3.1a1 2026-01-16 15:45:20 +01:00
andrea.villa e729ddaa1c Merge remote-tracking branch 'origin/develop' 2025-12-18 16:08:31 +01:00
andrea.villa b5d11f079a - Allineamento a common ver. 2.7l1
- Aggiunto parametro MAX_ANGLE_DRILL_CUT a BeamData
- Recupero nome macchina da funzione EGT
2025-12-18 16:08:19 +01:00
daniele.nicoli 1ba1d3681b Aggiornati mlde e nge in attesa di aggiornamento Common per Controllo Pinzaggio VMILL 2025-12-15 10:20:05 +01:00
daniele.nicoli fc8d15f27a Merge remote-tracking branch 'origin/main' into develop 2025-12-15 10:07:23 +01:00
andrea.villa 37ebf8ab20 Corretto disegno porta utensile 2025-12-11 09:21:31 +01:00
andrea.villa e0536178a1 - Nuovo ToolHolder
- Allineamento con common ver. 2.7k3
2025-11-28 15:41:46 +01:00
andrea.villa c85a5ca442 Merge remote-tracking branch 'origin/develop' 2025-11-20 17:00:19 +01:00
andrea.villa c8985ccd20 - Allineamento a common ver. 2.7k2
- Cambio versione per rilascio a cliente
2025-11-20 17:00:07 +01:00
daniele.nicoli 3f0e3b9b45 Aggiunta gestione CUT_SIC impostabile da TS3Data.lua 2025-11-13 11:29:14 +01:00
daniele.nicoli d0cac4960b Merge branch 'main' into develop 2025-11-13 11:25:59 +01:00
andrea.villa 2ad8737c6b Allineamento con common ver. 2.7k1 2025-11-05 13:23:47 +01:00
andrea.villa 1d206404a8 Allineamento con common ver. 2.7j3 2025-10-23 07:49:05 +02:00
andrea.villa 6db1d9386f #critical# Allineamento con common ver. 2.7j2 2025-10-21 10:47:40 +02:00
andrea.villa 7ccb3a2ff0 Allineamento con common ver. 2.7j1 2025-10-08 13:14:39 +02:00
andrea.villa 96e965641c Allineamento con common ver. 2.7i1, HOTFIX 2025-09-10 12:11:01 +02:00
andrea.villa eecbb45257 - Allineamento common ver. 2.7i1
- Aggiunto solido collisione per tappeto
2025-09-10 10:36:26 +02:00
andrea.villa 8554c2f39e - Allinemento con common ver. 2.7h2
- Aggiunto secondo cambio utensile
2025-08-28 14:57:33 +02:00
andrea.villa 3b26ecf171 Allineamento con common ver. 2.7h1 2025-08-20 14:32:33 +02:00
andrea.villa 4eca763a8a - Allineamento con common ver. 2.7g4
- Aggiunto parametro MaxBackClamp5
2025-07-23 12:19:57 +02:00
andrea.villa 052115ea40 Allineamento con common ver. 2.7g3 2025-07-22 11:18:47 +02:00
andrea.villa f4ce8781a4 Allineamento con common ver. 2.7g1 2025-07-01 10:19:17 +02:00
andrea.villa 8d1b0bafea Allineamento con common ver. 2.7e1 2025-05-28 15:20:17 +02:00
andrea.villa 3e001b7c8b - Allineamento con common ver. 2.7d1
- Aggiornamento MachNotes
- Lettura PRECUT per automatismo
2025-04-28 13:31:59 +02:00
andrea.villa cf91fa2de3 #critical# Allineamento con common 2.7c3 2025-03-26 08:00:36 +01:00
andrea.villa c1cc973c8b Allineamento con common ver. 2.7c2 2025-03-12 08:31:48 +01:00
andrea.villa 35f28cb6c3 Allineamento con common ver. 2.7c1 2025-03-05 11:51:58 +01:00
andrea.villa 9779ddcdd4 - Allineamento con common ver. 2.7b1
- Modifica NGE per collisioni con traversa
2025-02-07 12:55:02 +01:00
andrea.villa 6205ced850 - Cambio versione post-processore
- Aggiunto paraemtro tool
2025-01-15 12:07:34 +01:00
andrea.villa 18e6da7ed5 - Allineamento con common ver. 2.7a1
- In MLDE si legge il parcheggio della punta lunga su utensile standard ONE
2025-01-15 12:03:42 +01:00
andrea.villa 8aa9f3a57c Allineamento con common ver. 2.7a1 2025-01-07 16:32:47 +01:00
andrea.villa 57fccdd6f4 - Allineamento con common vr. 2.6l2
- In GetZExtra contemplato anche casi sotto-squadra
2024-12-09 12:41:49 +01:00
andrea.villa 5c39ce85db - Allineamento con common ver. 2.6l1
- Aggiunta variabile ROT180 per rotazioni nuovo automatismo
2024-12-02 08:37:41 +01:00
andrea.villa 5a5ed4e1d7 Allineamento con common ver. 2.6j3 2024-10-21 16:58:27 +02:00
andrea.villa 449ca07abc - Allineamento con common ver. 2.6j2
- Tolti i commenti iniziali da quando è stato creato progetto GIT
2024-10-17 12:30:21 +02:00
andrea.villa 84dff01000 Corretto calcolo posizione parcheggio V1 e V2 2024-10-09 14:27:45 +02:00
andrea.villa 37949a99df - Allineamento con common ver. 2.6j1 2024-10-08 11:47:34 +02:00
luca.mazzoleni 57047ec350 update gitignore e YAML 2024-09-25 13:13:07 +02:00
luca.mazzoleni cb565d387c update gitignore e YAML 2024-09-24 14:53:07 +02:00
luca.mazzoleni 711992b76f - Modificato YAML per comunicazione versioni a LiMan.
- Aggiunta PP_NVER, versione in formato numerico.
2024-09-18 15:40:38 +02:00
andrea.villa 588852c0b9 Piccole migliorie dopo test autmatici 2024-09-13 15:23:22 +02:00
andrea.villa 11ee323ed1 - Allineamento con common ver. 2.6i2
- Inseriti in NGE solidi collisione TC, Aggiunta avriabile LimX1RotSawTC2
2024-09-13 11:50:07 +02:00
andrea.villa 36a36b0fbc - Allineamento con common ver. 2.6i1
- File YML con prefisso di ricerca "Common_" per compilazione
2024-09-02 10:31:54 +02:00
andrea.villa 89304ed895 - Allineamento con common ver. 2.6h2 2024-08-07 10:10:56 +02:00
andrea.villa f4b25a9f40 - Allineamento con common ver. 2.6h1 2024-08-01 12:56:39 +02:00
andrea.villa a3cc571718 Tolto stato finale paratia carico 2024-07-31 17:27:38 +02:00
andrea.villa aff868ba84 Piccola correzione segni quote parcheggio 2024-07-31 15:32:50 +02:00
andrea.villa 68073dd7b5 - Allineamento con common ver. 2.6g5
- Aggiunta file note tool e machining
2024-07-31 11:01:38 +02:00
andrea.villa 77a6593b4e FixDeployAndCompile 2024-07-23 09:23:42 +02:00
andrea.villa 1e3bd98a19 - Gestione pezzi fino a 30 metri
- Allineamento con common ver. 2.6g4
2024-07-22 15:47:34 +02:00
andrea.villa eba69648df Allineamento con common ver. 2.6g3 2024-07-17 16:01:05 +02:00
andrea.villa 57a08d28b3 Allineamento con common ver. 2.6g2 2024-07-16 08:02:48 +02:00
andrea.villa a3dd7c2cdf Allineamento con common ver. 2.6g1 2024-07-10 16:21:21 +02:00
andrea.villa 94986ae9ed Modificato 'LimX1PlRotSaw' a 1970mm 2024-06-03 12:40:14 +02:00
andrea.villa c7347889b5 - Aggiunta funzione GetSetupInfo a BeamData per nuovo automatismo
- Allineamento con common ver. 2.6f1
2024-06-03 12:30:37 +02:00
andrea.villa 98b9ad4b8e - Allineamento con common ver. 2.6e1
- Aggiunta variabile WoodDensity per gestione WOOD_DENSITY
2024-04-30 17:11:39 +02:00
luca.mazzoleni 3b0cc7a7ea Merge branch 'develop' 2024-04-16 17:05:07 +02:00
luca.mazzoleni 863bf4a5c0 in yaml aggiunta copia in R anche per develop (senza versione) 2024-04-16 17:04:56 +02:00
luca.mazzoleni 28a986fde3 Merge branch 'develop' 2024-04-16 15:07:26 +02:00
luca.mazzoleni 2036dd0979 yaml lanciato solo per master 2024-04-16 15:07:14 +02:00
luca.mazzoleni 59a3a6fe41 aggiunto yaml per compilazione e copia su R 2024-04-16 13:21:43 +02:00
andrea.villa c6b75eb944 - Allineamento con common ver. 2.6d2
- Aggiunto parametro ForceToCloseRollersGate
2024-04-12 08:52:41 +02:00
andrea.villa c109ac41af Allineamento con common ver. 2.6d1 2024-03-28 12:24:01 +01:00
andrea.villa 03734128a9 Merge branch 'develop' 2024-03-26 15:10:12 +01:00
andrea.villa 9d199cac54 Alineamento con common ver. 2.6c9 2024-03-26 15:10:05 +01:00
andrea.villa 023632b7ab Con aggregati, non viene più aggiunto il gruippo SOLID (in MLDE) 2024-03-26 08:15:33 +01:00
andrea.villa 16b854c9e1 Merge branch 'main' into develop 2024-03-26 08:14:07 +01:00
luca.mazzoleni 33023fbe6a - aggiunti portautensili custom 2024-03-08 18:09:46 +01:00
andrea.villa 54fcc24c91 Merge branch 'develop' 2024-03-04 11:22:49 +01:00
andrea.villa 0ea9753518 Merge branch 'develop' of https://gitlab.steamware.net/egalware-machines/essetre/essetre-onerl into develop 2024-03-04 11:22:10 +01:00
andrea.villa 9ea7c3aeee - Modificato log con nome macchina
- Allineamento con common ver. 2.6c2
2024-03-04 11:22:06 +01:00
luca.mazzoleni a16a4fa02b - in compilazione rimossi i simboli di debug 2024-02-29 18:27:32 +01:00
andrea.villa 148a34af51 Merge branch 'main' into develop 2024-02-29 09:55:19 +01:00
andrea.villa ba2602c5b2 Allineamento con common ver. 2.6c1 2024-02-29 09:55:08 +01:00
luca.mazzoleni 1b2c4cfb89 Merge branch 'main' into develop 2024-02-27 09:55:40 +01:00
luca.mazzoleni 148e04c466 - allineamento con common 2.6b2
- in mlde aggiunte chiamate a EgtAddToPackagePath
- eliminate chiamate a EgtGetSourceDir
2024-02-27 09:55:22 +01:00
andrea.villa 2dd8c8a90d Allineamento con common vewrsione 2.6b1 2024-02-20 11:54:02 +01:00
luca.mazzoleni cf04189fe2 In BeamData aggiunta funzione GetBlockedAxis che sostituisce la GetChainSawBlockedAxis. 2024-02-19 12:18:44 +01:00
andrea.villa f223da1a1c Piccola modifica a VICE_MINH 2024-02-14 10:02:44 +01:00
andrea.villa bab2d2315d Merge branch 'develop' 2024-01-23 11:20:31 +01:00
andrea.villa 7256395366 Allineamento con common versione 2.6a3 2024-01-23 11:20:20 +01:00
andrea.villa a9a2183e3a Merge branch 'main' into develop 2024-01-12 11:18:32 +01:00
andrea.villa a3354527f2 Merge branch 'develop' 2024-01-12 11:18:12 +01:00
andrea.villa 95ac29a6cf Allineamento con common versione 2.6a2 2024-01-12 11:17:48 +01:00
andrea.villa 74e2f8394c Merge branch 'develop' of https://gitlab.steamware.net/egalware-machines/essetre/essetre-onerl into develop 2024-01-05 12:22:55 +01:00
andrea.villa d7948c1426 2.6a1 Aggiornamento con postCommon 2024-01-05 12:22:51 +01:00
luca.mazzoleni 5c0a3e2f36 ai machiningtypes aggiunta SideMillAsBlade 2023-12-18 09:57:19 +01:00
andrea.villa adfa28e06b 2.6a1 Piccole correzioni dopo test con PFrl 2023-12-05 15:26:01 +01:00
andrea.villa 7460a2d7d7 2.6a1 Piccole correzioni dopo test con PF 2023-12-04 11:44:43 +01:00
andrea.villa 932475851f 2.6a1 Piccole correzioni dopo test con ONRrl 2023-11-30 12:12:58 +01:00
andrea.villa 30c80b0ac2 2.6a1 Prima versione con utilizzo post-processore standard per macchine ONE e PF 2023-11-30 08:43:31 +01:00
andrea.villa f5ddc9849d Merge branch 'main' into develop 2023-11-30 08:42:46 +01:00
andrea.villa 725754245a Inserito solido cremagliera AsseZ 2023-11-20 11:06:24 +01:00
andrea.villa a6d50eaec1 Merge branch 'develop' 2023-11-17 16:29:14 +01:00
andrea.villa 3275637cd7 Pulizia file inutili 2023-11-17 16:27:44 +01:00
Andrea.Villa f4f5314aa6 Delete Ts3Data.lua 2023-11-17 15:19:21 +00:00
Andrea.Villa 0d4dc3905e Delete SawingData.lua 2023-11-17 15:19:16 +00:00
Andrea.Villa 819ea4b66c Delete PocketingData.lua 2023-11-17 15:19:11 +00:00
Andrea.Villa 032407f5c1 Delete MillingData.lua 2023-11-17 15:19:07 +00:00
Andrea.Villa e365b7ee57 Delete DrillData.lua 2023-11-17 15:18:50 +00:00
Andrea.Villa f2a2108afa Delete CutData.lua 2023-11-17 15:18:40 +00:00
andrea.villa c9ce48f39d Merge branch 'develop' 2023-11-17 16:15:36 +01:00
andrea.villa 698d8dedbc Prima versione con gestione pinza5 2023-11-17 16:15:14 +01:00
andrea.villa 109a39117c Inizio gestione pinza 5 2023-11-17 14:16:37 +01:00
andrea.villa 86f4f97994 Merge branch 'develop' 2023-11-17 09:39:17 +01:00
57 changed files with 8075 additions and 4791 deletions
+17
View File
@@ -0,0 +1,17 @@
/Tools
/Machinings
/SetUp
/Beam/Ts3Data.bak
/Beam/CutData.lua
/Beam/DrillData.lua
/Beam/MillingData.lua
/Beam/PocketingData.lua
/Beam/SawingData.lua
/Beam/Ts3Data.lua
/Wall/Ts3Data.bak
/Wall/CutData.lua
/Wall/DrillData.lua
/Wall/MillingData.lua
/Wall/PocketingData.lua
/Wall/SawingData.lua
/Wall/Ts3Data.lua
+318
View File
@@ -0,0 +1,318 @@
variables:
VERS_MAIN: '1.0'
MACH_NAME: ''
MACH_NAME_TEST: ''
MANUFACTURER: ''
NEW_REL: ''
NET_SHARE_X: '\\10.74.82.201\EgwTech'
NET_SHARE_Z: '\\10.74.82.201\Artifacts'
NET_SHARE_S: '\\10.74.82.201\Scambio'
NET_SHARE_R: '\\10.74.82.201\EgwTech'
NET_SHARE_H: '\\10.74.82.252\team drives'
NET_USERQ: 'steamw\egalware'
NET_USER_SERVICES: 'steamw\services'
MACH_VERS: '0.0.0.0'
TEMP_PATH: 'C:\MachinesDeploy'
MACHINES_PATH_R: 'R:\EgtData\Machines_GIT'
DEST_MACHINES_PATH_H: 'H:'
SRC_PATH: ''
BASE_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:
# lua54 -o bin\$FileName -s $FileName: -o = output, -s = NON include i debug symbols
# helper copia script verso cartella di rete S:\ delle cartelle bin
.ReplicaS: &ReplicaS
- |
net use S: /delete
SLEEP 2
net use S: $env:NET_SHARE_S /u:$env:NET_USERQ $SDRIVE_PASSWD
ROBOCOPY /MIR $env:BASE_PATH S:\LucaM\MachinesDeploy\$env:MACH_NAME\$env:MACH_VERS\ /XD "bin" /XD "$env:MACH_NAME_TEST"
SLEEP 2
net use S: /delete
# helper copia script verso cartella di rete R:\
.ReplicaR: &ReplicaR
- |
net use R: /delete
SLEEP 2
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
echo "-----------------------"
echo " Copia macchina su R"
echo "-----------------------"
$customerPathR = $env:MACHINES_PATH_R + "\" + $env:MANUFACTURER
ROBOCOPY /MIR "$env:SRC_PATH" "$customerPathR\$env:MACH_NAME\" /XD "bin"
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
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
.ReplicaR_DEV: &ReplicaR_DEV
- |
net use R: /delete
SLEEP 2
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
echo "-----------------------"
echo " Copia macchina su R - DEV"
echo "-----------------------"
$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
net use R: /delete
#helper copia sorgenti da R a percorso temporaneo
.CreateBaseFolder: &CreateBaseFolder
- |
net use R: /delete
SLEEP 2
net use R: $env:NET_SHARE_R /u:$env:NET_USERQ $ZDRIVE_PASSWD
echo "-----------------------"
echo " Recupero file non git da R e copia su macchina virtuale"
echo "-----------------------"
# test se la cartella con gli utensili esiste per questa macchina
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
net use R: /delete
# helper compilazione LUA a 32 e 64 bit
.LuaCompile: &LuaCompile
- |
Set-Alias lua54 C:\Tools\Lua32\luac54
echo "-----------------------"
echo " Copia file su macchina virtuale"
echo "-----------------------"
ROBOCOPY . "$env:SRC_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
ROBOCOPY . "$env:TEST_PATH" /E /XF "*.bat" /XF "*.yml" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt" /XD ".vscode"
Rename-Item -Path "$env:TEST_PATH\$env:MACH_NAME.mlde" -NewName "$env:MACH_NAME_TEST.mlde"
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"
echo "-----------------------"
echo " Compilazione file *.lua 32/64bit"
echo "-----------------------"
$FileList = Get-ChildItem * -Include( "*.mlpe", "*.mlse")
ForEach ($File in $FileList) {
$FileName = Split-Path $File -leaf
lua54 -o $env:SRC_PATH\bin\$env:MACH_NAME\$FileName -s $FileName
echo "lua54 -o bin\$FileName -s $FileName"
}
# helper recupero nome macchina e costruttore
.machName-fix: &machName-fix
- |
echo "-----------------------"
echo " Recupero nome macchina e costruttore"
echo "-----------------------"
$fileName = dir *.mlde
$env:MACH_NAME = $fileName.BaseName
$env:MACH_NAME_TEST = $env:MACH_NAME + ".TEST"
$comp = $fileName.BaseName -split "-"
$env:MANUFACTURER = $comp[0]
Write-Output $env:MANUFACTURER
# helper calcolo versione
.version-fix: &version-fix
- |
echo "-----------------------"
echo " Calcolo versione"
echo "-----------------------"
# calcolo versione formato stringa
$fPath = "$env:MACH_NAME.mlde";
$vLine = Select-String -path $fPath -Pattern '^PP_VER';
$comp = $vLine -split "=";
$env:MACH_VERS = $comp[1].Replace("'","").Trim()
# display versione formato stringa
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
.version-fix_DEV: &version-fix_DEV
- |
echo "-----------------------"
echo " Calcolo versione - DEV"
echo "-----------------------"
$commitAuthor = $CI_COMMIT_AUTHOR -split " "
$commitAuthor = $commitAuthor[0].Trim()
$env:MACH_VERS = $commitAuthor
# display versione
Write-Output $env:MACH_VERS
# helper creazione folders
.folder-fix: &folder-fix
- |
echo "-----------------------"
echo " Creazione cartelle su macchina virtuale"
echo "-----------------------"
$env:TOOLS_MACHINE_PATH = "$env:MACHINES_PATH_R\$env:MANUFACTURER\_DefaultMachineSetup\$env:MACH_NAME"
Write-Output $env:TOOLS_MACHINE_PATH
$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:TEST_PATH = "$env:TEMP_PATH\$env:MACH_NAME\$env:MACH_VERS\$env:MACH_NAME_TEST";
Write-Output $env:BASE_PATH;
if (Test-Path $env:BASE_PATH) { Remove-Item -Path "$env:BASE_PATH\*" -R -Force };
Write-Output $env:TEST_PATH;
# helper compressione e pulizia folders
.ZipClean: &ZipClean
- |
" Compressione file su macchina virtuale"
$7zipPath = $env:ProgramFiles+"\7-Zip\7z.exe";
if (-not (Test-Path -Path $7zipPath -PathType Leaf)) {
throw "7 zip file '$7zipPath' not found"
}
Set-Alias 7zip $7zipPath
$Target = "$env:BASE_PATH\$env:MACH_NAME.zip"
cd "$env:SRC_PATH\bin\"
$Source = "*"
7zip a -tzip $Target $Source
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
.RunTest: &RunTest
- |
Write-Output "Test done!"
stages:
- build
# - test
# - deploy
LuaCompile:build:
stage: build
only:
- main
- master
tags:
- win
before_script:
- *machName-fix
- *version-fix
- *folder-fix
script:
- *CreateBaseFolder
- *LuaCompile
- *ZipClean
- *ReplicaR
- *ReplicaStor01
- *SendToVersionsLog
LuaCompileDev:build:
stage: build
only:
- develop
tags:
- win
before_script:
- *machName-fix
- *version-fix_DEV
- *folder-fix
script:
- *CreateBaseFolder
- *LuaCompile
- *ZipClean
- *ReplicaR_DEV
# LuaCompile:test:
# stage: test
# needs: ["LuaCompile:build"]
# only:
# - main
# - master
# - develop
# tags:
# - win
# before_script:
# - *version-fix
# - *folder-fix
# script:
# - *LuaCompile
# - *RunTest
# LuaCompile:deploy:
# stage: deploy
# needs: ["LuaCompile:test"]
# only:
# - main
# - master
# tags:
# - win
# before_script:
# - *version-fix
# - *folder-fix
# script:
# - *LuaCompile
# - *ZipClean
# - *ReplicaR
+85 -10
View File
@@ -5,16 +5,17 @@ EgtOutLog( ' ONE-BeamData started')
-- Tabella per definizione modulo
local BeamData = {
RIGHT_LOAD = true, -- flag carico da destra
RIGHT_LOAD = true, -- flag carico da destra
SIMUL_VIEW_DIR = 1, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
ROT90 = false, -- flag abilitazione rotazione 90 gradi
ROT180 = true, -- flag abilitazione rotazione 180 gradi
MIN_WIDTH = 40, -- larghezza minima del grezzo
MIN_HEIGHT = 40, -- altezza minima del grezzo
MAX_WIDTH = 400, -- larghezza massima del grezzo
MAX_HEIGHT = 800, -- altezza massima del grezzo
LEN_SHORT_PART = 1200, -- lunghezza massima pezzo piccolo
LEN_VERY_SHORT_PART = 700, -- lunghezza massima pezzo molto corto (molto probabile lo scarico a caduta)
MAX_RAW = 20000, -- massima lunghezza grezzo (deve essere minore di LenTable - RAW_OFFSET)
MAX_RAW = 30000, -- massima lunghezza grezzo (deve essere minore di LenTable - RAW_OFFSET)
STD_RAW = 14000, -- lunghezza standard della barra di grezzo
OVM_HEAD = 10, -- sovramateriale testa
OVM_MID = 5.0, -- sovramateriale intermedio (spessore lama)
@@ -41,6 +42,7 @@ local BeamData = {
DRILL_TOL = 0.2, -- tolleranza tra diametro foro e diametro punta
DRILL_VZ_MIN = - 0.51, -- componente limite in Z del versore di un foro
DRILL_VX_MAX = 0.867, -- componente limite in X del versore di un foro sulle facce laterali
MAX_ANGLE_DRILL_CUT = 15, -- delta angolo massimo tra foro e taglio che lo attraversa
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
MAX_DIST_HTFEA = 50.0, -- massima distanza di feature da testa o coda per essere considerata tale
@@ -54,7 +56,7 @@ local BeamData = {
DIM_STRIP_SMALL = 0.1, -- dimensione codolo piccolo (quando le parti sostenute sono sicuramente sulla parte sopra del pezzo)
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
VICE_MINH = 110, -- altezza minima della morsa
VICE_MINH = 1000, -- altezza minima della morsa
OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare)
USER_HOLE_DIAM = 14, -- diametro foro per L20
MAX_TOOL_LEN_FOR_HOR_MACH = 500, -- massima lunghezza ingombro per poter fare forature (fresature) oltre i 10 gradi dalla verticale
@@ -66,13 +68,16 @@ local BeamData = {
KIOTP = 6, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
MAXDIAM_POCK_CORNER = 31, -- diametro massimo utensile ammesso per tasche con angoli interni
USE_LONGCUT = false, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
ADVANCE_TAIL_OFFS = 1 -- accorciamento taglio di coda avanzato (minimo 1)
ADVANCE_TAIL_OFFS = 1, -- accorciamento taglio di coda avanzato (minimo 1)
CLAMP5 = false -- presenza pinza speciale per pezzi piccoli
}
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-ONErl.data"
local sData = EgtGetSourceDir().."\\Ts3Data.lua"
local sData = EgtGetCurrMachineDir().."\\Beam\\Ts3Data.lua"
if EgtExistsFile( sTs3Data) then
EgtCopyFile( sTs3Data, sData)
local sTs3DataOld = sTs3Data..'.old'
@@ -83,6 +88,10 @@ if EgtExistsFile( sData) then
local Machine = dofile( sData)
if Machine then
if Machine.Offsets then
if Machine.Offsets.CLAMP5 and Machine.Offsets.CLAMP5 >= 1 then
BeamData.ADVANCE_TAIL_CUT = false
BeamData.CLAMP5 = true
end
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.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
@@ -90,6 +99,19 @@ if EgtExistsFile( sData) then
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.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
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.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.MAX_ANGLE_DRILL_CUT then BeamData.MAX_ANGLE_DRILL_CUT = EgtClamp( Machine.Offsets.MAX_ANGLE_DRILL_CUT, 1, 89) end
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
if Machine.Offsets.CUT_SIC then BeamData.CUT_SIC = EgtClamp( Machine.Offsets.CUT_SIC, 15, 50) end
if Machine.Offsets.MIN_JOIN_S then BeamData.MIN_JOIN_S = EgtClamp( Machine.Offsets.MIN_JOIN_S, 80, 150) end
if Machine.Offsets.MIN_JOIN_L then BeamData.MIN_JOIN_L = EgtClamp( Machine.Offsets.MIN_JOIN_L, 300, 450) end
end
if Machine.Trave then
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
@@ -156,14 +178,32 @@ end
BeamData.GetMinUnloadableRaw = GetMinUnloadableRaw
---------------------------------------------------------------------
local function GetChainSawBlockedAxis( nInd)
if nInd == 1 then
return 'A=-90'
local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
-- lama
if nToolType == MCH_TY.SAW_STD or nToolType == MCH_TY.SAW_FLAT then
return ''
-- sega a catena
elseif nToolType == MCH_TY.MORTISE_STD then
if sHead == 'H13' or sHead == 'H15' then
if sBlockedAxis == 'parallel' then
return 'A=0'
elseif sBlockedAxis == 'perpendicular' then
return 'A=-90'
end
else
return ''
end
-- fresa
elseif nToolType == MCH_TY.MILL_STD or nToolType == MCH_TY.MILL_NOTIP then
return ''
-- punta
elseif nToolType == MCH_TY.DRILL_STD or nToolType == MCH_TY.DRILL_LONG then
return ''
else
return 'A=0'
return ''
end
end
BeamData.GetChainSawBlockedAxis = GetChainSawBlockedAxis
BeamData.GetBlockedAxis = GetBlockedAxis
---------------------------------------------------------------------
local function GetChainSawInitAngs( vtN, vtO, nInd)
@@ -175,5 +215,40 @@ local function GetChainSawInitAngs( vtN, vtO, nInd)
end
BeamData.GetChainSawInitAngs = GetChainSawInitAngs
---------------------------------------------------------------------
local function GetSetupInfo( sHead)
local SetupInfo = {}
-- dati comuni
SetupInfo.bIsCSymmetric = true
SetupInfo.dCAxisEncumbrance = 180
SetupInfo.bToolOnAggregate = false
-- testa 5 assi da sopra
if sHead == 'H11' or sHead == 'H21' then
SetupInfo.bIsTopHead = true
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
SetupInfo.dMaxNegativeAngle = sin( -45)
-- lama su testa 5 assi da sopra
elseif sHead == 'H12' or sHead == 'H22' then
SetupInfo.bIsTopHead = true
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
SetupInfo.dMaxNegativeAngle = sin( -45)
-- motosega 1
elseif sHead == 'H13' or sHead == 'H23' then
SetupInfo.bIsTopHead = true
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
SetupInfo.dMaxNegativeAngle = 0
-- motosega 2
elseif sHead == 'H15' then
SetupInfo.bIsBottomHead = true
SetupInfo.bIsTopHead = not SetupInfo.bIsBottomHead
SetupInfo.dMaxPositiveAngle = 0
end
return SetupInfo
end
BeamData.GetSetupInfo = GetSetupInfo
---------------------------------------------------------------------
return BeamData
-12
View File
@@ -1,12 +0,0 @@
-- CutData.lua by Egaltech s.r.l. 27/04/2023 12:14:21
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local CutData = {
{ On = true, Name = 'MiSideInvSaw520', Type = 'HeadSide'},
{ On = true, Name = 'MiSideSaw520', Type = 'TailSide'},
{ On = true, Name = 'MiSideSaw520', Type = 'LongCut'}
}
---------------------------------------------------------------------
return CutData
-24
View File
@@ -1,24 +0,0 @@
-- DrillData.lua by Egaltech s.r.l. 04/08/2023 15:22:17
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local DrillData = {
{ On = true, Name = 'Drill_D4', Type = 'Drill'},
{ On = true, Name = 'Drill_D6', Type = 'Drill'},
{ On = true, Name = 'Drill_D8', Type = 'Drill'},
{ On = true, Name = 'Drill_D12', Type = 'Drill'},
{ On = true, Name = 'Drill_D14', Type = 'Drill'},
{ On = true, Name = 'Drill_D16', Type = 'Drill'},
{ On = true, Name = 'Drill_D18', Type = 'Drill'},
{ On = true, Name = 'Drill_D20', Type = 'Drill'},
{ On = true, Name = 'Drill_D22', Type = 'Drill'},
{ On = true, Name = 'Drill_D24', Type = 'Drill'},
{ On = true, Name = 'Drill_D25', Type = 'Drill'},
{ On = true, Name = 'DrillPock8x25', Type = 'Pocket'},
{ On = true, Name = 'DrillPock12x150', Type = 'Pocket'},
{ On = true, Name = 'DrillPock25x130', Type = 'Pocket'},
{ On = true, Name = 'DrillPock20x50', Type = 'Pocket'}
}
---------------------------------------------------------------------
return DrillData
+3
View File
@@ -6,6 +6,7 @@
[Drill]
1=Drill
2=Pocket
3=Predrill
[Milling]
1=Prof
@@ -27,6 +28,8 @@
17=ProfTCone
18=SmallToolContour
19=AntiSplintMillCut
20=SideMillAsBlade
21=Prof_end
[Pocketing]
1=Pocket
-28
View File
@@ -1,28 +0,0 @@
-- MillingData.lua by Egaltech s.r.l. 27/04/2023 10:34:35
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local MillingData = {
{ On = true, Name = 'Profiling25x130', Type = 'Prof'},
{ On = true, Name = 'FreeCont25x130_L104/250', Type = 'FreeContour'},
{ On = true, Name = 'FreeCont20x50', Type = 'FreeContour'},
{ On = true, Name = 'Mill_Tenon200x60', Type = 'Tenon'},
{ On = true, Name = 'Mill_DtTen60x130', Type = 'DtTenon'},
{ On = true, Name = 'Mill_DtMrt60x130', Type = 'DtMortise'},
{ On = true, Name = 'Milling200x60', Type = 'BirdsMouth'},
{ On = true, Name = 'Mill_L2C200x60_Down_L010/12', Type = 'Chamfer'},
{ On = true, Name = 'Chanfering_45', Type = 'Mark'},
{ On = true, Name = 'Text-Smusso45_L060', Type = 'Text'},
{ On = true, Name = 'Mill_L2C200x60_L010/12', Type = 'Long2Cut'},
{ On = true, Name = 'Mill_L2C200x60_Down_L010/12', Type = 'Long2CutDown'},
{ On = true, Name = 'Mill_L2CD25x130_', Type = 'Long2CutDown'},
{ On = true, Name = 'Milling20x50', Type = 'LongSmallCut'},
{ On = true, Name = 'Milling25x130', Type = 'LongSmallCut'},
{ On = true, Name = 'Milling200x60', Type = 'LongSmallCut'},
{ On = true, Name = 'Mill_L2C200x60_SIDE_L10/12', Type = 'Long2CutSide'},
{ On = true, Name = 'Milling25x130', Type = 'AntiSplintMillCut'},
{ On = true, Name = 'Milling20x50', Type = 'AntiSplintMillCut'}
}
---------------------------------------------------------------------
return MillingData
-18
View File
@@ -1,18 +0,0 @@
-- PocketingData.lua by Egaltech s.r.l. 27/04/2023 10:36:40
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local PocketingData = {
{ On = true, Name = 'Pocket_200x60_open', Type = 'OpenPocket'},
{ On = true, Name = 'Pocket_20x50_open', Type = 'OpenPocket'},
{ On = true, Name = 'Pocket_25x130_open', Type = 'OpenPocket'},
{ On = true, Name = 'Pocket_12x150_open', Type = 'OpenPocket'},
{ On = true, Name = 'Pocket_8x25_open', Type = 'OpenPocket'},
{ On = true, Name = 'Pocket_20x50_close', Type = 'Pocket'},
{ On = true, Name = 'Pocket_25x130_close', Type = 'Pocket'},
{ On = true, Name = 'Pocket_12x150_close', Type = 'Pocket'},
{ On = true, Name = 'Pocket_8x25_close', Type = 'Pocket'}
}
---------------------------------------------------------------------
return PocketingData
-10
View File
@@ -1,10 +0,0 @@
-- SawingData.lua by Egaltech s.r.l. 27/04/2023 13:50:48
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local SawingData = {
{ On = true, Name = 'Chainsaw', Type = 'Sawing'}
}
---------------------------------------------------------------------
return SawingData
-59
View File
@@ -1,59 +0,0 @@
local Offsets = {
PROGRESS=0,
MORTISER=0,
X1_NEG=-2725,
X1_POS=0,
Z1_NEG=-1550,
Z1_POS=-20,
PARK_Z1=-545,
PARK_SAWZ1=-150,
C1_NEG=-275,
C1_POS=275,
B1_NEG=-127,
B1_POS=127,
B1_NEG1=-119,
B1_POS1=119,
PIVOT_T1=169.7,
MIN_Y1=275,
MAX_Y1=5717,
PARK_Y1=951,
MIN_V1=5,
MAX_V1=676,
MIN_Y2=-5721,
MAX_Y2=-270,
PARK_Y2=-954,
MIN_V2=-684,
MAX_V2=-5,
MIN_DELTAVY=275,
CLAMP5=0,
MINWOPEN=38,
MAXWOPEN=160,
MAXWHEIGHT=305,
DIST_FTZERO=2137.3,
DELTA_CARICZERO=40,
DIST_UNLOAD=-2300,
OFFSETXT1=-1210,
OFFSETZT1=-1042.4,
OFFSETZSOTTOTRAVE=970,
OFFSETZTAPPETO=495,
OFFSETCLAMAT1=0,
OFFSETBLAMAT1=0,
}
local Trave = {
XMIN=50,
XMAX=401,
ZMIN=50,
ZMAX=801,
}
local User = {
OPTIMIZATIONS_ENABLE_SLICES_F5=1,
OPTIMIZATIONS_ENABLE_SLICES_F6=1,
OPTIMIZATIONS_LENGTH_SLICES=100,
L020_DIAM_HOLE=6,
L040_OFFSET_P1=0,
}
local Machine = { Offsets=Offsets, Trave=Trave, User=User}
return Machine
File diff suppressed because it is too large Load Diff
+3161
View File
File diff suppressed because it is too large Load Diff
+358 -95
View File
@@ -1,15 +1,70 @@
-- Special Operations macchina Essetre-ONErl by EgalWare s.r.l. 2023/11/15
-- Special Operations macchine standard ONE e PF by EgalWare s.r.l. 2023/11/24
-- Intestazioni
require( 'EmtGenerator')
EgtEnableDebug( false)
-- Carico i dati globali
local sBaseDir = EgtGetSourceDir()
local BD = dofile( sBaseDir .. 'Beam\\BeamData.lua')
-- Carico libreria
local BD = require( 'BeamData')
EgtOutLog ( '** Essetre-ONE '..PP_VER..' **', 1)
---------------------------------------------------------------------
-- *** Generic Machinings ***
---------------------------------------------------------------------
require( 'EmtGenMachining')
---------------------------------------------------------------------
-- *** Special GetPrevMachiningOffset ***
---------------------------------------------------------------------
-----------------------------------------------------------------------------------------
function OnSpecialGetPrevMachiningOffset()
-- Aggiorno posizione della testa della trave a seguito di movimenti delle pinze non previsti tra le fasi
local function TPosUpdate()
local nClId = EgtGetFirstNameInGroup( EMC.CURRMCHID, 'CL') -- recupero Id del gruppo CL della lavorazione corrente
local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL) -- Id del primo gruppo nella lavorazione (P1)
if not nPathId then
EMC.ERR = 12
EMC.MSG = ' Error : CL group path not found'
return
end
local dAuxMoveCount = EgtGetInfo( nPathId, 'AS#', 'd') or 0 -- numero di movimenti ausiliari
local dTRepos = nil
-- controlla ogni gruppo di movimenti ausiliari
for i = 1, dAuxMoveCount do
local aAuxMove = EgtGetInfo( nPathId, 'AS' .. tostring( i), 'vs') or {} -- array contenete i parametri di ogni gruppo
-- controlla solo i movimenti della testa trave e salva l'ultimo
if aAuxMove[1] == '2' or aAuxMove[1] == '3' then
for j = 2, #aAuxMove do
if aAuxMove[j] == 'T' then
dTRepos = aAuxMove[j+1]
break
end
end
end
end
return dTRepos
end
-- 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)
-- ricava se e quanto la trave viene spostata tra le due fasi dai movimenti ausiliari e corregge l'offset di fine fase
local dNewTPos = TPosUpdate()
-- se ci sono dei movimenti della testa trave tra le due fasi ricava il delta tra la vecchia e la nuova posizione
if dNewTPos then
EMC.PREVOFFSX = dNewTPos - vPrevAx[1]
-- oppure la X (L1) di questa corrisponde alla posizione iniziale della nuova trave, se ne deduce l'offset
else
EMC.PREVOFFSX = ParkV1 - vPrevAx[1]
end
end
end
end
---------------------- OnSpecialGetMaxZ -----------------------------
---------------------------------------------------------------------
@@ -36,23 +91,30 @@ function OnSpecialGetMaxZ()
-- Inizializzazioni
EMC.ERR = 0
-- Gestione speciale per sega a catena
-- Gestione speciale per sega a catena su utesta 1
if EMC.HEAD == 'H13' or EMC.HEAD == 'H15' then
EMC.MAXZ = EgtGetAxisHomePos( 'Z1')
return
-- Gestione speciale per sega a catena su testa 2
elseif EMC.HEAD == 'H23' then
EMC.MAXZ = EgtGetAxisHomePos( 'Z2')
return
end
-- Sistemazione dati di input
local vtTp = Vector3d( EMC.TDIRp)
local nPos = tonumber( string.sub( EMC.TCPOS, 2)) or 0
local sHead_TC = GetHeadTCSet( EMC.HEAD, EMC.TCPOS)
local bFromZmax = false
if vtTp:isSmall() then
vtTp = X_AX()
bFromZmax = true
if nPos <= 10 then
if sHead_TC == 'Head1_TC1' then
EMC.R1p = ParkC1
EMC.R2p = ParkB1
else
elseif sHead_TC == 'Head2_TC2' then
EMC.R1p = ParkC2
EMC.R2p = ParkB2
elseif sHead_TC == 'Head1_TC2' then
EMC.R1p = ParkFrnC1
EMC.R2p = ParkFrnB1
end
@@ -62,15 +124,15 @@ function OnSpecialGetMaxZ()
local bBSameSign = (( EMC.R2p < 10 and EMC.R2 < 10) or ( EMC.R2p > -10 and EMC.R2 > -10))
-- Calcolo in funzione della testa e dei parametri
if EMC.HEAD == 'H11' and nPos <= 10 then
if bBSameSign and vtTp:getX() > -0.3 and vtT:getX() > -0.3 then
if EMC.HEAD == 'H11' then
if bBSameSign and vtTp:getX() > -0.1 and vtT:getX() > -0.1 then
EMC.MAXZ = MaxZ1
else
local vMZ = {{ Tz=0.85, Ez=380}, { Tz=0.5, Ez=270}, { Tz=-0.01, Ez=160}}
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)
end
elseif EMC.HEAD == 'H12' and nPos <= 10 then
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 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)
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
@@ -88,18 +150,11 @@ function OnSpecialGetMaxZ()
local vMZ = {{ Tz=0.85, Ez=440}, { Tz=0.5, Ez=200}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
else
local vMZ = {{ Tz=0.85, Ez=380}, { Tz=0.7, Ez=280}, { Tz=0.5, Ez=180}, { Tz=0.15, Ez=60}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
local vMZ = {{ Tz=0.85, Ez=400}, { Tz=0.7, Ez=300}, { Tz=0.5, Ez=195}, { Tz=0.15, Ez=70}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
end
elseif EMC.HEAD == 'H11' then
if bBSameSign and vtTp:getX() > -0.3 and vtT:getX() > -0.3 then
EMC.MAXZ = MaxZ1
else
local vMZ = {{ Tz=0.85, Ez=380}, { Tz=0.5, Ez=270}, { Tz=-0.01, Ez=160}}
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
end
elseif EMC.HEAD == 'H12' then
if vtTp:getX() > 0.3 and vtT:getX() > 0.3 then
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2' then
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 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)
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
@@ -120,9 +175,39 @@ function OnSpecialGetMaxZ()
local vMZ = {{ Tz=0.85, Ez=380}, { Tz=0.7, Ez=280}, { Tz=0.5, Ez=180}, { Tz=0.15, Ez=60}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
end
elseif EMC.HEAD == 'H21' then
if bBSameSign and vtTp:getX() > -0.1 and vtT:getX() > -0.1 then
EMC.MAXZ = MaxZ2
else
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 = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
end
elseif EMC.HEAD == 'H22' then
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 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)
elseif vtTp:getZ() > 0.707 or vtT:getZ() > 0.707 then
EMC.MAXZ = ParkZ2 + 200
else
EMC.MAXZ = ParkZ2 + 1
end
elseif bBSameSign and
(( EMC.R1p > -180.1 and EMC.R1p < -29.9 and EMC.R1 > -180.1 and EMC.R1 < -29.9 and EMC.R2p < 10 and EMC.R2 < 10) or
( EMC.R1p > -330.1 and EMC.R1p < -179.9 and EMC.R1 > -330.1 and EMC.R1 < -179.9 and EMC.R2p > -10 and EMC.R2 > -10)) then
EMC.MAXZ = MaxZ2 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
elseif bBSameSign and
(( EMC.R1p > -180.1 and EMC.R1p < 0.1 and EMC.R1 > -180.1 and EMC.R1 < 0.1 and EMC.R2p < 10 and EMC.R2 < 10) or
( EMC.R1p > -360.1 and EMC.R1p < -179.9 and EMC.R1 > -360.1 and EMC.R1 < -179.9 and EMC.R2p > -10 and EMC.R2 > -10)) then
local vMZ = {{ Tz=0.85, Ez=440}, { Tz=0.5, Ez=200}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
else
local vMZ = {{ Tz=0.85, Ez=400}, { Tz=0.7, Ez=300}, { Tz=0.5, Ez=195}, { Tz=0.15, Ez=70}, { Tz=-0.01, Ez=5}, { Tz=-0.5, Ez=1}}
EMC.MAXZ = ParkZ2 + CalcExtraZ( vtTpZm, vtT, vMZ)
end
end
end
---------------------- OnSpecialMoveZup -----------------------------
---------------------------------------------------------------------
function OnSpecialMoveZup()
@@ -137,16 +222,17 @@ function OnSpecialMoveZup()
local vtT = Vector3d( EMC.TDIR)
-- Posizione nel TC
local nPos = tonumber( string.sub( EMC.TCPOS, 2)) or 0
local sHead_TC = GetHeadTCSet( EMC.HEAD, EMC.TCPOS)
-- recupero Z1 home
local dZmax = EgtGetAxisHomePos( 'Z1')
local nHeadSet = GetHeadSet( EMC.HEAD)
local dZmax = EgtGetAxisHomePos( EgtIf( nHeadSet ~= 2, 'Z1', 'Z2'))
-- se fresa
if EMC.HEAD == 'H11' then
-- se fresa su testa1 o su testa 2
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
;
-- se lama posizionata dietro
elseif EMC.HEAD == 'H12' and nPos <= 10 then
-- se lama posizionata su CU prossimo a testa 1
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
-- 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
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
@@ -163,8 +249,8 @@ function OnSpecialMoveZup()
EMC.MODIF = true
end
end
-- se lama posizionata in fronte
elseif EMC.HEAD == 'H12' then
-- se lama posizionata su CU prossimo a testa 2
elseif ( EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC2') or ( EMC.HEAD == 'H22' and sHead_TC == 'Head2_TC2') then
-- se inclinata oltre 90 gradi e interferisce con la trave
if ( EMC.R2 < -87.9 and ( EMC.R1 < -180.0 or EMC.R1 > -15.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()))
@@ -194,6 +280,9 @@ local SIC_V = 50 -- sicurezza da testa
local MIN_FRONT_ENG_V = 152 -- ingombro asse Z con cremagliera a destra
local MIN_BACK_ENG_V = 115 -- ingombro asse Z a sinistra
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
local MAX_BACK_CLAMP_5 = EgtClamp( MaxBackClamp5 or 320, 200, 380) -- massima sporgenza posteriore del pezzo da pinza speciale
----------------------- Variabili -----------------------------------
local Test = false
@@ -260,6 +349,22 @@ local function GetNextStartOrRestPhase( nPhase)
return nNextPhase
end
---------------------------------------------------------------------
local function IsFirstMachiningOfStart( nMchId)
-- se non è fase inizio di pezzo, ritorno risultato negativo
if not IsStartOrRestPhase( EMC.PHASE) then
return false
end
-- recupero la precedente operazione attiva
local nPrevOperId = EgtGetPrevActiveOperation( nMchId)
-- se non esiste o non è una disposizione, ritorno risultato negativo
if not nPrevOperId or EgtGetOperationType( nPrevOperId) ~= MCH_OY.DISP then
return false
end
-- è la prima
return true
end
---------------------------------------------------------------------
local function GetPhaseRot( nPhase)
return ( EgtGetInfo( EgtGetPhaseDisposition( nPhase) or GDB_ID.NULL, 'ROT', 'i') or 0)
@@ -327,6 +432,23 @@ local function GetCUTID()
return CutID
end
---------------------------------------------------------------------
local function GetPartId()
-- recupero Id del pezzo in lavoro
local nOrd = GetPhaseOrd( EMC.PHASE)
local nPartId
local nRawId = EgtGetFirstRawPart()
while nRawId do
local nRawOrd = EgtGetInfo( nRawId, 'ORD', 'i')
if nRawOrd == nOrd then
nPartId = EgtGetFirstPartInRawPart( nRawId)
break
end
nRawId = EgtGetNextRawPart( nRawId)
end
return nPartId
end
---------------------------------------------------------------------
local function GetNextRawInOrd( nCurrRawId)
local nCurrOrd = EgtGetInfo( nCurrRawId, 'ORD', 'i')
@@ -424,6 +546,7 @@ function OnSpecialApplyDisposition()
EMC.TPOS = dPosT
EMC.Y1DELTA = dPosY - dPosT
EMC.Y2DELTA = nil
EMC.W2DELTA = nil
EMC.V1POS = EgtGetInfo( EMC.DISPID, 'V1POS', 'd') or ParkV1
EMC.V2POS = EgtGetInfo( EMC.DISPID, 'V2POS', 'd') or ParkV2
EMC.CNT = 1
@@ -435,6 +558,7 @@ function OnSpecialApplyDisposition()
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
EMC.Y1DELTA = EgtGetInfo( nLastPathId, 'Y1DELTA', 'd')
EMC.Y2DELTA = EgtGetInfo( nLastPathId, 'Y2DELTA', 'd')
EMC.W2DELTA = EgtGetInfo( nLastPathId, 'W2DELTA', 'd')
EMC.V1POS = EgtGetInfo( nLastPathId, 'V1POS', 'd') or ParkV1
EMC.V2POS = EgtGetInfo( nLastPathId, 'V2POS', 'd') or ParkV2
EMC.CNT = SpecGetCNT( EMC.DISPID)
@@ -470,6 +594,7 @@ function OnSpecialApplyDisposition()
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
EMC.Y1DELTA = EgtGetInfo( nLastPathId, 'Y1DELTA', 'd')
EMC.Y2DELTA = EgtGetInfo( nLastPathId, 'Y2DELTA', 'd')
EMC.W2DELTA = EgtGetInfo( nLastPathId, 'W2DELTA', 'd')
EMC.V1POS = EgtGetInfo( nLastPathId, 'V1POS', 'd') or ParkV1
EMC.V2POS = EgtGetInfo( nLastPathId, 'V2POS', 'd') or ParkV2
EMC.CNT = SpecGetCNT( EMC.DISPID)
@@ -558,6 +683,7 @@ function OnSpecialApplyDisposition()
-- altrimenti fase successiva pari
else
EMC.Y2DELTA = EgtGetInfo( EMC.DISPID, 'Y2POS', 'd')
EMC.W2DELTA = nil
EMC.V1POS = EgtGetInfo( EMC.DISPID, 'V1POS', 'd')
EMC.V2POS = EgtGetInfo( EMC.DISPID, 'V2POS', 'd')
-- recupero contatore pinza 1
@@ -587,6 +713,24 @@ end
---------------------------------------------------------------------
function OnPostApplyMachining()
-- Inizializzo codice di errore
EMC.ERR = 0
-- Verifico se ultima lavorazione della fase
local nNextOpeId = EgtGetNextActiveOperation( EMC.MCHID)
local bMchLast = ( not nNextOpeId or EgtGetOperationPhase( nNextOpeId) ~= EMC.PHASE) -- Agisco sui diversi percorsi della lavorazione
local nPathId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( EMC.MCHID, 'CL') or GDB_ID.NULL)
while nPathId do
-- recupero id del successivo
nPathId = EgtGetNext( nPathId)
-- verifico se ultimo percorso di ultima lavorazione della fase
local bLast = ( bMchLast and ( not nPathId))
-- se ultimo, elimino ritorno in home
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
end
end
---------------------------------------------------------------------
function OnSpecialApplyMachining()
EgtOutLog( ' Lavorazione : ' .. EgtGetName( EMC.MCHID), 1)
@@ -607,6 +751,7 @@ function OnPostApplyMachining()
EMC.TPOS = nil
EMC.Y1DELTA = nil
EMC.Y2DELTA = nil
EMC.W2DELTA = nil
EMC.V1POS = ParkV1
EMC.V2POS = ParkV2
EMC.CNT = nil
@@ -619,6 +764,7 @@ function OnPostApplyMachining()
EMC.TPOS = dPosT
EMC.Y1DELTA = dPosY - dPosT
EMC.Y2DELTA = nil
EMC.W2DELTA = nil
EMC.V1POS = ParkV1
EMC.V2POS = ParkV2
EMC.CNT = SpecGetCNT( EMC.MCHID)
@@ -627,6 +773,7 @@ function OnPostApplyMachining()
EMC.TPOS = nil
EMC.Y1DELTA = nil
EMC.Y2DELTA = nil
EMC.W2DELTA = nil
EMC.V1POS = ParkV1
EMC.V2POS = ParkV2
EMC.CNT = 1
@@ -645,6 +792,7 @@ function OnPostApplyMachining()
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
EMC.Y1DELTA = EgtGetInfo( nLastPathId, 'Y1DELTA', 'd')
EMC.Y2DELTA = EgtGetInfo( nLastPathId, 'Y2DELTA', 'd')
EMC.W2DELTA = EgtGetInfo( nLastPathId, 'W2DELTA', 'd')
EMC.V1POS = EgtGetInfo( nLastPathId, 'V1POS', 'd') or ParkV1
EMC.V2POS = EgtGetInfo( nLastPathId, 'V2POS', 'd') or ParkV2
EMC.CNT = SpecGetCNT( EMC.MCHID)
@@ -659,6 +807,7 @@ function OnPostApplyMachining()
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
EMC.Y1DELTA = EgtGetInfo( nLastPathId, 'Y1DELTA', 'd')
EMC.Y2DELTA = EgtGetInfo( nLastPathId, 'Y2DELTA', 'd')
EMC.W2DELTA = EgtGetInfo( nLastPathId, 'W2DELTA', 'd')
EMC.V1POS = EgtIf( bAtZMax, ParkV1, EgtGetInfo( nLastPathId, 'V1POS', 'd') or ParkV1)
EMC.V2POS = EgtIf( bAtZMax, ParkV2, EgtGetInfo( nLastPathId, 'V2POS', 'd') or ParkV2)
EMC.CNT = SpecGetCNT( EMC.MCHID)
@@ -689,11 +838,12 @@ function OnPostApplyMachining()
-- verifico se ultimo percorso di ultima lavorazione della fase
local bLast = ( bMchLast and ( not nPathId))
-- se ultimo, elimino ritorno in home
if bLast then EgtRemoveOperationHome( EMC.MCHID) end
-- if bLast then EgtRemoveOperationHome( EMC.MCHID) end
-- salvo lo stato dei carrelli
local OriTPos = EMC.TPOS
local OriY1Delta = EMC.Y1DELTA
local OriY2Delta = EMC.Y2DELTA
local OriW2Delta = EMC.W2DELTA
local OriV1Pos = EMC.V1POS
local OriV2Pos = EMC.V2POS
local OriCnt = EMC.CNT
@@ -712,6 +862,7 @@ function OnPostApplyMachining()
EMC.TPOS = OriTPos
EMC.Y1DELTA = OriY1Delta
EMC.Y2DELTA = OriY2Delta
EMC.W2DELTA = OriW2Delta
EMC.V1POS = OriV1Pos
EMC.V2POS = OriV2Pos
EMC.CNT = OriCnt
@@ -750,6 +901,13 @@ end
---------------------------------------------------------------------
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
SPLIT = IsEndPhase( EMC.PHASE) or IsMid2Phase( EMC.PHASE) or IsEnd2Phase( EMC.PHASE)
@@ -780,6 +938,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
EMC.SB = b3Tot:getDimY()
EMC.HB = b3Tot:getDimZ()
EMC.LT = b3Raw:getDimX()
EgtOutLog( ' BarLen='..EgtNumToString( EMC.LB, 1), 3)
-- Aggiorno limiti di presa
UpdateMinJoin()
@@ -840,12 +999,13 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
dY2DeltaMinUL = EMC.LT + MinY2 - UnloadT
end
local vSaveCmd
-- Se inizio o appena dopo rotazione, eseguo il carico
if not EMC.TPOS then
local dPosT = LoadT
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 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
table.insert( vCmd, { 22, dRollBack, -dRollFront})
end
@@ -854,16 +1014,18 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
end
EgtJoinTables( vCmd, vCmd2)
SpecOutputCmds( vCmd)
vSaveCmd = vCmd
-- Se altrimenti carri entrambi diponibili, eseguo calcoli per carrelli
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
if SpecTestOnlyRemarkInCmds( vCmd) then
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
table.insert( vCmd, { 22, dRollBack, -dRollFront})
end
SpecOutputCmds( vCmd)
vSaveCmd = vCmd
-- Altrimenti, non muovo i carrelli rispetto alla trave ma impongo la posizione dei rulli
else
@@ -872,6 +1034,7 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
table.insert( vCmd, { 21, EgtIf( EMC.Y1DELTA, EMC.Y1DELTA, 0), EgtIf( EMC.Y2DELTA, EMC.Y2DELTA, 0)})
table.insert( vCmd, { 22, dRollBack, -dRollFront})
SpecOutputCmds( vCmd)
vSaveCmd = vCmd
end
-- Se taglio di separazione
@@ -882,18 +1045,58 @@ function SpecApplyPath( bPreSplit, bSplitting, bPreCut, bCutting, bUnload, bPreR
EgtRemoveInfo( NextDispId, 'SKIP')
-- verifico che la barra sia agganciata al secondo carrello
if not EMC.Y2DELTA then
local dTLen = EMC.LT - EMC.HOVM - BD.OVM_MID
local dRefIng = EgtIf( dTLen < 350, 120, EgtIf( dTLen < 550, 150, 200))
local dClampLen = dTLen - min( EMC.HCING + EMC.TCING, dRefIng)
-- se pinza 5, presa ammissibile e pezzo con dimensioni nei limiti
if Clamp5 and dClampLen > MIN_CLAMP_5 + SIC_CLAMP_5 - 10 * GEO.EPS_SMALL and
EMC.SB > MinWOpen - 10 * GEO.EPS_SMALL and EMC.SB < MaxWOpen + 10 * GEO.EPS_SMALL and EMC.HB < MaxWHeight + 10 * GEO.EPS_SMALL then
EgtOutLog( ' Warning SPLITTING -> separazione con uso pinza speciale')
SpecOutputCNT()
-- reset errore
EMC.ERR = 0
local dDeltaW = EgtGetValInNotes( EgtGetInfo( GetPartId() or GDB_ID.NULL, 'COMMENT') or '', 'DeltaW') or 0
local dDeltaP5 = EMC.LT - BD.OVM_MID - min( EMC.TCING, 0.5 * dRefIng) - SIC_CLAMP_5 - 0.4 * max( dClampLen - MIN_CLAMP_5 - SIC_CLAMP_5, 0)
dDeltaP5 = max( dDeltaP5, EMC.LT- BD.OVM_MID - MAX_BACK_CLAMP_5) + dDeltaW
local vCmd = vSaveCmd
table.insert( vCmd, { 23, dDeltaP5})
SpecOutputCmds( vCmd)
EgtOutLog( ' DeltaP5='..EgtNumToString( dDeltaP5, 1)..' DeltaW = '..EgtNumToString( dDeltaW, 1), 1)
-- imposto risalita a Zmax se lavorazione successiva è ancora una fresatura con la stessa lama (per essere sicuro di evitare collisioni)
local NextMachId = EgtGetNextActiveOperation( EgtGetNextActiveOperation( EMC.MCHID) or GDB_ID.NULL)
if NextMachId and EgtGetOperationType( NextMachId) == MCH_OY.MILLING then
-- salvo lavorazione e utensile correnti, per ripristinarli alla fine
local nOrigMchId = EgtGetCurrMachining()
local sOrigTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
-- imposto lavorazione e utensile correnti
EgtSetCurrMachining( NextMachId)
local sTool = EgtGetMachiningParam( MCH_MP.TOOL)
-- se utensile non cambiato
if sTool and EgtTdbSetCurrTool( sTool) and sTool == sOrigTool then
-- imposto risalita a Zmax
local sNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
sNotes = EgtSetValInNotes( sNotes, 'StartZmax', 2)
EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes)
end
-- ripristino lavorazione e utensile correnti
if nOrigMchId then EgtSetCurrMachining( nOrigMchId) end
if sOrigTool then EgtTdbSetCurrTool( sOrigTool) end
end
-- altrimenti separazione con caduta
EgtOutLog( ' Warning SPLITTING -> separazione con caduta pezzo')
SpecOutputCNT()
if IsEndPhase( EMC.PHASE + 1) then
EgtSetInfo( NextDispId, 'SKIP', '1')
local NextOpeId = EgtGetNextOperation( NextDispId)
while NextOpeId and EgtGetOperationPhase( NextOpeId) == EMC.PHASE + 1 do
EgtSetOperationMode( NextOpeId, false)
NextOpeId = EgtGetNextOperation( NextOpeId)
else
EgtOutLog( ' Warning SPLITTING -> separazione con caduta pezzo')
SpecOutputCNT()
-- forzo errore 18
EMC.ERR = 18
if IsEndPhase( EMC.PHASE + 1) then
EgtSetInfo( NextDispId, 'SKIP', '1')
local NextOpeId = EgtGetNextOperation( NextDispId)
while NextOpeId and EgtGetOperationPhase( NextOpeId) == EMC.PHASE + 1 do
EgtSetOperationMode( NextOpeId, false)
NextOpeId = EgtGetNextOperation( NextOpeId)
end
end
end
-- rimane impostato l'errore 18
-- verifico che la barra sia agganciata anche al primo carrello
elseif not EMC.Y1DELTA then
EMC.ERR = 19
@@ -974,21 +1177,35 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
-- Recupero valore assi macchina
local nSecId = EgtGetNext( EgtGetFirstInGroup( nPathId))
local vAxes = EmtGetAxesPos( nSecId)
if not vAxes or #vAxes < 5 or (( sHead == 'H13' or sHead == 'H23') and #vAxes < 6) then
if not vAxes or #vAxes < 5 or (( sHead == 'H13' or sHead == 'H15' or sHead == 'H23') and #vAxes < 6) then
EMC.ERR = 15
EMC.MSG = ' Error : machine axes values not found'
return
end
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
local b3Enc
EgtSetAxisPos( 'C1', vAxes[4])
EgtSetAxisPos( 'B1', vAxes[5])
if sHead == 'H13' then
EgtSetAxisPos( 'A', vAxes[6])
if sHead ~= 'H21' and sHead ~= 'H22' and sHead ~= 'H23' then
EgtSetAxisPos( 'C1', vAxes[4])
EgtSetAxisPos( 'B1', vAxes[5])
if sHead == 'H13' or sHead == 'H15' then
EgtSetAxisPos( 'A', vAxes[6])
end
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C1'), GDB_BB.ONLY_VISIBLE)
else
EgtSetAxisPos( 'C2', vAxes[4])
EgtSetAxisPos( 'B2', vAxes[5])
if sHead == 'H23' then
EgtSetAxisPos( 'A', vAxes[6])
end
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C2'), GDB_BB.ONLY_VISIBLE)
end
b3Enc = EgtGetBBoxGlob( EgtGetAxisId( 'C1'), GDB_BB.ONLY_VISIBLE)
local dRollFront = max( b3Enc:getMax():getX(), MIN_FRONT_ENG_V) + SIC_V
local dRollBack = max( -b3Enc:getMin():getX(), MIN_BACK_ENG_V) + SIC_V
-- Forzo la distanza di sicurezza da utensile
local nSecRollerDist = EgtGetValInNotes( EgtTdbGetCurrToolParam( MCH_TP.USERNOTES), 'SECDIST', 'i') or SIC_V
local dRollFront = max( b3Enc:getMax():getX(), MIN_FRONT_ENG_V) + nSecRollerDist
local dRollBack = max( -b3Enc:getMin():getX(), MIN_BACK_ENG_V) + nSecRollerDist
EgtOutLog( ' RollFront = ' .. EgtNumToString( dRollFront, 1) .. ' RollBack = ' .. EgtNumToString( dRollBack, 1), 3)
-- Calcolo della posizione della Punta Utensile rispetto allo Zero Macchina
local ptTip
@@ -1121,6 +1338,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
EMC.TPOS = ParkV1
EMC.Y1DELTA = dNewY1Delta
EMC.Y2DELTA = nil
EMC.W2DELTA = nil
EMC.V1POS = ParkV1
EMC.V2POS = ParkV2
-- Restituisco i comandi
@@ -1128,7 +1346,7 @@ function SpecCalcLoad( dPosT, dDistFront, dDistBack)
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 MyMinOther = MinOther + EgtIf( EMC.CNT == 1, AggLoad, 0)
@@ -1167,13 +1385,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
WorkTab.dV2PosF = -dRollFront
WorkTab.bV2CloseF = false
-- aggiuntivo per non avere problemi con pezzi a caduta
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
-- 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 AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
end
end
-- verifico validità intervallo ammesso per Y1
@@ -1183,6 +1399,9 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
return {}
end
-- al carico o con prima lavorazione di un pezzo si deve ignorare l'ingombro delle lavorazioni di testa per il pinzaggio
if EMC.LOAD or IsFirstMachiningOfStart( EMC.MCHID) then EMC.HCING = 0 end
return SpecAdjustCarriages( WorkTab)
-- [B] se richiesti entrambi e posso metterli
@@ -1209,13 +1428,11 @@ function SpecCalcCarriages( dDistFront, dDistBack, dRollFront, dRollBack, dY1Del
WorkTab.dV2PosF = -dRollFront
WorkTab.bV2CloseF = false
-- aggiuntivo per minimizzare scambi carrelli
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 5 * BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 4 * BD.CHAR_EXTRA_DIST
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 2.5 * BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + 2 * BD.CHAR_EXTRA_DIST
elseif WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = WorkTab.dY1DeltaMinF + BD.CHAR_EXTRA_DIST
-- 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 AuxInfoMach and ( AuxInfoMach.bSplitting or AuxInfoMach.bCutting) then
if WorkTab.dY1DeltaMaxF - WorkTab.dY1DeltaMinF > 1.5 * BD.CHAR_EXTRA_DIST and WorkTab.dY1DeltaMaxF > EMC.LT + BD.MINRAW_S + BD.CHAR_EXTRA_DIST then
WorkTab.dY1DeltaMinF = max( min( EMC.LT + BD.MINRAW_S, WorkTab.dY1DeltaMaxF - 1), WorkTab.dY1DeltaMinF)
end
end
-- verifico validità intervallo ammesso per Y1
@@ -1282,9 +1499,17 @@ end
function SpecCalcSplit( dLenRaw, dMaxLenLeft)
local vCmd = {}
EgtOutLog( ' *[S]', 1)
local bSplit = ( EMC.Y2DELTA ~= nil)
local ParkT = EgtIf( bSplit and dMaxLenLeft > ParkV1 - 50, LoadT, ParkV1)
table.insert( vCmd, { 0, EgtIf( bSplit, 'Split', 'Fall')})
local bSplit = ( EMC.Y2DELTA ~= nil or EMC.W2DELTA ~= nil)
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'))
table.insert( vCmd, { 0, sType})
if not bSplit then EnsureZmax( false, vCmd) end
-- determino i grezzi da agganciare al carrello Y (sono quelli presenti nella fase successiva dispari)
local nNextOddPhase = GetNextStartOrRestPhase( EMC.PHASE)
@@ -1304,7 +1529,7 @@ function SpecCalcSplit( dLenRaw, dMaxLenLeft)
-- salvo posizione carrello Y in disposizione del pezzo dopo split
local PostDispId = EgtGetPhaseDisposition( EMC.PHASE + 1)
if PostDispId then
if not bSplit then
if not bSplit or EMC.W2DELTA then
EgtSetInfo( PostDispId, 'TPOS', ParkT)
else
EgtRemoveInfo( PostDispId, 'TPOS')
@@ -1369,7 +1594,13 @@ end
function SpecCalcUnload()
local vCmdPre = {}
EgtOutLog( ' *[U]', 1)
if not EMC.Y1DELTA and not EMC.Y2DELTA then
if EMC.W2DELTA then
local vCmd = {}
-- Commento
table.insert( vCmd, { 0, 'Unloading SpecSplit'})
EgtOutLog( ' *[U2]', 1)
return vCmd
elseif not EMC.Y1DELTA and not EMC.Y2DELTA then
EMC.ERR = 21
EMC.MSG = ' Error : Y1 and Y2 not clamped for unloading'
return {}
@@ -1399,8 +1630,11 @@ function SpecCalcUnload()
EgtOutLog( ' *[U1]', 1)
end
local vCmd = {}
-- Tipo di scarico
local bStdUl = ( not MaxUnloadLen or MaxUnloadLen < 1 or EMC.LB - EMC.HOVM < MaxUnloadLen + 1)
-- Commento
table.insert( vCmd, { 0, 'Unloading'})
table.insert( vCmd, { 0, 'Unloading', EgtIf( bStdUl, 'Unloading', 'Manual Unloading')})
-- posizionamento sicuro teste e rulli (non serve ?)
--table.insert( vCmd, { 4, 0})
-- Se pinza Y chiusa, la apro
@@ -1408,11 +1642,15 @@ function SpecCalcUnload()
table.insert( vCmd, { 11, 0})
EMC.CNT = nil
end
-- Sposto il pezzo in posizione di scarico
local dFinT = UnloadT - EMC.LB
local dFinY2 = dFinT + EMC.Y2DELTA
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
-- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico
if bStdUl then
local dFinT = UnloadT - EMC.LB
local dFinY2 = dFinT + EMC.Y2DELTA
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
else
table.insert( vCmd, { 1, 'Y2', MaxY2})
end
-- apro la morsa
table.insert( vCmd, { 12, 0})
-- riporto il carrello in home
@@ -1464,8 +1702,6 @@ function SpecCalcPreRot()
EMC.CNT = nil
-- riporto il carrello in home
table.insert( vCmd, { 1, 'Y1', ParkY1})
-- dichiaro morse non agganciate
table.insert( vCmd, { 21, 0, 0})
-- eventuale unione tabelle
if #vCmdPre > 0 then
@@ -1477,13 +1713,16 @@ end
---------------------------------------------------------------------
local function ChangedTool( nMchId)
local bChanged = false
local bChanged = true
-- Salvo lavorazione e utensile correnti, per ripristinarli alla fine
local nOrigMchId = EgtGetCurrMachining()
local sOrigTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
-- Recupero l'utensile della lavorazione precedente
local nPrevMchId = EgtGetPrevActiveOperation( nMchId or GDB_ID.NULL)
if nPrevMchId and EgtGetOperationType( nPrevMchId) ~= MCH_OY.DISP then
while nPrevMchId and EgtGetOperationType( nPrevMchId) == MCH_OY.DISP do
nPrevMchId = EgtGetPrevActiveOperation( nPrevMchId or GDB_ID.NULL)
end
if nPrevMchId then
EgtSetCurrMachining( nPrevMchId)
local sTool = EgtGetMachiningParam( MCH_MP.TOOL)
bChanged = ( sTool ~= sOrigTool)
@@ -1502,7 +1741,8 @@ function SpecAdjustCarriages( WorkTab)
--EgtOutLog( ' --->>> CNT=' .. EgtIf( EMC.CNT, '1', '_'))
-- Aggiorno la posizione dei rulli per eventuale cambio utensile
if ChangedTool( EMC.MCHID) then
local bChangedTool = ChangedTool( EMC.DISPID or EMC.MCHID)
if bChangedTool then
WorkTab.dV1PosI = ParkV1
WorkTab.dV2PosI = ParkV2
end
@@ -1510,15 +1750,26 @@ function SpecAdjustCarriages( WorkTab)
local bCloseV = false
if WorkTab.dY1DeltaI then
if WorkTab.dY1DeltaI <= MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EMC.HCING + EMC.HOVM + EgtIf( EMC.CNT == 1, AggLoad, 0) then
bCloseV = true
bCloseV = true
end
end
if WorkTab.dY2DeltaI then
if EMC.LB - WorkTab.dY2DeltaI <= MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EgtIf( SPLIT, EMC.TCING, 0) + EgtIf( EMC.CNT == 1, AggLoad, 0) then
bCloseV = true
bCloseV = true
end
end
if WorkTab.dY2DeltaMinF then
if EMC.LB - WorkTab.dY2DeltaMinF <= MinJoin + WorkTab.dV1PosI - WorkTab.dV2PosI + 2 * AGG_V + EgtIf( SPLIT, EMC.TCING, 0) + EgtIf( EMC.CNT == 1, AggLoad, 0) then
bCloseV = true
end
end
-- se i pezzi del cliente sono molto storti, si forza la chiusura per evitare che vada a sbattere. Se parametro non presente, si chiude solo se necessario
if ForceToCloseRollersGate then
bCloseV = true
end
WorkTab.bCloseV = bCloseV
EgtOutLog( ' Tool : '..( EgtIf( bChangedTool, 'CHANGED', 'same')).. ' CloseV : '..( EgtIf( bCloseV, 'TRUE', 'false')), 1)
-- |POSIZIONO Y1| **[A]**
if WorkTab.dY1DeltaMinF and ( not WorkTab.dY2DeltaMinF) then
@@ -1672,7 +1923,7 @@ local function MaxDispl( TabI, vCmd, sType)
-- allontano (Y1+T) e (Y2)
dY1a = MaxY1
dY2a = MinY2
dTa = ( MaxY1 - TabI.dY1PosI) + dTa
dTa = ( dY1a - TabI.dY1PosI) + dTa
-- **[M2]** = allontanamento dei trascinatori con Y2 in presa
elseif sType == 'M2' then
EmitComment( vCmd, '[M2]')
@@ -1683,7 +1934,7 @@ local function MaxDispl( TabI, vCmd, sType)
-- allontano (Y2+T) e (Y1)
dY1a = MaxY1
dY2a = MinY2
dTa = ( MinY2 - TabI.dY2PosI) + dTa
dTa = ( dY2a - TabI.dY2PosI) + dTa
-- **[M3]** = accentramento dei trascinatori con Y1 in presa
elseif sType == 'M3' then
EmitComment( vCmd, '[M3]')
@@ -1693,7 +1944,7 @@ local function MaxDispl( TabI, vCmd, sType)
-- accentro (Y1+T) e (Y2)
dY1a = TabI.MyMinY1V1
dY2a = TabI.MaxY2V2
dTa = ( TabI.MyMinY1V1 - TabI.dY1PosI) + dTa
dTa = ( dY1a - TabI.dY1PosI) + dTa
-- **[M4]** = accentramento dei trascinatori con Y2 in presa
elseif sType == 'M4' then
EmitComment( vCmd, '[M4]')
@@ -1704,7 +1955,7 @@ local function MaxDispl( TabI, vCmd, sType)
-- accentro (Y2+T) e (Y1)
dY1a = TabI.MyMinY1V1
dY2a = TabI.MaxY2V2
dTa = ( TabI.MaxY2V2 - TabI.dY2PosI) + dTa
dTa = ( dY2a - TabI.dY2PosI) + dTa
end
--
table.insert( vCmd, { 3, 'Y1', dY1a, 'Y2', dY2a, 'T', dTa, EMC.CNT})
@@ -2030,7 +2281,7 @@ local function PosY1Y2B( TabI, vCmd)
end
end
nCnt = nCnt + 1
if nCnt > 5 then return end
if nCnt > 10 then return end
until ( not bXW)
-- chiusura/parcheggio dei trascinatori in funzioni chiamanti
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
@@ -2169,7 +2420,7 @@ local function PosY2Y1B( TabI, vCmd)
end
end
nCnt = nCnt + 1
if nCnt > 5 then return end
if nCnt > 10 then return end
until ( not bXW)
-- la chiusura delle morse è fatta sopra
local dY1Delta = TabI.dY1PosI - TabI.dTPosI
@@ -2241,7 +2492,7 @@ function SpecAdjustCarrA( WorkTab)
dY1DeltaF = PosY1Y2B( TabValI, vCmd)
else
--[A(1)A] **ALLONTANAMENTO** (dall'origine) del trascinatore Y1
EmitComment( vCmd, '[AY1A]')
EmitComment( vCmd, '[A-Y1A]')
dY1DeltaF = PosY1Y2A( TabValI, vCmd)
end
-- chiudo Y1
@@ -2337,8 +2588,8 @@ function SpecAdjustCarrB1( WorkTab)
if not SpecTestSomeMoveInCmds( vCmd) then
table.insert( vCmd, { 3, 'Y1', dY1PosI, 'Y2', dY2PosI, 'T', WorkTab.dTPosI, EMC.CNT})
end
table.insert( vCmd, { 11, 1}) -- chiudo Y1
table.insert( vCmd, { 12, 1}) -- Chiudo Y2
table.insert( vCmd, { 11, 1}) -- chiudo Y1
-- imposto i nuovi parametri di aggancio
table.insert( vCmd, { 21, dY1DeltaF, dY2DeltaF})
EgtOutLog( ' Y1DeltaF=' .. EgtNumToString( dY1DeltaF) .. ' Y2DeltaF=' .. EgtNumToString( dY2DeltaF), 1)
@@ -2409,8 +2660,8 @@ function SpecAdjustCarrB2( WorkTab)
if not SpecTestSomeMoveInCmds( vCmd) then
table.insert( vCmd, { 3, 'Y1', dY1PosI, 'Y2', dY2PosI, 'T', WorkTab.dTPosI, EMC.CNT})
end
table.insert( vCmd, { 11, 1}) -- chiudo Y1
table.insert( vCmd, { 12, 1}) -- Chiudo Y2
table.insert( vCmd, { 11, 1}) -- chiudo Y1
-- imposto i nuovi parametri di aggancio
table.insert( vCmd, { 21, dY1DeltaF, dY2DeltaF})
EgtOutLog( ' Y1DeltaF=' .. EgtNumToString( dY1DeltaF) .. ' Y2DeltaF=' .. EgtNumToString( dY2DeltaF), 1)
@@ -2470,7 +2721,7 @@ function SpecAdjustCarrC( WorkTab)
WorkTab.dY1DeltaMaxF = EMC.LB - ( MinJoin + MyTCING)
-- se Y1 deve accentrarsi
if WorkTab.dY1DeltaI > WorkTab.dY1DeltaMaxF then
WorkTab.dY1DeltaMinF = EMC.LB - 2 *( MinJoin + MyTCING)
WorkTab.dY1DeltaMinF = EMC.LB - 2 * MinJoin - MyTCING
end
end
-- posizioni obiettivo dei carrelli al centro dei rispettivi intervalli di validità
@@ -2617,6 +2868,11 @@ function SpecOutputCmds( vCmd, bEnd)
EgtSetInfo( EMC.PATHID, sKey, sInfo)
EMC.V1POS = Cmd[2]
EMC.V2POS = Cmd[3]
-- impostazione pinza speciale di uscita per pezzi corti (pinza 5)
elseif Cmd[1] == 23 then
local sInfo = '23,'..EgtNumToString( Cmd[2],3)
EgtSetInfo( EMC.PATHID, sKey, sInfo)
EMC.W2DELTA = Cmd[2]
-- aggancio grezzo a carrello
elseif Cmd[1] == 31 then
local sInfo = '31,'..EgtNumToString( Cmd[2],0)..','..Cmd[3]
@@ -2639,6 +2895,11 @@ function SpecOutputCmds( vCmd, bEnd)
else
EgtRemoveInfo( EMC.PATHID, 'Y2DELTA')
end
if EMC.W2DELTA then
EgtSetInfo( EMC.PATHID, 'W2DELTA', EMC.W2DELTA)
else
EgtRemoveInfo( EMC.PATHID, 'W2DELTA')
end
--Salvo le nuove posizioni dei rulli
EgtSetInfo( EMC.PATHID, 'V1POS', EMC.V1POS)
@@ -2674,6 +2935,8 @@ function SpecSetCarrPosFromCmds( vCmd)
elseif Cmd[1] == 22 then
EMC.V1POS = Cmd[2]
EMC.V2POS = Cmd[3]
elseif Cmd[1] == 23 then
EMC.W2DELTA = Cmd[2]
end
end
end
+36
View File
@@ -0,0 +1,36 @@
REM Compilazione degli script macchina Egaltech 2024.02.22
REM Per togliere info di debug aggiungere flag -s prima del nome del file di input
REM Compilazione 32 bit e copia file da non compilare
@echo off
REM chiedo all'utente la versione da assegnare alla macchina da compilare
set /p "machineVersion=Inserisci versione: "
REM variabili per costruire i percorsi delle cartelle
set "machineName=Essetre-ONErl"
set "deployFolder=C:\MachinesDeploy"
set "machinePath=%deployFolder%\%machineName%\"
set "fullPathSource=%deployFolder%\%machineName%\%machineVersion%\%machineName%"
set "fullPathZip=%deployFolder%\%machineName%\%machineVersion%"
REM elimino eventuale cartella esistente
rmdir /s /Q %fullPathZip%
REM copio i sorgenti nel percorso di destinazione
ROBOCOPY . %fullPathSource%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
REM copio i sorgenti nel percorso temporaneo per i compilati
ROBOCOPY . %fullPathSource%\bin\%machineName%\ /E /XF "Compile.bat" /XF ".gitignore" /XD ".git" /XF "UpdateLog.txt"
REM copio i file compilati nel percorso temporaneo per i compilati
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common_ONE-PF.mlpe -s Common_ONE-PF.mlpe
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common_ONE-PF.mlse -s Common_ONE-PF.mlse
\EgtProg\Dll32\luac54 -o %fullPathSource%\bin\%machineName%\Common_ONE-PF.NUM.mlpe -s Common_ONE-PF.NUM.mlpe
REM comprimo i file compilati in uno zip pronto per essere distribuito
tar.exe acvf %fullPathZip%\%machineName%.zip -C %fullPathSource%\bin\ %machineName%\*.*
REM elimino il percorso temporaneo
rmdir /s /Q %fullPathSource%\bin\
-2312
View File
File diff suppressed because it is too large Load Diff
-2073
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+3 -2
View File
@@ -14,8 +14,9 @@ ConnectionString=COM
3=l,2,Z
4=l,3,U
5=l,4,V
6=r,7,B
7=r,8,C
6=l,5,W
7=r,7,B
8=r,8,C
[Channels]
1=0,Channel 1
+210 -42
View File
@@ -1,17 +1,36 @@
-- Descrizione macchina Essetre-ONErl by EgalWare s.r.l. 2023/11/15
-- Descrizione macchina Essetre-ONErl by EgalWare s.r.l. 2024/02/20
-- 2023/11/15 ver 2.5k1 Prima versione (derivata da ONE carico standard).
-------------------------------------
-- NOTE VERSIONI SUCCESSIVE IN GIT --
-------------------------------------
-- Intestazioni
require( 'EmtGenerator')
EgtEnableDebug( true)
EgtEnableDebug( false)
PP_VER = '2.5k1'
PP_VER = '3.1c2'
PP_NVER = '3.1.3.2'
MIN_MACH_VER = '2.5k1'
MACH_NAME = EgtGetCurrMachineName()
-- Carico i dati globali
local sMachDir = EgtGetCurrMachineDir()
-- Elimino direttori altre macchine e imposto direttorio macchina corrente per ricerca librerie
EgtRemoveBaseMachineDirFromPackagePath()
EgtAddToPackagePath( sMachDir .. '\\Beam\\?.lua')
EgtAddToPackagePath( sMachDir .. '\\?.lua')
INFO_STD_PP = require( 'Version')
-- prendo la versione kernel minima necessaria più nuova tra macchina e script comuni
if INFO_STD_PP.MIN_MACH_VER_PP_COMMON > MIN_MACH_VER then
MIN_MACH_VER = INFO_STD_PP.MIN_MACH_VER_PP_COMMON
end
EgtOutLog ( '** ' .. MACH_NAME..' '..PP_VER..' ** ( '..INFO_STD_PP.NAME..': '..INFO_STD_PP.VERSION..' - MinMach: '.. MIN_MACH_VER ..') **', 1)
-- Parametri macchina
NumericalControl = 'NUM' -- NUM o TPA
NumericalControl = 'NUM' -- NUM o TPA o NUM_FLEX
Progress = false
Mortiser = false -- solo per One (nella Progress la stessa posizione è per ChainSaw)
Mortiser = false -- solo per One (nella Progress la stessa posizione è per ChainSaw)
MinMchY1 = 335
MaxMchY1 = 5700.0
ParkMchY1 = 960.0
@@ -37,6 +56,12 @@ MaxVeOpen = 820
RollCageMin = 120
RollCageMax = 250
Clamp5 = false
MinW = 0
MaxW = 670
ParkW = 0
MinWOpen = 79
MaxWOpen = 200
MaxWHeight = 300
LoadT = 2131.2
UnloadT = -2400
MillOffs = 170.0
@@ -49,7 +74,7 @@ ChSawLen = 94.0
MinX1 = 0
MaxX1 = 2735
MinZ1 = -1550
MaxZ1 = -20 -- per evitare problemi con striscia led
MaxZ1 = -20 -- per evitare problemi con striscia led
MinC1 = -275
MaxC1 = 275
MinB1 = -127
@@ -57,13 +82,15 @@ MaxB1 = 127
MinB1b = -119
MaxB1b = 119
ParkX1 = MaxX1
ParkFrnX1 = MinX1
ParkFrnX1 = 300
ParkZ1 = -535
ParkC1 = 90
ParkFrnC1 = -90
ParkB1 = 90
ParkFrnB1 = -90
LimX1RotSaw = 2900
LimX1RotSaw = 1700
LimX1PlRotSaw = 1970
LimX1RotSawTC2 = 800
ParkCSawX1 = 1350
ParkCSawX1S = MinX1
ParkCSawZ1 = -50
@@ -71,22 +98,28 @@ ParkCSaw0Z1 = -400
ParkCSawC1 = 90
ParkCSaw0C1 = 0
ParkCSawB1 = 0
ParkLongToolB1 = 0
ParkLongToolC1 = 0
TurnerOffs = 50.0
AggLoad = 50
DeltaTabY = 1210.0
DeltaTabZ = -1060.0 -- per TPA la quota è dal centro di rotazione (va aggiunto MillOffs)
DeltaTabZ = -1060.0 -- per TPA la quota è dal centro di rotazione (va aggiunto MillOffs)
DeltaRulliTraveZ = 980
DeltaRulliTappetoZ = -485
DimTabY = 500
DimTabX = 24000
DimTabX = 30000
AutomaticRotation = true
AutoRotMinLen = 0
DefTcPos1 = 'T3'
CoeffVM = 0.5
EstimationRapidMultiplier = 1
ForceToCloseRollersGate = false
SecondToolChanger = false
DistZClampToTable = 5 -- distanza tra la tavola e il punto più basso della morsa
ClampingCoeffMin = nil -- coefficiente di fissaggio, se 0 o nil non fa controllo, per il momento da inizializzare da Ts3Data
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-ONErl.data"
local sData = EgtGetSourceDir().."\\Beam\\Ts3Data.lua"
local sData = sMachDir.."\\Beam\\Ts3Data.lua"
if EgtExistsFile( sTs3Data) then
EgtCopyFile( sTs3Data, sData)
local sTs3DataOld = sTs3Data..'.old'
@@ -97,9 +130,16 @@ if EgtExistsFile( sData) then
local Machine = dofile( sData)
if Machine then
if Machine.Offsets then
--NumericalControl = EgtIf( Machine.Offsets.TIPO_CN == 0, 'NUM', 'TPA')
if Machine.Offsets.TIPO_CN == 0 then
NumericalControl = 'NUM'
elseif Machine.Offsets.TIPO_CN == 1 then
NumericalControl = 'TPA'
else
NumericalControl = 'NUM_FLEX'
end
if Machine.Offsets.X1_POS then MinX1 = -Machine.Offsets.X1_POS end
if Machine.Offsets.X1_NEG then MaxX1 = -Machine.Offsets.X1_NEG end
if Machine.Offsets.PARK_X1 then ParkX1 = -Machine.Offsets.PARK_X1 end
if Machine.Offsets.Z1_NEG then MinZ1 = Machine.Offsets.Z1_NEG end
if Machine.Offsets.Z1_POS then MaxZ1 = min( MaxZ1, Machine.Offsets.Z1_POS) end
if Machine.Offsets.PARK_Z1 then ParkZ1 = Machine.Offsets.PARK_Z1 end
@@ -119,6 +159,12 @@ if EgtExistsFile( sData) then
if Machine.Offsets.PARK_Y2 then ParkMchY2 = Machine.Offsets.PARK_Y2 end
if Machine.Offsets.MIN_V2 then MinV2 = Machine.Offsets.MIN_V2 end
if Machine.Offsets.MAX_V2 then MaxV2 = Machine.Offsets.MAX_V2 end
if Machine.Offsets.CLAMP5 then Clamp5 = ( Machine.Offsets.CLAMP5 == 1) end
if Machine.Offsets.MIN_W then MinW = Machine.Offsets.MIN_W end
if Machine.Offsets.MAX_W then MaxW = Machine.Offsets.MAX_W end
if Machine.Offsets.MINWOPEN then MinWOpen = Machine.Offsets.MINWOPEN end
if Machine.Offsets.MAXWOPEN then MaxWOpen = Machine.Offsets.MAXWOPEN end
if Machine.Offsets.MAXWHEIGHT then MaxWHeight = Machine.Offsets.MAXWHEIGHT end
if Machine.Offsets.DIST_FTZERO then LoadT = Machine.Offsets.DIST_FTZERO end
if Machine.Offsets.DELTA_CARICZERO then TurnerOffs = Machine.Offsets.DELTA_CARICZERO end
if Machine.Offsets.MIN_DELTAVY then MinDeltaYV = Machine.Offsets.MIN_DELTAVY + 0.1 end
@@ -136,20 +182,31 @@ if EgtExistsFile( sData) then
if Machine.Offsets.SAWOFFSX then SawOffsX = Machine.Offsets.SAWOFFSX end
if Machine.Offsets.SAWOFFSZ then SawOffsZ = Machine.Offsets.SAWOFFSZ end
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) 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.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.MAX_BACK_CLAMP_5 then MaxBackClamp5 = Machine.Offsets.MAX_BACK_CLAMP_5 end
if Machine.Offsets.SEC_TC then SecondToolChanger = ( Machine.Offsets.SEC_TC == 1) end
if Machine.Offsets.COEFF_CLAMP_CHECK then ClampingCoeffMin = Machine.Offsets.COEFF_CLAMP_CHECK end
-- aggiustamenti
MinY1 = MinV1 + MinDeltaYV
MaxY1 = MaxMchY1
ParkV1 = MaxV1
ParkY1 = ParkV1 + MinDeltaYV
MinY2 = MinMchY2
MaxY2 = MaxV2 - MinDeltaYV
ParkV2 = MinV2
ParkY2 = ParkV2 - MinDeltaYV
ParkV1 = min( ParkV1, MaxV1, abs( MinV2))
ParkV2 = -ParkV1
ParkX1 = MaxX1
ParkFrnX1 = MinX1
ParkX1 = min( ParkX1, MaxX1)
ParkCSawZ1 = min( ParkCSawZ1, MaxZ1)
ParkCSaw0Z1 = min( ParkCSaw0Z1, MaxZ1)
Mortiser = ( Mortiser and not Progress)
SecondToolChanger = ( SecondToolChanger and not Progress)
end
end
end
@@ -162,13 +219,17 @@ EmtGeneral {
ExitMaxAdjust = 300,
ExitMaxRotAdj = 0.5,
AngDeltaMinForHome = 80,
Special = 'Essetre-ONE.mlse',
Processor = 'Essetre-ONE.mlpe'}
Special = 'Common_ONE-PF.mlse',
Processor = 'Common_ONE-PF.mlpe'}
local sBaseAux = {'BASE/SOLID', 'BASE/SIGN', 'BASE/CONVOYER', 'BASE/BELT', 'BASE/COLLISION', 'BASE/TC1'}
if Progress then
table.insert( sBaseAux, 'BASE/TC1S')
table.insert( sBaseAux, 'BASE/TC2')
table.insert( sBaseAux, 'BASE/TC3')
elseif SecondToolChanger then
table.insert( sBaseAux, 'BASE/TC2')
table.insert( sBaseAux, 'BASE/TC2S')
table.insert( sBaseAux, 'BASE/TC3')
else
table.insert( sBaseAux, 'BASE/MTC')
if Mortiser then table.insert( sBaseAux, 'BASE/TC3') end
@@ -188,7 +249,7 @@ local X1Id = EmtAxis {
Home = ParkX1,
Invert = true,
Geo = 'X1_AXIS/GEO',
Aux = 'X1_AXIS/SOLID'}
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
-- *** Testa 1 ***
EmtAxis {
Name = 'Z1',
@@ -262,7 +323,7 @@ EmtAxis {
Home = 0,
Geo = 'A1_AXIS/GEO'}
local H13Id
if Progress then
if Progress or SecondToolChanger then
H13Id = EmtHead {
Name = 'H13',
Parent = 'A',
@@ -275,8 +336,7 @@ if Progress then
Rot2Stroke = { -90.1, 90.1},
SolCh = MCH_SCC.ADIR_NEAR,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H15_HEAD/GEO',
Aux = 'H15_HEAD/SOLID'}
Geo = 'H15_HEAD/GEO'}
else
H13Id = EmtHead {
Name = 'H13',
@@ -290,14 +350,13 @@ else
Rot2Stroke = { -90.1, 90.1},
SolCh = MCH_SCC.ADIR_NEAR,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H13_HEAD/GEO',
Aux = 'H13_HEAD/SOLID'}
Geo = 'H13_HEAD/GEO'}
end
EgtSetInfo( H13Id, 'ZSAFEDELTA', '60')
EgtSetInfo( H13Id, 'ZMAXONROT', '1,80')
-- Mortasatrice sotto la traversa (solo per One)
-- Mortasatrice sotto la traversa (solo per One base con un solo cambio utensile)
local H15Id
if not Progress and Mortiser then
if not Progress and Mortiser and not SecondToolChanger then
H15Id = EmtHead {
Name = 'H15',
Parent = 'A',
@@ -310,8 +369,7 @@ if not Progress and Mortiser then
Rot2Stroke = { -90.1, 90.1},
SolCh = MCH_SCC.ADIR_NEAR,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H15_HEAD/GEO',
Aux = 'H15_HEAD/SOLID'}
Geo = 'H15_HEAD/GEO'}
EgtSetInfo( H15Id, 'ZSAFEDELTA', '60')
EgtSetInfo( H15Id, 'ZMAXONROT', '1,80')
end
@@ -336,7 +394,7 @@ local PY1Id = EmtAxis {
Stroke = {0, MaxHoOpen},
Home = MaxHoOpen,
Geo = 'PY1_AXIS/GEO',
Aux = 'PY1_AXIS/SOLID'}
Aux = {'PY1_AXIS/SOLID', 'PY1_AXIS/CLAMP_CHECK'}}
local Y2Id = EmtAxis {
Name = 'Y2',
Parent = 'Base',
@@ -356,7 +414,7 @@ local PY2Id = EmtAxis {
Stroke = {0, MaxHoOpen},
Home = MaxHoOpen,
Geo = 'PY2_AXIS/GEO',
Aux = 'PY2_AXIS/SOLID'}
Aux = {'PY2_AXIS/SOLID', 'PY2_AXIS/CLAMP_CHECK'}}
-- Rulli
local V1Id = EmtAxis {
Name = 'V1',
@@ -397,7 +455,7 @@ local V2Id = EmtAxis {
Stroke = { MinV2, MaxV2},
Home = ParkV2,
Geo = 'V2_AXIS/GEO',
Aux = {'V2_AXIS/SOLID', 'V2_AXIS/COLLISION'}}
Aux = {'V2_AXIS/SOLID', EgtIf( Clamp5, 'V2_AXIS/AUX5', 'V2_AXIS/AUX'), 'V2_AXIS/COLLISION'}}
local PV2Id = EmtAxis {
Name = 'PV2',
Parent = 'V2',
@@ -418,6 +476,39 @@ local QV2Id = EmtAxis {
Home = MaxVeOpen,
Geo = 'QV2_AXIS/GEO',
Aux = 'QV2_AXIS/SOLID'}
local WId, PWId, QWId
if Clamp5 then
WId = EmtAxis {
Name = 'W',
Parent = 'V2',
Type = MCH_AT.LINEAR,
Dir = -X_AX(),
Pos = Point3d(875.5,1072.0,-1509.1),
Stroke = { MinW, MaxW},
Home = ParkW,
Geo = 'W_AXIS/GEO',
Aux = { 'W_AXIS/SOLID', 'W_AXIS/COLLISION'}}
PWId = EmtAxis {
Name = 'PW',
Parent = 'W',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d(194.0,2364.7,-879.1),
Stroke = {MinWOpen, MaxWOpen},
Home = MaxWOpen,
Geo = 'PW_AXIS/GEO',
Aux = 'PW_AXIS/SOLID'}
QWId = EmtAxis {
Name = 'QW',
Parent = 'PW',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d(194.0,2364.7,-879.1),
Stroke = {0, 30},
Home = 0,
Geo = 'QW_AXIS/GEO',
Aux = { 'QW_AXIS/SOLID', 'QW_AXIS/COLLISION'}}
end
-- *** Tavola ***
EmtAxis {
Name = 'T',
@@ -426,7 +517,7 @@ EmtAxis {
Type = MCH_AT.LINEAR,
Dir = -X_AX(),
Pos = Point3d(0.0,2450.0,-958.0),
Stroke = {-20000, 20000},
Stroke = {-30000, 30000},
Home = LoadT,
Geo = 'T_AXIS/GEO'}
EmtTable {
@@ -434,6 +525,7 @@ EmtTable {
Parent = 'T',
Type = MCH_TT.FLAT,
Ref1 = Point3d( - DimTabX, DeltaTabY, DeltaTabZ),
Coll = 'Base/BELT',
Geo = 'TABLE/GEO',
Aux = 'TABLE/SOLID'}
-- *** ToolChanger ***
@@ -519,16 +611,33 @@ EmtTcPos {
TDir = -Y_AX(),
ADir = -X_AX(),
Geo = 'BASE/T10'}
if Progress then
if Progress or SecondToolChanger then
local ptTc2 = Point3d( 150, -170, -217 + ( DeltaTabZ + DeltaRulliTraveZ + 29))
local vtDt2 = Vector3d( 0, 0, - 102.5)
if SecondToolChanger then
EmtTcPos {
Name = 'T11',
Parent = 'Base',
Pos = ptTc2 + Vector3d( SawOffsX, SawOffsZ, 0),
Pos = ptTc2,
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'BASE/T11'}
Geo = 'BASE/T11b'}
EmtTcPos {
Name = 'T12',
Parent = 'Base',
Pos = ptTc2 + 1 * vtDt1,
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'BASE/T12'}
else
EmtTcPos {
Name = 'T11',
Parent = 'Base',
Pos = ptTc2 + Vector3d( SawOffsX, SawOffsZ, 0),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'BASE/T11'}
end
EmtTcPos {
Name = 'T13',
Parent = 'Base',
@@ -603,9 +712,9 @@ else
ADir = X_AX(),
Geo = 'BASE/T201'}
end
if Progress or Mortiser then
if Progress or Mortiser or SecondToolChanger then
local ptTc3 = Point3d( 480, 2233.9, -200.8 + ( DeltaTabZ + DeltaRulliTraveZ + 29))
local sName = EgtIf( Progress, 'T101', 'T301')
local sName = EgtIf( Progress or SecondToolChanger, 'T101', 'T301')
EmtTcPos {
Name = sName,
Parent = 'Base',
@@ -626,20 +735,31 @@ EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC2') or GDB_ID.NULL, vtMovB, GDB_RT.G
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( BaseId, 'MTC') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
local vtMovC = Vector3d( 0, 0, ( DeltaTabZ + DeltaRulliTappetoZ + 1545)) -- -( -1060 - 485)
EgtMove( EgtGetFirstNameInGroup( BaseId, 'BELT'), vtMovC, GDB_RT.GLOB)
local vtMove = Vector3d( 0, ( DeltaTabY - 1210.0), ( DeltaTabZ + 1060.0))
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'CLAMP_CHECK'), vtMove + Vector3d(0,0,DistZClampToTable), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( V1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( QV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( V2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( V2Id, EgtIf( Clamp5, 'AUX5', 'AUX')), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PV2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( QV2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
if Clamp5 then
EgtMove( EgtGetFirstNameInGroup( WId, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( WId, 'COLLISION'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( PWId, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( QWId, 'SOLID'), vtMove, GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( QWId, 'COLLISION'), vtMove, GDB_RT.GLOB)
end
-- Assegno identificativi alle spie delle morse
PY1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( PY1Id, 'SOLID') or GDB_ID.NULL, 'Light')
@@ -668,9 +788,20 @@ function OnSetHead()
EmtModifyAxisHome( 'C1', ParkC1)
EmtModifyAxisHome( 'B1', ParkB1)
else
local MyHomeB1, MyHomeC1
-- se cambio utensile verticale
if EgtGetHeadId( 'H21') or Progress or SecondToolChanger then
MyHomeB1 = ParkFrnB1
MyHomeC1 = ParkFrnC1
-- altrimenti su one CU speciale motosega-utensile lungo
else
MyHomeB1 = ParkLongToolB1
MyHomeC1 = ParkLongToolC1
end
EmtModifyAxisHome( 'X1', ParkFrnX1)
EmtModifyAxisHome( 'C1', ParkFrnC1)
EmtModifyAxisHome( 'B1', ParkFrnB1)
EmtModifyAxisHome( 'C1', MyHomeC1)
EmtModifyAxisHome( 'B1', MyHomeB1)
end
-- se testa H13 (sega a catena)
elseif EMC.HEAD == 'H13' then
@@ -694,6 +825,41 @@ function OnSetHead()
end
end
---------------------------------------------------------------------
-------------------------- Testa utilizzata -------------------------
function GetHeadSet( sHead)
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
return 1
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
return 2
else
return 0
end
end
---------------------------------------------------------------------
---------------------------- Cambio Utensile ------------------------
function GetHeadTCSet( sHead, sTcPos)
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
-- testa 1
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
-- testa 1 su CU prossimo a testa 2
if nPos > 10 then
return 'Head1_TC2'
-- testa 1 su CU prossimo a testa 1
else
return 'Head1_TC1'
end
-- testa 2 su CU prossimo a testa 2
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
return 'Head2_TC2'
-- testa 2 su CU prossimo a testa 1 (non esiste una condfigurazione fatta in questo modo)
elseif nPos < 10 then
return 'Head2_TC1'
else
return 0
end
end
---------------------------------------------------------------------
-- Funzione che restituisce l'altezza del pezzo in lavorazione
function GetRawHeight()
@@ -751,7 +917,7 @@ function GetZExtra( sHead, dAngV)
elseif abs( dAngV) < 60.1 then
return 200
elseif abs( dAngV) < 90.1 then
return 10
return 1
else
return 0
end
@@ -763,7 +929,9 @@ function GetZExtra( sHead, dAngV)
elseif abs( dAngV) < 60.1 then
return 200
elseif abs( dAngV) < 90.1 then
return 10
return 1
elseif abs( dAngV) < 120 then
return -100
else
return 0
end
+59
View File
@@ -0,0 +1,59 @@
; Commento per evitare BOM con UTF-8
;Index = Type, Description, Default Value
; Type : b=boolean, d=double, l=lenght, s=string
[Drilling]
[Sawing]
[Milling]
0=l,MaxElev,0
1=d,OutRaw,0
2=l,SideElev,0
3=d,TrimExt,0
4=s,VtFaceUse,0,0,0
5=s,EdgesFaceUse,0
[Pocketing]
0=l,MaxElev,0
1=b,Open,0
2=d,OpenMinSafe,0
3=d,OpenOutRaw,0
4=l,MaxOptSize,0
5=b,AdjustFeed,1
[Mortising]
0=d,MaxElev,0
[Chiseling]
[SawRoughing]
[SawFinishing]
[GenMachining]
[SurfRoughing]
0=l,MaxElev,1000
1=b,PlaneZ,0
[SurfFinishing]
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
Binary file not shown.
Binary file not shown.
-92
View File
@@ -1,92 +0,0 @@
# Essetre-ONErl
## Getting started
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
```
cd existing_repo
git remote add origin https://gitlab.steamware.net/egalware-machines/essetre/essetre-onerl.git
git branch -M main
git push -uf origin main
```
## Integrate with your tools
- [ ] [Set up project integrations](https://gitlab.steamware.net/egalware-machines/essetre/essetre-onerl/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+23 -1
View File
@@ -29,8 +29,30 @@ local GS = {}
-- Configurazione posizioni (con o senza TC2)
local PositionTable = {}
-- se secondo toolchanger
if EgtGetTcPosId( 'T12') then
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
{Pos = "Pos3", TcPos = "T4", Head = "H11", Group = "G1"},
{Pos = "Pos4", TcPos = "T5", Head = "H11", Group = "G1"},
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
{Pos = "Pos10", TcPos = "T11", Head = "H11", Group = "G2"},
{Pos = "Pos11", TcPos = "T12", Head = "H11", Group = "G2"},
{Pos = "Pos12", TcPos = "T13", Head = "H11", Group = "G2"},
{Pos = "Pos13", TcPos = "T14", Head = "H11", Group = "G2"},
{Pos = "Pos14", TcPos = "T15", Head = "H11", Group = "G2"},
{Pos = "Pos15", TcPos = "T16", Head = "H11", Group = "G2"},
{Pos = "Pos16", TcPos = "T17", Head = "H11", Group = "G2"},
{Pos = "Pos17", TcPos = "T18", Head = "H11", Group = "G2"},
{Pos = "Pos18", TcPos = "T19", Head = "H11", Group = "G2"},
{Pos = "Pos19", TcPos = "T20", Head = "H11", Group = "G2"},
{Pos = "Pos20", TcPos = "T101", Head = "H13", Group = "G3"}}
-- se Progress
if EgtGetTcPosId( 'T11') then
elseif EgtGetTcPosId( 'T11') then
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H11", Group = "G1"},
{Pos = "Pos2", TcPos = "T2", Head = "H11", Group = "G1"},
{Pos = "Pos3", TcPos = "T3", Head = "H11", Group = "G1"},
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

-13
View File
@@ -1,13 +0,0 @@
; Commento per evitare BOM con UTF-8
[General]
Pos1=T1;H12;1/6CB00A83-DDCD-49E6-A301-E1A0482615CA/Sawblade_520
Pos2=T3;H11;1/E7F6A2BB-1F66-48B9-9561-496231C33403/DoveTail_D60
Pos3=T4;H11;1/6EBB8C90-3B4A-498D-B971-1D1EBE6BE77F/EndMill_20x50
Pos4=T5;H11;1/8B729108-7A53-4D8E-8394-379BA211C597/EndMill_25x130
Pos5=T6;H11;1/0147ED47-EB5D-44D6-9CE2-5282B484B5BD/Marking_Tool_45x40
Pos6=T7;H11;1/E56CB1CB-27EB-4F1E-9C5D-98AC495EDC9C/DrillBit_D16
Pos7=T8;H11;1/17AA8A73-6D82-4AC7-91E2-4603B3D227BC/Fresa40x165
Pos8=T9
Pos9=T10;H11;1/73EA9F19-5634-447D-8A23-8EEC777983E6/SIDE_AND_FACECUTTER_200x60
Pos10=T101;H13;1/A6CFDA65-DABB-441E-990A-776B5C24C2E4/ChainSaw
Pos11=T201;H11;1/593F06F9-6749-4FE1-A3B1-44E8D7F5E96A/DrillBit_D20
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+42
View File
@@ -0,0 +1,42 @@
; Commento per evitare BOM con UTF-8
; Index, Type, Description, Value
; Index = 0,1,..,n
; Type : d=double, l=lenght, s=string, b=boolean, dr=double recalc, sr= string recalc, lr=lenght recalc, br=boolean recalc, th=toolholder
; Description : STEP, SIDESTEP, ...
[DRILL_STD]
0=th,TH,
1=d,STEP
2=s,DOUBLE
3=d,SECDIST
[SAW_STD]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=b,LONGCUT
[SAW_FLAT]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=b,LONGCUT
[MILL_STD]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=d,SIDEDEPTH
4=s,DOUBLE
[MILL_NOTIP]
0=th,TH,
1=d,STEP
2=d,SIDESTEP
3=d,SIDEDEPTH
4=s,DOUBLE
[MORTISE_STD]
0=b,MORTISE
1=d,STEP
2=d,SIDESTEP
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+268
View File
@@ -0,0 +1,268 @@
==== Common_ONE-PF Update Log ====
Versione 3.1c2 (17/03/2026)
- (SIM-GEN) Aggiunta OnSpecialApplyMachining per calcolare i carrelli da subito
- Aggiungendo OnSpecialApplyMachining, ora la OnSpecialGetPrevMachiningOffset lavora correttamente. ATT: MIN_MACH -> 3.1b2
Versione 3.1c1 (04/03/2026)
- (GEN) Corretta chiamata di una variabile insesistente in caso di ONE
- (SIM) Allineata simulazione a generazione
Versione 3.1b1 (20/02/2026)
- (GEN) Aggiunta funzione ToolPreSelection() per la preselezione utensile. Ticket#2789
- (GEN) Funzione rinominata in ToolPreSelectionSingleHead(), ora utilizza funzione in MLDE per capire se è motosega
Versione 3.1a1 (16/01/2026)
- (SIM-GEN) Aggiunto controllo che evita collisioni durante lo svincolo in Z della sega a catena nelle funzioni ExecMoveZMax() e EmitZMax(). Ticket#2767
- (SIM-GEN) Piccola correzione modifiche fatte in precedenza
Versione 2.7l1 (18/12/2025)
- (SIM-GEN) Aggiunto controllo post movimenti ausiliari dell' EMC.PREVOFFSX nella funzione OnSpecialGetPrevMachiningOffset(). Ticket#2727
- (SIM-GEN) Divisione movimento B in approccio se > 90°. Ticket#2754
- (SIM) Aggiunta funzione CheckClamping
Versione 2.7k3 (28/11/2025)
- (GEN) Prima di andare allo scarico, si aggiunge movimento intermedio dove si aspetta che rulli scarico siano arrivati in posizione. Ticket#2716
Versione 2.7k2 (20/11/2025)
- (SIM) Aggiornata risoluzione VMillTol in funzione dello spessore lama
Versione 2.7k1 (05/11/2025)
- (SIM-GEN) Corretto calcolo per decidere se serve aprire i rulli
- (GEN) Aggiunta tolleranza in creazione piano di lavoro inclinato
- (SIM) Allo scarico si resetta Y2DELTA. Ticket#2687
Versione 2.7j3 (23/10/2025)
- (SIM) Corretta posizione parcheggio in caso di testa 1 su magazzino 2. Ticket#2660
Versione 2.7j2 (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) 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
Versione 2.6g4 (19/07/2024)
- (SIM-GEN) Aumentato numero iterazioni per scambio carrelli (da 5 a 10), per pezzi lunghi 30m.
Versione 2.6g3 (17/07/2024)
- (GEN) Correzione modifica precedente (2.6g2). Con lama precedente e motosega successiva, andava a parcheggio con lama alla quota della motosega. Ticket#1880
Versione 2.6g2 (16/07/2024)
- (GEN) Per preselezione o movimenti in home, non si scrive più 'ET0' perchè non è più supportato. Ticket#1926
Versione 2.6g1 (10/07/2024)
- (GEN) Se prima lavorazione con motosega, dopo G151 di attesa carrelli si ribadiscono tutti gli assi. Ticket#1924
Versione 2.6f1 (03/06/2024)
- (GEN) Aggiunta possibilità di scrivere nome utensile doppio anche in lavorazione con parametro "TOOLDOUBLE". Note sulla lavorazione hanno precedenza su note utensile.
Versione 2.6e1 (30/04/2024)
- (GEN) Chiamando la macchina con un nome che termini con '.TEST' si abilita come macchina per test interni, equivalente a settare 'IS_TEST_MACHINE' (che comunque rimane)
- (SIM) In log collisioni, si scrive anche ID del gruppo per facilitare riconoscimento in caso di collisione
- (MLDE-GEN) Gestione facoltativa parametro WOOD_DENSITY settabile in Ts3. In MLDE, mettere il valore di WOOD_DENSITY nella nostra variabile 'WoodDensity'.
Versione 2.6d2 (12/04/2024)
- (MLDE-SIM-GEN) Aggiunta variabile FACOLTATIVA 'ForceToCloseRollersGate' ( che legge la variabile da TS3 'CHIUDI_PINZE_2_3_SCAMBIO') in mlde per forzare chiusura paratie rulli
durante scambio pinze per facilitare passaggio pezzi molto storti. Se non presente chiude solo se necessario.
Versione 2.6d1 (28/03/2024)
- (GEN) Rimosso da generazione funzione GetNextTool duplicata
- (SIM-GEN) Se fase successiva start di un altro pezzo, la GetNextTool restituisce nil, per forzare movimento home in caso di utensili speciali
- (MLDE-GEN) Aggiunto parametro 'IS_TEST_MACHINE' FACOLTATIVO. Se non esiste o 'false' è macchina standard, se 'true' è una macchina utilizzata per i test Egalware interni
- (SIM) Corretto movimento in simulazione se motosega su testa 2
Versione 2.6c9 (26/03/2024)
- (SIM) Corretta gestione cambio utensile con motosega. In alcuni casi non era coerente con generazione
- (GEN) In 'PreparePostRotation' si resetta sempre anche la paratia in uscita (Ticket#1733)
Versione 2.6c8 (22/03/2024)
- (SIM) Miglioramento visualizzazione spigoli VMILL alla fine della simulazione. Funzione: EgtVolZmapSetShowEdges. CAM5 ver. 2.6c2 FACOLTATIVA.
Versione 2.6c7 (11/03/2024)
- (SIM-GEN) Aggiunta gestione parametro "SECDIST". Distanza di sicurezza tra paratia con rulli e utensile/testa. Parametro da inserire nelle note utensile.
- (MLPE-GEN) Aggiunto parametro "WriteM05Command" (NON OBBLIGATORIO) per decidere se scrivere il comando M05 per arresto mandrino. Default a true.
Versione 2.6c6 (08/03/2024)
- (SIM-GEN) Gestione rotazioni 90° come su FAST, caso MID2 (split/cut prima delle rotazioni)
Versione 2.6c5 (07/03/2024)
- (GEN) Per ribaltamento, i comandi si differenziano per macchina. Sembra che ONE e PF abbiano comandi diversi. In attesa di conferma da parte di Essetre
- (SIM-GEN) Se cambiato utensile, si aprono sempre paratie
- (SIM) Spostato salvataggio dati utensile precedente in MachiningEnd, prima era in MachininsStart
Versione 2.6c4 (06/03/2024)
- (SIM-GEN) Alla fine del movimento a Z-MAX, in home con lama solo se si cambia utensile. Prima andava sempre in home se era lama, anche se non doveva cambiare utensile
Versione 2.6c3 (05/03/2024)
- (MLDE-SIM) Aggiunta variabile FACOLTATIVA 'EstimationRapidMultiplier' in mlde per regolare il tempo stimato di rapido su macchine vecchie. Se non presente default 1.
Versione 2.6c2 (04/03/2024)
- (MLDE-GEN) Aggiunta variabile 'MACH_NAME' in mlde con nome macchina
Versione 2.6c1 (29/02/2024)
- (SIM) Gestione rimozione VMILL per tagli a cubetti Zig-Zag
Versione 2.6b2 (26/02/2024)
- (MLDE-SIM-GEN) EgtAddToPackagePath spostato in mlde
Versione 2.6b1 (20/02/2024)
- (SIM) Corretto controllo calcolo Z su primo movimento lama, allineato a generazione
- (GEN) Corretto emissione movimenti per macchine con motosega su testa 2
- (SIM) Aggiunta funzioni "OnSimulInit" e "OnSimulExit" per orientare vista corretta in caso di macchina con carico destro. N.B.= serve CAM5 2.6b4
- (ALL) "BeamData" caricato come libreria con 'require' anziché come file con 'dofile'
- (GEN) In "GetMovesInAuxCmd" si passa la posizione calcolata V1 indipendentemente dall'utilizzo di Y1
Versione 2.6a7 (12/02/2024)
- (GEN) Per movimento con motosega, si ribadiscono tutti gli assi nella prima G141
Versione 2.6a6 (02/02/2024)
- (SIM) Corretta simulazione movimento in X-Home, coerente con generazione
- (GEN) Aggiunta lettura parametro 'Split'
- (SIM) Se lavorazione è un taglio di separazione, se necessario, ripristino posizione di Y1DELTA prima di aprire i rulli
- (SIM-GEN) Modificata gestione movimenti motosega, in aggiunta con caso particolare di pezzo alto più di 650mm
- (ALL) Caricamento BeamData come local
Versione 2.6a5 (26/01/2024)
- (SIM-GEN) Migliorato calcolo dimensioni grezzo per apertura rulli in caso di 'precut'
Versione 2.6a4 (24/01/2024)
- (GEN) Se pezzo tenuto solo con pinza destra non si esclude la rulliera di sinistra, se pezzogrande, può venire in supporto
- (SIM-GEN) Correzione gestione apertura/chiusura rulli sul fine barra e in generale (da PF1250)
- (SIM) Aggiunto solido collisione lama sotto traversa (per PF-progress)
Versione 2.6a3 (23/01/2024)
- (GEN) Corretto gestione del movimento precedente all'ultimo che manda il pezzo alla posizione di scarico
Versione 2.6a2 (09/01/2024)
- Nuova versione. Prima versione stabile rilasciabile.
Versione 2.6a1 (28/11/2023)
- Prima versione post-proc comune tra macchine ONE e PF
- (SIM) Corretta visualizzazione motosega in caso sia stata scaricata ( per paratie rulli compattate per passaggio pezzo)
- (SIM+MLDE) Definite variabili 'ParkLongToolB1' e 'ParkLongToolC1' per valori B e C di home in caso punta lunga su T201
- (MLDE) Si prende la versione kernel minima necessaria più nuova tra macchina e script comuni (MIN_MACH_VER)
- (GEN) Piccola miglioria su G157, si scrive solo se c'è qualcosa nella stringa sPreMove
- (GEN+MLDE) Inserita gestione macro con carico ottimizzato. Macro macchina presente come standard solo su macchine PF. Parametro "OptimizedLoadBeam"
- (GEN+SIM) Migliorata gestione riposizionamento pinze, in caso testa debba andare in home
- (GEN) Se a zeta massima con lama e utensile successivo diverso, mi sposto sempre verso X-HOME
- (GEN) Corretto movimento in caso di testa 1 su TC-2. Utilizzava le quote della testa 2 anziché della 1
+10
View File
@@ -0,0 +1,10 @@
-- Version.lua by EgalWare s.r.l. 2023/11/28
-- Gestione della versione dei file comuni post-processori macchine ONE e PF di Essetre
local InfoCommon_STD_PP = {
NAME = 'Common_ONE-PF', -- nome script PP standard
VERSION = '3.1c2', -- versione script
MIN_MACH_VER_PP_COMMON = '3.1b2' -- versione minima kernel
}
return InfoCommon_STD_PP