Převodník Ethernet - Serial
Pomocí modulů SDS MICRO nebo SDS MICRO DIN lze jednoduše realizovat převodník mezi rozhraním
Ethernet a sériovým CMOS 3V3 UART nebo RS232 rozhraním (záleží na tom, který konkrétní HW jste
zakoupili).
Firmware musí být novější než 26.7.2010 (dřívejší verze neměly tuto funkci ve FW).
Virtuální sériový port
Pomocí vhodného driveru lze v operačním systému (Windows®, Linux) realizovat tzv. virtuální sériový port
(VCP). Znamená to, že v operačním systému se vytvoří COMx port (např. COM34), který ovšem není fyzicky
na PC přítomen. Programy jej však vidí a mohou s ním pracovat bez problému, aniž by tušily, že fyzicky je
konektor tohoto rozhraní až na elektronice modulu SDS MICRO.
Díky tomu lze mít konektor pro sériové rozhraní (COM port) např. na "druhé straně světa" než je aktuálně
dané PC. Propojení je provedeno pomocí Ethernetu (Internetu), stačí znát IP adresu příslušného modulu
SDS MICRO a nainstalovat a nastavit vhodný driver do systému.
Vzhledem k tomu, že je přesně definováno chování firmware v modulech SDS MICRO, můžete si funkci
virtuálního sériového portu doplnit do vlastních programů i bez zmíněného driveru. Stačí vytvořit přímé
TCP/IP spojení na SDS MICRO, který má být převodníkem Ethernet/Serial a komunikovat přímo s ním.
Komunikace probíhá dle standardu RFC2217.
Virtuální sériový port ve Windows®: nainstalujte si ovladače, a to: com0com a com0tcp, viz tento odkaz.
Samozřejmě lze použít i jiné, tyto jsou však zadarmo.
Pozor! V HW jsou k dispozici pouze komunikační linky RxD a TxD (jak u RS232, tak pro UART). Další
signály už k dispozici nejsou (modem state/flow control/line state).
Výchozí konfigurace sériového portu je 9600bps, 8n1 (odpovídá základnímu nastavení konzole Mikrotiku).
Lze to kdykoliv změnit pomocí vhodných příkazů.
Princip funkce převodníku Ethernet/Serial - v zařízení je Telnet server, který předává svůj obsah na sériový
port. Doplňkem je RFC2217, kterým se nastavují HW parametry sériového rozhraní (UART control).
Pro programátory: Java komponenta, pro komunikaci se zařízením (vzdáleným sériovým portem přes TCP),
je ke stažení zde.
RFC2217
Tento protokol definuje způsob konfigurace vzdáleného sériového portu. Při požadavku na spojení (tj.
vytvoření virtuálního sériového portu), se driver nebo aplikace připojí pomocí TCP/IP k zařízení SDS MICRO,
prostřednictvím Telnet RFC854 protokolu, a pak pomocí posílání příkazů definovaných v RFC2217
nakonfiguruje fyzické parametry sériového rozhraní (rychlost, parita, počty bitů a tak dále). Tato funkce je
někdy označována taky jako NVT.
Po dokončení konfigurace se přejde k přímé duplexní komunikaci, kdy vše co je na sériovém rozhraní je
předáno prostřednictvím TCP/IP paketů, a vše co přijde ze sítě je předáno zase na sériové rozhraní. Vytvoří
se tak transparentní most mezi komunikující aplikací na jedné straně a fyzickým sériovým rozhraním na
straně SDS MICRO.
Konkrétní příkazy (co a jak poslat) jsou detailně popsány v RFC2217, který je volně k dispozici.
název
dec počet datových bajtů poznámka
OPT_RFC2217
44 x
použito jako option pro pro IAC SB
SIGNATURE
SET_BAUDRATE
SET_DATASIZE
SET_PARITY
SET_STOPSIZE
SET_CONTROL
0
0
1
4
2
3
1
1
4
5
1
1
vrací textový popis zařízení (info od výrobce, v tuto chvíli ale prázdné).
změna baudové rychlosti sériového portu, data: přímo zapsat rychlost
změna velikosti datového bajtu (default 8 bitů)
změna parity, popř. ruční ovládání 9 bitu (pro adresaci)
změna nastavení stop-bitu
nepoužito (nejsou vyvedene HW linky)
NOTIFY_LINESTATE 6 1
NOTIFY_MODEMSTATE 7 1
FLOWCONTROL_SUSPEND 8 0
FLOWCONTROL_RESUME 9 0
SET_LINESTATE_MASK 10 1
SET_MODEMSTATE_MASK 11 1
PURGE_DATA
12 0
neodeslaných dat)
nepoužito (nejsou vyvedene HW linky)
nepoužito (nejsou vyvedene HW linky)
nepoužito (nejsou vyvedene HW linky)
nepoužito (nejsou vyvedene HW linky)
nepoužito (nejsou vyvedene HW linky)
nepoužito (nejsou vyvedene HW linky)
smazaní obsahu všech FIFO (zahození dosud přijatých a
Každý příkaz odesílá odpověď, ve které je číslo příkazu zvýšeno o 100 (příklad: pošlete <SET_BAUDRATE>
xxx, odpověď je <SET_BAUDRATE+100> xxx, kde xxx jsou konkrétní data).
Nepoužité příkazy nejsou vykonány, ale interní stav je uchován a odpěď je odeslána.
Příkaz (bajt cmd, viz výpis) pošle klient do telnet serveru následovně:
IAC SB OPT_RFC2217 cmd data[0/1/4B] IAC SE
Odpověď (telnet server do klienta) vypadá takto (bajt po bajtu):
IAC SB OPT_RFC2217 cmd+100 data[0/1/4B] IAC SE
Pozor i v rámci datových bajtů (jak v příkazu, tak v odpovědi) se každý bajt o hodnotě 0xFF (mimo IAC)
kóduje pomocí IAC 0xFF. Datové bajty jsou v délkovém rozmezí 0 Byte až 4 Byte. Počet datových bajtů musí
být dodržen, viz tabulka výše.
Příklad změny počtu bitů v datovém bajtu na 7 bitů: 0xFF 0xFA 0x2C 0x02 0x07 0xFF 0xF0
Vzhledem k tomu, že zde uvedené postupy a hodnoty jsou obecně považovány za standard, bude zařízení
komunikovat s celou řadou aplikací a driverů, i od jiných výrobců (kteří dodržují RFC).
RFC854
Komunikace s SDS MICRO probíhá prostřednictvím Telnet protokolu, popsaném v RFC854. Při požadavku
na vytvoření spojení pro virtuální sériový port, se vnějši aplikace připojí právě k Telnetovému rozhraní SDS
MICRO, pak provede konfiguraci a hned následuje samotná požadovaná komunikace.
Bližší informace zde budou doplněny.
Speciální příkazy pro Telnet jsou předávány prostřednictvím "IAC", tj. bajtem "0xFF" (255dec). To vyžaduje,
aby při odesílání byly všechny bajty "0xFF", které nejsou příkazem ale jsou to datové bajty, byly poslány jako
"0xFF 0xFF" (dvakrát "0xFF"). To v praxi odpovídá speciálnímu příkazu "IAC 0xFF", čili do datového výstupu
(na sériový port) je zapsáno jednou "0xFF".
Podobně je provedeno zpracování při příjmu ze sériového rozhraní, při příjmu bajtu "0xFF" jsou odeslány
"0xFF 0xFF" (tj. jsou odeslány dva stejné bajty "0xFF" hned za sebou).
Výhodou použití Telnet na straně SDS MICRO je i to, že se můžete připojit libovolným Telnet klientem a
snadno přejít přímo na sériové rozhraní na SDS MICRO. Toto se dá využít např. u Mikrotiku tak, že se
propojí kabelem COM port na SDS MICRO s konzolovým portem na desce Mikrotiku. Pak lze snadno
přistupovat na konzolový port ze vzdáleného počítače tak, jako by jste byli přímo u daného Mikrotiku, stačí si
pustit Telnet, připojit se k SDS MICRO, nakonfigurovat příkazy sériové rozhraní a pak je přímo přenášeno
vše, co je nakonzolovém portu (a naopak, vše co napíšete do Telnet klientu se přenese na Mk).
Otestování funkčnosti
Lze provést jednoduchý rychlý test. Spojte na RS232 konektoru piny TxD a RxD dohromady, tím se
odeslané data vrátí na příjem (tj. co se pošle ven se hned přijme). Pak se připojte prostřednictvím
telnetového klienta a odešlete nějaký text. Co napíšete, se musí zpětně vrátit (zobrazit se). Současně lze
otevřít webové rozhraní, a na stránce Serial con zkontrolovat stav připojení, a statistiku přijatých a
odeslaných bajtů dat.
cmd.exe
telnet
> o 192.168.1.250
Použití jako převodník na RS422
RS422 je diferenciální duplexní sběrnice (dvakrát dva dráty). Připojení k SDS MICRO je možné snadno
provést - potřebujete připojit externí chip pro převod úrovní.
Výhodou RS422 je úplné oddělení komunikačních směrů (tj. samotné vedení pro vysílací směr, samotné
vedení pro přijímací směr), takže není potřeba doplňkový signál pro řízení směru.
SDS MICRO se zapojuje jako MASTER - řídí vysílací směr, přijímá z přijímacího směru.
Použití jako převodník na RS485
RS485 je oblíbená, výhodná, snadno použitelná diferenciální simplexní komunikační sběrnice. Komunikační
linka je sdílená pro oba směry, což vyžaduje řízení přístupu (vysílat může jen jeden z připojených zařízení,
jinak vznikne kolize). Realizace je opět snadná, je potřeba využít externí chip pro převod úrovní
(UART/RS485 nebo RS232/RS485).
Z důvodu řízení směru je potřeba získat řidící signal pro přepínání směru, tento signál musí generovat
MASTER. Vždy, když přijde po TCP/IP datový bajt(y), je bez ohledu na stav sběrnice RS485 tato zabrána
pro MASTER a ten začne vysílat. Tato informace se musí předat převodníkovému chipu (obvykle je signál
pojmenován jako DE, tj. "driver enable"). Z tohoto pohledu je SDS MICRO vždy MASTER. Takže v
konečném důsledku by jsme z SDS MICRO potřebovali vyvést signály RxD, TxD a třetí signál pro řízení
směru, a tyto signály se připojí na převodník 232/485.
Základní varianta realizace převodníku, kdy však není potřeba zmíněný doplňkový signál řízení směru,
využívá následující zapojení převodníku (schéma bude zde zveřejněno), kdy přepínání směru je
"automatické" (vždy při vysílání znaků z Master). Jde o to, že datový pin pro vysílaní, na budiči linky RS485,
se připojí na logickou nulu (GND), a piny RE/DE se spojí dohromady a připojí se na TxD pin (který byl
původně právě na tom datovém pinu).
Pokud přesto bude potřeba vyvést z SDS MICRO samostatný signál pro řízení směru, lze k tomu využít
např. pin "D0", dostupný na systémovém konektoru (SDS MICRO light) nebo na pájecí plošce na desce
(SDS MICRO DIN). Dále je samozřejmě potřeba správný firmware, který tento pin správně obsluhuje.
SDS MACRO
SDS MACRO umožňuje použít doplňkový modul, díky kterému získáte přímo výstup sběrnice RS485. Tento
modul se chová jako sběrnicový master. Navíc je zde doplňující možnost, kromě výchozí kdy se jedná o
převodník Ethernet/RS485, použít tento převodník pro ovládání externích speciálních vstupně/výstupních
modulů, které nabízíme. Ovládání se pak provádí konkrétními funkcemi SDS-C programu.
Adresace na sériové lince pomocí 9. bitu
Pomocí jednoduché funkce lze ovládat 9. bit v každém odeslaném bajtu v sériovém rozhraní. Využívá se
RFC2217, konkrétně ručního řízení parity (SET_PARITY). Pokaždé, když chcete změnit hodnotu 9. bitu,
pošlete tento příkaz s novou hodnotou. Pak zůstane (až do další změny) tento bit nastavený. Tato funkce se
využívá zejména u RS485, kdy se posílají data v blocích, a kde první odeslaný bajt má právě nastavený 9.
bit. Tím se označí jako adresa, a přijímače to tak vyhodnotí a data jsou zpracována jen právě v tom zařízení,
které má nastavenou adresu shodnou. Tato funkce je přímo hardwarově implementována ve většině
mikroprocesorů, a proto je velmi často využívána, a proto je taky podpora implementována v našich
výrobcích.
Použití jako převodník na CAN
Je potřebné použit externí hardware, který má vlastní inteligenci, a který má na výstupu sériové rozhraní
(UART nebo RS232). Pak se SDS MICRO použije jen jako běžný virtuální sériový port, zpracování
základních úrovní CAN sběrnice se ponechá na externím připojeném hardware (převodníku CAN/serial).
Download

Rs232 - Měření Energie - SDS