Überwachung von Fräsmaschinen/Bearbeitungszentren

Hallo zusammen,

ich setze IP-Symcon in unserem Blechbearbeitungsbetrieb überwiegend zur Heizungssteurung/-überwachung ein.

Nun haben wir unter anderem 2 CNC Bearbeitungszentren (leider noch ohne Netzwerkanbindung) denen ich gerne folgende Infos mit IP-Symcon entlocken würde:

Läuft der Spindelmotor?
Ist die Maschine eingeschaltet?

Meine bisherigen Sachen habe ich mit HomeMatic gelöst.
Daher wäre mir natürlich ein HomeMatic „Sensor“, den ich an das Kabel der Spindel bzw. an das Hauptkabel der Maschine lege natürlich am liebsten :slight_smile:
Hat da jemand eine Idee?

In die Steuerung komm ich nicht rein wegen mangelndem Netzwerkanschluss.
Dranrumlöten fällt ganz klar aus, da die Maschinen produzieren müssen und ich mir an 200.000 Euro keine Experimente erlaube.

Gruß und Danke
Feuerfuchs

Hallo,

wieso rum löten ?
Wenn es eine richtige CNC ist, wo von ich bei 200.000.-€ ausgehe, gibt es da einen Schaltschrank mit Schütze und Relais, da kann man Signale abgreifen, über Klemmanschlüsse, oder parallel zum Hauptschalter, ein Relais setzten.

Direkt an die Leitung des Spindelmotors wird nicht gehen, da die Motoren geregelt sind. !

Gruß Uwe

Servus

schau mal nach den diversen „Waschmaschine fertig erkennen“ Therads. Da müßtest eigentlich etwas für dich passendes diskutiert worden sein.

Ansonsten:

  • Anzeigelampe optisch abgreifen
  • Stromaufnahme monitoren
  • Lärmpegel monitoren

MIT HM müßte sich „Anzeigelampe optisch abgreifen“ am ehesten realisieren lassen.

gruß
bb

Ansonsten:

  • Anzeigelampe optisch abgreifen
  • Stromaufnahme monitoren
  • Lärmpegel monitoren

Stromaufnahme monitoren würde ich auch sagen: wenn du jede Maschine mit einem dreiphasigen Stromzähler (die laufen doch auf 400v) via S0 ausrüstest, dann kannst du in jedem Betriebszustand sehen, welche Menge Strom benötigt wird.
Das ganze noch in ein Diagramm und in ein paar Tagen/Wochen weisst du anhand der Kurven ob sich die Maschine wohl fühlt/läuft/standby und sonstwie. Eine Variable mit Assoziationen (Stromwerte und Farben) dann kannst du von Weitem sehen was die Machina grad macht :smiley:

Ja das klingt nicht schlecht.

Hast du mir da evtl. einen Link mit einem passenden stromzähler? Toll wäre natürlich wenn das Ding nen Netzwerk Anschluß hat.

So, ich hole nochmal den alten Schinken raus :slight_smile:

Bisher bin ich leider noch nicht dazu gekommen, das ganze an den Fräsmaschinen zu installieren.

Nun habe ich aber eine neuen Möglichkeit, der Status der Maschine kann über RS232 abgefragt werden.
Ich habe nun diese Adapter: http://www.amazon.de/gp/product/B002HQVUUE/ref=oh_details_o03_s00_i00?ie=UTF8&psc=1

Mit den zugehörigen Treibern hab ich auf dem IPS Server nun einen COM Port.
Im Anhang habe ich die Infos aus der Bedienungsanleitung der CNC-Maschinen.
Mir ist eigentlich momentan nur der STATUS wichtig, also Q500.

Ich müsste also nun, so wie ich das verstehe, mit IPS den Befehl „<STX> <Q500> <ETB> <CR/LF> <0x3E>“ an den COM-Port senden und bekomme dann eine Antwort mit dem jeweiligen Zustand, richtig?

Leider bin ich ne Pfeife und hab keine Ahnung wie ich das in IPS umsetzen soll.
Ich bin für Tipps dankbar!

Gruß
Feuerfuchs

Na wenn keiner antwortet, dann mal auf die Schnelle vor dem Urlaubsbeginn das Prinzip. Bin da aber kein Profi.
Registervariable anlegen und so etwas sollte im Code vorkommen:

Mußte mal mit spielen.

