Implementace aplikační vrstvy pro jednočipové mikrokontroléry
Transkript
XXVIII. ASR '2003 Seminar, Instruments and Control, Ostrava, May 6, 2003 14 Implementace aplikační vrstvy pro jednočipové mikrokontroléry BABIUCH, Marek Ing., Ph.D, Katedra ATŘ-352, VŠB-TU Ostrava, 17. listopadu, Ostrava - Poruba, 708 33 [email protected], http://www.vsb.cz Abstrakt: Příspěvek popisuje implementaci aplikační vrstvy pro jednočipové mikrokontroléry. Konkrétně se jedna o aplikaci využívající mikrokontrolér řady PIC firmy microchip. V aplikacích často potřebujeme do mikrokontroléru předat parametry nebo upravit určitá konfigurační nastavení pomocí sítě LAN a protokolu TCP/IP. V příspěvku je popsána realizace aplikace předávání parametrů regulace do mikrokontroléru s využitím rozhraní winsock API. Prezentovaných výsledků bylo dosaženo v rámci řešení výzkumného záměru MSM 272300012 a projektu GAČR 102/03/0625. Klíčová slova: mikrokontrolér, PIC, winsock, TCP/IP 1 Úvod Mikrokontroléry znamenají v dnešní době důležitou pozici při realizaci číslicových regulátorů a logických automatů PLC a práce s nimi přispívá k výraznému zvýšení efektivity a kvality návrhu při realizaci měřicích a řídicích úloh. Při nasazení mikrokontrolérů do měřicích a řidících aplikací hraje důležitou roli komunikace těchto obvodových prvků s okolím. S tím také souvisí fakt, že pro každou takovou úlohu je nutné naimplementovat i uživatelské prostředí. Tento příspěvek je věnován využití winsock knihovny pro předání parametrů mikrokontroléru protokolem TCP/IP. 2 Modul nastavení parametrů mikrokontroléru po internetu Při realizaci aplikace regulace mikrokontrolérem byl vytvořen servisní program umožňující předávání parametrů regulace do paměti mikrokontroléru po sběrnici RS-485 z uživatelsky přívětivého prostředí PC. Při využití znalostí protokolů TCP/IP je vhodné tuto aplikaci zdokonalit např. tím, že uvedené parametry budeme předávat počítači, na kterém je připojen mikrokontrolér pomocí internetu. K tomu je zapotřebí ujasnit si síťový model architektury TCP/IP a také architekturu Winsock, pomocí níž bude další aplikace realizována. Rozhraní WinSocket Když už máte na svém počítači nainstalován (a také správně nakonfigurován) fungující „TCP/IP protocol stack", máte vlastně již k dispozici základní komunikační mechanismy pro práci v Internetu, a můžete se začít ohlížet po konkrétních aplikacích. Těch opět existuje opravdu velký výběr, pokrývající všechny existující internetové služby, v provedení od volně šiřitelných programů až po čistě komerční produkty. Pro nás je ale velmi důležité vědět, zda jsme při jejich výběru nějak omezeni - zda například musíme používat TCP/IP protocol stack i jednotlivé aplikace od stejného výrobce, aby asi vzájemně rozuměly. Odpověď na tuto veledůležitou otázku je naštěstí záporná, alespoň pro prostředí MS Windows (všech současných verzí). Zde se totiž podařilo prosadit jednotné rozhraní mezi TCP/IP protocol stackem a aplikacemi, které chtějí využívat jeho služeb. Toto rozhraní se jmenuje Winsock (od: Windows Sockets), a jeho specifikace jsou poměrně důsledně dodržovány - což v praxi znamená, že když si pořídíte dva produkty od různých výrobců, které podporují toto rozhraní a komunikují spolu přes něj, máte rozumnou záruku toho, že si XXVIII. ASR '2003 Seminar, Instruments and Control, Ostrava, May 6, 2003 15 budou vzájemně rozumět. No a rozhraní Winsock dnes podporují snad úplně všechny aplikace i protocol stacky pro prostředí Windows. 3 Winsock architektura Následující obrázek ilustruje, jak Winsock pracuje. Na nejvyšší úrovni (vrstvě) se nachází Winsock aplikace na Winsock aplikačním programovém rozhraní, které zpřístupňuje síťové služby a požadavky pro Winsock API dynamicky linkované knihovny (DLL) směrem k servisním požadavkům a tyto pak přidělují sockety příslušnému poskytovateli služeb (service provider). Service provider poté implementuje low-level specifikovaný síťový protokol a zpřístupňuje ho pomocí Winsock service provider interface (SPI). Obr. 3-1. Architektura Winsock Následující tabulka popisuje komponenty architektury Winsock : Komponent Vrstva Popis Jakákoliv front-end Windows Socket uživatelská aplikace, která musí Winsock User přenést data po síti. Aplikace musí znát pouze definici rozhraní, nemusí aplikace znát konkrétní transportní nebo tzv. namespace implementaci. Aplikační programové rozhraní, které využívá koncová Winsock Winsock aplikace pro získání přístupu síťových služeb, které jsou zabudovány API do knihoven Winsock DLL. Knihovna transportních a namespace funkcí. DLL dovolují vrchní vrstvě aplikace a spodní vrstvě služeb se dynamicky propojit Winsock Winsock v běžícím čase. Aplikace potřebuje znát pouze definici rozhraní (v DLL API tomto případě Winsock API), ne již její implementaci (v tomto případě transport service providers nebo namespace service providers). Winsock Vrstva SPI (Service Provider Interface), kterou využívá spodní vrstva Transport pro zajištění transportních služeb, jako např. TCP/IP služeb pro horní SPI aplikační vrstvu. Winsock SPI vrstva zajišťující konkrétní rozlišení jmených služeb, jako např. namespace DNS, Novell Directory Services (NDS) a X.500. SPI Transport Winsock Low-level transport protokoly jako TCP/IP nebo Internetwork Packet service Transport Exchange/Sequenced Packet Exchange (IPX/SPX). provider SPI Namespace Winsock service namespace Low-level protokoly, jako např DNS, NDS, X.500, atd. provider SPI Tab. 3-1. Komponenty Winsock architektury XXVIII. ASR '2003 Seminar, Instruments and Control, Ostrava, May 6, 2003 16 Winsock API poskytuje kolekci funkcí, kterou implementované programy využívají při řešení různých úkolů. Specifikace winsock API rozděluje knihovnu do tří skupin: • Funkce přenesené ze socketu Berkeley do Winsock API. • Databázové funkce, umožňující programům získat internetovské informace o jménech domén, komunikačních službách a protokolech. • Typicky windowsovské rozšíření původních funkcí. Následující tabulka popisuje funkce ze všech tří skupin. Webovské programování dělí dále tyto funkce na blokující a neblokující. Blokující funkce brání programu zavolat jakoukoliv další funkci z knihovny Winsock, dokud ona sama nedokončí své síťové operace. Neblokující funkce provedou okamžitě svou operaci nebo vrátí chybové hlášení. Neblokující operace tedy nenutí své okolí čekat na ukončení jejich činnosti. Funkce, které mohou blokovat Winsock API Potvrzení příchozího spojení. Vytvoří nový socket a spojí je se vzdáleným počítačem, který požadoval spojení. Vrací původní socket do stavu naslouchání (čekání na další příkaz). Closesocket Uzavírá jeden konec soketového spojení. Connect Inicializuje spojení na konkrétním socketu. Recv Přijímá data ze spojeného socketu. Recvfrom Přijímá data jak ze spojeného, tak nespojeného socketu. Select Provádí synchronní vstupně/výstupní multiplexing monitorováním stavů všech socketů. Send Odešle data do připojeného socketu. Sendto Odešle data do připojeného i nepřipojeného socketu. Funkce, které neblokují Winsock API Bind Přiřadí místní jméno nepojmenovanému socketu. Getpeername Získá jméno vlastníka připojeného k udanému socketu. Winsock ukládá tyto informace do lokálních struktur. Getsocketname Vrátí místní jméno udaného socketu. getsockopt Získá parametry přiřazené konkrétnímu socketu. Htonl Převede 32bitové číslo z počítačového bytového řazení na síťové bytové řazení. Inet_adr Převede znakový řetězec představující IP adresu v tečkami oddělené notaci na 32 bitové binární číslo v řazení v síťovém pořadí bytů. Inet_ntoa Převede IP adresu do tečkami oddělené notace. Ioctlsocket Řídí různé parametry udávající, jak sockety operují a zpracovávájí síťový vstup a výstup. Listen Tato funkce uvede socket do naslouchacího režimu. Přikazuje udanému socketu čekat na příchozí spojení. Ntohl Převádí 32bitové číslo řazené v síťovém bytovém pořadí do počítačového bytového pořadí. Ntohs Převádí 16bitové číslo řazené v síťovém bytovém pořadí do počítačového bytového pořadí. Setsockopt Uloží parametry přiřazené konkrétnímu socketu. Shutdown Ukončí část plně duplexního spojení (pouze na straně místního počítače). Socket Vytvoří koncový bod komunikace a vrátí jednoznačný identifikátor socketu. Accept XXVIII. ASR '2003 Seminar, Instruments and Control, Ostrava, May 6, 2003 Gethostbyaddr Gethostbyname Gethostname Getprotobyname Getprotobynumber Getservbyname Getservbyport 17 Databázové funkce ve Winsock API Vrátí doménové jméno a IP adresu odpovídající síťové adrese. Vrátí doménové jméno a IP adresu odpovídající jménu počítače. Vrátí doménové jméno lokálního počítače. Podle jména protokolu vrátí oficiální jméno a číslo jednoznačně identifikující protokol. Získá jméno a číslo protokolu odpovídající zadanému číslu. Získá jméno služby a číslo portu protokolu odpovídající jménu služby. Získá název služby a port odpovídající zadanému číslu portu. Tab. 3-2. Socketové funkce 4 Implementace aplikace nastavení parametrů regulace po internetu Socketových funkcí bylo s výhodou využito k napsaní aplikační vrstvy servisního programu nastavování parametru regulace pro mikrokontrolér s využitím internetu. Na následujícím obrázku je vytvořené schéma implementované aplikace. Známé regulační algoritmy jsou vytvořeny a implementovány přímo v paměti mikrokontroléru PIC 16C74A. Ten tvoří společně s převodníkem TTL/RS485 nejspodnější vrstvu síťového modelu TCP/IP, tedy jednak fyzickou, tak spojovou. Rozhranní WinSocket zajišťuje síťovou a transportní vrstvu celé aplikace. Je třeba vhodně naprogramovat formu UDP protokolu a využít socketové funkce pro správné fungování aplikace. Aplikační vrstvu tvoří program v prostředí operačního systému Windows, pomocí něhož příslušné parametry regulace zadáváme a následně odesíláme kliknutím myši vzdálenému počítači na který je připojený daný mikrokontrolér jako univerzální regulátor. TTL/RS232 Converter Vzdálený počítač v sít i internet jednoznačně určený IP adresou RS 485 Aplikace server Lokální počítač Aplikace klient TTL Regulovaná soustava Obr. 4-1. Nastavení parametru mikrokontroléru po internetu Konkrétní aplikační vrstvu tvoří program Controller Client Application. Je jen na konkrétním programátorovi, jak svoji aplikaci napíše. Zde je pro jednoduchost nastavováno 6 parametrů: typ regulátoru, žádaná hodnota, vzorkovací perioda a parametry regulátoru: zesílení, derivační a integrační časová konstanta. Typ regulátoru je pro mikrokontrolér klíčový parametr, podle něj pak jsou zpracovány ostatní parametry. (Je zřejmé, že pro P regulátor jsou integrační a derivační konstanty ignorovány, obdobně u ostatních typů XXVIII. ASR '2003 Seminar, Instruments and Control, Ostrava, May 6, 2003 18 regulátorů). Pak jen zadáme IP adresu cílového počítače a regulace je zahájena. Na následujícím obrázku je zobrazeno základní okno aplikace. 5 Závěr Servisní program je tedy vytvořen pro grafické ovládání uvedeného univerzálního regulátoru. Jeho výhodou je, že je rovněž použitelný i při různých modifikacích systému. Komunikuje s mikrokontrolérem prostřednictvím RS485 rozhraní po implementaci uvedené v minulých kapitolách. Pokud bychom implementovali regulační algoritmy do jiného mikrokontroléru, ať už z jakéhokoliv důvodu (rychlost výpočtu, vzorkování, pwm výstup, atd.) uvedený servisní program můžeme opětovně použít. Nastavení parametrů regulace s využitím knihoven winsock api je rozšířením stávající aplikace regulace na mikrokontroléru PIC 16C74A, jež vidíme na následujícím obrázku. V tomto případě je namísto servisního prográmku client server application použit jiný servisní program nastavení parametrů mikrokontroléru přímo z lokálního PC připojeného k mikrokontroléru. Uvedená aplikace je tedy modulární a můžeme dle potřeby měnit servisní programy ke konkrétní aplikaci. Servis programm under OS Windows Power Suppl y w,kR,TI, TD TTL/RS232 Converter RS 485 Control System TTL y u I/O Setup Interrupt control. Configuration A/D S etup. PWM S etup. Communication Setup System Setup PSD contr ol algorithm S ample for AD convertion PWM Output M ikrokontrolér - regulátor Obr. 5-1. Nastavení parametrů regulace 6 Literatura BABIUCH, M. 2002 : Programová podpora mikropočítačových měřicích a řídicích systémů. Autoreferát disertační práce : VŠB-TU Ostrava, 2002, ISBN 80-248-0095-0. HRBÁČEK, J., 2002. Komunikace mikrokontrolérů s okolím PRAHA: BEN-technická literatura, ISBN 80-86056-42-2. MICROCHIP 2002. Pic Micro Devices. – PIC16C7X Family Datasheets. 2002. Available from www: <URL:http//www.microchip.com>
Podobné dokumenty
Západočeská univerzita v Plzni
vybavena prostředím, ve kterém je možné spouštět kód za předem daných podmínek. Rozdíl
mezi klasickou a aktivní sítí je zobrazen na ilustraci 1. Prostředí pro spuštění kódu je v
podstatě nezávislý...
Síťové sockety
UDP – jedná se tzv. nespojovanou službu. To znamená, že nedochází k navázání spojení. Prostě odešleme data na stanovenou IP adresu a daný UDP port a nevíme, zda data
dorazila a zda se nepoškodila n...
Komunikační sockety
Vytvořeno pro potřeby přednášky na UP Olomouc. Tento text není určen pro samostudium, ale jen jako
vodítko pro přednášku, takže jeho obsah se může čtenáři zdát stručný, nekompletní či možná i chybn...
Sicily Café
73,43 t CO2 ekv.
Sicily Café je první restaurace v ČR, která si nechala stanovit
uhlíkovou stopu svého provozu. Unikátní je, že do výpočtu vstoupily
rovněž suroviny, které v restauraci zpracovávájí...
nové generace Začínáme s programem
Pro zcela nejjednodušší seznámení s programem doporučujeme shlédnout výukové videoukázky
s mluveným komentářem, které najdete na instalačním CD a také na www.sakura.cz/vyuka, (kde
videoukázky průbě...
Síťové programování
Socket = koncový bod dvousměrné
komunikace, koncept využívaný v řadě OS. V
našem kontextu bereme jako koncový bod IPenabled zařízení
Síťový socket je reprezentován adresou soketu
= kombinace IP(4/6...
Architektura databáze Oracle 12c
Oracle Database 11g - Hotová řešení (cpress)
Oracle DBA – examples from practice (ebook)
- Spravuji databáze a OFM klientům, kteří to chtějí.
- Školím lidi, které to zajímá.
- Pracuji na projektech...