Forum eSterownik.pl Biblioteka w Pythonie do obsługi sterownika Subskrybuj | ||||
Pierwsza stronaPoprzednia strona2 / 18Następna stronaOstatnia strona | ||||
|
||||
adkwapniewski
|
Tu https://drive.google.com/file/d/0B_qzH0FjDyZdaV91cnJOMWF6Mmc/edit?usp=sharing jest programik wykorzystujący zmodyfikowany skrypcik przez kol DarekB
Dodałem temp podłogi. Działa na Windzie do uruchomienia wymagany .NET4 (http://www.microsoft.com/pl-pl/download/details.aspx?id=17851) Proszę o info (jak się komuś uda uruchomić) czy temp zew jest prawidłowa ? |
|||
|
||||
seba
|
VERB napisał » 2014-03-02 13:32 Oczywiście, że termik działa a trybie ręcznym. Przecież jego działanie nie zależy od softu - jest to zabezpieczenie sprzętowe a nie programowe - dmuchawa jest odłączana elektrycznie.W trybie ręcznym termik nie działa ? Ciut niebezpieczne - utrata połączenia w trakcie pracy daje niezłe fajerwerki... Dzisiaj rano sprawdzałem i potwierdzam, że termik działa i w trybie ręcznym i automatycznym. |
|||
|
||||
konto usunięte
|
OK. Nigdy wcześniej się nad tym nie zastanawiałem, nie wiem jak i kiedy działa.
Może inaczej - co daje ustawienie w zaawansowanych Maksymalna temperatura CO [°C]: jak sterownik ma się zachować po przekroczeniu tej temperatury ? |
|||
|
||||
seba
|
Ten parametr to w pewnym sensie pozostałość po wczesnych wersjach, w których był jeszcze był PIN do ustawień zaawansowanych. Służyło jedynie do ograniczenia zakresu ustawień temp. CO dla użytkownika. Dzisiaj również do tego służy, ale ze względu na brak ochrony przed dostępem do ustawień zaawansowanych straciło sens - użytkownik ma bezproblemowy dostęp do ustawień zaawansowanych.
Dodatkowo po przekroczeniu temp. MAX. załączana jest pompa CO. |
|||
|
||||
konto usunięte
|
Czyli tak: termik to wyłącznik bimetalowy, który w razie przekroczenia krytycznej temperatury CO, wyłączy dmuchawę, ew. podajnik, albo i cały ster.
Jak zrobić, by po przekroczeniu Maksymalna temperatura CO [°C]: wyłączył się podajnik i dmuchawa ? Da się ? U mnie temperatura 60st jest krytyczna. Skrypt ma pilnować i to robi.. póki ma kontrolę nad sterem ;] |
|||
|
||||
Stan
|
seba napisał » 2014-03-03 07:28 VERB napisał » 2014-03-02 13:32 Oczywiście, że termik działa a trybie ręcznym. Przecież jego działanie nie zależy od softu - jest to zabezpieczenie sprzętowe a nie programowe - dmuchawa jest odłączana elektrycznie.W trybie ręcznym termik nie działa ? Ciut niebezpieczne - utrata połączenia w trakcie pracy daje niezłe fajerwerki... Dzisiaj rano sprawdzałem i potwierdzam, że termik działa i w trybie ręcznym i automatycznym. U Verba jego próg zadziałania jest za wysoki. Tak se myślę, że może w związku z tą biblioteką pythona dorobić w sofcie funkcję wykrywania utraty połączenia z kompem sterującym i przestawienie wówczas sterownika w domyślny tryb eCoal auto ? Patrzyłem że na tym Raspbery Pi można to zrobić od drugiej strony, tzn wykrycie, nie bardzo się da przestawić ster, ale można zrobić wyłączenie np podajnika i dmuchawy. Ale bardziej elegancko byłoby gdyby ta funkcja była w sterowniku. |
|||
|
||||
seba
|
Dodamy zabezpieczenie przy utracie połączenia z biblioteką - zatrzymanie podajnika i dmuchawy...
|
|||
|
||||
konto usunięte
|
Może wklepać w ster w kolejnej testowej, i przy okazji dać możliwość zejść z parametrem Maksymalna temperatura CO [°C]: do poziomu 60st ?
Przekroczenie max zadanej temperatury - przejście w tryb ręczny z włączoną pompą CO + alarm. |
|||
|
||||
Stan
|
Posprzątałem temat, posty nie związane przeniesione do "Luźnych rozmów"
|
|||
|
||||
adkwapniewski
|
Proszę o rozwianie wątpliwości dot zwracanej temp zew.:
Jeśli temp zewn jest dodatnia to poz22==0 i temp zew = (poz21-poz22)/10 -> (54-0)/10 Jeśli temp zewn jest ujemna to poz22==255 i temp zew = (poz21-poz22)/10 -> (217-255)/10 ujemna: [2,1,6,6,0,0,76,0,0,0,0,0,0,0,0,0,202,0,202,0,217,255,231,1,76,1,33,1,19,2,229,2,17,1,1,0,0,50,48,38, dodatnia : [2,1,6,6,0,0,76,0,0,0,0,0,0,0,0,0,202,0,202,0,54,0,231,1,9,1,23,1,22,2,19,3,5,1,1,0,0,50,48,38,0,0,2,2,1] Tak ? Czy inaczej ? |
|||
|
||||
ven
|
Te 2 liczby (bajty) to jest short int ze znakiem. (16 bitów) i dzielony przez 10.
W jakim języku programowania chcesz to sparsować ? |
|||
|
||||
adkwapniewski
|
Dzięki ven Stała się jasność
Docelowo chcę zmajstrować całość w c# , teraz użyłem pytona w c# przez "IronPython.Hosting" i do momentu temp ujemnych było ok , przy ujemnych wychodziły bzdury. byte[] data; data[0] = (byte)ster.s_statusdata[20]; data[1]= (byte)ster.s_statusdata[21]; (float)BitConverter.ToInt16(data, 0)/10.0f i jest dobrze Czy w którymś pliku archiwum zapisuję się praca podajnika ? [dataczas,czas pracy(sek)] ? Co znajduje się w pliku fuel.dat Z góry dzięki za info. |
|||
|
||||
DarekB
|
Faktycznie jest błąd najprostsze rozwiązanie to przed (przed funkcjami zwracającymi temperatury) wstawić temp=lambda hi,lo: struct.unpack('h', chr(lo)+chr(hi))[0]/10.0 i przepisać definicje funkcji zwracajacych temperatury np: def getTempZew(self): if (bool(self.s_statusdata)): return temp(self.s_statusdata[21], self.s_statusdata[20]) Pozdrawiam db |
|||
|
||||
ven
|
w c# temp odczytuje się tak:
float temp = (BitConverter.ToInt16(Data, 22) / 10f); //22 to index w tablicy Data nie zauważyłem że wyżej też podałeś ten kod zamiast tak: byte[] data; data[0] = (byte)ster.s_statusdata[20]; data[1] = (byte)ster.s_statusdata[21]; (float)BitConverter.ToInt16(data, 0)/10.0f i jest dobrze zrób tak: (float)BitConverter.ToInt16(ster.s_statusdata, 20)/10.0f |
|||
|
||||
adkwapniewski
|
Wtedy wywala ex -"Najlepiej dopasowana metoda przeciążona metody „System.BitConverter.ToInt16(byte[], int)” zawiera niektóre nieprawidłowe argumenty." - dlatego zrobiłem na okrągło.
Problem pojawił się przez to : ->dynamic sterownik; dynamic ster; Boolean Zalogowany; public FGlowna() { InitializeComponent(); var ipy = Python.CreateEngine(); ->sterownik = ipy.ExecuteFile(@".\sterownik_serwer2.py"); gdyby było wszystko w c# - nie było by problemu zdradzisz tajemnicę fuel.dat (struktura) ? pozdrawiam adkw |
|||
|
||||
ven
|
Niestety pliku fuel.dat już nie wykorzystujemy. Więc do niczego się nie przyda.
Zużycie paliwa rejestrowane jest teraz w pliku sync.dat, ale jest on pobierany i kasowany przez serwer. Nad źródłami w c# pomyślimy |
|||
|
||||
DarekB
|
Podmieniłem wersję biblioteki https://drive.google.com/file/d/0B1rjRhAXEGUoN3hTV2xHWXFpaGs/edit?usp=sharing zrobiłem kilka poprawek: Można się łączyć ze sterownikiem w sieci lokalnej jak i poprzez esterownik.pl zależnie od tego czy poda się IP czy id sterownika, Uwzględniłem interpretację temperatur ujemne Do łączenia używam wbudowane urllib2 więc nie potrzeba dociągać dodatkowych bibliotek. Jeszcze pytania: Czy ktoś zaczął pisać jakiś sterownik do kotła, chętnie w miarę umiejętności i czasu dołączę się, może nie pomogę merytorycznie ale programistycznie chętnie? Czy można gdzieś zdobyć algorytmy lub źródła programów do sterowania kotłami. Pozdrawiam db |
|||
|
||||
Stan
|
Z pomocy programistycznej chętnie skorzystamy , jest dużo do obgadania, odezwij się na PW wymienimy telefony i pogadamy.
|
|||
|
||||
janusz
|
ven napisał » 2014-03-03 22:21 Zużycie paliwa rejestrowane jest teraz w pliku sync.dat, ale jest on pobierany i kasowany przez serwer. Jeżeli przechwycę plik sync.tmp to jak go odczytać przykład danych 2014-03-05 13:00:00;1;154;0; 2014-03-05 14:00:00;1;140;0; 2014-03-05 15:00:00;1;143;0; 2014-03-05 16:00:00;1;126;0; 2014-03-05 17:00:00;1;98;0; 2014-03-05 18:00:00;1;91;0; 2014-03-05 19:00:00;1;273;0; Data wiadoma ale resztę jak czytać Janusz |
|||
|
||||
seba
|
W pliku sync.dat rejestrowane jest zużycie paliwa. Możliwe opcje:
- Nowy zasyp [data godz];0;[ilość paliwa w kg];[0-tryb zima, 1-tryb lato]; - Zużycie godzinowe [data godz];1;[czas pracy podajnika w sek];[0-tryb zima, 1-tryb lato]; - Czas pracy podajnika przed wyłączeniem sterownika [data godz];3;[czas pracy podajnika];[0-tryb zima, 1-tryb lato]; |
|||
Pierwsza stronaPoprzednia strona2 / 18Następna stronaOstatnia strona | ||||