Freesco, NND, CDN, EOS
http://forum.freesco.pl./

Linux w roli mastera sieci RS-485. Inteligentna pracownia.
http://forum.freesco.pl./viewtopic.php?f=34&t=17820
Strona 1 z 1

Autor:  mes mariusz [ czwartek, 27 sierpnia 2009, 10:31 ]
Tytuł:  Linux w roli mastera sieci RS-485. Inteligentna pracownia.

Kiedyś poruszyłem zagadnienie NND w roli logera danych napływających na port COM ( http://forum.freesco.pl/viewtopic.php?t=17394
http://www.elektroda.pl/rtvforum/topic1177138.html ).

Teraz potrzebna mi jest większa funkcjonalność. Otóż uruchamiam Inteligentną pracownię z wieloma urządzeniami pracującymi w sieci RS-485 nasłuchującymi komunikatów z centrali. Jako centralę mógłbym opracować odrębne urządzenie na uP, ale po co ładować się w z góry bardzo ograniczone (niewielkie zasoby pamięci mikrokontrolera) i mało wygodne w rozbudowie urządzenie elektroniczne, jeśli do tego celu można wykorzystać NND pracujące na maszynie w tym samym pomieszczeniu.

Przydałoby się coś w rodzaju crona, z drugiej nieco bardziej rozbudowanego. Z jednej strony, aby program wysyłał o określonych godzinach zaprogramowane komunikaty na port COM, a z drugiej, aby była możliwość programowania procesów nieco bardziej złożonych logicznie (decyzje logiczne na podstawie danych odebranych z urządzeń w sieci (temperatura, poziom oświetlenia itp.).

Idealną sytuacją byłoby sprowadzenie wszystkiego do pojedynczego skryptu konfiguracyjnego. Cała inteligencja byłaby wtedy pod wygodną i przejrzystą kontrolą, i zawierała by się w łatwo modyfikowalnym skrypcie.

Jakieś pomysły? A może chęci do współpracy nad projektem? :-)

Pozdrawiam
Mariusz

Autor:  Maciek [ czwartek, 27 sierpnia 2009, 10:45 ]
Tytuł: 

Jestem od jakiegoś już czasu pod wrażeniem twoich pomysłów, choć jako laik czasem nie bardzo wiem, o co ci chodzi.
Rozumiem, że w tym przypadku jest to projekt, który w jakiś sposób za pomoca rozmaitych czujników i przełączników ma sterować parametrami urządzeń - światłem, temperaturą i czymś tam może jeszcze...
Ja to sobie raczej myślę, ze maluchem to pola nie zaorzesz, bo nie do tego został przeznaczony. A maluch to nnd. Chyba też nie da się twoich potrzeb załatwić skryptem w bashu. Przypuszczam, że do tego są odpowiednie urządzenia i zapewne moduły do tego by takie czujniki i inne elementy podłączyć do komputera, i zapewne jest także wyspecjalizowane i nietanie oprogramowanie.

Autor:  mes mariusz [ czwartek, 27 sierpnia 2009, 10:51 ]
Tytuł: 

Maciek pisze:
Jestem od jakiegoś już czasu pod wrażeniem twoich pomysłów, choć jako laik czasem nie bardzo wiem, o co ci chodzi.
Rozumiem, że w tym przypadku jest to projekt, który w jakiś sposób za pomoca rozmaitych czujników i przełączników ma sterować parametrami urządzeń - światłem, temperaturą i czymś tam może jeszcze...
Ja to sobie raczej myślę, ze maluchem to pola nie zaorzesz, bo nie do tego został przeznaczony. A maluch to nnd. Chyba też nie da się twoich potrzeb załatwić skryptem w bashu. Przypuszczam, że do tego są odpowiednie urządzenia i zapewne moduły do tego by takie czujniki i inne elementy podłączyć do komputera, i zapewne jest także wyspecjalizowane i nietanie oprogramowanie.

Padło na NND ale przecież temat dotyczy raczej dowolnego Linuksa :-). Dla kogoś, kto jakieś pojęcie o obsłudze portu COM z poziomu Linuksa (ma opanowane choćby C) najprawdopodobniej zakrawa to o banał. Przecież chodzi o wysyłanie tudzież odbieranie stringów znakowych z portu / na port COM :-)

