Format på telegrammen till TA7Drv

Alla telegramkoder nedan anges i hexadecimal form samt Q är frågan och A är svaret.

Format ”Talme-LCU”

Telegram som INTE börjar med FF samt är minst 5 byte långa och slutar med FF anses vara enligt format ”Talme-LCU” och skickas vidare till LCU med vissa undantag:
* Om enhet inte är definierad i TA7Drv.dat eller i LCU fil med tillhörande PLB-dokument.
* Om enheten är offline skickas endast 5% av telegrammen till LCU.
I dessa undantagsfall returnerar TA7Drv själv ett Offline-telegram till avsändaren.

Format ”Talme-special”

Telegrammen är av ett par typer för larm och för variabler och styrning av HIPCL:
Alla börjar med Q = FF ... och är interna telegram till TA7Drv.

Först vid läsning av larm kan de eventuellt återställas. Detta för att inga larm skall falla bort.
Vid start av TA7Drv läses även senaste larmstatus in från fil för att minsta falsklarm vid omstart.

OFFLINE FÖR DUC, PLB OCH SLB

Q = FF 00 Hämta on/offline status för 200 ducar, 200 PLB och 16 SLB.

A = (52 byte, 1 bit per enhet) Byte0-Bit7=Duc1 … Byte24-Bit0=Duc200, Byte25-Bit7=Plb1 ...
Byte49-Bit0=Plb200, Byte50-Bit7=Slb1 ... Byte51-Bit0=Slb16. Bitarna är 1 vid OFFLINE.

DUC LARM (eventuellt under PLB för TA6711)

Q = FF 01                            Hämta larmstatus för duc 1 till 25.
A = (1 byte OFFLINE + 1 byte MESS+ 8 byte LARMTAB) * 25 ducar
Q = FF 02                            Hämta larmstatus för duc 26 till 50.
Q = FF 03                            Hämta larmstatus för duc 51 till 75.
Q = FF 04                            Hämta larmstatus för duc 76 till 100.
Q = FF 05                            Hämta larmstatus för duc 101 till 125.
Q = FF 06                            Hämta larmstatus för duc 126 till 150.
Q = FF 07                            Hämta larmstatus för duc 151 till 175.
Q = FF 08                            Hämta larmstatus för duc 176 till 200.

A = (Larmstatus samma som ovan) * 25 ducar

Formatet på OFFLINE för ducarna är enkelt uttryckt 0 vid online och skilt från 0 vid offline. Mer i detalj så sätts bit 0 när LCU rapporterer att ducen är offline, bit 1 sätts efter ett antal timeouter, bit 2 sätts om ducen ej är definierad för LCU:n, bit 3 sätts om TA7Drv ej kan öppna porten till LCU:n, och slutligen sätts alla bitar 0-3 vid initeringen.

Formatet på MESS är en byte som är 00 vid OK och har följande värde för de vanligaste felen:
01 = Kallstart, 02 = Mipcl hinner inte runt, 04 = Varmstart, 0E = Varmstart 114, 0F = Varmstart 115, 14 = PROM checksumma fel, 15 = RAM minnes fel, 1C = Autotest är OK.

LARMTAB innehåller en bit per larm i följande ordning IN 1-16, LL1-16, HL1-16 och FI1-16 kodas i ordning ”första byten bit 7 till sista byten bit 0”.

LARMHANTERING för LCU

Q = FF 09                            Indikerar om LCU:n är On- eller Offline.
A = (1 byte ) Svaret är 0 om LCU:n är Online och 1 om den är Offline.

VARIABLER I DHC, DVS TCL, LV, NUM OCH PV

Telegrammen använder samma format på data som övriga TALME.
Dvs vi måste använda NovotekSignalCond.dll.

Läsning:

Q = FF 0A <Var> <Index.Hi> <Index.Lo>
A = <Var> <Index.Hi> <Index.Lo> <Data>
                <Var> = TCL=00, LV=01, NUM=02 eller PV=03
                <Index.Hi> * 256 + <Index.Lo> är variabelns index.
                <data> Logisk: 1 byte enligt Talme
                <data> Heltal: 2 byte enligt Talme (min- och maxbegränsad)
                <data> Flyttal: 3 byte enligt Talme (min- och maxbegränsad)
                <data> Oinitierad: ingen data (samma vid fel index)

Skrivning:

Q = FF 0A <Var> <Index.Hi> <Index.Lo> <Data>
                <Data> enligt ovan, dock för logiska följer den TALME:s kod 1-5(=Till, Från, Auto, 1, 0).
A = <Kvittens>  00 Vid fel index, 01 vid OK!

SLB ZONREGULATOR LARM

Q=FF 0B <SLB-nr 1-16>
A=0B <SLB-nr 1-16> <SLB-Offline> <SLB-MESS> <REG-larm 120 byte>
                REG-larm[0].Bit7-4=REG1.IN1,LL1,HL1,FI1 ... REG-larm[119].Bit3-0= REG240.IN1,LL1,HL1,FI1.

PLB ZONREGULATOR LARM

Q=FF 0C <PLB-nr 1-200> 01
A=0C <PLB-nr 1-200> 01 <PLB-Offline> <PLB-MESS> <REG1-120-larm 240 byte>
                REG-larm{2-byte}Bit 15-0 = {IN1-5,LL1-3,HL1-3,FI1-4,Reserv}

Q=FF 0C <PLB-nr 1-200> 02
A=0C <PLB-nr 1-200> 02 <REG121-240-larm 240 byte>
                REG-larm{2-byte}Bit 15-0 = {IN1-5,LL1-3,HL1-3,FI1-4,Reserv}

HIPCL HANTERING

Telegrammen börjar med <FF> och avslutas med <00>, följande finns:

”<FF>HIPCL <kommando><00>”, utför HIPCL kommando se HIPCL (Huvud IPCL)IDH_HIPCL
Svar fås inte här utan bara följande medelanden:
”!SYNTAX”, något syntaxfel i kommandot.
”!BUSY”, HIPCL håller på att utföra förra kommandot och är inte tillgängligt ännu.
”!OK”, kommandot skickades vidare för bearbetning av HIPCL threaden.

”<FF>[TCL,LV,NUM,PV]<X>[=<data>]<00>”, läser eller skriver i HIPCL:s variabler.
<X> är index i tabellen, och om man lägger till =<data> skrivs <data> till variablen annars läses variabeln.
Vid logiska variabler kan <data>, förutom ”0” och ”1”, även vara ”T”, ”F” och ”A” för forcering.
<data> kan, vid både läsning och skrivning, även vara ”*”, vilket betyder oinitierad variabel. T.ex:
”<FF>LV105<00>”  Läser LV(105), svaret kan t.ex. vara ”0 AUTO”
”<FF>NUM7=-123<00>”  Skriver -123 till NUM(7), svaret är ”!OK” om inget fel inträffat.
”<FF>PV2000=*<00>”  Sätter PV(2000) till oinitierat tillstånd.

KOMMUNIKATIONSSTATISTIK

Hanterar kommunikationsstatistik från intern räknare. Ställda frågor, korrekta svar, timout och felande svarstelegram räknas per DUC.

Q = FF 0D <kod>
A = <data> eller tomt paket vid fel.

Q <kod>   A<data>
00              1-byte = 00, nollställer statestikräknare.
01              3200-byte, hela DucStat dvs 200 ducar á 4 DWORD för Q, A, Timeout, Error.
02              3200-byte, hela PlbStat dvs 200 PLB á 4 DWORD för Q, A, Timeout, Error
03              256-byte, hela SlbStat dvs 16 SLB á 4 DWORD för Q, A, Timeout, Error.
04              6-byte, tidstämpling för senaste nollställning YYMMDDHHMMSS.
05              92-byte, 10-i-topp listan = 2 st 6-byte tidstämpling start / slut
                               + 10 st * 8-byte {Ductyp{00,48,40} + Unitnr{1-200/16} + Q+T+E{Lo,Hi}}}
1x              160 byte, en 1/16 del av DucStat (används om 01-telegram blir för stort).
2x              160 byte, en 1/16 del av PlbStat (används om 02-telegram blir för stort).