NEWS
Button der nur betätigt werden kann wenn Object ID= 0 oder 1
-
Habe ich so realisiert. Benötige dann aber einen zweiten Button der den ausgeblendeten genau überlagert um den Status anzuzeigen.
Wie du hier im Screenshot sehen kannst, habe ich den "Automatik" Button zweimal erstellt. Wenn ObjectID=0 ist der graue Button zu sehen. Wenn dann ObjectID=1 verschwindet der graue Button und der grüne erscheint.
Ist aber alles sehr umständlich und meiner Ansicht nach nicht so professionell. Zudem hängt die Visu oft und man muss den versteckten Button zuerst kurz antippen, damit die Signale rausgehen. Warum auch immer.
Gibt es da keine Möglichkeit mit so einem Skript:
*function sendCommand(command) {
// Hier implementieren Sie den Code zum Senden des Befehls an Ihre Steuer-ID
console.log('Command sent:', command);
}function handleRadioChange(value) {
if (value === true) {
// Aktivierungs-Befehl senden
sendCommand('activate_command');
} else {
// Deaktivierungs-Befehl senden
sendCommand('deactivate_command');
}
}*Verstehe nur nicht welche "commands" ich da eingeben muss. Hab keine Ahnung von Java & Co. :disappointed:
@sebasdi sagte in Button der nur betätigt werden kann wenn Object ID= 0 oder 1:
... Zudem hängt die Visu oft und man muss den versteckten Button zuerst kurz antippen, damit die Signale rausgehen. Warum auch immer.
Muss an VIS2 liegen. Mit VIS1 gibt es das Problem bei mir nicht. Wundert mich allerdings bei VIS2 auch nicht...
Edit:
Was ich damit sagen will: Ich habe keine Ahnung von VIS2, kann also dbzgl. nicht helfen. -
@sebasdi sagte in Button der nur betätigt werden kann wenn Object ID= 0 oder 1:
... Zudem hängt die Visu oft und man muss den versteckten Button zuerst kurz antippen, damit die Signale rausgehen. Warum auch immer.
Muss an VIS2 liegen. Mit VIS1 gibt es das Problem bei mir nicht. Wundert mich allerdings bei VIS2 auch nicht...
Edit:
Was ich damit sagen will: Ich habe keine Ahnung von VIS2, kann also dbzgl. nicht helfen.hmmm....
Ich dachte halt, dass ich über manuelles "Widget-Einfügen" einfach jedes mal den richtigen Code einfüge und dann nur die ObjectID und SteuerID's ändern muss.
Aber irgendwie klappt das nicht. Hab auch schon das hier versucht:
[
{
"tpl": "tplJquiToogle",
"data": {
"bindings": [],
"type": "button",
"g_common": true,
"oid": "nothing_selected",
"text_false": "Aus",
"g_text": true,
"text_true": "An",
"color_true": "#93ff93",
"padding": 5,
"g_style": true,
"variant": "contained",
"orientation": "horizontal",
"icon_false": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3bC0xLjQyIDEuNDJBNi45MiA2LjkyIDAgMCAxIDE5IDEyYzAgMy44Ny0zLjEzIDctNyA3QTYuOTk1IDYuOTk1IDAgMCAxIDcuNTggNi41OEw2LjE3IDUuMTdBOC45MzIgOC45MzIgMCAwIDAgMyAxMmE5IDkgMCAwIDAgMTggMGMwLTIuNzQtMS4yMy01LjE4LTMuMTctNi44M3oiLz48L3N2Zz4=",
"g_icon_false": true,
"onchange": "if (this.value) { sendCommand('s7.1.DBs.DB1.NI33'); } else { sendCommand('s7.1.DBs.DB1.NI33'); }"
},
"style": {
"bindings": [],
"left": "728.203125px",
"top": "785px",
"width": 92,
"height": 36
},
"widgetSet": "jqui",
"_id": "i000001"
}
] -
@sebasdi sagte in Button der nur betätigt werden kann wenn Object ID= 0 oder 1:
... Zudem hängt die Visu oft und man muss den versteckten Button zuerst kurz antippen, damit die Signale rausgehen. Warum auch immer.
Muss an VIS2 liegen. Mit VIS1 gibt es das Problem bei mir nicht. Wundert mich allerdings bei VIS2 auch nicht...
Edit:
Was ich damit sagen will: Ich habe keine Ahnung von VIS2, kann also dbzgl. nicht helfen.@ofbeqnpolkkl6mby5e13 trotzdem Danke ;-)
-
@ofbeqnpolkkl6mby5e13 trotzdem Danke ;-)
Ich kann dir allerdings bzgl. "manuelles "Widget-Einfügen"" nicht folgen.
-
Ich kann dir allerdings bzgl. "manuelles "Widget-Einfügen"" nicht folgen.
@ofbeqnpolkkl6mby5e13 in Vis2 kann man auf einer Seite die rechte Maustaste klciken, dann auf "Widget einfügen" und einen Java Code einfügen. Das meinte ich.
-
Hallo zusammen.
Ich visualisiere gerade meine sehr aufwändige Schwimmbadsteuerung.
Bisher habe ich leider noch keine Lösung gefunden, wie ich einen Button oder eine Checkbox so einstellen kann, dass der Button bzw. die Checkbox nur abhängig vom abgefragten Zustand (ObjectID) betätigt werden kann.
Z.B.:
"Button Automatik"
-> SteuerID: Netzwerkeingang 1 meiner SPS
-> ObjectID: Merker 1 (der nach Netzwerkeingang1 = 1 via Setze-/Rücksetzebaustein aktiviert wird)Nach dem Betätigen des Buttons Automatik, wird mein Merker gesetzt, der Button ändert die Farbe da ObjectID von 0 auf 1 gewechselt hat.
Und genau in diesem Moment soll der Button Automatik nicht mehr betätigt werden können.
Denn, betätige ich den Button Automatik wenn ObjectID=1 wechselt der Button in der Visu (Vis2) von seiner Farbe "true" auf "false" obwohl die ObjectID immernoch 1 ist.Ich habe leider keinerlei Java-Kenntnisse oder ähnliches. Auch ChatGPT hat mir nicht weiterhelfen können.
Am besten wäre eine Checkbox, die mir beim Aktivieren in der Visu einen separaten Netzwerkeingang schaltet und beim Deaktivieren einen anderen Netzwerkeingang schaltet. Abhängig vom Status der ObjectID.
Das Gleiche mit einem Button würde mich endlich voranbringen .
Ich habe leider keine Java Kenntnisse und weiß daher nicht wie man das in der Vis2 am Besten umsetzen kann.
Danke im Voraus
@sebasdi sagte: Checkbox, die mir beim Aktivieren in der Visu einen separaten Netzwerkeingang schaltet und beim Deaktivieren einen anderen Netzwerkeingang schaltet. Abhängig vom Status der ObjectID.
Also zwei Taster - einer für Set, der andere für Reset? Das geht wohl nur mit Skript.
const idM1 = 'S7...'; const idNI1 = 'S7...'; // Set const idNI2 = 'S7...'; // Reset on({id: idM1, change: 'ne', ack: false}, function(dp) { if(dp.state.val) setState(idNI1, 1); else setState(idNI2, 1); }); -
@sebasdi sagte: Abkürzung für Netzwerkeingang
Das dachte ich mir. Weshalb erwähnst du jetzt einen NI2? Was soll er bewirken?
Also diese Funktion benötige ich zum Beispiel um Merker der Steuerung zu setzen oder zurückzusetzen.
Die Netzwerkeingänge werden beim Klick auf den Button nur kurz angesteuert und werden nicht gehalten. Daher benötige ich, um diverse Programmabschnitte in der Steuerung ein- oder auszublenden, einige Merker.

Die Poolsteuerung ist universell und beinhaltet wirklich alles was es gibt. Daher gibt es in der Visu eine Anlagenkonfiguration für viele Funktionen. Je nachdem was ausgewählt / nicht ausgewählt wird, passt sich das Programm in der Steuerung an.
-
@sebasdi sagte: Checkbox, die mir beim Aktivieren in der Visu einen separaten Netzwerkeingang schaltet und beim Deaktivieren einen anderen Netzwerkeingang schaltet. Abhängig vom Status der ObjectID.
Also zwei Taster - einer für Set, der andere für Reset? Das geht wohl nur mit Skript.
const idM1 = 'S7...'; const idNI1 = 'S7...'; // Set const idNI2 = 'S7...'; // Reset on({id: idM1, change: 'ne', ack: false}, function(dp) { if(dp.state.val) setState(idNI1, 1); else setState(idNI2, 1); });Würde das mit dem Ding hier funktionieren?
[
{
"tpl": "tplJquiToogle",
"data": {
"bindings": [],
"type": "button",
"g_common": true,
"oid": "nothing_selected",
"text_false": "Aus",
"g_text": true,
"text_true": "An",
"color_true": "#93ff93",
"padding": 5,
"g_style": true,
"variant": "contained",
"orientation": "horizontal",
"icon_false": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3bC0xLjQyIDEuNDJBNi45MiA2LjkyIDAgMCAxIDE5IDEyYzAgMy44Ny0zLjEzIDctNyA3QTYuOTk1IDYuOTk1IDAgMCAxIDcuNTggNi41OEw2LjE3IDUuMTdBOC45MzIgOC45MzIgMCAwIDAgMyAxMmE5IDkgMCAwIDAgMTggMGMwLTIuNzQtMS4yMy01LjE4LTMuMTctNi44M3oiLz48L3N2Zz4=",
"g_icon_false": true,
"onchange": "if (this.value) { sendCommand('s7.1.DBs.DB1.NI33'); } else { sendCommand('s7.1.DBs.DB1.NI33'); }"
},
"style": {
"bindings": [],
"left": "728.203125px",
"top": "785px",
"width": 92,
"height": 36
},
"widgetSet": "jqui",
"_id": "i000001"
}
]Falls ja, was muss man da anpassen? Wie lauten die "commands" die ich an meinen S7 Adapter senden muss?
-
Würde das mit dem Ding hier funktionieren?
[
{
"tpl": "tplJquiToogle",
"data": {
"bindings": [],
"type": "button",
"g_common": true,
"oid": "nothing_selected",
"text_false": "Aus",
"g_text": true,
"text_true": "An",
"color_true": "#93ff93",
"padding": 5,
"g_style": true,
"variant": "contained",
"orientation": "horizontal",
"icon_false": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3bC0xLjQyIDEuNDJBNi45MiA2LjkyIDAgMCAxIDE5IDEyYzAgMy44Ny0zLjEzIDctNyA3QTYuOTk1IDYuOTk1IDAgMCAxIDcuNTggNi41OEw2LjE3IDUuMTdBOC45MzIgOC45MzIgMCAwIDAgMyAxMmE5IDkgMCAwIDAgMTggMGMwLTIuNzQtMS4yMy01LjE4LTMuMTctNi44M3oiLz48L3N2Zz4=",
"g_icon_false": true,
"onchange": "if (this.value) { sendCommand('s7.1.DBs.DB1.NI33'); } else { sendCommand('s7.1.DBs.DB1.NI33'); }"
},
"style": {
"bindings": [],
"left": "728.203125px",
"top": "785px",
"width": 92,
"height": 36
},
"widgetSet": "jqui",
"_id": "i000001"
}
]Falls ja, was muss man da anpassen? Wie lauten die "commands" die ich an meinen S7 Adapter senden muss?
@sebasdi sagte: Würde das mit dem Ding hier funktionieren?
Keine Ahnung: Damit kann ich nichts anfangen.
EDIT: Versuche es mal mit Javascript:
const idM32 = 'S7.1...M32'; // Anpassen! const idNI32 = 's7.1.DBs.DB1.NI32'; // Set const idNI33 = 's7.1.DBs.DB1.NI33'; // Reset on({id: idM32, change: 'ne', ack: false}, function(dp) { if(dp.state.val) setState(idNI32, 1); else setState(idNI33, 1); }); -
@sebasdi sagte: Checkbox, die mir beim Aktivieren in der Visu einen separaten Netzwerkeingang schaltet und beim Deaktivieren einen anderen Netzwerkeingang schaltet. Abhängig vom Status der ObjectID.
Also zwei Taster - einer für Set, der andere für Reset? Das geht wohl nur mit Skript.
const idM1 = 'S7...'; const idNI1 = 'S7...'; // Set const idNI2 = 'S7...'; // Reset on({id: idM1, change: 'ne', ack: false}, function(dp) { if(dp.state.val) setState(idNI1, 1); else setState(idNI2, 1); });@paul53 said in Button der nur betätigt werden kann wenn Object ID= 0 oder 1:
const idM1 = 'S7...'; const idNI1 = 'S7...'; // Set const idNI2 = 'S7...'; // Reset on({id: idM1, change: 'ne', ack: false}, function(dp) { if(dp.state.val) setState(idNI1, 1); else setState(idNI2, 1); });
Okay. Schade. ABer sicherlich mit bisschen Aufwand lösbar für alle Funktionen.
Dein Skript habe ich mal erstellt und es läuft.
Wie verknüpfe ich jetzt einen Button aus der Vis2 mit dem Skript? -
@paul53 said in Button der nur betätigt werden kann wenn Object ID= 0 oder 1:
const idM1 = 'S7...'; const idNI1 = 'S7...'; // Set const idNI2 = 'S7...'; // Reset on({id: idM1, change: 'ne', ack: false}, function(dp) { if(dp.state.val) setState(idNI1, 1); else setState(idNI2, 1); });
Okay. Schade. ABer sicherlich mit bisschen Aufwand lösbar für alle Funktionen.
Dein Skript habe ich mal erstellt und es läuft.
Wie verknüpfe ich jetzt einen Button aus der Vis2 mit dem Skript? -
@sebasdi sagte: Wie verknüpfe ich jetzt einen Button aus der Vis2 mit dem Skript?
Die Verknüpfung muss ein Schalter mit M32 sein.
-
Habe einen neuen Schalter erstellt und die ObjektID mit dem M32 verknüpft.
Der SteuerID ist dann die angelegte Skriptdatei? -
@sebasdi sagte: Der SteuerID ist dann die angelegte Skriptdatei?
Ist sie getrennt? Sie muss dann auch die M32-ID sein.
In Vis(1) kann man z.B. das Widget "Radiobuttons ValueList" mit diesen Einstellungen verwenden:
