SPS Ausgaenge und Arduino als Datenlogger

Hallo Arduino-Gemeinde

Ich möchte ein paar SPS-Ausgänge protokollieren/loggen.
Hintergrund:
Kleine Maschine (ein Markierungslaser aus unserem Haus) wird über eine externe SPS und eine Sondersoftware angesteuert.
Teils handelt es sich um "echte" SPS-Signale (von einer Logo, die der Programmierer direkt über die Tasten programmiert hat), teils um Softwaregenerierte Signale aus der Lasersoftware.
Beide Signaltypen werden auch in der Sondersoftware ausgewertet, und dort wird auch zusätzlich noch mit kleineren Zeitschleifen gearbeitet :woozy_face:
Der Programmierer der SPS ist nicht mehr greifbar. Der der Sondersoftware nur noch sehr bedingt (in Rente).
Das ganze System stürzt manchmal mehrfach pro Schicht ab, mal läuft es eine Schicht durch.
Seit der Kunde die Festplatte im Steuer-PC des Lasers (Win XP) gegen eine SSD ersetzt hat, haben die Probleme deutlich zugenommen.
Nun werden die Probleme schön im Kreis herumgereicht und zwischen allen "Schwarzer Peter" gespielt. Die komplette Verkabelung ist mehrfach auf kalte Lötstellen, Aderbruch etc geprüft worden.
ICh will also nun die Handvoll Signale mitloggen um zu sehen, ob es evt etwas grenzwertiges gibt, Signale die evt zu schnell für die ein oder andere Seite kommen, oder verzögert.

Generell ist es eine recht langsame Geschichte, üblicherweise liegen zwischen den einzelnen Signalen Zeiten deutlich im mehrere 100ms Bereich (ein Zylinder bekommt ein Signal, fährt, Endschalter meldet Endlage etc).
Also will ich keinen imensen Datenwulst erzeugen, in dem ich permanent abfrage und schreibe.
Meine Idee ist, dass ich die Eingänge des Arduino via Optokopplerkarte an die entsprechenden SPS EinAusgänge hänge. (16 E/A sind mehr als genug).
Nun lese ich zyklisch ein und bilde einen Hex-Wert, der den Zustand abbildet.
Diesen speichere ich in einer Variablen.
Nach dem nächsten Lesen und in Hex-Wert konvertieren, vergleiche ich.
Sollte Wert_alt <> Wert_neu sein, schreibe ich auf die SD.
Dazu eine RTC die mir einen Timestamp liefert, den ich bei jedem Ereignis mitschreibe.

Ich hatte auch an einen billigen USB-Datenlogger gedacht (10-15€ in der Bucht oder Amazon), weil die es schön in einem Zeitdiagramm anzeigen, aber bei diesen billigen Dingern muss die ganze Zeit ein PC mitlaufen, daher die Arduino Idde, dann kann ich die Darten via excel o.Ä. auswerten.

Was haltet ihr von der grundsätzlichen Idee für den Aufbau?
Oder würdet ihr einen gänzlich anderen Weg gehen?

Gruß aus Rade
Michael

Finde ich gut!

am Uno wirds knapp mit den GPIO (14 + 6)
2 GPIO Seriell
2 I2C für RTC
4 SD Karte MISO/MOSI/SCK/SS

also bleiben dir da nur mehr 20-8=12 Eingänge über.

Hallo,
wenn ich XP lese gehe ich mal davon aus das das Ganze mindestens10 Jahre alt ist . Das Programm im Logo kann ja eigentlich nicht so komplex sein das man das nicht neu machen könnte oder/und auf eine neue Hardware übernimmt. Für den Laser wird es auch Ersatz geben.
Klar kannst Du versuchen da was zu loggen, aber was sagt Dir das dann wenn Du einen Fehler mitbekommen hast. "Das ein oder andere Teil hatte einen Ausfall" Spätestens dann stehst Du vor der Aufgabe den Kram komplett zu ersetzten , einzeln wird keinen Sinn machen.
Also gesamte Aufgabenstellung analysieren und neue Lösung ( Hardware suchen)

Grundsätzlich kannst Du das mit einem Arduino so machen wie Du es vorhast, allerdings wenn es sich um ein Industrie Umfeld handelt kann es sein das Du wegen mangelnder EMV mit dem Arduino Probleme bekommst und / oder Misst misst.
Heinz

Heinz

Ich würde einen Teensy 4.1 nehmen

