c670ba4758
- gestito DeleteAll in DoorListPage - corretto id porte che riparte da 1 solo in caso di lista vuota - aggiunta gestione funzioni chiamabili da lua - corretta lettura variabili macchina booleane
185 lines
8.1 KiB
VB.net
185 lines
8.1 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.Windows.Threading
|
|
|
|
Public Class MachinePageVM
|
|
|
|
Private m_DoorOnMachineList As New ObservableCollection(Of Door)
|
|
Public ReadOnly Property DoorOnMachineList As ObservableCollection(Of Door)
|
|
Get
|
|
Return m_DoorOnMachineList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_VarTimer As New DispatcherTimer
|
|
|
|
Private m_VariableList As ObservableCollection(Of Variable)
|
|
Public ReadOnly Property VariableList As ObservableCollection(Of Variable)
|
|
Get
|
|
Return m_VariableList
|
|
End Get
|
|
End Property
|
|
|
|
Sub New()
|
|
m_VariableList = New ObservableCollection(Of Variable)({New Variable(Variable.VariableTypes.DOUBLE, "@WP_PR_00", "980", 1),
|
|
New Variable(Variable.VariableTypes.DOUBLE, "@WP_PR_01", "981", 1),
|
|
New Variable(Variable.VariableTypes.DOUBLE, "@WP_PR_02", "982", 1),
|
|
New Variable(Variable.VariableTypes.DOUBLE, "@WP_PR_03", "983", 1),
|
|
New Variable(Variable.VariableTypes.DOUBLE, "@WP_PR_04", "984", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@DOORN_S0", "1360", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@DOORN_S1", "1361", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@DOORN_S2", "1362", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@DOORN_S3", "1363", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@DOORN_S4", "1364", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@SENT_1", "1350", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@SENT_2", "1351", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@STATE", "1352", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@RESET_ON", "1365", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@MAST_OK", "1366", 1),
|
|
New Variable(Variable.VariableTypes.INTEGER, "@START_OK", "1367", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF00", "901.0", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF01", "901.1", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF02", "901.2", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF03", "901.3", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF04", "901.4", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF05", "901.5", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF06", "901.6", 1),
|
|
New Variable(Variable.VariableTypes.BOOLEAN, "@BF07", "901.7", 1)})
|
|
AddHandler m_VarTimer.Tick, AddressOf VarTimer_Tick
|
|
m_VarTimer.Interval = New TimeSpan(100)
|
|
m_VarTimer.Start()
|
|
m_DoorOnMachineList.Add(New Door(35, 1, "Test.ddf", "Produzione2024", 1, 800, 1800, 40, {""}, {""}))
|
|
End Sub
|
|
|
|
Friend Sub VarTimer_Tick()
|
|
For Each Var In m_VariableList
|
|
Select Case Var.Type
|
|
Case Variable.VariableTypes.INTEGER
|
|
Dim nIndex As Integer = 0
|
|
Integer.TryParse(Var.sIndex, nIndex)
|
|
Dim nValue As Integer = 0
|
|
If Map.refSupervisorFunction.ComReadShortVar(nIndex, nValue, Var.nMachine) Then
|
|
Var.SetValue(nValue)
|
|
Else
|
|
Map.refSupervisorFunction.PlgOutLog("Error! Reading Variable " & Var.sIndex & " on machine " & Var.nMachine & "failed!")
|
|
End If
|
|
Case Variable.VariableTypes.DOUBLE
|
|
Dim nIndex As Integer = 0
|
|
Integer.TryParse(Var.sIndex, nIndex)
|
|
Dim dValue As Double = 0
|
|
If Map.refSupervisorFunction.ComReadDoubleVar(nIndex, dValue, Var.nMachine) Then
|
|
Var.SetValue(dValue)
|
|
Else
|
|
Map.refSupervisorFunction.PlgOutLog("Error! Reading Variable " & Var.sIndex & " on machine " & Var.nMachine & "failed!")
|
|
End If
|
|
Case Variable.VariableTypes.BOOLEAN
|
|
Dim nIndex As Integer = 0
|
|
Dim nBit As Integer = 0
|
|
Dim sIndexSplit() As String = Var.sIndex.Split("."c)
|
|
Integer.TryParse(sIndexSplit(0), nIndex)
|
|
Integer.TryParse(sIndexSplit(1), nBit)
|
|
Dim bValue As Boolean = 0
|
|
If Map.refSupervisorFunction.ComReadBitVar(nIndex, nBit, bValue, Var.nMachine) Then
|
|
Var.SetValue(bValue)
|
|
Else
|
|
Map.refSupervisorFunction.PlgOutLog("Error! Reading Variable " & Var.sIndex & " on machine " & Var.nMachine & "failed!")
|
|
End If
|
|
End Select
|
|
Next
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class Variable
|
|
Inherits VMBase
|
|
|
|
Public Enum VariableTypes As Integer
|
|
[INTEGER] = 1
|
|
[DOUBLE] = 2
|
|
[BOOLEAN] = 3
|
|
End Enum
|
|
|
|
Private m_Type As VariableTypes
|
|
Public ReadOnly Property Type As Integer
|
|
Get
|
|
Return m_Type
|
|
End Get
|
|
End Property
|
|
|
|
Private m_sName As String
|
|
Public ReadOnly Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
End Property
|
|
|
|
Private m_sIndex As String
|
|
Public ReadOnly Property sIndex As String
|
|
Get
|
|
Return m_sIndex
|
|
End Get
|
|
End Property
|
|
|
|
Private m_nMachine As Integer
|
|
Public ReadOnly Property nMachine As Integer
|
|
Get
|
|
Return m_nMachine
|
|
End Get
|
|
End Property
|
|
|
|
Private m_nValue As Integer
|
|
Private m_dValue As Double
|
|
Private m_bValue As Boolean
|
|
Public Property sValue As String
|
|
Get
|
|
Select Case Type
|
|
Case VariableTypes.INTEGER
|
|
Return m_nValue.ToString()
|
|
Case VariableTypes.DOUBLE
|
|
Return DoubleToString(m_dValue, 2)
|
|
Case VariableTypes.BOOLEAN
|
|
Return If(m_bValue, 1, 0)
|
|
End Select
|
|
End Get
|
|
Set(value As String)
|
|
Select Case Type
|
|
Case VariableTypes.INTEGER
|
|
If Not Integer.TryParse(value, m_nValue) Then
|
|
NotifyPropertyChanged(NameOf(sValue))
|
|
End If
|
|
Case VariableTypes.DOUBLE
|
|
If Not StringToDouble(value, m_dValue) Then
|
|
NotifyPropertyChanged(NameOf(sValue))
|
|
End If
|
|
Case VariableTypes.BOOLEAN
|
|
Dim nBoolean As Integer = 0
|
|
If Integer.TryParse(value, nBoolean) Then
|
|
m_bValue = If(nBoolean > 0, 1, 0)
|
|
Else
|
|
NotifyPropertyChanged(NameOf(sValue))
|
|
End If
|
|
End Select
|
|
m_nValue = value
|
|
End Set
|
|
End Property
|
|
Friend Sub SetValue(value As Integer)
|
|
m_nValue = value
|
|
NotifyPropertyChanged(NameOf(sValue))
|
|
End Sub
|
|
Friend Sub SetValue(value As Double)
|
|
m_dValue = value
|
|
NotifyPropertyChanged(NameOf(sValue))
|
|
End Sub
|
|
Friend Sub SetValue(value As Boolean)
|
|
m_bValue = value
|
|
NotifyPropertyChanged(NameOf(sValue))
|
|
End Sub
|
|
|
|
Sub New(Type As VariableTypes, sName As String, sIndex As String, nMachine As Integer)
|
|
m_Type = Type
|
|
m_sName = sName
|
|
m_sIndex = sIndex
|
|
m_nMachine = nMachine
|
|
End Sub
|
|
|
|
End Class
|