Eine Ausgang Schalten wenn ein Input gegeben ist

More
08 Nov 2020 14:46 #188665 by Wusel
hallo allerseits,
hier wieder einmal eine Frage :
Zuerst die Ausgangssituation: Meine Servo controller geben ein Open Collektor High signal aus, wenn sie irgendeine Störung haben.
Diesee Signale von allen drei Controllern möchte ich auf einen Input Pin meiner Mesa 7i76e legen und dann abfragen, wenn irgendeiner dieser Pins auf High geht, dann entweder einen Ausgang Schalten, der ein Relais schaltet und das sicherheitsrelais abschaltet oder intern in LinuxCNC einen Fehler verarbeitet und dann alle Antriebe ausschaltet.
Wie gehe ich da heran?
Das gleich kommt dann mit einem Temperatursensor, der bei Überschreiten einer Temperatur schaltet und einen Lüfter ansteuern soll, entweder ein/aus oder regelbar. Mir fehlt also derzeit noch das Verständnis, wie ich einen Eingang verwerte.
und keine Bange, während ich so dumm frage, kämpfe ich mich parallel auch durch die ganzen Handbücher

vielen Dank

Rainer

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

More
08 Nov 2020 15:06 - 08 Nov 2020 15:09 #188666 by chris@cnc
Hallo Rainer,
eine Möglichkeit währe das du deine Servos so einstellst das sie bei Alarm eine 0 ausgeben.
Kein Elektrisches Bauteil wird kurz bevor es brennt Signal geben.
Bei den JMC Servos ist es P06-20 Alarmsignal 1 oder 0 Signal.

Dann schaltest du dieses Signal aller Servos in Reihe zu einem Relay. Dieses Relay schaltet dann deinen Alarmeingang
net alarm-motor <= hm2_7i76e.0.7i76.0.0.input-26-not

Zudem kannst mit diesem Ralay auch das Enable Signal deiner Spindel schalten oder die Servos oder deinen Notaus.
So hast du eine sehr Schnelle Abschaltung. Und wenn du es mit zwei Relays machst sogar doppelt abgesichert.
Gruß Christian
Last edit: 08 Nov 2020 15:09 by chris@cnc.

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

More
08 Nov 2020 16:22 #188671 by Wusel
hallo Christian,
da muss ich mal schauen, onb ich die Fehler Logik im 'controller umdrehen kann. Allerdigns ist das kein Relais Ausgang, die ich dann einfach von einem zum nächsten schleifen kann, wie ich das bei meinen Leadshine Schrittmotortreibern machte. Das ist jedoch nciht so tragisch, das kann ich auch mit externer elektronik regeln.
Bei Deinem "net alarm-motor <= hm2_7i76e.0.7i76.0.0.input-26-not" ist das alarm-Motor ein von dir frei erfundener Name? Wie arbeitest du dann damit weiter um eine Aktion im LinuxCNC zu erzeugen?
Rainer

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

More
08 Nov 2020 16:56 - 08 Nov 2020 17:36 #188673 by chris@cnc
Hallo Rainer,

ich habe bei mir jeden Servo separat an einen Eingang angeschlossen und den Alarm mit der Achse verknüpft.
net alarm-motor-0 <= hm2_7i76e.0.7i76.0.0.input-26-not
net alarm-motor-0 => joint.0.amp-fault-in
Es wird dann Alarm "Verstärkerfehler Gelenk 0" ausgegeben
In deinem Fall würde immer Achse 0 Alarm geben. Ich fand es nur schöner gleich zu sehen welcher Motor schmerzen hat.
Maschine schaltet dann auch Off. Womit ich beim zweiten wichtigen Signal bin.
halpin machine-is-enabled

Ich schalte ein Relay mit dem Motoren und Spindel aktiviert werden. Ist das Relay aus gibt es keine Regelerfreigabe. Wäre die Lösung für deine andere Frage bei Verbindungsabbruch.
Z.B.
net machine-is-enabled => dein Safety Relay
Last edit: 08 Nov 2020 17:36 by chris@cnc.

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

More
08 Nov 2020 18:13 #188677 by Wusel
ja, das hört sich schon gut an, das lese ich mir gleich mal genauer durch. Ich bin ein großer Freund von Sicherheitsrelais und Maschine abschalten. Da ich keine ungebremste Z-Achse habe, die mir auf die Füße fällt, darf in einem Fehler Fall gerne jede Achse Stromlos sein. Das hat mir bei meiner Portalfräse schon so manchen Fräser gerettet, wenn die HFSpindel durch Überlast stand und die Achsen meinten, weiterfahren zu müssen. Ansonsten nähme ich eine Z-Achse mit Bremse, die ist stromlos auch hingestellt.
Rainer

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

