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

Fatek,czy po napotkaniu "przerwy" sprawdza resztę

Bruum 25 Nov 2010 13:06 1414 5
  • #1
    Bruum
    Level 23  
    Witam!
    Pytanie mam jak w temacie. Czy po stwierdzeniu przerwy, czyli nie spełnienia warunku jest dalej sprawdzana dana linijka, czy też tak jak w C gdzie np
    if(x1 && x2 && x3....itd, po napotkaniu nieprawdziwego wyrażenia nie jest sprawdzana reszta bo wiadomo, że całość nie będzie prawdziwa?
    W zasadzie pytam o potrzebę logicznego układania warunków w networku, tak by najczęściej niespełniony był na początku, czy to wpłynie na szybkość skanu czy nie.
  • #2
    fantasta
    Level 29  
    Masz na mysli że, jak masz w jednym networku kilka styków i na początku lini jest styk otwarty, to czy leci resztę styków w tej Lini??

    Powiem ci tak. Sterownik ma określony cykl.

    1. Sprawdzenie poziomów na wejściach.
    2. Wykonanie programu
    3. Ustawienie wyjść.

    Program nie wykonuje tego czego nie ma gdy np. dany styk jest otwarty.
    W helpie zobacz sobie jaki rejest systemowy odpowiada za czas wykonania cyklu. Zobaczysz ze jak masz networki które sie nie powinny wykonać bo maja na początku styk otwarty to czas jest krótszy niż wtedy gdy styki sa zamknięte czas cyklu będzie dłuższy.

    Po drugie jak wielce rozbudowany program masz ze boisz się o czas cyklu?
    Nie ważne jak ułożysz networki i tak program przeleci cały program. Czy ten so będzie najrzadziej spełniany pójdzie na koniec czy początek nie ma znaczenia. Logiczniej by bylo napisać tak ze warunek który najczęściej jest spełniony dać na początku, i za nim ustawiać funkcje END która karze sterownikowi zakończyć wykonywanie programu w tym miejscu i zacząć cykl od nowa.
  • #3
    Bruum
    Level 23  
    Witam i dzięki za odpowiedź!
    Quote:

    Masz na mysli że, jak masz w jednym networku kilka styków i na początku lini jest styk otwarty, to czy leci resztę styków w tej Lini?

    Dokładnie o to mi chodzi. Napisałeś uproszczony przebieg. Punkt 2-wykonanie programu, czyli m.in. sprawdzeń warunków-czy dany styk jest włączony czy nie. Jeśli po pierwszym warunku niespełnionym następne nie są sprawdzane to zaoszczędzone jest kilka operacji procesora.
    Quote:

    Po drugie jak wielce rozbudowany program masz ze boisz się o czas cyklu?

    W tym momencie nie takie straszne. Ale jak się nauczysz na pierdułce zwracać na szczegóły uwagę, to później przy naprawdę poważnym projekcie zaprocentuje. Oczywiście jeśli w tym przypadku jest sens, czyli są porzucane sprawdzenia networka już niespełnionego.
  • #4
    fantasta
    Level 29  
    Popracuj na składnią bo piszesz bardzo niezrozumiale.

    W pierwszym cyklu sterownik sprawdza wejścia, w drugim wykonuje program w oparciu o stany wejść sprawdzone w pierwszym kroku oraz o stany zmiennych wewnętrznych czyli markerów itd. Ich nie musi sprawdzać bo je zna. Procesor zna stany swoich wirtualnych zmiennych, czas zajmuje mu tylko sprawdzenie wejść fizycznych bo ich w żaden sposób nie może znać jak swoich wewnętrznych.

    Wiec czy w jednym networku masz 3 czy 30 Markerów to on zna ich stan. Cykl wydłuży się w zależności od programu.

    Może dalej się nie rozumiemy, nie wiem. Wstaw jakiś screen z programu o powiedz przykładowo o jaki moment ci chodzi.
  • #5
    jestam
    Automation specialist
    fantasta wrote:
    W pierwszym cyklu sterownik sprawdza wejścia, w drugim wykonuje program

    Sterowniki sprawdzają wejścia, wykonują program i ustawiają wyjścia zazwyczaj w każdym cyklu.

    Pytanie kolegi Bruum jak rozumiem dotyczy takiej sytuacji:
    dla i1 = 0, i2 = 1, ... i10 = 1

    czy -|i1|--|i2|-......-|i10|--() wykona się szybciej niż -|i2|-......-|i10|--|i1|--() ?

    Odpowiedzi na tak postawione pytanie nie znam. Nigdy nie potrzebowałem robić takich optymalizacji w drabinkach. Ważniejszy jest czytelny i zrozumiały zapisu warunków niż ich optymalizowanie na siłę.
  • #6
    fantasta
    Level 29  
    Wg. mnie tak samo.

    Jak ja pisze program to takie rzeczy układam logicznie do cyklu maszyny. Czyli na początek daje styk wyłącznika bezpieczeństwa, później np. czujnika ciśnienia itd itd. Nie myślę w jaki sposób będzie się to wykonywało. Sterownik i tak wykona to w us wiec czy będą to 2us szybciej naprawdę nie gra mi roli.