Możliwa współpraca - sterowanie diodami poprzez komputer
Możliwa współpraca - sterowanie diodami poprzez komputer
Jestem zupełnie zielony w elektronice, dlatego też zwracam się z prośbą do Was, czy nie moglibyście mi pomóc. Oto mój problem:
Klient chce kupić od nas regały. Chce by towar zmagazynowany na półkach był jednoznacznie wskazywany przez system komputerowy. Osoba obsługująca wybiera nazwisko z bazy danych i zapala się dioda przy pudełku należącym do tej osoby. Oto parametry takiego systemu:
- ilość pudełek (diod) na półce - 7 szt.
- ilość półek w regale - 14 szt.
- ilość regałów - 25 szt.
Zatem razem diod byłoby 2450 szt. Czy istnieje jakieś proste rozwiązanie takiego problemu? Czy mogę prosić o proste wyjaśnienie jak to mogłoby wyglądać? Nie wykluczam współpracy.
Z góry dziękuję za pomoc.
Klient chce kupić od nas regały. Chce by towar zmagazynowany na półkach był jednoznacznie wskazywany przez system komputerowy. Osoba obsługująca wybiera nazwisko z bazy danych i zapala się dioda przy pudełku należącym do tej osoby. Oto parametry takiego systemu:
- ilość pudełek (diod) na półce - 7 szt.
- ilość półek w regale - 14 szt.
- ilość regałów - 25 szt.
Zatem razem diod byłoby 2450 szt. Czy istnieje jakieś proste rozwiązanie takiego problemu? Czy mogę prosić o proste wyjaśnienie jak to mogłoby wyglądać? Nie wykluczam współpracy.
Z góry dziękuję za pomoc.
Ostatnio zmieniony 13 lut 2007, 15:58 przez aro_kal, łącznie zmieniany 1 raz.
Fajny temat.
Więc może tak - ten zestaw regałów/półek/pudełek można okablować magistralą
1-Wire, ale nie tylko sygnał/gnd ale pełny komplet vcc/1-wire/gnd
Przy każdym pudełku siedziałby taki maleńki moduł złożony z:
ULN2804 + DS2408 + 8(7)ledzików, coś podobnego jak na zdjątku w załączniku,
tylko że zrobione w SMD, aby było zupełnie nieduże i bardziej zgrabne...
I teraz tak - ponieważ każdy układ DS2408 ma w sobie zawarty unikalny
numer identyfikacyjny (doczytaj w dokumentacji, liniki niżej) więc
automatycznie każde pudełko z takim modułem staje się unikalne w naszym "systemie".
Sieć takich pudełko-modułów podłączamy do PC przez odpowiedni
konwerter protokołów USB/RS232 na 1-Wire (można kupić, można zrobić - załącznik)
Zostaje tylko oprogramowanie...a to już banał
Robimy bazkę danych, która będzie zawierała (oprócz innych mniej lub bardziej
przydatnych rzeczy) tabelkę w której będzie zapisane mapowanie
identyfikator czujnika --> imię/nazwisko
Czy relacja będzie 1:n, czy 1:1 to zależy...być może jeden ludek będzie
miał więcej niż jedno pudełko, kto wie...?
No, a do tego dochodzi jakaś aplikacja kliencka, która tym cudem jakoś
posteruje...można napisać w czymkolwiek, co jest pod ręką...
Widzę to tak: w formatkę wstukujemy dane ludzika,
program kuka w tabelkę, wyszukuje pasujący identyfikator modułu z lampkami,
wysyła do modułu polecenie zapalenia odpowiedniej kombinacji.
Jedyne, na co w tym wszystkim trzeba uważać, to aby nie przekroczyć dopuszczalnej
długości linii magistrali 1-Wire (trzydzieści coś metrów...), ale i z tym można
sobie poradzić, być może stosując sprzęgi typu DS2409.
No, i to mniej więcej tyle, słucham ewentualnych pytań.
pozdrawiam,
N.
aaa, i linki:
1-Wire http://www.maxim-ic.com/1-Wire.cfm
Guidelines for Reliable 1-Wire Networks http://pdfserv.maxim-ic.com/en/an/AN148.pdf
DS2408 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3818
DS2409 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2909
ULN2804 http://impressolibre.sourceforge.net/mi ... 2803-D.PDF
Więc może tak - ten zestaw regałów/półek/pudełek można okablować magistralą
1-Wire, ale nie tylko sygnał/gnd ale pełny komplet vcc/1-wire/gnd
Przy każdym pudełku siedziałby taki maleńki moduł złożony z:
ULN2804 + DS2408 + 8(7)ledzików, coś podobnego jak na zdjątku w załączniku,
tylko że zrobione w SMD, aby było zupełnie nieduże i bardziej zgrabne...
I teraz tak - ponieważ każdy układ DS2408 ma w sobie zawarty unikalny
numer identyfikacyjny (doczytaj w dokumentacji, liniki niżej) więc
automatycznie każde pudełko z takim modułem staje się unikalne w naszym "systemie".
Sieć takich pudełko-modułów podłączamy do PC przez odpowiedni
konwerter protokołów USB/RS232 na 1-Wire (można kupić, można zrobić - załącznik)
Zostaje tylko oprogramowanie...a to już banał
Robimy bazkę danych, która będzie zawierała (oprócz innych mniej lub bardziej
przydatnych rzeczy) tabelkę w której będzie zapisane mapowanie
identyfikator czujnika --> imię/nazwisko
Czy relacja będzie 1:n, czy 1:1 to zależy...być może jeden ludek będzie
miał więcej niż jedno pudełko, kto wie...?
No, a do tego dochodzi jakaś aplikacja kliencka, która tym cudem jakoś
posteruje...można napisać w czymkolwiek, co jest pod ręką...
Widzę to tak: w formatkę wstukujemy dane ludzika,
program kuka w tabelkę, wyszukuje pasujący identyfikator modułu z lampkami,
wysyła do modułu polecenie zapalenia odpowiedniej kombinacji.
Jedyne, na co w tym wszystkim trzeba uważać, to aby nie przekroczyć dopuszczalnej
długości linii magistrali 1-Wire (trzydzieści coś metrów...), ale i z tym można
sobie poradzić, być może stosując sprzęgi typu DS2409.
No, i to mniej więcej tyle, słucham ewentualnych pytań.
pozdrawiam,
N.
aaa, i linki:
1-Wire http://www.maxim-ic.com/1-Wire.cfm
Guidelines for Reliable 1-Wire Networks http://pdfserv.maxim-ic.com/en/an/AN148.pdf
DS2408 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3818
DS2409 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2909
ULN2804 http://impressolibre.sourceforge.net/mi ... 2803-D.PDF
Ogólnie, aby się w tym nie pogubić i nie ciągnąć ponad 2000 kabli, proponowałbym rozwiązanie z rozproszonym sterowaniem. Widziałbym to tak:
Jedna półka, 7 diod sterowanych procesorem. Każda półka posiada własny identyfikator. Łączenie między półkami przez od 2 do 4 przewodów (zależnie od wybranej magistrali co z kolei zależy od całkowitej długości przewodu). Ostatecznie z całości wychodzi nam jeden kabel do którego podpinamy sterownik podłączany do portu RS albo USB komputera. Teraz sterownik całości wysyła identyfikator, opisując to słownie wyglądałoby to tak:
0. Początek transmisji
1. Do wszystkich: wyłączyć diody
2. Do sterownika 125: włącz diodę 3
3. Koniec transmisji
Od strony komputera to kwestia napisania bazy danych: przypisanie numerów sterowników do numerów półek i regałów a tego do nazwiska - to już nie moja działka
PS.: to najprostsze co na szybko wymyśliłem, ale wcale nie jest to sprawą banalną. Jeśli założymy, że półki nie muszą potwierdzać swojej gotowości da się to zrobić w miarę prosto. Jednak jeśli chcemy mieć przynajmniej podstawową możliwość identyfikacji awarii sieci konieczne jest zajęcie się zagadnieniem pracy wielu nadajników na jednej linii. Temat nie banalny, ale do "przejścia".
-------------------
Edit:
No i zostałem "ubiegnięty" przez Taszę. O 1Wire też myślałem - to rozwiązuje problem wielu nadajników
Jedynym problemem w takim przypadku jest to, że nie mamy wpływu na identyfikator elementu. Wiem, że w pewnym sterowniku bywały problemy już przy dwóch czujnikach temperatury aby skonfigurować w urządzeniu który jest który. Przy większej ilości elementów może to być dość uciążliwe. Można by umożliwić fizyczne odłączenie danej półki aby system mógł automatycznie "załapać" jej podpięcie.
Jedna półka, 7 diod sterowanych procesorem. Każda półka posiada własny identyfikator. Łączenie między półkami przez od 2 do 4 przewodów (zależnie od wybranej magistrali co z kolei zależy od całkowitej długości przewodu). Ostatecznie z całości wychodzi nam jeden kabel do którego podpinamy sterownik podłączany do portu RS albo USB komputera. Teraz sterownik całości wysyła identyfikator, opisując to słownie wyglądałoby to tak:
0. Początek transmisji
1. Do wszystkich: wyłączyć diody
2. Do sterownika 125: włącz diodę 3
3. Koniec transmisji
Od strony komputera to kwestia napisania bazy danych: przypisanie numerów sterowników do numerów półek i regałów a tego do nazwiska - to już nie moja działka
PS.: to najprostsze co na szybko wymyśliłem, ale wcale nie jest to sprawą banalną. Jeśli założymy, że półki nie muszą potwierdzać swojej gotowości da się to zrobić w miarę prosto. Jednak jeśli chcemy mieć przynajmniej podstawową możliwość identyfikacji awarii sieci konieczne jest zajęcie się zagadnieniem pracy wielu nadajników na jednej linii. Temat nie banalny, ale do "przejścia".
-------------------
Edit:
No i zostałem "ubiegnięty" przez Taszę. O 1Wire też myślałem - to rozwiązuje problem wielu nadajników
Jedynym problemem w takim przypadku jest to, że nie mamy wpływu na identyfikator elementu. Wiem, że w pewnym sterowniku bywały problemy już przy dwóch czujnikach temperatury aby skonfigurować w urządzeniu który jest który. Przy większej ilości elementów może to być dość uciążliwe. Można by umożliwić fizyczne odłączenie danej półki aby system mógł automatycznie "załapać" jej podpięcie.
Q:
Z okazji zapięcia modułu (układu) na szynę 1-Wire generowane jest zdarzenie deviceArrival(),
a jak ktoś go odepnie - deviceDeparture()...oba jako parametr wywołania dostają
obiekt klasy DeviceMonitorEvent, a z niego dowiadujemy się typie modułu
generującego zdarzenie, jego interfejsach, odczytujemy ID...
Trzeba to tylko jakoś sensownie oprogramować, tak aby było "używalne dla człowieka".
A:Koppel pisze:Jedynym problemem w takim przypadku jest to, że nie mamy wpływu na identyfikator elementu
Biblioteki do 1-Wire dostarczane przez Maxim-a mają taką funkcjonalność, przynajmniej te do Javy...Koppel pisze:Można by umożliwić fizyczne odłączenie danej półki aby system mógł automatycznie "załapać" jej podpięcie.
Z okazji zapięcia modułu (układu) na szynę 1-Wire generowane jest zdarzenie deviceArrival(),
a jak ktoś go odepnie - deviceDeparture()...oba jako parametr wywołania dostają
obiekt klasy DeviceMonitorEvent, a z niego dowiadujemy się typie modułu
generującego zdarzenie, jego interfejsach, odczytujemy ID...
Trzeba to tylko jakoś sensownie oprogramować, tak aby było "używalne dla człowieka".
O to właśnie chodzi. Bo nie jest problemem wykrycie podłączenia urządzenia, trzeba przemyśleć "mechaniczną" stronę projektu. W jaki sposób identyfikator będzie przypisywany półce. W przypadku gotowych układów 1wire wydaje mi się do głównym zagadnieniem do rozwiązania - reszta to standard.Trzeba to tylko jakoś sensownie oprogramować, tak aby było "używalne dla człowieka".
Ogólnie ta droga mi się bardzo podoba, ponieważ nie tworzy dodatkowych problemów konstrukcyjnych jeśli mowa o samej elektronice.
Druga sprawa - jakie mogą być długości połączeń w standardzie 1Wire? Od pewnego czasu się już tym nie zajmowałem a moje jedyne doświadczenia dotyczą przewodów do 5m.
Tym zagadnieniem zajmiemy się bliżej od poniedziałku. Fajnie by było gdybyś taszo dała namiary do siebie (może jakiś telefon) bo my się akurat na tym nie znamy prawie w ogóle (ja jeden programuję w firmie, reszta niestety nie). Podoba mi się Twoje rozwiązanie i sam o czymś taki myślałem, niemniej nie znałem szczegółów, bo wiedza mi nie pozwalała by je znać.
Serdecznie dziękuję za pomoc - za każdą kolejną z góry dziękuję również.
Serdecznie dziękuję za pomoc - za każdą kolejną z góry dziękuję również.
Co Radku, też Cię wciągnęło...?
po prostu jakiś Sierotek Marysiek pracowicie zapnie po kolei
wszystkie ledo-modułki do szyny, każde odmeldowanie modułku
w systemie zostanie zakończone nadaniem mu w bazie numeru
pudełka,półki,regału i skojarzeniem z jego sprzętowym id.
druga opcja: to spis z natury - wygaszamy wszystkie światełka
na wszykich regałach (a do tego nie trzeba znać id-ów, gasimy to co jest)
a następnie każemy programowi kolejno migać zestawami lampek, patrzymy...
czy widać gdzie mignęło - namiary tego pudełka (regał,półka,numer pudła)
uzupełniamy w bazie
trzecia opcja - elektromechaniczna - po prostu wymuszamy zdarzenie
w sieci pt. modułek niema/jest - na przykład na chwilę odłączając mu
szynę sygnałową przy zapiętym zasilaniu jakimś zworkiem, przyciskiem rozwiernym...
identyfikacja - jak w pozostałych przypadkach
tak czy inaczej nie jest to proces ani skomplikowany, ani długotrwały
i wykonuje się go tylko raz...
stosując mostki (DS2409) pomiędzy segmentami można nią pokryć dość spory obszar,
pamiętajcie też, że są mostki RS232/1-Wire które mają osiem portów 1-W...
To jest o tyle ważne, że:
to niewielka salka...problemu odległości tu nie wolno chyba lekceważyć,
ponieważ to wpływa na cąłkowitą przepustowość sieci (wieksza ilość błędnych/ponawianych
komend, przekłamania, spadek szybkości)
Ale sądzę, że to wszystko da się jakoś sensownie rozwiązać
płci obojga i tylko jedna sztuka od elektroniki...co za świat, dajcie spokój
Co do telefonu - posiadam tylko służbowy i jego mi po prostu nie wolno
udostępniać obcym osobom, wybacz - ale takie są zasady. amen.
Zresztą...temat jest (przynajmniej dla mnie) ciekawy i możemy go spokojnie
kontynuować na forum, są chyba spore szanse, że coś z tego wyjdzie...
A na mejla też nie ma sensu tego przenosić - z postów forum ktoś (tak ufam)
kiedyś może skorzysta...
pozdrawiam,
Natasza
[ Dodano: 2007-02-09, 19:53 ]
tak się zastanawiam....
a może ten wątek przenieść do "Projekty otwarte" ( https://forum.elportal.pl/viewforum.php?f=52 )
a 'przyklejenie' zostawić tu, w ofertach....
pierwsza opcja: podczas nazwijmy to "wdrażania systemu",Koppel pisze:W jaki sposób identyfikator będzie przypisywany półce.
W przypadku gotowych układów 1wire wydaje mi się do głównym zagadnieniem do
rozwiązania - reszta to standard
po prostu jakiś Sierotek Marysiek pracowicie zapnie po kolei
wszystkie ledo-modułki do szyny, każde odmeldowanie modułku
w systemie zostanie zakończone nadaniem mu w bazie numeru
pudełka,półki,regału i skojarzeniem z jego sprzętowym id.
druga opcja: to spis z natury - wygaszamy wszystkie światełka
na wszykich regałach (a do tego nie trzeba znać id-ów, gasimy to co jest)
a następnie każemy programowi kolejno migać zestawami lampek, patrzymy...
czy widać gdzie mignęło - namiary tego pudełka (regał,półka,numer pudła)
uzupełniamy w bazie
trzecia opcja - elektromechaniczna - po prostu wymuszamy zdarzenie
w sieci pt. modułek niema/jest - na przykład na chwilę odłączając mu
szynę sygnałową przy zapiętym zasilaniu jakimś zworkiem, przyciskiem rozwiernym...
identyfikacja - jak w pozostałych przypadkach
tak czy inaczej nie jest to proces ani skomplikowany, ani długotrwały
i wykonuje się go tylko raz...
W dokumentacji pisze (a przynajmniej ja tak to rozumiem), że jeden segment sieci to 30mKoppel pisze:Druga sprawa - jakie mogą być długości połączeń w standardzie 1Wire?
Od pewnego czasu się już tym nie zajmowałem a moje jedyne doświadczenia
dotyczą przewodów do 5m.
stosując mostki (DS2409) pomiędzy segmentami można nią pokryć dość spory obszar,
pamiętajcie też, że są mostki RS232/1-Wire które mają osiem portów 1-W...
To jest o tyle ważne, że:
25 regałów w np. Castoramie to cała hala, 25 regałów w osiedlowej bibliotecearo_kal pisze: - ilość półek w regale - 14 szt.
- ilość regałów - 25 szt.
to niewielka salka...problemu odległości tu nie wolno chyba lekceważyć,
ponieważ to wpływa na cąłkowitą przepustowość sieci (wieksza ilość błędnych/ponawianych
komend, przekłamania, spadek szybkości)
Ale sądzę, że to wszystko da się jakoś sensownie rozwiązać
więc witam Kolegę po fachu...a u mnie jakby odwrotnie...sami programiściaro_kal pisze:ja jeden programuję w firmie, reszta niestety nie
płci obojga i tylko jedna sztuka od elektroniki...co za świat, dajcie spokój
Co do telefonu - posiadam tylko służbowy i jego mi po prostu nie wolno
udostępniać obcym osobom, wybacz - ale takie są zasady. amen.
Zresztą...temat jest (przynajmniej dla mnie) ciekawy i możemy go spokojnie
kontynuować na forum, są chyba spore szanse, że coś z tego wyjdzie...
A na mejla też nie ma sensu tego przenosić - z postów forum ktoś (tak ufam)
kiedyś może skorzysta...
pozdrawiam,
Natasza
[ Dodano: 2007-02-09, 19:53 ]
tak się zastanawiam....
a może ten wątek przenieść do "Projekty otwarte" ( https://forum.elportal.pl/viewforum.php?f=52 )
a 'przyklejenie' zostawić tu, w ofertach....
Z jednej strony masz rację, ryzyko wzrasta wraz z odległością i jak się przesadzi to wszystko po prostu nie zadziała poprawnie
Z drugiej, aro_kal (który coś cicho siedzi) nic nie powiedział o rozmiarach tych regałów, ich rozmieszczeniu...
no a skoro to projekt, to pewnie mają podane jakieś wymiary, zarówno mebli jak i pomieszczenia, tak myślę
Co do RS485...w sumie można i tak, ja po prostu szukam rozwiązania jak najprostszego
(to znaczy w/g moich kryteriów, a nie zawsze to widać :/ ), tak patrząc na te Twoje RS485
pomyśałam o pętli prądowej, takiej najbardziej prymitywnej, tylko z jednym torem: nadawczym
transmisja kilkadziesiąt..kilkaset baud, każde pudełko to MCU + transoptor + ledy,
kontroler może być jakikolwiek (narysowałam AVR, bo to akuram było pod ręką) aby tani, ponieważ ich pójdzie sporo...
a schemat w załączniku.
dobranoc,
N.
Pisałem już na początku taką propozycję. W stosunku do 1wire widzę 2 zalety:tasza pisze:każde pudełko to MCU + transoptor + ledy,
1. Możliwość tworzenia kodów które jednoznacznie wskazywałyby półkę
2. Utrudnienie skopiowania systemu przez osoby trzecie
Ale zawsze to więcej projektowania, chociaż przy porównaniu cen i dostępności AVR'a oraz układów 1wire rozwiązanie może okazać się bardziej atrakcyjne.
Można by się pokusić o wprowadzenie transoptora przekazującego sygnał w drugą stronę. Dzięki temu uzyskamy możliwość informacji zwrotnej gdyby jakiś układ uległ uszkodzeniu albo nie otrzymał informacji ze względu na zakłócenia - pewność działania zawsze rośnie.
Edit
Jeszcze dwie uwagi do rozwiązania z transoptorami:
1 - 14x25 półek to w sumie 350 transoptorów. Przy sterowaniu prądem 5mA da to ponad 1,7A w linii transmisyjnej. Przy 1mA - 350mA w sumie. W drugim przypadku już nie jest tak źle. Nie chodzi tutaj o pobór prądu - w założeniu transmisja odbywa się przez chwilę a później urządzenie znajduje się w stanie spoczynku. Mowa raczej o odpowiednim wysterowaniu całej linii.
2 - proponowałbym podłączenie wyjścia transoptora nie tylko do wejścia RX ale do przerwania zewnętrznego. Umożliwi to uśpienie kontrolera w czasie gdy urządzenie nie pracuje. Wtedy przed właściwym startem transmisji możnaby wysterować na chwilę linię w celu włączenia wszystkich procesorów w tryb nasłuchu (tak jak komenda RESET na 1w) a później dopiero rozpocząć wysyłanie. Obawiam się czy przy korzystaniu z wewnętrznego generatora RC a nie kwarcu (a warto bo 350 kwarców to już jakaś oszczędność) warto korzystać z transmisji poprzez UART? Jeśli tak to warto zapewnić synchronizację jego szybkości, na przykład wysyłając po zerowaniu kilka bajtów 0x55 i analizując czasy między zmianami sygnałów.
Ostatnio zmieniony 14 lut 2007, 0:07 przez Koppel, łącznie zmieniany 1 raz.
Już się aktywuję
Regały takie mieszczą się w prostokącie o bokach 3000 x 6000 mm, przy czym jeżdżą wzdłuż krótszego boku. Zatem odległość jest niska.
Pomyliłem się odnośnie liczby potrzebny diod (i to aż dwukrotnie) - ostateczna ich liczba to 4900 szt. Regałów byłoby 5 sztuk, długich na 6000 mm (taki skrót myślowy, w rzeczywistości byłoby ich 25 sztuk o długości 1200 mm). Każdy z tych długich regałóq miałby 980 diod. Pomiędzy tymi regałami, które mają się rozsuwać między sobą, trzeba by rozciągnąć kable. Wydaje mi się, że na każdym z nich musiałaby być osobna elektronika obsługująca diody. Dopiero ta elektronika komunikowałaby się z jakimś zbiorczym odbiornikiem.
Regały takie mieszczą się w prostokącie o bokach 3000 x 6000 mm, przy czym jeżdżą wzdłuż krótszego boku. Zatem odległość jest niska.
Pomyliłem się odnośnie liczby potrzebny diod (i to aż dwukrotnie) - ostateczna ich liczba to 4900 szt. Regałów byłoby 5 sztuk, długich na 6000 mm (taki skrót myślowy, w rzeczywistości byłoby ich 25 sztuk o długości 1200 mm). Każdy z tych długich regałóq miałby 980 diod. Pomiędzy tymi regałami, które mają się rozsuwać między sobą, trzeba by rozciągnąć kable. Wydaje mi się, że na każdym z nich musiałaby być osobna elektronika obsługująca diody. Dopiero ta elektronika komunikowałaby się z jakimś zbiorczym odbiornikiem.