zaokrąglenie wartości parametru

Dyskusje na temat systemu Faunc
Awatar użytkownika

Autor tematu
zflaczały
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 138
Rejestracja: 07 gru 2006, 17:14
Lokalizacja: sandefjord norge

zaokrąglenie wartości parametru

#1

Post napisał: zflaczały » 19 kwie 2012, 17:06

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ł...?


ludzi nie ma, jedz drzem

Tagi:

Awatar użytkownika

grg12
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1670
Rejestracja: 03 sty 2007, 14:27
Lokalizacja: Wiedeń

#2

Post napisał: grg12 » 19 kwie 2012, 17:27

Pomnóż przez 1000, ROUND, podziel przez 1000? Tylko po co?

Awatar użytkownika

Autor tematu
zflaczały
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 138
Rejestracja: 07 gru 2006, 17:14
Lokalizacja: sandefjord norge

#3

Post napisał: zflaczały » 19 kwie 2012, 17:32

grg12 pisze: Tylko po co?
ke?
#100=0,123456789
#101=ROUND[[#100]*1000]/1000

taka składnia będzie git?
ludzi nie ma, jedz drzem

Awatar użytkownika

grg12
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1670
Rejestracja: 03 sty 2007, 14:27
Lokalizacja: Wiedeń

#4

Post napisał: grg12 » 19 kwie 2012, 18:18

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ę

Awatar użytkownika

Autor tematu
zflaczały
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 138
Rejestracja: 07 gru 2006, 17:14
Lokalizacja: sandefjord norge

#5

Post napisał: zflaczały » 19 kwie 2012, 19:26

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
ludzi nie ma, jedz drzem

Awatar użytkownika

grg12
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1670
Rejestracja: 03 sty 2007, 14:27
Lokalizacja: Wiedeń

#6

Post napisał: grg12 » 19 kwie 2012, 19:59

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).

Awatar użytkownika

Autor tematu
zflaczały
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 138
Rejestracja: 07 gru 2006, 17:14
Lokalizacja: sandefjord norge

#7

Post napisał: zflaczały » 19 kwie 2012, 22:27

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...
ludzi nie ma, jedz drzem

Awatar użytkownika

grg12
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1670
Rejestracja: 03 sty 2007, 14:27
Lokalizacja: Wiedeń

#8

Post napisał: grg12 » 19 kwie 2012, 22:50

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"

Awatar użytkownika

Autor tematu
zflaczały
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 138
Rejestracja: 07 gru 2006, 17:14
Lokalizacja: sandefjord norge

#9

Post napisał: zflaczały » 19 kwie 2012, 23:01

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
ludzi nie ma, jedz drzem

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Fanuc”