Uwagi do funkcji AutoLevel w simCNC v3.600 beta 1

 

Działanie funkcji AutoLevel domyślnie włącza / wyłącza się komendami M151 oraz M150. Są one realizowane poprzez makra M150.py oraz M151.py. Makra te zostaną automatycznie dodane do nowo tworzonego profilu konfiguracji.
Do istniejącego profilu można skopiować je z lokalizacji: „<ścieżka instalacji programu>/python/defaultScripts/scripts”, lub utworzyć samemu.

 

M150.py – makro komendy wyłączającej działanie AutoLevel

d.setAutoLevelingState( AutoLevelingState.Off )
print("AutoLeveling Correction: OFF")

M151.py – makro komendy włączającej działanie AutoLevel

d.setAutoLevelingState( AutoLevelingState.On )
print("AutoLeveling Correction: ON")

Przygotowywane jest przykładowe makro do skanowania siatki punktów, pojawi się wraz z wydaniem beta-2. Na chwilę obecną można poeksperymentować z podawaniem danych do funkcji we własnym zakresie. Poniżej przykładowe makro, które tworzy siatkę punktów (pochylona powierzchnia), wysyła ją do sterownika oraz załącza AutoLevel.

d.setAutoLevelingState( AutoLevelingState.Off )
time.sleep(0.5)
rows = 10
cols = 10
# Initialize the matrix with zeros
matrix: List[List[float]] = [[0.0 for _ in range(cols)] for _ in range(rows)]
def fn_surface(x: int, y: int)->float:
     a = 0.1
     b = 0.2
     c = 1.0
     return (a * x + b * y + c)
for y in range(rows):
     for x in range(cols):
         v = fn_surface(x, y)
         matrix[x][y] = v
d.setAutoLevelingGridData( matrix )
d.setAutoLevelingGridStep( 25.0, 25.0 )
d.setAutoLevelingOrigin( d.getCurrentWorkOffset( ) )
time.sleep(0.5)
d.setAutoLevelingState( AutoLevelingState.On )

 

Do obsługi funkcji AutoLevel z poziomu makra python służą następujące komendy:

 

  • setAutoLevelingState (AutoLevelingState)
    Załączanie / wyłączanie działania AutoLevel
  • getAutoLevelingState()
    Pobranie aktualnego stanu załączenia AutoLevel
  • setAutoLevelingGridData( <2D float array>)
    Przesyłanie danych korekty Z – siatka 10×10 punktów jako tablica 2D wartości korekty Z
  • setAutoLevelingGridStep(<xStep>, <yStep>)
    Odstęp pomiędzy punktami siatki w poziomie i pionie
  • setAutoLevelingOrigin( <abs coords> )
    Ustawienie pozycji punktu „0/0” siatki – koordynaty maszynowe

 

Zaimplementowane zostały również parametry maszynowe:

  • #9100
    Informacja o stanie funkcji AutoLevel
  • #9101
    Aktualna korekta „Z” funkcji AutoLevel – wartość z interpolatora siatki punktów. Przy wyłączonej funkcji AutoLevel wartość korekty = 0.

 

⚠️ Uwagi

  • Funkcja AutoLevel działa transparentnie po stronie sterownika CSMIO/IP. Oznacza to, że nie zobaczymy zmieniającej się wartości osi Z na ekranie wraz ze zmieniającą się korektą. Do podejrzenia wartości korekty służy parametr #9101 – został on wykorzystany w domyślnym interfejsie programu. Jeśli wykorzystywany jest własny projekt interfejsu, można dodać w nim widżet wyświetlający korektę. Wejście widżetu: „Machine Param” oraz ustawić nr #9101.
  • Funkcja AutoLevel nie ogranicza prędkości/przyspieszenia osi. Z założenia, służy do wprowadzania niewielkich korekt niedoskonałości powierzchni. Ustawienie siatki punktów, w której pomiędzy punktami występują duże różnice poziomu, może powodować przekroczenie limitów prędkości/przyspieszenia dla osi Z, a w skrajnych przypadkach również wystąpienie błędu regulatora PID osi Z. Odpowiednią weryfikację danych np. po skanowaniu powinien przeprowadzić skrypt python przed wywołaniem d.setAutoLevelingGridData.
  • Funkcja AutoLevel działa na koordynatach maszynowych, czyli zmiana bazy materiałowej nie przesunie siatki punktów. Do tego służy funkcja d.setAutoLevelingOrigin