Aktionen eines FBs mit Buttons der HMI aufrufen?

LMDaniel999

Level-1
Beiträge
57
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe eine blöde Frage und ich finde keine Antwort.
Weder über die Suche, noch bei Beckhoff....

Ich habe in TwinCat einen FB erstellt mit Aktionen.
Nun möchte ich aus der Visu raus eine Aktion starten.

Kann ich mit einem Button eine Aktion eines FBs starten?
Ich finde immer nur Beispiele, wie man eine Aktion aus dem Code startet....
Beim Button gibt es ja das "Programm ausführen".
Da hab ich verschiedenes probiert, aber ich bekomm es nicht hin....

Danke sehr!
 
Die Aktion musst Du schon aus dem Code aufrufen. Aber Du kannst ja mit dem Visu-Button eine Variable tasten, diese auf einen Trigger-FB geben und mit dessen Ausgang die Aktion aufrufen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi.
Danke für die Antwort. Das hab ich befürchtet.
Das bedeutet, dass ich somit für jede Aktion eine Variable machen muss.
Gibt es sonst keine elegantere Möglichkeit?

Ich hab eine Case Abfrage im FB und setze mit den Aktionen nur bestimmte Cases....
In der Aktion frage ich ab, ob der FB Ready ist. Wenn ja, dann setze ich ein INT auf einen bestimmten Wert.
Das kann ich ja dann in der Taste auch machen, oder? Nur freigeben, wenn Ready TRUE ist. Und dann setze ich direkt das INT für das Case.
Spricht da was dagegen?

Danke
 
Das kann ich ja dann in der Taste auch machen, oder? Nur freigeben, wenn Ready TRUE ist. Und dann setze ich direkt das INT für das Case.
Die Eingabefunktion der Buttons kannst Du schon mit NOT Ready sperren. Aber mit der Tastfunktion ein INT auf einen bestimmten Wert setzen? Ich kann mich täuschen, aber ich glaube das geht nicht.
Du könntest aber die einzelnen Bits der INT-Variablen tasten. Dann hättest Du als CASE-Selektoren die Werte 1,2,4,8,16 usw. Wenn diese Werte auch nach Loslassen des jeweiligen Buttons erhalten bleiben sollen, musst Du aber noch etwas Code investieren, etwa so:
Code:
VAR
   varButton:WORD;   (* Variable, deren Bits aus der Visu getastet werden *)
   varSelector:WORD;   (* CASE-Selektor *)
END_VAR

IF varButton>0 THEN
   varSelector:=varButt;
END_IF
 
Hallo,


in der Visu das Fenster „Element Konfigurieren” aufrufen.
Checkbox “Programm ausfuehren” setzen.
Links neben der wiessen Flaeche den Button druecken.
Im neuen Fenster den Button Oben (mit dem Pfeil) druecken.
Jetzt auf ASSIGN,dann die Variable eingeben und den Wert.
(Geht so ziemmlich alles damit)




Irek
 

Anhänge

  • Assign.jpg
    Assign.jpg
    172 KB · Aufrufe: 17
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin. Stell diese Fragen doch im KNX-User-forum da sind sehr viele Spezialisten. Namen wie GLT. , Peter Pan. Usw sollest du dir merken.
Gruß Herbert


Sent from my iPhone using Tapata

Ups falsch abgebogen. Bitte verschieben nach Feldbus KNX Funk
 
Zuletzt bearbeitet:
in der Visu das Fenster „Element Konfigurieren” aufrufen.
Checkbox “Programm ausfuehren” setzen.
Links neben der wiessen Flaeche den Button druecken.
Im neuen Fenster den Button Oben (mit dem Pfeil) druecken.
Jetzt auf ASSIGN,dann die Variable eingeben und den Wert.
@Irek
Ah, sehr schön. Habe ich noch nie gebraucht, aber gut zu wissen.

@LMDaniel999
Dann bleibt nur noch zu klären, ob die Tastenfreigabe in der Visu wirklich unproblematisch ist. Angenommen, die Eingabe ist freigegeben und Du drückst einen Button. Während die VISU_INPUT_TASK damit beschäftigt ist, den Tastendruck auszuwerten, wird sie möglicherweise durch die Steuerungstask unterbrochen und dann Dein FB aufgerufen. Wenn der dann die Freigabe löscht, kriegt die VISU_INPUT_TASK das anschliessend nicht mit. Wenn das passieren kann, musst Du die
Freigabe doch im FB-Aufruf auswerten, z. B. mit den Buttons eine Vorwahlvariable setzen und diese im FB nur als Selektor übernehmen, wenn die Freigabe gesetzt ist.
 
Hi.
Danke für die Antworten.
Der ASSIGN Befehl ist mir bekannt, mit dem habe ich es jetzt ja schon gemacht.
Freigabe ist ja auch kein Problem mit dem Bool.
@StructuredTrash:
Das ist ein guter Hinweis! Aber ich denke, dass ich diesen Fall vernachlässigen kann.
Die Struktur gibt nur Logs im Klartext aus. Hab dazu eine angepasste Logliste gebastelt....
Im laufenden Programm nutze ich eh die Aktionen, die Buttons sind hier nur zum Testen. Schade trotzden, dass das so nicht geht...

Danke trotzdem an alle!!!
 
Zurück
Oben