Coby było przejrzyściej :-) poniżej idea przykładowego skryptu.

    - Oczekuj stringu "start" na porcie COM (sygnał otrzymywany z systemu alarmowego po rozbrojeniu)
    - Wyślij string "A10" (żądanie odczytu temperatury do urządzania X)
    - Obierz daną, która napłynie i przyporządkuj zmiennej temperatura
    - Wyślij string "A11" (żądanie odczytu poziomu oświetlenia do urządzania X)
    - Odbierz daną, która napłynie i przyporządkuj zmiennej poziom_oświetlenia
    - Jeśli poziom_oświetlenia mniejszy od zadeklarowanej stałej wyślij na COM string "111" (zaświeci się światło główne)
    - Jeśli temperatura większa od zadeklarowanej stałej wyślij na COM string "121" (uruchomią się wentylatory)
    - Codziennie godz. 21.50 wyślij na COM string "B10" (z głośników popłynie komunikat o zbliżającym się końcu zajęć, przypomnienie procedury porządkowej itd.)


Jak widać, jedyny mój problem / jedyne ograniczenie to nieumiejętność / niezdolność władania składnią i kompilatorami języka C dla Linuksa (w tym obsługa portu COM, czytanie zewnętrznego pliku konfiguracyjnego).

Udało mi się rozjaśnić troszeczkę ? :-)

Autor:  CyberDuck [ czwartek, 27 sierpnia 2009, 12:57 ]
Tytuł: 

A ja bym sie na Twoim miejscu zainteresowal seiciami komputerowymi.
Na rynku sa juz gotowe moduly, ktore potrafia sie w ten sposob
komunikowac. Podlaczenie koncowek w ten sposob do NND w
tym wypadku bylby banalem. NND wrecz sie prosi o takie
rozwiazanie. Wyobraz sobie np potrzebe zamontowania kamerki
w bloku obok gdzie juz istnieje siec. Podlaczasz te kamerke do juz
istniejacej sieci, nadajesz jej z poziomu NND adres IP i zabawa
sie zaczyna. Tak moze byc z dowolna inna koncowka jaka chcesz
podlaczyc. Bez mikrokontrolerow w koncowkach sie nie obedzie
chyba bo trudno bedzie zwalic cala prace na NND chocby ze wzgledu
na czasy reakcji.

Autor:  mes mariusz [ czwartek, 27 sierpnia 2009, 13:40 ]
Tytuł: 

CyberDuck pisze:
A ja bym sie na Twoim miejscu zainteresowal seiciami komputerowymi.

W zastosowaniach automatyki przemysłowej / domowej typowy LAN ma przewagę minusów nad plusami. Choćby konieczność stosowania oddzielnych kabli pomiędzy urządzeniami a switchem, czy wysoka cena głupiego, pojedynczego modułu ethernetowego (ponad 100 zł). To nie to co sieciówka PCI produkowana na masową skalę, która kosztuje 10 zł. Ja wiem, że fajnie byłoby mieć wszystko na lanie. Niestety niewykonalne. Chyba, że jest się bogatym szejkiem, który śpi na złocie ;-)

W zastosowaniach profesjonalnych stosuje się dedykowane magistrale. Jedną z najpopularniejszych jest właśnie RS485. A czy masterem będzie urządzonko na uP, czy też dowolna maszyna PC, to już jest bez większego znaczenia. Tyle, że PC daje ci dużo więcej wygody i możliwości.

Nie obejdzie się chyba jednak od nastukania w C softu, który będzie czytał dedykowane dla siebie skrypty i na ich podstawie będzie wykonywał operacje na porcie COM. I mam dwie opcje, albo naumieć się programowania w C i obsługi dedykowanych kompilatorów (zajmie sporo czasu i nerwów, ale da największe możliwości), albo wynająć programistę i... dobrze mu zapłacić. Chyba że po drodze znalazłby się profesjonalista, który miałby ochotę uczynić to w myśl idei Open Source (soft pisany przez początkującego programistę będzie miał raczej wątpliwą jakość...)

Autor:  CyberDuck [ czwartek, 27 sierpnia 2009, 14:38 ]
Tytuł: 

Ceny tych modulow spadaja. Ale moze i Masz racje.
Pojedynczy modul ehernetowy mozna juz kupic za 50 zl i bez
przesady bo tych pojedynczych urzadzen nie bedzie az tak wiele.
Zorientowane w jednym miejscu mozna podlaczac w grupe.
Przewaga to duze odleglosci. Ba nawet mozesz sobie takie cos
postawic gdziekolwiek gdzie siega internet :
www.blulelan.pl/admin/1.php haslo demo :)
Ale jak tam sobie chcesz.
Lepiej odrazu napisz, ze tak wlasnie chcesz i masz w gdzies
dobre, sprawdzone sposoby :wink:

Najlepsze efekty uzyskasz jesli sie nauczysz C i sam sobie
cos takiego napiszesz. Poza tym to nie musza byc jakies bardzo
zaawansowane aplikacje bo reszte moze przejac inny podprogram
nie koniecznie oparty o C .

