SEP

https//www.racom.eu/cz/support/prot/sep/index.html

Verze pro tisk

Protokol SEP pro MORSE

verze 10.0.10.0

22. srpna 2011

1. Úvod

Protokol SEP slouží ke komunikaci mezi komunikační jednotkou MR25 nebo MR400 a technologickou měřicí jednotkou SEP. Umožňuje přenášet data z 8 binárních vstupů s 8 čítači, 8 binárních výstupů, 8 analogových vstupů a 2 analogových výstupů včetně nastavování kalibračních konstant.

Popis technologické jednotky SEP je uveden na www.racom.eu, v kapitole Produkty/Hardware/Příslušenství/SEP.

2. Formát dat

Struktura paketu SEP, který je vysílán z protokolu do sítě MORSE:

| BO/8 | BI/8 | 8xAI/16 | temp/16 | 2xAO/16 | 8xcount/32 | crc/16 |
BO

– binary output – 1 představuje sepnuté relé
příklad: BO/8 = 0xFE = 1111 1110 = binární výstup 0 je vypnut

BI

– binary input – 1 je úroveň H, t.j. svorka není sepnutá na zem
příklad: BI/8 = 0xCF = 1100 1111= bin. vstupy 4 a 5 na úrovni 0

AI

– analogové vstupy v pořadí AI0AI7

temp

– analogová teplota procesoru

AO

– analogové výstupy v pořadí AO0, AO1

count

– čítače v pořadí C0 C7

Protokol SEP při komunikaci se jednotkou SEP používá průmyslový standard MODBUS v režimu RTU. Referenční manuál tohoto standardu lze najít např. na www.modicon.com a jeho popis není součástí tohoto dokumentu. Protokol nepodporuje celou množinu funkcí MODBUS, implementovány jsou pouze funkce pro práci se vstupy/výstupy a některými typy registrů.

Formát povelů Modbus je uveden také ve článku „Formát rámce MODBUS pro MORSE“ (MODBUS – format).

OblastFunkceTypRozsah adres (hex)Obsah
Dout
0x01
0x05
0x0F
R
W
W
00-07 bit, F0 bit
00-07 bit
00-07 bit, F0 bit
Čtení z binárních výstupů
Zápis do binárních výstupů, po 1 bitu
Zápis do binárních výstupů, zámek flash
Dinp0x02R
00-07 bit
Čtení z binárních vstupů
Ainp, Aout, Count
0x04
 
 
0x06
 
R
 
 
W
 
00-08 word
09-0A word
10-20 word
100-101 word
110-130 word
Čtení z analogovýcg vstupů
Čtení z analogových výstupů
Čtení obsahu čítačů
Zápis do analogových výstupů
Zápis výchozího stavu do čítačů
Flash
0x03
0x06
R
W
00-FF word
00-FF word
Čtení z flash, (00-21 kalibrační konst.)
Zápis do flash

Ke standardním funkcím byla doplněna funkce 0x1E, která usnadňuje komunikaci mezi SEPem a nadřízeným systémem. Umožňuje pomocí jednoho zavolání přečíst všechny stavy SEPu a současně nastavit potřebné výstupy.

2.1. Princip činnosti

Nadřízený procesor plní úlohu zařízení master. Připojený SEP je vždy slave. Tato konfigurace je dána pevně a nelze ji měnit. Tak, jak standard MODBUS přikazuje, master cyklicky obvolává jednotlivá slave a jejich odpovědi zpracovává.

Pro orientaci uveďme struktury běžných paketů a princip generace CRC:

Query (dotaz od masteru):

   |Adresa/8 |Funkce/8 |Start/16 |Number/16 |CRC/16 |

Response (odpověď od slave):

   |Adresa/8 |Funkce/8 |Count/8 |Data/8x count |CRC/16 |

CRC používá polynom 0xA001. Lze jej generovat pomocí tabulky nebo pomocí cyklu a bitových rotací. Generovaní pomocí tabulky je osmkrát rychlejší než výpočet v cyklu, protože odpadá rotace každého byte po bitech.

2.2. Popis funkcí protokolu

0x01 – READ_OUTPUT_STATUS

Funkce slouží pro čtení binárních výstupů. Adresní prostor pro tuto funkci je následující:

Start: 0x00 - 0x07, 0xF0
Number:0x01 - 0x08 , při adrese 0xF0 povinně 1

Tato čísla představují počáteční adresu a počet požadovaných prvků. Je potřeba zdůraznit, že součet adresy a počtu prvků nesmí překročit nejvyšší možnou adresu. Při překročení libovolné z hodnot mimo povolený rozsah je vrácena EXCEPTION_RESPONSE. Toto pravidlo platí pro všechny funkce bez výjimky.

0x02 – READ_INPUT_STATUS

Funkce slouží pro čtení binárních vstupů. Adresní prostor pro tuto funkci je následující:

Start: 0x00 - 0xFF
Number:0x01 - 0x08

0x03 – READ_HOLD_REGS

Funkcí se čtou paměťové registry. Do těchto registrů je také zamapována interní flash paměť, ve které jsou uloženy mimo jiné konstanty pro analogové vstupy/výstupy. Adresní prostor pro tuto funkci je následující:

Start: 0x00 - 0x07
Number:0x01 - 0x08

0x04 – READ_INPUT_REGS

Funkcí se čtou analogové vstupy a čítače. Hodnoty (vyjma čítačů), vracené touto funkcí, jsou přepočítávány na zadaný rozsah, tzn. rozsah analogového vstupu (např. 4 – 20 mA) je přepočítán na rozměr fyzikální veličiny. Meze pro přepočet jsou uloženy ve flash paměti a je možné je modifikovat programem conf.exe. Každý vstup lze konfigurovat samostatně. Čítače lze nastavovat a nulovat. Adresní prostor pro tuto funkci je následující:

Start: 0x00 - 0x08 – pro analogové vstupy
0x09 - 0x0A – pro analogové výstupy
0x10 - 0x20 – pro čítače

Čítače jsou čteny jako běžné 16bitové vstupní registry, přičemž ale jejich vlastní obsah je 32bitový. Tj. v jednom čtení je dobré číst nejméně dva registry (od sudé adresy), abychom obdrželi kompletní obsah jednoho čítače.

Také je potřeba zdůraznit, že tyto čítače mají přeházené pořadí byte, než je obvyklé. Normální 32bitové slovo je organizováno takto:

0123
MSB  LSB

Příklad – stav čítače 00000124 v paketu SEP v síti MORSE:

08:28:22.401|                 |69112202 69112201|S00I   OUT   58| 89 0user 
FF7E 0391 00A4 032C 02D6 0317 033D 02E3 02EE 000E 0016 0000 0000 0124 0000
                                                            ---- ----

Protože MODBUS je orientován bytově a ne wordově, dochází k přehazování pořadí byte v čítačích. S touto skutečností je potřeba počítat v nadřízeném systému. Pořadí byte v čítačích se pak jeví následovně:

3210
LSB  MSB

Příklad – stav čítače 00000124 v rámci Modbus na lince RS485:

08:28:22.351 tx      8 | S00
0104 0010 0010 F003
08:28:22.396 rx;i   37 | S00
0104 2024 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0004 0000 
       -- ---- --

0x05 – FORCE_SINGLE_OUT

Funkce slouží pro nastavování binárních výstupů. Adresní prostor pro tuto funkci je následující:

Start: 0x00 - 0x07

0x06 – FORCE_SINGLE_OUT

