Compare commits
59 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a89bf46837 | |||
| 688ec6e221 | |||
| 13a69fea58 | |||
| 75355f60f1 | |||
| 7922a3bb17 | |||
| 46665cf1fc | |||
| f50132446b | |||
| be5d362383 | |||
| 2acf712f28 | |||
| c7e7afd93a | |||
| 6cf09ac6a5 | |||
| 6a68e0484a | |||
| 37952d64d4 | |||
| ab82e63af3 | |||
| ed92ae901e | |||
| a3c8c97c56 | |||
| 0a792883ad | |||
| 548fdb7647 | |||
| 54b3402785 | |||
| cca7f64f51 | |||
| 391e33d176 | |||
| 5aae40068c | |||
| 0cf16eae0e | |||
| 63916ec50f | |||
| d53ebb1da6 | |||
| 51924f71ea | |||
| 2a44fc8635 | |||
| 5e7c3d7681 | |||
| 3f4feabbd9 | |||
| 90d7c59e97 | |||
| 2b3d65fd56 | |||
| 0ea9ef4266 | |||
| 2510bf8379 | |||
| 6c6e883a4c | |||
| 2be44e3499 | |||
| db4f901e2b | |||
| 99300bbb53 | |||
| a9134f502d | |||
| d226d1a5c1 | |||
| 5ea1bd718d | |||
| 5146f304b6 | |||
| 313a621eab | |||
| 34d1b6ea9c | |||
| 5c55da537e | |||
| 123c1d57fa | |||
| 6f52a41cb0 | |||
| cb1f97ba3b | |||
| b660adc8e8 | |||
| f0b2ce3720 | |||
| 975bc40d2b | |||
| 01105a8c6a | |||
| 3c1a1e5407 | |||
| e5ae54cc98 | |||
| 09e2dd991d | |||
| 66c94aece6 | |||
| 9f2e302d32 | |||
| a1f053e1d8 | |||
| 48105a3f4f | |||
| 45ab9ee317 |
@@ -15,3 +15,12 @@
|
|||||||
/Wall/PocketingData.lua
|
/Wall/PocketingData.lua
|
||||||
/Wall/SawingData.lua
|
/Wall/SawingData.lua
|
||||||
/Wall/Ts3Data.lua
|
/Wall/Ts3Data.lua
|
||||||
|
/.vscode
|
||||||
|
/MachNotes.ini
|
||||||
|
/ToolNotes.ini
|
||||||
|
|
||||||
|
# ignoro file bak nella cartella principale e nelle sottocartelle al primo livello
|
||||||
|
*.bak
|
||||||
|
/*/*.bak
|
||||||
|
|
||||||
|
Wall/SurfacingData.lua
|
||||||
|
|||||||
+318
@@ -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\$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
|
||||||
|
|
||||||
+65
-7
@@ -1,4 +1,4 @@
|
|||||||
-- BeamData.lua by Egaltech s.r.l. 2022/03/20
|
-- BeamData.lua by Egaltech s.r.l. 2024/03/28
|
||||||
-- Raccolta dati generali per Travi
|
-- Raccolta dati generali per Travi
|
||||||
|
|
||||||
EgtOutLog( ' FAST-BeamData started', 1)
|
EgtOutLog( ' FAST-BeamData started', 1)
|
||||||
@@ -8,6 +8,8 @@ local BeamData = {
|
|||||||
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
GO_FAST = 0, -- flag abilitazione modalità veloce (0=no, 1=carrelli, 2=anche cambio utensili)
|
||||||
RIGHT_LOAD = false, -- flag carico da destra
|
RIGHT_LOAD = false, -- flag carico da destra
|
||||||
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
ROT90 = false, -- flag abilitazione rotazione 90 gradi
|
||||||
|
NEWCLAMPING = false, -- flag abilitazione nuovo metodo riposizionamento carrelli
|
||||||
|
FASTCLAMPING= true, -- flag abilitazione riduzione numero riposizionamenti al carico e durante grande trascinamento
|
||||||
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
MIN_WIDTH = 40, -- larghezza minima del grezzo
|
||||||
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
MIN_HEIGHT = 40, -- altezza minima del grezzo
|
||||||
MAX_WIDTH = 240, -- larghezza massima del grezzo
|
MAX_WIDTH = 240, -- larghezza massima del grezzo
|
||||||
@@ -53,6 +55,7 @@ local BeamData = {
|
|||||||
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
|
RAW_OFFSET = 2000, -- spostamento grezzo rimanente dopo split
|
||||||
VICE_MINH = 110, -- altezza minima della morsa
|
VICE_MINH = 110, -- altezza minima della morsa
|
||||||
VICE_MAXH = 370, -- altezza massima zona pinzaggio orizzontale
|
VICE_MAXH = 370, -- altezza massima zona pinzaggio orizzontale
|
||||||
|
ENABLE_TOOL_BETWEEN_VICES = false, -- abilita calcolo pinze permettendo di avere l'utensile tra di esse (ovviamente lontano da bordi in Y)
|
||||||
OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare)
|
OFFSET_DRILL_TENON = 0, -- offset fori su tenoni verso base degli stessi (0=non fare)
|
||||||
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
USER_HOLE_DIAM = 0, -- diametro foro per L20
|
||||||
MAX_TOOL_LEN_FOR_HOR_MACH = 311, -- massima lunghezza utensile per poter fare forature (fresature) oltre i 10 gradi dalla verticale
|
MAX_TOOL_LEN_FOR_HOR_MACH = 311, -- massima lunghezza utensile per poter fare forature (fresature) oltre i 10 gradi dalla verticale
|
||||||
@@ -67,7 +70,11 @@ local BeamData = {
|
|||||||
MAX_LEN_BH_FROM_BOTTOM = 195, -- massima lunghezza lavorabile da un lato di block haus da sotto
|
MAX_LEN_BH_FROM_BOTTOM = 195, -- massima lunghezza lavorabile da un lato di block haus da sotto
|
||||||
MAX_DIST_BH_FROM_BOTTOM = 395, -- massima distanza tra naso mandrino e sopra della trave senza collisione
|
MAX_DIST_BH_FROM_BOTTOM = 395, -- massima distanza tra naso mandrino e sopra della trave senza collisione
|
||||||
BH_MACHINE = false, -- flag che indica la tipologia di macchina configurata BlockHaus
|
BH_MACHINE = false, -- flag che indica la tipologia di macchina configurata BlockHaus
|
||||||
ANG_TRASM = false -- presenza rinvio angolare per lavorazioni da sotto
|
ANG_TRASM = false, -- presenza rinvio angolare per lavorazioni da sotto
|
||||||
|
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
|
||||||
|
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||||
|
MIN_HEIGHT_ADDED_CUTS = 400, -- altezza minima pezzo per effettuare tagli orizzontali aggiuntivi in testa e coda
|
||||||
|
GAIN_RECLAMPING = 1000 -- in caso di scarso pinzaggio, mm da recuperare con pinzaggio ulteriore prima di spostare
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Aggiornamento con dati da TechnoEssetre7
|
-- Aggiornamento con dati da TechnoEssetre7
|
||||||
@@ -92,6 +99,11 @@ if EgtExistsFile( sData) then
|
|||||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||||
|
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
|
||||||
|
if Machine.Offsets.MIN_HEIGHT_ADDED_CUTS then BeamData.MIN_HEIGHT_ADDED_CUTS = min( Machine.Offsets.MIN_HEIGHT_ADDED_CUTS, BeamData.MIN_HEIGHT_ADDED_CUTS) end
|
||||||
|
if Machine.Offsets.NEWCLAMPING ~= nil then BeamData.NEWCLAMPING = ( Machine.Offsets.NEWCLAMPING == 1) end
|
||||||
|
if Machine.Offsets.FASTCLAMPING ~= nil then BeamData.FASTCLAMPING = ( Machine.Offsets.FASTCLAMPING == 1) end
|
||||||
end
|
end
|
||||||
if Machine.Trave then
|
if Machine.Trave then
|
||||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||||
@@ -112,9 +124,19 @@ if EgtExistsFile( sData) then
|
|||||||
BeamData.MAX_LEN_SCRAP_START = 100000
|
BeamData.MAX_LEN_SCRAP_START = 100000
|
||||||
end
|
end
|
||||||
BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM
|
BeamData.USER_HOLE_DIAM = Machine.User.L020_DIAM_HOLE or BeamData.USER_HOLE_DIAM
|
||||||
|
BeamData.ENABLE_TOOL_BETWEEN_VICES = ( Machine.User.ENABLE_TOOL_BETWEEN_VICES == 1) or BeamData.ENABLE_TOOL_BETWEEN_VICES
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
local function GetMaxLenRidgeLapFromBottom( dHRaw)
|
||||||
|
if dHRaw < BeamData.MIN_DIM_HBEAM then
|
||||||
|
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM + 0.01
|
||||||
|
else
|
||||||
|
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM + 0.01
|
||||||
|
end
|
||||||
|
end
|
||||||
|
BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
|
local function GetBlockedAxis( sHead, nToolType, sBlockedAxis)
|
||||||
@@ -145,14 +167,50 @@ end
|
|||||||
BeamData.GetBlockedAxis = GetBlockedAxis
|
BeamData.GetBlockedAxis = GetBlockedAxis
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local function GetMaxLenRidgeLapFromBottom( dHRaw)
|
local function GetChainSawInitAngs( vtN, vtO)
|
||||||
if dHRaw < BeamData.MIN_DIM_HBEAM then
|
if vtN:getY() > 0 and vtO:getX() > 0 then
|
||||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM + 0.01
|
return 'C=0'
|
||||||
else
|
else
|
||||||
return BeamData.MAX_LEN_RIDGELAP_FROM_BOTTOM_HBEAM + 0.01
|
return ''
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
BeamData.GetMaxLenRidgeLapFromBottom = GetMaxLenRidgeLapFromBottom
|
BeamData.GetChainSawInitAngs = GetChainSawInitAngs
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
local function GetSetupInfo( sHead)
|
||||||
|
local SetupInfo = {}
|
||||||
|
|
||||||
|
-- dati comuni
|
||||||
|
SetupInfo.bIsCSymmetric = false
|
||||||
|
SetupInfo.dCAxisEncumbrance = 180
|
||||||
|
SetupInfo.bToolOnAggregate = false
|
||||||
|
|
||||||
|
-- testa 5 assi da sopra
|
||||||
|
if sHead == 'H1' then
|
||||||
|
SetupInfo.bIsTopHead = true
|
||||||
|
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
||||||
|
SetupInfo.dMaxNegativeAngle = sin( -45)
|
||||||
|
-- lama su testa 5 assi da sopra
|
||||||
|
elseif sHead == 'H2' then
|
||||||
|
SetupInfo.bIsTopHead = true
|
||||||
|
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
||||||
|
SetupInfo.dMaxNegativeAngle = sin( -45)
|
||||||
|
-- motosega
|
||||||
|
elseif sHead == 'H3' then
|
||||||
|
SetupInfo.bIsTopHead = true
|
||||||
|
SetupInfo.bIsBottomHead = not SetupInfo.bIsTopHead
|
||||||
|
SetupInfo.dMaxNegativeAngle = 0
|
||||||
|
-- rinvio angolare 90° (considerato come fosse una testa da sotto)
|
||||||
|
elseif sHead == 'H5' then
|
||||||
|
SetupInfo.bToolOnAggregate = true
|
||||||
|
SetupInfo.bIsBottomHead = true
|
||||||
|
SetupInfo.bIsTopHead = not SetupInfo.bIsBottomHead
|
||||||
|
SetupInfo.dMaxPositiveAngle = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
return SetupInfo
|
||||||
|
end
|
||||||
|
BeamData.GetSetupInfo = GetSetupInfo
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
return BeamData
|
return BeamData
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ Name=Offsets
|
|||||||
30=l,OFFSETZ_RINV_1,347,OFFSETZ_RINV_1
|
30=l,OFFSETZ_RINV_1,347,OFFSETZ_RINV_1
|
||||||
31=l,OFFSETX_RINV_2,150,OFFSETX_RINV_2
|
31=l,OFFSETX_RINV_2,150,OFFSETX_RINV_2
|
||||||
32=l,OFFSETZ_RINV_2,347,OFFSETZ_RINV_2
|
32=l,OFFSETZ_RINV_2,347,OFFSETZ_RINV_2
|
||||||
|
33=l,MIN_JOIN_SS,100,MIN_JOIN_SS
|
||||||
|
|
||||||
[2]
|
[2]
|
||||||
Name=Trave
|
Name=Trave
|
||||||
@@ -50,3 +51,4 @@ Name=User
|
|||||||
3=d,OPTIMIZATIONS_LENGTH_SLICES,100,SLICES_LENGTH
|
3=d,OPTIMIZATIONS_LENGTH_SLICES,100,SLICES_LENGTH
|
||||||
4=l,L020_DIAM_HOLE,20,L020_HOLE_DIAM
|
4=l,L020_DIAM_HOLE,20,L020_HOLE_DIAM
|
||||||
5=l,L040_OFFSET_P1,0,L040_ON_TENON_OFFSET
|
5=l,L040_OFFSET_P1,0,L040_ON_TENON_OFFSET
|
||||||
|
6=d,ENABLE_TOOL_BETWEEN_VICES,0,ENABLE_TOOL_BETWEEN_VICES
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
3=Pocket
|
3=Pocket
|
||||||
4=Pocket_AT
|
4=Pocket_AT
|
||||||
5=AngleDrill
|
5=AngleDrill
|
||||||
|
6=Predrill
|
||||||
|
|
||||||
[Milling]
|
[Milling]
|
||||||
1=Prof
|
1=Prof
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[BEAM]
|
||||||
|
StartOffset=10
|
||||||
|
Offset=5.4
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
-- carico librerie
|
-- carico librerie
|
||||||
local INFO_STD_PP = require( 'Version')
|
local INFO_STD_PP = require( 'Version')
|
||||||
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
-- Variabili di modulo
|
-- Variabili di modulo
|
||||||
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
||||||
@@ -41,13 +42,17 @@ function OnProgramStart()
|
|||||||
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
|
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
|
||||||
local nPatt = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 40
|
local nPatt = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 40
|
||||||
EmtOutput( '%'..EgtNumToString( nPatt, 0)..'.0')
|
EmtOutput( '%'..EgtNumToString( nPatt, 0)..'.0')
|
||||||
|
|
||||||
|
-- aggiungo prefisso per commentae commenti iniziali se la macchina è utilizzata per fare i test
|
||||||
|
local sPrefixCommentLine = '' ; if IS_TEST_MACHINE or EgtEndsWith( EgtGetCurrMachineDir(), '.TEST') then sPrefixCommentLine = '//' end
|
||||||
|
|
||||||
if EMT.INFO then
|
if EMT.INFO then
|
||||||
EmtOutput( '('..EMT.INFO..')')
|
EmtOutput( sPrefixCommentLine..'('..EMT.INFO..')')
|
||||||
else
|
else
|
||||||
EmtOutput( '(Program Start)')
|
EmtOutput( '(Program Start)')
|
||||||
end
|
end
|
||||||
EmtOutput( '('.. CSP_INFO..')')
|
EmtOutput( sPrefixCommentLine..'('.. CSP_INFO..')')
|
||||||
EmtOutput( '('.. MACHINE_INFO..')\n')
|
EmtOutput( sPrefixCommentLine..'('.. MACHINE_INFO..')\n')
|
||||||
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
||||||
if TEST_USE then
|
if TEST_USE then
|
||||||
EmtOutput( 'M28')
|
EmtOutput( 'M28')
|
||||||
@@ -178,7 +183,7 @@ function OnDispositionEnd()
|
|||||||
-- calcolo dati pinze
|
-- calcolo dati pinze
|
||||||
local MinAccPinze = 0.3
|
local MinAccPinze = 0.3
|
||||||
local MaxAccPinze = 4
|
local MaxAccPinze = 4
|
||||||
local KgMtCubo= 550 -- densità legno in Kg / metro cubo
|
local KgMtCubo= WoodDensity or 550 -- densità legno in Kg / metro cubo
|
||||||
local Massa = ( HTrave * STrave * LBarra * KgMtCubo ) / 1000000000
|
local Massa = ( HTrave * STrave * LBarra * KgMtCubo ) / 1000000000
|
||||||
local FMaxPinze = EMT.FMAXPINZE
|
local FMaxPinze = EMT.FMAXPINZE
|
||||||
local ForzaAtrito = 700 / 2 -- Serve per regolare P32 (700 valore reale pistone)
|
local ForzaAtrito = 700 / 2 -- Serve per regolare P32 (700 valore reale pistone)
|
||||||
@@ -598,6 +603,8 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnRapid()
|
function OnRapid()
|
||||||
|
-- recupero prossimo utensile
|
||||||
|
EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTTCPOS = FindNextTool()
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
-- se primo movimento della lavorazione, gestione speciale
|
-- se primo movimento della lavorazione, gestione speciale
|
||||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||||
@@ -645,7 +652,7 @@ function OnRapid()
|
|||||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
|
||||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||||
if EMT.HEAD == 'H3' and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||||
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
@@ -829,12 +836,47 @@ function OnRapid()
|
|||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
EmitZmax()
|
EmitZmax()
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
|
-- se pezzi alti e devo cambiare utensile su testa con CU, porto la testa vicino al cambio utensile
|
||||||
|
if EMT.ST > BeamHeightForFixRot and EMT.HEAD == 'H1' and EMT.TOOL ~= EMT.NEXTTOOL and EMT.NEXTHEAD ~= 'H2' then
|
||||||
|
local dBAxis = 90
|
||||||
|
local dCAxis = EgtIf( BD.RIGHT_LOAD, 90, -90)
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
-- se altrimenti rotazione a Z max
|
-- se altrimenti rotazione a Z max per lavorazione successiva
|
||||||
elseif EMT.FLAG == 5 then
|
elseif EMT.FLAG == 5 then
|
||||||
-- viene gestito all'inizio della lavorazione successiva
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EmtResetPrev()
|
||||||
|
-- ricavo i dati per la lavorazione
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'G101 ET1001')
|
||||||
|
EmtOutput( 'G101 ET2001')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1212, "Unknown Rapid flag")
|
EmtSetLastError( 1212, "Unknown Rapid flag")
|
||||||
@@ -926,13 +968,46 @@ function OnArc()
|
|||||||
local sFeed = EmtGetFeed()
|
local sFeed = EmtGetFeed()
|
||||||
-- tipo arco
|
-- tipo arco
|
||||||
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
||||||
-- emetto arco
|
-- se arco molto grande, approssimo con una retta
|
||||||
EmtOutput( sArc..sAxes..sRad..sFeed)
|
if EMT.RR > 99999 then
|
||||||
|
EmtOutput( "G1"..sAxes..sFeed)
|
||||||
|
else
|
||||||
|
EmtOutput( sArc..sAxes..sRad..sFeed)
|
||||||
|
end
|
||||||
|
|
||||||
-- aggiorno valori come precedenti
|
-- aggiorno valori come precedenti
|
||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function FindNextTool()
|
||||||
|
-- salvo stato iniziale
|
||||||
|
local CurrMachId = EgtGetCurrMachining()
|
||||||
|
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||||
|
local sTool, sHead, sTcPos
|
||||||
|
local OpId = EgtGetNextActiveOperation( CurrMachId or EMT.MCHID)
|
||||||
|
while OpId do
|
||||||
|
local nType = EgtGetOperationType( OpId)
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
if EgtSetCurrMachining( OpId) then
|
||||||
|
sTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
if EgtTdbSetCurrTool( sTool) then
|
||||||
|
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
OpId = EgtGetNextActiveOperation( OpId)
|
||||||
|
end
|
||||||
|
-- ripristino stato iniziale
|
||||||
|
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||||
|
EgtTdbSetCurrTool( CurrTool or '')
|
||||||
|
-- restituisco risultato
|
||||||
|
return sTool, sHead, sTcPos
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcCharStatus( sCmd, bSkipPress)
|
function CalcCharStatus( sCmd, bSkipPress)
|
||||||
-- aperto
|
-- aperto
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
-- carico librerie
|
-- carico librerie
|
||||||
local INFO_STD_PP = require( 'Version')
|
local INFO_STD_PP = require( 'Version')
|
||||||
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
-- Variabili di modulo
|
-- Variabili di modulo
|
||||||
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
||||||
@@ -41,13 +42,17 @@ function OnProgramStart()
|
|||||||
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
|
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
|
||||||
local nPatt = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 40
|
local nPatt = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 40
|
||||||
EmtOutput( '%'..EgtNumToString( nPatt, 0)..'.0')
|
EmtOutput( '%'..EgtNumToString( nPatt, 0)..'.0')
|
||||||
|
|
||||||
|
-- aggiungo prefisso per commentae commenti iniziali se la macchina è utilizzata per fare i test
|
||||||
|
local sPrefixCommentLine = '' ; if IS_TEST_MACHINE or EgtEndsWith( EgtGetCurrMachineDir(), '.TEST') then sPrefixCommentLine = '//' end
|
||||||
|
|
||||||
if EMT.INFO then
|
if EMT.INFO then
|
||||||
EmtOutput( '('..EMT.INFO..')')
|
EmtOutput( sPrefixCommentLine..'('..EMT.INFO..')')
|
||||||
else
|
else
|
||||||
EmtOutput( '(Program Start)')
|
EmtOutput( '(Program Start)')
|
||||||
end
|
end
|
||||||
EmtOutput( '('.. CSP_INFO..')')
|
EmtOutput( sPrefixCommentLine..'('.. CSP_INFO..')')
|
||||||
EmtOutput( '('.. MACHINE_INFO..')\n')
|
EmtOutput( sPrefixCommentLine..'('.. MACHINE_INFO..')\n')
|
||||||
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
||||||
if TEST_USE then
|
if TEST_USE then
|
||||||
EmtOutput( 'M28')
|
EmtOutput( 'M28')
|
||||||
@@ -133,6 +138,14 @@ function OnToolData()
|
|||||||
if EMT.TDIST and abs( EMT.TDIST) < 0.1 then EMT.TDIST = nil end
|
if EMT.TDIST and abs( EMT.TDIST) < 0.1 then EMT.TDIST = nil end
|
||||||
local sOut = 'L11='..EgtNumToString( EMT.SMAX, 0)..' L12='..EmtLenToString( ( EMT.TDIST or ChSawLen), 1)..' G76H9998.1N301N304'
|
local sOut = 'L11='..EgtNumToString( EMT.SMAX, 0)..' L12='..EmtLenToString( ( EMT.TDIST or ChSawLen), 1)..' G76H9998.1N301N304'
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
|
-- emissione dati rinvio
|
||||||
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
|
local nPos = EgtIf( EMT.HEAD == 'H5', 91, 93)
|
||||||
|
if EMT.EXIT == 2 then nPos = nPos + 1 end
|
||||||
|
local sPos = 'N2' .. tostring(nPos)
|
||||||
|
local sOut = 'L11=' .. EmtLenToString( EMT.SMAX, 3) .. ' L12=' .. EmtLenToString( AngTr1Offs, 1)..' G76H9998.1'..sPos..sPos
|
||||||
|
EmtOutput( sOut)
|
||||||
|
-- altro non previsto
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -151,7 +164,7 @@ function OnDispositionStart()
|
|||||||
' EG'..EmtLenToString( SawOffs, 2)..' EI'..EmtLenToString( ParkY, 2)..' EL'..EmtLenToString( ParkV, 2)..
|
' EG'..EmtLenToString( SawOffs, 2)..' EI'..EmtLenToString( ParkY, 2)..' EL'..EmtLenToString( ParkV, 2)..
|
||||||
' EM'..EmtLenToString( TurnerOffs, 2)..' EN'..EmtLenToString( -DeltaTabY, 2)..' EO'..EmtLenToString( DeltaTabZ, 2)
|
' EM'..EmtLenToString( TurnerOffs, 2)..' EN'..EmtLenToString( -DeltaTabY, 2)..' EO'..EmtLenToString( DeltaTabZ, 2)
|
||||||
if SecondSupport >= 3 then
|
if SecondSupport >= 3 then
|
||||||
sOut = sOut ..' EP'..EmtLenToString( AngTr1Len, 2) ..' EQ'..EmtLenToString( AngTr1Offs + MillOffs,2)
|
sOut = sOut ..' EP'..EmtLenToString( AngTr1Len, 2) ..' EQ'..EmtLenToString( AngTr1Offs,2)
|
||||||
end
|
end
|
||||||
EmtOutput( '\n' .. sOut .. '\n')
|
EmtOutput( '\n' .. sOut .. '\n')
|
||||||
-- carico barra
|
-- carico barra
|
||||||
@@ -418,6 +431,10 @@ function OnMachiningStart()
|
|||||||
-- sistemazione speed
|
-- sistemazione speed
|
||||||
if EMT.HEAD == 'H2' then
|
if EMT.HEAD == 'H2' then
|
||||||
EMT.S = EMT.S * 6
|
EMT.S = EMT.S * 6
|
||||||
|
elseif EMT.HEAD == 'H5' and EMT.EXIT == 1 then
|
||||||
|
EMT.S = -EMT.S
|
||||||
|
elseif EMT.HEAD == 'H6' and EMT.EXIT == 1 then
|
||||||
|
EMT.S = -EMT.S
|
||||||
end
|
end
|
||||||
-- determino subito se taglio di separazione di pezzo a caduta
|
-- determino subito se taglio di separazione di pezzo a caduta
|
||||||
EMT.PREFALLCUT = nil
|
EMT.PREFALLCUT = nil
|
||||||
@@ -626,6 +643,8 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnRapid()
|
function OnRapid()
|
||||||
|
-- recupero prossimo utensile
|
||||||
|
EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTTCPOS = FindNextTool()
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
-- se primo movimento della lavorazione, gestione speciale
|
-- se primo movimento della lavorazione, gestione speciale
|
||||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||||
@@ -668,13 +687,36 @@ function OnRapid()
|
|||||||
|
|
||||||
-- ricavo i dati per la lavorazione
|
-- ricavo i dati per la lavorazione
|
||||||
local sEE = ' EE' .. EgtIf( bZmax, '3', '4')
|
local sEE = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||||
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
|
||||||
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
local sEL = ' EL'
|
||||||
|
-- se motosega
|
||||||
|
if EMT.HEAD == 'H3' then
|
||||||
|
sEL = sEL..EmtLenToString( ( EMT.TDIST or ChSawLen), 3)
|
||||||
|
-- se aggregato
|
||||||
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
|
sEL = sEL..EmtLenToString( AngTr1Offs, 3)
|
||||||
|
-- se testa normale ( H1 or H2)
|
||||||
|
else
|
||||||
|
sEL = sEL..EmtLenToString( EMT.TLEN, 3)
|
||||||
|
end
|
||||||
|
|
||||||
|
local sER = ' ER'
|
||||||
|
-- se motosega
|
||||||
|
if EMT.HEAD == 'H3' then
|
||||||
|
sER = sER..EmtLenToString( EMT.TLEN, 3)
|
||||||
|
-- se aggregato
|
||||||
|
elseif EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
|
sER = sER..EmtLenToString( EMT.TLEN + AngTr1Len, 3)
|
||||||
|
-- se testa normale ( H1 or H2)
|
||||||
|
else
|
||||||
|
sER = sER..EmtLenToString( EMT.TDIAM / 2, 3)
|
||||||
|
end
|
||||||
|
|
||||||
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
|
||||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||||
if EMT.HEAD == 'H3' and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
local sEEPreMove = ' EE' .. EgtIf( bZmax, '3', '4')
|
||||||
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
local sOutPreMove = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. ' Z' .. EmtLenToString( MyZHome, 3) ..
|
||||||
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
@@ -804,7 +846,7 @@ function OnRapid()
|
|||||||
sOut = 'G112 EA'..sA..' EB'..sB..EmtGetAxis('L1')..' EY'..sY..' EV'..sV..' EF'..GetFmaxClamp()
|
sOut = 'G112 EA'..sA..' EB'..sB..EmtGetAxis('L1')..' EY'..sY..' EV'..sV..' EF'..GetFmaxClamp()
|
||||||
EmtOutput( sOut)
|
EmtOutput( sOut)
|
||||||
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
||||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') then
|
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') and ( IsEndPhase( EMT.PHASE+1) or IsEnd2Phase( EMT.PHASE+1)) then
|
||||||
EmtOutput( '(M175)')
|
EmtOutput( '(M175)')
|
||||||
end
|
end
|
||||||
if not bHeadFirst then
|
if not bHeadFirst then
|
||||||
@@ -868,12 +910,47 @@ function OnRapid()
|
|||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
EmitZmax( false)
|
EmitZmax( false)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
|
-- se pezzi alti e devo cambiare utensile su testa con CU, porto la testa vicino al cambio utensile
|
||||||
|
if EMT.ST > BeamHeightForFixRot and EMT.HEAD == 'H1' and EMT.TOOL ~= EMT.NEXTTOOL and EMT.NEXTHEAD ~= 'H2' then
|
||||||
|
local dBAxis = 90
|
||||||
|
local dCAxis = EgtIf( BD.RIGHT_LOAD, 90, -90)
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
sOut = 'G101' .. ' X' .. EmtLenToString( -SafeXRotAxes, 3) .. EmtGetAxis( 'L3') ..' B=' .. EgtNumToString( dBAxis, 3) ..
|
||||||
|
' C=' .. EgtNumToString( dCAxis, 3) .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
-- se altrimenti rotazione a Z max
|
-- se altrimenti rotazione a Z max per lavorazione successiva
|
||||||
elseif EMT.FLAG == 5 then
|
elseif EMT.FLAG == 5 then
|
||||||
-- viene gestito all'inizio della lavorazione successiva
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EmtResetPrev()
|
||||||
|
-- ricavo i dati per la lavorazione
|
||||||
|
local sEE = ' EE3'
|
||||||
|
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ( EMT.TDIST or ChSawLen)), 3)
|
||||||
|
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
|
||||||
|
local sET = GetET( EMT.HEAD, EMT.TCPOS, EMT.R3)
|
||||||
|
local sES = ' ES'..EgtNumToString( EMT.S, 0)
|
||||||
|
local sOut = 'G101' .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
|
||||||
|
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. sEE .. sEL .. sER .. sET .. sES
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'G101 ET1001')
|
||||||
|
EmtOutput( 'G101 ET2001')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1212, "Unknown Rapid flag")
|
EmtSetLastError( 1212, "Unknown Rapid flag")
|
||||||
@@ -939,6 +1016,11 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnArc()
|
function OnArc()
|
||||||
|
-- con aggregato non si possono fare archi. Deve essere tutto spezzato
|
||||||
|
if EMT.HEAD == 'H5' or EMT.HEAD == 'H6' then
|
||||||
|
EmtSetLastError( 1211, "With aggregate, the arcs must be splitted")
|
||||||
|
end
|
||||||
|
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
EMT.TLAST = EMT.L1
|
EMT.TLAST = EMT.L1
|
||||||
-- non modale su archi
|
-- non modale su archi
|
||||||
@@ -965,18 +1047,51 @@ function OnArc()
|
|||||||
local sFeed = EmtGetFeed()
|
local sFeed = EmtGetFeed()
|
||||||
-- tipo arco
|
-- tipo arco
|
||||||
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
|
||||||
-- emetto arco
|
-- se arco molto grande, approssimo con una retta
|
||||||
EmtOutput( sArc..sAxes..sRad..sFeed)
|
if EMT.RR > 99999 then
|
||||||
|
EmtOutput( "G1"..sAxes..sFeed)
|
||||||
|
else
|
||||||
|
EmtOutput( sArc..sAxes..sRad..sFeed)
|
||||||
|
end
|
||||||
|
|
||||||
-- aggiorno valori come precedenti
|
-- aggiorno valori come precedenti
|
||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function FindNextTool()
|
||||||
|
-- salvo stato iniziale
|
||||||
|
local CurrMachId = EgtGetCurrMachining()
|
||||||
|
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||||
|
local sTool, sHead, sTcPos
|
||||||
|
local OpId = EgtGetNextActiveOperation( CurrMachId or EMT.MCHID)
|
||||||
|
while OpId do
|
||||||
|
local nType = EgtGetOperationType( OpId)
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
if EgtSetCurrMachining( OpId) then
|
||||||
|
sTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
if EgtTdbSetCurrTool( sTool) then
|
||||||
|
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
OpId = EgtGetNextActiveOperation( OpId)
|
||||||
|
end
|
||||||
|
-- ripristino stato iniziale
|
||||||
|
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||||
|
EgtTdbSetCurrTool( CurrTool or '')
|
||||||
|
-- restituisco risultato
|
||||||
|
return sTool, sHead, sTcPos
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcDinamicaPinze( dH, dS, dL)
|
function CalcDinamicaPinze( dH, dS, dL)
|
||||||
local MinTempoAcc = 0.3 -- [s]
|
local MinTempoAcc = 0.3 -- [s]
|
||||||
local MaxTempoAcc = 4.0 -- [s]
|
local MaxTempoAcc = 4.0 -- [s]
|
||||||
local KgMtCubo= 550 -- densità legno [Kg / metro cubo]
|
local KgMtCubo= WoodDensity or 550 -- densità legno [Kg / metro cubo]
|
||||||
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
||||||
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
||||||
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
||||||
@@ -1518,16 +1633,24 @@ function MyAdjustLinearAxes()
|
|||||||
|
|
||||||
if EMT.REFLOC then
|
if EMT.REFLOC then
|
||||||
local vtE
|
local vtE
|
||||||
if EMT.HEAD ~= 'H3' then
|
if EMT.HEAD == 'H1' or EMT.HEAD == 'H2' then
|
||||||
local Len = EMT.TLEN + EgtIf( EMT.HEAD == 'H1', MillOffs, abs( SawOffs))
|
local Len = EMT.TLEN + EgtIf( EMT.HEAD == 'H1', MillOffs, abs( SawOffs))
|
||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
vtE = Vector3d( EMT.EXTR) * Len - Z_AX() * LenRef
|
vtE = Vector3d( EMT.EXTR) * Len - Z_AX() * LenRef
|
||||||
else
|
elseif EMT.HEAD == 'H3' then
|
||||||
local LenAux = ( EMT.TDIST or ChSawLen) + MillOffs
|
local LenAux = ( EMT.TDIST or ChSawLen) + MillOffs
|
||||||
local LenRef = MillOffs
|
local LenRef = MillOffs
|
||||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
|
elseif EMT.HEAD == 'H5' then
|
||||||
|
local LenAux = AngTr1Offs + MillOffs
|
||||||
|
local LenRef = MillOffs
|
||||||
|
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
|
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||||
|
else
|
||||||
|
EmtSetLastError( 1211, 'Head not allowed ' .. EMT.HEAD)
|
||||||
end
|
end
|
||||||
|
|
||||||
EMT.L1 = EMT.L1 - vtE:getX()
|
EMT.L1 = EMT.L1 - vtE:getX()
|
||||||
EMT.L2 = EMT.L2 - DeltaTabY - vtE:getY()
|
EMT.L2 = EMT.L2 - DeltaTabY - vtE:getY()
|
||||||
EMT.L3 = EMT.L3 - DeltaTabZ - vtE:getZ()
|
EMT.L3 = EMT.L3 - DeltaTabZ - vtE:getZ()
|
||||||
@@ -1567,7 +1690,7 @@ function CalcInterpPlane()
|
|||||||
local ptS = Point3d( xS, 0, 0)
|
local ptS = Point3d( xS, 0, 0)
|
||||||
-- calcolo per piano generico
|
-- calcolo per piano generico
|
||||||
local vtE
|
local vtE
|
||||||
if EMT.HEAD ~= 'H3' then
|
if EMT.HEAD == 'H1' or EMT.HEAD == 'H2' then
|
||||||
vtE = Vector3d( EMT.EXTR)
|
vtE = Vector3d( EMT.EXTR)
|
||||||
else
|
else
|
||||||
vtE = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
vtE = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||||
@@ -1618,7 +1741,7 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function GetET( sHead, sTcPos, dAxR3)
|
function GetET( sHead, sTcPos, dAxR3)
|
||||||
if sHead == 'H1' then
|
if sHead == 'H1' or sHead == 'H5' or sHead == 'H6' then
|
||||||
return ' E'..sTcPos
|
return ' E'..sTcPos
|
||||||
elseif sHead == 'H2' then
|
elseif sHead == 'H2' then
|
||||||
return ' ET42'
|
return ' ET42'
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
-- carico librerie
|
-- carico librerie
|
||||||
local INFO_STD_PP = require( 'Version')
|
local INFO_STD_PP = require( 'Version')
|
||||||
|
local BD = require( 'BeamData')
|
||||||
|
|
||||||
-- Variabili di modulo
|
-- Variabili di modulo
|
||||||
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
local CSP_INFO = INFO_STD_PP.NAME..' ver.'..INFO_STD_PP.VERSION..' by EgalWare s.r.l.'
|
||||||
@@ -38,14 +39,18 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnProgramStart()
|
function OnProgramStart()
|
||||||
|
|
||||||
|
-- aggiungo prefisso per commentae commenti iniziali se la macchina è utilizzata per fare i test
|
||||||
|
local sPrefixCommentLine = '' ; if IS_TEST_MACHINE or EgtEndsWith( EgtGetCurrMachineDir(), '.TEST') then sPrefixCommentLine = '//' end
|
||||||
|
|
||||||
-- Intestazioni
|
-- Intestazioni
|
||||||
if EMT.INFO then
|
if EMT.INFO then
|
||||||
ParkLine( '('..EMT.INFO..')')
|
ParkLine( sPrefixCommentLine..'('..EMT.INFO..')')
|
||||||
else
|
else
|
||||||
ParkLine( '(Program Start)')
|
ParkLine( '(Program Start)')
|
||||||
end
|
end
|
||||||
ParkLine( '('.. CSP_INFO..')')
|
ParkLine( sPrefixCommentLine..'('.. CSP_INFO..')')
|
||||||
ParkLine( '('.. MACHINE_INFO..')')
|
ParkLine( sPrefixCommentLine..'('.. MACHINE_INFO..')')
|
||||||
|
|
||||||
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
-- Se modalità test, aggiungo linee per muovere tappeto e alzare la testa (in automatico viene fatto dal main residente)
|
||||||
if TEST_USE then
|
if TEST_USE then
|
||||||
@@ -621,6 +626,8 @@ end
|
|||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function OnRapid()
|
function OnRapid()
|
||||||
|
-- recupero prossimo utensile
|
||||||
|
EMT.NEXTTOOL, EMT.NEXTHEAD, EMT.NEXTTCPOS = FindNextTool()
|
||||||
MyBackupAxes()
|
MyBackupAxes()
|
||||||
-- se primo movimento della lavorazione, gestione speciale
|
-- se primo movimento della lavorazione, gestione speciale
|
||||||
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
if EMT.MCHFIRST and not EMT.OPEISDISP then
|
||||||
@@ -659,7 +666,7 @@ function OnRapid()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
-- se carico motosega, ruoto in zona sicura prima di approcciare la lavorazione
|
||||||
if EMT.HEAD == 'H3' and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TTOTLEN > 200)) and EMT.ST > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
local sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, 3) .. ' P3=' .. EmtLenToString( MyZHome, 3) ..
|
local sOutPreMove = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, 3) .. ' P3=' .. EmtLenToString( MyZHome, 3) ..
|
||||||
' P4=' .. EgtNumToString( EMT.R2, 3) .. ' P5=' .. EgtNumToString( EMT.R1, 3) ..
|
' P4=' .. EgtNumToString( EMT.R2, 3) .. ' P5=' .. EgtNumToString( EMT.R1, 3) ..
|
||||||
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
@@ -770,7 +777,7 @@ function OnRapid()
|
|||||||
sB = '2'
|
sB = '2'
|
||||||
end
|
end
|
||||||
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
||||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') then
|
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut') and ( IsEndPhase( EMT.PHASE+1) or IsEnd2Phase( EMT.PHASE+1)) then
|
||||||
EmtOutput( 'M175')
|
EmtOutput( 'M175')
|
||||||
end
|
end
|
||||||
if bHeadFirst then
|
if bHeadFirst then
|
||||||
@@ -845,12 +852,42 @@ function OnRapid()
|
|||||||
EmtAdjustRotaryAxes()
|
EmtAdjustRotaryAxes()
|
||||||
EmitZmax( true)
|
EmitZmax( true)
|
||||||
EMT.ZMAX = true
|
EMT.ZMAX = true
|
||||||
|
-- se pezzi alti e devo cambiare utensile su testa con CU, porto la testa vicino al cambio utensile
|
||||||
|
if EMT.ST > BeamHeightForFixRot and EMT.HEAD == 'H1' and EMT.TOOL ~= EMT.NEXTTOOL and EMT.NEXTHEAD ~= 'H2' then
|
||||||
|
local dBAxis = 90
|
||||||
|
local dCAxis = EgtIf( BD.RIGHT_LOAD, 90, -90)
|
||||||
|
local sOut = 'M101 P1=1' .. ' P2=' .. EmtLenToString( EMT.L2, 3) .. ' P3=' .. EmtLenToString( EMT.L3, 3) ..
|
||||||
|
' P4=' .. EgtNumToString( dBAxis, 3) .. ' P5=' .. EgtNumToString( dCAxis, 3) ..
|
||||||
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
|
' P8=0' .. ' P9=0' .. ' P10=3'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
sOut = 'M101 P1=1' .. ' P2=' .. EmtLenToString( -SafeXRotAxes, 3) .. ' P3=' .. EmtLenToString( EMT.L3, 3) ..
|
||||||
|
' P4=' .. EgtNumToString( dBAxis, 3) .. ' P5=' .. EgtNumToString( dCAxis, 3) ..
|
||||||
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
|
' P8=0' .. ' P9=0' .. ' P10=3'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
|
end
|
||||||
-- se altrimenti movimento in Home
|
-- se altrimenti movimento in Home
|
||||||
elseif EMT.FLAG == 4 then
|
elseif EMT.FLAG == 4 then
|
||||||
-- non previsto
|
-- non previsto
|
||||||
-- se altrimenti rotazione a Z max
|
-- se altrimenti rotazione a Z max per lavorazione successiva
|
||||||
elseif EMT.FLAG == 5 then
|
elseif EMT.FLAG == 5 then
|
||||||
-- viene gestito all'inizio della lavorazione successiva
|
EMT.REFLOC = nil
|
||||||
|
EMT.IPLGL = false
|
||||||
|
MyAdjustLinearAxes()
|
||||||
|
EmtAdjustRotaryAxes()
|
||||||
|
EmtResetPrev()
|
||||||
|
local sOut = 'M101 P1=1' .. ' P2=' .. EmtLenToString( EMT.L2, 3) .. ' P3=' .. EmtLenToString( EMT.L3, 3) ..
|
||||||
|
' P4=' .. EgtNumToString( EMT.R2, 3) .. ' P5=' .. EgtNumToString( EMT.R1, 3) ..
|
||||||
|
' P6=' .. AdjustTcPos( false) .. ' P7=' .. EgtNumToString( EMT.S, 0) ..
|
||||||
|
' P8=0' .. ' P9=0' .. ' P10=3'
|
||||||
|
EmtOutput( sOut)
|
||||||
|
EmtOutput( 'M101 P1=2')
|
||||||
|
EmtOutput( 'M101 P1=3')
|
||||||
-- altrimenti errore
|
-- altrimenti errore
|
||||||
else
|
else
|
||||||
error( "Unknown Rapid flag")
|
error( "Unknown Rapid flag")
|
||||||
@@ -977,11 +1014,40 @@ function OnArc()
|
|||||||
EmtUpdatePrev()
|
EmtUpdatePrev()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function FindNextTool()
|
||||||
|
-- salvo stato iniziale
|
||||||
|
local CurrMachId = EgtGetCurrMachining()
|
||||||
|
local CurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||||
|
-- cerco lavorazione con utensile su gruppo testa indicato
|
||||||
|
local sTool, sHead, sTcPos
|
||||||
|
local OpId = EgtGetNextActiveOperation( CurrMachId or EMT.MCHID)
|
||||||
|
while OpId do
|
||||||
|
local nType = EgtGetOperationType( OpId)
|
||||||
|
if nType ~= MCH_OY.NONE and nType ~= MCH_OY.DISP then
|
||||||
|
if EgtSetCurrMachining( OpId) then
|
||||||
|
sTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||||
|
if EgtTdbSetCurrTool( sTool) then
|
||||||
|
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||||
|
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
OpId = EgtGetNextActiveOperation( OpId)
|
||||||
|
end
|
||||||
|
-- ripristino stato iniziale
|
||||||
|
EgtSetCurrMachining( CurrMachId or GDB_ID.NULL)
|
||||||
|
EgtTdbSetCurrTool( CurrTool or '')
|
||||||
|
-- restituisco risultato
|
||||||
|
return sTool, sHead, sTcPos
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function CalcDinamicaPinze( dH, dS, dL)
|
function CalcDinamicaPinze( dH, dS, dL)
|
||||||
local MinTempoAcc = 0.3 -- [s]
|
local MinTempoAcc = 0.3 -- [s]
|
||||||
local MaxTempoAcc = 4.0 -- [s]
|
local MaxTempoAcc = 4.0 -- [s]
|
||||||
local KgMtCubo= 550 -- densità legno [Kg / metro cubo]
|
local KgMtCubo= WoodDensity or 550 -- densità legno [Kg / metro cubo]
|
||||||
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
local Massa = ( dH * dS * dL * KgMtCubo ) / 1e9 -- massa [Kg]
|
||||||
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
local FMaxPinze = EMT.FMAXPINZE -- Feed massima pinze [mm/min]
|
||||||
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
local ForzaAttrito = 350 * 9.8 * 0.2 -- Forza chiusura pinze [Kgf] * g * Coeff_Attrito -> [N]
|
||||||
@@ -15,11 +15,11 @@ BIG_TOOL_DIAM = 300
|
|||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
local sBaseDir = EgtGetCurrMachineDir()
|
local sBaseDir = EgtGetCurrMachineDir()
|
||||||
if NumericalControl == 'NUM' then
|
if NumericalControl == 'NUM' then
|
||||||
dofile( sBaseDir .. '\\Common-FAST.NUM.mlpe')
|
dofile( sBaseDir .. '\\Common_FAST.NUM.mlpe')
|
||||||
elseif NumericalControl == 'TPA' then
|
elseif NumericalControl == 'TPA' then
|
||||||
dofile( sBaseDir .. '\\Common-FAST.TPA.mlpe')
|
dofile( sBaseDir .. '\\Common_FAST.TPA.mlpe')
|
||||||
elseif NumericalControl == 'NUM_PLUS' then
|
elseif NumericalControl == 'NUM_PLUS' then
|
||||||
dofile( sBaseDir .. '\\Common-FAST.NUM_PLUS.mlpe')
|
dofile( sBaseDir .. '\\Common_FAST.NUM_PLUS.mlpe')
|
||||||
else
|
else
|
||||||
EmtSetLastError( 1201, 'Numerical Control error : unkwnown type')
|
EmtSetLastError( 1201, 'Numerical Control error : unkwnown type')
|
||||||
end
|
end
|
||||||
@@ -130,7 +130,7 @@ function OnSimulStart()
|
|||||||
local nId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( nGrpId or GDB_ID.NULL, McdData[i].Sub) or GDB_ID.NULL, McdData[i].Name)
|
local nId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( nGrpId or GDB_ID.NULL, McdData[i].Sub) or GDB_ID.NULL, McdData[i].Name)
|
||||||
if nId then
|
if nId then
|
||||||
table.insert( EMT.MCODET, nId)
|
table.insert( EMT.MCODET, nId)
|
||||||
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is ok', 4)
|
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' (' .. tostring( nId) .. ') is ok', 4)
|
||||||
else
|
else
|
||||||
nMcdNullCnt = nMcdNullCnt + 1
|
nMcdNullCnt = nMcdNullCnt + 1
|
||||||
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is null', 4)
|
EgtOutLog( 'Element ' .. McdData[i].Grp .. '/' .. McdData[i].Sub .. '/' .. McdData[i].Name .. ' is null', 4)
|
||||||
@@ -662,6 +662,7 @@ function OnSimulMachiningEnd()
|
|||||||
EMT.FALL = false
|
EMT.FALL = false
|
||||||
end
|
end
|
||||||
EMT.PREVHEAD = EMT.HEAD
|
EMT.PREVHEAD = EMT.HEAD
|
||||||
|
EMT.PREVTOOL = EMT.TOOL
|
||||||
EMT.PREVEXIT = EMT.EXIT
|
EMT.PREVEXIT = EMT.EXIT
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -749,10 +750,12 @@ function OnSimulMoveStart()
|
|||||||
if EMT.MCHFIRST then
|
if EMT.MCHFIRST then
|
||||||
EgtOutText( '')
|
EgtOutText( '')
|
||||||
EMT.MCHFIRST = false
|
EMT.MCHFIRST = false
|
||||||
|
local bZmax = ( EMT.TOOL ~= EMT.PREVTOOL or EMT.L3 > -1)
|
||||||
|
|
||||||
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
-- con pezzi alti aggiorno gli assi rotanti prima di muovermi sopra il pezzo
|
||||||
if not EMT.LOAD and EMT.MOVE == 0 and EMT.HB > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
if not EMT.LOAD and EMT.MOVE == 0 and EMT.HB > BeamHeightForFixRot and EMT.FLAG2 == 1 then
|
||||||
-- se motosega mi muovo a X di sicurezza per ruotare
|
-- se motosega mi muovo a X di sicurezza per ruotare
|
||||||
if EMT.HEAD == 'H3'then
|
if ( EMT.HEAD == 'H3' or ( bZmax and EMT.TOTLEN > 200)) then
|
||||||
SimulMoveAxes( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID, 'C', EMT.R1, MCH_SIM_STEP.COLLROT, 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
SimulMoveAxes( 'X', SafeXRotAxes, MCH_SIM_STEP.RAPID, 'C', EMT.R1, MCH_SIM_STEP.COLLROT, 'B', EMT.R2, MCH_SIM_STEP.COLLROT)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1524,6 +1527,12 @@ function IsStartOrRestPhase( nPhase)
|
|||||||
return ( sVal == 'START' or sVal == 'REST')
|
return ( sVal == 'START' or sVal == 'REST')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
function IsEndPhase( nPhase)
|
||||||
|
local sVal = GetPhaseType( nPhase)
|
||||||
|
return ( sVal == 'END')
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
function IsMidPhase( nPhase)
|
function IsMidPhase( nPhase)
|
||||||
local sVal = GetPhaseType( nPhase)
|
local sVal = GetPhaseType( nPhase)
|
||||||
+920
-208
File diff suppressed because it is too large
Load Diff
+46
-12
@@ -1,4 +1,4 @@
|
|||||||
-- Descrizione macchina Essetre-FAST by EgalTech s.r.l. 2024/03/09
|
-- Descrizione macchina Essetre-FAST by EgalTech s.r.l. 2024/03/28
|
||||||
-- 2021/12/29 DS ver 2.3l4 Per NUM non va considerato MillOffs negli offset in Z.
|
-- 2021/12/29 DS ver 2.3l4 Per NUM non va considerato MillOffs negli offset in Z.
|
||||||
-- 2022/01/27 DS ver 2.4a2 Modifiche per tagli testa/coda su pezzi alti.
|
-- 2022/01/27 DS ver 2.4a2 Modifiche per tagli testa/coda su pezzi alti.
|
||||||
-- 2022/02/10 DS ver 2.4a3 Ridotto di 10mm pinzaggio con pezzi alti ma sottili.
|
-- 2022/02/10 DS ver 2.4a3 Ridotto di 10mm pinzaggio con pezzi alti ma sottili.
|
||||||
@@ -44,13 +44,36 @@
|
|||||||
-- 2024/03/04 AV ver 2.6c6 Modificato log con nome macchina
|
-- 2024/03/04 AV ver 2.6c6 Modificato log con nome macchina
|
||||||
-- Allineamento con common ver. 2.6c6
|
-- Allineamento con common ver. 2.6c6
|
||||||
-- 2024/03/09 DS ver 2.6c7 Migliorie alla geometria macchina e suo caricamento.
|
-- 2024/03/09 DS ver 2.6c7 Migliorie alla geometria macchina e suo caricamento.
|
||||||
-- 2024/03/12 AV ver 2.6c8 Allineamento con common ver. 2.6c7
|
-- 2024/03/12 AV ver 2.6c8 Allineamento con common ver. 2.6c7.
|
||||||
|
-- 2024/03/28 DS ver 2.6c9 Modificata posizione supporto rinvio.
|
||||||
|
-- 2024/03/28 AV ver 2.6d1 Allineamento con common ver. 2.6c8
|
||||||
|
-- 2024/04/15 AV ver 2.6d2 Allineamento con common ver. 2.6d1
|
||||||
|
-- 2024/04/18 AV ver 2.6d3 Allineamento con common ver. 2.6d2
|
||||||
|
-- 2024/04/30 AV ver 2.6e1 Allineamento con common ver. 2.6e1
|
||||||
|
-- Aggiunta variabile WoodDensity per gestione WOOD_DENSITY
|
||||||
|
-- 2024/05/06 AV ver 2.6e2 Allineamento con common ver. 2.6e2
|
||||||
|
-- 2024/05/06 AV ver 2.6e3 Allineamento con common ver. 2.6e3
|
||||||
|
-- Aggiunte variabili MinJoin(xx) per gestione MIN_JOIN_(xx)
|
||||||
|
-- 2024/06/03 AV ver 2.6f1 Aggiunta funzione GetSetupInfo a BeamData per nuovo automatismo
|
||||||
|
-- 2024/06/13 LM ver 2.6f2 Aggiunta lettura NewTopC da offset Ts3
|
||||||
|
-- 2024/06/13 AV ver 2.6f3_Dev Per controllo NUM, se arco maggiore di 99999mm, si approssima con una retta.
|
||||||
|
-- 2024/07/03 AV ver 2.6g1 Allineamento con common ver. 2.6g1
|
||||||
|
-- 2024/07/04 LM ver 2.6g2 In MachData.ini aggiunto MIN_JOIN_SS
|
||||||
|
-- 2024/09/02 AV ver 2.6i1 Allineamento con common ver. 2.6i1, Rimossi file "Common-"
|
||||||
|
-- 2024/09/02 AV ver 2.6i2 Corretto file YML per compilare file "Common_"
|
||||||
|
-- 2024/09/05 LM ver 2.6i3 In BeamData aggiunte costanti MIN_HEIGHT_ADDED_CUTS, PRECUT_HEAD, PRECUT_TAIL
|
||||||
|
-- 2024/09/06 LM ver 2.6i4 In BeamData le costanti sopra sono configurabili anche da offsets Ts3v7
|
||||||
|
-- 2024/09/16 AV ver 2.6i5 Allineamento con common ver. 2.6i2
|
||||||
|
-- 2024/09/18 LM ver 2.6i6 Modificato YAML per comunicazione versioni a LiMan. Aggiunta PP_NVER, versione in formato numerico.
|
||||||
|
-- 2024/09/23 AV ver 2.6i7 Allineamento con common ver. 2.6i3
|
||||||
|
-- 2024/09/24 AV ver 2.6i8 Allineamento con common ver. 2.6i4
|
||||||
|
-- 2024/09/24 AV ver 2.6i9 Allineamento con common ver. 2.6i5
|
||||||
|
|
||||||
require( 'EmtGenerator')
|
require( 'EmtGenerator')
|
||||||
EgtEnableDebug( false)
|
EgtEnableDebug( false)
|
||||||
|
|
||||||
PP_VER = '2.6c7'
|
PP_VER = '2.6i9_DEV'
|
||||||
|
PP_NVER = '2.6.9.9'
|
||||||
MIN_MACH_VER = '2.5k1'
|
MIN_MACH_VER = '2.5k1'
|
||||||
MACH_NAME = 'Essetre-FAST'
|
MACH_NAME = 'Essetre-FAST'
|
||||||
|
|
||||||
@@ -171,6 +194,13 @@ if EgtExistsFile( sData) then
|
|||||||
if Machine.Offsets.RIB_AUTO then AutomaticRotation = ( Machine.Offsets.RIB_AUTO == 1) end
|
if Machine.Offsets.RIB_AUTO then AutomaticRotation = ( Machine.Offsets.RIB_AUTO == 1) end
|
||||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||||
if Machine.Offsets.DEFTCPOS then DefTcPos = ( 'T' .. Machine.Offsets.DEFTCPOS) end
|
if Machine.Offsets.DEFTCPOS then DefTcPos = ( 'T' .. Machine.Offsets.DEFTCPOS) end
|
||||||
|
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
||||||
|
if Machine.Offsets.MIN_JOIN_VV then MinJoinVV = Machine.Offsets.MIN_JOIN_VV end
|
||||||
|
if Machine.Offsets.MIN_JOIN_SS then MinJoinSS = Machine.Offsets.MIN_JOIN_SS end
|
||||||
|
if Machine.Offsets.MIN_JOIN_LS then MinJoinLS = Machine.Offsets.MIN_JOIN_LS end
|
||||||
|
if Machine.Offsets.MIN_JOIN_SL then MinJoinSL = Machine.Offsets.MIN_JOIN_SL end
|
||||||
|
if Machine.Offsets.MIN_JOIN_LL then MinJoinLL = Machine.Offsets.MIN_JOIN_LL end
|
||||||
|
if Machine.Offsets.NEWTOPC then NewTopC = ( Machine.Offsets.NEWTOPC == 1) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -184,8 +214,8 @@ EmtGeneral {
|
|||||||
ExitMaxAdjust = 30,
|
ExitMaxAdjust = 30,
|
||||||
ExitMaxRotAdj = 0.5,
|
ExitMaxRotAdj = 0.5,
|
||||||
AngDeltaMinForHome = 165,
|
AngDeltaMinForHome = 165,
|
||||||
Special = 'Common-FAST.mlse',
|
Special = 'Common_FAST.mlse',
|
||||||
Processor = 'Common-FAST.mlpe'}
|
Processor = 'Common_FAST.mlpe'}
|
||||||
local BaseId = EmtBase {
|
local BaseId = EmtBase {
|
||||||
Name = 'Base',
|
Name = 'Base',
|
||||||
Geo='BASE/GEO',
|
Geo='BASE/GEO',
|
||||||
@@ -224,10 +254,14 @@ local CId = EmtAxis {
|
|||||||
if NewTopC then
|
if NewTopC then
|
||||||
local vtMove = Vector3d( 65,0,0)
|
local vtMove = Vector3d( 65,0,0)
|
||||||
local SolidArmId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'SOLID'), 'ARM')
|
local SolidArmId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'SOLID'), 'ARM')
|
||||||
EgtSurfTmMoveVertex( SolidArmId, 23, EgtSurfTmGetVertex( SolidArmId, 23, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
if EgtSurfTmMoveFacet then
|
||||||
EgtSurfTmMoveVertex( SolidArmId, 25, EgtSurfTmGetVertex( SolidArmId, 25, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
EgtSurfTmMoveFacet( SolidArmId, 11, vtMove, GDB_RT.GLOB)
|
||||||
EgtSurfTmMoveVertex( SolidArmId, 35, EgtSurfTmGetVertex( SolidArmId, 35, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
else
|
||||||
EgtSurfTmMoveVertex( SolidArmId, 36, EgtSurfTmGetVertex( SolidArmId, 36, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
EgtSurfTmMoveVertex( SolidArmId, 23, EgtSurfTmGetVertex( SolidArmId, 23, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
||||||
|
EgtSurfTmMoveVertex( SolidArmId, 25, EgtSurfTmGetVertex( SolidArmId, 25, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
||||||
|
EgtSurfTmMoveVertex( SolidArmId, 35, EgtSurfTmGetVertex( SolidArmId, 35, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
||||||
|
EgtSurfTmMoveVertex( SolidArmId, 36, EgtSurfTmGetVertex( SolidArmId, 36, GDB_RT.GLOB) + vtMove, GDB_RT.GLOB)
|
||||||
|
end
|
||||||
local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP')
|
local CollTopId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( CId, 'COLLISION'), 'TOP')
|
||||||
EgtMove( CollTopId, vtMove, GDB_RT.GLOB)
|
EgtMove( CollTopId, vtMove, GDB_RT.GLOB)
|
||||||
EgtSetName( CollTopId, 'BOX')
|
EgtSetName( CollTopId, 'BOX')
|
||||||
@@ -508,9 +542,9 @@ elseif SecondSupport == 3 then
|
|||||||
Name = 'T91',
|
Name = 'T91',
|
||||||
Parent = 'Base',
|
Parent = 'Base',
|
||||||
ExitNbr = 2,
|
ExitNbr = 2,
|
||||||
Pos1 = Point3d( -510.4-150, 113.2, -329.8-170),
|
Pos1 = Point3d( -710.4-150, 113.2, -329.8-170),
|
||||||
TDir1 = X_AX(),
|
TDir1 = X_AX(),
|
||||||
Pos2 = Point3d( -510.4+150, 113.2, -329.8-170),
|
Pos2 = Point3d( -710.4+150, 113.2, -329.8-170),
|
||||||
TDir2 = -X_AX(),
|
TDir2 = -X_AX(),
|
||||||
ADir = Z_AX(),
|
ADir = Z_AX(),
|
||||||
Geo = 'BASE/T91',
|
Geo = 'BASE/T91',
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,50 @@
|
|||||||
|
; 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=d,MaxElev,0
|
||||||
|
1=d,OutRaw,0
|
||||||
|
2=d,SideElev,0
|
||||||
|
3=d,TrimExt,0
|
||||||
|
4=sr,VtFaceUse,0,0,0
|
||||||
|
|
||||||
|
[Pocketing]
|
||||||
|
0=d,MaxElev,0
|
||||||
|
1=b,Open,0
|
||||||
|
2=d,OpenMinSave,0
|
||||||
|
3=d,OpenOutRaw,0
|
||||||
|
4=d,MaxOptSize,0
|
||||||
|
|
||||||
|
[Mortising]
|
||||||
|
0=d,MaxElev,0
|
||||||
|
|
||||||
|
[Chiseling]
|
||||||
|
|
||||||
|
[SawRoughing]
|
||||||
|
|
||||||
|
[SawFinishing]
|
||||||
|
|
||||||
|
[GenMachining]
|
||||||
|
0=l,LinTol,0.1
|
||||||
|
1=l,MaxLen,2
|
||||||
|
2=s,Type,ZigZag
|
||||||
|
3=d,SideAng,90
|
||||||
|
4=l,Step,10
|
||||||
|
5=l,OffsProj,0
|
||||||
|
6=l,LiTang,0
|
||||||
|
7=l,LiOrth,0
|
||||||
|
8=l,LiElev,0
|
||||||
|
9=l,LoTang,0
|
||||||
|
10=l,LoOrth,0
|
||||||
|
11=l,LoElev,0
|
||||||
|
12=b,DirFromGuide,1
|
||||||
|
|
||||||
|
[SurfRoughing]
|
||||||
|
|
||||||
|
[SurfFinishing]
|
||||||
|
0=b,SkipMaxDown,1
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
; 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
|
||||||
|
|
||||||
|
[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
|
||||||
+47
-1
@@ -1,7 +1,53 @@
|
|||||||
==== Common_FAST Update Log ====
|
==== Common_FAST Update Log ====
|
||||||
|
|
||||||
|
Versione 2.6i5 (24/09/2024)
|
||||||
|
- (SIM-GEN) Tolto controllo su lunghezza maggiore di 200mm introdotto con 2.6i2 perchè non completamente funzionante
|
||||||
|
- (GEN) Gestione in OnRapid() di EMT.FLAG=5 (rotazione a Z max per lavorazione successiva). Ora allineata alla simulazione
|
||||||
|
|
||||||
|
Versione 2.6i4 (24/09/2024)
|
||||||
|
- (SIM-GEN) Aggiunto ripinzaggio extra in caso servisse un grande spostamento e si sta pinzando poco.
|
||||||
|
L'aggiunta del ripinzaggio dipende da FASTCLAMPING (che deve essere disattiva). Viene aggiunta GAIN_RECLAMPING per decidere il guadagno in mm del ripinzaggio.
|
||||||
|
|
||||||
|
Versione 2.6i3 (23/09/2024)
|
||||||
|
- (SIM-GEN) Aggiunta nuova strategia riposizionamento morse
|
||||||
|
- (SIM-GEN) Aggiunta lettura flag NEWCLAMPING in BeamData, per abilitare nuova strategia riposizionamento. Se false o nil, funziona con metodo vecchio.
|
||||||
|
- (SIM-GEN) Aggiunta lettura flag FASTCLAMPING. Se false, al carico prende al massimo 1000mm, per evitare collisioni durante ciclo di lettura laser e prima lavorazione.
|
||||||
|
|
||||||
|
Versione 2.6i2 (16/09/2024)
|
||||||
|
- (SIM-GEN) Se utensili più lunghi di 200mm, si ruota in home e poi si approccia il pezzo. Ticket#2038
|
||||||
|
- (SIM-GEN) Aumentata distanza ingombro da 650mm a 660mm. In casi di utensile abbastanza lungo poteva andare in colisione. Ticket#2041
|
||||||
|
|
||||||
|
Versione 2.6i1 (02/09/2024)
|
||||||
|
- (MLDE-SIM-GEN) Rinominato file da "Common-" a "Common_" per uniformità con i file common delle altre macchine. Serve modifica a MLDE macchina.
|
||||||
|
|
||||||
|
Versione 2.6g1 (03/07/2024)
|
||||||
|
- (GEN) Corretto chiamata macro precarico in caso di taglio finale, ma con ribaltamento successivo. Ora si chiama solo se la fase successiva è una "END". Ticket#1881
|
||||||
|
- (GEN) Per controllo NUM, se arco maggiore di 99999mm, si approssima con una retta. Ticket#1888
|
||||||
|
|
||||||
|
Versione 2.6e3 (06/05/2024)
|
||||||
|
- (MLDE-SIM-GEN) Gestione facoltativa parametri MIN_JOIN_xx settabili in Ts3. Ticket#1794
|
||||||
|
|
||||||
|
Versione 2.6e2 (06/05/2024)
|
||||||
|
- (SIM-GEN) Modificata tolleranza calcolo ingombri lavorazioni per posizionamento pinze. Ticket#1790
|
||||||
|
|
||||||
|
Versione 2.6e1 (30/04/2024)
|
||||||
|
- (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 (18/04/2024)
|
||||||
|
- (SIM-GEN) In MLSE, quando c'è una rotazione, viene settato EMT.CNT=1 per considerare i 50mm di compensazione laser.
|
||||||
|
- (SIM) Nel file di log dove c'è stampa gruppi di collisione, viene scritto anche ID del gruppo
|
||||||
|
|
||||||
|
Versione 2.6d1 (15/04/2024)
|
||||||
|
- (GEN) Aggiunta gestione aggregato doppia uscita per controllo NUM_PLUS
|
||||||
|
- (GEN) Con aggregato con si possono fare archi, se OnArc con aggregato, dà errore.
|
||||||
|
- (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)
|
||||||
|
|
||||||
|
Versione 2.6c8 (28/03/2024)
|
||||||
|
- (MLSE) Possibilità di lavorazione da X- tra le pinze, se abilitata da flag (User.ENABLE_TOOL_BETWEEN_VICES == 1).
|
||||||
|
- (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
|
||||||
|
|
||||||
Versione 2.6c7 (12/03/2024)
|
Versione 2.6c7 (12/03/2024)
|
||||||
- (SIM) A fine simulazione non si creano gli spigoli ma si setta solo flag per visualizzazione tramite "EgtVolZmapSetShowEdges"
|
- (SIM) Miglioramento visualizzazione spigoli VMILL alla fine della simulazione. Funzione: EgtVolZmapSetShowEdges. N.B.= serve CAM5 2.6c2 NON OBBLIGATORIO
|
||||||
- (GEN) Corretto problema di movimento pinze assieme a discesa asse Z (Ticket #1710)
|
- (GEN) Corretto problema di movimento pinze assieme a discesa asse Z (Ticket #1710)
|
||||||
|
|
||||||
Versione 2.6c6 (04/03/2024)
|
Versione 2.6c6 (04/03/2024)
|
||||||
|
|||||||
+3
-3
@@ -1,9 +1,9 @@
|
|||||||
-- Version.lua by EgalWare s.r.l. 2024/02/23
|
-- Version.lua by EgalWare s.r.l. 2024/03/28
|
||||||
-- Gestione della versione dei file comuni post-processori macchine FAST e FASTrl di Essetre
|
-- Gestione della versione dei file comuni post-processori macchine FAST e FASTrl di Essetre
|
||||||
|
|
||||||
local InfoCommon_STD_PP = {
|
local InfoCommon_STD_PP = {
|
||||||
NAME = 'Common-FAST', -- nome script PP standard
|
NAME = 'Common_FAST', -- nome script PP standard
|
||||||
VERSION = '2.6c7', -- versione script
|
VERSION = '2.6i5', -- versione script
|
||||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user