Imports System.Collections.Generic Imports System.Collections.ObjectModel Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Linq Imports System.Text Imports System.Windows.Forms Imports EgtUILib Imports EgtWPFLib Namespace Num Public Class NumNC ' eredito la classe CN_generico Inherits CN_generico #Region " Classes" #End Region #Region " Enum" Enum eDatatype As Short tpUnknown = -1 ' -1 unknown ... tpByte = 0 ' 0: signed byte - SINT8 tpUByte = 1 ' 1: unsigned byte - UINT8 tpShort = 2 ' 2: short integer - SINT16 tpUShort = 3 ' 3: unsigned short integer - UINT16 tpLong = 4 ' 4: long integer - SINT32 tpULong = 5 ' 5: unsigned long integer - UINT32 tpDouble = 6 ' 6: double floating point tpByteMap = 7 ' 7: byte bitmap - read as UINT8, show as BOOL tpWordMap = 8 ' 8: word bitmap - read as UINT16, show as BOOL tpLongMap = 9 ' 9: long bitmap - read as UINT32, show as BOOL tpLLong = 10 ' 10: 64 bits integer long tpByteLongMap = 11 ' 11: long bitmap - read as UINT32, show as BYTE End Enum Enum eCnMode As Short AutoM = 0 SingleM = 1 MDI = 2 Manual = 7 End Enum #End Region #Region " Num objects" ' Instance the FXServer object variables Dim WithEvents objDRunTimeSystem As FXServer.DRunTimeSystem Dim WithEvents objDGroupManager As FXServer.DGroupManager Dim WithEvents objDReadELS As FXServer.DReadELS ' questa � classe che serve a scrivere i dati nel PLC Dim WithEvents objDPlcVariables As FXServer.DPlcVariables ' questa � la classe che serve a scrivere i dati nelle variabili E Dim WithEvents objDVariables As FXServer.DVariables Dim WithEvents objDReadTestExectime As FXServer.DReadTestExectime Dim WithEvents objDPosition As FXServer.DPosition Dim WithEvents objDNCKParameter As FXServer.DNCKParameter ' questa � la classe che serve a scrivere i comandi MDI (come ad esempio le funzioni M) Dim WithEvents objDMdiCommand As FXServer.DMdiCommand Dim WithEvents objDMainCncData As FXServer.DMainCncData Dim WithEvents objDNumDirectory As FXServer.DNumDirectory Dim WithEvents objDInterpo As FXServer.DInterpo Dim WithEvents objDGeneralFunctions As FXServer.DGeneralFunctions Dim WithEvents objDFeedOverride As FXServer.DFeedOverride Dim WithEvents objDReadSpindleComplete As FXServer.DReadSpindleComplete Dim WithEvents objDFileTransfer As FXServer.DFileTransfer Dim WithEvents objDTool As FXServer.DTool Dim WithEvents objDFunctionsG As FXServer.DFunctionsG 'FXLib Dim WithEvents objSystemFunctions As FXLib.SystemFunctions Dim WithEvents objCncState As FXLib.CncState 'FXLog Dim WithEvents objErrorHandler As FXLog.ErrorHandler Dim WithEvents objConfig As FXLog.Config #End Region #Region " local const" Private Const TIMEOUT As Short = 99 Private Const SHORTSLEEPTIME As Short = 10 Private Const LONGSLEEPTIME As Short = 40 Private Const SHORTSLEEPCOUNT As Short = 100 Private Const LONGSLEEPCOUNT As Short = 200 #End Region #Region " local var" Private n_dTool_range_start As Short = 1 Private n_dTool_range_stop As Short = 2 Private AplCncNumber As New List(Of Short) Private AplChannel As New List(Of Short) Private AplSet As New List(Of Short) Private AplStatus As Short Private ExceptStatus As Short Private bSetModeDone As Boolean = False Private nSetModeResult As Short Private bDownloadFailed As Boolean = False Private bBytesTransfer As Boolean = False Private nDownloadErrorSeq As Integer Private nDownloadErrorReason As Integer Private lTransferedBytes As Long Private l_Gcodes_1 As ULong Private l_Gcodes_2 As ULong Private l_current_Gcodes As ULong Private m_nCnDataVarNum As Integer = 0 Private m_nCnDataVarInd(NUM_DATA - 1) As Integer Private m_ConnectionError5000 As Boolean = False #End Region #Region "Constructor" Sub New() n_state = 0 sz_NC_error_messages = New List(Of String) End Sub Public Overrides Function Init() As Boolean ' Initialize and start Runtime System InitFxServer() Return n_state >= 2 End Function #End Region #Region "Internal Methods" ' Init FXServer class DRunTimeSystem Private Sub InitFxServer() n_state = 0 'Initialize the class DRunTimeSystem objDRunTimeSystem = New FXServer.DRunTimeSystem() objDRunTimeSystem.Init() n_state = 1 Dim Index As Integer = 0 ' CONNESSIONE AL CN Connessione in corso... Dim ConnectionWnd As New EgtMsgBox(Application.Current.MainWindow, EgtMsg(91107), ' CONNESSIONE AL CN EgtMsg(91108), True, EgtMsgBox.Buttons.NULL, EgtMsgBox.Icons.NULL, 1) ' Connessione in corso... ConnectionWnd.LoadingPrBr_Value = 5 Dim ConnectionError As Integer = 0 While (n_state < 2 Or m_ConnectionError5000) And Index < 20 System.Threading.Thread.Sleep(500) ' 0.5 sec wait ConnectionWnd.LoadingPrBr_Value += 5 Index += 1 ' Costringo ad aggiornare UI UpdateUI() End While If n_state < 2 Or m_ConnectionError5000 Then ConnectionWnd.Text = EgtMsg(91109) ' Connessione non riuscita ' Costringo ad aggiornare UI UpdateUI() System.Threading.Thread.Sleep(1500) ' 1.5 sec wait ConnectionWnd.Close() Else ConnectionWnd.Text = EgtMsg(91110) ' Connessione riuscita ConnectionWnd.LoadingPrBr_Value = 100 ' Costringo ad aggiornare UI UpdateUI() System.Threading.Thread.Sleep(1500) ' 1.5 sec wait ConnectionWnd.Close() ' Lancio della lettura delle variabili PLC set_Read_PLC_var() End If sz_versionRTS = objDRunTimeSystem.GetVersionRTS sz_ConnectionAddress = objDRunTimeSystem.GetConnectionAddress sz_AffaireNumber = objDRunTimeSystem.GetAffaireNumber(1).ToString End Sub ' Init FXServer classes for application Private Sub InitFxObjects() Dim n_ret As Short 'Initialize FXServer class DGroupManager objDGroupManager = New FXServer.DGroupManager() objDGroupManager.CncNumber = 0 objDGroupManager.AxisGroup = 0 ' seleziona gruppo assi CH1 'Initialize FXServer class DMdiCommand objDMdiCommand = New FXServer.DMdiCommand() objDMdiCommand.Init(objDGroupManager.Handle) 'Initialize FXServer class DMainCncData objDMainCncData = New FXServer.DMainCncData() objDMainCncData.Init(objDGroupManager.Handle) 'Initialize FXServer class DGeneralFunctions objDGeneralFunctions = New FXServer.DGeneralFunctions() objDGeneralFunctions.Init(objDGroupManager.Handle) 'Initialize FXServer class DFileTransfer objDFileTransfer = New FXServer.DFileTransfer objDFileTransfer.Init(objDGroupManager.Handle) ' --------'Initialize FXServer class DFeedOverride ' --------objDFeedOverride = New FXServer.DFeedOverride() ' --------objDFeedOverride.Init(objDGroupManager.Handle) ' Detect and identify the Flexium CNC type sz_CncFxIdentifier = objDMainCncData.GetCncIdentifier() ' _txtGetCncIdentification.Invoke(DirectCast(Sub() _txtGetCncIdentification.Text = CncFxIdentifier, MethodInvoker)) EgtOutLog("Modello Flexium: " & sz_CncFxIdentifier) If sz_CncFxIdentifier = "Flexium 6" OrElse sz_CncFxIdentifier = "Flexium 8" OrElse sz_CncFxIdentifier = "Flexium 68" Then IsFlexiumPlus = False Else IsFlexiumPlus = True End If d_LinearAxisPrecision = CDbl(objDMainCncData.GetLinearPrecision()) d_RotaryAxisPrecision = CDbl(objDMainCncData.GetRotatePrecision()) ' ' Initialize FXServer class DPosition ' objDPosition = New FXServer.DPosition() '--objDPosition.Flag = 0 '--objDPosition.ModeOP = 0 '--objDPosition.FastUpdate = 0 ' Disable FastUpdate=0 To show the refresh time by Flag > 0 objDPosition.Init(objDGroupManager.Handle) '--objDPosition.FireValues() n_validaxes = objDPosition.FireValidAxis() ' ' Initialize FXServer class DReadELS ' objDReadELS = New FXServer.DReadELS objDReadELS.Init(objDGroupManager.Handle) 'Metodi 'objDReadELS.Flag = 0 'objDReadELS.Init(objDGroupManager.Handle) 'objDReadELS.AddParameter("E80000", 1) ' objDReadELS.AddParameter("E80001", 2) ' objDReadELS.AddParameter("E80002", 3) 'objDReadELS.AddParameter("E70000", 2) 'objDReadELS.AddParameter("L100", 3) ' ' dall' esterno call ReadEls_Add_Parameter ( "E80000", 1 ) ' objDVariables = New FXServer.DVariables objDVariables.Init(objDGroupManager.Handle, "E80000", 10) ' 10 variables ' short n_c = Convert.ToInt16(_Variables[9, 1].Text ); ' short rc = objDVariables.WriteVariables2(2, objDGroupManager.Handle, "E80000", n_c); // era 60001 'Dim Paras() As String = New String(1) {"E80000", "E80001"} 'Dim Paras As String = "E80000;E80001" 'Dim Valus As Object 'Dim MyRnd As New Random 'Valus = MyRnd.Next(500) & ";" & MyRnd.Next(450, 1000) 'objDVariables.WriteVariables(objDGroupManager.Handle, Paras, Valus) 'Initialize FXServer class DPlcVariables objDPlcVariables = New FXServer.DPlcVariables objDPlcVariables.Flag = 3 ' flag = priority 3 = 0.3 sec objDPlcVariables.Init(objDGroupManager.Handle) 'Initialize FXServer class DInterpo ' objDInterpo = New FXServer.DInterpo objDInterpo.Init(objDGroupManager.Handle) 'Initialize FXServer class DReadSpindleComplete ' Only available with FX Server >= 3.9 ' objDReadSpindleComplete.ValueChanged2 += new FXServer.IDReadSpindleCompleteEvents_ValueChanged2EventHandler(objDReadSpindleComplete_ValueChanged2); objDReadSpindleComplete = New FXServer.DReadSpindleComplete n_ret = objDReadSpindleComplete.Init(objDGroupManager.Handle) ' Initialize FXServer class DTool objDTool = New FXServer.DTool n_ret = objDTool.Init(objDGroupManager.Handle) ' Initialize FXServer class DFunctionsG objDFunctionsG = New FXServer.DFunctionsG() objDFunctionsG.Init(objDGroupManager.Handle) ' Initialize FXLib SystemFunctions object 'objSystemFunctions = New FXLib.SystemFunctions() ' objSystemFunctions.InitWindowsEvent() ' Load Language Values to List 'objSystemFunctions.FireAllLanguages() 'Initialize FXLog Config Objects ' --------objConfig = New FXLog.Config() ' --------objConfig.Init() ' Initialize FXLog ErrorHandler Objects objErrorHandler = New FXLog.ErrorHandler() ' --------' Initialisation config for testing ' --------' Accepting all messages ' --------' Consult the documentation for detailed information objErrorHandler.AllError = 1 objErrorHandler.ErrorGlobal = 0 objErrorHandler.SetChannel(0, 0) objErrorHandler.AcceptBootSysMessage(1) objErrorHandler.AcceptException(0) ' Initialize FXLib CncState objects ' --------objCncState = New FXLib.CncState() ' --------objCncState.Init() ' Initializes FXServer Component DNumDirectory ' works with the zone 0 (Customer content) ' --------objDNumDirectory = New FXServer.DNumDirectory() ' --------objDNumDirectory.Init(objDGroupManager.Handle) ' --------objDNumDirectory.ReadMemorySize() End Sub ' Close FXServer objects Private Sub CloseFxObjects() ' FXServer classes without method Close() to close the object => possibilty ' FXServer objectvariable can dispose from memory by following procedure ' !!!!!!!!!!!! aggiungere release di tutti gli oggetti creati !!!! System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGroupManager) objDGroupManager = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDMdiCommand) objDMdiCommand = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDMainCncData) objDMainCncData = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGeneralFunctions) objDGeneralFunctions = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objDFeedOverride) ' --------objDFeedOverride = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDPosition) objDPosition = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadELS) ' --------objDReadELS = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDVariables) objDVariables = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDPlcVariables) objDPlcVariables = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDInterpo) objDInterpo = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadSpindleComplete) objDReadSpindleComplete = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objDTool) objDTool = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objSystemFunctions) ' --------objSystemFunctions = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objConfig) ' --------objConfig = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(objErrorHandler) objErrorHandler = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objCncState) ' --------objCncState = Nothing ' --------System.Runtime.InteropServices.Marshal.ReleaseComObject(objDNumDirectory) ' --------objDNumDirectory = Nothing ' FXServer dispose by the class method Close() MessageBox.Show("CloseFxObjects") End Sub Private Sub set_Read_PLC_var() Dim sz_var_names As New ArrayList Dim n_ret As Short 'sz_var_names.Add("Application.IOCONFIG_GLOBALS.Flexium_NCK.RCNC.General.Mode") ' modo 0:AUTO;1:SEQ;2:MDI;3:RAPIDO;4:SERCH;5:EDIT;6:TEST;7:MANUALE; 'sz_var_names.Add("Application.IOCONFIG_GLOBALS.Flexium_NCK.RCNC.General.JogIncrement") ' Tipo man. 0:0.1 u; 1:1 u; 2:10 u; 3:100 u; 4:1 mm; 5:10 mm; 6:ILL; 8:HANDWEEL; 9:0.01 u; 10:0.001 u; 'sz_var_names.Add("Application.IOCONFIG_GLOBALS.Flexium_NCK.WCNC.Channel[1].FeedOveride") ' Potenziom. Feed = *0.47059 'sz_var_names.Add("Application.IOCONFIG_GLOBALS.Flexium_NCK.WCNC.Spindle[2].Override") ' segnaposto per la speed override 'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_Vel_prog") ' FEED 'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_LabRPM") ' Speed 'sz_var_names.Add("Application.GVL_HMI_OMAG.HMI_LabAmper") ' Amp�re = *0.01 ' Creo lista nomi variabili PLC da leggere m_nCnDataVarNum = 0 For nI As Integer = 0 To NUM_DATA - 1 If Not String.IsNullOrWhiteSpace(m_szCnDataVar(nI)) AndAlso m_szCnDataVar(nI).StartsWith("PLC,") Then ' inserisco nome variabile in lista di variabili da leggere, tolgo "PLC," sz_var_names.Add(m_szCnDataVar(nI).Substring(4)) ' imposto indice variabile m_nCnDataVarInd(m_nCnDataVarNum) = nI ' incremento numero di variabili da leggere m_nCnDataVarNum += 1 End If Next ' Imposto lettura variabili n_ret = objDPlcVariables.ReadVariables(sz_var_names.ToArray()) If n_ret <> 0 Then EgtOutLog("Errore 3 ReadVariables: " & n_ret.ToString) End If End Sub #End Region #Region " Events" #Region "-- FXServer -- DRunTimeSystem EVENTS" ' ' ' ------->> FXServer Event DRunTimeSystem ServerInitializationFinished ' Private Sub objDRunTimeSystem_ServerInitializationFinished() Handles objDRunTimeSystem.ServerInitializationFinished ' Initialize the FXServer class for application InitFxObjects() sz_ServerInitStatus = "FXServer objects initialized !" sz_ServerReinitStatus = "FXServer no objects closed !" n_state = 2 End Sub ' ' ' ------->> FXServer Event DRunTimeSystem ServerReinitializationStarted ' Private Sub objDRunTimeSystem_ServerReinitializationStarted() Handles objDRunTimeSystem.ServerReinitializationStarted CloseFxObjects() sz_ServerInitStatus = "FXServer objects closed !" sz_ServerReinitStatus = "FXServer objects not initialized !" n_state = 3 End Sub 'Private Delegate Sub _RTSWaitForInteraction(ByVal state As Short, ByVal question As Short, ByVal Cnc As Short, ByVal extAdr As Short, ByVal AddStrings As Object) Private Sub objDRunTimeSystem_RTSWaitForInteraction(ByVal state As Short, ByVal question As Short, ByVal Cnc As Short, ByVal extAdr As Short, ByVal AddStrings As Object) Handles objDRunTimeSystem.RTSWaitForInteraction End Sub Private Sub objDRunTimeSystem_CncApplikationLoaded(ByVal value As Short) Handles objDRunTimeSystem.CncApplikationLoaded 'If Me.InvokeRequired Then 'Invoke(New CncApplikationLoaded(AddressOf objDRunTimeSystem_CncApplikationLoaded), value) 'Else ' lstData.Items.Add("CncApplikationLoaded--> " & value ' !!!!!!!!!!!!!!!!!!!!!! 'End If End Sub #End Region #Region "-- FXServer -- DGroupManager EVENTS" ' ' ' ------->> FXServer Event DGroupManager ErrorHandler ' Private Sub objDGroupManager_ErrorHandler(szError As String, nTextNumber As Short) Handles objDGroupManager.ErrorHandler EgtOutLog("DGroupManager.ErrorHandler message : " & szError & "ErrorHandler number : " & nTextNumber.ToString) If nTextNumber = 5000 Then m_ConnectionError5000 = True End If End Sub #End Region #Region "-- FXServer -- DGeneralFunctions EVENTS" ' ' ------->> FXServer Event GeneralFunctions ProgramActivated Private Sub objDGeneralFunctions_ProgramActivated(nErrorcode As Short) Handles objDGeneralFunctions.ProgramActivated n_activate_error_code = nErrorcode ' 0 = OK ; > 0 errorcode End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncStart Private Sub objDGeneralFunction_OnCncStart(nErrorcode As Short) Handles objDGeneralFunctions.OnCncStart End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncStop Private Sub objDGeneralFunction_OnCncStop(nErrorcode As Short) Handles objDGeneralFunctions.OnCncStop End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncReset Private Sub objDGeneralFunction_OnCncReset(nErrorcode As Short) Handles objDGeneralFunctions.OnCncReset End Sub ' ' ------->> FXServer Event GeneralFunctions CncModeWritten Private Sub objDGeneralFunction_CncModeWritten2(nHandle As Integer, nErrorcode As Short) Handles objDGeneralFunctions.CncModeWritten2 bSetModeDone = True nSetModeResult = nErrorcode End Sub ' ' ------->> FXServer Event GeneralFunctions VariableWritten Private Sub objDGeneralFunction_VariableWritten(nErrorcode As Short) Handles objDGeneralFunctions.VariableWritten If nErrorcode <> 0 Then MessageBox.Show("DGeneralFunctions.VariableWritten :" + " " + nErrorcode.ToString()) End If End Sub ' ' ------->> FXServer Event GeneralFunctions OnCncStop Private Sub objDGeneralFunction_OnSkipLevelWritten(iHandle As Integer, nErrorcode As Short) Handles objDGeneralFunctions.OnSkipLevelWritten End Sub #End Region #Region "-- FXServer -- DFileTransfer EVENTS" ' ' ------->> FXServer Event DFileTransfer Completed Private Sub objDFileTransfer_Completed(l_Handle As Integer) Handles objDFileTransfer.Completed bSetModeDone = True End Sub ' ' ------->> FXServer Event DFileTransfer TransferStarted Private Sub objDFileTransfer_TransferStarted(l_Handle As Integer) Handles objDFileTransfer.TransferStarted End Sub ' ' ------->> FXServer Event DFileTransfer Failed Private Sub objDFileTransfer_Failed(l_Handle As Integer, n_seq As Short, n_reason As Short) Handles objDFileTransfer.Failed bDownloadFailed = True nDownloadErrorSeq = n_seq nDownloadErrorReason = n_reason End Sub ' ' ------->> FXServer Event DFileTransfer BytesTransfered Private Sub objDFileTransfer_BytesTransfered(l_Handle As Integer, l_bytes As Integer) Handles objDFileTransfer.BytesTransfered If l_bytes > 0 Then bBytesTransfer = True Else bBytesTransfer = False End If lTransferedBytes += l_bytes End Sub #End Region #Region "-- FXServer -- DFeedOverride EVENTS" ' ' ------->> FXServer Event GeneralFunctions ValueChanged Private Sub objDFeedOverride_ValueChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDFeedOverride.ValueChanged Dim n, ni As Integer Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n = 0 To index.Length - 1 ni = CInt(index(n)) l_channel_override(ni) = CLng(values(n)) Next b_feed_changed = True End Sub #End Region #Region "-- FXServer -- DPosition EVENTS" ' ' ' ------->> FXServer Event DPosition PositionChanged ' Private Sub objDposition_PositionChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.PositionChanged Dim n, ni As Integer Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue If IsFlexiumPlus Then For n = 0 To index.Length - 1 ni = CInt(index(n)) If ni <= 5 Then d_axis_position(ni) = CDbl(values(n)) / d_LinearAxisPrecision Else d_axis_position(ni) = CDbl(values(n)) / d_RotaryAxisPrecision End If Next Else For n = 0 To index.Length - 1 ni = CInt(index(n)) d_axis_position(ni) = CDbl(CLng(values(n))) / d_LinearAxisPrecision Next End If If b_axis_events_enable Then MyBase.OnNewPositionData() End Sub Private Sub objDPosition_DeltaChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.DeltaChanged Dim n, ni As Integer Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue If IsFlexiumPlus Then For n = 0 To index.Length - 1 ni = CInt(index(n)) If ni <= 5 Then d_axis_delta(ni) = CDbl(values(n)) / d_LinearAxisPrecision Else d_axis_delta(ni) = CDbl(values(n)) / d_RotaryAxisPrecision End If Next Else For n = 0 To index.Length - 1 ni = CInt(index(n)) d_axis_delta(ni) = CDbl(CLng(values(n))) / d_LinearAxisPrecision Next End If If b_axis_events_enable Then MyBase.OnNewPosDeltaData() End Sub Private Sub objDPosition_EndposChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.EndposChanged End Sub Private Sub objDPosition_OffsetChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.OffsetChanged End Sub Private Sub objDPosition_ValidAxisChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.ValidAxisChanged Dim valid_i() As Object Dim valid_v() As Object valid_i = vtArrayIndex valid_v = vtArrayValue For n As Integer = 0 To valid_i.Length - 1 Dim ni As Integer = CInt(valid_v(n)) If ni = 0 Then b_axis_valid(n) = False Else b_axis_valid(n) = True End If Next End Sub Private Sub objDPosition_ValuesChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDPosition.ValuesChanged End Sub Private Sub objDPosition_ReadOncePositionChanged(lHandle As Integer, vtArrayValue As Object) Handles objDPosition.ReadOncePositionChanged End Sub Private Sub objDPosition_ReadOnceDeltaChanged(lHandle As Integer, vtArrayValue As Object) Handles objDPosition.ReadOnceDeltaChanged End Sub #End Region #Region "-- FXServer -- DReadELS EVENTS" '' '' ATTENZIONE : vengono sparati tutti e 3 gli eventi..... tenerne 1 solo !!! !!! !!! '' #Region " smorto" #If False Then Private Sub objDReadELS_ValueChanged(ByVal nHandle As Short, ByVal dValue As Double, ByVal nErrorcode As Short) Handles objDReadELS.ValueChanged Dim sza As String If (nHandle < 1 Or nHandle > MAX_VALUES) Then MsgBox(" Invalid handle in Validchanged : " + nHandle.ToString) Exit Sub End If If (nErrorcode <> 0) Then MsgBox(" Error in Validchanged : " & nErrorcode.ToString + " Handle : " + nHandle.ToString) Try sza = dValue.ToString Catch Ex As Exception MsgBox(Ex.Message) End Try End Sub #End If #End Region Private Sub objDReadELS_ValueChanged2(nHandle As Integer, dValue As Double, nerrorCode As Short) Handles objDReadELS.ValueChanged2 If (nHandle < 1 Or nHandle > MAX_VALUES) Then MsgBox(" Invalid handle in Validchanged2 : " + nHandle.ToString) Exit Sub End If If (nerrorCode <> 0) Then MsgBox(" Error in Validchanged2 : " & nerrorCode.ToString + " Handle : " + nHandle.ToString) Try d_DReadELS_value = dValue n_DReadELS_handle = CShort(nHandle) Catch Ex As Exception MsgBox(Ex.Message) End Try End Sub #Region " smorto" #If False Then ' Only for FX Server >= 3.9.0.0 ' poi in realt� ritorna sempre tipo = -1 per cui � eguale alle altre..... Private Sub objDReadELS_ValueChanged3(nHandle As Integer, value As Object, DataType As Short, Writable As Short, nerrorCode As Short) Handles objDReadELS.ValueChanged3 Dim edata_type As eDatatype Dim sValue As String edata_type = DataType If (nHandle < 1 Or nHandle > MAX_VALUES) Then MsgBox(" Invalid handle in Validchanged3 : " + nHandle.ToString) Exit Sub End If If (nerrorCode <> 0) Then MsgBox(" Error in Validchanged3 : " & nerrorCode.ToString + " Handle : " + nHandle.ToString) Try Select Case (edata_type) Case eDatatype.tpByte ' tpByte : signed byte - SINT8 sValue = CType(value, SByte).ToString Case eDatatype.tpUByte ' tpUByte : unsigned byte - UINT8 sValue = CType(value, Byte).ToString Case eDatatype.tpShort ' tpShort : short integer - SINT16 sValue = CType(value, Short).ToString Case eDatatype.tpUShort ' tpUShort 3: unsigned short integer - UINT16 sValue = CType(value, UShort).ToString Case eDatatype.tpLong ' tpLong : long integer - SINT32 sValue = CType(value, Integer).ToString Case eDatatype.tpULong ' tpULong : unsigned long integer - UINT32 sValue = CType(value, UInteger).ToString Case eDatatype.tpDouble ' tpDouble : double floating point - DOUBLE sValue = CType(value, Double).ToString Case eDatatype.tpByteMap ' tpByteMap : byte bitmap - read as UINT8, show as BOOL sValue = CType(value, Byte).ToString Case eDatatype.tpWordMap ' tpWordMap : word bitmap - read as UINT16, show as BOOL sValue = CType(value, UShort).ToString Case eDatatype.tpLongMap ' tpLongMap : long bitmap - read as UINT32, show as BOOL sValue = CType(value, UInteger).ToString Case eDatatype.tpLLong ' tpLLong : 64 bits integer long sValue = CType(value, Long).ToString Case eDatatype.tpByteLongMap ' tpByteLongMap : long bitmap - read as UINT32, show as BYTE sValue = CType(value, UInteger).ToString Case eDatatype.tpUnknown ' for flexium standard we receive No datatype .. we assume it is ???? bug ... we don't know ... sValue = value.ToString() Case Else sValue = String.Empty MsgBox("objDReadELS_ValueChanged3() : Unknown Datatype !") End Select Catch Ex As Exception MsgBox("objDReadELS_ValueChanged3 " & Ex.Message + " Handle : " + nHandle.ToString) End Try End Sub #End If #End Region #End Region #Region "-- FXServer -- DVariables EVENTS" Private Sub objDVariables_ValueChanged(vtArrayIndex As Object, vtArrayValues As Object) Handles objDVariables.ValueChanged2 Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValues If IsFlexiumPlus Then Exit Sub ' This event should not be used for Flexium plus as it returns wrong datatype .. (int instead of double for example) For n As Integer = 0 To index.Length - 1 Dim ni As Integer = CInt(index(n)) d_Dvariable_values(ni) = CDbl(CLng(values(n))) Next If b_axis_events_enable Then MyBase.OnNewVarChanged() End Sub Private Sub objDVariables_ValueChanged2(vtArrayIndex As Object, vtArrayValues As Object) Handles objDVariables.ValueChanged ' ' probabilmente evento non sparato nei flexium non plus..... ' End Sub Private Sub objDVariables_VariableWritten(nErrorCode As Short) Handles objDVariables.VariableWritten If (nErrorCode <> 0) Then MsgBox(" Error in objDVariables_VariableWritten2 : " & nErrorCode.ToString) Else ' mettere qualcosa per il completamento ok della scrittura b_Dvariable_changed = True End If End Sub Private Sub objDVariables_VariableWritten2(lHandle As Integer, nErrorCode As Short) Handles objDVariables.VariableWritten2 If (lHandle <> 2 Or nErrorCode <> 0) Then MsgBox(" Error in objDVariables_VariableWritten2 : " & nErrorCode.ToString + " Handle : " + lHandle.ToString) Else ' mettere qualcosa per il completamento ok della scrittura b_Dvariable_changed = True End If End Sub #End Region #Region "-- FXServer -- DPlcVariables EVENTS" 'Private Sub objDPlcVariables_AbortReadVariables() Handles objDPlcVariables.AbortReadVariables 'End Sub 'Private Sub objDPlcVariables_InvalidReadList(nErrorCode As Short) Handles objDPlcVariables.InvalidReadList 'End Sub 'Private Sub objDPlcVariables_ReadOnceInvalidReadList(lHandle As Integer, nErrorCode As Short) Handles objDPlcVariables.ReadOnceInvalidReadList 'End Sub Private Sub objDPlcVariables_ReadOnceVariablesChanged(lHandle As Integer, value As Object) Handles objDPlcVariables.ReadOnceVariablesChanged End Sub Private Sub objDPlcVariables_ReadVariablesChanged(vtArrayIndex As Object, vtArrayValues As Object) Handles objDPlcVariables.ReadVariablesChanged Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValues For n As Integer = 0 To index.Length - 1 Dim ni As Integer = CInt(index(n)) If ni >= m_nCnDataVarNum Then Continue For End If Select Case m_nCnDataVarInd(ni) Case CnData.Mode ' (0) modo 0:AUTO;1:SEQ;2:MDI;3:RAPIDO;4:SERCH;5:EDIT;6:TEST;7:MANUALE; nMachineMode = CInt(values(n)) Case CnData.JogIncr ' (1) Tipo man. 0:0.1 u; 1:1 u; 2:10 u; 3:100 u; 4:1 mm; 5:10 mm; 6:ILL; 8:HANDWEEL; 9:0.01 u; 10:0.001 u; ' ... Case CnData.Feed ' (2) 'd_DInterpo_Prog_Feed = CDbl(CLng(values(n))) ' d_DInterpo_Prog_Feed Case CnData.FeedOvr ' (3) Potenziom. Feed = * 0.47059 d_DInterpo_Feed_override = CDbl(CLng(values(n))) * 0.47059 b_feed_changed = True Case CnData.Speed ' (4) Speed d_spindle_eff(0) = CDbl(values(n)) Case CnData.SpeedOvr ' (5) Potenziom. speed = ... n_spindle_override(0) = CShort(Math.Round((CDbl(values(n)) * 50 / 255) + 50)) Case CnData.Power ' (6) Amp�re = * 0.01 d_spindle_power = CDbl(CLng(values(n))) * 0.01 b_spindle_power_changed = True Case CnData.Spindle ' (7) Stato rotazione mandrino bSpindleState = CBool(values(n)) Case CnData.Coolant ' (8) Stato acqua bCoolantState = CBool(values(n)) Case CnData.Laser ' (9) Stato laser punto bLaserState = CBool(values(n)) Case CnData.LaserTrac ' (46) Stato laser tracciatura bLaserTracState = CBool(values(n)) Case CnData.PowerOvr ' (10) valore assorbimento massimo mandrino con l'utensile corrente bPowerOvr = CDbl(values(n)) b_spindle_power_changed = True Case CnData.InternalCoolant ' (13) Stato acqua interna bInternalCoolantState = CBool(values(n)) Case CnData.ExternCoolant ' (14) Stato acqua esterna bExternCoolantState = CBool(values(n)) Case CnData.CBAxes ' (15) Stato ativazione assi c e b bCBAxesState = CBool(values(n)) Case CnData.AirBlow ' (16) Stato soffio utensile bAirBlowState = CBool(values(n)) Case CnData.Home ' (17) Stato home bHomeState = CBool(values(n)) Case CnData.TableUp ' (18) Stato tavolo su bTableUpState = CBool(values(n)) Case CnData.TableDown ' (19) Stato tavolo giu' bTableDownState = CBool(values(n)) Case CnData.DoorClosed ' (20) Stato porte nDoorClosedState = CInt(values(n)) Case CnData.LimitZ ' (21) Stato limitazione asse Z bLimitZState = CBool(values(n)) Case CnData.VacuumUp ' (22) Stato ventosa su' bVacuumUp = CBool(values(n)) Case CnData.VacuumDown ' (23) Stato ventosa giu' bVacuumDown = CBool(values(n)) Case CnData.Vacuum2Up ' (24) Stato ventosa2 su' bVacuum2Up = CBool(values(n)) Case CnData.Vacuum2Down ' (25) Stato ventosa2 giu' bVacuum2Down = CBool(values(n)) Case CnData.Vacuum1State ' (26) Stato ventosa 1 bVacuum1State = CBool(values(n)) Case CnData.Vacuum2State ' (27) Stato ventosa 2 bVacuum2State = CBool(values(n)) Case CnData.Vacuum3State ' (28) Stato ventosa 3 bVacuum3State = CBool(values(n)) Case CnData.Vacuum4State ' (29) Stato ventosa 4 bVacuum4State = CBool(values(n)) Case CnData.Vacuum5State ' (30) Stato ventosa 5 bVacuum5State = CBool(values(n)) Case CnData.Vacuum6State ' (31) Stato ventosa 6 bVacuum6State = CBool(values(n)) Case CnData.Vacuum135State ' (32) Stato ventose 135 bVacuum135State = CBool(values(n)) Case CnData.Vacuum246State ' (33) Stato ventose 246 bVacuum246State = CBool(values(n)) Case CnData.OpenAllState ' (34) Stato apertura ventose bOpenAllState = CBool(values(n)) Case CnData.CloseAllState ' (35) Stato chiusura ventose bCloseAllState = CBool(values(n)) Case CnData.Open123State ' (36) Stato apertura ventose bOpen123State = CBool(values(n)) Case CnData.Open456State ' (37) Stato apertura ventose bOpen456State = CBool(values(n)) Case CnData.Close123State ' (38) Stato chiusura ventose bClose123State = CBool(values(n)) Case CnData.Close456State ' (39) Stato chiusura ventose bClose456State = CBool(values(n)) Case CnData.BlowState ' (40) Stato soffio ventose bBlowState = CBool(values(n)) Case CnData.VacuumOn ' (41) Stato aspirazione ventose acceso bVacuumOn = CBool(values(n)) Case CnData.BypassState ' (42) Stato bypass bBypassState = CBool(values(n)) Case CnData.Vacuum0 ' (43) Stato rotazione ventosa 0 bVacuum0 = CBool(values(n)) Case CnData.Vacuum90 ' (44) Stato rotazione ventosa 0 bVacuum90 = CBool(values(n)) Case CnData.VacuumOff ' (45) Stato aspirazione ventose spento bVacuumOff = CBool(values(n)) Case CnData.XYJog ' (47) bXYJog = CBool(values(n)) Case CnData.ZCJog ' (48) bZCJog = CBool(values(n)) Case CnData.ZBJog ' (49) bZBCJog = CBool(values(n)) Case CnData.PowerON ' (50) bPowerON = CBool(values(n)) Case CnData.Remote ' (51) bRemote = CBool(values(n)) Case CnData.Parking ' (52) bParkingState = CBool(values(n)) Case CnData.EnableZone ' (53) nEnableZone = CInt(values(n)) Case CnData.EnablePC ' (54) nEnablePc = CInt(values(n)) Case CnData.CPos ' (57) dCPos = CDbl(values(n)) End Select Next End Sub Private Sub objDPlcVariables_Symbols(Name As Object, TypeId As Object, TypeName As Object, size As Object, Access As Object) Handles objDPlcVariables.Symbols End Sub 'Private Sub objDPlcVariables_VariablesWritten(nErrorCode As Integer) Handles objDPlcVariables.VariablesWritten 'End Sub Private Sub objDPlcVariables_VariablesWritten2(lHandle As Integer, nErrorCode As Integer) Handles objDPlcVariables.VariablesWritten2 End Sub #End Region #Region "-- FXServer -- DInterpo EVENTS" ' ' ' ------->> FXServer Event DInterpo MemorySize ' Private Sub objDInterpo_ValuesChanged(vtArrayValue As Object) Handles objDInterpo.ValuesChanged '0 = "Interpolation speed", 1= "Not used", 2 = "Distance to go", 3 = "Programmed feedrate", 4 = "Feed override [%]" Dim values() As Object values = vtArrayValue For n As Integer = 0 To values.Length - 1 d_DInterpo_values(n) = CDbl(CLng(values(n))) Next d_DInterpo_Prog_Feed = d_DInterpo_values(3) 'd_DInterpo_Feed_override = d_DInterpo_values(4) b_feed_changed = True End Sub #End Region #Region "-- FXServer -- DReadSpindleComplete EVENTS" ' ' ' ------->> FXServer Event DReadSpindleComplete ValueChanged ' Private Sub objDReadSpindleComplete_ValueChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDReadSpindleComplete.ValueChanged Dim n_spindle As Short, n_info As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n As Integer = 0 To index.Length - 1 n_spindle = CShort(index(n) \ 10) n_info = CShort(index(n) Mod 10) If (n_spindle > (MAX_VALUES - 1) Or n_info > 10) Then Exit For Select Case n_info Case 2 ' % override 'n_spindle_override(n_spindle) = CShort(values(n)) Case 3 ' prog speed d_spindle_prog(n_spindle) = CDbl(values(n)) Case 4 ' meas. speed d_spindle_eff(n_spindle) = CDbl(values(n)) Case Else End Select Next b_spindle_data_changed = True End Sub #End Region #Region "-- FXServer -- DTool EVENTS" ' ' ' ------->> FXServer Event DTool ToolDataChanged ' Private Sub objDTool_ToolDataChanged(vtArrayIndex As Object, vtArrayValue As Object) Handles objDTool.ToolDataChanged ' Read the change of the Tools data Dim n_tool As Short, n_data As Short, l_value As Long, nt As Short Dim index() As Object Dim values() As Object index = vtArrayIndex values = vtArrayValue For n As Integer = 0 To index.Length - 1 Try n_tool = CShort(index(n) \ 10) n_data = CShort(index(n) Mod 10) nt = n_tool - n_dTool_range_start l_value = CLng(values(n)) If (n_tool < n_dTool_range_start Or n_tool > n_dTool_range_stop Or n_data > 7) Then Continue For Select Case n_data Case 0 ' Tool type ( Mill / lathe ) If l_value = 0 Then Tools(nt).type = "M"c Else Tools(nt).type = "L"c End If Case 1 ' lenght / X Tools(nt).lenght = CDbl(l_value) / 1000.0 Case 2 ' radius / Z Tools(nt).radius = CDbl(l_value) / 1000.0 Case 3 ' Cut radius / Cut tip Tools(nt).tip = CDbl(l_value) / 1000.0 Case 4 ' D lenght Tools(nt).D_lenght = CDbl(l_value) / 1000.0 Case 5 ' D_radius Tools(nt).D_radius = CDbl(l_value) / 1000.0 Case 6 ' nose dir Tools(nt).nose_dir = "C" & (l_value).ToString Case 7 ' toolcom Tools(nt).comp_num = CShort(l_value) Case Else End Select Catch ex As Exception MsgBox(" Error in objDTool_ToolDataChanged : " & ex.Message) End Try Next b_Tool_data_changed = True End Sub ' ' ' ------->> FXServer Event DTool ToolDataWritten ' Private Sub objDTool_ToolDataWritten(l_Handle As Integer, n_error_code As Short) Handles objDTool.ToolDataWritten If l_Handle <> 1 Or n_error_code <> 0 Then MessageBox.Show("Error: objDTool_ToolDataWritten handle : " & l_Handle.ToString & " error : " & n_error_code.ToString()) End If End Sub ' ' ' ------->> FXServer Event DTool DynamicToolDataWritten ' Private Sub objDTool_DynamicToolDataWritten(l_Handle As Integer, n_error_code As Short) Handles objDTool.DynamicToolDataWritten If l_Handle <> 2 Or n_error_code <> 0 Then MessageBox.Show("Error: objDTool_DynamicToolDataWritten handle : " & l_Handle.ToString & " error : " & n_error_code.ToString()) End If End Sub #End Region #Region "-- FXServer -- DFunctionsG EVENTS" ' ' ------->> FXServer Event DFunctionsG GFunctionsChanged Private Sub objDFunctionsG_GFunctionsChanged(vtArrayValue As Object) Handles objDFunctionsG.GFunctionsChanged ' Read the change of the G codes Dim values() As Object values = vtArrayValue l_Gcodes_1 = CULng(values(0)) l_Gcodes_2 = CULng(values(1)) l_current_Gcodes = CULng(values(2)) End Sub #End Region #Region "-- FXServer -- DNumDirectory EVENTS" ' ' ' ------->> FXServer Event DNumDirectory MemorySize ' Private Sub objDNumDirectory_MemorySize(vtArrayIndex As Object, vtArrayValue As Object) Handles objDNumDirectory.MemorySize End Sub #End Region #Region "-- FXServer -- DMdiCommand EVENTS" ' ------->> FXServer Event DMdiCommand CommandWritten Private Sub objDMdiCommand_CommandWritten(nErrorcode As Short) Handles objDMdiCommand.CommandWritten bSetModeDone = True nSetModeResult = nErrorcode sz_ManualDataInput = "" 'Azzero stringa MDI End Sub #End Region #Region "-- FXLog -- ErrorHandler EVENTS" ' ' ' ------->> FXLog Event ErrorHandler ErrorOnCnc ..... ' Private Sub objErrorHandler_ErrorOnCnc(cnc As Short, channel As Short, nset As Short) Handles objErrorHandler.ErrorOnCnc ' AplCncNumber.Add(cnc) ' AplChannel.Add(channel) ' AplSet.Add(nset) End Sub Private Sub objErrorHandler_ErrorOnOtherChannel(status As Short) Handles objErrorHandler.ErrorOnOtherChannel AplStatus = status End Sub Private Sub objErrorHandler_Exception(status As Short) Handles objErrorHandler.Exception ExceptStatus = status End Sub Private Sub objErrorHandler_ErrorFromActiveCnc2 _ (CncNumber As Short, numberOfError As Short, ErrorTyp As Object, ErrorIndex As Object, ErrorNumber As Object, ErrorLine As Object, ErrorMessage As Object, ErrorAdditional As Object) _ Handles objErrorHandler.ErrorFromActiveCnc2 Dim vErrorType(0 To 10) As Object Dim vErrorIndex(0 To 10) As Object Dim vErrorNumber(0 To 10) As Object Dim vNumberError As Object Dim vExtNumberError As Object = Nothing Dim vErrorLine(0 To 10) As Object ' Dim vErrorMessage(0 To 10) As Object Dim vErrorAdditional(0 To 10) As Object Dim sMessaggio As String 'Dim sMessaggio1 As String Dim i As Integer 'Dim nLinee As Integer Dim ClassPLCMsg As Object b_PLC_error = False b_NC_error = False SyncLock Me sz_NC_error_messages.Clear() End SyncLock If numberOfError <> 0 Then For i = 0 To (numberOfError - 1) vErrorIndex(i) = ErrorIndex(i) ' CNmsg indica il Chx , DriveError e Drive Warning indica ind @ asse vErrorType(i) = ErrorTyp(i) 'Tipo errore vErrorNumber(i) = Str(ErrorNumber(i)) 'CNC msg : Numero errore vErrorLine(i) = Str(ErrorLine(i)) 'Linea ISO ' vErrorMessage(i) = ErrorMessage(i) 'Testo messaggio CNC 'inizializzo biserrormessage bIsErrorMessage = False Select Case vErrorType(i) Case 0 'CNC boot message 'sMessaggio = objSystemFunctions.GetSysErrorText(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "Boot: " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 1 'CNC sys warning sMessaggio = "All.Sys: " & vErrorNumber(i) & " " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 2 'CNC msg vNumberError = vErrorNumber(i) And &HFFFF If IsFlexiumPlus Then vExtNumberError = (vNumberError And &HFFFF0000) / 2 ^ 16 ' mettere sotto ..............!!!!!! End If If Not IsFlexiumPlus Then ' Flexium 6 / 68 NCK If vErrorLine(i) = 0 Then sMessaggio = "CN: " & vNumberError & " " & " " & ErrorMessage(i) Else sMessaggio = "CN: " & vNumberError & " N" & vErrorLine(i) & " " & ErrorMessage(i) End If Else ' Flexium 6+ / 68+ NCK ???????????????????? da verificare ????????????????????????????? If vErrorLine(i) = 0 And vErrorAdditional(i) = 0 Then sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " " & ErrorMessage(i) ElseIf vErrorLine(i) = 0 And vErrorAdditional(i) <> 0 Then sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " L" & vErrorAdditional(i) & ErrorMessage(i) ElseIf vErrorLine(i) <> 0 And vErrorAdditional(i) = 0 Then sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " N" & vErrorLine(i) & " " & ErrorMessage(i) Else sMessaggio = "CN: " & vNumberError & " Ext" & vExtNumberError & " N" & vErrorLine(i) & " L" & vErrorAdditional(i) & ErrorMessage(i) End If End If 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 3 'Drive Error vNumberError = vErrorNumber(i) And &HFFFF0000 vNumberError = vNumberError / 2 ^ 16 vExtNumberError = vErrorNumber(i) - (vNumberError * 2 ^ 16) '--> vNumberError(i) AND &hFFFF sMessaggio = "Azionamento: " & "Asse " & vErrorIndex(i) & " Errore: " & vNumberError & " Ext " & vExtNumberError & " " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 5 'Communication Message 'sMessaggio = objFXLib_SystemFunctions.GetUniteError(vNumberError) ' Recupero il testo del messaggio ???? sMessaggio = "COMM: " & vErrorNumber(i) & " " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 6, 7, 8, 9, 10, 11, 12, 13 'PLC msg Reaction Class 1->8 ClassPLCMsg = vErrorType(i) - 5 sMessaggio = "PLC: " & vErrorNumber(i) & " Classe: " & ClassPLCMsg & " " & ErrorMessage(i) ' Recupero 1'riga del testo del messaggio in ../Language/xx/... 'For nLinee = 1 To 10 ' verifico se ho altre righe di testo 'sMessaggio1 = objSystemFunctions.GetPlcErrorText(vErrorNumber(i), nLinee) 'If sMessaggio1 = "" Then 'Exit For 'End If ' sz_NC_error_messages.Add(sMessaggio) ' sMessaggio = sMessaggio1 ' Next nLinee 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 20 'HMI msg 'sMessaggio = objSystemFunctions.GetHmiMessageText(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "HMI: " & vErrorNumber(i) & " " & ErrorMessage(i) bIsErrorMessage = False Case 21 'User msg 'sMessaggio = objSystemFunctions.GetUserMessageText(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "User: " & vErrorNumber(i) & " " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case 22 'RTS msg ' sMessaggio = objSystemFunctions.GetRunTimeSystemError(vErrorNumber(i)) ' Recupero il testo del messaggio ???? sMessaggio = "RTS: " & vErrorNumber(i) & " " & ErrorMessage(i) bIsErrorMessage = True Case 23 'Drive Warning sMessaggio = "Azionamento: " & "Asse " & vErrorIndex(i) & " Avviso: " & vErrorNumber(i) & ": " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If Case Else sMessaggio = "Type ??: " & vErrorNumber(i) & " " & ErrorMessage(i) 'imposto flag errore, non messaggio generico If Not bIsErrorMessage Then bIsErrorMessage = True End If End Select SyncLock Me sz_NC_error_messages.Add(sMessaggio) End SyncLock Next i b_NC_error = True End If End Sub #End Region #Region "-- FXLib -- SystemFunctions EVENTS" ' ' ' ------->> FXLib Event SystemFunctions LanguageData ' Private Sub objSystemFunctions_LanguageData(index As Short, shortName As String, languageName As String) Handles objSystemFunctions.LanguageData End Sub #End Region #Region "-- FXLib -- CncState EVENTS" ' ' ' ------->> FXLib Event CncState ConfigUpdated .... ' Private Sub objCncState_ConfigUpdated() Handles objCncState.ConfigUpdated End Sub Private Sub objCncState_ValueChanged(nc As Short, Variable As String, value As Integer) Handles objCncState.ValueChanged End Sub Private Sub objCncState_NotHomed(nc As Short, value As Integer) Handles objCncState.NotHomed End Sub Private Sub objCncState_IndependentChannels(nc As Short, indep As Short) Handles objCncState.IndependentChannels End Sub Private Sub objCncState_HMIValueChange(var As String, value As Integer) Handles objCncState.HMIValueChange End Sub #End Region #End Region #Region " Metodi pubblici" Public Overrides Function Stop_Connection() As Boolean Return True End Function Public Overrides Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short) Dim nRet As Int16 = objDReadELS.AddParameter(sz_var, n_par) End Sub ' ' ' call DVariables_WriteVariables("E80000;E80001" , "1;2" ) Public Overrides Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String) Dim Valus As Object = sz_values Dim n_ret As Short n_ret = objDVariables.WriteVariables(objDGroupManager.Handle, sz_parameters, Valus) End Sub Public Overrides Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String) Dim Valus As Object = sz_values objDVariables.WriteVariables2(2, objDGroupManager.Handle, sz_parameters, Valus) End Sub Public Overrides Sub DPlcVariables_WriteVariables(sz_var_names As String, sz_values As String) Dim value As Short = 0 If Not Short.TryParse(sz_values, value) Then If Not IsNothing( sz_values) then EgtOutLog("Write variable: " & sz_var_names & ", value:" & sz_values & " failed!") Else EgtOutLog("Write variable: " & sz_var_names & ", value:nothing failed!") End If Return End If Dim _ret As Short = objDPlcVariables.WriteVariables(sz_var_names, value) If _ret <> 0 Then EgtOutLog("Scrittura " & sz_var_names & " fallita") Else EgtOutLog("Scrittura " & sz_var_names & " riuscita") End If End Sub '' Funzione che legge una variabile dal CN 'Public Function DVariables_ReadOnce(VariableName As String, ByRef Value As Int16) As Boolean ' Dim nRet As Integer = objDVariables.ReadOnce(2, objDGroupManager.Handle, VariableName, 1) ' Return If(nRet <> 0, True, False) 'End Function Public Overrides Function MDI_command() As Short Dim nTimeOut As Integer = 0 bSetModeDone = False Dim n_ret As Int16 = objDMdiCommand.ExecuteCommand(sz_ManualDataInput) If n_ret <> 0 Then EgtOutLog("Error Execute MDI Command : " + n_ret.ToString()) Return n_ret End If While Not bSetModeDone And nTimeOut < SHORTSLEEPCOUNT System.Threading.Thread.Sleep(SHORTSLEEPTIME) nTimeOut += 1 End While If Not bSetModeDone Then EgtOutLog("Errore eseguo comando MDI: " & TIMEOUT) Return TIMEOUT 'Errore di timeout End If If nSetModeResult <> 0 Then EgtOutLog("Errore 2 eseguo comando MDI: " & nSetModeResult) End If Return nSetModeResult End Function ' ' Activate program ' returns 0 = OK ; > 0 error ' Public Overrides Function ActivateProgram(n_part_program As Integer) As Int16 Dim l_glbPartProgramNumber As Long, n_ret As Short l_glbPartProgramNumber = Convert.ToInt32(n_part_program) l_glbPartProgramNumber = l_glbPartProgramNumber * 10 n_ret = objDGeneralFunctions.ActivateProgram(l_glbPartProgramNumber, 0) If n_ret <> 0 Then EgtOutLog("Error: ActivateProgram error : " + n_ret.ToString()) Return n_ret End If Return n_ret End Function ' ' Set DPOsition Mode OP/OM ' Public Overrides Sub set_OP_OM(n As Short) objDPosition.ModeOP = n objDPosition.FireValues() End Sub ' ' Read Once position ' returns 0 = OK ; > 0 error ' Public Overrides Function DPOsition_ReadOnce() As Int16 Return objDPosition.ReadOnce(1, objDGroupManager.Handle, objDPosition.ModeOP) End Function ' ' Set Cycle Start ' Public Overrides Function DGeneralFunctions_CycleStart() As Int16 objDGeneralFunctions.CncStart() Return 0 End Function ' ' Set Feed Hold ' Public Overrides Function DGeneralFunctions_FeedHold() As Int16 objDGeneralFunctions.CncStop() Return 0 End Function ' ' Set NC Reset ' Public Overrides Function DGeneralFunctions_Reset() As Int16 objDGeneralFunctions.CncReset() Return 0 End Function Public Overrides Function DGeneralFunctions_WriteCncMode(nmode As Short) As Int16 Dim nHandle As Integer = 57 'Numero a caso Dim ngroup0 As Short = 0 Dim nTimeOut As Integer = 0 bSetModeDone = False ' ' Per prima versione FLEXIUM (3.5.040 - 2013) ' EgtOutLog("Scrittura modalità (" & nmode.ToString & ")") ' objDGeneralFunctions.WriteCncMode(nmode, ngroup0) ' Return 0 ' Per ultime versioni FLEXIUM objDGeneralFunctions.WriteCncMode2(nHandle, nmode, ngroup0) While Not bSetModeDone And nTimeOut < SHORTSLEEPCOUNT System.Threading.Thread.Sleep(SHORTSLEEPTIME) nTimeOut += 1 End While If Not bSetModeDone Then EgtOutLog("Errore cambio modalità in MDI: " & TIMEOUT) Return TIMEOUT 'Errore di timeout End If If nSetModeResult <> 0 Then EgtOutLog("Errore 2 cambio modalità in MDI: " & nSetModeResult) End If Return nSetModeResult End Function Public Overrides Function Write_var_1(sz_par As String, lvalue As Long) As Int16 Dim n_ret As Short n_ret = objDGeneralFunctions.WriteVariable(sz_par, lvalue) If n_ret <> 0 Then EgtOutLog("error from objDGeneralFunctions.WriteVariable" & n_ret.ToString) End If Return n_ret End Function ' ' da PC a CN ' Public Overrides Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 Dim n_ret As Short Dim n_FileDelete As Short = 1, n_IgnoreMsgZone As Short = 0 Dim lHandle As Long = 10 ' ?? n_ret = objDFileTransfer.FileDownload2(lHandle, sz_NC_filename, sz_PC_filename, "", n_FileDelete, n_IgnoreMsgZone) If n_ret <> 0 Then EgtOutLog("Error: FileDownload2 error : " + n_ret.ToString()) Return n_ret End If Return Manage_Transfer_NC_prog() End Function ' ' da CN a pc ' Public Overrides Function Upload_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16 Dim n_ret As Short Dim lHandle As Long = 20 ' ?? n_ret = objDFileTransfer.FileUpload(lHandle, sz_NC_filename, sz_PC_filename, "") If n_ret <> 0 Then EgtOutLog("Error: FileUpload error : " & n_ret.ToString()) Return n_ret End If Return Manage_Transfer_NC_prog() End Function Public Overrides Function Delete_NC_prog(sz_NC_filename As String) As Int16 Dim n_ret As Short Dim lHandle As Long = 20 ' ?? n_ret = objDFileTransfer.FileDelete(lHandle, sz_NC_filename, "") If n_ret <> 0 Then EgtOutLog("Error: FileDelete error : " & n_ret.ToString()) Return n_ret End If Return Manage_Transfer_NC_prog() End Function Private Function Manage_Transfer_NC_prog() As Int16 Dim nTimeOut As Integer = 0 Dim n_ret As Short bSetModeDone = False bDownloadFailed = False nDownloadErrorSeq = 0 nDownloadErrorReason = 0 n_ret = objDFileTransfer.StartTransfer() If n_ret <> 0 Then EgtOutLog("Error: StartTransfer error : " + n_ret.ToString()) Return n_ret End If While Not bDownloadFailed And nTimeOut < LONGSLEEPCOUNT And Not bSetModeDone If bBytesTransfer Then nTimeOut = 0 bBytesTransfer = False End If System.Threading.Thread.Sleep(LONGSLEEPTIME) nTimeOut += 1 End While If bDownloadFailed Then EgtOutLog("Errore download file: " & nDownloadErrorSeq & " " & nDownloadErrorReason) Return nDownloadErrorSeq End If If nTimeOut >= LONGSLEEPCOUNT Then EgtOutLog("Errore download file: Timeout") Return nDownloadErrorSeq End If Return nDownloadErrorSeq End Function Public Overrides Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short Dim n_ret As Short n_dTool_range_start = n_start n_dTool_range_stop = n_stop n_ret = objDTool.SetToolRange(n_start, n_stop) If n_ret <> 0 Then EgtOutLog("Error: DTool_set_red_range error : " & n_ret.ToString()) End If Return n_ret End Function Public Overrides Function DTool_write_tool(n_tool_number As Short, Length_X As Double, Radius As Double, TipRadius_Z As Double, DLength_X As Double, DTipRadius_Z As Double, nDirection As Short, nType As Short, nH As Integer) As Short Dim n_ret As Short, l_handle As Long = 1 n_ret = objDTool.WriteToolCorr2(n_tool_number, (Length_X * 1000.0), (Radius * 1000.0), (TipRadius_Z * 1000.0), (DLength_X * 1000.0), (DTipRadius_Z * 1000.0), nDirection, nType, nH, objDTool.Flag, l_handle) If n_ret <> 0 Then EgtOutLog("Error: DTool_write_tool error : " & n_ret.ToString()) End If Return n_ret End Function Public Overrides Function Is_G24_active() As Boolean Return ((l_Gcodes_2 And &H800000) <> 0) End Function Public Overrides Function Is_G26_active() As Boolean Return ((l_Gcodes_2 And &H100) <> 0) End Function Public Overrides Function Is_G71_active() As Boolean Return ((l_Gcodes_2 And &H40) <> 0) End Function #End Region End Class End Namespace