logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Step7. SCL + LAD . Problem z wywołaniem funkcji w OB1

kminek18 27 Kwi 2008 16:18 3774 6
  • #1 5082050
    kminek18
    Poziom 10  
    Posty: 12
    Ocena: 1
    Witam. Pisze program w którym ma być obliczana kinematyka odwrotna manipulatora + mierzenie cykli sterownika. Program składa się z kilku funkcji (FC) , wszystkie zmienne umieszczone są w bloku DB1. Utworzona jest także funkcja w której są wywoływane pozostałe w odpowiedniej kolejności.

    Nie wiem jak sprawdzać poprawnie #OB1_PREV_CYCLE w SCL więc blok OB1 został utworzony w języku LAD. Podczas próby uruchomienia programu na symulatorze S7-PLCSIM dochodzi on do bloku z funkcja , która wywołuje resztę i wywala błąd (Zatrzymuje symulator sterownika).

    Czy ktoś wie co robię nie tak ? Czy po prostu nie ma możliwości żeby wywoływać funkcje napisane w SCL w LAD ?
  • #2 5082744
    andy1955
    Specjalista Automatyk
    Posty: 700
    Pomógł: 136
    Ocena: 50
    nie bardzo rozumiem jak to zrobiłeś.
    wywołałeś bezpośrednio w SCL zmienną OB1_PREV_CYCLE ?
    Co zaprogramowałeś w OB 1 ?
  • #3 5084534
    krzychol66
    Poziom 25  
    Posty: 724
    Pomógł: 57
    Ocena: 125
    Może jest błąd zapętlenia w bloku SCL i wywala watchdog.
    Może z powodu błędu funkcja zapisuje coś do #OB1_PREV_CYCLE, zamiast tylko czytać.
    Proponowałbym podczas symulacji oglądać logger błedów w "Module Information" (mam nadzieję że w symulatorze działa tak samo, jak na "żywym" sterowniku). Po obejrzeniu komunikatów loggera oraz zawartości stosów można powiedzieć coś bliżej.
  • #4 5085457
    kminek18
    Poziom 10  
    Posty: 12
    Ocena: 1
    W bloku OB1 jest tylko funkcja która wywołuje resztę obliczeń.

    W przyblizeniu wyglada to tak :
    Network 1 :

    -------------------Funkcja(wywolanie reszty)-----------------

    Network 2:

    -------------------MOVE(#OB1_PREV_CYCLE do MW2)------

    To jest caly blok OB1.

    Chcę tylko aby program policzył mi wartości q1..q5 dla kinematyki odwrotnej i pokazał ile to czasu zajęło. :)

    Dołączam program.

    Teraz uruchamiałem tą wersje co jest w załaczniku i niby coś działało. Myślę jednak ,że dalej jest coś nie tak ponieważ czas cyklu jest strasznie krótki. Kiedyś sprawdzałem samego MOVE'a i zajmował 256ms a tutaj razem z funkcjami 12ms :/
    Załączniki:
    • kinematyka.zip (159.84 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 5091358
    krzychol66
    Poziom 25  
    Posty: 724
    Pomógł: 57
    Ocena: 125
    1. 12 ms to jest przyzwoity (rozsądny) czas dla Siemensa.
    Moim zdaniem powinieneś mieć jeszcze mniejszy, bo projekt jest mały. Ale może funkcje trygonometryczne tak go dociążają...
    256 ms to nieporozumienie absolutne. I natychmiastowy powód do zatrzymania sterownika przez watchdog timer.

    2. Jakiej wesji oprogramowania używałeś do tworzenia projektu?
    Brak definicji języka sugerowałby, że wersja jest starsza, niż 5.4. Z drugiej strony w 5.4 SP2 nie ma biblioteki z tym typem sterownika, który zastosowałeś...
  • #6 5092337
    andy1955
    Specjalista Automatyk
    Posty: 700
    Pomógł: 136
    Ocena: 50
    @kminek18, załadowałem twój program do ET200S czas przebiegu to 22ms,
    @krzychol66
    Cytat:
    Z drugiej strony w 5.4 SP2 nie ma biblioteki z tym typem sterownika, który zastosowałeś...

    Nie bardzo rozumiem co chcesz przez to powiedzieć.
    Hardware biblioteki można w każdej chwili aktualizować i nie ma większego znaczenia czy to jest wersja v5.4 lub v5.3
    Załączniki:
    • Step7. SCL + LAD . Problem z wywołaniem funkcji w OB1 StepVer.jpg (137.16 KB) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemu z wywołaniem funkcji napisanych w języku SCL z poziomu bloku OB1 napisanego w języku LAD w środowisku Siemens S7-PLCSIM. Autor programu implementuje obliczenia kinematyki odwrotnej manipulatora oraz pomiar czasu cyklu sterownika, wykorzystując funkcje (FC) i zmienne w bloku danych DB1. W bloku OB1 znajduje się funkcja wywołująca pozostałe obliczenia oraz instrukcja MOVE kopiująca wartość #OB1_PREV_CYCLE do MW2. Problem polega na zatrzymaniu symulatora przy próbie wywołania funkcji SCL z LAD, co może być spowodowane błędem zapętlenia lub nieprawidłowym dostępem do zmiennej systemowej #OB1_PREV_CYCLE. Czas cyklu mierzony w symulatorze jest podejrzanie krótki (12 ms), podczas gdy wcześniejsze testy MOVE zajmowały 256 ms, co wskazuje na możliwe błędy w implementacji lub pomiarze. Wskazano, że 12 ms to rozsądny czas dla sterowników Siemensa, a 256 ms jest zbyt długi i może powodować zatrzymanie przez watchdog. Poruszono także kwestie wersji oprogramowania i aktualizacji bibliotek sprzętowych, które mogą mieć wpływ na działanie projektu. Użytkownik otrzymał sugestię monitorowania loggera błędów w symulatorze oraz sprawdzenia, czy funkcje SCL mogą być wywoływane z LAD. Potwierdzono, że aktualizacja bibliotek sprzętowych jest możliwa i istotna dla kompatybilności projektu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA