Seite 1 von 1

Python soll selber probieren

Verfasst: Sonntag 17. Juni 2018, 17:58
von reneschmidt
Hallo zusammen,

ich habe eine relativ alte Anlage, die sich nur über die COM Schnittstelle Programmieren lässt. Leider gibt es kein wirkliches Handbuch dafür und auch selber ist die Anlage nicht besonders gesprächig.
Im Prinzip bleibt nur testen bis man die richtigen Befehle findet.
Ich habe in handschriftlichen Aufzeichnungen gefunden, dass die Anlage Befehle in folgendem Muster entgegennimmt:
.m1ud=5
das kann ich aus testen und funktioniert soweit. .m1ud ist dabei der Parameter der gesetzt werden soll und 5 der Wert. Leider brauche ich Befehle wo ich nicht mal genau weiß ob diese existieren.
Was aber ein kleiner Lichtblick ist, wenn ich z.B. nur .m1ud eingebe, bekomme ich ein kleine Erklärung zurück. Bei einem Befehl, die die Anlage nicht kennt, gibt es keine Antwort.

Meine Idee ist jetzt: einmal durchprobieren, da der der das System gebaut hat nicht mehr nicht mehr greifbar ist.

Aller Wahrscheinlichkeit nach bestehen alle befehle und Parameter aus einem 1-6 Zeichen langen String auf Buchstaben und Zahlen.

Ich bin also angefangen und wollte ein Python Script schreiben welches alle möglichen Kombinationen erzeugt und dann einmal testet, eine Sekunde wartet und dann weiter macht. Wenn ein Treffer erfolgt ist, wird das ganze dokumentiert.

Mit ist bewusst, das das ganze wahrscheinlich Tage bis Wochen dauern kann bis alle Kombinationen durchprobiert sind, ist aber immer noch die angenehmere alternative als die Anlage neuprogrammieren zu lassen bzw. zutauschen.

Leider habe ich eine kleine Gedankenblockade beim schreiben des Erzeugen der Werte.
Hat jemand eine Idee, wie der Code aussehen muss, wenn ich oben die möglichen Zeichen und die Max Länge angeben und unten sollten dann nacheinander alle möglichen Werte rauskommen. Bei mir kommt immer nichts richtiges bei raus. Im Prinzip dürften es ja nur mehrere Schleifen sein, ich bekomme die aber nicht auf die Reihe...

Der Restliche Ablauf ist fertig und funktioniert, nur eben das erzeugen der werte noch nicht.

Vielen Dank für Eure Hilfe.

Re: Python soll selber probieren

Verfasst: Sonntag 17. Juni 2018, 18:12
von Tholo
Was für eine Anlage soll das sein?
Sprichst du die via SSH an? Oder wo kommt der Output von

Code: Alles auswählen

.m1ud=5
her?

Du könntest ja ein Script schreiben welches alle x Sekunden

Code: Alles auswählen

.m1ud+=1
sendet und auf ein Output wartet und den dann Dokumentieren. Zb. in ein Dict. Dann hast du die Var als Key und den Output schon mal zusammen.
Oder sind die Buchstaben und Zahlen (String Kombination) völlig willkürlich? Dann wird es lustig...

Re: Python soll selber probieren

Verfasst: Sonntag 17. Juni 2018, 18:19
von Sirius3
@reneschmidt: Dir ist schon bewußt, dass Du 70 Jahre brauchst, um alle Kombinationen von 6 Zahlen und Buchstaben durchzuprobieren, wenn jeder Versuch eine Sekunde braucht.

Dafür helfen Dir die Methoden aus itertools, z.B. permutations.

Re: Python soll selber probieren

Verfasst: Sonntag 17. Juni 2018, 18:28
von narpfel
Moin,

um was für eine Anlage geht es denn? Eventuell ist es möglich, einen möglicherweise vorhandenen Microcontroller auszubauen und auszulesen (oder hast du ISP-Zugriff?). Wenn du Glück hast, könnten die möglichen Kommandostrings im kompilierten Code stehen und so relativ leicht zu finden sein.

Re: Python soll selber probieren

Verfasst: Sonntag 17. Juni 2018, 20:24
von reneschmidt
Hallo,

das ist eine Anlage für Futtersteuerung die gut 20 Jahre alt ist. Im Moment wir sie per RS232 angesprochen, doch das Steuergerät hat mittlerweile Aussetzer. Daher ist die Idee, da die Motoren etc. alle neu sind, ein kleines Programm zu haben, das dann nur die Motoren ansteuert. Ich wollte dazu ein Script haben, was zum einen die Sensoren überwacht und sobald etwas registriert wird, dann einen entsprechenden Befehl an die Anlage schickt. Eben genau das was das 20 Jahre alte Steuer gerät macht eben nur jetzt auf einem Server. Dazu wollte ich die RS232 Schnittstelle per RS232 zu Ethernet Converter anbinden.
Ich gehe im Moment eher davon aus, das die befehle nicht wirklich so lang sind. Das Beispiel ist schon eins der Komplexeren. Also eher 4 anstatt von 6. Außerdem ist der Anlage Groß und Kleinschreibung egal.

Re: Python soll selber probieren

Verfasst: Sonntag 17. Juni 2018, 20:28
von __deets__
Na dann hast du immer noch im *besten* Fall

36**4 / (3600 * 24 * 365) = 0.05326027397260274

ungefaehr ein halbes Jahr Zeit zu warten, bis du alle 4-Stelligen Kombinationen von Zahlen und Buchstaben durch hast. Und eine Sekunde wartest.

Mir ist noch nicht ganz klar, wer jetzt der Empfaenger der Kommandos ist, wenn das Steuergeraet selbst das Problem darstellt. Ist das die Motorsteuerung?

Re: Python soll selber probieren

Verfasst: Dienstag 19. Juni 2018, 17:16
von DeaD_EyE
Gibt es weder vom Empfänger, noch vom Sender den Quellcode?
Hängt da zufällig eine SPS dran?