Maschinen an/aus auf Externe Taste legen

More
11 Dec 2023 08:46 - 11 Dec 2023 08:47 #287825 by Aciera
www.anderswallin.net/2008/04/toggle2nist/

'To connect momentary-on pushbuttons to EMC...'
Last edit: 11 Dec 2023 08:47 by Aciera.
The following user(s) said Thank You: Tchefter

Please Log in or Create an account to join the conversation.

More
11 Dec 2023 08:58 #287826 by Muecke

Ich habe einen Taster keinen kipaxhalter.
Eben genau dafür ist die Komponente ja gemacht. Aber du darfst natürlich auch nochmal was Eigenes erfinden.

DESCRIPTION
toggle2nist can be used with a momentary push button connected to a toggle component to control a device that has seperate on and off inputs and has an is-on output. If in changes states via the toggle output
If is-on is true then on is false and off is true.
If is-on is false the on true and off is false.

wenn ich das richtig verstanden habe, ist mit dem Taster ein Kipschalter gemeint, der hält sein Position.

Dein beispiel habe ich gerade getestet, und es wird der zustand von Maschinen an/aus nicht gehalten :-(

# Maschinen an/aus mit einem Taster 

  loadrt toggle2nist
  addf   toggle2nist.0 servo-thread

  net Taster_Signal <= toggle2nist.0.in    <=  input.0.btn-base3
  net Machine_ist   <= toggle2nist.0.is-on <=  halui.machine.is-on
  net Machine_ON    <= toggle2nist.0.on     => halui.machine.on
  net Machine_OFF   <= toggle2nist.0.off    => halui.machine.off

Ausgabe 1:
1) Maschine ist OFF
2) Taster wird gedrückt (und gehalten)
=> Maschine ist an
3) Taster wird los gelassen
=> Maschine geht sofort aus

Ausgabe 2:
1) Maschine ist ON (über GUI auf On gestellt)
2) Taster wird gedrückt (und gehalten)
=> Maschine geht aus
3) Taster wird los gelassen
=> Maschine geht sofort An


ps. Ich möchte nichts Neues erfinden! Nur habe ich den Eindruck das ich mit dieser Lösung noch nicht am Ziel bin.


Jedoch müste man jetzt das XOR2, toggle toggle2nist miteinander verknüpfen

toggle
Damit der Taster rastet beim Drücken

XOR2
Damit den Taster und die GUI Knopf zusammen führen

toggle2nist
Um die Maschine ein / aus zu schalten


habe ich das dann richtig im Kopf?

Please Log in or Create an account to join the conversation.

More
11 Dec 2023 10:19 - 11 Dec 2023 10:19 #287833 by Muecke
@Aciera: du hast mir mit deinem code zur lösung verholfen.

Jetzt klappt es :-) *Heppy* Danke !!!!

Mein Taster ist ein Drucktaster, sprich er hält seinen veränderten zustand nicht, sondern springt immer wider zurück zu seinem Ursprung zustand.
Das habe ich mit dem toggle gelöst bekommen, da kann mein ein Signal einfach umschalten.

Die Maschinen ein / auszuschalten habe ich den code vom Aciera gemacht.
Als dein_taster_signal habe ich das ausgangs signal des toggle genommen, denn das hält, seinen zustand ja.

Jetzt kann man über die GUI und über den Taster die Maschine ein und ausschalten.


DANKE für eure Unterstützung.

Das ist der Aktuelle vollständige code.
# Umschalten - 'Drücken-Ein, Drücken-Aus' von momentanen Drucktasten.
# http://linuxcnc.org/docs/ja/html/man/man9/toggle.9.html
  loadrt toggle
  addf   toggle.0 servo-thread

# Taster drücken => toggle.0.out => true wird false und umgekert
  net btn-base3_in <= toggle.0.in  => input.0.btn-base3

# Maschinen an/aus schalten  
  loadrt toggle2nist
  addf   toggle2nist.0 servo-thread

  net Taster_Signal <= toggle2nist.0.in    <=  toggle.0.out         # Signal vom Taster eingerastet
  net Machine_ist   <= toggle2nist.0.is-on <=  halui.machine.is-on
  net Machine_ON    <= toggle2nist.0.on     => halui.machine.on
  net Machine_OFF   <= toggle2nist.0.off    => halui.machine.off
Last edit: 11 Dec 2023 10:19 by Muecke.
The following user(s) said Thank You: tommylight, Tchefter

Please Log in or Create an account to join the conversation.

More
12 Dec 2023 07:37 #287909 by Muecke
Hmm, ich habe mich zu früh gefreut.

