You are on page 1of 6

P O D Z E S P O Y

Ethernet dla opornych, ale wymagajcych


Taiko (przypomnijmy) jest zestawem oprogramowania skadajcym si z trzech elementw. Pierwszym z nich jest (kompilowany) jzyk programowania Tibbo BASIC. Drugim Tibbo Integrated Development Environment (w skrcie TIDE) kompletne rodowisko uruchomieniowe zawierajce edytor kodu, kompilator, linker oraz debugger. Ostatnim elementem jest TIOS (Tibbo Operating System) wbudowany system operacyjny. Dostarczany jest on w postaci pojedynczego pliku binarnego, specycznego dla platformy. Przed rozpoczciem pracy z TIDE musi on by umieszczony w wewntrznej pamici Flash wybranego moduu. Jzyk Tibbo Basic pozwala na stosowanie w programach zmiennych 32bitowych (w pierwszej wersji maksymalny rozmiar zmiennej wynosi 16 bitw). Programista ma teraz do dyspozycji zmienne typu dword, long, real oraz oat. W nomenklaturze Taiko dword oznacza 32bitow zmienn cakowit bez znaku, (jest odpowiednikiem typu unsigned int w C dla procesorw 32bitowych). Long (32 bit) jest typem cakowitym ze znakiem (typ int w C dla procesorw 32bitowych). Real typ zmiennoprzecinkowy ze znakiem. Dziaania z jego uyciem mog prowadzi do rnych wynikw na rnych platformach sprztowych. Kalkulacje z uyciem typu real mog te prowadzi do wynikw typu nieskoczono lub NaN (Not a Number). Naley by ostronym w ich stosowaniu. Float

Co nowego w Tibbo?

Firma Tibbo Technology Inc. konsekwentnie rozszerza swoj ofert moduw ethernetowych. Oprcz sprztu, Tibbo oferuje kompletne rodowisko uruchomieniowe, wykorzystujce BASIC jako jzyk programowania. Uwag przyciga fakt, i wszystkie nowe moduy s wycznie urzdzeniami programowalnymi. Nie posiadaj domylnego rmwareu dostarczajcego funkcjonalnoci mostu RS232 <> Ethernet. Zacznijmy od nowoci softwareowych.
typ identyczny do real. Wszystkie zmienne zadeklarowane jako oat s na etapie kompilacji interpretowane jako real. Typ ten wprowadzono dla zgodnoci Tibbo BASIC z innymi implementacjami jzyka. W Taiko R2 poprawiono te obsug tablic. Tablice mog teraz przechowywa elementy dowolnego typu (poprzednio moliwe byo deklarowanie tylko tablic typu char). Zmiany dotkny te sposobu indeksowania tablic. Obecnie nie jest moliwe zaindeksowanie elementu, ktry nie istnieje. Oznacza to, i tablica ma percepcj swojego rozmiaru. Jeli wystpi sytuacja, w ktrej dojdzie do podania bdnego indeksu w tablicy, wwczas w trybie debugerra zatrzyma on program oraz wygeneruje wyjtek OOR (out of range). Jeli uytkownik mimo to zechce wznowi dziaanie programu, bdnie zaadresowana tablica zwrci element znajdujcy si pod maksymalnym obecnym indeksem. Jeli taka sytuacja zdarzy si podczas dziaania programu w normalnym trybie (bez debuggera), wwczas bdnie indeksowana tablica zawsze bdzie zwraca swj maksymalny element. Wprowadzenie tego mechanizmu potwierdza deklarowan wczeniej przez Tibbo ch upodobnienia BASIC-a do jzykw wyszych poziomw. Odcia to nieco programist i pozwala na szybsz detekcj bdu indeksacji (ktry czsto zdarza si podczas programowania w jzyku C). W najnowszej wersji Taiko moliwa jest te deklaracja tablic wielowymiarowych. Maksymalna liczba wymiarw wynosi 8. Poczwszy od wersji R2 Taiko wspiera deniowalne przez uytkownika struktury danych. Sposb deklaracji jest zbliony do znanego z jzyka C. Podobnie jak i sposb wyuskiwania kolejnych czonkw struktury (odbywa si to przy pomocy schematu: struktura.element). Struktury w Tibbo BASIC mog zawiera elementy o typach podstawowych, tablice, jak rwnie inne struktury. Maksymalny poziom zagniedenia struktur w innych strukturach wynosi 8. Zmienna typu predeniowanej struktury nie ma rozmiaru w pamici rwnego sumie wielkoci poszczeglnych jej czonkw. Faktyczny rozmiar jest wikszy ze wzgldu na to, i (tak jak w przypadku tablic) struktura przechowuje informacje na temat rozmiarw swoich elementw, jak rwnie ich typw (podobnie jak w jzykach wyszego poziomu). Nowa wersja Tibbo BASIC wprowadza te jasn i jednoznaczn, automatyczn konwersj typw. Konwersja taka nastpuje zawsze BASIC R2 (za dokumentacj Taiko) w przypadku przypisania zmiennej docelowej zmiennej jednego typu warchar short long real string toci zmiennej drugiego typu. Reinterpret OK OK OK OK (str) Wszystkie moliwe kombinaReinterpret cje przypisa typw i rezultaReinterpret OK OK OK (str) Truncate tu autokonwersji przedstawioTruncate Truncate Reinterpret OK OK (lstr) no w tab. 1. OK OK. OK OK (stri) Jeli na przeciciu dwch rnych typw znajduje si Truncate OK. OK OK (stri) symbol OK., wwczas konTruncate Truncate OK OK (lstri) wersja typu rdowego do typu docelowego odbywa si Fraction Fraction Fraction OK (fstr) bez straty informacji. DodatOK (val) OK (val) OK (lval) OK (strof) kowo, w przypadku pl OK

