przez gruku » Pt, 19 mar 2010, 20:17
Zaczynając od początku. Sterownik Vision V280. Zadawanie prędkości walców wykonane zostało w oparciu o wyjście analogowe, zaś sterowanie wysokością opiera się na zastosowaniu enkodera inkrementalnego. Ciężko mi trochę wyjaśnić mój problem, ale postaram się jakoś nakreślić go bardziej. Program zadawania wysokości wykonany jest w taki sposób,że zadaję wartość na panelu. W momencie zatwierdzenia wartości następuję ustawienie się wysokości walców na tej wartości. Podobnie jest z regulacją prędkości. Na jednym ekranie mam zadawanie wartości dla wysokości i prędkości są oddzielne zmienne. Cały szkopuł polega na tym, że chciałem zrobić tak aby zarówno wysokość jak i prędkość była ustawiana w momencie w którym operator wpisze zadaną wartość do konkretnej zmiennej i ją zatwierdzi (zatwierdzenie wartości wykonywane jest przez naciśnięcie entera). Załóżmy teraz, że operator wpisał wartość zadaną wysokości na 30mm po wpisaniu tej wartości aby została ona zapisana wciska enter w tym momencie walce ustawiają się na zadanej wysokości (tu wszystko jest ok). Następnie operator doregulowuje wysokość za pomocą ręcznego pokrętła. Powiedzmy, że wysokość została ustawiona na 35mm. Cały czas należy pamiętać że wartość 20mm zapisana jest do zmiennej (została ona zapisana w momencie zadawania wartości wysokości), program jest tak stworzony że po wykonaniu jednego cyklu podnoszenia lub opuszczania zatrzymuję się i operator może dowolnie regulować ręcznie wartość wysokości (ręcznie tzn. bez użycia panelu tylko regulacją mechaniczną). Teraz w momencie kiedy operator zechce zmienić wartość prędkości tak samo jak dla wysokości podaję jakąś wartość do zmiennej na ekranie i ją zatwierdza naciskając enter. Ta wartość jest ustawiana do odpowiedniej zmiennej i odpowiednio ustawia prędkość problemem jest właśnie ten enter. Obie wartości zatwierdza się enterem a warunkiem rozpoczęcia ustawienia wysokości lub prędkości jest właśnie ten enter. Jak rozróżnić że operator potwierdza wartość tylko wysokości zaś prędkość go nie interesuje w tym momencie. Pewnym rozwiązaniem okazała się zmienna systemowa SI41. Na jej podstawie określam którą zmienną dotknął operator i którą zatwierdza, jednakże nie zawsze konieczne jest dotykanie panelu by zmienić wartość w momencie przechodzenia pomiędzy ekranami kursor ustawia się na zadawanie wysokości i operator ma możliwość zadania wysokości bez dotykania. W moim rozwiązaniu zmienna wysokości musi być dotknięta inaczej nie zostanie odblokowane ustawianie wysokości. Wiem że to jest zawiłe ale ciężko coś opisać łatwiej jest pokazać. Może ktoś mi podrzuci jakiś pomysł. PS. Jeszcze wracam do pytania poprzedniego czy bloczek event może kolidować w jakiś sposób z podprogramem interrupt 2.5ms i czy interupt 2.5ms należy deklarować w programie głównym?.