Funkcí lze modifikovat paměťové registry. Jelikož do těchto registrů je také zamapována interní flash paměť, je potřeba tuto paměť odemknout zápisem na „speciální binární výstup“. Po úspěšném zápisu nebo po 10 sec je paměť automaticky opět zamčena. Předchází se tím nechtěnému přepsaní konstant v SEPu při laborování nebo nevhodně naprogramovaném masteru. Prakticky se jedná o dva úkony:

  • Zápis log. 1 na vyhrazenou adresu 0xF0 v binárních výstupech, čip potvrdí tento zápis běžným způsobem.

  • Zápis hodnoty do paměti flash. Následuje automatické uzamčení paměti. Zápis je opět potvrzen běžným způsobem.

Pokud není paměť flash před zápisem nejprve odemčena, SEP sice potvrdí tento zápis korektně, ale ve skutečnosti se nic neprovede. Stav zámku paměti lze rovněž číst dotazem na stav binárního výstupu 0xF0. Log. 1 značí odemčeno. Není nutné dodržovat okamžité pořadí odemčení, zápis, nýbrž je možné mezi tyto dva úkony vložit posloupnost dalších dotazů. Pouze je nutné počítat s automatickým časovým zamčením. Při nastavování čítačů si je potřeba uvědomit, že čítače jsou 32bitové a zapisovat vždy celý čítač – dva zápisy po sobě nebo použít funkci 0x10.

Adresní prostor pro tuto funkci je následující:

Start: 0x00 - 0xFF – pro flash
0x100 - 0x101 – pro analogové výstupy
0x110 - 0x130 – pro čítače

0x0F – FORCE_MULTIPLE_OUTS

Funkci lze s výhodou použít pro nastavování binárních výstupů. Tato funkce umí nastavit všechny výstupy podle předložené masky. Adresní prostor je následující:

Start: 0x00 - 0x07, 0xF0
Number:0x01 - 0x08, – při adrese 0xF0 povinně 1

0x10 – RESET_MULTIPLE_REGS

Pro hromadné nastavování paměťových registrů slouží funkce. Platí pro ni totéž jako pro funkci 0x06. Adresní prostor je následující:

Start: 0x00 - 0xFF – pro flash
0x100 - 0x101 – pro analogové výstupy
0x110 - 0x130 – pro čítače
Number:0x01 - 0x08

Tato funkce není zatím plně podporována. Doporučujeme používat místo ní vícenásobné volání funkce 0x06 (FORCE_SINGLE_REG).

0x1E – READ_ALL

Tato nová funkce byla do protokolu zapracována pro usnadnění ovládaní celého SEPu. Dvojice dotaz/odpověď umožňuje v jednom komunikačním cyklu přečíst a nastavit všechny vstupy-výstupy. Tvar dotazu i odpovědi je poněkud odlišný od standardu proto jej nyní podrobněji popíšeme:

|Adresa/8 |Funkce/8 |Bin.Out/8 |An.Out1/16 |An.Out2/16 |Rez./8 |CRC/16 |

V dotazu, jak je zřejmé, jsou obsaženy stavy binárních a analogových výstupů. Bináry jsou prostá bitová maska, která se po korektním příjmu překopíruje na výstupy SEPu. Analogové hodnoty jsou nejprve přepočteny podle mezí z paměti flash a po té nastaveny na skutečné výstupy.

|Addr/8|Funkce/8|Count/8|Bin.Out/8|Bin.In/8|An.In/9x16|An.Out/2x16|CRC/16|

V odpovědi jsou aktuální vstupy a výstupy z okamžiku čtení ze SEPu. V analogových vstupech (vstup 0x08) je obsažena také teplota čipu AD převodníku. Jelikož ten má vlastní oteplení zanedbatelné, lze tento údaj použít jako teplotu okolí. Tento údaj není přepočítávaný, neboť jednotka není určena k měření teploty – je na nadřízeném systému jak s touto hodnotou naloží.

3. Implementace v Morse