Zmiany w Tibbo BASIC

Tab. 1. Tabela autokonwersji typw w Tibbo


byte Truncate word OK Typ dword OK OK

byte word

dword Truncate Truncate Typ char Reinterpret Reinterpret Reinterpret zmiennej rdowej short Reinterpret Reinterpret Reinterpret Truncate Reinterpret Reinterpret long Truncate Truncate real Fraction Fraction Fraction string OK (val) OK (val) OK (lval)

50

Elektronika Praktyczna 1/2008

P O D Z E S P O Y

Elektronika Praktyczna 1/2008

51

P O D Z E S P O Y

(val) kompilator przed podstawieniem wartoci do zmiennej docelowej automatycznie wywoa funkcj systemow (podan w nawiasie), ktra przekonwertuje np. znak zmiennej typu string na jego kod ASCII (w przypadku val). Funkcja systemowa zostanie wywoana automatycznie tylko w przypadku, kiedy uytkownik nie wywoa jej w sposb jawny. Jeli wynik konwersji jest opatrzony wyraeniem Truncate oznacza to, e starsza cz (bajt w przypadku zmiennej typu word lub sowo w przypadku zmiennej typu dword zmiennej rdowej zostanie odrzucona. Zmienna docelowa odzwierciedli wwczas jedynie modsz cz zmiennej rdowej. Jeli wynik konwersji jest oznaczony wyraeniem Reinterpret, oznacza to, e zmienna zostanie przeliczona na warto nowego typu. W tym przypadku nie wystpuje problem niewystarczajcego rozmiaru zmiennej docelowej, ale rnego sposobu kodowania danych. Zatem z poziomu kompilatora zmienna byte o wartoci 0xFF jest interpretowana jako 255. Taka sama warto zapisana binarnie do zmiennej typu char (a wic zmiennej 7bitowej ze znakiem) da na poziomie kompilacji warto 1. Wynika to ze sposobu kodowania obu zmiennych. Zmienna byte jest zapisywana przy uyciu naturalnego kodu binarnego (NKB) na 8 bitach i moe przechowywa wartoci z zakresu 0 do 255 (dziesitnie). Zmienna typu char wykorzystuje kod U2 i moe przechowywa wartoci z zakresu 128 do 127. Zatem przy autokonwersji Reinterpret, zapis zmiennej w pamici urzdzenia nie ulega zmianie, ale na poziomie kompilatora obie zmienne przechowuj inn warto. W tab. 1 wystpuj te konwersje oznaczone jako Truncate i Reinterpret, co oczywicie oznacza, i konwersja po odrzuceniu starszej czci zmiennej spowoduje reinterpretacj wyniku. W przypadku konwersji oznaczonej jako Fraction (w dokumentacji Taiko przekrelenie sowa

Fraction oznacza, e cz uamkowa zmiennej typu oat zostaje pominita) zawarto zmiennej typu real po przypisaniu jej do zmiennej innego typu zostanie pozbawiona czci uamkowej, zatem zawsze nastpi tu zaokrglenie liczby w d. W Taiko R2 zmiany dotkny te rodowiska uruchomieniowego. Nastpstwem wprowadzenia struktur bya zmiana w narzdziu Watch, ktre teraz pozwala na dowoln werykacj danych w instancjach zdeniowanych struktur. Niejako przy okazji narzdzie to wzbogacono o moliwo podgldu zawartoci tablic. Do IDE dodano te nowe narzdzie nazwane Image Editor, ktre pozwala na prost edycj plikw gracznych dodawanych do projektu jako elementy typu resource. W Takio R2 poprawiono dziaanie niektrych obiektw platform. Kosmetyczne zmiany dotkny obiekty i metody pat.play oraz beep.play. Polegaj one na dodaniu wyszych czstotliwoci odgrywania wzorcw przy pomocy diod LED oraz sygnau dwikowego. Bardzo przydatne jest natomiast wprowadzenie wasnoci obiektu sys: sys.onsystimerperiod. Wasno ta konguruje okres generowania zdarzenia on_sys_timer, ktry dotychczas by stay i wynosi 0,5 s (co byo nieco uciliwe). Obecnie moliwe jest jego kongurowanie z ziarnem 10 ms w zakresie od 10 ms do 2550 ms. Niestety wasno ta nie jest dostpna na wszystkich platformach. Taiko R2 wnosi te co do poprawy bezpieczestwa sieciowego moduw. Wprowadzono bowiem wasno obiektu sock: sock.inconenabledmaster. Powoduje ona globalne (dla wszystkich gniazd niezalenie od ich konguracji) zablokowanie akceptacji pocze przychodzcych do moduu. Co istotne, nie zmienia ona konguracji poszczeglnych gniazd, zatem po ponownym odblokowaniu pocze przychodzcych nie ma koniecznoci ich ponownej inicjalizacji. Taiko R2 umoliwia te wiksz kontrol nad wysyanymi i odbieranymi pakietami TCP Gdy wasno sock.splittcppackets . jest ustawiona na jeden, otrzymujemy moliwo percepcji rozmiaru kadego przychodzcego pakietu TCP. Z kolei po stronie nadawczej moemy zdeniowa, jak dugie maj by pakiety

Zmiany w TIDE

Zmiany w dziaaniu platform

wysyane z naszego urzdzenia. Wasno ta musi by jednak stosowana z rozwag. Zdeniowanie zbyt dugich pakietw spowoduje, i modu bdzie oczekiwa na ich gromadzenie si w buforze nadawczym, co moe niekorzystnie wpyn na caociow prdko transmisji. Drugim niebezpieczestwem jest to, i strona odbiorcza moe nie posiada dostatecznie duych buforw odbiorczych, ktre pozwalayby na obsug dugich pakietw. Sytuacja taka bdzie powodowaa to, i aden z pakietw nie dotrze do miejsca przeznaczenia, gdy urzdzenie odbiorcze bdzie miao stale przepeniony bufor. Poprawiono te dziaanie mechanizmu dynamicznego generowania stron WWW. Problem objawia si w przypadku jednoczesnego dania strony WWW przez dwie rne przegldarki. Jeli w kodzie strony (html) umieszczono procedur BASIC odpowiedzialn za dynamiczne generowanie jej zawartoci, wwczas tylko pierwszy z klientw (pierwsza przegldarka) otrzyma poprawn stron. W przypadku drugiego klienta, zwracana bya strona, jednak bez czci zawartoci generowanej dynamicznie. Zachowanie to byo bdne i wynikao z natury Tibbo BASICA, ktry nie pozwala na rekursywne wywoywanie procedur. Dzieje si tak dlatego, i system TiOS nie uywa dynamicznej alokacji pamici (co powodowaoby jego wolniejsze dziaanie). Problem dynamicznego generowania kodu html dla dwch klientw jednoczenie zosta zatem rozwizany w inny prosty sposb. Przy jednoczesnym daniu strony, drugi klient bdzie musia poczeka a procedura BASIC zostanie dokoczona po wywoaniu przez pierwszego klienta. Po tym czasie zostanie ona wywoana ponownie na potrzeby drugiego klienta. Tibbo nie prnuje te w dziedzinie platform sprztowych, (bez ktrych nie powstaby Tibbo BASIC). Wszystkie nowe platformy s wycznie urzdzeniami programowalnymi, nie posiadajcymi domylnego rmwareu. Pierwsz z platform trzeciej generacji (bo tak Tibbo okrela nowe moduy), jest EM1000 (rys. 1). Urzdzenie ma form moduu PCB z wyprowadzonymi pinami w rastrze 2,54 mm, co z pewnoci uatwi wykonanie projektu pytki drukowanej. Modu jest wyposaony w dedykowa-

A co nowego w sprzcie?

Rys. 1. Modu EM1000

52

Elektronika Praktyczna 1/2008

P O D Z E S P O Y

Elektronika Praktyczna 1/2008

53

P O D Z E S P O Y

ny mikroprocesor taktowany zegarem 88 MHz i legitymujce si moc obliczeniow 50 MIPSw. Wyposaony jest w jeden port Ethernetowy 100BaseT oraz 4 szybkie porty szeregowe. Kady z nich moe by skongurowany do pracy w charakterze UARTu, jak rwnie interfejsu Wiegand oraz interfejsu zblionego do SPI. Maksymalna prdko transmisji wynosi 1,8 Mbit/s. Nie zabrako te miejsca dla zegara czasu rzeczywistego z opcjonalnym kondensatorem podtrzymujcym jego prac (wersja moduu S). Modu posiada 49 linii I/ O oglnego przeznaczenia oraz 4 linie dedykowane do obsugi diod statusowych (np. linku ethernetowego). Modu posiada pami typu Flash 512 k lub 1024 k oraz pami RAM (20 k). Ponadto, do dyspozycji uytkownika pozostaje te pami typu EEPROM o rozmiarze 2048 bajtw.

Rys. 2. Modu EM1202

Rys. 3. Pytka ewaluacyjna z moduem EM1202

Rys. 4. Zcze RJ45 wraz z wbudowanym transformatorem separujcym

Rys. 5. Kontroler DS1000

Zblionym pod wzgldem funkcjonalnym do EM1000 jest modu EM1202 (rys. 2). Jedyna rnica w stosunku d o E M 1 0 0 0 to ograniczona liczba linii I/O. EM1202 jest za to duo mniejs z y. Z b u d o w a ny jest w formie stosu. Specjalnie z myl o nim Tibbo opracowa- Rys. 6. Budowa wewntrzna kontrolera DS1000 o kompaktowe gniazdo RJ45 (rys. 3) wraz z wbu- DIN. Obudowa zawiera wewntrzne dowanym transformatorem separu- sloty, w ktre mona wsuwa pytjcym. Wraz z moduem EM1202 ki drukowane stanowice moduy zajmuj na PCB przestrze podob- rozszerze. Mog ty by elementy produkowane prze Tibbo, jak i wan do znanego czytelnikom moduu EM202. Oczywicie DS1202 moe sne konstrukcje. Zapowiedziane s ju moduy komunikacji bezprzewoby stosowane z innymi moduami (np. EM1000). Dla EM1202 zosta- dowej. Z przodu kontroler posiada a te opracowana maa platforma wymienny panel z rnymi rodzauruchomieniowa: modu EM1202EV jami zcz. Konkretna konguracja/ wygld zaley od zastosowanych (rys. 4). Na pytce drukowanej moduu znajdziemy EM1202 oraz z- pyt rozszerze. Dodatkowo urzdzecze RJ1202. Pozostae komponenty nie mona wyposay w panel worni si w zalenoci od warian- doodporny, w ktrym znajduj si tu urzdzenia (obecnie dostpne s otwory wyprowadzajce przewody. Na rys. 6 przedstawiono pogldowy trzy: RS, TM, TS). Modu EM1202 oprcz pracy szkic budowy kontrolera DS1000. jako platforma rozwojowa, moe suy te do szybkiego upgradu Podsumowanie istniejcych urzdze. PoszczeglRozszerzanie oferty przez Tibbo ne jego warianty mog suy do o wycznie programowalne moduy innych modykacji. I tak, modu stanowi sygna, i pomys z wproRS (RS232) moe pracowa jako wadzeniem wasnego jzyka prograsamodzielne urzdzenie (w najprost- mowania by dobrym posuniciem. szej postaci jako konwerter Ethernet Zapowiedzi rmy na temat wpro<> RS232). Wersja TM (TTL wadzania moduw komunikacji Master) nie jest wyposaona w konbezprzewodowej (jak na razie nie werter poziomw RS232 i suy do wiadomo, jaki to bdzie standard zabudowy wewntrz istniejcego transmisji) s interesujce o tyle, i urzdzenia. Moe za to dostarczy oprcz Ethernetu i RS232 dostaniestabilizowanego napicia zasilania my do dyspozycji zupenie nowy 3,3 V (max. 100 mA). Wersja TS kana transmisji danych. To z ko(TTL Slave) musi natomiast by za- lei pozwoli na coraz efektywniejsze silana z zewntrznego stabilizowaneaplikacje i konstrukcje. Z drugiej jedgo rda napicia 3,3 V. nak strony pozostawia mniej miejTibbo przedstawio te kom- sca dla konstruktorw w zakresie pletne rozwizanie przemysowe- projektowania sprztu, a to przecie go kontrolera (ideowo zblione- lubimy robi najbardziej. go do PLC) z interfejsem Ethernet Marcin Chruciel, EP DS1000 (rys. 5). Zosta on opra- marcin.chrusciel@ep.com.pl cowany w oparciu o modu EM1000 Dodatkowe informacje wraz z niezbdnymi do jego dziaania peryferiami. Urzdzenie poSoyter Sp. z o.o., Klaudyn, ul. Ekologiczna 14/16, 05-080 Izabelin, tel. 022 752 82 55, siada obudow wykonan z profax. 022 722 05 50, handlowy@soyter.pl, lu aluminiowego i jest wyposaone www.soyter.pl w uchwyt montaowy na szyn

54

Elektronika Praktyczna 1/2008

P O D Z E S P O Y

Elektronika Praktyczna 1/2008

55

You might also like