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

.TSK 3
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);
25 FOR I := 1 TO mx
26 V$(I) := ""; NW(I) := 0;
27 NEXT I;
48 STOP 4; RUN 4;
40 TSKPRP:=3
50 TSKTTY:=1
55 TSKPRIO:=15
56 SYSDIAG:=0;
58 ON ERROR GOTO 7000
60 TTY1.BD=19200
61 -- TTY1.PARCHK = 0
62 TTY1.SSB = 0
70 TTY1.NOEC=1
72 TTY1.NCON=1
74 TTY1.MOD=0
76 TTY1.NWCR=1
78 TTY1.NFCR=1
79 TTY1.NOX=1;
80 INITTY1
90 BEGIN_INKEY
100 cm$ := "" ;C$ := ""; ax$ := "";fn$ := "";CR$ := "";WT:=0
200 ST := 1; fc := 0;
300 INKEY A$
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$)
450 C$ := A$[RI..RI]
500 ON ST GOSUB 600,800,1000,1200,1300,950,3000
540 cm$ := cm$ + C$
550 NEXT RI
560 GOTO 300
600 IF C$ = CHR$(2) THEN ST:= 2; ax$:="" ELSE ST:= 1
610 IF C$ = CHR$(24) THEN ST:=7;
620 cm$ := ""
700 RETURN
800 ax$ := ax$ + C$
820 IF LEN(ax$) < 2 THEN RETURN;
830 IF ax$ = ad$ THEN fn$:= "";ST := 3 ELSE ST := 1;
900 RETURN
950 RT$ := C$; ST := 4;
960 RETURN
1000 fn$ := fn$ + C$
1020 IF LEN(fn$) < 2 THEN RETURN
1025 fc := VAL(fn$); ST := 6;
1030 fn$ := STR$(fc+50);
1040 RETURN
1200 IF (C$ = CHR$(3)) OR (C$ = CHR$(23)) THEN ST := 5; CR$ := ""
1210 RETURN
1300 CR$ := CR$ + C$ ; C$ := "";C4$ := "";
1320 IF LEN(CR$) = 6 THEN GOTO 1400;
1340 RETURN
1400 C1 := VAL(CR$[1..3]); C2 := VAL(CR$[4..6]);C1$ := "";
1410 C1$ := CHR$(C1) + CHR$(C2);
1415 C4$ := CRC$(4,cm$)
1420 IF C1$ = C4$ THEN GOTO 1500 ELSE ST := 1;
1430 RETURN
1500 ON fc GOSUB 2100,2200,2300,2400,2500,2600,2700,2800
1505 ST := 1;cm$ := ""
1510 RETURN
2100 ET := INSTR(7,cm$,";");
2110 FOR I := 1 TO mx
2115 IF N$(I) <> "" THEN NW(I) := 1;
2117 NEXT I;
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
2200 S := 7
2210 FM := FREE
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];
2270 S := ET+1;
2280 IF cm$[S..S] = CHR$(3) THEN GOTO 2290 ELSE GOTO 2210
2290 SB(CHR$(6),3,ad$,fn$,RT$); RETURN;
2300 E := INSTR(cm$,";")
2340 ix := VAL(cm$[7..E-1]);
2350 N$(ix) := ""
2360 ET := INSTR(E+1,cm$,';')
2370 cf$ := cm$[E+1..ET-1]
2380 SB(CHR$(6),3,ad$,fn$,RT$)
2390 RETURN
2400 cn := 1;
2402 SB$ := "" ;VL$ := ""
2405 FOR I:= cn TO mx
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
2420 NEXT I
2430 SB(SB$,3,ad$,fn$,RT$)
2440 RETURN
2445 SB(SB$,23,ad$,fn$,RT$);RETURN;
2500 cn := VAL(cm$[7..9]); GOTO 2402
2600 E := INSTR(cm$,"=")
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)));
2667 NW(ix) := 1;
2670 RETURN
2700 SB(CHR$(21),3,ad$,fn$,RT$)
2701 RETURN
2800 FOR I:= 1 TO mx
2810 N$(I) := ""; V$(I) := ""; NW(I) := 0;
2820 NEXT I
2825 cf$ := ""
2830 SB(CHR$(6),3,ad$,fn$,RT$)
2840 RETURN
3000 fn$ := fn$ + C$
3010 IF LEN(fn$) = 5 THEN GOTO 3100
3020 RETURN
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
7100 RESUME 100
8100 RESUME 100;
8200 er := 1;
8300 VL$ := "???";
8400 RESUME 2410;
9999 END

 

.TSK 4
10 ON ERROR GOTO 200;
15 TSKFRM$ :=:(S:2) -- vystupny format - presnost floatingovych hodnot
20 VL$ := ""
30 FOR I:= 1 TO [3]mx
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;
60 NEXT I
65 WADO(6,20); -- watch dog pre task 4
70 WAIT DURING 5; -- perioda zberu hodnot
80 GOTO 20
200 VL$ := "???";
210 RESUME 50;
500 END

 

.TSK 253
5 EA := EVADR
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
200 END
EXIT

 

TSK 254
5555 RUN 3,40
EXIT

\

.PROC SB
ENTRY (IN:B$,Ex,A$,F$,R$)
1050 BF$:=CHR$(2)+A$+F$+R$+B$+CHR$(Ex)
1060 CR$:=CRC$(4,BF$);
1070 BF$:=BF$+CR$
1076 FOR I:=1 TO 15 ; PRINT CHR$(255); NEXT I
1100 PRINT BF$
1200 WAIT DURING 1
1500 CLITTY1
7000 ENDPROC
EXIT

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.

Súvisiace stránky:

Napíšte komentár