Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Program sterowania windą język LAD.

magister99 27 Mar 2022 10:34 600 9
Nazwa.pl
  • #1
    magister99
    Level 3  
    Witam. W ramach nauki chcę zrobić sterowanie windy 3 poziomowej w języku LAD w programie tia portal v14. Będzie to mój pierwszy tak "duży" projekt. W projekcie będzie:
    -krańcówka dolna (pierwsze piętro)
    -czujnik na środku (drugie piętro)
    -krańcówka górna (trzecie piętro)
    -na każdym piętrze będzie przycisk przywołania windy (razem 3 przyciski)
    -w kabinie będą przyciski do wyboru piętra (3 przyciski)
    -oraz element wykonawczy silnik
    Opis pracy:
    1.Wciśnięcie przycisku przywołania.
    2.Jazda windy na piętro, gdzie wciśnięto przywołanie. W czasie jazdy winda zatrzymuje się na piętrach w których też wciśnięto przywołanie.
    3.Wybór piętra przez człowieka.
    4.Jazda na dane piętro. W czasie jazdy winda zatrzymuje się na piętrach w których też wciśnięto przywołanie.

    Co myślicie o napisaniu tego programu? Jest to duże wyzwanie?
    Moje doświadczenie to programowanie tylko w języku FBD
  • Nazwa.pl
  • #2
    Ravender
    Level 20  
    "Co myślicie o napisaniu tego programu?"
    Potrwa to co najmniej z godzinę i dwa piwa.

    "Jest to duże wyzwanie?"
    Nie

    Mam nadzieję, że pomogłem :)
  • Nazwa.pl
  • #3
    romulus73
    Level 27  
    Same wytyczne co napisałeś to dziecko wymyśli.
    Falownik, hamulec, enkoder absolutny, bazowanie po zaniku napięcia, przejazd do bazowaniana, krańcówki- co chcesz zatrzymać, w miejscu taką bezwładność? A jak startuje silnik bez hamulca, gdy działa grawitacja, itd.
    Ja idę schodami nie wsiadam do twojej windy
  • #4
    magister99
    Level 3  
    Nie chcę budować windy do użytku codziennego, to ma być tzw stanowisko dydaktyczne, silnik z przekładnią ślimakową, winda będzie leciutka więc silnik poradzi sobie
  • #5
    nuszek
    Level 29  
    magister99 wrote:
    ma być tzw stanowisko dydaktyczne

    Tym bardziej, powinna zawierać wszystkie układy sterujące jak prawdziwa winda.
    Napisanie programu, to nie tylko logika samego programu, ale też prawidłowe i bezpieczne założenia jak ten program ma działać.
  • #6
    Kuniarz
    Moderator of Designing
    Trochę mi to śmierdzi pracą zaliczeniową, może nawet dyplomową ? ;-) Student nie wie jak to ogarnąć i pod przykrywką nauki własnej liczy na gotowca z forum ? ;-)
  • #7
    magister99
    Level 3  
    Nikt nie liczy na żadnego gotowca... Język FBD a LAD to jak widzę zupełnie coś innego, Zastanawia mnie jak zrobić to, że jeśli winda jest na 1 piętrze, ktoś wciśnie przywołanie na 3 piętrze i winda zacznie jechać do niego, ale po drodze ktoś wciśnie przywołanie na piętro 2 i jak winda zatrzyma się na 2 piętrze i ktoś wciśnie, że chce jechać na piętro 1, to winda będzie pamiętała, że najpierw musi jechać na piętro 3, bo tam było wciśnięte najpierw przywołanie...
    To musi być wpięte w jakąś pętle? Prosiłbym o jakieś wskazówki jak podejść do tego problemu ;)
  • Helpful post
    #8
    stachu_l
    Level 34  
    magister99 wrote:
    Prosiłbym o jakieś wskazówki jak podejść do tego problemu
    Jest na forum temat o windach (w zasadzie dźwigach osobowych): https://www.elektroda.pl/rtvforum/topic1975995.html
    Winda najczęściej ma w danej chwili wyznaczony kierunek jazdy (góra, dół) i realizuje wezwania możliwe do zrealizowania w danym kierunku a potem zmienia kierunek jazdy i realizuje resztę.
    W bloku mieszkalnym najczęściej jest "sterowanie zbiorcze w dół" (poszukaj takiego hasła) - z założenia winda najczęściej przemieszcza się między piętrem X i parterem w jedna albo druga stronę - ktoś wychodzi z domu lub wraca do domu.
    Winda jedzie w górę na najwyższe piętro wezwania (przycisk na piętrze lub w kabinie) i zatrzymuje się na piętrach wciśniętych tylko w kabinie. Jak wraca w dół to zatrzymuje się na wszystkich wciśniętych pietrach (tych w kabinie i tych na pietrach). Domyślne założenie - jak wciskasz przycisk na pietrze to chcesz jechać w dół.
    W biurowcach czy centrach handlowych występuje sterowanie zbiorcze w obu kierunkach (góra/dół) i masz dwa przyciski na piętrze aby wybrać gdzie chcesz jechać. Nad drzwiami jest też wyświetlacz w która stronę dana winda właśnie jedzie.
    Jak wsiądziesz do niewłaściwej i chcesz pojechać z pietra 1 na 3 to może się okazać, że tam dotrzesz ale przez poziom garażu -2.
    Większą wiedzą co jest dokładnie w układach sterowania dysponują osoby z podanego wątku.
  • Helpful post
    #9
    Ravender
    Level 20  
    Dobra.. Najprostsza chyba metodologia jaką jestem w stanie wymyślić.

    Masz trzy stany i przypisujesz im wartość liczbową.
    0 - STOP - brak
    1 - JAZDA W GÓRĘ
    2 - JAZDA W DÓŁ

    Tworzysz sobie DataBlock ze statusem przycisków dla kazdego piętra (array of int). Proponuję do numeru piętra dodać liczbę 100 by się nie zamotać potem. Czyli piętro 1 będzie miało numer 101 itd. Przyciski na każdym piętrze powinny być dwa.. W GÓRĘ i W DÓŁ. Przypisujesz im wartość liczbową:
    0 - brak przycisku
    1 - chcę jechać w górę
    2 - chcę jechać w dół


    Program musi sprawdzać czy w tabeli pięter któraś wartość na piętrze zmieniła się z 0 na 1 lub 2.

    Jeśli osoba na piętrze 1 wciśnie przycisk (do góry) a winda ma status 0-STOP i znajduje się powyżej piętra 1, to ten status zmieniasz na 2-JAZDA W DÓŁ i rozpoczynasz ruch. Analogicznie odwrotnie.

    Winda dojeżdża, pasażer wsiada i wciska przycisk np. piętro numer 6. Więc wpisujesz w tabeli na pozycji 106 np. to co tam już jest + jakaś liczba.. np. 50. Więc jak nikt na piętrze 6 nic nie wciskał to jest 50+0 więc wpisujesz 50.

    Winda jedzie i sprawdza, czy po drodze na górę nie pojawiły się jakieś liczby w górę (1) lub zatrzymania (x + 50). Jeśli tak, to zatrzymuje się na piętrze i zeruje wskaźnik dla danego piętra na 0. Analogicznie w drugą stronę.

    To chyba tyle.. najbardziej łopatologiczne rozwiązanie.

    Tam jeszcze można trochę podyskutować w kwestii jakiś wyjątków i różnych sytuacji "pośrednich" ale nie będę odwalał pracy domowej za ciebie.
  • #10
    magister99
    Level 3  
    @Ravender @stachu_l , dzięki za odpowiedzi, dużo nakreśliło mi to w dalszej pracy nad tym programem ;)