Jednotky SEP mohou být uspořádány různými způsoby:

  1. Spojení dvou SEPů rádiovou linkou. Stavy vstupů Dinp 0-7 a Ainp 0-1 se přenáší na výstupy Dout 0-7 a Aout 0-1 protější stanice.

  2. Spojení většího počtu SEPů s řídicím centrem. SEPy jsou v postavení Slave a stavy jejich vstupů Dinp 0-7 a Ainp 0-7 se přenáší do centra, z centra jsou ovládány výstupy Dout 0-7 a Aout 0-1.

  3. Spojení 1-3 SEPů připojených linkou RS 232 ke společnému MR25 s řídicím centrem. Funkce jako v případě 2.

Protokol SEP využívá pro komunikaci CU s PLC SEP funkce:

04

– pro čtení stavu čítačů

1E

– pro zápis a čtení z binárních a analogových vstupů a výstupů

Výsledný záznam o stavu SEPu je udržován v paměti CU. Dojde-li ke změně tohoto záznamu, která je větší než jsou nastavené limity, je vyslán do protistanice nebo na centrálu paket SEP, který obsahuje aktuální stav SEPu.

V případě spojení dvou SEPů (výše uvedené schema 1) je tento stav přenesen na protější SEP.

V případě centrály (schema 2) je paket SEP uložen do paměti cache v centrální CU, kde čeká na pravidelný dotaz od Master PLC, které pracuje v protokolu Modbus. Povely z centra jsou odesílány jako příkazy Modbus do CU s protokolem SEP. Odtud jsou pak funkcemi 04 a 1E předávány do PLC SEP.

3.1. Funkce GROUP

Tato funkce umožňuje komunikaci jednoho SEPu s několika různými protistanicemi. Digitální a analogové vstupy jsou rozděleny do 8 skupin (groups):

Skupina:   obsahuje tyto kanály:
  No        Din  Dout  Ain  Aout
  0         0    0     0    0
  1         1    1     1    1
  2         2    2     2
  3         3    3     3
  4         4    4     4
  5         5    5     5
  6         6    6     6
  7         7    7     7

Každá skupina má definovanou vlastní cílovou adresu v menu „(g)roup parameters„. Tyto adresy se smí vzájemně lišit jen v posledním byte. Každá skupina má také přiřazenu svoji protější skupinu. Adresy a skupiny na obou koncích rádiové linky musí být definovány recipročně, viz příklad konfigurace.

Pro každou skupinu je také individuálně definován práh „ani“ pro analogové vstupy a „cnt“ pro čítače. Položky (t)hr a (c)thr v menu parametrů SEP se v Group modu nepoužívají.

3.2. Příklady komunikace

Příklady komunikace jsou uvedeny v samostatném článku Protokol SEP pro MORSE – příklady.

Zde je pouze příklad paketu SEP doplněný zprávou Debug při parametru „(D)ebug level:1„:

Monitoring: source 690F0002|5.
07:05:11.532  INPUTS CHANGED. SENT TO 690F0001
state: di 007F do 0002 anai0 0066 anai1 0057 anai2 0049 anai3 0057 anai4 
005C anai5 0057 anai6 0049 anai7 0057 ao0 0000 ao1 000C
07:05:11.532|                 |690F0001 690F0002|S01I   OUT   58| 89 0user 
027F 0066 0057 0049 0057 005C 0057 0049 0057 0045 0000 000C 0000 004C 0000 
0004 0000 0000 0000 0000 0000 0000 0000 0000 0000 0019 0000 0000 8D66

Zpráva Debug obsahuje stavy Digital input, Digital output, Analog input, Analog output.

Obsah paketu SEP:

02

– digital output

7F

– digital input

0066 0057 0049 0057 005C 0057 0049 0057 – analog input 0 až 7

0045

– teplota čipu

0000 000C

– analog output 0 a 1

0000 004C 0000 0004 0000 0000 0000 0000 0000 0000 0000 0000 0000 0019 0000

0000

– stavy čítačů 0 až 7, stav čítače 0 je 0000 004C

8D66

– CRC

4. Konfigurační parametry

