Hallo zusammen
Habe ein kleines Problem bei dem Ich nicht weiter komme.
Ich möchte kurz Erklären woran Ich arbeite und wo mein Problemchen liegt. Ich schreibe zur Zeit in Visual Studio 2019 in Visual Basic ein Anlagensimulation für Produktionsanlagen. Das Programm simuliert mir Produkt und Palettenfördertechnik und dessen Sensorik, um Produkttransporte zu simulieren. Dafür werden Ansterungssignale aus einer Anlagensteuerung über eine Schnittstelle eingelesen und die Zustände der Sensoren über die Schnittstelle geschrieben. Dafür stehen mir eine Schreib- und Lesefunktion zur Verfügung. Die Anlagensimulation und die Schnittstelle an sich funktionieren würde diese gerne nur etwas optimieren.
Da Ich mehrere verschiedene Anlagenelemtent habe die unterschiedliche Sensorik besitzen habe ich mir für jeden Anlagentyp eine Struktur angelegt die mehrere Unterstrukturen enthält.
Die erste Unterstruktur ist ein Sensor
Die Information angewählt sagt mir ob dieser Sensor in der Simulation für dieses Element benötigt wird. Der Zustand gibt an ob der Sensor geschaltet hat. Die Bezeichnung ist für die Schreibfunktion der Schnittstelle wichtig.
Die zweite Unterstruktur ist eine Ansteuerung
Dies sind dann z.B. so eingebunden
Was möchte Ich jetzt machen. Ich möchte einer Funktion die Struktur übergeben können. Die Funktion soll die Elemente der Struktur erkennen und mir dessen Inhalt ausgeben.
Habe es so nur mit einer Variablen als Struktur Sensor probiert
Was Ich jetzt schon mit den verschiedensten Varianten probiert habe ist die Unterstrukturen zu ermitteln und diese dann aus zu lesen. Und Ich weiss der folgende Code kann so nicht funktionieren deswegen meien Frage wie geht es richtig
Ich hoffe Ich konnte als Hobbyprogrammierer mein Problem rüber bringen und würde mich über Ratschläge freuen
Lg Christian
Habe ein kleines Problem bei dem Ich nicht weiter komme.
Ich möchte kurz Erklären woran Ich arbeite und wo mein Problemchen liegt. Ich schreibe zur Zeit in Visual Studio 2019 in Visual Basic ein Anlagensimulation für Produktionsanlagen. Das Programm simuliert mir Produkt und Palettenfördertechnik und dessen Sensorik, um Produkttransporte zu simulieren. Dafür werden Ansterungssignale aus einer Anlagensteuerung über eine Schnittstelle eingelesen und die Zustände der Sensoren über die Schnittstelle geschrieben. Dafür stehen mir eine Schreib- und Lesefunktion zur Verfügung. Die Anlagensimulation und die Schnittstelle an sich funktionieren würde diese gerne nur etwas optimieren.
Da Ich mehrere verschiedene Anlagenelemtent habe die unterschiedliche Sensorik besitzen habe ich mir für jeden Anlagentyp eine Struktur angelegt die mehrere Unterstrukturen enthält.
Die erste Unterstruktur ist ein Sensor
Die Information angewählt sagt mir ob dieser Sensor in der Simulation für dieses Element benötigt wird. Der Zustand gibt an ob der Sensor geschaltet hat. Die Bezeichnung ist für die Schreibfunktion der Schnittstelle wichtig.
Die zweite Unterstruktur ist eine Ansteuerung
Dies sind dann z.B. so eingebunden
Was möchte Ich jetzt machen. Ich möchte einer Funktion die Struktur übergeben können. Die Funktion soll die Elemente der Struktur erkennen und mir dessen Inhalt ausgeben.
Habe es so nur mit einer Variablen als Struktur Sensor probiert
Quellcode
- Public Structure Sensor
- Public Angewählt As Boolean
- Public Fehler As Boolean
- Public Zustand As Boolean
- Public Bezeichnung As String
- Public Position As Integer
- End Structure
- Private Sub ButtonTest_Click(sender As Object, e As EventArgs) Handles Button4.Click
- Dim Testsensor As New Sensor
- 'Aufruf der Funktion
- Struktur_auslesen(Testsensor)
- End Sub
- Public Sub Struktur_auslesen(Daten As Object)
- 'Testvariablen erstellen
- Dim Bezeichnung
- Dim Zustand
- 'Elemente der Struktur durchsuchen
- For Each Element As System.Reflection.FieldInfo In Daten.GetType().GetFields
- 'Wenn die variable der Struktur Bezeichung oder Zustand heißt dann den Wert auslesen
- If (Element.Name = "Bezeichnung") Then
- Bezeichnung = Element.GetValue(Daten)
- ElseIf (Element.Name = "Zustand") Then
- Zustand = Element.GetValue(Daten)
- End If
- Next
- 'Schnittstellenfunktion zum schreiben des Sensorzustandes aufrufen
- CHWriteBool(Bezeichnung, Zustand)
- End Sub
Was Ich jetzt schon mit den verschiedensten Varianten probiert habe ist die Unterstrukturen zu ermitteln und diese dann aus zu lesen. Und Ich weiss der folgende Code kann so nicht funktionieren deswegen meien Frage wie geht es richtig
Quellcode
- Public Structure Simulationselement_Palettenförderer
- Public Lichtschranke_FT_Anfang As Sensor
- Public Lichtschranke_FT_Ende As Sensor
- Public Bandansteuerung As Ansteuerung
- End Structure
- Private Sub ButtonTest_Click(sender As Object, e As EventArgs) Handles Button4.Click
- Dim Testsensor As New Simulationselement_Palettenförderer
- 'Aufruf der Funktion
- Struktur_auslesen(Testsensor)
- End Sub
- Public Sub Struktur_auslesen(Daten As Object)
- 'Testvariablen erstellen
- Dim Bezeichnung
- Dim Zustand
- 'Elemente der Struktur durchsuchen
- For Each Element As System.Reflection.FieldInfo In Daten.GetType().GetFields
- If (Element.GetType = Sensor) Then ' Hier würde Ich gerne abfragen ob das Element vom Typ Sensor ist
- For Each Unterelement As System.Reflection.FieldInfo In Element.GetType().GetFields
- 'Wenn die variable der Struktur Bezeichung oder Zustand heißt dann den Wert auslesen
- If (Element.Name = "Bezeichnung") Then
- Bezeichnung = Element.GetValue(Daten)
- ElseIf (Element.Name = "Zustand") Then
- Zustand = Element.GetValue(Daten)
- End If
- Next
- 'Schnittstellenfunktion zum schreiben des Sensorzustandes aufrufen
- CHWriteBool(Bezeichnung, Zustand)
- ElseIf (Element.GetType = Ansteuerung) Then ' Hier würde Ich gerne abfragen ob das Element vom Typ Ansteuerung ist
- For Each Unterelement As System.Reflection.FieldInfo In Element.GetType().GetFields
- 'Wenn die variable der Struktur Bezeichung oder Zustand heißt dann den Wert auslesen
- If (Element.Name = "Bezeichnung") Then
- Bezeichnung = Element.GetValue(Daten)
- ElseIf (Element.Name = "Ansteuerungszustand") Then
- Zustand = Element.GetValue(Daten)
- End If
- 'Schnittstellenfunktion zum schreiben des Sensorzustandes aufrufen
- Next
- CHReadBool(Bezeichnung, Zustand)
- End If
- Next
- End Sub
Ich hoffe Ich konnte als Hobbyprogrammierer mein Problem rüber bringen und würde mich über Ratschläge freuen
Lg Christian