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
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.
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. !
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
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!
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:
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
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.
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.
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.