Da sind RTC und SD-Slot schon onboard.
Der Teensy lässt sich auch mit der Arduino-IDE programmieren.

oder einen ESP32. Der hat WiFi onboard und könnte dann UDP-Daten an einen PC im Netzwerk senden. Oder einen RaspberryPi als "WiFi-gekoppelten Computer nehmen"

vgs

Erstmal Danke für die Rückmeldungen.
@Rentner
Ich habe gerade nachgeguckt, das System ist von 2018 und hat Windows 7 prof64 und ist standalone, wird also noch ein paar Jahre seinen Dienst tun.
Wir (also die Firma in der ich arbeite) sind ausschließlich der Lieferant des Lasers.
Der Sondermaschinenbauer der das damals gemacht hat, incl SPS-Programm, ist mittlerweile vom Markt verschwunden.
Meine eigenen Fähigkeiten bez. SPS.. Naja, habe aufgehört, da war die S7 noch eine S5, und man ist mit dem dicken PG675 herumgelaufen :man_facepalming:
Ich versuche, so gut es geht, dem Kunden "auf kleinem Dienstweg", zu helfen, da in naher Zukunft ein weiterer Laser bei uns gekauft werden soll, und die Anlage damals in unserem Namen (Also wir als Generalunternehmer) gefertigt wurde.
Die Sondersoftware wurde von einem mittlerweile Ex-Mitarbeiter geschrieben, der nix vernünftig dokumentiert hat, und von der Version, die beim Kunden läuft, gibt es keinen Quelltext :face_with_symbols_over_mouth:, die werde ich wohl eh komplett neu schreiben dürfen, da die auf dem neuenen Laser auch laufen soll (aber diesmal ohne den externen Krempel, es geht nur um Datenhandling, SQL-Gedöns)
Und wenn wir das Problem nicht zumindest klar definiert bekommen, wird der Laser woanders gekauft, that's life.
Ja, industielles Umfeld stimmt, aber nix schlimmes in der Nähe des Standortes (Kein Lichtbogen- oder HF-Schweißen, keine dicken Motoren.
Es ist eine Montagehalle und in einer Ecke werden die Typenschilder gelasert.
@noiasca @StefanL38
Was die bereits vorhandene (meine) Hardware angeht, 3x Nano (clone), 1x Uno rev3, 1x Mega(Clone).
Wobei, wenn ich die E/A's monitore, ich ja keine weiteren benötige, lediglich SMD-breakout.

Machbar ist es.
Über kurz oder lang wirst Du das aber neu giessen müssen.
Da Du im Industrieumfeld handelst, würde ich nicht auf die kleinen Einzelboards setzen.
Insbesondere, da SPS sowieso Thema ist:
https://www.controllino.shop/i/handbuch
Die Teile sind innerlich Arduino-like, äusserlich aber den Anforderungen besser gewachsen.

Hallo
ja PG675 kenne ich auch noch und auch der schwarze Kindersarg davor PGxxx ist mir mit den zwei Laufwerken noch gut in Erinnerung. :wink:
Dennoch da Ihr ja anscheinend die Laser baut ist die Schnittstelle ja bekannt. Da soll letztlich was beschriftet werden und die "SPS" dient dazu ein bishen Handlingsautomat zu spielen. Ja 2018 ist nun noch nicht so alt, etwas blöd, da sollte man als Hersteller noch wissen was damals abgegangen ist.
Also wenn Du Dir etwas davon versprichst ein paar Signale zu loggen dann versuch das mal. Generell geht das wie gesagt mit einem Arduino. Allerdings wirst Du auch ein paar Stunden investieren müssen auch. Letztlich kommen da auch schnell ein paar tausend Euro zusammen bis das Ding dann läuft. Eventuell habt Ihr ja noch Irgendwo eine S7 315CPU und je eine E/A Karte rumliegen um damit eine Fangsteuerung zu bauen. Wenn der Fehler auftritt und die Anlage hängt Zustand mit der S7 auswerten und ein paar Lampen legen die zu einer Aussage führen. Mehr als 10 Gründe wird es ja nicht geben. Vermutlich wird man im normalen Ablauf keine Ungereimtheiten feststellen, also nur im Fehlerfall zu einer Aussage kommen können. Die Uhrzeit ist da dann eigentlich egal. Als Ergebnis wird eventuell herauskommen das etwas defekt ist, denn schließlich lief es ja mal.
Heinz