More
10 Nov 2020 10:34 #188858 by Wusel
hallo,
ich habe jetzt mal weiter gelesen in Handbüchern und diversen andere Foren und habe mir eine Lösung zusammengestellt, die wie folg aussieht:
Mein NotAus Schalter sowie die Servo controller Fehlerausgänge werden auf je einen eigenen Pin gelegt auf der 7i76e.
Dann erzeuge ich eine Logik Und funktion und verknüpfe logisch alle diese 4 Eingänge (werden 5, wenn ich noch den Spindelantrieb hinzugefügt habe). Das Ergebnis dieser logischen Und Verknüpfung lege ich dann auf das emc-enable Signal. nur wenn alle Fehlereingänge IO sind, dann lässt sich die Maschine einschalten. Sobald einer der Eingänge einen Fehler aufzeigt, ist die Und Bedingung nicht mehr erfüllt und der NotAus in LinuxCNc wird aktiviert.
Macht das so Sinn oder ist das eine unschöne Lösung?
Was mir daran gefällt ist, dass die Fehlereingänge der Servo controller bei ordentlicher Funktion Low Sind und bei Fehler auf High schalten (ich habe leider nicht gefunden, dass ich die Logic im Servo controller ändern kann). Der Notaus Knopf ist hingegen, so wie ich es lieber habe ein High signal, dass bei Drücken des Notaus zu Low geht. Also auch gemischte Eingänge sind kein Problem. Nachfolgend die dazu gehörenden Elemente in meiner Hal Datei
Rainer
#für die logic or Verknüpfung der 4 Fehlereingänge der Servo Controller zusammen mit dem NotAus
loadrt logic count=1 personality=0x104 # 4 "And" verknüpfte Eingänge


# für Servo Fehler Eingänge
addf logic.0 servo-thread



# --- ESTOP-EXT ---
net estop-switch <= hm2_7i76e.0.7i76.0.0.input-07 # der Große NotAus Knopf

## Fehlereingang aus Servo controller- High bei Fehler
net alarm-motorX <= hm2_7i76e.0.7i76.0.0.input-09-not
net alarm-motorY <= hm2_7i76e.0.7i76.0.0.input-10-not
net alarm-motorZ <= hm2_7i76e.0.7i76.0.0.input-11-not


#******************************
# connect miscellaneous signals
#******************************




# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in


#aus AND Logik von Servo controller Alarmen und NotAus Schalter
net alarm-motorX => logic.0.in-00 #der Eingang von input 09 geht auf logic.0-in.00
net alarm-motorY => logic.0.in-01 #der Eingang von input 10 geht auf logic.0-in.01
net alarm-motorZ => logic.0.in-02 #der Eingang von input 11 geht auf logic.0-in.02
net estop-switch => logic.0.in-03 #der Eingang von input 07 geht auf logic.0-in.03
net estop-ext <= logic.0.and # IO, solange alle Eingänge 00, 01, 02 auf low sind # und 03 auf high. Dann ist die AND Bedingung erfüllt
# und NotAus High bleibt FALSE. Ansonsten ist Esop True und stoppt alle Antriebe

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

More
12 Nov 2020 18:53 #189143 by chris@cnc
Hallo Rainer,
wichtig ist doch das es funktioniert, sicher ist und du selber im Fehlerfall weißt wo zu suchen ist.
Nur was ist das für ein Servo der sich nicht umstellen lässt? Das muss gehen.
Die heisen Z.B. Alarm output port effective level, oder du hast einen 2. DIO mit anderer Logic. Selbst meine China VDF hat das...
Die schaltet nur immer zu spät und muss mit einer Sekunde Verspätung abgefragt werden.
Der Klassiker ist meist Kabelbruch oder loser Stecker und das bekommst du so nicht mit...

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

More
12 Nov 2020 20:33 #189149 by Wusel
hallo Chris,
ich bin auch sicher, dass es gehen müsste. Ich habe diesen Servo controller hier. Da es zum Testen schwierig ist, Fehler wie Über/unterspannung; Strom etc zu simulieren, ziehe ich probehalber den Encoder Stecker. Dann kommt gefühlt sofort eine Alarm Meldung und der Motor steht

Rainer
Attachments:

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

More
12 Nov 2020 22:34 - 12 Nov 2020 22:56 #189159 by chris@cnc
Hallo Rainer,
ja dein Verstärker prüft die Verbindung zum Motor und gibt dann Alarm aus. Ist der Verstärker aber aus, hast du kein Feedback zur NC. Bei deinem sind es Parameter Pn060 - Pn063 Handbuch Seite 25 und 56 beschrieben. (manual aasd Servo)bei Google

PN060 Out1 -> Pin 11 ->SRV-Ready = 2
PN061 Out2 -> Pin 23 -> Alarm detection = 1
Setzt du die beiden Parameter negativ = -2 und =-1 solltest du ein lowlevel output haben.
Dann kannst auch den Alarm auf amp-fault-in setzten und über machine-enable => Safetyrelay das Servo disable Signal an alle Verstärker.
Dann siehst du sofort welcher Antrieb Probleme macht und die Anderen schalten offline. Großer Vorteil der Alarmzustand vom Verstärker bleibt erhalten und du kannst über den Fehlercode am Verstärker nachlesen was das Problem ist.
Direkt in die Notauskette geht natürlich auch und bei 3 Motoren noch überschaubar aber irgendwann verzweifelt man...:)

Gruß Christian
Last edit: 12 Nov 2020 22:56 by chris@cnc.

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

More
13 Nov 2020 08:26 #189189 by Wusel
hallo Christian,
ok, dann habe ich jetzt auch die Parameter Angabe verstanden. Ich war darüber gestolpert und wunderte mich, dass da die angegeben Parameter Range von -14 bis +14 angegeben war mit default=1 für Sigout 2. Jetzt habe ich diesen entsprechend auf -1 geändert und die Funktion ist umgedreht.
Die Verwertung des amp-fault-in folg dann als nächstes; immer schön in kleinen Schritten.
vielen Dank für Deine Hilfe

Rainer

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

Time to create page: 0.264 seconds
Powered by Kunena Forum