eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikadziwny problem
Ilość wypowiedzi w tym wątku: 157

  • 1. Data: 2017-03-07 19:58:36
    Temat: dziwny problem
    Od: sundayman <s...@p...onet.pl>

    Potrzebuję takie dziwne coś...może podpowiecie.

    Otóż - MCU ma włączać lub wyłączać przekaźnik.
    Ale nie może to być zrobione po prostu w ten sposób, że jakiś port
    steruje tym przekaźnikiem, włączając go na określony czas.

    Dlaczego ? Ano dlatego, że chodzi o bezpieczeństwo. W razie np. awarii
    samego MCU, albo chociażby zawieszenia MCU mogłoby się zdarzyć, że ten
    port mógłby pozostać włączony dłużej niż trzeba. A to się nie ma prawa
    wydarzyć.

    Obecnie jest to rozwiązane w taki sposób, że w układzie są dwa MCU.
    Jeden nadzoruje drugi i jeżeli wykryje, że ten drugi coś robi nie tak -
    odłącza ten przekaźnik (oba muszą go uruchomić, żeby się włączył).
    Ale jest to nieco upierdliwe - trzeba oprogramować oba MCU itp.

    Zatem - chciałbym pozostawić jeden MCU.
    Ale - zamiast sterować jednym portem - zastosować np. 3 linie.
    Aby przekaźnik został włączony - musi pojawić się określona sekwencja na
    tych 3 liniach. Znaczy - musi ona się tam pojawiać cały czas, z
    określonym okresem.

    Jeżeli ta sekwencja zostanie zakłócona jakkolwiek - przekaźnik zostaje
    wyłączony i dodatkowo zostaje wygenerowany sygnał resetujący MCU.

    Od strony programu, sekwencja będzie generowana równocześnie w kilku
    miejscach programu - osobno dla każdej "linii" - aby jak najmniejsze
    było ryzyko, że program się "zapętli", a sekwencja nadal jest generowana
    poprawnie.

    Pytanie jest - jak możliwie prosto zrobić ten zewnętrzny układ ?
    No bo zastosowanie w jego roli MCU jest bez sensu w stosunku do obecnego
    rozwiązania.

    Układ musi być jak widać sekwencyjny, ale też z "pomiarem czasu", żeby
    jakieś zmiany poprawnego czasu było wykrywane. Czyli chyba żadne proste
    układy logiczne się nie nadadzą, zwłaszcza że nie chcę dodawać x elementów.

    Użycie jakichś wyrafinowanych układów typu FPGA czy nawet układów
    logicznych o "dużej mocy" też jest jakby nie na miejscu - bo to będzie w
    sumie bardziej kłopotliwe niż drugi MCU.

    Może podpowiecie, jakie układy programowalne będą "w sam raz" ?
    Cena do kilkunastu zł ma sens. Obudowa SMD. Może być jednokrotnie
    programowalne, czy wielokrotnie - nie ważne.

    A może jest jakiś wynalazek, który do czegoś takiego służy (wątpię) ?

    PS; oczywiście oprogramowanie wykorzystuje watchdogi. Ale
    to niestety nie jest zabezpieczenie przed nietypowymi zachowaniami
    programu - nie zapewnia bezpieczeństwa.
    Jednak kiedy program się wykrzaczy w "idle", to pół biedy.
    Przekaźnik musi być w 100% włączany przy "pełnej świadomości" programu -
    stąd konieczność takiego zabezpieczenia.





  • 2. Data: 2017-03-07 20:27:48
    Temat: Re: dziwny problem
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2017-03-07 19:58, sundayman wrote:
    > PS; oczywiście oprogramowanie wykorzystuje watchdogi. Ale
    > to niestety nie jest zabezpieczenie przed nietypowymi zachowaniami
    > programu - nie zapewnia bezpieczeństwa.

    Niby dlaczego? Watchdog strzela resetem, przekaźnik jest wyłączony w
    procedurze resetu i nie włączy się do aż oprogramowanie się nie odnajdzie.

    Jesli zapętli się z popychaniem watchdoga to przecież to samo co
    zapętlenie z popychaniem magicznego scalaka. Ryzyko takie samo.


  • 3. Data: 2017-03-07 20:28:12
    Temat: Re: dziwny problem
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "sundayman" napisał w wiadomości grup
    dyskusyjnych:o9mvt3$tsf$...@n...news.atman.pl...
    >Zatem - chciałbym pozostawić jeden MCU.
    >Ale - zamiast sterować jednym portem - zastosować np. 3 linie.
    >Aby przekaźnik został włączony - musi pojawić się określona sekwencja
    >na tych 3 liniach. Znaczy - musi ona się tam pojawiać cały czas, z
    >określonym okresem.

    Jakis port I2C/SPI ... sterujacy 74123.

    I programowo musisz wachlowac pinem portu, bo inaczej to po chwili 123
    przestanie sie wyzwalac.

    J.


  • 4. Data: 2017-03-07 20:47:05
    Temat: Re: dziwny problem
    Od: Jakub Rakus <s...@o...pl>

    W dniu 07.03.2017 o 19:58, sundayman pisze:
    >
    > Użycie jakichś wyrafinowanych układów typu FPGA czy nawet układów
    > logicznych o "dużej mocy" też jest jakby nie na miejscu - bo to będzie w
    > sumie bardziej kłopotliwe niż drugi MCU.
    >
    > Może podpowiecie, jakie układy programowalne będą "w sam raz" ?
    > Cena do kilkunastu zł ma sens. Obudowa SMD. Może być jednokrotnie
    > programowalne, czy wielokrotnie - nie ważne.

    CPLD?

    --
    Pozdrawiam
    Jakub Rakus


  • 5. Data: 2017-03-07 21:02:43
    Temat: Re: dziwny problem
    Od: g...@s...invalid (Adam Wysocki)

    Sebastian Biały <h...@p...onet.pl> wrote:

    > Niby dlaczego? Watchdog strzela resetem, przekaźnik jest wyłączony w
    > procedurze resetu i nie włączy się do aż oprogramowanie się nie odnajdzie.

    Chyba że upali się port (ale tak samo może się upalić i w innym scalaku),
    pytanie jakiego rodzaju zakłócenia to ma wytrzymać.

    Poza tym - czy styki przekaźnika mogą się skleić? Jeśli tak to może warto
    dać drugi przekaźnik, szeregowo, rozłączany po tym pierwszym i załączany
    przed nim...

    A może jakiś układ, który wywali bezpiecznik, jak przekaźnik będzie za
    długo włączony?

    > Jesli zapętli się z popychaniem watchdoga to przecież to samo co
    > zapętlenie z popychaniem magicznego scalaka. Ryzyko takie samo.

    Chyba że soft w ogóle nie wystartuje. Ale (przynajmniej w AVR-ach) reset
    powoduje przejście wyjścia w stan wysokiej impedancji - elektronika musi
    to podciągnąć pod jakiś właściwy stan i zinterpretować jako "przekaźnik
    wyłączony" (bez podciągnięcia zakłócenia mogłyby wyzwalać przekaźnik).

    --
    http://www.chmurka.net/


  • 6. Data: 2017-03-07 21:10:38
    Temat: Re: dziwny problem
    Od: g...@s...invalid (Adam Wysocki)

    sundayman <s...@p...onet.pl> wrote:

    > Obecnie jest to rozwiązane w taki sposób, że w układzie są dwa MCU.
    > Jeden nadzoruje drugi i jeżeli wykryje, że ten drugi coś robi nie tak -
    > odłącza ten przekaźnik (oba muszą go uruchomić, żeby się włączył).

    Gorzej jak oba się zawieszą, bo zakłócenie pójdzie na oba.

    > Ale - zamiast sterować jednym portem - zastosować np. 3 linie.
    > Aby przekaźnik został włączony - musi pojawić się określona sekwencja na
    > tych 3 liniach. Znaczy - musi ona się tam pojawiać cały czas, z
    > określonym okresem.

    Z jedną linią wydaje się proste - układ różniczkujący RC.

    A może jakiś expander I2C i za nim układ różniczkujący? Procek musiałby
    machać pinem expandera, czyli wykonać dosyć złożoną sekwencję.

    A może NE555? Procesor musi resetować timer co jakiś czas, żeby utrzymać
    stan umożliwiający włączenie przekaźnika drugim portem...

    > PS; oczywiście oprogramowanie wykorzystuje watchdogi. Ale
    > to niestety nie jest zabezpieczenie przed nietypowymi zachowaniami
    > programu - nie zapewnia bezpieczeństwa.

    Coś mi mówi, że zapewnienie 100% bezpieczeństwa elektronicznie może nie
    wystarczyć. Masz (Ty lub osoba odpowiedzialna) ubezpieczenie na wypadek
    skutków zbyt długiego włączenia przekaźnika? Może warto o tym pomyśleć,
    szczególnie jeśli straty mogą być nie tylko finansowe...

    > Przekaźnik musi być w 100% włączany przy "pełnej świadomości" programu -
    > stąd konieczność takiego zabezpieczenia.

    Generalnie poczytałbym o zasadach MISRA C i skupił się na tym, żeby
    program (przynajmniej część odpowiedzialna za logikę przekaźnika) był
    jak najprostszy. Im bardziej coś przekombinowane, tym więcej miejsca
    na pomyłki...

    --
    http://www.chmurka.net/


  • 7. Data: 2017-03-07 21:38:05
    Temat: Re: dziwny problem
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2017-03-07 21:02, Adam Wysocki wrote:
    >> Niby dlaczego? Watchdog strzela resetem, przekaźnik jest wyłączony w
    >> procedurze resetu i nie włączy się do aż oprogramowanie się nie odnajdzie.
    > Chyba że upali się port (ale tak samo może się upalić i w innym scalaku),
    > pytanie jakiego rodzaju zakłócenia to ma wytrzymać.

    Jeśli spore to pozostaje być może zrobienie na 74123 lub całkowicie
    analogowo.

    Tylko że spore zakłucenia propagują sie na logikę. Może trzeba wziąć uC
    przeznaczony do pracy w cieższych warunkach (np PIC zamiast ARV).

    Tak czy inaczej jesli watchdogowi ufać nie można to chyba nic sie nie da
    zrobić od strony cpu a wymyslanie magicznych sekwencji zakończy się tym
    że procesor wygeneruje randomiczne szumy na pinach po awarii i będa
    pasować ...

    > Poza tym - czy styki przekaźnika mogą się skleić? Jeśli tak to może warto
    > dać drugi przekaźnik, szeregowo, rozłączany po tym pierwszym i załączany
    > przed nim...

    Mam piec weglowy z podejnikiem węgla sterowany z jednego przekaźnika.
    Kilkukrotnie sterownik szlag trafił. Albo nie łączy albo skleja. Jak
    sklei to po kilkudziesieciu minutach mam pożar. Autor software i
    hardware nie przejmował się tym jednak jak widać za bardzo :D Ot,
    tranzystor na port i reszta dnia wolne.

    > A może jakiś układ, który wywali bezpiecznik, jak przekaźnik będzie za
    > długo włączony?

    Dokładnie tak załatwiłem ten sterownik. Między nim a silnikiem podajnika
    jest układ czasowy, ktory bezlitośnie odcina silnik dwoma przekaźnikami
    jak przekroczy limit jednorazowej pracy. Być może uratowało mi to dom.

    >> Jesli zapętli się z popychaniem watchdoga to przecież to samo co
    >> zapętlenie z popychaniem magicznego scalaka. Ryzyko takie samo.
    > Chyba że soft w ogóle nie wystartuje.

    Każdy cpu ma stabilny stan resetu. Mimo to osoboście wstawiłbym nie dośc
    że dwa przekaźniki szeregowo to jeszcze dodatkowy cpu z asercją czasową
    lub jakąs inną zależna od sytuacji. Jego programuje się *jeden* raz na
    caly proces developingu software w głownym cpu. Program tego pomocnika
    bedzie miał 10 linijek.


  • 8. Data: 2017-03-07 21:50:26
    Temat: Re: dziwny problem
    Od: Dariusz Dorochowicz <_...@w...com>

    W dniu 2017-03-07 o 19:58, sundayman pisze:
    > Potrzebuję takie dziwne coś...może podpowiecie.
    >
    > Otóż - MCU ma włączać lub wyłączać przekaźnik.
    > Ale nie może to być zrobione po prostu w ten sposób, że jakiś port
    > steruje tym przekaźnikiem, włączając go na określony czas.
    >
    > Dlaczego ? Ano dlatego, że chodzi o bezpieczeństwo. W razie np. awarii
    > samego MCU, albo chociażby zawieszenia MCU mogłoby się zdarzyć, że ten
    > port mógłby pozostać włączony dłużej niż trzeba. A to się nie ma prawa
    > wydarzyć.
    >
    > Obecnie jest to rozwiązane w taki sposób, że w układzie są dwa MCU.
    > Jeden nadzoruje drugi i jeżeli wykryje, że ten drugi coś robi nie tak -
    > odłącza ten przekaźnik (oba muszą go uruchomić, żeby się włączył).
    > Ale jest to nieco upierdliwe - trzeba oprogramować oba MCU itp.
    >
    > Zatem - chciałbym pozostawić jeden MCU.
    > Ale - zamiast sterować jednym portem - zastosować np. 3 linie.
    > Aby przekaźnik został włączony - musi pojawić się określona sekwencja na
    > tych 3 liniach. Znaczy - musi ona się tam pojawiać cały czas, z
    > określonym okresem.

    Zewnętrzny watchdog powinien tu wystarczyć. Może być ich kilka jak
    chcesz bardzo się zabezpieczyć - każdy odpalany inną linią.

    > Jeżeli ta sekwencja zostanie zakłócona jakkolwiek - przekaźnik zostaje
    > wyłączony i dodatkowo zostaje wygenerowany sygnał resetujący MCU.

    Czyli potrzebujesz sterować przekaźnikiem z obu stron - watchdogi
    trzymają jedną stronę, a sam procek drugą.

    > Od strony programu, sekwencja będzie generowana równocześnie w kilku
    > miejscach programu - osobno dla każdej "linii" - aby jak najmniejsze
    > było ryzyko, że program się "zapętli", a sekwencja nadal jest generowana
    > poprawnie.
    >
    > Pytanie jest - jak możliwie prosto zrobić ten zewnętrzny układ ?
    > No bo zastosowanie w jego roli MCU jest bez sensu w stosunku do obecnego
    > rozwiązania.

    Bramka AND/NAND/OR/NOR z odpowiednią liczbą wejść. A jeżeli chcesz to
    zapamiętać, no to dajesz klasyczny przerzutnik (D albo JK, bo one się do
    tego nadają). A w sumie to zamiast bramek możesz poszukać czegoś z
    otwartym kolektorem.

    > Układ musi być jak widać sekwencyjny, ale też z "pomiarem czasu", żeby
    > jakieś zmiany poprawnego czasu było wykrywane. Czyli chyba żadne proste
    > układy logiczne się nie nadadzą, zwłaszcza że nie chcę dodawać x elementów.

    A co to są zmiany poprawnego czasu? Jak to sobie wyobrażasz? Że watchdog
    zadziała ale nie zadziała? To tak nie może być z zasady.
    Czy chcesz mierzyć czas co jaki wystawiasz impulsy do watchdoga? No to
    nie jest jakieś wielkie wyzwanie o ile masz dość liczników.

    > Użycie jakichś wyrafinowanych układów typu FPGA czy nawet układów
    > logicznych o "dużej mocy" też jest jakby nie na miejscu - bo to będzie w
    > sumie bardziej kłopotliwe niż drugi MCU.
    >
    > Może podpowiecie, jakie układy programowalne będą "w sam raz" ?
    > Cena do kilkunastu zł ma sens. Obudowa SMD. Może być jednokrotnie
    > programowalne, czy wielokrotnie - nie ważne.
    >
    > A może jest jakiś wynalazek, który do czegoś takiego służy (wątpię) ?
    >
    > PS; oczywiście oprogramowanie wykorzystuje watchdogi. Ale
    > to niestety nie jest zabezpieczenie przed nietypowymi zachowaniami
    > programu - nie zapewnia bezpieczeństwa.

    Bo pewnie masz watchdogi programowe? A to trzeba dać hardware. Jak
    najprostszy.

    > Jednak kiedy program się wykrzaczy w "idle", to pół biedy.
    > Przekaźnik musi być w 100% włączany przy "pełnej świadomości" programu -
    > stąd konieczność takiego zabezpieczenia.

    Piszesz o jakimś niebezpieczeństwie. Może podchodzisz do tematu z
    niewłaściwej strony? Jedna z zasad zabezpieczeń zapalników bomb
    lotniczych mówi, że zabezpieczenia muszą wykorzystywać różne zjawiska
    fizyczne (opór powietrza, bezwładność itd). Nie wiem z jakiego rodzaju
    niebezpieczeństwem masz do czynienia, ale może po prostu potrzebujesz
    analogową/dodatkową/zewnętrzną kontrolę stanu? Np. ustawiasz "normalną"
    czułość układu regulacji na jakimś poziomie (przy poprawnym sterowaniu),
    a po przekroczeniu parametru (ale jeszcze na poziomie bezpiecznym)
    dodatkowy układ rozłącza np zasilanie przekaźnika (od drugiej strony)
    itd. i robi reset procka. Może też jest możliwość pomiaru jakiegoś
    innego parametru?

    Pozdrawiam

    DD


  • 9. Data: 2017-03-07 21:52:24
    Temat: Re: dziwny problem
    Od: Zbych <a...@o...pl>

    W dniu 07.03.2017 o 19:58, sundayman pisze:
    > Potrzebuję takie dziwne coś...może podpowiecie.
    >
    > Otóż - MCU ma włączać lub wyłączać przekaźnik.
    > Ale nie może to być zrobione po prostu w ten sposób, że jakiś port
    > steruje tym przekaźnikiem, włączając go na określony czas.

    Odetnij składową stałą sygnału sterującego podobnie jak to się robi w
    podwajaczach napięcia. Żeby trzymać włączony przekaźnik uC będzie musiał
    machać pinem. Jak się zawiesi na 1, to po jakimś czasie przekaźnik się
    wyłączy.

    http://www.nutsvolts.com/uploads/wygwam/NV_0198_Mars
    ton_Figure03.jpg




  • 10. Data: 2017-03-07 22:10:07
    Temat: Re: dziwny problem
    Od: Piotr Wyderski <n...@m...com>

    sundayman wrote:

    > Dlaczego ? Ano dlatego, że chodzi o bezpieczeństwo. W razie np. awarii
    > samego MCU, albo chociażby zawieszenia MCU mogłoby się zdarzyć, że ten
    > port mógłby pozostać włączony dłużej niż trzeba. A to się nie ma prawa
    > wydarzyć.

    No to proponuję sterować przekaźnikiem przez tranzystor z prostownikiem
    diodowym na wejściu, a z MCU sprzężyć go pojemnościowo. Dowolne stany
    stałe na portach się przez kondensator nie przeniosą, więc w przypadku
    zawieszenia układ się automatycznie wyłączy.

    Przebieg sterujący generuj sobie SPI albo UARTem, jeśli ma być
    naprawdę failsafe, to na pollingu, a nie przerwaniach. Jak nie
    zdążysz, to Ci się bajt skończy transmitować i przekaźnik znów
    się wyłączy.

    Czyli wychodzi kondensator, dioda, rezystor bramkowy i MOSFET.

    Pozdrawiam, Piotr


strony : [ 1 ] . 2 ... 10 ... 16


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: