Prepojenie 1PLC s počítačom
1. | Programovateľné logické automaty |
2. | Mikrokontrolér AVR |
3. | Softvér 1PLC |
4. | Funkčné bloky programu pre 1PLC |
5. | Prepojenie 1PLC s počítačom
|
Prepojenie s počítačom
Možnosti prepojenia
Mikrokontrolér obsahuje sériový kanál UART. Najvhodnejšie na komunikáciu s počítačom je použitie tohto kanálu.
Na PC sa používa na sériovú komunikáciu protokol RS232 (označované ako COM). Medzi protokolom RS232 a UARTom je rozdiel iba v napäťových úrovniach. Takže je možné použiť prevodník UART - RS232 (napríklad obvod MAX232).
V poslednej dobe sa ale z počítačov (najmä prenosných) stratili aj porty COM a tak sa ako vhodnejšie riešenie naskytá použiť prevodník USB-UART. USB zbernica je v dnešných počítačoch najviac používaná na pripojenie periférii.
Prevodník USB - UART
Na realizáciu prevodníka som vybral integrovaný obvod od firmy FTDI FT232R. Integrovaný obvod potrebuje na svoju činnosť minimum externých súčiastok. Schéma zapojenia je na obrázku:
Obrázok: Schéma zapojenia prevodníka USB-UART
Zapojenie obvodu je čerpané z jeho katalógového listu \cite{lit:ftdi}.
Komunikačný protokol
Aby bolo možné vymieňať informácie medzi počítačom a PLC, nestačí mať iba hardvérové prepojenie. Je potrebné navrhnúť aj komunikačný protokol.
Pri návrhu boli na protokol kladené nasledujúce požiadavky:
- Čo najjednoduchší
- Komunikáciu riadi počítač
- Protokol má obsahovať mechanizmus na hlásenie chýb
Správa posielaná z počítača vždy začína príkazom. Podľa príkazu nasledujú ďalšie dáta. Príkazy a dáta sú potvrdzované dvoma spôsobmi:
- OK - vyslaný znak 0F$_h$ - znamená, že je všetko v poriadku
- KO - vyslaný znak F0$_h$ - znamená, že poslaný príkaz neexistuje alebo ak sa použije ako potvrdenie dát, tak znamená, že dáta neprišli správne.
Prehľad všetkých príkazov protokolu aj s grafickým znázornením prenosu je v nasledujúcich podkapitolách. Vo vrchnej časti obrázkov sú dáta odosielané z PC do PLC, v dolnej časti sú dáta vysielané z PLC do PC.
Identifikácia PLC
Na príkaz 01h reaguje PLC odoslaním identifikácie. Identifikácia sa skladá zo signatúry použitého mikrokontroléra (bajty SIG 1 - SIG 3), adresou, na ktorej začína virtuálna pamäť (bajty RAM H, RAM L; táto adresa, je vlastne 0 pre virtuálnu pamäť), a stavu PLC (bajt STAT; 1 pre run program, 0 pre stop režim).
Obrázok: Identifikácia PLC
Prepínanie režimu
Prepínanie režimu sa deje príkazmi 02h a 03h. Príkaz 02h prepne PLC do režimu run (vykonáva sa užívateľský program). Príkaz 03h prepne PLC do stop režimu (užívateľský program sa nevykonáva). PLC odpovie potvrdením OK (0Fh).
Obrázok: Prepínanie režimu
Zápis a čítanie programu
Na zápis programu do PLC slúži príkaz 04h. Program sa zapisuje po blokoch. Ich veľkosť záleží od použitého mikrokontroléra (pre ATMega 8 je to 64B, pre ATMega 16 a 32 je to 128B a pre ATMega 128 je to 256B). Koniec programu sa označí potvrdením 2x za sebou (teda OK OK). Ak je prijatý blok prijatý nesprávne, PLC odpovie potvrdením KO (F0h) a je potrebné vyslať ten istý blok znovu (táto funkcia zatiaľ nie je implementovaná, takže PLC vždy odpovie OK).
Obrázok: Zápis programu
Čítanie programu je veľmi podobné zápisu. V tomto prípade ale posiela program PLC a odpovedá PC. Koniec programu je značený rovnako ako pri zápise.
Obrázok: Čítanie programu
Ak nie je dĺžka programu celočíselne deliteľná veľkosťou bloku, doplní sa na takú dĺžku aby bola znakmi FFh. Napríklad program veľkosti 116B sa pri veľkosti bloku 64B doplní na veľkosť 128B (Na koniec sa pridá 12B znakov FFh).
Čítanie pamäte RAM
Príkaz 06h slúži na prečítanie hodnoty na adrese ADR (zloženej z 2 bajtov ADR H a ADR L). PLC odpovie hodnotou na zadanej adrese.
Obrázok: Čítanie pamäte RAM
Čítanie bloku pamäte RAM
Príkaz 07h slúži na prečítanie bloku začínajúceho na adrese ADR (zloženej z 2 bajtov ADR H a ADR L) a veľkosti bloku. PLC odpovie odoslaním bloku od zadanej adresy.
Obrázok: Čítanie bloku pamäte RAM
Zápis a čítanie konfiguračného bloku
Príkazom 08h sa zapisuje do PLC konfiguračný blok. Prvá časť konfiguračného bloku obsahuje nastavenie či je daný vývod portu vstupný alebo výstupný (prvých 7B; 1B pre každý port PORTA-PORTG). Ak je daný bit 1, znamená to výstup. Druhá časť konfiguračného bloku obsahuje hodnoty výstupov v stop režime (druhých 7B; 1B pre každý port PORTA-PORTG).
Obrázok: Zápis konfiguračného bloku
Príkaz 09h slúži na čítanie konfiguračného bloku. Čítanie je podobné zápisu, s tým rozdielom, že PLC odošle konfiguračný blok v rovnakom tvare ako pri zápise.
Obrázok: Čítanie konfiguračného bloku
Kontrola pripravenosti I2C zariadenia
Príkaz 0Ah slúži na zistenie, či zariadenie s danou adresou je pripojené k PLC. PLC odpovie OK, ak také zariadenie je pripojené a je pripravené na komunikáciu a KO, ak zariadenie so zadanou adresou nie je pripojené.
Obrázok: Kontrola pripravenosti I2C zariadenia