Tak to też nawet Atmelek. Dyskusja jest raczej w stylu dlaczego maszyny z mniejszymi komputerami (PLC, uK jednoukładowe) są bezpieczniejsze od maszyn z komputerami PC (PC prawidłowo też naywa się mikrokomputer)
To już trochę OT, ale obecnie produkcja małoseryjna rulez.
Są różne maszyny. Jak piszes scada, to nie jest to centrum obróbcze. Nie wszystko jest takie proste: włączyć maszynę, wyjąć zrobiony detal, wyłączyć maszynę. A wgrywanie projektu z nośnika... skąd on się bierze na nośniku?
No bywa też coś takiego, jak mi się zdarzyło. Zadzwonił facet z Austrii jak byłem akurat w USA. Nawaliła maszynka, która stała w stalowni gdzieś na Syberii. On wisiał przez VPN na maszynce w Rosji i podsyłał mi emailem screenshoty i gadaliśmy przez Skype z człowiekiem w Rosji i ze sobą. Tu akurat przydał się display na PLC (nawiasem mówiąc kombinowane urządzenie z PCtem na RT-Linuxie i jakiś STEPach Siemensa). Trzeba było wsio zresetować i facio z Rosji musiał częściowo czytać, częściowo działała wideotelefonia, dopóki się VPN na nowo nie postawił. Ale udało się wszysko doprowadzić do używalności zanim przyszła pierwsza zmiana. Gdyby nie ten display to biedny Austriak musiałby lecieć kawał drogi tylko po to, by wymienić kabelek.
Masz komplet informacji w opisanej powyżej sytuacji aby wyzwolić alram/przejśc w tryb awaryjny. Pompa nie działa bez wody. I już. Co chcesz czujnikować? Czy woda faktycznie płynie? To *inna* asercja.
Mylisz zabezpieczenia programu jako takiego z zabezpieczeniami obiektu. Naprawdę bez informacji z zewnątrz nawet absolutnie bezpieczny sterownik jest ślepy.
Nie wyobrażam sobie bezpiecznego sterownika bez informacji zwrotnej. Bezpiecznego nie tylko dla otoczenia, ale dla obiektu sterowanego i samego sterownika.
No to się pogubiłem. Moduł asercji wystawia dla sterownika sygnały wejściowe. Obiekt też? Pomijając fakt istnienia zaworu, przecież potrzebna jest informacja czy można włączyć pompę.
Nawet tak prosty układ: Sterownik -(jedno wyjście)-> Obiekt (np.: pompa) nie będzie działał. Więc co zmienia: Sterownik -(jedno wyjście)-> Moduł asercji -> Obiekt (np.: pompa) ???
Moduł asercji ma za zadanie *natychmiast* zgłosić tryb awaryjny w sytuacji gdy zostaną naruszone jakiekolwiek reguły w nim zaszyte. Odpinając, przejmując sterowanie, wyłaczając zasilanie, robiąc shutdown. To rodzaj kontrolowanej katastrofy - jakiekolwiek stany maszyny po wystapieniu asercji nie są prawidłowe więc należy ja natychmiast zatrzymać i poinformować kogo trzeba (operatora/software). może być przelotowy (co pozwala odciąć sterownik właściwy) albo tylko sniffować i analizować proces sterowania.
Moduł asercji realizuje tylko *najprostsze* sprawdzenia. Takie jak "można wlaczyć pompę tylko jesli zawór dostał polecenie otwarcia". Czy zawór został faktycznie otwarty w tej asercji nie ma znaczenia. Wiadomo że wcześniej bylo polecenie otwarcia lub nie zaworu bo przecież widzimy cała komunikację. Ale obok jest następna: "jesli otwarto zawor wody, to ciśnienie musi osiągnąc wartość X po 2 sekundach" (tu masz swój czujnik). Obok jest nastepna: "jesli uruchomiono silnik pompy to wał musi osiągnąc po 20 sekundach prędkośc między 5 a 8 obrotow / sek". Dalej jest nastepna: "ciśnienie na wyjściu układu musi osiągnąć wartość Y w czasie nie dłuższym niż 100sek". I jeszcze jedna: "maksymalny impulsowy moment skręcający wału musi byc mniejszy niż Z w dowolnym momencie".
Jeśli złożysz te asercje do kupy to okaże się, że masz kompletny opis stanów dozwolonych maszyny, często z bardzo zawiłymi zależnościami opisanymi w sposób bardzo prosty. Nie jest to sterowanie, tylko określanie zbioru dozwolonych stanów. Czasami można stopniować "ten stan ma wywołać kontrolowaną katastrofę, a ten ostrzeżenie, a ten być raportowany".
Moduł asercji to rodzaj obserwatora mającego dostęp do komunikacji sterownik<->maszyna i potrafi czytać czujniki. Prywatnie integruje to zazwyczaj z układami wykonawczymi, przez co mam dostęp do *wszystkiego* co się da odczytać i wysterować.
Co zrobisz z tym twoja sprawa: to może być filtr odcinający sterownik wyższego poziomu (realizujacy właściwą logikę sterującą) od maszyny, to może być wlacznik alarmu, to może być coś co raportuje problemy, to może być coś co robi shutdown i uruchamia syrenę, to może dzwonić do biura prezesa.
Takie rozdzielenie pozwala w miarę komfortowo pisać sterownik właściwy (a niech nawet na jakimś g.. z LPT) bo kod bezpieczenstwa jest poza algorytmem.
Na szczęście nikt, bo zawór był w podziemnym schronie na ulicy, ale ten trzeba było wyczyścić, a i na ulicę wydostało się "conieco". Dekiel podskoczył, ale nie odleciał.
Tak dla informacji: opisywany przeze mnie w tym wątku program sterowania kolejki elektrycznej zawierał mniej więcej 4000 linijek kodu w RT-Pascalu. Z czego około 200 linijek to układ sterowania, reszta to asercje i symulacja. Jedna z asercji była oparta na symulacji rzeczywistego systemu i porównywania pozycji symulowanych i rzeczywistych. Dzięki temu można było wykryć poważne zmiany prędkości lokomotyw oraz "kradzież" lokomotywy.
Całkiem jak u tego Wołodii, co na Sybir poszedł za lenistwo. Wieczoerm razem z Griszą pili samogon i opowiadali kawały polityczne. Rano go łeb tak bolał, że nie miał siły iść i donieść. Grisza był pierwszy.
Zależy z której strony patrzeć.
Jarek
PS Donoszę, że w Skype całkiem dobrze działa transmisja obrazu pulpitu. Nie trzeba wysyłać skrinszotów mailem, można w czasie rzeczywistym prowadzić facia z drugiej strony za rękę.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.