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



