Implementace aplikační vrstvy pro jednočipové mikrokontroléry

Transkript

Implementace aplikační vrstvy pro jednočipové mikrokontroléry
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

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ý...

Více

Síťové sockety

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...

Více

Komunikační sockety

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...

Více

Sicily Café

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í...

Více

nové generace Začínáme s programem

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ě...

Více

Síťové programování

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...

Více

Architektura databáze Oracle 12c

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...

Více