<?
$id_regvar = 12345 /*[......n\Register Variable lesen]*/;
$csv = ........
COMPort_SetDTR(54321 /*[Serial Port]*/, true);
COMPort_SetRTS(54321 /*[Serial Port]*/, true);
RegVar_SendText($id_regvar, chr(0x02).$csv.chr(0x17).chr(0x13).chr(0x3E));
...
if($_IPS['SENDER'] == "RegisterVariable")
{
if($_IPS['VALUE'] == ...)
...

Hallo,

die Zeile mit STX ist so wie ich das sehe das was die CNC-Maschine zurücksendet wenn ich den Befehl Qxxx an die Maschine gesendet habe.

Schau mal hier http://www.ip-symcon.de/service/dokumentation/modulreferenz/registervariable/

Das ist die grundsätzliche Vorgehensweise um einen COM-Port anzusprechen.
Vielleicht hilft das schon weiter

Gruß Udo

Hast natürlich recht!

Habe gerade mal per Hyper Terminal etwas gespielt.
Ich gebe einfach die Q-Befehle ein und bekomme dann Rückmeldung.

So sieht das dann aus, wenn ich Q500 sende und die Maschine läuft, kriege ich folgendes zurück:

Dies würde ich nun gerne in eine Variable speichern.

Ich sende also Q500 an COM3 und die Antwort soll dann in eine Variable.

Mit euren Beispielen bin ich leider etwas überfordert. :confused:

Hallo Udo

hier mal ne kleine Hilfestellung.
Als erstes legst du eine Registervariable in IPS an (Objekt hinzufügen - Instanz Hinzufügen - (Sonstige) - Registervariable)

Im Konfigurationsfenster musst du unten bei - Übergeordneter Instanz auf den rechten Button (Leeres Blatt mit nem Gelben Stern(oder was auch immer das darstellt ;-)) eine Neue Instanz hinzufügen. Da wählst du naturlich den Serial Port aus.
Hier musst du jetzt den Com3 auswählen und eventuell die Baudrate einstellen.

Als nächstes öffnest du jetzt bei der Registervariable das Debugfenster um zu schauen was so zwischen IPS und der Maschine „geredet“ wird.
Um an die Maschine etwas zu senden erstellst du ein Script mit dem Inhalt


RegVar_SendText(12345, chr(0x02)."Q500".chr(0x17).chr(0x13).chr(0x3E));

12345 ist natürlich die ID deiner Registervariable.
Jetzt das Script ausführen und schauen ob im Debugfenster der Registervariable einmal Transmitted Data (das was du gesendet hast) und einmal Received Data (das was die Fräsmaschine antwortet)erscheint.
Wenn das geklappt hat kannst du ein Empfangsscript schreiben das die empfangenen Daten in eine Variable schreibt

Setvalue(67890,$IPS_VALUE);

dieses Script musst du bei der Registervariable im Konfigurationstab unter Ziel ID angeben.
67890 ist die ID der Variable in die die Antwort gespeichert werden soll.

Jetzt nochmals das Script zum senden ausführen und schauen ob in der Variable was ankommt.

Ich hoffe das ich nichts übersehen hab und bin gespannt ob du damit weiterkommst.

Gruß Jannis

Zur Erinnerung.
Fall nix kommt muss evtl DTR und ggf. RTS gesetzt werden.

COMPort_SetDTR(54321 /*[Serial Port]*/, true);
COMPort_SetRTS(54321 /*[Serial Port]*/, true); 

Ich bin auch nicht der Profi.

Habe vor ein paar Monaten halt sowas ähnliches zur Steuerung meines Pelletskessel gebaut.
Muss aber dazu sagen das ich vieles durch Try and Error ausprobiert habe.

Ich versuche mal das grundsätzliche zusammen zu stellen.

Unter dem Com-Port wird eine Instanz Registervariable angelegt.
Darunter kommt das Script aus dem 1. Beispiel
bis zum Punkt " if (strpos($data, ‚;‘))" wobei „;“ mit dem Endzeichen des Datenpaket ersetzt wird.
in die IF-Anweisung kommt dann der Befehl um den Inhalt der $data in die gewünschte Variable zu schreiben
und die $data wieder zu leeren.
zum Schluß muss dann noch die letzte Zeile „RegVar_SetBuffer($_IPS[‚INSTANCE‘], $data);“ wieder drunter.
Damit wird erreicht, das der Buffer solange in die $data geschrieben wird bis das Endzeichen erreicht ist.

wenn du dann mit regvar_sendtext den Befehl Q500 an die COM Schnitstelle schickst, sollte beim Debug der COM-Schnittstelle was ankommen. Dann siehst du auch welches Zeichen genau das Ende des Paket ist.

Ich bin leider nicht so fit, das ich ein komplettes Script aus dem „Stehgreif“ hier hinschreiben kann, zumal ich in meiner Heizungssteuerung nach den ersten Versuchen auf das direkte Ansprechen der COM über PHP umgestiegen bin,weil
meine Datenpakete zu komplex waren und damit die Schleife zu langsam wurde.

Aber grundsätzlich sollte es so funktionieren.

Du kannst aber auch mal hier im Forum nach Register Variable suchen und dir mal ein paar Beispiele anschauen.

Gruß Udo

Da haben ja noch zwei was geschrieben in der Zeit wo ich getippt habe.

Gruß Udo

Vielen Dank für eure Hilfe, besonders Jannis, klasse Anleitung!

Damit habe sogar ich das ganze hingefummelt bekommen.
Leider kommt von der Maschine nichts zurück.

Bouis Tipp habe ich auch Versucht und vor das Sende-Skript gesetzt, leider ohne Erfolg.
Im DEBUG Fenster steht TRANSMITTED, aber zurück kommt nichts und die Variable bleibt leer.

Was hab ich da noch falsch gemacht?

Ach ja, noch was: Nachdem ich das mit IPS getestet hatte, kam auch mit HyperTerminal keine Antwort mehr von der Maschine.
Erst nach Neustart der Steuerung! Ich glaube irgendwas sendet IPS da anders als HyperTerminal.

Hast du die selben Comport Einstellungen in IPS wie im HyperTerminal ? Beendest du auch immer 1 Verbindung, bevor du die andere Aufbaust ?

Ja die Einstellungen sind die selben.

Wie meinst du das mit der Verbindung beenden?
Hyperterminal schließe ich natürlich, sonst kann ich im IPS den SerialPort nicht garnicht öffnen.

Morgen

Versuch es sich Mal nur mit Q500


RegVar_SendText(12345,"Q500");

@jannis

da bist du mir zuvor gekommen.

Er darf natürlich nur Q500 senden.

Gruß Udo

Leider schweigt auch hier die Maschine.