Parametrar och kördata
Krav-1001: Antalet starter skall räknas
Krav-1002: Drifttid i antal timmar skall räknas
Krav-1003: Drifttid i antal timmar för varje enskilt rör skall räknas
Krav-1005: Det skall gå att nollställa all driftinformation, så kallad "Factory default"
Användaren kan via terminalen justera parametrar och kördata. Dessa sparas i PICen EEPROM. Minnesytan är indela i flera sektionen. Användaren kan med kommandona
get och
set ändra valfritt innehåll.
System Init ytan
Systemet hanterar på egen hand den första ytan. AA och 55 som lagras här används som en markör för att EEminnet har initierats.
Under uppstart kollas AA, 55 och att EE format ver inte är 0x00. Stämmer inte detta data kommer programmet under uppstart att ladda EEminnet med standardvärden. Så kallad FD (Factory Default).
Kördata
Kördata uppdateras löpande av mjukvara själv utan inblandning från användaren. Eftersom det kan hända att kördatat uppdateras precis när strömmen stängs av och data då kanske blir korrupt finns där två ytor. Yta #0 är den som aktivt används. Yta #1 är en säkerhetskopia som uppdateras vid varje start.
Om kördata #0 har en giltig CRC16 så kopieras innehållet från yta #0 till yta #1 så en ny backup skapas vid varje start. Om CRC16 i kördata #0 inte överensstämmer med datainnehållet så kopieras innehåller från backupen i #1 till #0. Skulle mot förmodan även CRC16 för datainnehållet i #1 heller inte stämma så görs en återställning till standardvärden (Factory Default). På så sätt finns det alltid en uppsättning kördata som förstärkaren kan använda.
Kördatat består av tidräknare för drifttid av förstärkaren och för varje individuellt rör.
Kördatat räknar också antalet starter. Det används sedan som ett ID i loggen.
Man kan tänka sig att man byter ett rör till ett helt nytt och då vill nollställa timräknaren för just det röret. Då gör man det med kommandot
set till kördatat i yta #0. Men efter det stämmer inte CRC16 längre så när man är klar med ändringarna i kördata använder man kommandot
crc0 för att skriva in en ny giltigt CRC16.
Skriv aldrig till kördata på yta #1. Det finns inga skäl till det. Systemet säkerhetskopierar dina ändringar vi nästa start eller Reset. Så vill du direkt få en backupkopia till yta #1 kan du köra kommandot
reset.
Användarparametrar
Ytan med användarparametrar kan man se som två olika block. Den första ytan innehåller textsträngar, ett för varje rör där rörets beteckning lagras. Denna information kommer ut när man listar förstärkarens information, se kommandot
info. Skulle man byta rör till en ekvivalent typ men med annan beteckning så kan man skriva in den nya beteckningen till denna yta med kommandot set.
Den sista ytan i EEminnen håller användarparametrar.
Auto off in hours
Antal timmar innan förstärkaren automatiskt och ovillkorligen stängs av.
12V Offset
Här skall anges den spänning som PICen ligger under förstärkarens GND. Talet anges som Volt * 10 * 4
Exempel:
Du mäter upp att PICens GND liger -12.3V under förstärkarens GND. Värdet som skall matas in här blir då
12.3 * 10 * 4 = 492 = 0x1EC
Temp Offset
Se ”
Mäta interntemperaturen” för hur man räknar ut denna
Temp Fraction
Se ”
Mäta interntemperaturen” för hur man räknar ut denna
H11 Soft min och max Volt
Under mjukstarten av högspänningen så kollas att spänningen är rimlig innan full effekt slås på. Dessa parametrar begränsar det tillåtna intervallet som spänningen på H11 (se schemat) får hålla sig inom. Om spänningen ligger utanför kommer förstärkaren gå i felläge.
Värdet anges som hela volt i intervallet 0x00 – 0xFF = 0V – 255V
H21 Soft min och max Volt
Under mjukstarten av högspänningen så kollas att spänningen är rimlig innan full effekt slås på. Dessa parametrar begränsar det tillåtna intervallet som spänningen på H21 (se schemat) får hålla sig inom. Om spänningen ligger utanför kommer förstärkaren gå i felläge.
Värdet anges som hela volt i intervallet 0x00 – 0xFF = 0V – 255V
H11 Full min och max Volt
När högspänningen slås på med full effekt så väntar förstärkaren några sekunder och sedan mäter och kontrollerar att spänningen på H11 (se schemat) ligger inom det angivna intervallet. Om inte går förstärkaren i felläge.
Värdet anges i hela volt men med MSB = 0x01 vilket betyder hela volt intervallet 0x00 – 0xFF = 256V – 511V.
Exempel:
Om gränsvärdet skall vara 297V blir värdet som skall matas in
H12 Full min och max Volt
När högspänningen slås på med full effekt så väntar förstärkaren några sekunder och sedan mäter och kontrollerar att spänningen på H12 (se schemat) ligger inom det angivna intervallet. Om inte går förstärkaren i felläge.
Värdet anges i hela volt men med MSB = 0x01 vilket betyder hela volt intervallet 0x00 – 0xFF = 256V – 511V.
Exempel:
Om gränsvärdet skall vara 267V blir värdet som skall matas in
H21 Full min och max Volt
När högspänningen slås på med full effekt så väntar förstärkaren några sekunder och sedan mäter och kontrollerar att spänningen på H21 (se schemat) ligger inom det angivna intervallet. Om inte går förstärkaren i felläge.
Värdet anges som hela volt i intervallet 0x00 – 0xFF = 0V – 255V
H22 Full min och max Volt
När högspänningen slås på med full effekt så väntar förstärkaren några sekunder och sedan mäter och kontrollerar att spänningen på H22 (se schemat) ligger inom det angivna intervallet. Om inte går förstärkaren i felläge.
Värdet anges som hela volt i intervallet 0x00 – 0xFF = 0V – 255V
Timtid och dess format
EEminnet för timräkningen uppdateras varje kvart. Dataformatet är sådant att timtal är det 14 högsta bitarna. Bit 1 betyder halvtimmar och Bit 0 betyder kvartar.
När sedan timmar rapporteras i loggposter så kommer bara hela timmar med. Det beror på att FLASHminnet bara är 14bitar brett.
Förstärkaren kan slås av när som helst. För att inte den tiden som har förlupit men inte nådde en hel kvart skall gå förlorad så räknas alla tidräknare upp med en kvar vid varannan start. För att förvissa mig om att denna princip verkligen skulle fungera skrev jag ett Delphi Hack som simulerar tidberäkningen
Det verkar fungera som jag tänkt. Jag låter testet utför tusen simulerade start/stopp och längden på drifttiden är satt till en slumptal mellan 1 - 300 minuter
På sista raden ser man att den summerade riktiga tiden är
2487h.
Om man inte kompenserar och bara trunc:ar bort tiden så skulle räknare i förstärkaren visa
2359h.
Med kompenseringen så visar förstärkaren istället
2484h.
Metoden får anses fungerar bra för ändamålet!
Ingent skydd finns för felinmatat EEdata
Man ska vet vad och hur man ska göra för att ändra innehållet manuellt i EEminnet då skyddsmekanismer saknas. Det man skriver till EEminnet kommer programmet läsa och tolka utan att ifrågasätta.
Egna minnesnoteringa får bli:
- Glöm inte mata in körtid i EEminnet som inkluderar halvtimmar och kvartar.
- Glöm inte skapa en ny CRC16 med kommandot crc0 om du ändrat i kördata.
- Glöm inte fylla ut minnescellerna efter rörbeteckningen med 0x20 (space) och sista minnespositionen skall vara 0x00 (så kalla null-terminator).