Autor:  pectosol [ czwartek, 27 sierpnia 2009, 23:13 ]
Tytuł: 

generalnie jesli chcesz zabierać sie do tworzenia wszystkiego od zera lepiej naucz się programować.
Może niekoniecznie c możesz spróbować również freepascala.

Jeśli jednak nie masz chęci/czasu na nauke od podstaw, to szukaj gotowych rozwiązań.
Piszesz że "uruchamiasz inteligentną pracownię"
czyli masz już wszystko, magistralę, protokół komunikacji, układ sterujący, moduły wykonawcze, pomiarowe itd

Obawiam sie że nie...
Zadajesz dużo mądrych pytań ale błądzisz...

Magistrala RS-485 ma ograniczenie do 32 urządzeń a przy długich przewodach prędkości nie są oszałamiające (100Kbit).
Do tego dochodzi brak gotowych rozwiązań sprzętowych.

Już kiedyś proponowałem zainteresowac sie magistrala 1-wire
Więc teraz trochę się rozpiszę aby cię zainteresować.
Do komunikacji potrzebujesz interfejsu zrobisz go np wg tego schematu
http://www.wiki.2o.pl/wiki/DS9097 lub kupisz na alledrogo
Do magistrali możesz podpiąc gotowe układy 1-wire lub stworzyć samemu na uP atmela.

Od strony programowej użyj OWFS - jakiś czas temu viater stworzył mi taką paczkę dla NND
http://forum.freesco.pl/viewtopic.php?t ... light=owfs
Viater ładnie opisał tam co i jak.
Działa u mnie na NND bez większych problemów i wstaje po restartach od kilkunastu miesięcy.

Sterowanie całością można rozwiązać na wiele sposobów.
Ja odpalam z crona skrypty które wykonuja jakieś zadania.
Np odczytują temperaturę, licznik wody,prądu itp i zapisują to bazy rrdtoola.

Na tej stronie pewien człowiek w fajny sposób udokumentował podobny projekt
http://idom.wizzard.one.pl/
wszystko to też działa na 1-wire

Autor:  mes mariusz [ czwartek, 27 sierpnia 2009, 23:33 ]
Tytuł: 

Magistralę RS485 i jej tajniki znam całkiem nieźle. Urządzenia już są. Po kolei będą ukazywały się w Elektronice Praktycznej. Karta wykonawcza na przekaźnikach / triakach wyjdzie w EP jak dobrze pójdzie to jeszcze w tym roku (kolejka). Magistrala jest, protokół też. Wszystko będzie ewoluowało w naturalnym dla siebie tempie. Jednak pomysł PC z Linuksem jako master magistrali RS485 bardzo mi się spodobał. I chyba rzeczywiście wezmę się za zgłębianie obsługi COM w C, by stworzyć program obsługujący skrypty - zewnętrzne pliki tekstowe, które łatwo edytowalne, zapewnią wygodne aktualizacje "inteligencji pomieszczenia", również zdalnie po zalogowaniu się po ssh na NND z dowolnego miejsca.

Autor:  CyberDuck [ piątek, 28 sierpnia 2009, 03:13 ]
Tytuł: 

Zapytam z ciekawosci pectosol ...
Jaka maxymalna odleglosc polaczenia miedzy interface
uzyskales na tym 1wire ?
I jedna sugestia. Mozna oprogramowac dowolne
mikrokontrolery pod te magistrale.

Autor:  pectosol [ piątek, 28 sierpnia 2009, 11:19 ]
Tytuł: 

specyfikacja pozwala 1-wire pozwala przekraczać 100m
U siebie w domu mam zatynkowany około 300m skrętki spiętej w gwiazdę. Na tej lini jest kilka DS1820 - działa bez problemu.
Co do dowolnych uP to nie wiem, znam atmela. Już najprostszy bascom pozwala na obsługe lini 1-wire i w roli mastera i slawe

Autor:  CyberDuck [ piątek, 28 sierpnia 2009, 15:28 ]
Tytuł: 

No to ladnie :)
Ja sie raczej zaczolem specjalizowac w ST7 .
Praktycznie na kazdy mikrokontroler sa napisane w dowolnym
jezyku procedurki do transmisji wlasciwie juz nie tylko
dla samego 1-wire. Bardzo fajna sprawa. Gratulacje za samozaparcie
w wykonaniu projektu. Ja tez kiedys chcialem cos takiego zrobic, ale
czas i finanse mi troszke w tym przeszkodzily. Teraz juz sie tak nie chce.

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/