LONET SGW111 (GW707, GW717) - LonWorks Serial Gateway

Stručný popis
LONET SGW111 (GW707, GW717) - LonWorks Serial Gateway je dalším členem rodiny modulárního systému LONET. LONET SGW111 (GW707, GW717) zajišťuje přístup k síťovým proměnným ( Network variable ) aplikací založených na technologii LonWorks. Přístupem je myšleno jak čtení hodnot ( poll ), tak zápis ( update ) hodnot do síťových proměnných. Přístup je realizován přes sériové rozhraní ( RS 232 neboli EIA-232) s jednoduchým textově založeným protokolem. Nutným doplňkem LONET SGW111 (GW707, GW717) je SLTA (Serial LonTalk Adapter). Podle typu použitého SLTA (jeho transceiveru) je určen typ sítě LonWorks ( FT-10, TP-78, TP-1250, RS-485).
Základní údaje
- Napájení Adaptér ~ 9 - 15V
- Pracovní prostředí -40 až +40°C, 25-90% R.V., 50°C, nekondenzující
- Sériový port 0 připojení k SLTA
- Sériový port 1 aplikační rozhraní - volitelné parametry ( rychlost, parita, stop bit )
- Aplikační protokol - textově orientovaný, příkazy GET, SET, ADD, ADI, MEM, SNV, ERS
- SLTA-10 : FT-10, TP-78, TP-1250, RS-485
- Zapojení
- Protokol
- Naučené SNTV - meze a formát v/v
Zapojení
LONET SGW111 (GW707, GW717) má dně sériové rozhraní EIA 232 s konektory DB9. První je určené pro připojení k SLTA a druhé pro připojení uživatelské strany systému. Zapojení je patrné na blokovém schématu níže.
Nahoru
Protokol
V této sekci je popsán protokol komunikace uživatelské aplikace se zařízením LONET SGW111 (GW707, GW717) přes jeho druhé sériové rozhraní. Protokol je založen na textovém (ASCII) formátu příkazů. Každý příkaz je složen ze 3 znaků kódu příkazu následován mezerou oddělený řetězec znaků s parametry příkazu. Příkaz je ukončen znakem konce řádku \n ( 0x0a h ) Parametry nemusejí být obsaženy, pak znak konce řádku je hned za kódem příkazu
Příkazy se dělí do dvou skupin. V první skupině jsou příkazy pro manipulaci (ADD, ADI, MEM, ERS, SNV) s databází ( tabulkou ) síťových proměnných(dále jen NV) a v druhé skupině jsou příkazy (GET, SET) pro manipulaci s hodnotami NV.
NahoruADD a ADI bez parametrů - výpis všech NV v uzlu
Příkaz
ADD\nADI\n
Popis
Po obdržení příkazu ADD nebo ADI a následném přijetí service pin message ( dále jen SPM ), se vypíší informace o všech NV uzlu ze kterého byla přijata SPM. Vypisované informace zahrnují index NV v uzlu, SNVT (standard network variable type), jméno, "self-identification" řetězec a směr ( direction IN/OUT ). Výpis je ukončen prázdnou řádkou.Vrátí
Seznam všech NV v uzluPříklad
-> - směr do SWG111 <- - směr z SWG111
->ADD\n <-InfoNV0\n <-InfoNV1\n ..... <-InfoNVn\nNahoru
ADD - přidání NV do databáze
Příkaz
ADD seznam_jmen_NV_k_pridani\nPopis
Po obdržení příkazu ADD zařízení čeká na SPM. Argumentem příkazu jsou mezerami oddělená jména NV, které chceme přidat. Po přijetí SPM, začne zařízení jednotlivé NV přidávat do vnitřní databaze. O každé přidané NV se vypíše řádek s informacemi obsahující následující položky:SNVT,Jméno,index\n
Položka index složí k pozdějšímu adresovaní NV v příkazech GET a SET. Po přidání poslední NV se vypíše prázdný řádek.
Vrátí
Pro každou přidanou NV: SNVT,jméno,indexZakončeno prázdným řádkem.
Příklad
->ADD nviX nvoY\n <-109,nviX,12\n <-105,nvoY,13\n <-\nNahoru
ADI - přidání NV do databáze
Příkaz
ADI seznam_indexu_NV_v_uzlu_k_pridani\nPopis
Po obdržení příkazu ADI zařízení čeká na SPM. Argumentem příkazu jsou mezerami oddělené indexy NV ( NVindexy), které chceme přidat. Tyto tzv. NVindexy jsou indexy v tabulce síťových proměnných v uzlu ( neuron čipu ). Pozor nezaměňovat NVindexy s indexy pro adresovaní NV ve vnitřní databazi. Po přijetí SPM, začne zařízení jednotlivé NV přidávat do vnitřní databaze. O každé přidané NV se vypíše řádek s informacemi obsahující následující položky:SNVT,NVindex,index\n
Položka index složí k pozdějšímu adresovaní NV v příkazech GET a SET. Po přidání poslední NV se vypíše prázdný řádek.
Vrátí
Pro každou přidanou NV: SNVT,NVIndex,indexZakončeno prázdným řádkem.
Příklad
->ADI 1 2 3\n <-109,1,14\n <-105,2,15\n <-95,3,16\n <-\nNahoru
ERS - smazání všech NV z databáze
Příkaz
ERS\nPopis
Smaže všechny dříve přidané NV z vnitřní databaze.Vrátí
\nPříklad
->ERS\n <-\nNahoru
MEM - poslední přidaná NV
Příkaz
MEM\nPopis
Příkaz MEM vrátí poslední přídanou NV do vnitřní databáze ve formátu: index,snvtPříklad
->MEM\n <-3,95\nNahoru
SNV - výpis všech podporovaných snvt
Příkaz
SNV\nPopis
Příkaz SNV vrátí seznam všech podporovaných SNVT. Každý typ na jednom řádku. Výpis je ukončen prázdným řádkem.Příklad
->SNV\n <-105,SNVT_temp_p\n <-109,SNVT_Occupancy\n <-81,SNVT_lev_percent\n <-\nNahoru
GET - vrácení hodnoty NV (poll)
Příkaz
GET index\nPopis
Příkaz GET vrátí hodnotu NV. NV je určena v argumnetu uvedeným indexem do vnitřní databaze. Formát hodnoty a možné SNVT jsou uvedeny v sekci Naučené SNVTVrátí
Hodnotu NVPříklad
->GET 1\n <-225\nNahoru
SET - zapíše hodnotu NV (update)
Příkaz
SET index,hodnota\nPopis
Příkaz SET nastavuje novou hodnotu proměnný. V argumentu jsou uvedeny dvě čárkami oddělené položky. První je index NV ve vnitřní databazi a druhá je nová hodnota NV. Formát hodnoty a možné SNVT jsou uvedeny v sekci Naučené SNVTVrátí
\nPříklad
->SET 1,255\n <-\nNahoru
Naučené SNTV - meze a formát v/v
Uživatelská aplikace pro přístup k NV používá příkazy GET a SET. Pro vyjádření hodnoty NV používá formát dat přizpůsobený konkrétní aplikaci. Formát závisí na standardizovaném typu NV - tzv. SNVT (standard network variable type). Software LONET SGW111 (GW707, GW717) převádí hodnoty v těchto formátech na formát používaný v síti LonWorks a opačně. Více o SNVT naleznete na stránkách firmy Echelon Echelon.Nahoru
SNVT_temp_p
SNVT_temp_p se používá v HVAC ( heating, ventilation, air-conditioning ) aplikacích pro práci s teplotou.
Vlastnosti
| SNVT# | 105 |
| size | 2B |
| type | signed long |
| Meze | -2731 - 3276 (-273,1 - 327,6) |
| Hodnota od GET | text->toInterger->/10->hodnota NV |
| Hodnota pro SET | hodnota*10->round->toString->parametr |
Příklady
| GET 12\n | dej mi hodnotu NV na indexu 12 |
| 122\n | "122"->122->/10->12,2 |
| SET 12 122\n | 12,21->122,1->122->"122" |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |
SNVT_Occupancy
Vlastnosti
| SNVT# | 109 |
| size | 1B |
| type | enum {OC_OCCUPIED,OC_UNOCCUPIED,OC_BYPASS,OC_STANDBY,OC_NUL=-1} |
| Meze | prvky výčtu |
| Hodnota od GET | text->identifikátor výčtové konstanty |
| Hodnota pro SET | identifikátor výčtové konstanty->text |
Příklady
| GET 11\n | dej mi hodnotu NV na indexu 11 |
| OC_BYPASS\n |
| SET 11 OC_BYPASS\n | OC_BYPASS->"OC_BYPASS" |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |
SNVT_lev_percent
Vlastnosti
| SNVT# | 81 |
| size | 2B |
| type | signed long |
| Meze | -163 - 163 |
| Hodnota od GET | text->toInteger->hodnota NV |
| Hodnota pro SET | hodnota->toString->parametr |
Příklady
| GET 10\n | dej mi hodnotu NV na indexu 10 |
| 12\n | "12"->12->hodnota NV |
| SET 10 110\n | 110->"110" |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |
SNVT_switch
Vlastnosti
| SNVT# | 95 |
| size | 2B |
| type | struct{ unsigned value; signed state; } |
| Meze | value: 0 - 100 state: 0 a 1 |
| Hodnota od GET | value_text,state_text value_text->toInteger->hodnota value state_text->toInteger->hodnota state |
| Hodnota pro SET | value_text,state_text value->toString->value_text state->toString->state_text |
Příklady
| GET 22\n | dej mi hodnotu NV na indexu 22 |
| 12,1\n | "12"->12 - value "1"->1 - state |
| SET 22 50,1\n | 50->"50" - value 1->"1" - state |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |
SNVT_temp_setpt
Vlastnosti
| SNVT# | 106 |
| size | 12B |
| type | struct{ signed long occupied_cool; signed long standby_cool; signed long unoccupied_cool; signed long occupied_heat; signed long standby_heat; signed long unoccupied_heat; } |
| Meze | všechny prvky -2731 - 3276 (-273,1 - 327,6) |
| Hodnota od GET | occupied_cool_txt,standby_cool_txt,unoccupied_cool_txt,occupied_heat_txt,standby_heat_txt,unoccupied_heat_txt *_txt->toInterger->/10->hodnota NV |
| Hodnota pro SET | occupied_cool_txt,standby_cool_txt,unoccupied_cool_txt,occupied_heat_txt,standby_heat_txt,unoccupied_heat_txt hodnota*10->round->toString->*_txt |
Příklady
| GET 31\n | dej mi hodnotu NV na indexu 31 |
| 122,111,-54,221,23,289\n | "122"->122->12,2 - u všech prvků trasformace totožná |
| SET 31,122,11,333,-45,145,54\n | 12,21->122,1->122->"122" - u všech prvků trasformace totožná |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |
SNVT_hvac_mode
Vlastnosti
| SNVT# | 108 |
| size | 1B |
| type | enum{HVAC_AUTO, HVAC_HEAT, HVAC_MRNG_WRMUP, HVAC_COOL, HVAC_NIGHT_PURGE, HVAC_PRE_COOL, HVAC_OFF, HVAC_TEST, HVAC_EMERG_HEAT, HVAC_FAN_ONLY, HVAC_FREE_COOL, HVAC_ICE, HVAC_MAX_HEAT, HVAC_ECONOMY, HVAC_DEHUMID, HVAC_NUL} |
| Meze | prvky výčtu |
| Hodnota od GET | text->identifikátor výčtové konstanty |
| Hodnota pro SET | identifikátor výčtové konstanty->text |
Příklady
| GET 27\n | dej mi hodnotu NV na indexu 27 |
| HVAC_HEAT"\n |
| SET 27 HVAC_MRNG_WRMUP\n | HVAC_MRNG_WRMUP->"HVAC_MRNG_WRMUP" |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |
SNVT_hvac_status
Vlastnosti
| SNVT# | 112 |
| size | 12B |
| type | struct{ hvat_t mode; // typ jako SNVT_hvac_mode signed long heat_output_primary; signed long heat_output_secondary; signed long cool_output; signed long econ_output; signed long fan_output; unsigned short in_alarm; } |
| Meze | typ hvat_t jako SNVT_hvac_mode typy signed long jako SNVT_lev_percent typ unsigned short prvku in_alarm 0 a 1 |
| Hodnota od GET | mode_txt, heat_output_primary_txt, heat_output_secondary_txt, cool_output_txt, econ_output_txt, in_alarm_txt mode_txt jako u typu SNVT_hvac_mode in_alarm_txt ->toInteger->hodnota in_alarm ostatní jako u typu SNVT_lev_percent |
| Hodnota pro SET | mode_txt, heat_output_primary_txt, heat_output_secondary_txt, cool_output_txt, econ_output_txt, in_alarm_txt in_alarm->tiString->in_alarm_txt mode_txt -jako u typu SNVT_hvac_mode ostatní jako u typu SNVT_lev_percent |
Příklady
| GET 42\n | dej mi hodnotu NV na indexu 42 |
| HVAC_HEAT,122,11,84,21,-3,0\n |
| SET 42 HVAC_TEST,31,122,11,120,-45,0\n | |
| \n | v případě, že operace proběhla v pořádku je vrácen prázdný řádek |



