Knihovna PSP3-MODBUS - Amit
Knihovna PSP3-MODBUS - Amit
Knihovna PSP3-MODBUS - Amit
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Knihovna</strong> <strong>MODBUS</strong><strong>Knihovna</strong> <strong>MODBUS</strong>
Úvod<strong>Knihovna</strong> <strong>MODBUS</strong> obsahuje moduly implementující obecnou komunikaci protokolem<strong>MODBUS</strong> v obou módech (ASCII i RTU) a to jak stranu master (řídicími systém firmyAMiT komunikuje jako master s ostatními zařízeními typu slave) tak i stranu slave (řídicísystém firmy AMiT je jako slave připojen k síti <strong>MODBUS</strong> a komunikuje s jinou - masterstanicí).Vzájemná komunikace typu master je implementována jako “komunikační modulknihovny REMOTE” (blíže viz popis knihovny REMOTE). Implementačně závislé podrobnostipopisuje dále kapitola “MASTER - princip činnosti”.Princip komunikace typu slave je popsán dále v kapitole “SLAVE - princip činnosti”.IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 1
MASTER - princip činostiMASTER - princip činnostiPodporované funkce <strong>MODBUS</strong>Přenášená dataMaster implementuje následující funkce protokolu <strong>MODBUS</strong>:Fce č.Popis1 Čtení stavu binárních výstupů.2 Čtení binárních vstupů.3 Čtení výstupních registrů.4 Čtení vstupních registrů.5 Nastavení jednoho binárního výstupu.6 Nastavení jednoho výstupního registru.7 Čtení stavu zařízení.15 Nastavení binárních výstupů.16 Nastavení výstupních registrů.Uvedený popis je pouze obecný a orientační, vlastní význam jednotlivých funkcí závisí nakonkrétním typu zařízení.Typicky se například pro analogové hodnoty používají dvojice registrů, takže čtení/zápisanalogových vstupů/výstupů probíhá pomocí služby 4/16. Služba 5 se zase napříkladpoužívá pro “vydávání povelů” - jako je například “zapni”, “vypni” apod.V RTU módu má každý znak pevně 8 datových bitů, lze určit jen typ parity a početstopbitů. V ASCII módu lze navíc oproti RTU módu určit počet datových bitůkomunikovaného znaku v rozsahu 7-9.V obou módech je nutné vzít v úvahu, že některé sériové komunikační linky (záleží natypu použitého HW) mohou umět pouze některé kombinace počtu datových bitů, paritya počtu stopbitů.Data přenášená protokolem se nijak neupravují ani neinterpretují. Jestliže zařízeníkomunikuje hodnoty jiné než binární (například v BCD kódu nebo přenáší hodnotys posunutým řádem - například V x 10), musí aplikace ve vlastní režii provádět přepočtymezi formátem komunikovaných hodnot a formátem pro normální práci.Při ukládání/vybírání z/do db. proměnných se bere ohled na velikost 16bitů v. 32bitů.Jestliže se například komunikují 3 registry (3x16 bitů), pak se hodnota čte/zapisuje z/dodb. proměnných následovněTyp DBT_INTTyp DBT_LONGDefinice vzdálených bodů1. 16bitů 2. 16bitůMI[x,y] MI[x,y+1]ML[x,y]3. 16bitůMI[x,y+2]ML[x,y+1]přičemž 3. šestnáctice se v proměnné ML[x,y+1] umísťuje do dolních 16 bitů.Jeden registr nebo jedna binární hodnota (binár) je určena číslem (adresou). V dalšímtextu bude jeden registr/binár označována jako Bod. Každý Bod má svoje číslo (adresu).Body se zadávají čísly ve tvaru, jak jsou komunikovány po sériové lince, tedy číslují se odnuly. Některé manuály však udávají seznam registrů/binárů jako složené číslo z číslafunkce a adresy registru/bináru a navíc adresy začínají číslovat od 1 (např. registr 40002je druhý v pořadí). Pro potřebu modulu <strong>MODBUS</strong> je takový registr chápán jako Bod číslo 1.IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 2
MASTER - princip činostiDefinice abstraktních parametrůKomunikační modul MODBS_R a MODBS_A používá abstraktní parametry modulu RmtDeftakto:DefinicePARŘetězecObsahuje definici funkce a seznam komunikovanýchBodů ve formátu ,.Významných je prvních 15 znaků v řetězci, všechnačísla se udávají dekadicky.Čísla v seznamu se oddělují čárkami, navíc je možnopoužít syntaxi - pro stanoveníintervalu Bodů, které se komunikují naráz (povoluje-lito použitá funkce).V modulu RmtDef v parametru Definice se kontroluje pouze, zda definice čtenívzdáleného bodu používá “čtecí” funkci <strong>MODBUS</strong>u a definice zápisu vzdáleného bodupoužívá funkci “zápisovou”. Nekontroluje se (není jak), zda zařízení podporuje požadovanoufunkci, ani zda zadaná čísla Bodů jsou platná.Jestliže použitá funkce umožňuje komunikovat pouze jednu hodnotu, uvažuje se ze seznamupouze první Bod.I v případě funkce 7, která nečte žádný registr ani binár, je třeba dodržet uvedenousyntaxi a do Definice zadat libovolné číslo Bodu např. "7,0".Například řetězec "4,0-1,10-11" znamená, že se nejprve přečtou jedním rámcem,Body (registry) 0 a 1 a potom druhým rámcem Body (registry) 10 a 11.Komunikace celého vzdáleného bodu skončí úspěchem, jestliže se úspěšně vykomunikujívšechny Body. Komunikace celého vzdáleného bodu skončí neúspěchem, jakmile komunikacejednoho Bodu skončí chybou. V takovém případě se modul MODBS_A/MODBS_Rnásledující Body uvedené v definici vůbec nesnaží komunikovat (například dojde-lik chybě při čtení Bodů 0-1, pak se Body 10-11 vůbec nekomunikují).PromennaIN/OUTILFMIMLMFDefinuje databázovou proměnnou, ze které sehodnoty budou zapisovat nebo do které se budouhodnoty načítat.Pokud je přenášených dat větší množství, umísťují sepostupně na pozice s indexem sloupce o 1 vyšší, jakjiž bylo popsáno výše.hStaniceStaniceINPARINONEKonstDefinuje síťové číslo zařízení (slave).Pozn.: Adresa 0 je v protokolu <strong>MODBUS</strong> chápána jakobroadcast.PrenosOUTINONEChybové bity D12÷D15 mají následující význam:hodnota0123456významZařízení odpovědělo negativně s blíže neurčenou chybou.Zařízení odpovědělo “chybná funkce”.Zařízení odpovědělo “chybná adresa” registru/bináru.Zařízení odpovědělo “chybná hodnota dat”.Neznámá, blíže nespecifikovaná chyba.Zařízení neodpovědělo během požadované doby.Chyba přenosu (špatné CRC, špatná délka odpovědi apod.)IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 3
SLAVE - princip činostiSLAVE - princip činnostiFunkce slave se vytváří kombinací modulů MODBS_RSl či MODBS_ASl (popisuje HWkomunikační parametry) a MODBS_Var (popisuje mapování proměnných řídicí stanice naregistry/bity protokolu <strong>MODBUS</strong>).Zmíněné moduly se umísťují do INIT procesu, přičemž modul MODBS_RSl čiMODBS_ASl musí být umístěn před navazující moduly MODBS_Var.Podporované funkce <strong>MODBUS</strong>Mapování registrůSlave implementuje následující typy (funkce) protokolu <strong>MODBUS</strong>:TypPopisImplementuje analogovou vstupní hodnotu.vstupní registrLze ji číst pomocí funkce 4 protokolu <strong>MODBUS</strong>.Implementuje analogovou výstupní hodnotu.výstupní registr Lze ji číst pomocí funkce 3 protokolu <strong>MODBUS</strong>.Lze ji zapsat pomocí funkce 6 nebo 16 protokolu <strong>MODBUS</strong>.Implementuje binární vstupní hodnotu.vstupní binárLze ji číst pomocí funkce 2 protokolu <strong>MODBUS</strong>.Implementuje binární výstupní hodnotu.výstupní binár Lze ji číst pomocí funkce 1 protokolu <strong>MODBUS</strong>Lze ji zapsat pomocí funkce 5 nebo 15 protokolu <strong>MODBUS</strong>Implementuje stavovou hodnotu zařízení slave.statusLze ji číst pomocí funkce 7 protokolu <strong>MODBUS</strong>.V RTU módu má každý znak pevně 8 datových bitů, lze určit jen typ parity a početstopbitů. V ASCII módu lze navíc oproti RTU módu určit počet datových bitů komunikovanéhoznaku v rozsahu 7-9.V obou módech je nutné vzít v úvahu, že některé sériové komunikační linky (záleží natypu použitého HW) mohou umět pouze některé kombinace počtu datových bitů, paritya počtu stopbitů.Hodnota registru dostupná prostřednictvím komunikace protokolem <strong>MODBUS</strong> (obecně‘viditelná hodnota’) se získá lineárním přepočtem a přetypováním proměnné (resp. prvkumatice) řídicího systému. Koeficienty pro lineární přepočet se zadávají modulemMODBS_Var.Při čtení dojde nejprve k lineárnímu přepočtuC, přičemž přepočet probíhá ve stejnémdatovém typu jako je mapovaná proměnná. Výsledek je následně přetypován a stáváse ‘viditelnou hodnotou’.Při zápisu je ‘viditelná hodnota’ nejprve přetypována na datový typ mapované proměnné.Pak je lineárně přepočtena a výsledek je uložen do proměnné.(x − B)CAHodnota typu I se mapuje jako jeden registr. Hodnota typu L nebo F se mapuje jako dvapo sobě jdoucí registry. První registr (s nižší adresou) obsahuje významově vyšších 16bitů D31÷D16 a druhý registr (s vyšší adresou) obsahuje významově nižších 16 bitůD15÷D0, což odpovídá uspořádání označovaném jako Big-Endian.Při čtení jen jednoho ze dvou registrů příslušejících jedné hodnotě je vrácenoodpovídacích 16 bitů, při zápisu se uvažuje jako by zbývacích nezadaných 16 bitů bylorovno 0.Pro lineární přepočet databázových proměnných typu I a L dochází při startu systému kekonverzi koeficientů A,B,C na stejný typ jako má proměnná (tedy I nebo L). Proto v těchtopřípadech nelze provádět ‘drobné’ úpravy jako například 1.01*x+0.99, neboťkoeficienty budou ořezány na celá čísla. V uvedeném příkladu jako 1*x+0.Ax+ BIV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 4
SLAVE - princip činostiMapování binárůMapování stavuMapovaná proměnná (resp. prvek matice) se stává přímo zdrojem binárních hodnot.Neprovádí se žádné přepočty ani přetypování (parametry A, B, C, Vazba v moduluMODBS_Var se ignorují).Proměnná typu I (resp. L) mapuje 16 (resp. 32) binárních po sobě jdoucích hodnot.Nejnižší adresa odpovídá významově nejnižšímu bitu D0, nejvyšší adresa odpovídávýznamově nejvyššímu bitu D15 (resp. D31).Proměnná typu F nesmí být jako binár mapována.Při čtení i zápisu se pracuje s jednotlivými bity, je tedy možné číst i zapisovat po jednombitu.Jako hodnota stavu se mapuje významově spodních 8 bitů D7÷D0 proměnné typu I neboL. Neprovádí se žádné přepočty ani přetypování, nebere se v úvahu ani adresa registru(stav není adresovatelný).Stav může být mapován pouze 1 krát a nesmí být mapován z proměnné typu F.Komunikace více registrů/binárů najednouPři čtení a zápisu je možné číst i zapisovat více registrů/binárů najednou (s výjimkouspeciálních funkcí 5 a 6 pro zápis právě jednoho registru/bináru) a to až do maximálnídélky komunikačního rámce na síti <strong>MODBUS</strong>.Pokud komunikace začíná na adrese registru/bináru, která není přiřazena žádnýmmapováním, skončí komunikace s chybou 2 - “chybná adresa registru/bináru”.Jiná situace nastává, pokud komunikace začíná na adrese registru/bináru, který jekorektně mapován, ale další komunikované registry/digitály na vyšších adresách jižnamapovány nejsou. V tomto případě chyba hlášena není: neexistující registry/digitályjsou přečteny s hodnotou 0, při zápisu se hodnoty nikam nezapisují (zahazují se).MaticePokud je za parametr Radek nebo Sloupec modulu MODBS_Var zadána hodnota menšíjak 0 a mapovaná proměnná je matice, dojde k mapování celé matice. Situace jeekvivalentní postupnému mapování všech prvků matice (po řádcích) tak, že adresyregistrů/binárů na sebe těsně navazují.Adresování registrů/binárůAdresy registrů/binárů se zadávají od 0, tak jak se komunikují po sériové lince. Některémanuály však udávají seznam registrů/binárů jako složené číslo z čísla funkce a adresyregistru/bináru a navíc adresy začínají číslovat od 1 (např. registr 40002 je v pořadí druhývstupní registr). Pro potřebu modulu MODBS_Var je adresa registru z příkladu rovna 1.IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 5
MODBS_AMODBS_AMaster komunikace <strong>MODBUS</strong> (ASCII)PopisModul implementuje obecný komunikační protokol <strong>MODBUS</strong> - ASCII jako “komunikačnímodul knihovny REMOTE” (blíže viz popis knihovny REMOTE), řídicí stanice je master.Vyhodnocení parametrů probíhá pouze jedenkrát při startu, a to při prvním spuštěnímodulu. Změna hodnot databázových proměnných za dalšího běhu stanice se již nijakneprojeví (aby se změna projevila je nutno provést restart (vypnutí, zapnutí) stanice).ParametryPortINKonstIMIČíslo portu pro sériovou komunikaci.Při použití portu typu RS232 se používá signál RTSpro řízení vysílání. Je nastaven do ON při vysílánía do OFF při příjmu.RychlostINKonstIMIRychlost komunikace v Bd.ZnakINVýběrIMIDefinuje tvar znaku tj.:- počet datových bitů (povolené hodnoty 7÷9),- paritu (0-žádná 1-sudá 2-lichá),- počet stopbitů (povolené hodnoty 1÷2).Konstanta se zadává číselně pomocí tří parametrůDelka, Parita a Stopbity.V proměnné se tvar znaku zadává jako složenáhodnota, kde:- bity D3÷D0 určují počet datových bitů,- bity D5÷D4 určují paritu,- bity D7÷D6 určují počet stopbitů.Zapsáno výrazemZnak = Delka | (Parita
MODBS_ASlMODBS_ASlSlave komunikace <strong>MODBUS</strong> (ASCII)PopisModul implementuje obecný komunikační protokol <strong>MODBUS</strong> - ASCII, řídicí stanice jeslave.Vyhodnocení parametrů probíhá pouze jedenkrát při startu, a to při prvním spuštěnímodulu. Změna hodnot databázových proměnných za dalšího běhu stanice se již nijakneprojeví (aby se změna projevila je nutno provést restart (vypnutí, zapnutí) stanice).Modul vyžaduje verzi operačního systému NOS minimálně 3.25!ParametryAdresaINKonstIMIAdresa stanice na síti <strong>MODBUS</strong>, pod kterou budeřídicí stanice komunikovat.Pozn.: Adresa 0 je v protokolu <strong>MODBUS</strong> chápánajako broadcast.PortINKonstIMIČíslo portu pro sériovou komunikaci.Při použití portu typu RS232 se používá signál RTSpro řízení vysílání. Je nastaven do ON při vysílánía do OFF při příjmu.RychlostINKonstIMIRychlost komunikace v Bd.ZnakINVýběrIMIDefinuje tvar znaku tj.:- počet datových bitů (povolené hodnoty 7÷9),- paritu (0-žádná 1-sudá 2-lichá),- počet stopbitů (povolené hodnoty 1÷2).Konstanta se zadává číselně pomocí tří parametrůDelka, Parita a Stopbity.V proměnné se tvar znaku zadává jako složenáhodnota, kde:- bity D3÷D0 určují počet datových bitů,- bity D5÷D4 určují paritu,- bity D7÷D6 určují počet stopbitů.Zapsáno výrazemZnak = Delka | (Parita
MODBS_ASl101112PříkladMODBS_ASlMezi příchozími znaky je příliš veliká mezera.Chyba při příjmu :- příliš dlouhý rámec- neočekávaný znak (uvnitř rámce musejí být pouze textově hexa cifry)- po CR nepřišlo LFModul nebyl dosud spuštěn (nedošlo k vyhodnocení parametrů a alokoacikomunikačního portu).10, 1, 9600, 0x0048, MODBSERRDo aplikace je přidána komunikace <strong>MODBUS</strong>-ASCII Slave na komunikačním portu 1,znaky mají 8 datových bitů, 1 stopbit, bez parity. Zvolená rychlost je 9600Bd a řídicístanice bude mít síťovou adresu 10. Kód poslední chyby se ukládá do proměnnéMODBSERR.IV/2006 <strong>Knihovna</strong> <strong>MODBUS</strong> 8
MODBS_RMODBS_RMaster komunikace <strong>MODBUS</strong> (RTU)PopisParametryModul implementuje obecný komunikační protokol <strong>MODBUS</strong> - RTU jako “komunikačnímodul knihovny REMOTE” (blíže viz popis knihovny REMOTE), řídicí stanice je master.Vyhodnocení parametrů probíhá pouze jedenkrát při startu, a to při prvním spuštěnímodulu. Změna hodnot databázových proměnných za dalšího běhu stanice se již nijakneprojeví (aby se změna projevila je nutno provést reset (vypnutí, zapnutí) stanice).Pozor: Modul spotřebovává vyčerpatelný systémový prostředek (hardwareový časovačprocesoru). Při vyčerpání prostředků tohoto typu může dojít ke konfliktu s jinými funkčnímimoduly, které tyto prostředky rovněž využívají. Určení povolených a zakázanýchkombinací těchto modulů závisí na typu použité procesní stanice, proto před současnýmpoužitím jiných modulů s tímto varováním kontaktujte technickou podporu.PortINKonstIMIČíslo portu pro sériovou komunikaci.Při použití portu typu RS232 se používá signál RTSpro řízení vysílání. Je nastaven do ON při vysílánía do OFF při příjmu.RychlostINKonstIMIRychlost komunikace v Bd.ZnakINVýběrIMIDefinuje tvar znaku tj- paritu (0-žádná 1-sudá 2-lichá),- počet stopbitů (povolené hodnoty 1÷2).Konstanta se zadává číselně pomocí dvou parametrůParita a Stopbity.V proměnné se tvar znaku zadává jako složenáhodnota, kde:- bity D1÷D0 určují paritu,- bity D3÷D2 určují počet stopbitů.Zapsáno výrazem Znak = Parita | (Stopbity
MODBS_RPříkladMODBS_R 2, 9600, 0x0004, 0, 4, 100Do aplikace je přidána komunikace <strong>MODBUS</strong>-RTU na komunikačním portu 2, znaky mají1 stopbit, bez parity. Stanice po obdržení odpovědi čeká pouze minimálně daný čas(4 znaky). Na odpověď se čeká maximálně 100 znaků, což při zvolené rychlosti 9600Bd jecca 100ms.Modul definuje komunikační kanál 0 a bude zpracovávat všechny vzdálené body, jejichžkomunikační kanál má také hodnotu 0.IV/2006 <strong>Knihovna</strong> <strong>MODBUS</strong> 10
MODBS_RSlMODBS_RSlSlave komunikace <strong>MODBUS</strong> (RTU)PopisModul implementuje obecný komunikační protokol <strong>MODBUS</strong> - RTU, řídicí stanice jeslave.Vyhodnocení parametrů probíhá pouze jedenkrát při startu, a to při prvním spuštěnímodulu. Změna hodnot databázových proměnných za dalšího běhu stanice se již nijakneprojeví (aby se změna projevila je nutno provést reset (vypnutí, zapnutí) stanice).Pozor: Modul spotřebovává vyčerpatelný systémový prostředek (hardwareový časovačprocesoru). Při vyčerpání prostředků tohoto typu může dojít ke konfliktu s jinými funkčnímimoduly, které tyto prostředky rovněž využívají. Určení povolených a zakázaných kombinacítěchto modulů závisí na typu použité procesní stanice, proto před současnýmpoužitím jiných modulů s tímto varováním kontaktujte technickou podporu.Modul vyžaduje verzi operačního systému NOS minimálně 3.25!ParametryAdresaINKonstIMIAdresa stanice na síti <strong>MODBUS</strong>, pod kterou budeřídicí stanice komunikovat.Pozn.: Adresa 0 je v protokolu <strong>MODBUS</strong> chápánajako broadcast.PortINKonstIMIČíslo portu pro sériovou komunikaci.Při použití portu typu RS232 se používá signál RTSpro řízení vysílání. Je nastaven do ON při vysílánía do OFF při příjmu.RychlostINKonstIMIRychlost komunikace v Bd.ZnakINVýběrIMIDefinuje tvar znaku tj.:- paritu (0-žádná 1-sudá 2-lichá),- počet stopbitů (povolené hodnoty 1÷2).Konstanta se zadává číselně pomocí dvou parametrůParita a Stopbity.V proměnné se tvar znaku zadává jako složenáhodnota, kde:- bity D1÷D0 určují paritu,- bity D3÷D2 určují počet stopbitů.Zapsáno výrazem Znak = Parita | (Stopbity
MODBS_RSl8912PříkladMODBS_RSlPoslední přijatý rámec požadoval více dat, než se vejde do rámce odpovědi.Poslední přijatý rámec obsahoval špatná data (fce 6 ON,OFF).Modul nebyl dosub spuštěn (nedošlo k vyhodnocení parametrů a alokacikomunikačního portu).10, 1, 9600, 0x0004, MODBSERRDo aplikace je přidána komunikace <strong>MODBUS</strong>-RTU Slave na komunikačním portu 1,znaky mají 1 stopbit, bez parity. Zvolená rychlost je 9600Bd a řídicí stanice bude mítsíťovou adresu 10. Kód poslední chyby se ukládá do proměnné MODBSERR.IV/2006 <strong>Knihovna</strong> <strong>MODBUS</strong> 12
MODBS_VarMODBS_VarDefinice mapování proměnných slave komunikace <strong>MODBUS</strong> (ASCII i RTU)PopisModul definuje mapování databázových proměnných na registry/bináry stanice typu slavena síti <strong>MODBUS</strong>.ParametryMODBS_SlvPARNávěštíNávěští modulu MODBS_ASl nebo MODBS_RSl, kterýimplementuje obsluhu komunikace <strong>MODBUS</strong> slave.TypPARVýběrTyp mapování. Určuje jako jaká entita(registr/binár/status) bude Promenna mapována.0 (BinIN) - vstupní binární hodnota (binár)1 (BinOUT) - výstupní binární hodnota (binár)2 (RegIN) - vstupní analogová hodnota (registr)3 (RegOUT) - výstupní analogová hodnota (registr)4 (Status) - stav zařízeníAdresaPARKonstPočáteční adresa mapování registrů/binárů.PromennáIN/OUTILFMIMLMFMapovaná proměnná, ze které se čte/zapisuje.RadekPARKonstČíslo řádku prvku matice (od 0), který se mánamapovat. Je-li záporný, mapuje se celá matice.Pro jednoduché proměnné se ignoruje.SloupecPARKonstČíslo sloupce prvku matice (od 0), který se mánamapovat. Je-li záporný, mapuje se celá matice.Pro jednoduché proměnné se ignoruje.VazbaPARVýběrPro Typ nadstavený na analogovou hodnotu určujepřetypování mapování - neboli jak je zvolený typ veskutečnosti ‘vidět’ na síti <strong>MODBUS</strong> . Pro ostatní typyse ignoruje.0 (default) - bez přetypování1 (CastINT) - přetypování na INT2 (CastLONG) - přetypování na LONG3 (CastFLOAT) - přetypování na FLOATABCPARKonstAxCKoeficienty pro lineární přepočet + B .PristupyOUTLNONEČítač použití mapování. Zadanou proměnnou modulinkrementuje po každém použití definovaného mapování(čtení nebo zápisu).Nechceme-li udržovat čítač, můžeme za tento parametrdosadit NONE.IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 13
MODBS_VarPříkladPro další příklady uvažujme existenci modulu MODBS_RSl obsluhující komunikaci<strong>MODBUS</strong> s návěštím :01111 a následující seznam proměnných:VAL_I MI [1,2]VAL_L LVAL_F FJednoduché mapování registrůMODBS_Var :01111, RegIN, 0, VAL_F, -1, -1, default,3.0, 1.0, 1.0, NONEMODBS_VarMODBS_Var:01111, RegOUT, 1, VAL_L, -1, -1, default,1.0, -1.0, 2.0, NONE:01111, RegOUT, 3, VAL_I, 0, 1, default,1.0, 0.0, 1.0, NONEPro funkci 4 jsou dostupné registry 0÷1 (v některých manuálech by byly označované jako40001÷40002), kam se mapuje desetinná hodnota 3.0*VAL_F+1.0 ve formátu IEEE.Pro funkci 3, 6 a 16 jsou dostupné registry 1÷3 (alternativně označované v některýchmanuálech jako 30002÷30004). Registry 1÷2 mapují hodnotu VAL_L/2-1, registr 3mapuje hodnotu prvku matice VAL_I[0,1].Jednoduché mapování binárůMODBS_Var :01111, BinIN, 5, VAL_I, 0, 0, default,1.0, 0.0, 1.0, NONEMODBS_Var:01111, BinOUT, 10, VAL_L, -1, -1, default,1.0, 0.0, 1.0, NONEPro funkci 2 jsou dostupné bináry 5÷20, kam se mapují bity D0÷D15 z prvku maticeVAL_I[0,0].Pro funkci 1, 5 a 15 jsou dostupné bináry 10÷41, kam se mapují bity D0÷D31 z proměnnéVAL_L.Mapování stavuMODBS_Var:01111, Status, 0, VAL_L, -1, -1, default,1.0, 0.0, 1.0, NONEFunkce 7 vrací jako stav zařízení bity D0÷D7 proměnné VAL_L.Mapování maticeMODBS_Var:01111, BinIN, 10, VAL_I, -1, -1, default,1.0, 0.0, 1.0, NONEMODBS_Var:01111, RegIN, 19, VAL_I, -1, -1, default,1.0, 0.0, 1.0, NONEPro funkci 2 jsou dostupné bináry 10÷41. Bináry 10÷25 jsou mapovány jako bity D0÷D15prvku matice VAL_I[0,0], bináry 26÷41 jsou mapovány jako bity D0÷D15 prvku maticeVAL_I[0,1].Pro funkci 4 jsou dostupné registry 19÷20. Registr 19 je mapován jako prvek maticeVAL_I[0,0], registr 20 pak jako prvek matice VAL_I[0,1].IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 14
Mezery v mapováníMODBS_Var :01111, BinIN, 0, VAL_I, 0, 0, default,1.0, 0.0, 1.0, NONEMODBS_VarMODBS_VarMODBS_VarMODBS_Var:01111, BinIN, 20, VAL_I, 0, 1, default,1.0, 0.0, 1.0, NONE:01111, RegIN, 0, VAL_I, 0, 0, default,1.0, 0.0, 1.0, NONE:01111, RegIN, 2, VAL_I, 0, 1, default,1.0, 0.0, 1.0, NONE:01111, RegIN, 0, VAL_I, -1, -1, CastFLOAT,1.0, 0.0, 1.0, NONE:01111, RegIN, 4, VAL_L, -1, -1, CastFLOAT,5.0, -20.0, 3.0, NONE:01111, RegIN, 6, VAL_F, -1, -1, CastINT,1.0, 0.0, 10.0, NONE53VAL_L − 20.0110 VAL_FPro funkci 2 jsou dostupné bináry 0÷15, 20÷35 mapované jako bity D0÷D15 prvku maticeVAL_I[0,0] a VAL_I[0,1]. Při současném čtení binárů 0÷35 bude jako obsah binárů16÷19 (nemapovaných) vrácena vždy hodnota 0, při zápisu se hodnota odpovídajícíbinárům 16÷19 ignoruje. Čtení/zápis začínající bináry 16÷19 skončí chybou.Pro funkci 4 jsou dostupné registry 0, 2 mapované jako prvky matice VAL_I[0,0]a VAL_I[0,1]. Při současném čtení registrů 0÷2 bude jako obsah registru 1 (nemapovaného)vrácena vždy hodnota 0, při zápisu se hodnota odpovídající registru 1 ignoruje.Čtení/zápis začínající registrem 1 skončí chybou.PřetypováníMODBS_VarMODBS_VarMODBS_VarPro funkci 4 jsou dostupné registry 0÷6.Registry 0÷1 a 2÷3 jsou mapované jako prvky matice VAL_I[0,0] a VAL_I[0,1]převedené na desetinnou hodnotu (typ F).Registry 4÷5 jsou mapované jako desetinná hodnota výrazu .Registr 6 je mapován jako převedená na celočíselný typ I.IV/2005 <strong>Knihovna</strong> <strong>MODBUS</strong> 15