-> Hier kostenlos registrieren
Hallo zusammen,
wir haben sehr viele MB_Client Aufrufe, welche verschiedene Geräte auslesen. Nun haben wir z.B. 32 Messgeräte die man im HMI parametrieren und auch den Hersteller auswählen kann. Bei 3 Herstellern sind das schon 96 Bausteine, die parametriert werden müssen. Diese werden dann über EN bei entsprechender Auswahl von der SPS bearbeitet. Das System wird ständig erweitert und bei jedem neuen Hersteller muss ein neuer Baustein erstellt und 32 mal parametriert werden.
Meine Idee war einen Baustein zu schreiben, welcher die auszulesenden Register in einem Array [*] of UDT einliest und ausführt. Somit gäbe es immer nur 32 Bausteinaufrufe und nur einen Standard-Baustein, welcher mit den Parametern am Array[*] of UDT arbeitet. Die UDT beinhaltet den Mode, Startadresse, Länge und Zieladresse. Aus den Grenzen wird eine Schrittkette gebildet und die Register ausgelesen. Das funktioniert als Einzelaufruf auch sehr gut. Mein Problem besteht jetzt in der Auswahl des Parameter Array's. Jeder Hersteller hat andere Register und Längen auszulesen, daher unterscheiden sich die längen der Array's.
Die Parameter liegen in einem DB:
Parameter Hersteller 1 = Array[0..3] of UDT
Parameter Hersteller 2 = Array[0..8] of UDT
Wie kann ich diese indiziert an meinen FB übergeben? Wenn ich im HMI Hersteller 1 auswähle möchte ich die entsprechenden Array's an den FB übergeben.
Viele Grüße
Benny
wir haben sehr viele MB_Client Aufrufe, welche verschiedene Geräte auslesen. Nun haben wir z.B. 32 Messgeräte die man im HMI parametrieren und auch den Hersteller auswählen kann. Bei 3 Herstellern sind das schon 96 Bausteine, die parametriert werden müssen. Diese werden dann über EN bei entsprechender Auswahl von der SPS bearbeitet. Das System wird ständig erweitert und bei jedem neuen Hersteller muss ein neuer Baustein erstellt und 32 mal parametriert werden.
Meine Idee war einen Baustein zu schreiben, welcher die auszulesenden Register in einem Array [*] of UDT einliest und ausführt. Somit gäbe es immer nur 32 Bausteinaufrufe und nur einen Standard-Baustein, welcher mit den Parametern am Array[*] of UDT arbeitet. Die UDT beinhaltet den Mode, Startadresse, Länge und Zieladresse. Aus den Grenzen wird eine Schrittkette gebildet und die Register ausgelesen. Das funktioniert als Einzelaufruf auch sehr gut. Mein Problem besteht jetzt in der Auswahl des Parameter Array's. Jeder Hersteller hat andere Register und Längen auszulesen, daher unterscheiden sich die längen der Array's.
Die Parameter liegen in einem DB:
Parameter Hersteller 1 = Array[0..3] of UDT
Parameter Hersteller 2 = Array[0..8] of UDT
Wie kann ich diese indiziert an meinen FB übergeben? Wenn ich im HMI Hersteller 1 auswähle möchte ich die entsprechenden Array's an den FB übergeben.
Viele Grüße
Benny