ADIO

Verze pro tisk

Protokol ADIO pro MORSE

verze 10.0.62.0

6. listopadu 2013

1. Úvod

Modul digitálních a analogových vstupů/výstupů pro MR400 je v tomto popisu nazýván ADIO jako Analog and Digital Input Output module. Je to volitelný modul pro radiomodemy řady MR400. Modul obsahuje:

  • 2 digitální vstupy (2,4 až 15 V pro log 1)

  • 2 digitální výstupy (30 V / 500 mA)

  • 2 analogové vstupy (0 – 20 mA nebo 4 – 20 mA)

  • 2 analogové výstupy (0 – 20 mA nebo 4 – 20 mA)

Technické parametry jsou uvedeny v návodu MR400.

Modul pracuje podobně jako technologická jednotka SEP a používá stejné formáty dat.

2. Formát dat

Starší formát dat – SEP

typ paketu v MORSE – user data

  • 89 – zabezpečený

  • 09 – nezabezpečený

Struktura paketu SEP

|DO/8|DI/8|8xAI/16|temp/16|2xAO/16|8xcount/32|crc/16|
DO

– digitální výstup

DI

– digitální vstup

AI

– analogový vstup

temp

– analogová teplota procesoru

AO

– analogový výstup

count

– čítač

Nevyužité části paketu jsou vyplněny nulami. Čítače nejsou použity a jejich 8 double wordů obsahuje rovněž nuly.

Nový formát dat – MTF

typ paketu v MORSE – prot data

  • 8A – zabezpečený

  • 0A – nezabezpečený

Struktura paketu MTF

|format/8|err/8|reqNo/8|respNo/8| data_part |chksum|
format

– 01 – první verze

err

– chyba

reqNo

– číslo žádosti

respNo

– číslo odpovědi

data part

– blok příkazů a dat, počet data_part v jednom paketu je libovolný do maximální velikosti paketu 1400 Byte

chksum

– kontrolní součet

Data part:

|type/8|ft/1|cmd/3|size/4|cnt/4|offset/12| data |

Toto je krátký data_ part používaný pro zařízení SEP/ADIO

type

– typ data_part (čtení, zápis…) viz popis MTF

ft

– délka formátu data_part

cmd

– povely

size

– velikost datového bloku ve wordech

cnt

– počet datových bloků

offset

– offset

data

– vlastní data, viz samostatný popis MTF

V nových aplikacích je vhodnější a bezpečnější používat formát MTF.

Podrobný popis MTF formátu viz MORSE technology format

Příklad přenosu analogové hodnoty v MTF

Rozsah 0 – 20 mA

   rozsahpodle
5,010 mA0x1392vstupní proud, rozsah 0 – 20 mA 0x0000 – 0x4E20GPe 0pd TG
  Změřeno 12-bitovým A/D převodníkem a přepočteno podle kalibračních konstant  
 0x0401Hodnota vyslaná do sítě, 0 – 20 mA 0x000 – 0xFFFiMGIe
    1 bit ~ 4,9 uA 
 0x0401Hodnota přijatá ze sítě, 0 – 20 mA 0x000 – 0xFFFiMGIe
  Přepočteno podle kalibračních konstant převodníku a převedeno na analogovou hodnotu  
5,006 mA0x138Evýstupní proud, rozsah 0 – 20 mA 0x0000 – 0x4E20GPe 0pd TG

Rozsah 4 – 20 mA

   rozsahpodle
5,010 mA0x1392vstupní proud, rozsah 4 – 20 mA 0x0FA0 – 0x4E20GPe 0pd TG
  Změřeno 12-bitovým A/D převodníkem a přepočteno podle kalibračních konstant  
 0x0102Hodnota vyslaná do sítě, 4 – 20 mA 0x000 – 0xFFFiMGIe
    1 bit ~ 3,9 uA 
 0x0102Hodnota přijatá ze sítě, 4 – 20 mA 0x000 – 0xFFFiMGIe
  Přepočteno podle kalibračních konstant převodníku a převedeno na analogovou hodnotu  
5,008 mA0x1390výstupní proud, rozsah 4 – 20 mA 0x0FA0 – 0x4E20GPe 0pd TG

3. Implementace v Morse

Modul ADIO se používá podobně jako SEP, viz popis protokolu SEP na:
www.racom.eu, Produkty, MR400, MORSE, Podrobný popis protokolů

Modul ADIO může být použit různými způsoby:

  1. Spojení dvou MR400+ADIO rádiovou linkou.

    Stav vstupů Dinp 0,1 a Ainp 0,1 je přenášen na výstupy Dout 0,1 a Aout 0,1 protější stanice:

  2. Spojení MR400+ADIO s MR25 a SEPem:

  3. Spojení většího počtu modulů ADIO do řídicího centra.

    Moduly ADIO jsou ve funkci Slave, stav jejich vstupů Dinp 0,1 a Ainp 0,1 je přenášen do centra. Výstupy Dout 0,1 a Aout 0,1 jsou ovládány z centra. V tomto režimu lze v centru použít protokol MODBUS kompatibilní pouze s protokolem MTF.

  4. Spojení více modulů ADIO s centrálním SEPem v group módu (nebo dvou modulů ADIO s jedním centrálním ADIO v group módu). Pak každému I/O kanálu na SEPu přísluší jeden I/O kanál na vybraném modulu ADIO.

3.1. Příklad pro formát SEP

Spojení MR400+ADIO s MR25 a SEPem:

Formát paketu:

|DO/8|DI/8|8x AI/16|temp/16|2x AO/16|8x count/32|crc/16|

Monitoring RF kanálu na 690F9901:

10:34:43.754|690F9901 690F9902|690F9901 690F9902|0CA*31* 74   24|89 1dat
00FE 4AB5 0E80 0000 0000 0000 0000 0000 0000 0000 4A6C 0E6E 0000 0070 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7DDF

10:34:47.118|690F9902 690F9901|690F9902 690F9901|6A6  RFTX    20*09 0dat
FE02 4A9A 0E6E 0000 0000 0000 0000 0000 0000 0000 4AB5 0E80 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4D4F

První paket je vyslán z PLC SEP a byte FE popisuje stav vstupů SEPu. Je zkopírován do výstupního registru ADIO a pouze dva LSB bity jsou fyzicky nastaveny na digitální výstupy. Podobne další word 4AB5 popisuje stav analogového vstupu No.0 na SEPu a je zkopírován na analogový výstup ADIO.

00FE 4AB5 0E80 0000 0000 0000 0000 0000 0000 0000 4A6C 0E6E 0000 0070 0000
 : :  AI0  AI1                                     AO0  AO1  counter00
 : :                                                         (not used
 : :..DI FE = 1111 1110 = AI1=1, AI0=0                        in ADIO)
 :DO 00 = 0000 0000

Druhý paket je odeslán později z ADIO. Na místě výstupů obsahuje původní byte FE ze SEPu (skutečný stav digitálních výstupů ADIO je pouze AO1=1, AO0=0). Následující byte 02 popisuje stav dvou digitálních vstupů (DI1=1, DI0=0).

Jedenáctý word 4AB5 má hodnotu získanou ze SEPu a představuje zde stav analogového výstupu 0. Tento výstup je v našem příkladu spojen vodiči s AI0. Proto je velikost výstupního proudu AO0 shodná s AI0 (19,10 mA a 19,12 mA, viz níže). Příslušné wordy jsou více odlišné (4A9A a 4AB5). Příčinou jsou odlišné charakteristiky A/D převodníků, které jsou korigovány kalibračními konstantami.

Stav portů ADIO můžeme sledovat povelem „GPe 0pdT„:

Test:
Set digi(O)ut  Set (A)n out  (G)et values
(q)uit
>>G
Gai0 19.10mA (4A9A) ai1 3.70mA (0E73)
ao0 19.12mA (4AB5) ao1 3.71mA (0E80)
di 0002/mask 0003
do 00FE/mask 0003  ... maska připomíná, že platné jsou pouze 2 bity LSB
>>

Můžeme nastavit digitální výstupy např. na stav 0000 0011 povelem „O3„, nastavují se pouze 2 nejnižší bity nebo analogový výstup na 15 mA povelem „A1m15“ nebo "A1 15000„.

Další příklady jsou uvedeny v článku SEP – examples.

3.2. Příklad pro formát MTF

Paket vyslaný z modulu ADIO do sítě MORSE:

08:57:04.547|                 |690F0003 00000001|G00I   OUT   42||8A 1usr  0
0100 01C4 01C3 1000 0003 0003 0001 06C3 1000 0003 0003 0000 02C1 2000 4000 0100 
07C1 2000 4000 4000 C927

Paket rozepsaný podle jednotlivých data_part:

08:57:04.547|                 |690F0003 00000001|G00I   OUT   42||8A 1usr  0
0100 01C4                 ... hlavička
01C3 1000 0003 0003 0001  ... D input
06C3 1000 0003 0003 0000  ... D output
02C1 2000 4000 0100       ... A input
07C1 2000 4000 4000       ... A output
C927                      ... kontrolní součet

Podrobněji v článku MORSE technology format

4. Konfigurační parametry

Konfigurace se poněkud odlišuje od SEPu a ostatních protokolů. SEP je samostatná jednotka a nód s ním komunikuje SCC kanálem s protokolem SEP.

ADIO je vestavěn v CU a nód s ním komunikuje pomocí Network Agenta a nepotřebuje zvláštní protokol. Network Agent se chová ve vztahu k nódu podobně jako SCC, nemá však vnější hardwarové připojení. Místo toho komunikuje Network Agent přímo s modulem ADIO.
Viz následující příklad: Použijeme povel „Ne 1uG0„:

Nodes:
                                 retab
Nid|address |M | u   s | L   N |l w n g|sTO Err  Cent vTO hTO
(0) 00455774     -  S00| -  R00|0 0 0 0| 15 SERV  OFF 304  30
(1) 690F9901    G00 S00| -  R01|0 0 0 0| 15 SERV  OFF 304  30
(2) 00000000    S01 S00| -  R02|0 0 0 0| 15 SERV  OFF 304  30
(3) 00000000    S02 S00| -  R03|0 0 0 0| 15 SERV  OFF 304  30
(4) 00000000    S03 S00| -  R04|0 0 0 0| 15 SERV  OFF 304  30

Dále „GIe 0uAn“ a „0uN1„:

Channel to Node Interface:
    retranslation     |   user+service             lim
 id N  A t          m | N  A t Base     m  sec brc S   e
(0) 0   NO AR         | 1   NO AR          ON  OFF NONE
(1) 0   NO AR         | 0 MASK 00000000/08 ON  OFF NONE

A nyní „GPe“ a „0td„:

Nag:
 id |typ|subt|  addr |  mask  |
(0) 0003 0000 690F9902 001E0064
(1) 0000 0000 00000000 00000000

Povelem „0pd“ dostaneme následující parametry:

4.1. Konfigurační parametry

Parametry jsou podobné, jako u protokolu SEP:

Adio parameters:
(p)artner:690F0002  t(i)me:30s  p(o)ll:10*10ms
n(e)t dead timeout:90s
analog (t)hr:200*10uA  (f)ilter:0  (m)ask:3h
init (d)igi outs value:0h
init (a)na outs mode:all low value (0/4mA)
(N)egate digi outs mask:0h
Ala(r)m messages:OFF  Alarm parameter(s)
(C)ounters:OFF  (c)ounters parameters
(G)roup mode:OFF
(g)roup params
for(M)at:SEP
(A)out:4mA - 20mA
g(l)ue to resp:OFF
(D)ebug level:0

App m(O)de:normal
(1) power control params
(2) rfc usage alarm params

(T)est menu
(P)roduction
(q)uit
>>
(p)artner: 690F0002

– MORSE adresa protější CU, při (G)roup mode jsou pro tvorbu adresy použity horní 3 byte

t(i)me:30s

– perioda vysílání do (p)artner, pokud nenastaly změny vstupů

p(o)ll:10*10ms

– perioda komunikace mezi Agentem a modulem I/O (zde 100ms)

n(e)t dead
timeout:90s

– v případě nepřijetí paketu od protistanice do nastaveného času budou nastaveny výstupy do inicializačních hodnot

analog (t)hr: 200*10uA

– paket je vyslán do sítě po překročení tohoto limitu změny na analogovém vstupu, max. hodnota je 255*10uA
CU vysílá také při každé změně na digitálních vstupech.

(f)ilter:0

– low pass filtr změn na analogových vstupech,

  • (f):0 – bez filtrace, analogové změny jsou vysílány v jejich okamžité hodnotě

  • (f):1 – až 10, větší hodnoty se nedoporučují – změny se projeví v redukované hodnotě, plná změna se projeví se zpožděním

(m)ask:3h

– digitální vstupy, jejichž změny mají být přenášeny, jsou označeny bitem masky 00-03hex, při 3h snímá oba digitální vstupy

init (d)igi outs
value:0h

– nastaví na Dout tyto hodnoty, po zapnutí nebo Initu protokolu

init (a)na outs
mode:all low
value (0/4mA)

– nastaví na oba Aout tuto hodnotu, po zapnutí nebo Initu protokolu

(N)egate digi outs mask:0h

– neguje výstupy na vzdálené stanici dle masky

Ala(r)m messages:OFF

– ON – připojí data_part s cmd=5 (alarm), pokud nastal stav definovaný v Alarm parameter(s), pouze pro MTF

Alarm
parameter(s)
  • definuje stav analogových a digitálních vstupů, při kterých je generováno Ala(r)m messages

  • Send (s)tatus info:ON – připojí data_part s typ=05 (holding registers)

(C)ounters: OFF

– ON – v MTF připojí data_part s typ=08 (counters) – obsolete

(c)ounters
parameters

– obsolete

(G)roup mode: OFF

– volba režimu Group

  • (o)n – komunikace s adresami podle „(g)roup params

  • o(f)f – komunikace s adresou „p(a)rtner

(g)roup params

– Parametry jsou nastaveny individuálně pro skupiny group (0) a (1):
Group processing:

id 0                - první skupina parametrů
(t)hreshold:10*10uA
remote (a)ddress:2
remote (g)roup:6
id 1                - druhá skupina parametrů
t(h)reshold:250*10uA
remote a(d)dress:2
remote g(r)oup:7
(q)uit
>>
(t)hreshold:10*10uA

– práh citlivosti analogového vstupu pro vyvolání přenosu

remote (a)ddress:2h

– dolní byte protější adresy, 3 horní byte se berou z parametru (p)artner; adresa 00h vyřadí tuto skupinu z činnosti

remote (g)roup:6

– číslo skupiny v protější stanici

for(M)at:MTF
  • (s) SEP – původní formát SEP pro MORSE paket

  • (m) MTF – nový univerzální formát pro technologické datové pakety MORSE

  • (b) SEP+MTF – do sítě MORSE vysílá ve formátu MTF, přijímá oba formáty, SEP i MTF

(A)out:
4mA-20mA
  • (4) 4mA - 20mA – proudová smyčka s rozsahen 4–20 mA

  • (0) 0mA - 20mA – proudová smyčka s rozsahen 0–20 mA

g(l)ue to resp: OFF
  • OFF – vypnuto

  • ON – zapnuto “přilepení” spontálního paketu k odpovědi na příkaz

(D)ebug level:0
  • 0 – bez zpráv debug

  • 1 – hlášení debug jsou odesílána na kanál No.1 podle menu „ise

