Files
OmagCUT/NcComm/CN_generico.vb
Dario Sassi 908cc381db OmagCUT :
- con Fanuc SpecialSend aggiunta possibilità di configurazione del direttorio destinazione da INI macchina.
2025-10-29 12:23:09 +01:00

421 lines
13 KiB
VB.net

Imports System.Collections.ObjectModel
Public MustInherit Class CN_generico
#Region " Constants"
Public Const MAX_AXES As Short = 10
Public Const MAX_VAR As Short = 100
Public Const MAX_VALUES As Short = 9 ' Max. index to read the data from the FXServer array
Public Const MAX_TOOLS As Short = 100
Public Const NUM_DATA = 58 ' Numero di dati del CN (Speed,Feed,...)
Public m_NewVariable As Boolean = False ' per scrittura delle vairbaili Apllication del PLC
Public Enum CnData
Mode = 0
JogIncr = 1
Feed = 2
FeedOvr = 3
Speed = 4
SpeedOvr = 5
Power = 6
Spindle = 7
Coolant = 8
Laser = 9
PowerOvr = 10
Comm = 11
Refresh = 12
InternalCoolant = 13
ExternCoolant = 14
CBAxes = 15
AirBlow = 16
Home = 17
TableUp = 18
TableDown = 19
DoorClosed = 20
LimitZ = 21
VacuumUp = 22
VacuumDown = 23
Vacuum2Up = 24
Vacuum2Down = 25
Vacuum1State = 26
Vacuum2State = 27
Vacuum3State = 28
Vacuum4State = 29
Vacuum5State = 30
Vacuum6State = 31
Vacuum135State = 32
Vacuum246State = 33
OpenAllState = 34
CloseAllState = 35
Open123State = 36
Open456State = 37
Close123State = 38
Close456State = 39
BlowState = 40
VacuumOn = 41
BypassState = 42
Vacuum0 = 43
Vacuum90 = 44
VacuumOff = 45
LaserTrac = 46
XYJog = 47
ZCJog = 48
ZBJog = 49
PowerON = 50
Remote = 51
Parking = 52
EnableZone = 53
EnablePC = 54
nAxes = 55
ResetStatus = 56
CPos = 57
End Enum
Public Enum Type As Short
TBoolean = 0
TInteger = 1
TLong = 2
TDouble = 3
TString = 4
End Enum
#End Region
#Region " Struct"
Public Structure ToolStructure
Public type As Char
Public lenght As Double
Public radius As Double
Public tip As Double
Public D_lenght As Double
Public D_radius As Double
Public nose_dir As String
Public comp_num As Short
End Structure
#End Region
#Region " Interface"
Friend m_IsSiemensOne As Boolean = False
Friend m_IsActiveModeSubscription As Boolean = False
Friend m_DbVarPath As String = ""
Public IsFlexiumPlus As Boolean = False
Public sz_CncFxIdentifier As String = ""
Public d_LinearAxisPrecision As Double
Public d_RotaryAxisPrecision As Double
Public sz_ServerInitStatus As String
Public sz_ServerReinitStatus As String
Public sz_ManualDataInput As String
Public sz_versionRTS As String
Public sz_ConnectionAddress As String
Public sz_AffaireNumber As String
Public n_state As Short = 0
Public n_validaxes As Short
Public b_axis_events_enable As Boolean = False
Public d_axis_position(MAX_AXES) As Double
Public d_axis_delta(MAX_AXES) As Double
Public b_axis_valid(MAX_AXES) As Boolean
' ver. 2.7h2: gestione del tipo di asse per eseguire una corretta conversione dei dati inch/mm
Public b_axis_is_linear(MAX_AXES) As Boolean
Public d_DReadELS_value As Double
Public n_DReadELS_handle As Short
' variabili lettura e scrittura generiche
Public sz_interf_error_message As String ' eventuale messaggio di errore
Public n_param1 As Integer
Public l_param1 As Long
Public d_param1 As Double
Public sz_string As String ' ( MAX 200 caratteri )
' Indice del vettore n_data associato alla lettura nMode
Public n_index_mode As Integer = 0
Public n_index_is_G24_active As Integer = 0
Public b_data(14) As Boolean
Public n_data(14) As Int16
Public l_data(14) As Long
Public d_data(14) As Double
Public sz_spare_data As String
Public d_Dvariable_values(MAX_VAR) As Double
Public b_Dvariable_changed As Boolean = False
Public d_DInterpo_values(MAX_AXES) As Double
Public d_DInterpo_Prog_Feed As Double
Public d_DInterpo_Feed_override As Double
Public l_channel_override(MAX_VALUES) As Long
Public b_feed_changed As Boolean = False
Public n_activate_error_code As Short
Public d_spindle_prog(MAX_VALUES) As Double
Public d_spindle_eff(MAX_VALUES) As Double
Public n_spindle_override(MAX_VALUES) As Short
Public b_spindle_data_changed As Boolean = False
Public d_spindle_power As Double
Public b_spindle_power_changed As Boolean = False
Public Tools(MAX_TOOLS) As ToolStructure
Public b_Tool_data_changed As Boolean = False
Public sz_PLC_error_messages As String
Public sz_NC_error_messages As List(Of String)
Public b_PLC_error As Boolean
Public b_NC_error As Boolean
Public bIsErrorMessage As Boolean = True
Public bSpindleState As Boolean
Public bLaserState As Boolean
Public bLaserTracState As Boolean
Public bCoolantState As Boolean
Public bInternalCoolantState As Boolean
Public bExternCoolantState As Boolean
Public bCBAxesState As Boolean
Public b5AxesState As Boolean
Public bAirBlowState As Boolean
Public bHomeState As Boolean
Public bTableUpState As Boolean
Public bTableDownState As Boolean
Public nDoorClosedState As Integer
Public bLimitZState As Boolean
Public bPowerOvr As Double
Public bParkingState As Boolean
Public nEnableZone As Integer
Public nEnablePc As Integer
Public bHsm As Double
Public bVacuumUp As Boolean
Public bVacuumDown As Boolean
Public bVacuum2Up As Boolean
Public bVacuum2Down As Boolean
Public bVacuum0 As Boolean
Public bVacuum90 As Boolean
Public bVacuum1State As Boolean
Public bVacuum2State As Boolean
Public bVacuum3State As Boolean
Public bVacuum4State As Boolean
Public bVacuum5State As Boolean
Public bVacuum6State As Boolean
Public bVacuum135State As Boolean
Public bVacuum246State As Boolean
Public bOpenAllState As Boolean
Public bCloseAllState As Boolean
Public bOpen123State As Boolean
Public bOpen456State As Boolean
Public bClose123State As Boolean
Public bClose456State As Boolean
Public bBlowState As Boolean
Public bVacuumOn As Boolean
Public bVacuumOff As Boolean
Public bBypassState As Boolean
Public bResetState As Boolean
Public bFeedHold As Boolean
Public bSpeedHold As Boolean
' Nuovi di bottoni -------------------------------------------
Public bXYJog As Boolean
Public bZCJog As Boolean
Public bZBCJog As Boolean
Public bPowerON As Boolean
Public bRemote As Boolean
' Nuovi di bottoni -------------------------------------------
' gestione speciale asse C
Public bCPos As Boolean = False
Public dCPos As Double
' solo per NumOld
Public bIsDripFeed As Boolean = False
' usato nel FANUC per leggere lo stato macchina se 5 assi attivo
Public b5AxesActive As Boolean
Public nMachineMode As Integer
Public m_szCnDataVar(NUM_DATA - 1) As String
'
' nuovi dal 29-III-2023 per Fanuc
'
Public n_Base_addr_int_vars As Integer = 59800
Public n_Base_addr_byte_for_bits_vars As Integer = 59820
Public n_num_var_int_to_read As Short = 10
Public n_num_var_byte_for_bits_to_read As Short = 30
Public s_addr_set_nc_mode As String = "D59825"
Public s_addr_feedhold As String = "D59850.6"
'
' Eventi
'
Public Event NewPositionData(ByVal sender As Object)
Public Event NewPosDeltaData(ByVal sender As Object)
Public Event NewVarChanged(ByVal sender As Object)
Protected Overridable Sub OnNewPositionData()
RaiseEvent NewPositionData(0)
End Sub
Protected Overridable Sub OnNewPosDeltaData()
RaiseEvent NewPosDeltaData(0)
End Sub
Protected Overridable Sub OnNewVarChanged()
RaiseEvent NewVarChanged(0)
End Sub
#End Region
#Region " Metodi pubblici"
Public MustOverride Function Init() As Boolean
Public MustOverride Function Stop_Connection() As Boolean
Public MustOverride Sub ReadEls_Add_Parameter(sz_var As String, n_par As Short)
Public MustOverride Sub DVariables_WriteVariables(sz_parameters As String, sz_values As String)
Public MustOverride Sub DVariables_WriteVariables2(sz_parameters As String, sz_values As String)
Public Overridable Sub DVariables_WriteVariables3(VarAddr As String, ParType As Short, nVarValue As Integer, lVarValue As Long, dVarValue As Double, sVarValue As String)
End Sub
Public Overridable Sub DPlcVariables_WriteVariables(sz_parameters As String, sz_values As String)
End Sub
Public Overridable Sub Read_Variable(VarAddr As String, ParType As Integer, ByRef nVarValue As Integer, ByRef lVarValue As Long, ByRef dVarValue As Double, ByRef sVarValue As String)
End Sub
Public Overridable Sub DVariables_Read_Subscription(VarAddr As String, ParType As Short, Index As Integer)
End Sub
Public MustOverride Function MDI_command() As Short
Public Overridable Function New_MDI_command(nChannel As Integer) As Short
Return 0
End Function
Public MustOverride Function ActivateProgram(n_part_program As Integer) As Int16
Public MustOverride Sub set_OP_OM(n As Short)
Public MustOverride Function DPOsition_ReadOnce() As Short
Public MustOverride Function DGeneralFunctions_CycleStart() As Int16
Public MustOverride Function DGeneralFunctions_FeedHold() As Int16
Public MustOverride Function DGeneralFunctions_Reset() As Int16
Public MustOverride Function DGeneralFunctions_WriteCncMode(nmode As Short) As Int16
Public MustOverride Function Write_var_1(sz_par As String, lvalue As Long) As Int16
Public MustOverride Function Download_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16
Public Overridable Function Download2_NC_prog(sz_PC_filename As String, sz_NC_Dir As String, sz_NC_filename As String) As Int16
Return -1
End Function
Public MustOverride Function Upload_NC_prog(sz_PC_filename As String, sz_NC_filename As String) As Int16
Public MustOverride Function Delete_NC_prog(sz_NC_filename As String) As Int16
Public MustOverride Function DTool_set_read_range(n_start As Short, n_stop As Short) As Short
Public MustOverride 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
Public Overridable Function SetProgramMainOrSub(bMain As Boolean) As Boolean
Return True
End Function
Public Overridable Function get_free_memory(n_zone As Int16) As Long
Return 0
End Function
Public Overridable Function read_active_mode() As Int16
Return 0
End Function
Public Overridable Function get_program_status() As Int16
Return 0
End Function
Public Overridable Function get_plc_messages() As Int16
Return 0
End Function
Public Overridable Function Is_G24_active() As Boolean
Return False
End Function
Public Overridable Function Is_G26_active() As Boolean
Return False
End Function
Public Overridable Function Is_G71_active() As Boolean
Return False
End Function
Public Overridable Function VerifyAxis(ByRef nAx As Integer) As Boolean
Return (nAx >= 0 And nAx <= MAX_AXES)
End Function
Public Function SetCnDataVar(nId As CnData, sVal As String) As Boolean
m_szCnDataVar(nId) = sVal
Return True
End Function
#End Region
#Region " Nuovi metodi pubblici"
Public Overridable Function NC_read_var_short(VarAddr As String, ByRef value As Short) As Boolean
Return False
End Function
Public Overridable Function NC_read_var_short_range(VarStartAddr As String, VarEndAddr As String, ByRef values() As Short) As Boolean
Return False
End Function
Public Overridable Function NC_write_var_short(VarAddr As String, ByRef value As Short) As Boolean
Return False
End Function
Public Overridable Function NC_read_var_bit(VarAddr As String, ByRef value As Boolean) As Boolean
Return False
End Function
Public Overridable Function NC_write_var_bit(VarAddr As String, ByRef value As Boolean) As Boolean
Return False
End Function
Public Overridable Function NC_pulse_bit(VarAddr As String) As Boolean
Return False
End Function
Public Overridable Function Geppo() As Boolean
Return False
End Function
#End Region
End Class