Elektroda.pl
Elektroda.pl
X
Elektroda.pl
MetalWork SafetyMetalWork Safety
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

squizzy 17 Lis 2018 19:41 67347 286
  • #211
    wobio
    Poziom 12  
    flaoo13 napisał:
    ESP odczytuje jedynie dane, które lecą po RS i wysyła je przez POST-http do skryptu php. Skrypt parsuje dane


    Pracuję obecnie nad "konwersją" danych z ESP do Domoticz-a. Rozkminiłem już format JSON, którym mogę przesłać dane do Domoticz-a. Niestety utknąłem na parsowaniu danych przez skrypt PHP.
    Flaoo13 możesz zdradzić troszkę szczegółów odnośnie Twojego skrytpu php? Teraz właśnie edukuję się odnośnie PHP. W edukacji bardzo pomógłby mi Twój przykład. :-) Jeśli byłbyś tak dobry udostępnij proszę fragmenty skryptu. Może być na priv-a.
  • MetalWork SafetyMetalWork Safety
  • #212
    yntelo
    Poziom 9  
    Czy ktoś może się podzielić działającym algorytm obliczania CRC16_MCRF4XX w C/C++? Ten, który próbowałem zaadaptować działa... ale niestety tylko do czasu, gdy w tablicy znajdzie się wartość 0xFF lub zbliżona. Nie wiem o co chodzi, ale w takiej sytuacji drugi bajt wynikowego CRC mam zanegowany np. 1010 1110 zamiast prawidłowego 0101 0001. ¯\\\_(ツ)\_/¯

    Code:
    uint16_t crc16_mcrf4xx(char *data, size_t len)
    
    {
        uint16_t crc = 0xFFFF;
        while (len--)
        {
            crc ^= *data++;
            for (int i=0; i<8; i++)
            {
                if (crc & 1) crc = (crc >> 1) ^ 0x8408;
                else crc = (crc >> 1);
            }
        }
        return crc;
    }
  • MetalWork SafetyMetalWork Safety
  • #213
    szczukot
    Poziom 13  
    wobio napisał:
    flaoo13 napisał:
    ESP odczytuje jedynie dane, które lecą po RS i wysyła je przez POST-http do skryptu php. Skrypt parsuje dane


    Pracuję obecnie nad "konwersją" danych z ESP do Domoticz-a. Rozkminiłem już format JSON, którym mogę przesłać dane do Domoticz-a. Niestety utknąłem na parsowaniu danych przez skrypt PHP.
    Flaoo13 możesz zdradzić troszkę szczegółów odnośnie Twojego skrytpu php? Teraz właśnie edukuję się odnośnie PHP. W edukacji bardzo pomógłby mi Twój przykład. :-) Jeśli byłbyś tak dobry udostępnij proszę fragmenty skryptu. Może być na priv-a.


    Jakie dane chcesz parsować w PHP ? Ja wysyłam dane bezpośrednio z ESP do domoticza.
    Np https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Temperature

    Fantom

    Dodano po 1 [minuty]:

    yntelo napisał:
    Czy ktoś może się podzielić działającym algorytm obliczania CRC16_MCRF4XX w C/C++? Ten, który próbowałem zaadaptować działa... ale niestety tylko do czasu, gdy w tablicy znajdzie się wartość 0xFF lub zbliżona. Nie wiem o co chodzi, ale w takiej sytuacji drugi bajt wynikowego CRC mam zanegowany np. 1010 1110 zamiast prawidłowego 0101 0001. ¯\\\_(ツ)\_/¯

    Code:
    uint16_t crc16_mcrf4xx(char *data, size_t len)
    
    {
        uint16_t crc = 0xFFFF;
        while (len--)
        {
            crc ^= *data++;
            for (int i=0; i<8; i++)
            {
                if (crc & 1) crc = (crc >> 1) ^ 0x8408;
                else crc = (crc >> 1);
            }
        }
        return crc;
    }


    Jutro postaram się odnaleźć swoje źródła to przekleję tą metodę do CRC.
    Ale ktoś podawał na początku jakąś działającą wersję jak pamiętam. Kilka stron wcześniej w tym wątku.

    Fantom
  • #214
    yntelo
    Poziom 9  
    @szczukot korzystałem z algorytmu CRC podanego w tym wątku, ale po przepisaniu na c++ nie działał mi poprawnie, tak samo żaden inny z neta. Ale minionej nocy wszystko się wyjaśniło i już działa. Trzeba przekazywać tablicę o typie zgodnym z tym, na którym pracuje algorytm, czyli potrzebna jest 16 a nie 8 bitowa tablica (uint16_t zamiast char). Problemem była więc niejawna konwersja, nie do końca trafiona przy operacjach bitowych.

    Code:

    Tak jest źle
    uint16_t crc16_mcrf4xx(char *data, size_t len)

    Tak jest dobrze
    uint16_t crc16_mcrf4xx(uint16_t  *data, size_t len)
  • #215
    wobio
    Poziom 12  
    szczukot napisał:
    Jakie dane chcesz parsować w PHP ? Ja wysyłam dane bezpośrednio z ESP do domoticza.
    Np https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Temperature

    Fantom


    Generalnie interesuje mnie odczyt poniższych danych:
    157D Zmierzona temperatura CO
    157E Ustawiona temperatura CO
    166E Zmierzona temperatura CWU
    1616 Ustawiona temperatura CWU
    15CD Tryb pracy pomp
    1620 Ustawiona godzina sterownika
    1621 Ustawiony dzień tygodnia sterownika
    1589 Pompa CO
    158B Pompa CWU
    15AB Pompa podłogowa
    1587 Podajnik
    1588 Wentylator nadmuchu
    159B Bieg wentylatora nadmuchu

    Zastanawiałem się też nad tym, aby bezpośrednio z ESP przesyłać komendy JSON do domoticza. Tylko całe dekodowanie odczytu ciągu znaków z pieca, trza zaszyć w sofcie ESP. Możesz wrzucić jakiś przykład, jak to realizujesz?
  • #216
    mlody spawacz
    Poziom 12  
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny


    Transmisja danych po RS
    Na końcu mam konwerter RS485-USB-Raspberrypi z FHEM.
    Dane obrabia sam system , wybieram tylko to co mnie interesuje:

    attr kociol reading01Name Temperatura_Spalin
    attr kociol reading01Regex Temperatura.spalin\">(.*?).......<\/div>
    attr kociol reading02Name Temperatura_Kotła
    attr kociol reading02Regex Temperatura.kotła\">(.*?)......<\/div>
    attr kociol reading03Name Temperatura_Kotła_Zadana
    attr kociol reading03Regex Temperatura.kotła.ustawiona\">(.*?)......<\/div>
    attr kociol reading04Name Temperatura_CWU
    attr kociol reading04Regex Temperatura.zbiornika.CWU\">(.*?)......<\/div>
    attr kociol reading05Name Temperatura_CWU_Zadana
  • #217
    mdnet
    Poziom 10  
    Witam. Pod koniec tygodnia zamierzam się dobrac do sterownika K1P v2. Czy aby sterownik wysyłał dane muszę mieć moduł internetowy lub pokojowy? Jak narazie odczytuje temperatury przez ds18b20 oraz zliczam godzinne, dobowe itd z użycie eko groszku na podstawie pomiaru czasu pracy podajnika.
  • #218
    yntelo
    Poziom 9  
    Podglądałem trochę komunikację ze sterownika K1PRv2 (v2.4.7). RSy działa tak samo jak w przypadku AG Lux (dzięki za schemat), a parametry przesyłane w ramce są takie same jak opisane w tym wątku (również dziękuję).

    K1PRv2 w trybie Regulator Tech wysyła tylko 4 ramki, każda co 2-3 sekundy. Ramki powtarzają się w kółko:
    - ramka główna, temperatury, tryby pracy itp.
    - ramka z info z zaworu 1 + stan pomp
    - ramka z info z zaworu 2 + stan pomp
    - ramka z info z zaworu 3 (wbudowany) + stan pomp

    W trybie Moduł GSM lub Moduł Internet zestaw danych jest ten sam, ale układ ramek inny. W Moduł Internet dochodzi tylko 1 już znany parametr - bieg wentylatora oraz 4 nowe parametry wysyłane z kotła do modułu (IP, maska, brama, DNS, reset hasła modułu).

    Wydaje mi się, że to co tutaj wspólnie ustaliliście będzie funkcjonowało również dla K1PRv3 i 4 oraz K1Pv2 i 3 i 4 . Nowsze wersje będą po prostu zawierały więcej parametrów, ale wszystkie zdają się być kompatybilne wstecz.

    Dodaję trochę info od siebie do bazy @rohdamn
    Code:

    0x15A9 - temp. podłogówki (z czujnika podłogówki)
    0x15AA - pompa cyrkulacji CWU (wartośći 0 i 1, gdzie 1 to praca)
    0x1771 - pompa bufora (wartości 0 i 1, gdzie 1 to praca)
    0x15F7 - temp. zalaczenia pompy podlogowej (np. 35C)
    0x160F - temp. max podłogi (np. 45C)
    0x15AC - % otwarcia zaworu wbudowanego (aktualnie opisane jest to jako "temp. aktualna zaworu", co nie jest prawda)


    Poza tym chyba jest błąd w https://dzien.net/tech/index.php tzn. niżej mam ramkę ze sterownika K1PRv2, która jest prawidłowa, czyli ma prawidłowe CRC, a mimo to stronka oznacza ją jako uszkodzoną ponieważ w środku ramki występuje wartość 0x0226 utożsamiana z początkiem ramki. Tutaj jest to po prostu temp. CWU o wartości 55,0C.
    Code:

    02 26 FF FA 15 7F 00 01 15 7D 02 BC 15 7E 00 3F 16 6E 02 26 16 16 00 37 16 F8 01 04 16 84 00 00 18 3C 00 00 16 81 00 14 15 7C 00 00 15 A7 00 07 16 FF 00 03 15 CD 00 01 16 20 0F 2E 16 21 00 01 15 B7 03 5C 15 87 00 00 16 10 00 00 01 F6 00 00 02 8E 00 00 01 F9 00 00 03 11 00 00 03 12 00 00 02 45 00 00 02 98 00 00 02 99 00 00 04 05 00 00 04 06 00 00 04 04 00 00 16 F2 00 00 16 F1 00 00 02 18 93 32


    Dodano po 13 [minuty]:

    @mdnet jak badasz czas pracy podajnika oraz jak przeliczasz to na ilość ekogroszku? Mój sterownik K1PRv2 zdaje się nie wysyłać żadnych informacji o podajniku za wyjątkiem stanu jego pracy (praca/stop), ale na tej podstawie nie da się obliczyć zużycia.
  • #219
    mdnet
    Poziom 10  
    Podpięty jestem bezpośrednio pod przewód silnika. W momencie podawania procek (STM32) zalicza czas, później przelicza to na ilość podanego węgla i aktualizuje stronkę postawiona na nim. Z pomiarów obliczylem, że podajnik podaje ok 520gram/min

    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny
  • #220
    yntelo
    Poziom 9  
    Pomysłowe. A jak przeszedłeś z 230V podajnika na 3.3V mikrokontrolera? Przekaźnik? Jaki jeśli można wiedzieć?
  • #221
    szczukot
    Poziom 13  
    W końcu udało mi się odnaleźć schemat i kod programu :) Miałem to na Visual Studio a nie na Arduino IDE i dlatego nie mogłem na kompach tego wyszukać.
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

    Używam
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny
    więc tak naprawdę te 3 diody na górze i stabilizator jest już wbudowany.

    Co do wysyłania danych do domoticza to mam coś tego typu:
    SendGET(DomoticzUrl + UserAndPassword + "&type=command¶m=udevice&idx=" + idx + "&nvalue=0&svalue=" + str);
    String DomoticzUrl = "http://ip:port/json.htm?";
    String UserAndPassword = "username=xyz&password=xyz";
    idx to indeks device w domoticzu
    str to wartość temperatury

    Fantom
  • #222
    mdnet
    Poziom 10  
    Jak narazie zasilanie silnika podłączyłem pod jakiś mały zasilacz (chyba ładowarka komórki). Obciążylem to jakaś małą
    rezystancja i podałem na GPIO kontrolera który chyba toleruje +5V. Oczywiście musiałem programowo z korygować czasy ze względu na pojemności w zasilaczu. Wyniki pomiaru czasu podawania różnią się zaledwie o kilka ms.

    Rozwiązanie może mało profesjonalne, ale działa już kilka lat. Podstawowym założeniem była izolacja galwaniczna od sieci.

    Myślałem nad czymś innym również nad przekaźnikiem lub jakiś drut nawiniety na jeden z przewodów (detekcja napiecia).
  • #223
    TomasekTMK
    Poziom 9  
    szczukot napisał:
    W końcu udało mi się odnaleźć schemat i kod programu :) Miałem to na Visual Studio a nie na Arduino IDE i dlatego nie mogłem na kompach tego wyszukać.
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

    Używam
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny
    więc tak naprawdę te 3 diody na górze i stabilizator jest już wbudowany.

    Co do wysyłania danych do domoticza to mam coś tego typu:
    SendGET(DomoticzUrl + UserAndPassword + "&type=command¶m=udevice&idx=" + idx + "&nvalue=0&svalue=" + str);
    String DomoticzUrl = "http://ip:port/json.htm?";
    String UserAndPassword = "username=xyz&password=xyz";
    idx to indeks device w domoticzu
    str to wartość temperatury

    Fantom


    Czy masz jakieś kody źródłowe do pobrania?
  • #224
    rohdamn
    Poziom 12  
    yntelo napisał:


    Poza tym chyba jest błąd w https://dzien.net/tech/index.php tzn. niżej mam ramkę ze sterownika K1PRv2, która jest prawidłowa, czyli ma prawidłowe CRC, a mimo to stronka oznacza ją jako uszkodzoną ponieważ w środku ramki występuje wartość 0x0226 utożsamiana z początkiem ramki. Tutaj jest to po prostu temp. CWU o wartości 55,0C.
    Code:

    02 26 FF FA 15 7F 00 01 15 7D 02 BC 15 7E 00 3F 16 6E 02 26 16 16 00 37 16 F8 01 04 16 84 00 00 18 3C 00 00 16 81 00 14 15 7C 00 00 15 A7 00 07 16 FF 00 03 15 CD 00 01 16 20 0F 2E 16 21 00 01 15 B7 03 5C 15 87 00 00 16 10 00 00 01 F6 00 00 02 8E 00 00 01 F9 00 00 03 11 00 00 03 12 00 00 02 45 00 00 02 98 00 00 02 99 00 00 04 05 00 00 04 06 00 00 04 04 00 00 16 F2 00 00 16 F1 00 00 02 18 93 32



    Cześć,
    poprawione, można sprawdzać.
    Teraz rozpoznaję początek ramki od 022600 lub 0226FF (póki co innych w bazie ramek nie namierzyłem).
  • #225
    wobio
    Poziom 12  
    Podpowiedzcie drodzy koledzy jak przekonwertować wycięte 4 znaki ze stringu odczytanego ze sterownika pieca na wartość DEC?
    Wycinam przykładowo 4 znaki "003C" i zapisuję je do nowego stringa.
    I tu pytanie jak ten czteroznakowy string zamienić na wartość decymalną aby potem dodać ją do komendy json i wysłać do domoticza-a?
  • #226
    szczukot
    Poziom 13  
    Ja ma mcoś takiego :

    void SendTemp(String temp, String idx)
    {
    long dec = strtol(temp.c_str(), NULL, 16);
    float flo = dec / 10.0;
    String str = String(flo, 1);
    ...

    Fantom
  • #227
    wobio
    Poziom 12  
    szczukot napisał:
    Ja ma mcoś takiego :

    void SendTemp(String temp, String idx)
    {
    long dec = strtol(temp.c_str(), NULL, 16);
    float flo = dec / 10.0;
    String str = String(flo, 1);
    ...

    Fantom


    Dzięki Fantom.
    strtol - tego potrzebowałem.
    Od wczoraj udało mi się uruchomić logowanie temperatur CO i CWU do domoticza :-)

    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

    Bez waszej pomocy nie dałbym rady. Dzięki wielkie Wam wszystkim!!!
    W ciągu 9 godzin zdarzyły się jakieś 3 dziwne wartości pomiaru. Nie wiem z czego to może wynikać, muszę nad tym jeszcze popracować. Dalej będę w wolnym czasie próbował odczytywać inne pozostałe parametry oraz coś wysłać do sterownika pieca.

    Problem z którym się jeszcze obecnie borykam to samoczynne resetowanie się układu.
    Początkowo gdy podpinałem go pod napięcie sterownika (15,8V) przez LM1117 (na wejściu i wyjściu kondensatory elektrolityczne 220uF) to układ resetował się bardzo często. 3-4 razy na minutę.
    Podpiąłem następnie układ pod zewnętrzny zasilacz (6V). Sytuacja diametralnie się poprawiła, aczkolwiek zaobserwowałem że co kilka minut zdarzy się też jakiś reset.
    Czy przyczyną tych resetów może być jakość napięcia zasilającego? Dać jakieś większe kondensatory? Chciałbym mimo wszystko wykorzystać zasilanie ze sterownika pieca. Dodatkowo ten LM1117 strasznie się grzeje stabilizując napięcie z 15,8 na 3,3. Czy zastosować coś innego do tego aby możliwe było zasilanie ESP-ka ze sterownika pieca, ale bez notorycznych restartów?

    Pozdrawiam.
  • #228
    szczukot
    Poziom 13  
    Zobacz moje posty o zasilaniu i schemat itp.
    Ja stabilnie zasilam bezpośrednio ze sterownika. Mam jeden kondensator tantalowy 100uF i wbudowany na płytce stabilizator (tam chyba montują AMS1117).

    Fantom
  • #229
    yntelo
    Poziom 9  
    Reset lub zwiecha mikrokontrolera może być też spowodowana fragmentacją pamięci, co ma miejsce gdy zbyt namiętnie używa się String-ów. Nie mówię, że tak jest u Ciebie @wobio, ale warto mieć to na uwadze, gdyby skończyły się pomysły związane z optymalizacją układu zasilania.
  • #230
    wobio
    Poziom 12  
    Poczytałem co nieco o podstawach zasilania układów mikrokontrolerów i najczęściej popełnianych błędach. I co się okazało? Popełniłem jeden z najczęstszych błędów. :sm31: Nie podciągnąłem wejścia RST przez rezystor do Vcc. Po wstawieniu 10kΩ problem z restartami zniknął. :lol:
    Od wczoraj nie zauważyłem ani jednego restartu. I zasilam układ prosto ze sterownika pieca.
    Co jeszcze zauważyłem, a co mnie zdziwiło? Po wstawieniu tego rezystora i podłączeniu pod zasilanie 15,8V z pieca, stabilizator LM1117 jest tylko delikatnie ciepły, a nie tak jak wcześniej gorący, że nie można go było dotknąć. :shocked!:
    Zdarzają się natomiast jeszcze co jakiś czas dziwne wartości mierzone, ale to myślę wyeliminuję jak wprowadzę sprawdzanie sumy kontrolnej, której na chwilę obecną jeszcze nie mam.
    Tak więc podciągajcie wejścia reset do Vcc. :ok:
  • #231
    szczukot
    Poziom 13  
    Chyba wszystkie płytki "gotowce" mają obsłużone to wejście - tak wynika ze schematów. Dlatego trzeba podciągać itp tylko w przypadku korzystania z gołego modułu ESP8266.
    Co dokładnie używasz ?
  • #232
    wobio
    Poziom 12  
    No właśnie moja wersja (ESP12E) nie miała go obsłużona. Jedynie CH_PD jest pod Vcc podciągnięty.


    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

    Dodano po 9 [godziny] 56 [minuty]:

    szczukot napisał:
    Nie sprawdzaj tych 300 ms, tylko czy odczytane ostatnie znaki są równe 0218. jak tak to doczytaj jeszcze 4 znaki (sumę kontrolną). I to teoretycznie będzie cała ramka. Dla pewności oczywiście sprawdź CRC. I jak się zgadza to ok. Jak nie to czytaj od nowa.


    Walczę obecnie ze sprawdzaniem tej sumy kontrolnej. Udało mi się już sprawdzić czy ostatnie znaki przed sumą kontrolną to 0218 i odczytać znaki sumy kontrolnej. Pytanie jak ją teraz obliczyć? Fantom możesz podzielić się kodem obliczania wartości tej sumy kontrolnej? Z góry dzięki.
  • #233
    yntelo
    Poziom 9  
    CRC było m.in. w poście #212 i #214, a tak tego używać:

    Code:

        typedef unsigned short int ushort;

        // validate crc
        ushort crcRemote = frame[frameSize - 2] << 8 ^ frame[frameSize - 1];
        ushort crcLocal = Crc16_mcrf4xx(frame, frameSize - 4);
        if (crcRemote != crcLocal)
        {
            return 2;
        };
  • #234
    wobio
    Poziom 12  
    Kurcze nie kumam tego obliczania sumy kontrolnej. :cry:
    Jakigo typu ma być zmienna frame i co powinna zawierać?
    Jak obliczasz frameSize?
    Chodzi mi na razie o wyliczenie crcLocal:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Potrzebuję jaśniejszego wytłumaczenia tej funkcji obliczjącej sumę kontrolną, dla laika raczkującego w programowaniu.
    Z góry dzięki.
  • #235
    mlody spawacz
    Poziom 12  
    typedef unsigned short int ushort;


    to jest dla dwukierunkowej komunikacji
    chyba że się mylę
  • #236
    yntelo
    Poziom 9  
    Typ ushort to po prostu alias na przesadnie długą deklarację unsigned short int. Jest to więc zwykły 2 bajtowy int bez znaku. Równie dobrze można napisać uint16_t, i chociaż jest między nimi drobna różnica, to w naszym przypadku nie ma to znaczenia. Na tym typie pracuje funkcja obliczająca CRC i taki typ zwraca.

    Frame jest tablicą elementów odczytanych prosto ze sterownika: ushort frame[maxBufferSize] (gdzie maxBufferSize = 500, bo nie widzialem dluzszych ramek ze sterownika, ważne żeby cała ramka się zawsze zmieściła). Po serial port lecą dane 1 bajtowe, ale odczytuję je do tablicy 2 bajtowych elementow, zeby pozniej bylo prosciej. Dzięki temu zabiegowi funkcja obliczająca CRC w ogóle działa. Bez tego miałem z nią problemy o co nawet pytałem w tym wątku (jeden bajt był za mały i coś się przelewało podczas obliczeń).

    frameSize to informacja ile danych wczytalem do bufora frame (wiadomo, frameSize jest zawsze mniejsze niż maxBufferSize).

    Wywołanie ushort crcLocal = Crc16_mcrf4xx(frame, frameSize - 4); przyjmuje 2 parametry, pierwszy to bufor, a więc ramka, na której będę obliczał CRC, a drugi parametr to informacja do którego miejsca w ramce ma robić obliczenia. Ponieważ w buforze jest cała ramka, a CRC obliczamy dla ramki z pominięciem znaku końca ramki (2 bajty) i pominięciem CRC (2 bajty) więc muszę poinstruować tę funkcję aby ominęła te dwa elementy, stąd frameSize - 4.

    CRC musi być liczone na surowej ramce tzn. na danych binarnych przed konwersją na postać hexadecymalną.

    No to jeszcze funkcja do CRC, co by wszystko było w jednym miejscu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Użycie (crcRemote to CRC otrzymane ze sterownika, jest ono zapisane na 2 bajtach więc pierwsza linijka to złożenie 2 bajtów w jedną za pomocą operacji bitowych):

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • #237
    mdnet
    Poziom 10  
    Część. Na początek dzięki Wszystkim za ogrom pracy włożonej w ten wątek. Dzięki temu bez problemu zrealizowałem odczyt danych od K1Pv2. Ramki od sterownika wyglądają niemal identyczne jak opisane w tym wątku. CRC – ok, jedno błędne na ok 2000 ramek
    Dzięki Waszej bazie nie musiałem się bawić w dekodowanie parametrów.

    Problem pojawił się natomiast z transmisją w drugą stronę.

    Do sterownika próbuje wysłać takie ramki:
    0226000002fc004002181E48
    0226fff402fc0040021851d4
    022600001616002802183A90
    0226fff4161600280218750C

    Nie jestem pewien czy mam wysyłać 0226 0FF4... - > do ETH, czy 0226 0000... - > do wszystkich, dlatego testuje na obu lecz bez rezultatu. Ramki wysyłam z MCU (STM32), z uwzględnieniem lini RTS, która z ciąga linię RX do masy 2ms przed transmisją. Do RS-a nie mam podłączonych żadnych innych urządzeń. Co do warstwy sprzętowej i programowej jestem niemal pewien 99%, że jest ok, ponieważ podglądałem oscyloskopem linie TX i RX. Oscylogramy początku ramek (0226) są niemal identyczne, różnica to z ciągnięcie linii RX do „0” tuż przed transmisją. Dane wysyłam zaraz po odebraniu ramki głównej z parametrami CO, CWU itd. Po wysłaniu danych sterownik natychmiast odpowiada następną jednak brak jakiejkolwiek reakcji na zmianę temp, a na sterowniku cały czas wyświetla brak komunikacji. Próbowałem już chyba wszystkiego, timingów, różnych ustawień modółów (tech, eth, gsm)

    Czy ktoś z kolegów ma jakiś pomysł na rozwiązanie tego problemu? Przypuszczam, że format ramki jest nieprawidłowy lub jak to defro pisze, że muszą być "dedykowane moduły" inaczej nie pójdzie. A może ktoś podsłuchał transmisję zwrotną od SPK LUX lub Dedykowanego modułu ETH, tylko nie wiem jakiego – chyba ST-500?
  • #238
    mlody spawacz
    Poziom 12  
    Pytanie
    wyskakuje Ci komunikat : sterownik nie podpięty.brak sterownika?


    przecież w pośćie #11 masz:


    WARTOŚĆ 903 = Sterownik główny jest odłączony
  • #240
    krzysiekj18
    Poziom 19  
    Witam,

    bazując na wiedzy zdobytej w powyższym temacie, odbieram dane wysyłane z sterownika ST-755 zPID (Stalmark) po procie RS do modułu Ethernet-u.

    Jako, że apetyt rośnie w miarę jedzenia mam kilka pytań:

    1. Czy da się odczytać większą ilość informacji, aniżeli te wysyłane do Ethernetu oraz regulatora pokojowego?
    2. Dane aktualnie wysyłane na prot RS są co kilka sekund, jest to dla mnie problematyczne zwłaszcza przy próbie analizowania spalania (czasu pracy podajnika). Znacie jakiś sposób na zwiększenie częstotliwości nadawania danych?
    3. Na płycie przyłączeniowej mam trzy porty RJ, dwa wolne oraz jeden z fabrycznie podłączonym przewodem, przypuszczam, że jest to kabel do panelu na piecu. Czy wpinając się równolegle w ten przewód uda mi się odbierać dane przesyłane do panelu, czy jest to również RS232? Dodam, iż zależy mi tylko na odczycie bez opcji przesyłania parametrów.

    Z góry dziękuję za zainteresowanie,
    Pozdrawiam, Krzysiek