Maschinen an/aus auf Externe Taste legen
Please Log in or Create an account to join the conversation.
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.
wenn ich das richtig verstanden habe, ist mit dem Taster ein Kipschalter gemeint, der hält sein Position.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.
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.
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
Please Log in or Create an account to join the conversation.
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.
// 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;
}
}
}
Please Log in or Create an account to join the conversation.
Und wie müsste dann mein HAL Struktur dazu aussehen?
Please Log in or Create an account to join the conversation.
# --- 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.
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
Please Log in or Create an account to join the conversation.