UCCNC vezérlő program

Indította gaben, 2024 április 09, 16:54

Előző téma - Következő téma

zcadjrtvj

Uccnc verziószáma: 1.2115
UC300ETH-5LPT Fw: 1.0380

"A beállításokat az UCCNC tárolja és induláskor letölti a vezérlőbe." Akkor így történik meg. De a lényeg, hogy már kb 10-edik ugyanolyan, de mindig más adatokkal lesz tele. Most portokat írt össze.
Tegnap kikapcsoltam a gépet, minden ment rajta. Ma reggel a köd port "átmászott" a 3-as port 17-es pinjéről a 3-as port 14-es pinjére. Persze oda nincs bekötve, így nem is működött. Visszakötöm az UCCNC-ben, és nem működik. Magasat mérek a pinen. Na mondom, akkor ezzel nem játszom tovább, átkotom az egyes port 17-es pinjére. Az is magas. Na mondom nekem ez magas, megnézem a flood szelepet mert az működik a 2-es port 17-es pinjén. Voálá, ott működik a szelep, mérek magasat, alacsonyat, ahogy kell. Na igenám, de sehol máshol nem megy. Most vagy én vagyok alvajáró, vagy a macskák táltosodtak meg, vagy itt valami gebasz van.

"Olyan szokott még előfordulni, hogy az UCCNC még nem lépett ki teljesen, de leállítod a gépet." A leállítási ciklusom: kilpek az uccnc-ből, hogy megjegyezze a koordinátákat, majd leállítom a windowst.

"Feszültséget - gondolom - úgy mérsz, hogy nincs rákötve semmi a kimenetre." Igen.

huatn6gfd

Nem tudom, hogy milyen katyvasz van nálad, de ilyet nem csinál az UCCNC. Ha csak úgy átírogatna port/pin értékeket, már rég elsodorta volna a népharag. Azt tudom elképzelni, hogy beállítod, alkalmazod (apply), de nem mented a beállításokat. Extrém esetben még az is lehet, hogy M99999-ben, macroloop-ban vagy plugin-ban valami piszkálja a beállításokat, de ez sem valószínű. Megnézném a profilod tartalmát, hátha abból kiderül valami. Küldd el mail-ben.

gsz03b27r

Egy teljesen tiszta telepítés.
HDD formázás Win telepítés.
UCCNC telepítés beállítás-Mentés.

huatn6gfd

Nagyon jól hangzik, de csak időtöltésnek jó. Ha UCCNC-ben "tiszta telepítést" akarsz, akkor hozz létre egy új profilt és kézzel állítsd be. Ennyi.

gsz03b27r

A Win és a virusok igazán jó párost alkotnak a káosz létrehozásához.
Még tesztelném a memoriát, processzort,monitorvezérlőt is, mert valami gethes.

7w9huz0vb

Az UCCNC nem tudja a golyósorsó hibákat szoftveresen korrigálni, semmi baj ez egy tulajdonság.
Gondoltam akkor a G kódot írjuk át úgy, hogy a hibákat a szkript modosítja a bevitt hibaértékeknek megfelelően.
Ez még nagyon gyerekcipőben jár és tulajdonképpen magamnak csináltam, de hátha valaki más is szeretné használni, ezért megosztom. Megosztom a CVS formátumot is, mert az fontos hogy ilyen legyen. ez most csak 3 tengelyt korrigál de nyilván az 5-öt is tudja.
Ez a szkript az alapja


import pandas as pd
import numpy as np
import re
import tkinter as tk
from tkinter import filedialog, messagebox

# Hibák betöltésére szolgáló függvény
def load_errors(error_file):
    # Hibák betöltése a CSV fájlból pontosvessző elválasztóval
    error_df = pd.read_csv(error_file, delimiter=';', encoding='utf-8')
   
    return error_df

# Lineáris interpoláció a hibákhoz
def interpolate_error(coord, coord_name, errors):
    if coord < errors[coord_name].min() or coord > errors[coord_name].max():
        print(f"{coord_name} koordináta ({coord}) kívül esik a táblázat értékein.")  # Debug
        return 0  # Ha a koordináta kívül esik a táblázat értékein, nem alkalmazunk hibát

    lower_bound = errors[errors[coord_name] <= coord].iloc[-1]
    upper_bound = errors[errors[coord_name] >= coord].iloc[0]

   

    if lower_bound[coord_name] == upper_bound[coord_name]:
        print(f"Pontos találat {coord_name} tengelyen: {lower_bound[coord_name]}")  # Debug
        return lower_bound[f'error_{coord_name.lower()}']  # Ha pontosan egy adatponttal egyezik

    c1, e1 = lower_bound[coord_name], lower_bound[f'error_{coord_name.lower()}']
    c2, e2 = upper_bound[coord_name], upper_bound[f'error_{coord_name.lower()}']

   

    # Lineáris interpoláció
    interpolated_error = e1 + (coord - c1) * (e2 - e1) / (c2 - c1)
    return interpolated_error

