287 lines
8.6 KiB
VB.net
287 lines
8.6 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.Text
|
|
Imports EgtUILib
|
|
|
|
Public Class CN_Siemens
|
|
|
|
Inherits CN_generico
|
|
|
|
#Region "ENUM States and Local Constants"
|
|
|
|
Enum eCnMode As Short
|
|
AutoM = 0
|
|
SingleM = 1
|
|
MDI = 2
|
|
Manual = 7
|
|
End Enum
|
|
|
|
Const RETURN_OK As Short = 0
|
|
Const RETURN_BAD As Short = 1
|
|
|
|
#End Region
|
|
|
|
'---------------------------------------------------------------------------------------------
|
|
|
|
Sub New()
|
|
|
|
sz_NC_error_messages = New List(Of String)
|
|
|
|
End Sub
|
|
|
|
Public Overrides Function Init() As Boolean
|
|
|
|
Call M_MMFiles.init()
|
|
|
|
Return True
|
|
|
|
End Function
|
|
|
|
Public Overrides Function Stop_Connection() As Boolean
|
|
|
|
Return M_MMFiles.Stop_Connection
|
|
|
|
End Function
|
|
|
|
Public Overrides Function ActivateProgram(n_part_program As Integer) As Short
|
|
|
|
Return M_MMFiles.ActivateProgram(n_part_program.ToString())
|
|
|
|
End Function
|
|
|
|
Public Overrides Function Delete_NC_prog(ByVal sz_filename As String) As Short
|
|
|
|
Return M_MMFiles.Delete_NC_prog(sz_filename)
|
|
|
|
End Function
|
|
|
|
Public Overrides Function DGeneralFunctions_CycleStart() As Short
|
|
|
|
Return M_MMFiles.CycleStart()
|
|
|
|
End Function
|
|
|
|
Public Overrides Function DGeneralFunctions_FeedHold() As Short
|
|
|
|
Return M_MMFiles.FeedHold()
|
|
|
|
End Function
|
|
|
|
Public Overrides Function DGeneralFunctions_Reset() As Short
|
|
|
|
Return M_MMFiles.Reset()
|
|
|
|
End Function
|
|
|
|
Public Overrides Function DGeneralFunctions_WriteCncMode(ByVal nmode As Short) As Short
|
|
If m_IsSiemensOne Then
|
|
Dim sDBVarPath As String = m_DbVarPath
|
|
Select Case nmode
|
|
Case 0 ' Modalità auto
|
|
sDBVarPath &= "AUTO"
|
|
Case 1 ' Modalita single block
|
|
sDBVarPath &= "SINGLE_BLOCK"
|
|
Case 2 ' Modalita MDI
|
|
sDBVarPath &= "MDI"
|
|
Case 7 ' Modalità manuale
|
|
sDBVarPath &= "JOG"
|
|
Case 8 ' Modalita Ref Point
|
|
sDBVarPath &= "REF_POINT"
|
|
End Select
|
|
' /plc/"OmagCUT_DB".CTRL.AUTO
|
|
DVariables_WriteVariables3(sDBVarPath, 1, 1, 0, 0, "")
|
|
Return 0
|
|
Else
|
|
Return M_MMFiles.WriteCncMode(nmode)
|
|
End If
|
|
End Function
|
|
|
|
Public Overrides Function Download_NC_prog(ByVal sz_Pc_file_name As String, ByVal sz_NC_filen As String) As Short
|
|
|
|
Return M_MMFiles.Download_NC_prog(sz_Pc_file_name, sz_NC_filen)
|
|
|
|
End Function
|
|
|
|
Public Overrides Function SetProgramMainOrSub(bMain As Boolean) As Boolean
|
|
|
|
Dim szProgExt As String = If(bMain, "mpf", "spf")
|
|
Return M_MMFiles.SetProgramExt(szProgExt)
|
|
|
|
End Function
|
|
|
|
Public Overrides Function DPOsition_ReadOnce() As Short
|
|
|
|
Return RETURN_OK
|
|
|
|
End Function
|
|
|
|
Public Overrides Function MDI_command() As Short
|
|
Return M_MMFiles.MDI_command(sz_ManualDataInput)
|
|
End Function
|
|
|
|
Public Overrides Function New_MDI_command(nChannel As Integer) As Short
|
|
' aggiungo M30 alla fine per non farlo andare in stato stop
|
|
sz_ManualDataInput &= vbCrLf & " M30" & vbCrLf
|
|
Return M_MMFiles.NEWMDI_command(sz_ManualDataInput, nChannel)
|
|
End Function
|
|
|
|
Public Overrides Sub set_OP_OM(ByVal n As Short)
|
|
|
|
Call M_MMFiles.set_OP_OM(n)
|
|
|
|
End Sub
|
|
|
|
Public Overrides Function read_active_mode() As Short
|
|
'EgtOutLog("Modo attivo: " & M_MMFiles.SiemensRet.n_param2)
|
|
If m_IsSiemensOne Or m_IsActiveModeSubscription Then
|
|
Select Case n_data(n_index_mode)
|
|
Case 1
|
|
Return 0
|
|
Case 2
|
|
Return 2
|
|
Case 8
|
|
Return 7
|
|
Case Else
|
|
Return 0
|
|
End Select
|
|
Else
|
|
' per verificare che la comunicazione funzioni correttamente
|
|
' EgtOutLog("Modo -read_active_mode-: " & M_MMFiles.SiemensRet.n_param2.ToString)
|
|
Return M_MMFiles.read_active_mode()
|
|
'Return CShort(M_MMFiles.SiemensRet.n_param2)
|
|
End If
|
|
End Function
|
|
|
|
Public Overrides Function Is_G24_active() As Boolean
|
|
|
|
If m_IsSiemensOne Or m_IsActiveModeSubscription Then
|
|
Return b_data(n_index_is_G24_active)
|
|
|
|
Else
|
|
Return M_MMFiles.SiemensRet.b_interf_G24
|
|
End If
|
|
|
|
End Function
|
|
|
|
Public Overrides Function Is_G71_active() As Boolean
|
|
|
|
Return M_MMFiles.SiemensRet.b_interf_G71
|
|
|
|
End Function
|
|
|
|
Public Overrides Sub ReadEls_Add_Parameter(ByVal sz_var As String, ByVal n_par As Short)
|
|
|
|
Dim n_var As Short
|
|
If Not Short.TryParse(sz_var, n_var) Then Return
|
|
|
|
Dim n_ret As Short = M_MMFiles.Read_Nc_var(n_var)
|
|
If n_ret = RETURN_OK Then
|
|
n_DReadELS_handle = n_par
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overrides 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)
|
|
|
|
Dim n_ret As Short = M_MMFiles.Read_var(VarAddr, ParType)
|
|
If n_ret = RETURN_OK Then
|
|
Select Case ParType
|
|
Case VarType.TInteger
|
|
nVarValue = n_param1
|
|
Case VarType.TLong
|
|
lVarValue = l_param1
|
|
Case VarType.TDouble
|
|
dVarValue = d_param1
|
|
Case VarType.TString
|
|
sVarValue = sz_string
|
|
End Select
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Overrides Sub DVariables_WriteVariables(ByVal sz_parameters As String, ByVal sz_values As String)
|
|
End Sub
|
|
|
|
Public Overrides Sub DVariables_WriteVariables2(ByVal sz_parameters As String, ByVal sz_values As String)
|
|
|
|
Dim n_var As Short
|
|
If Not Short.TryParse(sz_parameters, n_var) Then Return
|
|
Dim n_value As Short
|
|
If Not Short.TryParse(sz_values, n_value) Then Return
|
|
|
|
Dim n_ret As Short = Write_Nc_var(n_var, n_value)
|
|
|
|
End Sub
|
|
|
|
Public Enum VarType As Short
|
|
TBoolean = 0
|
|
TInteger = 1
|
|
TLong = 2
|
|
TDouble = 3
|
|
TString = 4
|
|
End Enum
|
|
|
|
Public Overrides Sub DVariables_WriteVariables3(VarAddr As String, ParType As Short, nVarValue As Integer, lVarValue As Long, dVarValue As Double, sVarValue As String)
|
|
Dim n_ret As Short = Write_var(VarAddr, ParType, nVarValue, lVarValue, dVarValue, sVarValue)
|
|
'EgtOutLog("CN SIEMENS Dopo scrittura variabile")
|
|
End Sub
|
|
|
|
Public Overrides Sub DVariables_Read_Subscription(VarAddr As String, ParType As Short, Index As Integer)
|
|
' Ricevo il percorso della varibile, il tipo
|
|
Dim n_ret As Short = Read_subscription(VarAddr, ParType, Index)
|
|
EgtOutLog(" ABBONAMENTO (Esito: " & n_ret.ToString & ") -> Address: " & VarAddr & ", Type: " & ParType.ToString & ", Index: " & Index.ToString)
|
|
End Sub
|
|
|
|
'
|
|
'---------------------------------------------------------------------------------------------
|
|
' non necessarie....adesso .....
|
|
'
|
|
Public Overrides Function Write_var_1(ByVal sz_par As String, ByVal lvalue As Long) As Short
|
|
Return RETURN_OK
|
|
End Function
|
|
|
|
Public Overrides Function DTool_set_read_range(ByVal n_start As Short, ByVal n_stop As Short) As Short
|
|
' non necessaria
|
|
Return RETURN_OK
|
|
End Function
|
|
|
|
Public Overrides Function DTool_write_tool(ByVal n_tool_number As Short, ByVal Length_X As Double, ByVal Radius As Double, ByVal TipRadius_Z As Double, ByVal DLength_X As Double, ByVal DTipRadius_Z As Double, ByVal nDirection As Short, ByVal nType As Short, ByVal nH As Integer) As Short
|
|
' non necessaria
|
|
Return RETURN_OK
|
|
End Function
|
|
|
|
Public Overrides Function Upload_NC_prog(ByVal sz_PC_filename As String, ByVal sz_NC_filename As String) As Short
|
|
' non necessaria
|
|
Return 0
|
|
End Function
|
|
|
|
Public Overrides Function Is_G26_active() As Boolean
|
|
' non necessaria
|
|
Return False
|
|
End Function
|
|
|
|
Public Overrides Function get_free_memory(ByVal n_zone As Int16) As Long
|
|
' non necessaria
|
|
Return RETURN_OK
|
|
End Function
|
|
|
|
Public Overrides Function get_program_status() As Int16
|
|
Return RETURN_OK
|
|
End Function
|
|
|
|
Public Overrides Function get_plc_messages() As Int16
|
|
Return RETURN_OK
|
|
End Function
|
|
|
|
Public Overrides Function VerifyAxis(ByRef nAx As Integer) As Boolean
|
|
' Identificativo deve essere nei limiti previsti
|
|
If nAx < 0 Or nAx > M_MMFiles.MAX_AXIS_ID Then Return False
|
|
' Numero assi non deve superare il massimo
|
|
If M_MMFiles.m_Axes_Id.Count() > MAX_AXES Then Return False
|
|
' Assegno i dati
|
|
M_MMFiles.m_Axes_Id.Add(nAx)
|
|
nAx = M_MMFiles.m_Axes_Id.Count() - 1
|
|
Return True
|
|
End Function
|
|
|
|
End Class
|