Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Tak jak mówiłem, zamieszczam rysunek aparatury (przepraszam że tak późno). Biedy bo biedny, ale rysownik ze mnie żaden.
A teraz o co chodzi. Mamy dwie komory (1 i 4) to są punkty w których trzymak (ciemniejszy niebieski) ma pozostać określoną ilość sekund. Punkty 2 i 3 są to punkty bezpośrednio nad komorami. Te punkty będą określone przez użytkownika. Dodałem jeszcze jeden punkt (5) jako punkt końcowy który chciałbym aby znajdował się w połowie odległości pomiędzy punktami 2 i 3. Chciałbym aby to był punkt końcowy, jak i w sumie początkowy na dobrą sprawę. Nie będzie on wyznaczany przez użytkownika, powinien być obliczany automatycznie.
W takim układzie układ powinien się poruszać w kolejności 5-2-1(tu czekamy zadaną liczbę sekund)-2-3-4(znowu czekamy)-3-5.
Teraz jak to zrobić? Myślałem aby stworzyć jakiś wewnętrzny "układ współrzędnych" który punkty (0,0) będzie miał w miejscu gdzie znajduje się trzymak podczas uruchomienia programu. Następnie zapamiętać ilość kroków w każdym kierunku, zapamiętać gdzie są dane punkty, zapamiętać czasy, wykonać "jazdę" i zatrzymać się w punkcie 5.
Potem powinien być jeszcze przycisk "powtórz" który powtórzy "jazdę" jeszcze raz.
Czy możecie mi powiedzieć co o tym myślicie, i ewentualnie dać jakieś wskazówki jak połączyć tablice, bo wydaje mi się że trzeba to zrobić na tablicach.
PS. Zmienił mi się termin oddania programu na "jak najszybciej" ale przynajmniej mnie nie zabiją już jak nie oddam tego w poniedziałek.
A teraz o co chodzi. Mamy dwie komory (1 i 4) to są punkty w których trzymak (ciemniejszy niebieski) ma pozostać określoną ilość sekund. Punkty 2 i 3 są to punkty bezpośrednio nad komorami. Te punkty będą określone przez użytkownika. Dodałem jeszcze jeden punkt (5) jako punkt końcowy który chciałbym aby znajdował się w połowie odległości pomiędzy punktami 2 i 3. Chciałbym aby to był punkt końcowy, jak i w sumie początkowy na dobrą sprawę. Nie będzie on wyznaczany przez użytkownika, powinien być obliczany automatycznie.
W takim układzie układ powinien się poruszać w kolejności 5-2-1(tu czekamy zadaną liczbę sekund)-2-3-4(znowu czekamy)-3-5.
Teraz jak to zrobić? Myślałem aby stworzyć jakiś wewnętrzny "układ współrzędnych" który punkty (0,0) będzie miał w miejscu gdzie znajduje się trzymak podczas uruchomienia programu. Następnie zapamiętać ilość kroków w każdym kierunku, zapamiętać gdzie są dane punkty, zapamiętać czasy, wykonać "jazdę" i zatrzymać się w punkcie 5.
Potem powinien być jeszcze przycisk "powtórz" który powtórzy "jazdę" jeszcze raz.
Czy możecie mi powiedzieć co o tym myślicie, i ewentualnie dać jakieś wskazówki jak połączyć tablice, bo wydaje mi się że trzeba to zrobić na tablicach.
PS. Zmienił mi się termin oddania programu na "jak najszybciej" ale przynajmniej mnie nie zabiją już jak nie oddam tego w poniedziałek.
Pozdrawiam
Magoo
Magoo
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Witam wszystkich po bardzo długiej przerwie. Program który się pisał działa i ma się dobrze, no może nie jest to szczyt doskonałości, ale działa. Jednak postanowiłem go zmodernizować aby się lepiej nauczyć LabView, bo nigdy nie wiadomo kiedy się może przydać oraz dlatego że mam teraz troszkę czasu na to.
Tak więc chciałbym po raz kolejny prosić Was o pomoc i radę bo na początek chciałbym zrobić trzy rzeczy, mianowicie:
1.Ustalanie punktów położenia odbywa się aktualnie w wyznaczonej kolejności. Jednak czasami jest łatwiej ustawiać je w innej kolejności (np 2 1 4 3). Chciałbym aby była możliwość zapamiętywania współrzędnych w tablicy w taki sposób aby kolejność wybieranie nie miała znaczenia. Próbowałem to zrobić podając odpowiedni numer wiersza przy każdym naciśnięciu przycisku w Event, ale kończyło się to tym że zawsze zapisywał w pierwszym wierszu.
2.Kolejną rzeczą jaką chciałbym usprawnić jest to aby po zakończeniu działania można było wrócić na początek i wpisać mu nowe dane bez konieczności ponownego uruchamiania programu. Tu na razie nie mam pomysłu jak to zrobić, ale dzisiaj będę na tym siedział więc może coś mi wpadnie do głowy.
To są dwie rzeczy na początek, mam jeszcze kilka pomysłów (jak np zmniejszenie liczby podprogramów), i myślę że sobie z nimi poradzę.
Oczywiście załączam program do przeglądnięcia.
Z góry dzięki za jakiekolwiek rady.
Tak więc chciałbym po raz kolejny prosić Was o pomoc i radę bo na początek chciałbym zrobić trzy rzeczy, mianowicie:
1.Ustalanie punktów położenia odbywa się aktualnie w wyznaczonej kolejności. Jednak czasami jest łatwiej ustawiać je w innej kolejności (np 2 1 4 3). Chciałbym aby była możliwość zapamiętywania współrzędnych w tablicy w taki sposób aby kolejność wybieranie nie miała znaczenia. Próbowałem to zrobić podając odpowiedni numer wiersza przy każdym naciśnięciu przycisku w Event, ale kończyło się to tym że zawsze zapisywał w pierwszym wierszu.
2.Kolejną rzeczą jaką chciałbym usprawnić jest to aby po zakończeniu działania można było wrócić na początek i wpisać mu nowe dane bez konieczności ponownego uruchamiania programu. Tu na razie nie mam pomysłu jak to zrobić, ale dzisiaj będę na tym siedział więc może coś mi wpadnie do głowy.
To są dwie rzeczy na początek, mam jeszcze kilka pomysłów (jak np zmniejszenie liczby podprogramów), i myślę że sobie z nimi poradzę.
Oczywiście załączam program do przeglądnięcia.
Z góry dzięki za jakiekolwiek rady.
- Załączniki
-
- program.zip
- (180.17 KiB) Pobrany 379 razy
Pozdrawiam
Magoo
Magoo
- fajfi
- Posty: 185
- Rejestracja: 28 sty 2004 00:00
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Wrocław
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Chętnie bym się przyjrzał Twojemu programowi, ale nie wiem czemu nie chce mi się on poprawnie rozpakować...
Pozdrawiam
Fajfi
Pozdrawiam
Fajfi
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Przepraszam, że dopiero dziś odpisuję ale miałem małą awarię.
Załączam odpowiednie pliki, tym razem nie spakowane. Zauważyłem też że program nie potrzebuje zerowania (nie gubi punktów jeżeli zacznie pracę w którymkolwiek miejscu), więc pozbyłem się odpowiedniego kawałka kodu.
Dołożyłem też obliczanie głębokości zanurzenia.
Mam jeszcze małe pytanko. Czy w LabView istnieje coś na podobieństwo instrukcji "goto" w pascalu?
Załączam odpowiednie pliki, tym razem nie spakowane. Zauważyłem też że program nie potrzebuje zerowania (nie gubi punktów jeżeli zacznie pracę w którymkolwiek miejscu), więc pozbyłem się odpowiedniego kawałka kodu.
Dołożyłem też obliczanie głębokości zanurzenia.
Mam jeszcze małe pytanko. Czy w LabView istnieje coś na podobieństwo instrukcji "goto" w pascalu?
- Załączniki
-
- SMC_lewo.vi
- ruch silnika w lewo
- (105.16 KiB) Pobrany 367 razy
-
- SMC_gora.vi
- ruch silnika w górę
- (104.38 KiB) Pobrany 323 razy
-
- SMC_dol.vi
- ruch silnika w dół
- (104.57 KiB) Pobrany 351 razy
-
- ruch_silnika.vi
- podprogram realizujący zadaną sekwencję ruchu
- (250.26 KiB) Pobrany 372 razy
-
- Main.vi
- główny plik programu
- (163.64 KiB) Pobrany 376 razy
Pozdrawiam
Magoo
Magoo
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Witam.
Czy ktoś może wie dlaczego program tworzy mi tablicę jednoelementową (patrz rysunek, czerwone kółko) a nie dwuelementową?
Chciałbym stworzyć 4 takie małe tablice aby potem stworzyć jedną tablicę 2x4 (rysunek, zielone kółko).
Czy ja w ogóle dobrze kombinuje z tymi tablicami? Jeżeli nie to co robię źle?
Czy ktoś może wie dlaczego program tworzy mi tablicę jednoelementową (patrz rysunek, czerwone kółko) a nie dwuelementową?
Chciałbym stworzyć 4 takie małe tablice aby potem stworzyć jedną tablicę 2x4 (rysunek, zielone kółko).
Czy ja w ogóle dobrze kombinuje z tymi tablicami? Jeżeli nie to co robię źle?
- Załączniki
-
- Main.vi
- główny plik programu do weryfikacji
- (163.64 KiB) Pobrany 300 razy
Pozdrawiam
Magoo
Magoo
- Pitol
- Moderator
- Posty: 984
- Rejestracja: 19 lip 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Kraków
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
masz ustawioną opcję Concatenate Inputs czy jakoś tak. Kliknij prawym na bloczek Build Array i odznacz tą opcję.
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Zrobiłem tak jak mówiłeś i wszytko działa super, dzięki.
Ale teraz mam następne pytanie. Jak używam "Write To Spreadsheet File.vi" to tam muszę podać ścieżkę, a jeżeli nie podam to będzie się pytał gdzie zapisać dane. Moje pytanie brzmi: czy jest jakaś formułka za pomocą której program będzie rozumiał że ma zapisać plik z danymi w katalogu z głównym programem, czy mam mu wpisać na twardo adres pliku którego będzie używał?
Ale teraz mam następne pytanie. Jak używam "Write To Spreadsheet File.vi" to tam muszę podać ścieżkę, a jeżeli nie podam to będzie się pytał gdzie zapisać dane. Moje pytanie brzmi: czy jest jakaś formułka za pomocą której program będzie rozumiał że ma zapisać plik z danymi w katalogu z głównym programem, czy mam mu wpisać na twardo adres pliku którego będzie używał?
Pozdrawiam
Magoo
Magoo
- smiga
- Administrator
- Posty: 817
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Pewnie że jest ... ten najmniejszy z lewej to Current VI's Patch:
- Załączniki
-
- sciezka.jpg (9.6 KiB) Przejrzano 13086 razy
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Dzięki, działa jak marzenie.
Ale mam jeszcze jedno, ostatnie pytanie na dzisiejszą noc. W "Write To Spreadsheet File.vi" ustawiłem sobie aby podmieniał mi plik z danymi, a nie dodawał do niego nowe dane. Jak zrobić aby się za każdym razem nie pytał czy ma go zamienić? Jak kazałem mu dodawać dane to się nie pytał, a potrzebny mi jest tylko jeden wiersz z danymi.
Podejrzewam że da się to zrobić na jakimś Case, tylko jak wtedy wyciągnąć info, że pojawia się stosowny komunikat?
Ale mam jeszcze jedno, ostatnie pytanie na dzisiejszą noc. W "Write To Spreadsheet File.vi" ustawiłem sobie aby podmieniał mi plik z danymi, a nie dodawał do niego nowe dane. Jak zrobić aby się za każdym razem nie pytał czy ma go zamienić? Jak kazałem mu dodawać dane to się nie pytał, a potrzebny mi jest tylko jeden wiersz z danymi.
Podejrzewam że da się to zrobić na jakimś Case, tylko jak wtedy wyciągnąć info, że pojawia się stosowny komunikat?
Pozdrawiam
Magoo
Magoo
- smiga
- Administrator
- Posty: 817
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Podejrzewam że otwierasz plik w pętli, w której dokonujesz zapisu przy pomocy "Write To Spreadsheet File.vi", więc za każdym razem pyta czy otworzyć / nadpisać plik.
Wystaw otwarcie pliku przed pętlę, jak poniżej ... poniższa konfiguracja o nic nie pyta:
Wystaw otwarcie pliku przed pętlę, jak poniżej ... poniższa konfiguracja o nic nie pyta:
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Cóż, ja chyba nie za bardzo potrafię to zrobić, jak bym nie ustawił, zawsze pyta mnie czy zastąpić plik czy nie plik... ale przede wszystkim nie mogę znaleźć ikon które wykorzystałeś. Czy możesz podać ich nazwy?
Załączam też screen i vi w którym to siedzi.
Załączam też screen i vi w którym to siedzi.
- Załączniki
-
- ruch_silnika.vi
- (232.14 KiB) Pobrany 318 razy
Pozdrawiam
Magoo
Magoo
- smiga
- Administrator
- Posty: 817
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Pierwszy duży żółty to "Open/Create/Replace File" - otwiera plik i podaje referencję do niego.
Tą referencję musimy zamienić na ścieżkę i podać do "Write To Spreadsheet File" - do tego służy mały bloczek "Refnum to Path"
Przy wychodzeniu z programu wypada pozamykać wszystkie referencje - do tego służy "Close File" (po prawej stronie pętli)
... mam nadzieję, że wszystkie wspomniane są w LV 7.1, z którego korzystasz - powinny być w palecie Programming/File I/O
Tą referencję musimy zamienić na ścieżkę i podać do "Write To Spreadsheet File" - do tego służy mały bloczek "Refnum to Path"
Przy wychodzeniu z programu wypada pozamykać wszystkie referencje - do tego służy "Close File" (po prawej stronie pętli)
... mam nadzieję, że wszystkie wspomniane są w LV 7.1, z którego korzystasz - powinny być w palecie Programming/File I/O
Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Ok, zrobiłem troszkę na okrętkę, bo zauważyłem, że moja "chwilowa pozycja" nie jest w pełni uaktualniona w pliku. Użyłem "Flat sequence" i teraz prosi mnie o potwierdzenie tylko jak powiem aby nie nakładam drugiej warstwy, co jest zrozumiałe. Jednak dalej właśnie pyta.
Próbowałem też bez pętli while, ale jest to samo.
Co robię źle?
Próbowałem też bez pętli while, ale jest to samo.
Co robię źle?
Pozdrawiam
Magoo
Magoo
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
OK, już mam. Nie podłączyłem "advisory dialog" i nie zrobiłem na F. Teraz wszytko śmiga.
Pozdrawiam
Magoo
Magoo
Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)
Witam można sie z Panem skontaktować jakoś telefonicznie?? Mikrobi,