WinCC Unified Alternative zum Listenfeld

PENT89

Level-2
Beiträge
66
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

nach einigen Wochen Pause, darf ich mich mal wieder mit Unifed rumärgern. Naja zum Glück haben wir ein Großes Boot.

Ich versuche gerade Einträge in ein Listenfeld zu packen. Ich brauche aber ca. 200 Einträge. Anscheinend kann Unifed aber nur 32 Einträge verwalten. Habt ihr ein Lösung / Workaround dafür?

Vielen Dank
 
Hallo,

Problem kommt mir bekannt vor - wir haben ein eigenes Rezepthandling programmiert und da kommt man schnell über 32 Einträge - war allerdings unter TIA V17. Wenn das in V19 nicht geändert ist - na dann viel Spass. Wir haben 5 Listenfelder verwendet, die über Buttons ausgewählt werden.

Viel Erfolg
 
Früher gab es mal eine Excel Applikation(Rezepteditor) die man in das HMI integrieren konnte.War aber zu lizensieren.
Gibt's sowas von Siemens nicht mehr?
 
Hallo,

der ganze WinCC-Unified Unterbau auf den Panels ist auf Linux aufgebaut. Da kann man wenig mit Excel anfangen - eventuell mit OpenOffice
unter Linux. Wie es bei einer PC-Runtime aussieht weiss ich nicht - wir haben das Panel verwendet. Und ohne Bash-Programmierung geht es auch nicht - wenn man seine Dateien vom Panel in dem Listenfeld anzeigen lassen will.
 
Da muss ich mich verabschieden.Ich finde es aber erstaunlich, das TIA so eine Standardanwendung im Jahre 2024 noch nicht als fertig parametrierbares Tool anbieten kann.Das gab es früher doch schon Alles.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das gab es früher doch schon Alles.
Unified basiert ja komplett auf Javascript.. das alte Wincc flex und die überführung davon in basic/advanced bei Tia ist wohl noch alles Dotnet oder C #/++

Da wurde wohl ein radikaler Schnitt durchgeführt wird und alles neu aufgesetzt
 
Hallo zusammen,

ich konnte das Problem lösen.

Natürlich kann ich eine Liste mit mehreren Einträgen anlegen, und diese werden auch sauber angezeigt.

Was anfangs nicht gut funktioniert hat, war die Einzel-Auswahl (Single Selection). Dies habe ich jetzt über ein Script gelöst. In den Einstellungen des Testfeldes habe ich die Eigenschaft „Auswahlmodus“ auf „nicht exklusiv“ gesetzt.

Zusätzlich habe ich im globalen Definitionsbereich eine Variable zum Speichern des alten Wertes angelegt.

Das Script wird ausgeführt, wenn im Listenfeld die Maus gedrückt wird.

Javascript:
export function LstBox_OnTapped(item, x, y, modifiers, trigger) {
  let list = Screen.Items("Lstdata");
    let itemCount = list.SelectionItems.Count;
    let newSelectedIndex = -1;

    HMIRuntime.Trace("Start: Alte Auswahl war Eintrag " + (previousSelectedIndex + 1));

    // Schleife durch die Einträge und Identifikation der neuen Auswahl
    for (let i = 0; i < itemCount; i++) {
        if (list.SelectionItems.Item(i).IsSelected) {
            if (i !== previousSelectedIndex) {
                newSelectedIndex = i;
                HMIRuntime.Trace("Neuer Eintrag gefunden: " + (newSelectedIndex + 1));
            } else {
                HMIRuntime.Trace("Alter Eintrag erneut ausgewählt: " + (previousSelectedIndex + 1));
            }
        }
    }

    // Wenn ein neuer Eintrag ausgewählt wurde
    if (newSelectedIndex !== previousSelectedIndex) {
        HMIRuntime.Trace("Wechsel von Eintrag " + (previousSelectedIndex + 1) + " zu Eintrag " + (newSelectedIndex + 1));

        // Setze alle Einträge auf 0 (abwählen), außer den aktuell ausgewählten
        for (let i = 0; i < itemCount; i++) {
            list.SelectionItems.Item(i).IsSelected = (i === newSelectedIndex);
        }

        // Text des ausgewählten Eintrags im Trace ausgeben
        let selectedText = list.SelectionItems.Item(newSelectedIndex).Text;
        HMIRuntime.Trace("Text des aktuell ausgewählten Eintrags: " + selectedText);

        // Speichern der aktuellen Auswahl in der globalen Variable
        previousSelectedIndex = newSelectedIndex;
}
 
Zurück
Oben