SZARP PLC HOWTO | ||
---|---|---|
Poprzedni | Rozdział 18. Przenoszenie programów z platformy 2313 (2305) na 2320 i nowsze oraz z 2309 na 2315/2316 (mini HOWTO) | Następny |
W platformie 2321 dostępne są dwie metody liczenia częstotliwości impulsów na wejściach logicznych:
algorytm GVAL_PRECISE - algorytm przeniesiony z platformy 2313 - jest dokładny, posiada wysoką rozdzielczość pomiaru, szybko nadąża za zmianami częstotliwości impulsów; algorytm ten jednak nie nadaje się do mierzenia częstotliwości impulsów w sytuacji, gdy częstotliwość ta ulega periodycznym, skokowym zmianom (tak jak np. przy pracy dwustanowej rusztu)
algorytm obsługuje wejścia logiczne nr 3, 4, 5 i 6
algorytm potrzebuje co najmniej dwóch pełnych impulsów w oknie czasowym do poprawnego działania
algorytm GVAL_INERT - poprawiony algorytm z platformy 2305 - działa dość bezwładnie, posiada niską rozdzielczość chwilowego wyniku pomiaru (nie dotyczy to jednak wartości średniej pomiaru przy odpowiednio długim okresie uśredniania), oprócz tego zastosowany sposób uśredniania powoduje, to że algorytm nie przekłamuje wartości średniej w dłuższym okresie przy zliczaniu impulsów o okresowo zmiennej częstotliwości - a zatem (w przeciwieństwie do GVAL_PRECISE) dobrze nadaje się m. in. do pomiaru szybkości posuwu rusztu w pracy dwustanowej
algorytm obsługuje tylko wejścia logiczne nr 5 i 6 (należy upewnić się, że w trakcie korzystania z tego trybu nie wykorzystujemy innych wejść do pomiaru częstotliwości impulsów)
algorytm potrzebuje co najmniej dwóch pełnych impulsów w oknie czasowym do poprawnego działania
Zmiany aktywnego algorytmu można dokonać przy pomocy funkcji SetGValMode(unsigned char mode), zaś aktualny algorytm można odczytać ze zmiennej GVal_Mode. Głównym zastosowaniem algorytmu GVAL_INERT będzie pomiar szybkości rusztu w pracy dwustanowej, poniżej przykładowe wykorzystanie tego trybu pracy w programie technologicznym:
Index: koczwyk.c =================================================================== --- koczwyk.c (.../2313/1001/koczwyk.c) (revision 3319) +++ koczwyk.c (.../2321/1001/koczwyk.c) (working copy) @@ -2346,8 +2345,10 @@ void Wykonaj () if (!RUSZT2STAN){ imp_r_min = 0; imp_r_max = 0; wyp = 0; timer_wyp = 0; L_RUSZT_HI = NO ; + if(GVal_mode != GVAL_PRECISE) + SetGValMode(GVAL_PRECISE); } @@ -2489,21 +2490,24 @@ void Wykonaj () } else if(RUSZT2STAN) { + if(GVal_mode != GVAL_INERT) + SetGValMode(GVAL_INERT); timer_wyp = (timer_wyp + 1) % TIMER_2STAN_CYCLE ; imp_r_min = tx_imp_r_min ; imp_r_max = tx_imp_r_max ; wyp = tx_wyp ; if ((timer_wyp * 2)> tx_wyp){ imp_r = tx_imp_r_min; L_RUSZT_HI = NO ; }else{ imp_r = tx_imp_r_max; L_RUSZT_HI = YES ; } if (tx_wyp == 0){ imp_r = tx_imp_r_min; L_RUSZT_HI = NO ; } if (tx_wyp == 2 * TIMER_2STAN_CYCLE){ imp_r = tx_imp_r_max; L_RUSZT_HI = YES ; } }
Poprzedni | Spis treści | Następny |
Dodatkowe uwagi nt. platformy 2320 | Początek rozdziału | Przenoszenie programów z platformy 2321 na 3000 i nowsze (mini HOWTO) |