Witam kolegów,
mam dwa skrypty i wg mnie powinny działać tak:
Pierwszy sprawdza napięcia z licznika energii elektrycznej Zamela czy na którejś z faz pojawi się napięcie powyżej 253V.
Jeżeli tak uruchamia na 1 min. sterownik led Zamela włączająć wszystkie kanały, po czym przechodzi do drugiego skryptu,
który jeżeli napięcie na wszystkich fazach spadnie poniżej 254V wyłączy wszystkie kanały i wywoła po 15 sekundach skrypt pierwszy
i tak od początku.
To było moje wyobrażenie, a rzeczywistość jest inna, raz zadziała, ale za chwilę widzę, że mimo że powinien wykonać się pierwszy skrypt
nie chce wystartować pomimo spełnienia warunków. Co napisałem źle?
================================================================================
Dwa skrypty wywołujące się wzajemnie
-
missim4
- Posts: 25
- Joined: Wed Mar 24, 2021 10:11 am
You do not have the required permissions to view the files attached to this post.
-
YoMan
- Posts: 3522
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
- Has thanked: 3 times
- Been thanked: 3 times
IMHO błąd rozumienia działania skryptów. To nie działa, że "jeżeli spadnie" (w sensie czasu przyszlego) tylko "jeżeli jest" (teraźniejszy)missim4 wrote: Fri May 05, 2023 5:03 pm który jeżeli napięcie na wszystkich fazach spadnie poniżej 254V wyłączy wszystkie kanały i wywoła po 15 sekundach skrypt pierwszy
on.png================================================================================off.png
Dla pełnego obrazu trzeba by poobserwować działanie ale wygląda na to, że jeżeli po ustalonym czasie napięcie na którejkolwiek fazie jest 254v lub wyżej, nie jest spełniony warunek i sceną kończy działanie bez wykonania akcji
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
YoMan
- Posts: 3522
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
- Has thanked: 3 times
- Been thanked: 3 times
YoMan wrote: Fri May 05, 2023 7:52 pmIMHO błąd rozumienia działania skryptów. To nie działa, że "jeżeli spadnie" (w sensie czasu przyszlego) tylko "jeżeli jest" (teraźniejszy)missim4 wrote: Fri May 05, 2023 5:03 pm który jeżeli napięcie na wszystkich fazach spadnie poniżej 254V wyłączy wszystkie kanały i wywoła po 15 sekundach skrypt pierwszy
on.png================================================================================off.png
Dla pełnego obrazu trzeba by poobserwować działanie ale wygląda na to, że jeżeli po ustalonym czasie napięcie na którejkolwiek fazie jest 254v lub wyżej, nie jest spełniony warunek i sceną 2 kończy działanie bez wykonania akcji
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
missim4
- Posts: 25
- Joined: Wed Mar 24, 2021 10:11 am
OK, źle to sformułowałem, skrypt sprawdza czy jest.
Ale dlaczego scena ma kończyć działanie bez wykonania akcji?
Przecież gdy uruchomię pierwszy skrypt, a warunki nie są spełnione, on nie kończy działania tylko (chyba co 10 sek.)
ponownie sprawdza czy są spełnione i jeżeli to kiedyś nastąpi wykonuje się, tak przynajmniej to u mnie działa.
Ale dlaczego scena ma kończyć działanie bez wykonania akcji?
Przecież gdy uruchomię pierwszy skrypt, a warunki nie są spełnione, on nie kończy działania tylko (chyba co 10 sek.)
ponownie sprawdza czy są spełnione i jeżeli to kiedyś nastąpi wykonuje się, tak przynajmniej to u mnie działa.
-
YoMan
- Posts: 3522
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
- Has thanked: 3 times
- Been thanked: 3 times
Też nie do końca, skrypt jeżeli nie są spełnione warunki kończy działanie - nie ma pętli. Natomiast ty nie zastosowałeś sprawdzania czasowego (minimalny interwał bodajże 5 min) tylko aktywację stanem kanału. On faktycznie może częściej reagować, ponieważ uruchamia go przejście przez wartość warunkową z tego co pamiętam czyli uruchomi go przejście z 254V -> 253V ale w przypadku 253V->252V już nie powinien się uruchomić.missim4 wrote: Sat May 06, 2023 9:27 am OK, źle to sformułowałem, skrypt sprawdza czy jest.
Ale dlaczego scena ma kończyć działanie bez wykonania akcji?
Przecież gdy uruchomię pierwszy skrypt, a warunki nie są spełnione, on nie kończy działania tylko (chyba co 10 sek.)
ponownie sprawdza czy są spełnione i jeżeli to kiedyś nastąpi wykonuje się, tak przynajmniej to u mnie działa.
Z mojego doświadczenia to jest bardziej awaryjne rozwiązanie i nie wiem dlaczego tak jest. Logi i obserwacja nigdy mi nie dały odpowiedzi na to pytanie. Poszukał bym wskazówki przy zbyt małej histerezie. Być może jeżeli wahania napięcia są w przedziale 253-254V to aktywator widzi zmianę ale kiedy sprawdza warunek to już nie spełnia go a być może jest gdzieś zastosowane zaokrąglenie lub zbyt częste wykonanie akcji jest blokowane (to powinno być w logach).
Ja bym poszedł tym tropem, żeby ustawić szersze warunki graniczne np. 250-254V i obserwować albo ustawić uruchamianie czasowe co 5 min.
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
missim4
- Posts: 25
- Joined: Wed Mar 24, 2021 10:11 am
To ja już nic nie rozumiem 
Jak skrypt może zakończyć działanie jeżeli nie są spełnione warunki?
Wydawało mi się, że działa to tak, że po uruchomieniu skryptu sprawdza on czy są warunki aby wykonać polecenia i będzie sprawdzał i czekał z wykonaniem dopóki się nie pojawią, a wtedy też nie skończy działania, no chyba że zostanie wyłączony?
Przecież jak kolejny raz pojawią się warunki to skrypt zadziała. Dla mnie to jednak taka pętla.
Jak skrypt może zakończyć działanie jeżeli nie są spełnione warunki?
Wydawało mi się, że działa to tak, że po uruchomieniu skryptu sprawdza on czy są warunki aby wykonać polecenia i będzie sprawdzał i czekał z wykonaniem dopóki się nie pojawią, a wtedy też nie skończy działania, no chyba że zostanie wyłączony?
Przecież jak kolejny raz pojawią się warunki to skrypt zadziała. Dla mnie to jednak taka pętla.
-
YoMan
- Posts: 3522
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
- Has thanked: 3 times
- Been thanked: 3 times
Co do zasady skrypt wykonuje się raz. Jeżeli warunek spełniony to wykonuje akcję, jeżeli nie spełniony to jej nie wykonuje. Po tym następuje koniec do kolejnego wyzwolenia. Z tego powodu trzeba ustalić aktor, który będzie startował skrypt w określonych sytuacjach. Możemy ustalić wykonanie na określony czas lub zdarzenie. Jeżeli nastąpi określony czas lub zdarzenie skrypt sprawdza czy zaszły wymagane warunki i od tego uzależnia czy wykona akcję czy nie. I nie ma pętli, żeby sprawdzał to w kółko, to nie ta logika. Tu wykonanie jest liniowe od startu do końca.missim4 wrote: Sat May 06, 2023 1:39 pm To ja już nic nie rozumiem
Jak skrypt może zakończyć działanie jeżeli nie są spełnione warunki?
Wydawało mi się, że działa to tak, że po uruchomieniu skryptu sprawdza on czy są warunki aby wykonać polecenia i będzie sprawdzał i czekał z wykonaniem dopóki się nie pojawią, a wtedy też nie skończy działania, no chyba że zostanie wyłączony?
Przecież jak kolejny raz pojawią się warunki to skrypt zadziała. Dla mnie to jednak taka pętla.
W twoim przypadku skrypt startuje po przejściu z zakresu =>254V do zakresu <254V bo taki ustawiłeś wyzwalacz i sprawdza warunek. Natomiast potem jeżeli sobie skacze napięcie w zakresie np. 250V-253V to nic się nie dzieje, ponieważ nie następuje zdarzenie opisane w wyzwalaczu. Ponieważ w wyzwalaczu masz alternatywę a w warunku koniunkcję to tu może się tworzyć jakiś problem.
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
missim4
- Posts: 25
- Joined: Wed Mar 24, 2021 10:11 am
Dziękuję bardzo YoMan za wszystkie wyjaśnienia i pomoc. Niepotrzebnie skomplikowałem sprawę tymi napięciami itp.
Upraszczając; problem jest taki, że jeżeli wszystko odbywa się w miarę powoli to działa.
Na przykład gdyby zastąpić to wszystko ROWami, włączenie ROW-01 z aplikacji uruchamiałoby skrypt włączający drugi ROW-01, a wyłączenie tego pierwszego powodowałoby wyłączenie drugiego, to wszystko działa, ale tylko gdy odbywa się "dość spokojnie"
Tu jest chyba problem, działania na scenach nie uniosą pomysłów wymagających szybszej reakcji, a o to mi chodziło.
Gdybym to zrobił u siebie, a nie w chmurze pewnie osiągnę to o co mi chodzi, ale jak mam znowu wgłębiać się w "wiedzę tajemna" i stawiać to u siebie to mnie to przeraża.
Jakoś muszę sobie z powodu lenistwa to ułatwić inaczej.
Jeszcze raz dziękuję.
Upraszczając; problem jest taki, że jeżeli wszystko odbywa się w miarę powoli to działa.
Na przykład gdyby zastąpić to wszystko ROWami, włączenie ROW-01 z aplikacji uruchamiałoby skrypt włączający drugi ROW-01, a wyłączenie tego pierwszego powodowałoby wyłączenie drugiego, to wszystko działa, ale tylko gdy odbywa się "dość spokojnie"
Tu jest chyba problem, działania na scenach nie uniosą pomysłów wymagających szybszej reakcji, a o to mi chodziło.
Gdybym to zrobił u siebie, a nie w chmurze pewnie osiągnę to o co mi chodzi, ale jak mam znowu wgłębiać się w "wiedzę tajemna" i stawiać to u siebie to mnie to przeraża.
Jakoś muszę sobie z powodu lenistwa to ułatwić inaczej.
Jeszcze raz dziękuję.