App m(O)de:

– special modes

App mOde
   (0) normal                - standartní ADIO funkce
   (1) power control (solar) - mode(0) + sleep mode
   (2) rfc usage alarm       - mode(0) + indikace vytížení v RF kanálu
(1) power control
params

– parametry módu s nízkou spotřebou módu (sleep mode)

Solar (A)ddress:00000000
S(u)pervisor address:00000000
A(s)leep after:0s 
    (set alarm time and mode in Unit menu!)
Solar (A)ddress

– nód ke kterému je připojen solární zdroj MSU120

S(u)pervisor addr

– MORSE adresa démona, který vypíná CU

A(s)leep timeout

– čas, za jak dlouho CU přejde do stavu sleep, pokud nepřijme příkaz od adresy S(u)pervisor

(2) rfc usage alarm params

– parameter pro indikaci úrovně rádiového provozu

Radio channel usage alarm: 
(drives DO0: alarm = negated initial value)

Ala(r)m refresh period:10s
T(h)reshold:20%
Noise (R)ss threshold:2
Ala(r)m

– perioda vyhodnocování provozu 1–60 sec

T(h)reshold

– část doby Ala(r)m, kdy rádiový signál je silnější než (R)ss threshold , např. 20%

(R)ss

– úroveň 1-10 udává jak silný musí být RF signál aby byl vyhodnocen, rozsah úrovní podle „ilm“ menu je v následující tabulce:

1-112 dBm
2-104 dBm
3-96 dBm
4-88 dBm
5-80 dBm
6-72 dBm
7-64 dBm
8-56 dBm
9-48 dBm
10silnější než -48 dBm

Popis funkce:

S periodou např. 10sec je vyhodnocováno časové obsazení RFC kanálu součtem TX, RX a RX šumu o úrovni silnější než Rss threshold. Pokud časová zátěž překročí zvolenou mez např. 20 %, je DO0 invertován ze své iniciační hodnoty „init (d)igi outs value:„.

(T)est menu

Toto menu umožňuje nastavit hodnoty digitálních a analogových výstupů a číst stav kanálů.

Test:
Set digi(O)ut  Set (A)n out  (G)et values
(q)uit
>>

Následující help se objeví po stisku O nebo A:

