Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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.
Załączniki
aparatura.jpg
Pozdrawiam
Magoo
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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.
Załączniki
program.zip
(180.17 KiB) Pobrany 378 razy
Pozdrawiam
Magoo
Awatar użytkownika
fajfi
Posty: 185
Rejestracja: 28 sty 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Wrocław

Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: fajfi »

Chętnie bym się przyjrzał Twojemu programowi, ale nie wiem czemu nie chce mi się on poprawnie rozpakować...
Pozdrawiam
Fajfi
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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łączniki
SMC_lewo.vi
ruch silnika w lewo
(105.16 KiB) Pobrany 366 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 350 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 375 razy
Pozdrawiam
Magoo
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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?
Załączniki
Main.vi
główny plik programu do weryfikacji
(163.64 KiB) Pobrany 300 razy
tablica1.jpg
Pozdrawiam
Magoo
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Pitol »

masz ustawioną opcję Concatenate Inputs czy jakoś tak. Kliknij prawym na bloczek Build Array i odznacz tą opcję.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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ł?
Pozdrawiam
Magoo
Awatar użytkownika
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)

Post autor: smiga »

Pewnie że jest ... ten najmniejszy z lewej to Current VI's Patch:
Załączniki
sciezka.jpg
sciezka.jpg (9.6 KiB) Przejrzano 13075 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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?
Pozdrawiam
Magoo
Awatar użytkownika
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)

Post autor: smiga »

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:
Załączniki
zapis do spreadsheet.jpg
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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łączniki
zapis_do_pliku.jpg
ruch_silnika.vi
(232.14 KiB) Pobrany 317 razy
Pozdrawiam
Magoo
Awatar użytkownika
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)

Post autor: smiga »

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
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Re: Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

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?
Załączniki
zapis_do_pliku2.jpg
Pozdrawiam
Magoo
Awatar użytkownika
Magoo
Posty: 17
Rejestracja: 08 sty 2010 09:06
Wersja środowiska: LabVIEW 7.1

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: Magoo »

OK, już mam. Nie podłączyłem "advisory dialog" i nie zrobiłem na F. Teraz wszytko śmiga.
Pozdrawiam
Magoo
wojtas315
Posty: 3
Rejestracja: 20 wrz 2010 14:54
Wersja środowiska: LabVIEW 8.6

Sterowanie dwoma silnikami krokowymi (RS232, Euro, SMC)

Post autor: wojtas315 »

Witam można sie z Panem skontaktować jakoś telefonicznie?? Mikrobi,
ODPOWIEDZ