Forum eSterownik.pl Uwagi do działania Biblioteki. Subskrybuj | ||||
Pierwsza stronaPoprzednia strona3 / 6Następna stronaOstatnia strona | ||||
|
||||
konto usunięte
|
janusz napisał » 2014-04-05 22:06 Tutaj warto być ostrożnym, ciepło jest, spalanie spada.Ale zużycie spadło i to wcale nie mało janusz napisał » 2014-04-05 22:06 Próbowałem, jestem ciekaw jak to zrobiłeś. Więc może dobierzcie sie do korekty pracy automatycznej U mnie skrypt odpala, ale uruchamia tylko podajnik zgodnie z nastawą, dmuchawa nie startuje:/ |
|||
|
||||
janusz
|
Verb napisał : "Interesujące, jak możesz i chcesz to otwórz nowy wątek i napisz coś więcej."
Problem w tym czy w takim wątku dotyczącym " VB " będą chętni do rozmowy Martwy wątek nie ma sensu ale przyznam że bardzo chętnie bym wymienił sie doświadczeniami z osobą piszącą w VB Pytasz jak to zrobiłem? Łącze sie ze sterownikiem za pomocą biblioteki WinHttp pewnie podobna w działaniu do tej jakiej używacie " #conn = httplib" u mnie to proste definiuję obiekt Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") otwieram połączenie MyRequest.Open "GET", str_Url & "/?com=02010005000B0100018403" Uruchamia dmuchawę trybie ręcznym MyRequest.SetCredentials NazwaUsera, Password, 0 MyRequest.Send i poszło dmuchawa załączona mogę programowo zmienić chyba wszystko w sterowniku Lecz nie namawiam Cię na naukę nowego języka Ale jak byś chciał ..... Piszesz że Twój skrypt coś nie działa ? Zapodaj może fragment kodu (skryptu ) lub cały gdzie ma startować dmuchawa może dam radę przerobić żeby zatrybiło Jak za duże na forum prześlij na priv odpowiem Janusz |
|||
|
||||
konto usunięte
|
W bibliotece "sterownik" wpisano sprawdzanie statusu. Zmieniałem na False.
Skrypt się uruchamia, ale log sypie błędami komunikacji. Być może coś przeoczyłem. Spróbuję jeszcze po http. Za cienki jestem na kolejny język, ledwo ten ogarnąłem. Nieraz byłem gotów to rzucić w kąt, bo nie szło jak chciałem. Niby nigdy nie jest za późno na naukę, ale mnie to przychodzi dość opornie :/ Kodu automatu, na razie nikomu nie udostępniam. Nie da się sensownie wyciąć kawałka, dotyczącego wyłącznie wątku dmuchawy Chciałbym by nowy tryb trafił do ES, a docelowo do naszych sterów. Poczekajmy, być może będę musiał szukać innego rozwiązania, wtedy Twoja wiedza będzie bardzo potrzebna. |
|||
|
||||
Stan
|
janusz napisał » 2014-04-07 19:29 Verb napisał : "Interesujące, jak możesz i chcesz to otwórz nowy wątek i napisz coś więcej." Problem w tym czy w takim wątku dotyczącym " VB " będą chętni do rozmowy Martwy wątek nie ma sensu ale przyznam że bardzo chętnie bym wymienił sie doświadczeniami z osobą piszącą w VB Pytasz jak to zrobiłem? Łącze sie ze sterownikiem za pomocą biblioteki WinHttp pewnie podobna w działaniu do tej jakiej używacie " #conn = httplib" u mnie to proste definiuję obiekt Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") otwieram połączenie MyRequest.Open "GET", str_Url & "/?com=02010005000B0100018403" Uruchamia dmuchawę trybie ręcznym MyRequest.SetCredentials NazwaUsera, Password, 0 MyRequest.Send i poszło dmuchawa załączona mogę programowo zmienić chyba wszystko w sterowniku Lecz nie namawiam Cię na naukę nowego języka Ale jak byś chciał ..... Piszesz że Twój skrypt coś nie działa ? Zapodaj może fragment kodu (skryptu ) lub cały gdzie ma startować dmuchawa może dam radę przerobić żeby zatrybiło Jak za duże na forum prześlij na priv odpowiem Janusz To akurat ja pisałem Ale nie istotne. Ja zrozumiałem że Twój sterownik jest w trybie automatycznym a Ty możesz mu wysłać kolejne zestawy poleceń do wykonania. Gdyby tak było to byłoby to bardzo interesujące gdyż utrata komunikacji powodowałaby tylko pracę z ostatnimi parametrami. Może inaczej, rozumiem to tak wysyłasz polecenie włącz podajnik na 3 sekundy, włącz dmuchawę na 30 sekund z mocą 39% i sterownik w trybie automatyczny to robi, w razie utraty połączenia wykonuje dalej te sekwencję. Tak to zrozumiałem, i myślę że Verb też , ale teraz piszesz o trybie ręcznym więc nie wiem? |
|||
|
||||
konto usunięte
|
Stan napisał » 2014-04-07 20:18 Dokładnie tak.Tak to zrozumiałem, i myślę że Verb też |
|||
|
||||
janusz
|
Verb napisał : Kodu automatu, na razie nikomu nie udostępniam. Nie da się sensownie wyciąć kawałka, dotyczącego wyłącznie wątku dmuchawy
Chyba źle mnie odczytałeś W przykładach Ven-a jest fragment skryptu # Dmuchawa def getDmuchawa(self): if (bool(self.s_statusdata)): return self.s_statusdata[32] & (1 << 0) != 0; def setDmuchawa(self, state): if (state): self._getRequest("02010005000B0100018403"); else: self._getRequest("02010005000B010000B503"); def getDmuchawaMoc(self): if (bool(self.s_statusdata)): return self.s_statusdata[39]; który ja odczytuje następująco że w zależności od odczytanego statusu dmuchawy można wysłać polecenie self._getRequest("02010005000B0100018403 ")załącza dmuchawę i nie ma bata dmuchawa musi zastartowaćVerb napisał:W bibliotece "sterownik" wpisano sprawdzanie statusu. Zmieniałem na False. Skrypt się uruchamia, ale log sypie błędami komunikacji. Być może coś przeoczyłem. a status dmuchawy odczytujemy z zapytania 02010006000000006103 jest on podawany jako (39) element zwracanej tablicy zawiera wartość 0 dla wyłączonej 1 dla włączonej Lecz powiem że bez nawet fragmentu typu w/w nie pokazującego co wysyłasz co sterownika kicha... Janusz |
|||
|
||||
konto usunięte
|
janusz napisał » 2014-04-07 20:36 Muszę iść do pracy, jutro jak się wyśpię, spróbuję złapać logi.
Lecz powiem że bez nawet fragmentu typu w/w nie pokazującego co wysyłasz co sterownika kicha... |
|||
|
||||
janusz
|
Stan napisał: "Ja zrozumiałem że Twój sterownik jest w trybie automatycznym a Ty możesz mu wysłać kolejne zestawy poleceń do wykonania.
Gdyby tak było to byłoby to bardzo interesujące gdyż utrata komunikacji powodowałaby tylko pracę z ostatnimi parametrami. Może inaczej, rozumiem to tak wysyłasz polecenie włącz podajnik na 3 sekundy, włącz dmuchawę na 30 sekund z mocą 39% i sterownik w trybie automatyczny to robi, w razie utraty połączenia wykonuje dalej te sekwencję." Tak sterownik w trybie Auto Ja po prostu koryguję ustawienie jakie ma obecnie np nakazuje zmienić moc dmuchawy ,czas postoju w podawaniu lub czas podawania paliwa i co najistotniejsze to ja decyduję kiedy ma rozpocząć a kiedy zakończyć pracę wiem ile ma podać paliwa co jaki czas podać z jaką siłą dmuchnąć na tej podstawie wyliczam trend temp Co i w zależności od potrzeb zwiększam moc palnika lub ją zmniejszam i to by było na tyle sorry jeżeli wprowadziłem zamieszanie Janusz |
|||
|
||||
Stan
|
Chyba łapię, czyli wystarczy że w naszych skryptach podmienimy polecenia symboliczne na te nazwijmy to "kody maszynowe" i powinno działać.
A ja to się ma do instrukcji będących już wpisanych wewnątrz sterownika, nie kłócą się ze sobą ? My wysyłamy polecenie włącz i skrypt sam odmierza czas po czym wysyła wyłącz itd. |
|||
|
||||
janusz
|
Stan napisał » 2014-04-07 21:34 Chyba łapię, czyli wystarczy że w naszych skryptach podmienimy polecenia symboliczne na te nazwijmy to "kody maszynowe" i powinno działać. Już blisko np wysłanie do sterownika polecenia self._getRequest("02010005000B0100018403 ") załączy dmuchawę (w trybie ręcznym) self._getRequest("02010002002802003900E603") ustawi temp Co na wartość 57 deg (w trybie auto) self._getRequest("02010002000F02001E003703") ustawi moc dmuchawy na wartość 37 % (w trybie auto) self._getRequest("020100020023020046003E03") ustawi czas postoju podajnika na 70 sek (w trybie auto) itd.... Każdej zmianie wartości odpowiada inne polecenie To po prostu nic innego jak zmiana dokonana za pomocą panela www zmieniasz wartość panel wysyła do sterownika odpowiednie polecenie Napisałeś fajną funkcję sprawdzającą temp.CO i to już jest początek Ja też mam taką funkcje którą to cyklicznie (kontrolka timer) sprawdzam temp Co i na tej podstawie ustalam ( zmienna typu logicznego o nazwie "Wzrost") stan temp Co (TCO) Jeżeli TCO wzrasta w porównaniu do poprzedniego odczytu zmienna Wzrost otrzymuje wartość true Następny odczyt if Wzrost=true i TCO zbliża się do temp żądanej nakazuję sterownikowi aby zakończył tryb pracy Natomiast przy spadku jeżeli Wzrost = false if TCO w spadku zbliża się do temp żądanej nakazuję sterownikowi wznowienie pracy Takich if-ow jest więcej bo przy spadkach temp koryguję moc palnika skracając np czas postoju podajnika podnosząc moc dmuchawy itp... tak skrótowo by to wyglądało Czy u was można to wykonać podejrzewam że tak Janusz |
|||
|
||||
Stan
|
janusz napisał » 2014-04-08 10:54 Stan napisał » 2014-04-07 21:34 Chyba łapię, czyli wystarczy że w naszych skryptach podmienimy polecenia symboliczne na te nazwijmy to "kody maszynowe" i powinno działać. Już blisko np wysłanie do sterownika polecenia self._getRequest("02010005000B0100018403 ") załączy dmuchawę (w trybie ręcznym) self._getRequest("02010002002802003900E603") ustawi temp Co na wartość 57 deg (w trybie auto) self._getRequest("02010002000F02001E003703") ustawi moc dmuchawy na wartość 37 % (w trybie auto) self._getRequest("020100020023020046003E03") ustawi czas postoju podajnika na 70 sek (w trybie auto) itd.... Każdej zmianie wartości odpowiada inne polecenie To po prostu nic innego jak zmiana dokonana za pomocą panela www zmieniasz wartość panel wysyła do sterownika odpowiednie polecenie Napisałeś fajną funkcję sprawdzającą temp.CO i to już jest początek Ja też mam taką funkcje którą to cyklicznie (kontrolka timer) sprawdzam temp Co i na tej podstawie ustalam ( zmienna typu logicznego o nazwie "Wzrost") stan temp Co (TCO) Jeżeli TCO wzrasta w porównaniu do poprzedniego odczytu zmienna Wzrost otrzymuje wartość true Następny odczyt if Wzrost=true i TCO zbliża się do temp żądanej nakazuję sterownikowi aby zakończył tryb pracy Natomiast przy spadku jeżeli Wzrost = false if TCO w spadku zbliża się do temp żądanej nakazuję sterownikowi wznowienie pracy Takich if-ow jest więcej bo przy spadkach temp koryguję moc palnika skracając np czas postoju podajnika podnosząc moc dmuchawy itp... tak skrótowo by to wyglądało Czy u was można to wykonać podejrzewam że tak Janusz Jasne, i odbywa się to wszystko bez pośrednictwa biblioteki sterownik. Dokończę to co robię teraz i chyba spróbuję zrobić to samo po Twojemu, no chyba że w międzyczasie ES udostępni poprawkę z "bezpiecznikiem" do sterownika. Dzisiaj zrobiłem parę zmian w swoim skrypcie, muszę je wypróbować i udostępnię nową wersję. |
|||
|
||||
janusz
|
Jak zrobią poprawkę to można myśleć o własnym procesie sterowania
Na chwilę obecną ja nie podejmę takiego ryzyka Jak przerwie połączenie gdy załączę podajnik to dla mnie dramat wywali cały zasobnik do pieca Janusz Ps Mam połączenie na kablu a i tak zdarza się że gubię połączenie |
|||
|
||||
Stan
|
janusz napisał » 2014-04-08 13:01 Jak zrobią poprawkę to można myśleć o własnym procesie sterowania Na chwilę obecną ja nie podejmę takiego ryzyka Jak przerwie połączenie gdy załączę podajnik to dla mnie dramat wywali cały zasobnik do pieca Janusz Ps Mam połączenie na kablu a i tak zdarza się że gubię połączenie Myślałem że jak jesteś w trybie automatycznym to nie ma takiej możliwości ? Przed taką możliwością bronię się przekaźnikiem czasowym umieszczonym na sterowaniu podajnikiem. Samo umieszczenie RPi i podłączenie bezpośrednie do sterownika (przez switch umieszczony w kotłowni i wszystko na wspólnym zasilaniu) powoduje że nawet jak się wywali cała reszta sieci domowej to kocioł działa. |
|||
|
||||
janusz
|
Oczywiście ale to wymagało dodatkowych nakładów finansowych
i własnej robocizny a o sobie powiem tak nie jestem leniwy jak twierdzi małżonka lecz "energooszczędny" Janusz |
|||
|
||||
Stan
|
Energooszczędny )) , dobre - muszę to "sprzedać" swojej małżonce.
|
|||
|
||||
janusz
|
Stan Wiesz czego brakuje mi w sterowniku
Opcji która po zakończeniu cyklu pracy pozwali na uruchomienie dmuchawy z określoną mocą i przez określony czas może być opcjonalne Ja bym decydował jak długo i z jaką mocą pracuje dmuchawa celem dopalenia opału Ty i Verb macie dobry kontakt z ES może im coś takiego zaproponujecie można to zaadoptować z opcji pieca zasypowego ( przedmuchy) Janusz |
|||
|
||||
Stan
|
Przecenisz (i to mocno) ten dobry kontakt
Coś takiego mam w TRK a dzisiaj będę testował bloki uruchamiane jeden raz w cyklu grzania, właśnie z myślą o dopalaniu na różnych etapach. Wpadł mi też pomysł na dopalanie (tylko dopalanie) regulowane od temperatury spalin, jak się wyrobię to dzisiaj jakąś wstępną wersję przetestuję. |
|||
|
||||
konto usunięte
|
Janusz, ja to mam tak:
def dopalanie(): print (time.asctime(time.localtime()) + ": CO: " + str(c.getTempCO()) + "°C. " + " CWU: " + str(c.getTempCWU()) + "°C. " + " Spaliny: " + str(c.getTempSpaliny()) + "°C. - Dopalanie."); c.setDmuchawa(True); c.setDmuchawaMoc(mocDmuchawaDopalanie); time.sleep(czasDopalanie); |
|||
|
||||
janusz
|
Verb dokładnie o takie coś chodzi
Linia skryptu print (time.asctime(time.localtime()) + ": CO: " + str(c.getTempCO()) + "°C. " + " CWU: " + str(c.getTempCWU()) + "°C. " + " Spaliny: " + str(c.getTempSpaliny()) + "°C. - Dopalanie."); wymaga dłuższej analizy nie wszystko jest dla mnie tak jednoznaczne jak w VB a skrypt c.setDmuchawa(True); c.setDmuchawaMoc(mocDmuchawaDopalanie); time.sleep(czasDopalanie); To jest to ! Stan jak udostępnisz skrypt TRK to do końca bo chyba ostatni gdzie była funkcja sprawdzania temp Co jakoś brakowało mi zakończenia pętli While |
|||
|
||||
konto usunięte
|
Janusz. Dasz radę coś z tego odczytać ?
Tak wygląda uruchomienie skryptu, bez getStatus, na sterowniku w trybie auto. Serial(port='com1', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=15, xonxoff=False, rtscts=False, dsrdtr=False) SENT<- b'\x02\x01\x00\x05\x00\x14\x00\x00\xa8\x03' HEAD-> b'\x02\x01\x06\x05\x00\x14\x08\x00' DATA-> b'\x02\x01\x06\x05\x00\x14\x08\x000.1.9.20Z\x03' Bajty startowe: OK Rozkaz potwierdzony: OK Suma kontrolna: OK Polaczony z sterownikien wersja fw: 0.1.9.20 Tryb: 0 - reczny, 1 - auto Tryb: 1 SENT<- b'\x02\x01\x00\x06\x00\x00\x00\x00a\x03' HEAD-> b'\x02\x01\x06\x06\x00\x00L\x00' DATA-> b'\x02\x01\x06\x06\x00\x00L\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\xea\x00\xc1\x00#\x02\x11\x02\x9e\x019\x02a\x03\x04\x00\x01\x00\x007\n\x00\x00\x00\x00\x02\x0e\x04\x08\x0e+-\x01\x01\x00\x01\x01\xd7\x00\xd2\x00\x00\x14\x02\x00\x00\x0b\x1b\x00\x00\x0e\x04\x05\x0b:9\xeeb\x00\x05\xd2\x00\xbe\x00\x00\x00r\x03' Bajty startowe: OK Rozkaz potwierdzony: OK Suma kontrolna: OK SENT<- b'\x02\x01\x00\x05\x00\r\x01\x00\x01\x8d\x03' HEAD-> b'\x02\x01\x15\x05\x00\r\x02\x00' DATA-> b'\x02\x01\x15\x05\x00\r\x02\x00\x08\x00a\x03' Bajty startowe: OK Rozkaz potwierdzony: BŁAD Suma kontrolna: OK SENT<- b'\x02\x01\x00\x06\x00\x00\x00\x00a\x03' HEAD-> b'\x02\x01\x06\x06\x00\x00L\x00' DATA-> b'\x02\x01\x06\x06\x00\x00L\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\xea\x00\xc1\x00#\x02\x11\x02\x9e\x019\x02a\x03\x04\x00\x01\x00\x007\n\x00\x00\x00\x00\x02\x0e\x04\x08\x0e+-\x01\x01\x00\x01\x01\xd7\x00\xd2\x00\x00\x14\x02\x00\x00\x0b\x1b\x00\x00\x0e\x04\x05\x0b:9\xeeb\x00\x05\xd2\x00\xbe\x00\x00\x00r\x03' Bajty startowe: OK Rozkaz potwierdzony: OK Suma kontrolna: OK SENT<- b"\x02\x01\x00\x05\x00\x0c\x01\x00\x00'\x03" HEAD-> b'\x02\x01\x15\x05\x00\x0c\x02\x00' DATA-> b'\x02\x01\x15\x05\x00\x0c\x02\x00\x08\x00\xb2\x03' Bajty startowe: OK Rozkaz potwierdzony: BŁAD Suma kontrolna: OK SENT<- b'\x02\x01\x00\x05\x00\x0b\x01\x00\x00\xb5\x03' HEAD-> b'\x02\x01\x15\x05\x00\x0b\x02\x00' DATA-> b'\x02\x01\x15\x05\x00\x0b\x02\x00\x08\x00\xe9\x03' Bajty startowe: OK Rozkaz potwierdzony: BŁAD Suma kontrolna: OK SENT<- b'\x02\x01\x00\x06\x00\x00\x00\x00a\x03' HEAD-> b'\x02\x01\x06\x06\x00\x00L\x00' DATA-> b'\x02\x01\x06\x06\x00\x00L\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\xea\x00\xc1\x00#\x02\x11\x02\x9e\x019\x02a\x03\x04\x00\x01\x00\x007\n\x00\x00\x00\x00\x02\x0e\x04\x08\x0e+-\x01\x01\x00\x01\x01\xd7\x00\xd2\x00\x00\x14\x02\x00\x00\x0b\x1b\x00\x00\x0e\x04\x05\x0b:9\xeeb\x00\x05\xd2\x00\xbe\x00\x00\x00r\x03' Bajty startowe: OK Rozkaz potwierdzony: OK Suma kontrolna: OK Tue Apr 8 14:44:04 2014: CO: 56.9°C. CWU: 54.7°C. Spaliny: 86.5°C. - Oczekiwanie. |
|||
Pierwsza stronaPoprzednia strona3 / 6Następna stronaOstatnia strona | ||||