Strona 1 z 1
zaokrąglenie wartości parametru
: 19 kwie 2012, 17:06
autor: zflaczały
witam
czy da się zaokrąglić wartość np. do trzeciego miejsca po przecinku ??? wykorzystując do tego np. ROUND, FIX, FUP... ma ktoś jakiś pomysł...?
: 19 kwie 2012, 17:27
autor: grg12
Pomnóż przez 1000, ROUND, podziel przez 1000? Tylko po co?
: 19 kwie 2012, 17:32
autor: zflaczały
grg12 pisze: Tylko po co?
ke?
#100=0,123456789
#101=ROUND[[#100]*1000]/1000
taka składnia będzie git?
: 19 kwie 2012, 18:18
autor: grg12
zflaczały pisze:grg12 pisze: Tylko po co?
ke?
Zastanawiam się po co chcesz zaokrąglać - parametry są "wewnętrznie" przechowywane w postaci zmiennoprzecinkowej która z zasady nie jest w stanie dokładnie wyrazić wszystkich wartości - po zaokrągleniu może się okazać że zamiast 0.123 dostaniesz coś w rodzaju 0.12300001 albo 0.122999999. Mogę się jedynie domyślać że wkurza cię ekran sterownika wyświetlający długie liczby

Jeśli o to chodzi - zamiast modyfikować wartość parametru poszukaj w instrukcji jak się ustawia format wyświetlania.
Co do składni - wygląda ok ale gwarancji nie daję
: 19 kwie 2012, 19:26
autor: zflaczały
Chodzi mi raczej o uzyskanie 0,123 zamiast 0,123456789, a cel prawie odgadłeś. Makropolecenie przeliczające różnicę między odczytem z sondy a wymiarem zadanym po kilkudziesięciu operacjach wywala mi jakiś kwiatek w stylu zamiast Z=0 to w tabeli offsetów zapisuje Z=0,001...??? o co chodzi ???? co ciekawe błąd ten występuje TYLKO przy ustawieniu głowicy na kątach innych jak +-90 i 0 stopnia i TYLKO przy zorientowaniu narzędzia na M436, nic takiego nie mam miejsca na dowolnych kątach przy M437!! o co biega???
Matematycznie błędu nie widzę, jedyne co mi przyszło do głowy to albo #2025 w przypadku Patrycji jest to różnica między M436 i 437 (równa 0,016) ale to różnica jest przeliczana w offsecie geometrycznym... więc raczej nie tędy droga.
Druga opcja: błąd wynika z błędu zapisu maszyny x10-9 w przypadku przeliczania sin/cos, tak więc offset powinien wynosić x=0,003 z=0. po przeliczeniu wynosi x=-2,x10-12 z=1,x10-12 (maszyna oczywiście pokazuje 0,003... bo tak jest ustawiony ekran sterownika

) i po kolejnej zamianie na współrzędne kątowe np. dla B=-45. sin/cos daje nam x=0,00300568 i z=0,000000214, z powrotem to przelicza, wysyła do tabeli i błąd się multiplikuje dając w efekcie x=0,003 z=0,001 (w tabeli), to tak w skrócie, może jakieś sugestie bo mi już pomału ręce opadają na samą myśl o tym
: 19 kwie 2012, 19:59
autor: grg12
Niestety niewiele zrozumiałem (nie znam sterownika Fanuc) ale charakter błędu sugeruje że twoje makro przy każdym kroku akumuluje wartości offsetów (żeby wyznaczyć aktualną pozycję?). Jeśli tak - błąd będzie z każdym krokiem rósł. Zaokrąglanie offsetu jest niebezpieczne - przy pewnych wartościach parametrów będzie działać, przy innych błąd będzie narastał jeszcze szybciej niż teraz (coś jak aktualna wersja - przy niektórych kątach działa, przy innych nie).
: 19 kwie 2012, 22:27
autor: zflaczały
grg12 pisze:charakter błędu sugeruje że twoje makro przy każdym kroku akumuluje wartości offsetów
nie bardzo rozumie co masz na myśli, tak czy siak makro pobiera aktualny wear offset dodaje lub odejmuje wartość przesunięcia dla danego kąta B i wysyła do tabeli offsetów, po czym kasuje wszystkie tymczasowe wartość, banalne w konstrukcji i niezawodne w działaniu z małym wyjątkiem...
: 19 kwie 2012, 22:50
autor: grg12
Czyli nie zrozumiałem problemu. Tego typu błędy są charakterystyczne dla programów które wiele małych wartości sumują jakąś inną wartość (np. sumują tysiąc malutkich offsetów żeby wyliczyć coś tam) pomyślałem więc że twoje makro coś takiego robi - w każdym kroku mierzy offset, przemnaża go przez sinus/cosinus i dodaje do "sumy offsetów"
: 19 kwie 2012, 23:01
autor: zflaczały
tak czy siak zaokrąglenie do trzeciego miejsca po przecinku powinno rozwiązać problem, jeśli ta funkcja będzie działać...
[ Dodano: 2012-04-24, 18:58 ]
#100=0,123456789
#100=[ROUND[#100*1000]]/1000
#100=0,123