Maschinencode anpassen, Ideen und Hilfe stellung

  • Hallo zusammen,


    Ich habe einen Maschinencode für eine 3 Achsen Portalmaschine der anbestimmten Stellen Variabel angepasst werden muss, die Werte werden Mathematisch berechnet, sprich dazu oder abgezogen um ein Verschiebung der Verfahr Wege zu realisieren.


    Eine klein GUI mit MsgBox zur Überprüfung hab ich erstellt aber komme jetzt nicht weiter wie ich die Menge von Daten verarbeiten soll.


    Zum Test wird nur die Zeile 22 und der Wert X zum Test rangenommen, test.txt ist ganz unten angehägt.


    Die Anforderung ist nur bestimmte Koordinaten anzupassen, für X die Zeilenvon 22 bis 84, Z 22-152 und Y nur 21 der Rest muss so bleiben.
    Das Schwierige ist wie der Code geschrieben wird z.B. Zeile 22 "G01 X195.138Z14.428"(ohne "), die Werte in Rot sind nie dieselben was mich vermuten lässt dasich Zeile für Zeile auslesen und ändern muss.


    Das nächste ist das die File keine txt Endung hat sondern nc aber ich wäreschon glücklich ein txt File zu generieren oder anzupassen.


    Hier einmal mein recht simpler Code der GUi und der Ausgabe


    Ich verlang jetzt kein Komplettlösung (aber freuen würde ich mich dennoch darüber ^^ ) wohl verlagen schon übelkling :/ , hoffe auf eine Unterstützung meines Problems da ich schon seit Tagen daran hänge und keine Idee finde ?( , dazu kommt das ich jetzt kein Profi bin aber dennoch versuch zu Lernen was mir schwerfällt mit dem Alltagsstress.



    Mfg


    Alex


    Hier Noch mein Test.txt mit den NC Code.
    test.txt

  • Das hier dürfte dir weiterhelfen :)



    Einfach bei ;Calculate X with data,... den Wert berechnen. Data ist dabei der alte Wert und soll nach der Berechnung den neuen Wert enthalten. Der Alte Wert wird dann durch den neuen Ersetzt.
    Danach einfach die Datei neuschreiben.
    Welche Endung eine Datei hat ist vollkommen irrelevant. Wichtig ist, was drin steht und wie es interpretiert wird. Wenn in der nc-Datei also der Text aus der textdatei steht kannst du sie einfach mit der anderen Endung abspeichern.


    MfG Kanashius

  • Hallo,


    erstmal vielen Dank an Kanashius für die Hilfe hat alles so geklappt wie ich es mir vorgestellt habe.


    Hier mal der überarbeiteter Code.


    Meine frage ist es möglich die Werte ein zugrenzen sprich das ich keine Minus oder extrem Plus Werte bekomme bei der Berechnung z.b. bei X -200 Y -100 Z-10 weill sonst fährt die Maschine gegen Anschlag.


    Edit: Hab noch eine Ordner Überprüfung reingepackt und die original.nc in die exe Integriert, eventuell kann man es schöner machen.




    Mfg


    Alex

  • Hallo


    Danke Kanashius für den Tipp


    Also Hab noch etwas rumgebastelt und konnte jetzt endlich an die Maschine eine Test machen und habe gleich mal ein Problem gefunden, wenn die Orginal.nc minus Werte hat wird bei der Berechnung ein 0 angehängt.


    z.B. G01 X195.138 Z-14.428 wird zu G01 X195.138 Z0-14.428


    hat eventuell jemand eine Lösung.



    mfg


    werde heute aben wenn ich wieder zuhausen bin das Aktuelle Script anhängen.

    • Offizieller Beitrag

    @bytesinner
    Wir basteln hier an Symptomen ohne die Ursachen zu kennen.
    Es wäre nützlich, wenn du mal Basisdaten zur Verfügung stellen kannst:
    Positionsdaten für
    - Nullstellung
    - linker Anschlag
    - rechter Anschlag
    - Tiefe


    Erwartet die Datei neben den Koordinaten auch zusätzliche Parameter?
    Alles, was du an Daten findest kann helfen - und immer den Kontext zu den Daten mit angeben.

  • Wie schon erwähnt werde ich heute Abend noch was rein packen (wenn nichts dazwischen kommt).



    Aber was ich schon jetzt sagen kann ist das alle Daten von einem Grund NC Code kommen (orginal.nc) die einmal angepasst wird, je nach dem wo das Teil eingespannt wird bzw. das Spannmittel ist auf dem Tisch.


    Die Anschläge sind fest definiert so wie auch Nullstellung.
    Das Script soll ja die nur zur Anpassung verwendet werden, weil das Rohteil Länger oder Stärker sein kann bzw. die Streifen die abgetrennt werden unterschiedlich sind.


    Was die ursachen des Symptom z.B. G01 X195.138 Z-14.428 wird zu G01 X195.138 Z0-14.428 ist das die Orginal Code wie Hier Z schon im Minus ist und das Script packt mir dan einfach eine 0 nach dem Z und die verfahrwege passen nicht mehr , bei Positiven Werte Funktioniert alles.


    Ich hoffe das jetzt keine verwirrung auf taucht, aber mit den restlichdaten kommt bestimmt klarheit.


    Mfg

  • Nö Fehler Hab ich keine, funktioniert tadellos, aber versteh jetzt nichtgenau was du meinest mit der Falschen Deklaration oder bezieht sich das auf die 22 ? weil ja(hoffe es richtig verstanden zu haben) jede Achse nur einen bestimmten Bereichgeändert wird in diesem Script deswegen die verschiedenen Deklarationen.


    Ich kämpfe mich schon durch RegExp undden Arrays und kampier das noch nicht ganz. ;(


    Ich bin jetzt auch kein Profi inAutoit, mach das als Hobby nebenher und kämpfe mich durch die Hilfe und FAQ´s,
    darum muss man mir das etwasverständlicher erklären mein Hirn ist nicht mehr so Aufnahmefähig wie Früher. ;)


    Das Script wird dennoch nach und nacherweitert.

    • Offizieller Beitrag

    Mit v3.3.14.2 funktioniert das ohne Probleme

    Nein, auch dort Syntax-Fehler.


    Zitat

    >Running AU3Check (3.3.14.2) from:C:\Program Files (x86)\AutoIt3 input:C:\Code_AutoIt\TEST\_1test.au3
    "C:\Code_AutoIt\TEST\_1test.au3"(3278,6) : error: syntax error
    $a = [
    ~~~~~^

  • @Kanashius


    Hier noch ein Kleiner Auszug vom Script, so sollte es doch passen oder, versuchen kann ich das heute Abend erst.

    AutoIt
    $data = ($data - $WertZ3 + $WertZ4);Calculate Z with data
    If $data<-99 Then $data=-99 ;Maximanl Wert der Z Achse
    If $data<0 Then $data="0"&$data ;damit keine Null nach dem Z eingetragen wird 
    $arFile[$i] = StringRegExpReplace($arFile[$i], "Z(\d*(?:\.)?\d*)", "Z" & $data)


    Aber wie gesagt Probleme hatte ich bis her nicht, bis auf die angeschrieben.

    • Offizieller Beitrag

    Weil ja auch kein Array angegeben wird. Da fehlt das [] hinter der Variable (vor dem = ).

    Genau das habe ich ja mit meinem Post bemängelt, woraufhin Kanashius meinte, ab 3.3.14.2 ginge das. Mich wundert, dass diese definitiv falsche Syntax angeblich ohne Fehlermeldung laufen soll.

  • Hier mal das Script zum Testen, einfach die NC File in meinem Ersten Post test.txt in orginal.nc umbennen und in das ScriptDir packen.



  • Die Werte werden ja errechnet, so lange der Wert über Null sprich positiv ist Last alles aber sobald er ins negativ geht schreibt das Script eine 0 direkt nach dem Z ich gehen mal von aus dass das Vorzeichen ein Problem ist da wenn ich die Berechnung 2 oder mehr mal durch führen ersetzt er die 0 gegen den berechneten Wert


    Gesendet von meinem SM-G930F mit Tapatalk

  • Wenn du die NC Datei von hier nimmst sind die Grund Werte ja positiv erstell eine mit negativ Werte und benutzt die als original.nc



    Edit:
    @alpines
    Hab dein Eintrag nicht richtig gelesen (vom Handy und das beim Zahnarzt :/ )
    Ich Teste es selber noch mal aber jetzt kapier ich es bald selber nicht mehr ?(