SEP parameters:
p(a)rtner:690F0001h  t(i)me:60s  (p)oll:20*10 ms
net dead timeo(u)t:120s
analog (t)hr:250*10  (f)ilter:0
(c)ounter thr:2  (m)ask:FFh
init (d)igi outs value:0
i(n)it ana outs mode:all low value (0/4mA)
(N)egate digi outs mask:0h
(e)rr:SILENCE  (v)er:SEP 1.03 (old - before 11.2001)
(G)roup mode:OFF
(g)roup params
c(o)mpatibilty:OFF
for(M)at:SEP  (s)end counters:OFF
(A)out:4mA - 20mA  g(l)ue to resp:OFF
(D)ebug level:0

(T)est menu
(P)roduction
(o)ld menu (sw < 5.94)
(q)uit
>>
[Poznámka]Poznámka

Parametry musí být vyplněny, v žádném nesmí zůstat záznam „???“

p(a)rtner:
690F0001FFh
  • – adresa protistanice (v režimu SEP-SEP nebo SEP-ADIO modul)

  • – nebo adresa řídicího centra (režim více stanic SEP slave v síti)

  • – nebo libovolná nenulová adresa, která není obsažena v připojené síti, např. 00000001 pro testovací účely (ovládání z (T)est menu )

  • – v (G)roup mode jsou pro pro vytvoření adresy použity 3 horní byte parametru p(a)rtner

t(i)me:60s
  • – po tomto čase dojde k přenosu do centra bez ohledu na změny měřených hodnot nebo na nastavení prahové úrovně

  • – pro t(i)me:0s se tento přenos neprovádí

(p)oll:20*10ms

= 200ms
interval měření a přesunu hodnot mezi SEP a MR25 (MR400), min.čas je 100 ms

net dead timeo(u)t:120s

Pokud po tento čas neproběhne žádná komunikace, nastaví se digitální a analogové výstupy na hodnoty „init“ podle parametrů (d) a (n). Při další komunikaci jsou nahrazeny aktuálními hodnotami.

analog (t)hr:
250*10

= 2500
volitelné 0*10255*10
práh citlivosti analogových vstupů pro vyvolání přenosu zprávy do řídicího centra, zadává se ve stejných jednotkách, v jakých se měří, to je 10 až 2550 µA pro rozsah 0–20 000 µA
0 – funkce vyřazena, vysílá se po každé změně

(f)ilter:3

doporučené hodnoty 1 (slabá filtrace) až 10 (silná filtrace) filtr (dolní propust) pro omezení rušení rychlými změnami na analogových vstupech
0 – filtrace vyřazena

(c)ounter thr:1

práh citlivosti čítačů pro vyvolání přenosu do centra, počet pulzů
0 – práh vyřazen, vysílá se po každé změně

(m)ask:FFh

binární vstupy, jejichž změny mají být přenášeny, označíme bitem masky 00-FF. Neoznačený vstup hlásí stálou úroveň L, čítací funkce je zachována včetně funkce (c)thr

init (d)igi outs value:0

Výchozí hodnoty digitálních výstupů. Jsou použity i při výpadku komunikace podle „net dead timeo(u)t:“.

i(n)it ana outs mode:all low value (0/4mA)

Hodnoty analogových výstupů po startu a při výpadku komunikace. Volitelné stavy:
net dead timeo(u)t:
net dead timeo(u)t:

(N)egate digi outs mask:0h

Digitální výstupy vybrané maskou jsou negovány.

(e)rr:SILENCE

typ chybového hlášení při poruše SEPu a dotazu nadřízeného systému:

  • (s) SILENCE – žádná odpověď

  • (a) ASCII – ASCII zpráva „sep is dead“

  • (m) NO – odeslán poslední známý stav SEPu

(v)er:SEP 1.03

Vybereme verzi firmware připojeného SEPu.

  • (a) SEP 1.03 (old – before 11.2001) = z 11/2001 a starší

  • (b) SEP 1.10 (new)

