Protokol L&G PRV Fugga
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
Komunikácia podporuje čítanie/zápis údajov do zariadení Landis&Gyr PRV 1.xx a 2.xx.
Konfigurácia komunikačnej linky
- Kategória komunikačnej linky: Serial.
- Prenosová rýchlosť a prenosové parametre podľa nastavenia parametrov komunikačného programu v PRV.
Konfigurácia komunikačnej stanice
- Komunikačný protokol: L&G FUGGA PRV.
- Adresa stanice je v rozsahu 0 až 255 a zadáva sa v decimálnom tvare podľa
nastavenia čísla stanice v komunikačnom programe v PRV (viď ďalej).
Parametre protokolu stanice
Môžu byť zadané nasledovné parametre protokolu stanice:
Tab. č. 2
Kľúčové slovo |
Plný názov |
Popis |
Jednotka |
Náhradná hodnota |
MR |
Max Retry |
Počet opakovaní výzvy v prípade chyby komunikácie. |
- |
3 |
MWR |
Max Wait Retry |
Počet opakovaní čítania odpovede do jej skompletovania. |
- |
14 |
RT |
Retry Timeout |
Oneskorenie medzi opakovaním výzvy v prípade chyby komunikácie. |
s.ms |
1.000 s |
WT |
Wait Timeout |
Oneskorenie medzi čítaniami odpovede do jej skompletovania. |
ms |
300 milisek. |
WFT |
Wait First Timeout |
Prvé čakanie po odvysielani výzvy pred čítaním odpovede. |
ms |
1200 milisek. |
RD |
Request Delay |
Oneskorenie pred vysielaním výzvy. |
ms |
1000 milisek. |
MBS |
Maximum Buffer Size |
Maximálna veľkosť výzvy v bytoch. |
byte |
60 |
DOFF |
Date Offset |
Korekcia posunu dátumu v interpetácií PRV a systému D2000. Systém
D2000 interpretuje dátum ako počet dní od 1-1-1972. Pre testované PRV
1.64 (SW ver. 4.04) bolo nutné nastaviť hodnotu 20089, pretože PRV implementuje dátum od 1-1-1917. |
dni |
4806 |
String s parametrami protokolu sa zapisuje podľa pravidiel:
Kľúčové_slovo=hodnota;Kľúčové_slovo=hodnota; ...
Príklad:
MR=4;RD=500;
Ak nebolo v inicializačnom stringu nájdené kľúčové slovo s platnou
hodnotou, použije sa náhradná hodnota podľa tabuľky.
Konfigurácia meraných bodov
Možné typy bodov: AI, AO, CI, CO, DI, DO, TIR, TOR, TIA, TOA.
Konfigurácia vyžaduje adresu v textovom tvare. Oproti implementácií v
D2000 ver.3.xx nie je rozsah typov nijako obmedzený. Formu zápisu niektorých typov znázorňuje tabuľka:
Typ v D2000 v.3.xx |
Zápis v D2000 v.4.x |
Príklad |
I/O |
$xxx.name |
$120.HW |
PLT |
PLTx.name |
PLT5.PAR1 |
ZON |
ZONx.name |
|
RGB |
RGBx.name |
|
VIP |
VIPx.name |
|
CVP |
CVPx.name |
|
@MGR |
@MGRx.name |
|
@MGG |
@MGGx.name |
|
@SEZ |
@SEZx.name |
|
@AI |
@AIx.name |
|
@AO |
@AOx.name |
|
@DI |
@DIx.name |
|
@DO |
@DOx.name |
|
@CI |
@CIx.name |
|
@PHON |
@PHONx.name |
|
@RING |
@RINGx.name |
|
TTY |
TTYx.name |
|
@PBUS |
@PBUSx.name |
|
@MBUS |
@MBUSx.name |
|
@OS |
@OSx.name |
|
@BLN |
@BLNx.name |
|
@BPS |
@BPSx.name |
|
TSK |
[tsknr]name |
[10]S2 |
SYS |
name |
DATE |
Protokol PRV (Fugga)
Formát správy:
<STX><ADRESA><FUNKCIA><SEQ><OBSAH SPRAVY><ETX/ETB><CRC>
STX - Start of text, znak 0x02
ADRESA - dvojčíslie v ASCII tvare - rozsah 01 - 99.
FUNKCIA - dvojčíslie v ASCII tvare - číslo funkcie. V odpovedi sa k číslu
funkcie pripočítava 50.
SEQ – poradové číslo správy - jeden bajt - hodnoty 0x41 – 0x5A
OBSAH SPRAVY - sprava v ASCII tvare - jednotlivé časti správy sú oddelené
znakom “;”.
ETX - koniec správy
ETB - koniec bloku
CRC - kontrolná suma CRC-CCITT Cyclic Redundancy Check according to IBM
- Smerom do PRV - 6 bajtov ASCII
- Smerom z PRV 2 bajty binárne
Potvrdenie:
ACK - O.K. - obsah správy znak ACK
NAK - chyba - obsah správy znak NAK
Funkcie:
Funkcia |
Číslo |
Obsah správy |
Odpoveď |
Config Check |
01 |
Config ID |
ACK/NAK |
New Point Def |
02 |
ID:NAME;0:ConfigId; |
ACK/NAK(memory) |
Delete Point |
03 |
ID;ConfigId; |
ACK |
Read All |
04 |
--- |
ID:VALUE;... |
ReadAllContinue |
05 |
INDEX |
ID:VALUE;... |
Set Output |
06 |
ID=Value; |
ACK |
Reset PRV |
07 |
--- |
ACK |
Clear Config |
08 |
--- |
ACK |
Riešenie sporných situácií
Na strane D2000:
1. PRV neodpovedá v stanovenom limite
2. Zlá kontrolná suma
Správa sa opakuje N-krát - všetky potrebné parametre sa nastavujú
parametrami protokolu stanice.
Na strane PRV:
Zlá kontrolná suma - PRV neodpovedá.
Zmeny komunikačného protokolu PRV (Fugga) ver 1.02
Určenie: Komunikácia s PRV1/PRV2 cez sériové linky a rádiomodem s
OnLine konfiguráciou prenášaných hodnôt.
Rozšírenie oproti ver. 1.01:
- implementované časové body
- optimalizácia komunikácie - prenášajú sa len zmeny hodnôt
Počet prenášaných bodov z jednej stanice je max. 255.
Parametre komunikácie nastavované na strane PRV:
Task 3:
Číslo komunikačného portu v PRV: premenná PRT <1..3>
Adresa stanice: Premenná AD$ - adresa sa skladá vždy z dvoch čísel napr. “01” - adresa 1.
Číslo komunikačného tasku - default 3. Ak ho treba zmeniť treba upraviť
tasky 254 a 253 - reštart po výpadku napájania a po WatchDog Error. Nutne
upraviť task 4 - odkazy na lokálne premenné tasku 3.
Číslo Watch Dogu - default je 7. Ak ho treba zmeniť treba upraviť task
253 a zadať nové číslo Watch Dogu vo volaní funkcie WADO na riadku 305.
Maximálna veľkosť vysielanej správy do PC - premenná BLK - nesmie byť viac ako 160.
Prenosová rýchlosť: Parameter TTYPRT.BD na riadku 60.
Číslo tasku pre zber hodnôt: Použije sa task číslo 4. Ak ho treba
zmeniť - musí sa upraviť číslo tasku na riadku 48 - štart tasku 4.
Task 4:
Parameter TSKFRM$ - určuje výstupný formát tasku. Definuje vlastne presnosť prenášaných floatingových čísel.
Parameter WAIT DURING 5 , na riadku 70 určuje periodu zberu hodnôt v sekundách.
Výpis taskov pre ver. 1.02
1 -- FUGGA PROTOCOL (C) IPESOFT 1997 V 1.02 |
5 ad$ := "21"; -- adresa stanice |
10 er := 1 ; cf$ ="";RT$ := "";mx:=100 |
15 sl := 2; bl = 60; cn := 1; wx := 5; |
20 DIM N$(mx); DIM V$(mx); DIM NW(mx); |
26 V$(I) := ""; NW(I) := 0; |
100 cm$ := "" ;C$ := ""; ax$ := "";fn$ := "";CR$ := "";WT:=0 |
305 WADO(7,60) ; -- 7 je cislo Watch Dogu |
310 IF A$="" THEN WT := WT + 1 ELSE WT:= 0; |
320 IF WT > wx THEN GOTO 100 |
330 IF WT > 0 THEN WAIT DURING 1; GOTO 300 |
400 FOR RI:= 1 TO LEN(A$) |
500 ON ST GOSUB 600,800,1000,1200,1300,950,3000 |
600 IF C$ = CHR$(2) THEN ST:= 2; ax$:="" ELSE ST:= 1 |
610 IF C$ = CHR$(24) THEN ST:=7; |
820 IF LEN(ax$) < 2 THEN RETURN; |
830 IF ax$ = ad$ THEN fn$:= "";ST := 3 ELSE ST := 1; |
1020 IF LEN(fn$) < 2 THEN RETURN |
1025 fc := VAL(fn$); ST := 6; |
1200 IF (C$ = CHR$(3)) OR (C$ = CHR$(23)) THEN ST := 5; CR$ := "" |
1300 CR$ := CR$ + C$ ; C$ := "";C4$ := ""; |
1320 IF LEN(CR$) = 6 THEN GOTO 1400; |
1400 C1 := VAL(CR$[1..3]); C2 := VAL(CR$[4..6]);C1$ := ""; |
1410 C1$ := CHR$(C1) + CHR$(C2); |
1420 IF C1$ = C4$ THEN GOTO 1500 ELSE ST := 1; |
1500 ON fc GOSUB 2100,2200,2300,2400,2500,2600,2700,2800 |
2100 ET := INSTR(7,cm$,";"); |
2115 IF N$(I) <> "" THEN NW(I) := 1; |
2120 IF cm$[7..ET-1] = cf$ THEN GOTO 2125 ELSE 2130 |
2125 SB(CHR$(6),3,ad$,fn$,RT$); RETURN |
2130 SB(CHR$(21),3,ad$,fn$,RT$); RETURN |
2220 IF FM < 1000 THEN SB(CHR$(21),3,ad$,fn$,RT$); RETURN |
2230 E := INSTR(S,cm$,":") |
2240 ix := VAL(cm$[S..E-1]); |
2245 IF ix > mx THEN SB(CHR$(21),3,ad$,fn$,RT$); RETURN; |
2250 ET := INSTR(E+1,cm$,";"); |
2255 IF ix = 0 THEN cf$ := cm$[E+1..ET-1]; GOTO 2270; |
2260 N$(ix) := cm$[E+1..ET-1]; |
2280 IF cm$[S..S] = CHR$(3) THEN GOTO 2290 ELSE GOTO 2210 |
2290 SB(CHR$(6),3,ad$,fn$,RT$); RETURN; |
2340 ix := VAL(cm$[7..E-1]); |
2360 ET := INSTR(E+1,cm$,';') |
2370 cf$ := cm$[E+1..ET-1] |
2380 SB(CHR$(6),3,ad$,fn$,RT$) |
2402 SB$ := "" ;VL$ := "" |
2407 IF NW(I) = 0 THEN GOTO 2420 |
2408 IF N$(I) = "" THEN GOTO 2420 |
2410 SB$:=SB$+STR$(I)+":"+V$(I)+";"; NW(I):=0; IF LEN(SB$)>bl THEN GOTO 2445 |
2430 SB(SB$,3,ad$,fn$,RT$) |
2445 SB(SB$,23,ad$,fn$,RT$);RETURN; |
2500 cn := VAL(cm$[7..9]); GOTO 2402 |
2640 ix := VAL(cm$[7..E-1]); |
2645 ET := INSTR(E+1,cm$,";"); |
2650 LVAL(N$(ix)) := VAL(cm$[E+1..ET-1]) |
2660 SB(CHR$(6),3,ad$,fn$,RT$) |
2665 V$(ix) := STR$(VAL(N$(ix))); |
2700 SB(CHR$(21),3,ad$,fn$,RT$) |
2810 N$(I) := ""; V$(I) := ""; NW(I) := 0; |
2830 SB(CHR$(6),3,ad$,fn$,RT$) |
3010 IF LEN(fn$) = 5 THEN GOTO 3100 |
3100 IF fn$ = "FUGGA" THEN GOTO 3200 |
3150 ST := 1; fn$ := ""; RETURN; |
3200 WADO(7,-1);SDTTY1;SYSDIAG := 1; STOP; |
7000 ON er GOTO 8100,8200 |
15 TSKFRM$ :=:(S:2) -- vystupny format - presnost floatingovych hodnot |
40 IF [3]N$(I) = "" THEN GOTO 60 ELSE VL$ := STR$(VAL([3]N$(I))); |
50 IF VL$ <> [3]V$(I) THEN [3]V$(I) := VL$; [3]NW(I) := 1; |
65 WADO(6,20); -- watch dog pre task 4 |
70 WAIT DURING 5; -- perioda zberu hodnot |
10 IF EA=$340.ADR AND $340.ERR = 20 AND $340.ER1=7 THEN GOTO 30 ELSE GOTO 100 |
20 ; -- 7 je cislo Watch Dogu, 3 je cislo komunikacneho tasku |
30 WADO(7,-1); STOP 3; RUN 3,40; GOTO 200 |
100 IF EA=$340.ADR AND $340.ERR = 20 AND $340.ER1=6 THEN GOTO 130 ELSE GOTO 200 |
130 WADO(6,-1); STOP 4; RUN 4; GOTO 200 |
\
ENTRY (IN:B$,Ex,A$,F$,R$) |
1050 BF$:=CHR$(2)+A$+F$+R$+B$+CHR$(Ex) |
1076 FOR I:=1 TO 15 ; PRINT CHR$(255); NEXT I |
Literatúra
-
Zmeny a úpravy
- Máj 2000 Prenesenie protokolu do D2000 ver. 4.10
Revízie dokumentu
- Ver. 1.0 – 9. máj 2000 – Vytvorenie tohto dokumentu.