Chcę w nodzie current state porównać wartości dwóch encji numerycznych i wysłać wynik na wy1, gdy porównanie jest prawdziwe lub na wy2 w każdym innym przypadku:
Nod Temp > max typu current state ma następującą konstrukcję:
Jak widać, ma on możliwość wykonania takiego logicznego obliczenia.
Pod Entity id podstawiam wartość encji Temp i porównuję ją z encją pomocniczą temp_max. Obie mają wartości numeryczne.
Niestety logika się nie oblicza. Niezależnie, czy w If State dam znak > czy < czy =, wszystkie odpowiedzi trafiają na noda tam. Dzieje się tak również niezależnie od typu wyniku, definowanego w State Type (boolean, string, number,). Odpowiedzią noda current state jest zawsze wartość encji temp lub - gdy typ odpowiedzi jest ustawiony na boolean - wychodzi false. Nawet po zmianie znaku porównania na przeciwny.
Próbowałem także zamieniać obie porównywane encje miejscami wewnątrz definicji noda. Niczego to nie zmienia. Encje się nie porównują i tyle…
Dlaczego to nie działa? Gdzie robię błąd? O czym nie wiem?
Rzeczywiście Twój flow działa! Po stosownej adaptacji mojego algorytmu, u mnie także wszystko ruszyło do przodu!
Uważam NR za jedno z najwspanialszych środowisk progamistycznych do automatyki. Nie mniej jednak, bez znajomości jego “specyficznej specyfiki” niełatwo się w nim odnaleźć…
Teoretycznie stosowania jednego ostrego warunku <>= dla właczenia/wyłączenia jest logicznie poprawne. Jednak praktycznie dziala to niewłaściwie. Należy stosować dwa osobne , dla zał i wył, ponieważ gdy wartość mierzona bliska jest wartości zadanej występują niepotrzebnie zbyt częste cykle zał/wyl a tym samym skraca się żywotność elementu sterującego (przekaźnika). Z reguły wystarczy margines z błedów odczytu samego czujnika przy stabilnej temperaturze. Ze względu na dużą bezwładność cieplną wody skoki temperatur samoistnie się filtrują. Taka mała uwaga do stosowanego wyżej algorytmu.