(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
Group processing:

(c)enter:OFF
local   threshold |      remote
group   tai  cnt  | address  group 
------------------+---------------
 (0)   100  010   |   05h      1
 (1)   050  001   |   06h      0
 (2)   000  000   |   00h      0
 (3)   000  000   |   00h      0
 (4)   000  000   |   00h      0
 (5)   000  000   |   00h      0
 (6)   000  000   |   00h      0
 (7)   000  000   |   00h      0
(q)uit
>>
(c)enter
  • (o)n – kopie každé zprávy je odesílána také na adresu p(a)rtner

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

(0)

Pro skupiny (0) až (7) se jednotlivě nastavují parametry:

>>0
Group processing:
(t)hreshold:100*10
(c)ounter threshold:10
remote (a)ddress:05
remote (g)roup:1
(q)uit
>>
(t)hreshold:100

– práh citlivosti analogových vstupů pro vyvolání přenosu

(c)ounter threshold:010

– přírustek hodnoty čítače pro vyvolání přenosu

remote (a)ddress:05h

– dolní byte adresy protistanice, 3 horní byte se berou z parametru p(a)rtner, adresa 00h vyřazuje skupinu z činnosti

remote (g)roup:1

– číslo skupiny v protistanici

c(o)mpatibility:OFF
  • (0) OFF – normální nastavení

  • (1) BVAK – speciální zákaznický režim: parametr p(a)rtner rozdělen na dvě poloviny, tím jsou definovány 2 adresy center, kam jsou posílány zprávy, používá se 16 bitová maska v SIe

    na začátku paketu jsou přidány 2 wordy dat ze zákaznické aplikace

for(M)at:SEP
  • (s) SEP – formát SEP

  • (m) MTF – Morse Technology Format

  • (b) SEP+MTF – vysílá ve formátu SEP, přijímá s jistým omezením oba formáty

(s)end counters:OFF

– pouze pro MTF

  • on – paket MTF obsahuje také stavy čítačů

  • off – paket MTF neobsahuje stavy čítačů

(A)out:4mA – 20mA

Rozsah analogového vstupu a výstupu (pouze pro MTF)
(4) 4mA – 20mA
(0) 0mA – 20mA

g(l)ue to resp:OFF

Připojí obsah cache k transparentní odpovědi.

(D)ebug level:1
  • 0 – zpráva Debug není generována

  • 1 – zpráva Debug, která obsahuje stavy I/O, je odesílána na adresu podle menu „ise1

(T)est menu

– používá se k testovacím účelům

Test:
Bin(O)ut  (A)n out  (G)et values (C)ounters 
(q)uit
>>
Bin(O)ut (A)n out

vložení hodnot binárních a analogových výstupů

(G)et values
  • – současné čtení všech sledovaných vstupů (an.inp: 08 obsahuje teplotu čipu, an.out: 00, 01 jsou analogové vstupy sledující hodnoty An.out 0,1)

  • – zobrazeny jsou poslední odeslané hodnoty, nikoli aktuální stav

>>
output: 0x00
input:  0x00
an.inp: 00 | 0000
an.inp: 01 | 0000
an.inp: 02 | 0000
an.inp: 03 | 0000
an.inp: 04 | 0000
an.inp: 05 | 0000
an.inp: 06 | 0000
an.inp: 07 | 0000
an.inp: 08 | 0000
an.out: 00 | 0000
an.out: 01 | 0000
>>
(C)ounters
  • – současné čtení všech čítačů (počty vzestupných hran na binárních vstupech)

  • – zobrazeny jsou poslední odeslané hodnoty, nikoli aktuální stav

counter: 00 | 0
counter: 01 | 0
counter: 02 | 0
counter: 03 | 0
counter: 04 | 0
counter: 05 | 0
counter: 06 | 0
counter: 07 | 0
>>
(P)roduction

– jen pro servisní účely

5. Historie

Aktualizováno pro fw 10.0.10.0

©  2024 RACOM s.r.o. All Rights Reserved.