Heute Morgen die Maschine angemacht und ich konnte Sie nicht über meinen Joystick freigeben :-(.
Ich habe dann die Maschine über die GUI freigegeben, komischerweise dann konnte ich die Maschine ausschalten und anschalten über den Joystick.

Das habe ich dann gleich noch mal probiert, genau dasselbe wieder, ich muss das erste Mal über die GUT die Maschine einschalten, bevor ich mit dem Joystick sie Maschine an/aus schalten kann. 

Woran kann die Ligen?

Please Log in or Create an account to join the conversation.

More
12 Dec 2023 08:10 #287914 by Aciera
Kann ich nicht sagen, was da nicht stimmt. Ich verwende eine eigene Komponente, die den toggle schon integriert hat. zusätzlich noch Entprellung des Tastensignals und einen 'Enable' um die Funktion freizugeben. Wenn du magst kannst du das Program unten unter 'paneltoggle.comp' speichern und mit ' sudo halcompile --install   <pfad-zur-Komponente>/paneltoggle.comp' installieren. (Falls du Linuxcnc selbst Compiliert hast dann musst du 'sudo' weglassen:
// This component checks the state of a modal function to decide whether the button
// press needs to turn it on or turn it off. Useful for things that can be set by
// gcode AND panel buttons and avoids having to press the button twice if it has been
// changed by gcode.

component paneltoggle "Toggle state by pressing machine panel button";

pin in bit enable "input changes state only if this pin is TRUE " ;
pin in bit input "TRUE when panel button is pressed" ;
pin in bit status "State of coresponsing system function (e.g. MDI, G91, etc";
pin out bit set "TRUE to set system function";
pin out bit reset "TRUE to reset system function";

param rw u32 debounce = 2 "debounce delay in periods";
option data toggle_data;

function _ nofp;
license "GPL";
;;
int c, d;

typedef struct {
    int debounce_cntr;
    int debounced;
} toggle_data;

FUNCTION(_) {

    if (( debounce < 1 ) || ( debounce > 10000 )) {
    /* set a sane value, we don't want 2 million second delays */
    debounce = 2;
    }
    if ( input && enable ) {
    /* pressed */
    data.debounce_cntr++;
    if ( data.debounce_cntr >= debounce ) {
        data.debounce_cntr = debounce;
        if ( data.debounced == 0 ) {
                if ( status == 0 ) {
                 /* if it's off switch it on */
                set = 1;
                reset = 0;
                }
                else {
                 /* if it's on switch it off */
                set = 0;
                reset = 1;
                }

        }
        data.debounced = 1;
    }
    } else {
        /* not pressed */
        data.debounce_cntr--;
        if ( data.debounce_cntr <= 0 ) {
            data.debounce_cntr = 0;
            data.debounced = 0;
            set = 0;
            reset = 0;
        }
    }
}

 
The following user(s) said Thank You: Tchefter

Please Log in or Create an account to join the conversation.

More
12 Dec 2023 14:03 #287944 by Muecke
Das würde ich gerne später versuchen.
Und wie müsste dann mein HAL Struktur dazu aussehen?

Please Log in or Create an account to join the conversation.

More
12 Dec 2023 15:36 #287949 by Aciera
Beispiel, hier für Kühlung (hm2_7i76e.0.7i73.0.1.input-03-not  ist das Signal vom Taster):
#  --- Toggle M8 on/off ---
net machine-is-on     => paneltoggle.m8.enable
net m8-panel            <= hm2_7i76e.0.7i73.0.1.input-03-not     => paneltoggle.m8.input
net m8-is-on             <= halui.flood.is-on  => paneltoggle.m8.status
net m8-set                <= paneltoggle.m8.set           => halui.flood.on
net m8-reset             <= paneltoggle.m8.reset        => halui.flood.off

Please Log in or Create an account to join the conversation.

More
12 Dec 2023 15:46 #287953 by Aciera
Für deine Zwecke kannst du mal Folgendes probieren:
loadrt paneltoggle names=paneltoggle.machine
addf    paneltoggle.machine              servo-thread

#  --- Toggle Machine on/off ---
setp paneltoggle.machine.enable 1
net machine-on-panel  <= <signal von deinem Taster>   => paneltoggle.machine.input
net machine-is-on     <= halui.machine.is-on          => paneltoggle.machine.status
net machine-on        <= paneltoggle.machine.set      => halui.machine.on
net machine-off       <= paneltoggle.machine.reset    => halui.machine.off
The following user(s) said Thank You: Tchefter

Please Log in or Create an account to join the conversation.

Time to create page: 0.439 seconds
Powered by Kunena Forum