# G-kód javító függvény, amely X, Y és Z tengelyek hibáit korrigálja
def correct_gcode(input_file, output_file, errors):
    try:
        with open(input_file, 'r', encoding='utf-8') as file:
            lines = file.readlines()
       
        with open(output_file, 'w', encoding='utf-8') as file:
            for line in lines:
               
                # Regex a koordináták beolvasásához (formátum: Y29.702Z-9.727 vagy X-4.375Y31.695Z1.)
                matches = re.findall(r'[XYZ]-?\d+\.\d*', line)
                coords = {match[0]: float(match[1:]) for match in matches}

                x_corrected = y_corrected = z_corrected = None  # Kezdetben None-ra állítjuk
               
                if 'X' in coords or 'Y' in coords or 'Z' in coords:
                    if 'X' in coords:
                        x = coords['X']
                        error_x = interpolate_error(x, 'X', errors)
                        x_corrected = x + error_x
                       
                   
                    if 'Y' in coords:
                        y = coords['Y']
                        error_y = interpolate_error(y, 'Y', errors)
                        y_corrected = y + error_y
                       
                    if 'Z' in coords:
                        z = coords['Z']
                        error_z = interpolate_error(z, 'Z', errors)
                        z_corrected = z + error_z
                       
                   
                    # Új sor összeállítása a javított koordinátákkal
                    corrected_line_parts = []
                    for part in re.finditer(r'([XYZ]-?\d+\.\d*)', line):
                        prefix = part.group()[0]
                        value = part.group()[1:]
                        corrected_value = float(value)
                        if prefix == 'X' and x_corrected is not None:
                            corrected_value = x_corrected
                        elif prefix == 'Y' and y_corrected is not None:
                            corrected_value = y_corrected
                        elif prefix == 'Z' and z_corrected is not None:
                            corrected_value = z_corrected
                        corrected_line_parts.append(f"{prefix}{corrected_value:.4f}")
                   
                    corrected_line = ' '.join(corrected_line_parts) + '\n'
                   
                   
                    file.write(corrected_line)
                else:
                    file.write(line)
    except FileNotFoundError:
        print(f"A fájl nem található: {input_file}")
    except Exception as e:
        print(f"Hiba történt: {e}")

# GUI funkció
def process_files():
    input_file = filedialog.askopenfilename(title="Válassza ki a bemeneti G-kód fájlt", filetypes=[("G-kód fájlok", "*.tap")])
    error_file = filedialog.askopenfilename(title="Válassza ki a hibafájlt", filetypes=[("CSV fájlok", "*.csv")])
    output_file = filedialog.asksaveasfilename(title="Mentse a kimeneti G-kód fájlt", defaultextension=".nc", filetypes=[("G-kód fájlok", "*.nc")])

    # Ellenőrizd, hogy a fájlok kiválasztásra kerültek
    if input_file and error_file and output_file:
        errors = load_errors(error_file)
        correct_gcode(input_file, output_file, errors)
        messagebox.showinfo("Kész", "A G-kód javítása befejeződött!")

# Ablak létrehozása
root = tk.Tk()
root.title("G-Kód Hibakorrekciós Program")

process_button = tk.Button(root, text="Fájlok feldolgozása", command=process_files)
process_button.pack(pady=20)

root.mainloop()


https://drive.google.com/file/d/1Oox-pi-UBoII2phNGaxqQiKDSVn4rmq0/view?usp=sharing

https://drive.google.com/file/d/1XckAU18Zh_iu1cRDmP9peyX7uGjADB0m/view?usp=sharing

7w9huz0vb

Nincs benne vírus, rá lehet engedni a vírusirtókat, csak én nem tudom digitálisan aláírni, nem tudom hogyan kell.

pryudwrhu

Sziasztok! UCCNC eszterga szerszámcserélő makrónál valamilyen módon meg lehet határozni automatikusan a betöltött G-kódból a munkadarab legnagyobb Z és X méretét? Ezzel az lenne a cél hogy egy biztonságos pozícióban hajtsa végre a szerszámcserét az aktuális munkadarabhoz képest. Esetleg milyen alternatív megoldások lehetnek, kérlek segítsetek.

huatn6gfd

Szia! A job properties oldalon ott vannak az általad kért adatok. A mezők értéke lekérdezhető.

pryudwrhu


pryudwrhu

888 Diagnostics_maxX  
890 Diagnostics_maxZ    
885 Diagnostics_minX  
886 Diagnostics_minY  
887 Diagnostics_minZ  
 
891 Diagnostics_sizeX  
893 Diagnostics_sizeZ

Ezekre gondoltál? Még nem kezdtem írni a makrót. Bármilyen segítség jól jönne. Esetleg valami leírást a makrókhoz tudsz ide belinkelni?

pryudwrhu

Demo módban figyelmen kívül hagyja az M6.txt makrót? Bármit írok azt írja ki, hogy: tool changed,cycle stop at and....
Másik gépen írnám a makrót, mert a CNC-nél eléggé kényelmetlen. Egyébként megtaláltam a leírásokat a Documentation mappában.

3ztiz2p39

A Settings/general setup-ban emgedélyezd az M6-ot

pryudwrhu

Köszönöm szépen! Arra figyeltem, hogy be legyen állítva.

huatn6gfd

Miután beállítottad, nyomtál apply vagy save settings gombot? Mert a beállításokat el is kell fogadni.