d962c43e0c
- correzione scrittura variabili booleane su Fanuc - modificata gestione Power per Fanuc (ora gestisce anche Short senza segno fino a 65535 quindi 65.535 Ampere).
295 lines
14 KiB
VB.net
295 lines
14 KiB
VB.net
Imports EgtUILib.EgtInterface
|
|
|
|
Module VarMdiCommand
|
|
|
|
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
|
|
|
|
Public Sub ExecuteMDICommand(sLuaFileName As String)
|
|
|
|
' Verifica esistenza pagina DirectCut e ne recupero CN corrente
|
|
If IsNothing( m_MainWindow.m_DirectCutPageUC) Then Return
|
|
Dim CurrCN As CN_generico = m_MainWindow.m_DirectCutPageUC.m_CN
|
|
|
|
' Verifico esistenza nome script lua
|
|
If String.IsNullOrWhiteSpace(sLuaFileName) Then Return
|
|
|
|
' Eseguo script
|
|
Dim CmdString As String = String.Empty
|
|
Dim b2Start As Boolean = False
|
|
Dim bEActive As Boolean = False
|
|
Dim sENumber As String = String.Empty
|
|
Dim sEValue As String = String.Empty
|
|
Dim sEType As String = 0
|
|
Dim sENumber2 As String = String.Empty
|
|
Dim sEValue2 As String = String.Empty
|
|
Dim sEType2 As String = 0
|
|
If Not ExecDirectCmdLua(sLuaFileName, CmdString, b2Start, bEActive, sENumber, sEValue, sEType, sENumber2, sEValue2, sEType2) Then
|
|
Return
|
|
End If
|
|
|
|
' Se richiesta scrittura variabili
|
|
If bEActive Then
|
|
Select Case m_MainWindow.m_CNCommunication.m_nNCType
|
|
Case 1, 2 ' Num Axium e Flexium
|
|
' se Flexium e abilitata scrittura variabili PLC
|
|
If m_MainWindow.m_CNCommunication.m_nNCType = 2 And CurrCN.m_NewVariable Then
|
|
CurrCN.DPlcVariables_WriteVariables(sENumber, sEValue)
|
|
If Not String.IsNullOrWhiteSpace(sENumber2) AndAlso Not String.IsNullOrWhiteSpace(sEValue2) Then
|
|
CurrCN.DPlcVariables_WriteVariables(sENumber2, sEValue2)
|
|
End If
|
|
' altrimenti scrittura della variabile E
|
|
Else
|
|
CurrCN.DVariables_WriteVariables2(sENumber, sEValue)
|
|
End If
|
|
Return
|
|
Case 3 ' Siemens
|
|
' Scrivo prima variabile
|
|
Dim nEType As Integer = 0
|
|
StringToInt( sEType, nEType)
|
|
Select Case nEType
|
|
Case 1
|
|
Dim nEvalue As Integer = 0
|
|
StringToInt( sEvalue, nEvalue)
|
|
CurrCN.DVariables_WriteVariables3(sENumber, 1, nEValue, 0, 0, "")
|
|
EgtOutLog("ENumber=" & sENumber & " EType=1 " & " EValue=" & nEValue.ToString())
|
|
Case 2
|
|
Dim lEvalue As Long = 0
|
|
Long.TryParse(sEValue, lEvalue)
|
|
CurrCN.DVariables_WriteVariables3(sENumber, 2, 0, lEvalue, 0, "")
|
|
EgtOutLog("ENumber=" & sENumber & " EType=2 " & " EValue=" & lEvalue.ToString())
|
|
Case 3
|
|
Dim dEValue As Double = 0
|
|
StringToDouble(sEValue, dEValue)
|
|
CurrCN.DVariables_WriteVariables3(sENumber, 3, 0, 0, dEValue, "")
|
|
EgtOutLog("ENumber=" & sENumber & " EType=3 " & " EValue=" & dEValue.ToString())
|
|
Case 4
|
|
CurrCN.DVariables_WriteVariables3(sENumber, 4, 0, 0, 0, sEValue)
|
|
EgtOutLog("ENumber=" & sENumber & " EType=4 " & " EValue=" & sEValue)
|
|
Case Else
|
|
EgtOutLog("EType wrong : ENumber=" & sENumber & " EType=" & sEType & " EValue= " & sEValue)
|
|
End Select
|
|
If Not String.IsNullOrWhiteSpace(sEType2) AndAlso sEType2 <> "0" Then
|
|
' Pausa
|
|
System.Threading.Thread.Sleep(100)
|
|
' Scrivo seconda variabile
|
|
Dim nEType2 As Integer = 0
|
|
StringToInt( sEType2, nEType2)
|
|
Select Case nEType2
|
|
Case 1
|
|
Dim nEvalue2 As Integer = 0
|
|
StringToInt( sEvalue2, nEvalue2)
|
|
CurrCN.DVariables_WriteVariables3(sENumber2, 1, nEValue2, 0, 0, "")
|
|
EgtOutLog("ENumber2=" & sENumber2 & " EType2=1" & " EValue2=" & nEValue2.ToString())
|
|
Case 2
|
|
Dim lEvalue2 As Long = 0
|
|
Long.TryParse(sEValue2, lEvalue2)
|
|
CurrCN.DVariables_WriteVariables3(sENumber2, 2, 0, lEValue2, 0, "")
|
|
EgtOutLog("ENumber2=" & sENumber2 & " EType2=2" & " EValue2=" & lEValue2.ToString())
|
|
Case 3
|
|
Dim dEValue2 As Double = 0
|
|
StringToDouble(sEValue2, dEValue2)
|
|
CurrCN.DVariables_WriteVariables3(sENumber2, 3, 0, 0, dEValue2, "")
|
|
EgtOutLog("ENumber2=" & sENumber2 & " EType2=3" & " EValue2=" & dEValue2.ToString())
|
|
Case 4
|
|
CurrCN.DVariables_WriteVariables3(sENumber2, 4, 0, 0, 0, sEValue2)
|
|
EgtOutLog("ENumber2=" & sENumber2 & " EType2=4" & " EValue2=" & sEValue2)
|
|
Case Else
|
|
EgtOutLog("EType2 wrong : ENumber2=" & sENumber2 & " EType2=" & sEType2 & " EValue2=" & sEValue2)
|
|
End Select
|
|
End If
|
|
Return
|
|
Case 4 ' Fanuc
|
|
' eventuale scrittura di linea di comando MDI
|
|
If Not String.IsNullOrWhiteSpace(CmdString) Then
|
|
' attivo mpdalità MDI
|
|
CurrCN.DGeneralFunctions_WriteCncMode(2)
|
|
System.Threading.Thread.Sleep(100)
|
|
' salvo la stringa di comando ricevuta dal file lua
|
|
CurrCN.sz_ManualDataInput = CmdString
|
|
' eseguo la funzione che ha il compito di scrivere il comando MDI
|
|
CurrCN.MDI_command()
|
|
End If
|
|
' attivo modalità Manuale
|
|
CurrCN.DGeneralFunctions_WriteCncMode(7)
|
|
System.Threading.Thread.Sleep(100)
|
|
' eventuale caricamento prima variabile
|
|
If Not String.IsNullOrEmpty(sENumber) Then
|
|
If String.IsNullOrWhiteSpace(sEValue) Then
|
|
' EActive: impulsivo "D#####"
|
|
CurrCN.NC_pulse_bit(sENumber)
|
|
EgtOutLog("Fanuc : DNumber=" & sENumber)
|
|
Else
|
|
' EActive + EValue: scrittura comando invariabile Short oppure Bit
|
|
If sENumber.Contains(".") Then
|
|
' D#####.#
|
|
Dim bEValue As Boolean = ( sEValue.Trim <> "0")
|
|
CurrCN.NC_write_var_bit(sENumber, bEValue)
|
|
Else
|
|
' D#####
|
|
CurrCN.NC_write_var_short(sENumber, CShort(sEValue))
|
|
End If
|
|
EgtOutLog("Fanuc : DNumber=" & sENumber & " DValue=" & sEValue)
|
|
End If
|
|
Else
|
|
EgtOutLog("Fanuc : DNumber=NullOrEmpty")
|
|
End If
|
|
' eventale caricamento seconda variabile
|
|
If Not String.IsNullOrEmpty(sENumber2) Then
|
|
If String.IsNullOrWhiteSpace(sEValue2) Then
|
|
' EActive: impulsivo "D#####"
|
|
CurrCN.NC_pulse_bit(sENumber2)
|
|
EgtOutLog("Fanuc : DNumber2=" & sENumber2)
|
|
Else
|
|
' EActive + EValue: scrittura comando invariabile Short oppure Bit
|
|
If sENumber2.Contains(".") Then
|
|
' D#####.#
|
|
Dim bEValue2 As Boolean = ( sEValue2.Trim <> "0")
|
|
CurrCN.NC_write_var_bit(sENumber2, bEValue2)
|
|
Else
|
|
' D#####
|
|
CurrCN.NC_write_var_short(sENumber2, CShort(sEValue2))
|
|
End If
|
|
EgtOutLog("Fanuc : DNumber2=" & sENumber2 & " DValue2=" & sEValue2)
|
|
End If
|
|
Else
|
|
EgtOutLog("Fanuc : DNumber2=NullOrEmpty")
|
|
End If
|
|
Return
|
|
Case Else ' Demo
|
|
EgtOutLog("Demo : ENumber=" & sENumber & " EType=" & sEType & " EValue=" & sEValue)
|
|
EgtOutLog("Demo : ENumber2=" & sENumber2 & " EType2=" & sEType2 & " EValue2=" & sEValue2)
|
|
Return
|
|
End Select
|
|
End If
|
|
|
|
' Esecuzione comando MDI
|
|
Dim nResult As Short
|
|
' assegno la modalità di funzionamento
|
|
Select Case m_MainWindow.m_CNCommunication.m_nNCType
|
|
Case 1, 2, 4
|
|
nResult = CurrCN.DGeneralFunctions_WriteCncMode(2) ' Modalità MDI per controlli num
|
|
Case 3
|
|
'Per Siemens non devo fare nulla
|
|
End Select
|
|
' salvo la stringa di comando ricevuta dal file lua
|
|
CurrCN.sz_ManualDataInput = CmdString
|
|
' esguo la funzione che ha il compito di scrivere il comando MDI
|
|
CurrCN.MDI_command()
|
|
' avvio l'esecuzione del comando
|
|
Select Case m_MainWindow.m_CNCommunication.m_nNCType
|
|
Case 1, 2
|
|
System.Threading.Thread.Sleep(500)
|
|
CurrCN.DGeneralFunctions_CycleStart()
|
|
Case 3, 4
|
|
'Per Siemens e Fanuc non devo fare nulla
|
|
End Select
|
|
' se richiesto ripeto l'operazione
|
|
If b2Start Then
|
|
EgtOutLog("Avvio secondo cliclo start")
|
|
System.Threading.Thread.Sleep(800)
|
|
CurrCN.DGeneralFunctions_CycleStart()
|
|
End If
|
|
System.Threading.Thread.Sleep(300)
|
|
' ripristino la modalità Manuale
|
|
nResult = CurrCN.DGeneralFunctions_WriteCncMode(7)
|
|
End Sub
|
|
|
|
' Esecuzione dello script lua per impostazione dati del comando diretto
|
|
Private Function ExecDirectCmdLua(sLuaFileName As String,
|
|
ByRef CmdString As String, ByRef b2Start As Boolean, ByRef bEActive As Boolean,
|
|
ByRef sENumber As String, ByRef sEValue As String, ByRef sEType As String,
|
|
ByRef sENumber2 As String, ByRef sEValue2 As String, ByRef sEType2 As String) As Boolean
|
|
' Esecuzione script
|
|
Dim sLuaPath As String = m_MainWindow.m_CurrentMachine.sMachDir & "\DirectCmd\" & sLuaFileName
|
|
Dim bOk As Boolean = EgtLuaExecFile(sLuaPath)
|
|
EgtOutLog("DirectCmd Script " & sLuaPath & If(bOk, " completed", " stopped with errors"))
|
|
If Not bOk Then Return False
|
|
|
|
' Assegnazione valori a variabili lua
|
|
Dim ManualAxesMove As ManualAxesMoveUC = m_MainWindow.m_DirectCutPageUC.m_ManualAxesMove
|
|
|
|
Dim dFeed As Double = 0
|
|
If Not String.IsNullOrWhiteSpace(ManualAxesMove.FeedTxBx.Text) Then
|
|
StringToLen(ManualAxesMove.FeedTxBx.Text, dFeed)
|
|
Else
|
|
EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text)
|
|
EgtTdbGetCurrToolParam(MCH_TP.FEED, dFeed)
|
|
End If
|
|
EgtLuaSetGlobNumVar("CMD.F", dFeed)
|
|
|
|
Dim dSpeed As Double = 0
|
|
If Not String.IsNullOrWhiteSpace(ManualAxesMove.SpeedTxBx.Text) Then
|
|
StringToDouble(ManualAxesMove.SpeedTxBx.Text, dSpeed)
|
|
Else
|
|
EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text)
|
|
EgtTdbGetCurrToolParam(MCH_TP.SPEED, dSpeed)
|
|
End If
|
|
EgtLuaSetGlobNumVar("CMD.S", dSpeed)
|
|
|
|
EgtTdbSetCurrTool(m_MainWindow.m_CurrentProjectPageUC.ToolTxBx.Text)
|
|
Dim sToolPos As String = String.Empty
|
|
If EgtTdbGetCurrToolParam(MCH_TP.TCPOS, sToolPos) Then
|
|
EgtLuaGetGlobStringVar("CMD.TCPOS", sToolPos)
|
|
End If
|
|
Dim dToolDiam As Double = 0
|
|
If EgtTdbGetCurrToolParam(MCH_TP.DIAM, dToolDiam) Then
|
|
EgtLuaSetGlobNumVar("CMD.DIAM", dToolDiam * 1000)
|
|
End If
|
|
|
|
Dim dL1, dL2, dL3, dR1, dR2 As Double
|
|
m_MainWindow.m_CNCommunication.GetAxesPositions(dL1, dL2, dL3, dR1, dR2)
|
|
EgtLuaSetGlobNumVar("CMD.L1", dL1)
|
|
EgtLuaSetGlobNumVar("CMD.L2", dL2)
|
|
EgtLuaSetGlobNumVar("CMD.L3", dL3)
|
|
EgtLuaSetGlobNumVar("CMD.R1", dR1)
|
|
EgtLuaSetGlobNumVar("CMD.R2", dR2)
|
|
EgtLuaSetGlobBoolVar("CMD.INCHES", m_MainWindow.m_CNCommunication.GetMachineInInches())
|
|
|
|
Dim sCurrTable As String = String.Empty
|
|
Dim nCurrTable As Integer = 1
|
|
EgtGetTableName(sCurrTable)
|
|
If sCurrTable <> "MainTab" Then nCurrTable = 2
|
|
EgtLuaSetGlobIntVar("CMD.TABLE", nCurrTable)
|
|
|
|
' Esecuzione funzione
|
|
bOk = EgtLuaCallFunction("CmdString")
|
|
EgtOutLog(" CmdString function" & If(bOk, " completed", " stopped with errors"))
|
|
If Not bOk Then Return False
|
|
|
|
' Leggo variabili da file Lua
|
|
CmdString = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.CMDSTRING", CmdString)
|
|
b2Start = False
|
|
EgtLuaGetGlobBoolVar("CMD.DOUBLESTART", b2Start)
|
|
bEActive = False
|
|
EgtLuaGetGlobBoolVar("CMD.EACTIVE", bEActive)
|
|
sENumber = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.ENUMBER", sENumber)
|
|
sEValue = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.EVALUE", sEValue)
|
|
sEType = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.ETYPE", sEType)
|
|
sENumber2 = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.ENUMBER2", sENumber2)
|
|
sEValue2 = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.EVALUE2", sEValue2)
|
|
sEType2 = String.Empty
|
|
EgtLuaGetGlobStringVar("CMD.ETYPE2", sEType2)
|
|
' Reset variabili lua
|
|
EgtLuaResetGlobVar("CmdString")
|
|
EgtLuaResetGlobVar("CMD")
|
|
' Log del comando
|
|
EgtOutLog(" CmdString=" & If(Not String.IsNullOrEmpty(CmdString), CmdString, "") &
|
|
" DOUBLESTART=" & b2Start.ToString() &
|
|
" EActive=" & bEActive.ToString() &
|
|
" ENumber=" & If(Not String.IsNullOrEmpty(sENumber), sENumber, "") &
|
|
" EValue=" & If(Not String.IsNullOrEmpty(sEValue), sEValue, "") &
|
|
" EType=" & If(Not String.IsNullOrEmpty(sEType), sEType, "") &
|
|
" ENumber2=" & If(Not String.IsNullOrEmpty(sENumber2), sENumber2, "") &
|
|
" EValue2=" & If(Not String.IsNullOrEmpty(sEValue2), sEValue2, "") &
|
|
" EType2=" & If(Not String.IsNullOrEmpty(sEType2), sEType2, ""))
|
|
Return True
|
|
End Function
|
|
|
|
End Module
|