use `O3' or `O0x03' to set digital outputs or
use `A(0|1) 2048' or `A(0|1) 0x800' or A(0|1)m19.3 to set analog output
use `G' to get actual measured values
>>

Příklady:

Digitální výstup DO1 můžeme zapnout povelem:

>>O2

a nastavit analogové výstupy AO0 na 7 mA a AO1 na 12.5mA:

>>A0 7000
>>A1 12500

Výsledný stav přečteme povelem „G„:

>>G
>>ai0 6.983mA (1B47) ai1 12.450mA (30A2) ao0 7.000mA (1B58) ao1 12.500mA (30D4) 
di 0000/mask 0003 do 0002/mask 0003 
>>

Položky „do 0002/mask 0003říkají, že DO0=0, DO1=1. Maska 0003 připomíná, že validní jsou pouze 2 LSBs.

Vstupy AI0 a AI1 jsou zde propojeny vodiči s výstupy AO0 a AO1.

(P)roduction
menu

Menu je určeno pro výrobní účely.

Dbejte opatrnosti v menu (P)roduction, "GPe 0pdP", kterým se nastavují kalibrační konstanty. Bezpečné povely v tomto menu jsou „G“ nebo „E„, kterými se čtou kalibrační konstanty nebo výrobní číslo.

Převod mezi hodnotou I/O (0 – 20 000 µA) a hodnotou A/D převodníku (0 - FFF) se děje podle vztahu

 (I/O hodnota)[uA] = k x (A/D hodnota)[bit] + q

Kalibrační konstanty k,q jsou vypočteny a nastaveny v menu Production.

Toto menu je určeno pouze pro výrobní účely, kdy jsou konstanty nastaveny na správné hodnoty. Před prací v Production menu se doporučuje přečíst konstanty povelem „(G)et“ a poznamenat si je.

Production:
BEWARE! Changes calibration constants!
Calibrate analog.i(N)put  (S)et output  Calibrate analog o(U)utput
(G)et cal.constants  Write (I)np cal.constants  Write (O)ut cal.constants
G(E)t pid  (R)ead eeprom  Set (P)id
(q)uit
>>

Možnosti tohoto menu:

(G)et cal. constants

– čtení kalibračních konstant:

>>G
ai calib.const k0 0518 q0 FFED  k1 0519 q1 FFEA
ao calib.const k0 0308 q0 FFFE  k1 0305 q1 FFFE
Write (I)np cal. constants

Write (O)ut cal. constants

– nastaví kalibrační konstanty, např. „ai calib.const k0 0518 q0 FFED“ lze nastavit povelem:

I0 0x0518 0xFFED

Nastavíme-li defaultní konstanty, pak budou hodnoty A/D převodníku použity bez přepočtu, např.:

I1 0x0100 0

– pro analogový vstup 1

O1 0x1000 0

– pro analogový výstup 1

Calibrate analog. i(N)put

– výpočet a nastavení vstupních kalibračních konstant:

Přivedeme vstupní proud 4 mA do AI1 a napíšeme:

N1 4  Enter
0FA0 Cal.const set to default!

…pokud se tato zpráva neobjeví, opakujeme „N1 4

>>resp: written x0 0FA0  y0 0315

0x0FA0=4000dec, 0x0315=hodnota A/D převodníku

Přivedeme druhý známý proud (zde 19,95 mA) do AI1:

>>N1 19.95
4DED
>>x1 4DED  y1 0F4D

…0x4DED=19950dec, 0x0F4D=hodnota A/D převodníku

Computed cal.const k0 5.098785(0519) q0 -22.941496(FFEA)

…vypočtené konstanty

Vztahy: k= 5.098 x 256 = 1305dec = 0519hex, q= -22dec = FFEAhex
Vložíme kal. konstanty pro AI1 do paměti:

>>I1
0519 FFEA
>>resp: written
>>

Zkontrolujeme výsledek:

>>G
ai calib.const k0 0518 q0 FFED  k1 0519 q1 FFEA
ao calib.const k0 0308 q0 FFFE  k1 0305 q1 FFFE
(S)et output

Nastavení výstupních kal. konstant:

Calibrate analog o(U)tput

Nastavíme první výstupní proud na AO1:

>>S1 4
0333 Cal.const set to default!
>>resp: written resp: written

Změříme skutečný proud (zde 4,35 mA) a napíšeme:

>>U1 4.35
x0 0333  y0 10FD

…0x0333=hodnota A/D převodníku, 0x10FD=4350dec

Nastavíme druhou velikost proudu:

>>S1 18
0E65
>>resp: written

Změříme skutečný proud (19,52 mA) a napíšeme:

>>U1 19.52
x1 0E65  y1 4C3F

…0x0E65=hodnota A/D převodníku, 0x4C3F=19520dec

Computed cal.const k1 0.188926(0305) q1 -2.637047(FFFE)

Vztahy: k= 0.1889 x 4096 = 773dec = 0305hex, q= -2dec = FFFEhex

Zapíšeme kal. konstanty pro AO1 do paměti:

>>O1
0305 FFFE
>>resp: written
>>

Zkontrolujeme výsledek:

>>G
ai calib.const k0 0518 q0 FFED  k1 0519 q1 FFEA
ao calib.const k0 0308 q0 FFFE  k1 0305 q1 FFFE
G(E)t pid

– čtení výrobního čísla

>>
Product: type 01 hwver 02 prod.num 000B date 081CA140 sign 12AB
>>
(R)ead
eeprom

– pro výrobní účely

Set (P)id

– pro výrobní účely

5. Historie

Aktualizováno pro verzi fw 10.0.62.0