• No results found

Här beskrivs de olika blocken i figur 6.1 på sidan 25 i mer detalj.

6.2.1 Datainsamling

Datainsamlingen består av två olika evighetsloopar, en för att mäta varvtal och en för analog mätdata. Dessa båda samarbetar genom att varvtalsloopen hela tiden skickar sitt senaste mätvärde till den analoga loopen via en kö. När den analoga loopen har samlat in en hel mätserie så sammanfogas den analoga mätdatan med alla varvtalsvärden som har mätts under insamlingen av den analoga mätserien. Denna data skickas sedan vidare till

6.2 Detaljer 27

Varvtal Analog

mätdata Sammanfoga

Utdata

Figur 6.2:Datainsamlingen innehåller två stycken evighetsloopar, en för varvtals- mätning och en för mätning av analoga signaler. Evighetsloopen som utför den ana- loga mätningen sammanfogar även varvtalsdatan med den analoga datan.

de övriga blocken. Om varvtalet är så lågt att inget nytt varvtal har mätts under insam- lingen av den analoga mätserien så kommer det senaste mätta varvtalet att användas. En schematisk figur för datainsamlingen visas i figur 6.2.

Varvtal

För att kunna genomföra varvtalsmätningar så krävs det att det finns en räknare tillgänglig för det. Enligt avsnitt 5 så finns det endast för Vimbasystemet vilket innebär att det endast är med den hårdvaran det är möjligt att mäta varvtal.

Mätningen av varvtal är implementerat som en tillståndsmaskin med 4 olika tillstånd, initiering, mätning, stängning och ett vänteläge. I figur 6.3 visas tillståndsmaskinens olika tillstånd. När användaren aktiverar mätningen så ändras tillståndet till initieringsläget. Vid initieringen så läses skiftregistret med den nuvarande konfigurationen av och mätkortet ställs in så att det mäts på rätt kanal. Om initieringen inte ger något felmeddelande så påbörjas mätningen.

Varvtalet mäts med hjälp av räknarkortets inbyggda klocka. Klockan i Vimbas räknarkort PXI-6602 är på 80 MHz. Mätningen görs på sådant sätt att antalet klockcykler mellan två positiva flanker i insignalen räknas och multipliceras med klockans periodtid för att få periodtiden för insignalen. Denna mätning utförs kontinuerligt tills användaren avaktive- rar mätningen eller det uppstår något fel. Efter varje mätning så skickas datan via en kö till den analoga loopen. Om systemet avaktiveras eller om det uppstår något fel så byter tillståndsmaskinen läge till stängningssteget där den virtuella kanal som skapas vid initi- eringen tas bort. Till sist återgår tillståndsmaskinen till vänteläget där den väntar på att användaren åter skall aktivera systemet.

För tillfället kan endast varvtalet från en signal mätas.

Analog mätdata

Evighetsloopen för den analoga mätdatan består precis som varvtalsloopen av tillstånds- maskin i figur 6.3.

Stäng Kör Vänteläge Initiering Inget fel Fel Systemet aktiverat Systemet aktiverat / Inget fel Systemet avaktiverat /Fel Systemet avaktiverat

Figur 6.3:Tillståndsmaskinen som används av datainsamlings-, beräknings- och da- taöverföringsblocket som kan ses i figur 6.1.

6.2 Detaljer 29 Under initieringen så känner systemet av vilka kanaler som finns för den aktuella hårdva- ran och jämför sedan med konfigurationen i skiftregistret vilka kanaler som skall aktive- ras. Även samplingsfrekvens och storlek på varje mätserie sätts. Storleken på de samplade mätserierna bestäms av hur många sampel en mätserie skall innehålla samt hur mycket mätserierna skall överlappa varandra. Tack vare överlappningen så behöver bara den nya delen av varje mätserie samlas in, vilket gör att det insamlade mätserien kan vara mindre än den önskade storleken på en mätserie. Rätt storlek på mätserien fås i beräkningsdelen där överlappningen med den föregående mätserien ser till att den mätserie som beräkning- arna utförs på är så stor som användaren önskar.

Mätningen går till som så att en mätserie samlas in för varje aktiv kanal. Sedan kalibreras mätvärdena och kompenseras för eventuella nivåfel i givarna. Om samplingsfrekvensen skall decimeras så utförs det genom att först lågpassfiltrera signalen och sedan radera överflödiga sampel. Lågpassfiltreringen utförs på en signal som är sammansatt av den föregående mätserien och den nuvarande för att filtret skall hinna svänga in sig enligt teorin i avsnitt 2.3 på sidan 5. Lågpassfiltret som används är ett Butterworthfilter av 8:e ordningen där brytfrekvensen är satt till den nya samplingsfrekvensen delad med 2,56. När en datainsamling är genomförd så sammanfogas analog data med varvtalsdata och skickas vidare. Under tiden så har redan insamlingen av nästa mätserie startats automatiskt av den i LabVIEW inbyggda drivrutinen för att inga mätvärden skall missas mellan två mätserier. Om ingen analog datainsamling görs så skickas varvtalsdata vidare varje 0,5 s.

6.2.2 Beräkningar

De beräkningar som för närvarande är implementerade i systemet är beräkning av likvär- de, RMS-värde, envelope, fem toppar, toppfrekvens, toppfas, toppamplitud och varvtal. De olika toppvärdena innebär att den mest dominanta frekvensen i signalen bestäms och analyseras. Envelope beräknar det högsta enskilda värdet som har förekommit i signalen sedan senaste beräkningen och fem toppar-beräkningen tar fram alla frekvenstoppar som förekommer i signalen. Namnet fem toppar kommer ifrån att önskemålet från början var att hitta just de fem mest dominanta topparna vilket nu är utvecklat till ett fritt antal toppar. Beräkningarna utföres med hjälp av tillståndsmaskinen i figur 6.3 inuti en evighetsloop. Innan första beräkningen görs så initieras beräkningarna genom att skiftregistret med kon- figurationsfilen läses in. Från konfigurationsfilen fås en lista med alla beräkningsparamet- rar som användaren vill beräkna. Även den första uppsättningen med mätdata läses in. Att mätdatan läses av beror på att mätserierna från de olika kanalerna innehåller namnet på kanalen vilket gör att ett fält med kanalernas fönsterfunktioner, sorterat i samma ord- ning som kanalerna, kan skapas. Detta gör att fältet med mätserierna enklare kan kopplas ihop med respektive fönsterfunktion under beräkningarna. Mätdatan används även till att koppla ihop varje beräkningsparameter med rätt kanalindex.

De beräkningsparametrar som har ett passbandfilter som skall följa värdet av någon annan beräkningsparameter söker igenom hela listan med beräkningsparametrar för att hitta rätt parameterindex. Om en beräkningsparameters filter ställs in för att följa värdet av en beräkningsparameter som kommer senare i listan så kommer det värde som beräknades vid den föregående beräkningen att ange gränserna för filtret.

De två beräkningarna, fem toppar och envelope, utförs på lite speciella sätt vilket kräver vissa förberedelser under initieringsfasen. Detta är presenterat under respektive rubrik nedan.

Som framgår i figur 6.4 är det första som händer vid varje beräkning att för alla kanaler där envelope-värdet skall beräknas så uppdateras detta värde om kanalens nya mätserie innehåller ett högre värde. Ifall mätserier skall överlappas så sparas den sista delen av mätserien undan till nästa beräkning.

Vad som sker härnäst beror på om en beräkning skall genomföras vilket avgörs av upp- dateringshastigheten som användaren har satt. Om ingen beräkning skall göras för den nuvarande mätserien så inväntar beräkningsloopen nästa uppsättning av mätvärden. Om beräkningarna däremot skall genomföras så påbörjas dessa med att överlappa den senaste mätserien med den föregående, sparade, mätserien.

Efter det så utförs Fouriertransformation av, den eventuellt överlappade, mätserien med LabVIEWs funktion fft mag-phase.vi. Denna funktion utför en FFT av mätserien med den av användaren valda fönsterfunktionen. Ett amplitudspektrum och ett fasspektrum skapas enligt avsnitt 2.4 på sidan 6. Eftersom fönsterfunktioner används så är amplitudspektrumet multiplicerat med den följdriktiga förstärkningen. Amplitudspektrumet som skapas visar RMS-värdet av frekvenserna. Om toppvärdet önskas så måste spektrumet multipliceras med√2.

När frekvensspektrumen har skapats så genomförs beräkningen av fem toppar innan hela beräkningsparameterlistan gås igenom. För varje punkt i listan så beräknas det värde som beräkningsparametern anger. Hur de olika beräkningarna sker beskrivs under respektive underrubrik nedan. Alla resultaten läggs i tur och ordning i ett resultatfält. När alla beräk- ningar är klara så skickas resultatet iväg med en kö. Hela beräkningstillståndet kan ses i figur 6.4.

När användaren avaktiverar systemet så byter tillståndsmaskinen tillstånd till stäng-läge. I detta läge så nollställs alla fält som sattes under initieringsfasen.

Till sist så försätts tillståndsmaskinen i vänteläget där den stannar tills användaren återigen aktiverar systemet.

RMS

RMS-beräkningen utföres på två olika sätt beroende på om filter skall användas eller ej. Om filter inte används så beräknas RMS-värdet utifrån ekvation (6.1)

RMS = v u u t1 N N −1 X n=0 |f[n]|2 (6.1)

Om beräkningsparametern är inställd på att använda ett passbandsfilter så utnyttjas istället Parsevals teorem beskrivet i avsnitt 2.4.3 på sida 11. Kombineras Parsevals teorem (ekva- tion (2.6) med formeln ovan för RMS så kan RMS värdet beräknas i frekvensdomänen. Eftersom Fouriertransformationen utförs med en fönsterfunktion så måste den ekvivalen- ta brusbandbredden, förklarad på sida 10, tas med i beräkningen. Detta ger upphov till

6.2

Detaljer

31

Samplade mätserier

Spara del av mätserie för att överlappa med

Envelopeberäkning Överlappa mätserier FFT Fem Toppar Beräkna Del av föregående mätserie Körs var n:te gång Körs varje gång Beräknad data Figur 6.4: T illståndsmaskinens beräkningsste g, Beräkning arna utförs i två huvud- ste g. Dels ett ste g som körs för varje mätserie och dels ett ste g som genomförs så ofta som an vändaren vill.

följande formel för bestämning av RMS i frekvensdomänen. RMS = v u u t 1 N2 N −1 X n=0 |F [n]|2 ENBW (6.2)

För att få RMS-värdet för det passbandet som är intressant så nollställs alla frekvenser utanför passbandet. Noterbart är att den valda lösningen, där RMS-värdet beräknas i fre- kvensdomänen, i teorin endast fungerar på periodiska signaler.

Likspänningsvärde

Likspänningsvärdet beräknas genom att ta medelvärdet av data från en hel mätserie.

Envelope

Som tidigare nämnts så måste envelope-mätningen initieras innan den kan utföras. Detta beror på att uträkningen måste göras för varje mätserie oavsett vad användaren har angivit för beräkningsintervall. Vid initieringen så kollas alla beräkningsparametrar igenom och kanalindexet för alla kanaler som skall utvärderas sparas i ett fält. Samtidigt skapas även ett fält där resultatet från varje kanal kan sparas.

För varje ny mätdata så tas det högsta mätvärdet för varje kanal, är detta värde större än de tidigare värdena för kanalen så sparas detta värde undan i resultatfältet. Sedan när beräkningsintervallet anger att en beräkning skall genomföras så innehåller resultatfältet envelope-värdet för varje kanal vilket då anges som resultat för hela perioden. Efter be- räkningen så nollställs envelope-värdet så att en ny period kan utvärderas.

Beräkning av fem toppar

Beräkningen av fem toppar beräknar de frekvenser med högst amplitud inom ett, av an- vändaren givet, passband. En beräkningsparameter kan endast ställas in för att returnera amplituden, frekvensen eller fasen som resultat för någon av de frekvenserna med högst amplitud. Därför kopplas flera beräkningsparametrar samman för att kunna returnera mer än en frekvenstopps amplitud, fas eller frekvens. Denna sammankoppling av beräknings- parametrar sker vid initieringen av fem toppar-beräkningen där alla de beräkningspara- metrarna som användaren har angett tillhör samma kanal och filter sammankopplas med varandra. Detta gör att när beräkningen väl genomförs så beräknas de högsta topparna för varje kanal och varje filter bara en gång. Sedan när listan med alla beräkningsparametrar gås igenom så behöver endast det värdet för just den specifika toppen som beräkningspa- rametern anger läsas in.

Beräkningsalgoritmen för att bestämma topparnas värden använder sig av den aktuella datans frekvensspektrum. Detta frekvensspektrum passbandsfiltreras genom att nollställa amplituden för alla frekvenser utanför passbandet. För att få fram alla frekvenstoppar i signalen så söks amplitudspektrumet igenom och alla frekvenser med en amplitud som är större än alla omkringliggande frekvenser, inom en spännvidd definierad av användaren, anses som en topp. För alla toppar som fås fram efter denna sökning sparas information om amplitud, frekvens och fas undan sorterad efter amplituden. Amplituden är omvand- lad från RMS-värde till toppvärde genom att alla frekvenslinjer i amplitudspektrumet, förutom likspänningen, har multiplicerats med√2.

6.3 Användargränssnitt 33

Toppfrekvens

Den mest dominanta frekvensen fås genom att i amplitudspektrumet nollställa alla fre- kvenser utanför passbandet och sedan söka upp den frekvensen med högst amplitud.

Toppfas

För att finna vilken frekvens som har högst amplitud så genomförs samma operationer som vid sökning av toppfrekvens. När frekvensen är känd så söks den motsvarande fas- vinkeln upp i fasspektrumet och returneras som svar uttryckt i radianer.

Toppamplitud

Den mest dominanta frekvensens amplitud fås genom att i amplitudspektrumet nollställa alla frekvenser utanför passbandet och sedan söka upp den högsta amplituden. Amplitu- den ges som RMS-värde.

Varvtal

Varvtalet beräknas genom att beräkna medelvärdet för alla varvtalsmätningar som gjorts under insamlingen av den senaste mätserien utan eventuell överlappande del.

6.2.3 Dataöverföring

Dataöverföringen genomförs precis som i beräkningsblocket ovan i en evighetsloop in- nehållande tillståndsmaskin i figur 6.3. Tillståndsmaskinen har som förut de fyra olika tillstånden, initiering, överföring, stängning, och väntan.

Beroende på om data ska skickas till Scadapro eller en OPC-server så blir beteendet i alla lägen utom vänteläget lite olika. I initieringsläget så behöver endast ett fält med alla beräkningsparametrars Scadaprokanaler, sorterat i samma ordning som beräkningspara- metrarna är listade, iordningställas. För OPC-server så måste även varje kanal öppnas vilket i sin tur även ger upphov till att id för just den kanalen måste sparas.

I överföringstillståndet så läses resultaten från beräkningarna av från en kö och skickas i tur och ordning vidare till kanalerna listade under initieringen. Om någon beräkningspara- meter har ett tomt fält där adressen skulle ha stått så innebär det att det beräknade värdet inte skickas någonstans utan endast kan visualiseras inne i programmet.

Vid avslut av överföringen så stängs kanalerna till OPC-servern ned, om överföringen istället har skett till Scadapro så behöver inget göras under avslutningsfasen.

6.2.4 Visualisering av data

Visualiseringen av data sker med hjälp av en evighetsloop som så fort ny data i form av antingen ren mätdata eller beräknade värden finns tillgänglig.

6.3 Användargränssnitt

Användargränssnittet är uppbyggt utifrån en händelsestruktur där programmet väntar på en inmatning av användaren. När användaren utför någon handling så utförs den specifika funktionen.

Systemet visar felmeddelanden genom att alla funktioner skriver eventuella fel till ett skiftregister. Om detta skiftregister innehåller något felmeddelande så skrivs detta felmed- delande ut på skärmen.

6.4 Diskussion

I första versionen så utgjordes den interna kommunikationen enbart av lokala booliska variabler. Detta gav upphov till två problem, dels att det blev svårare att använda variab- lerna inne i subVI:s1 vilket gjorde det svårare att skapa lättöverskådlig kod. Det andra

problemet var att alla loopar fick samma meddelanden. Det var inte möjligt att bara starta eller stänga av någon av looparna. Om ett nytt meddelande skulle skickas så krävdes det också att en ny lokal variabel skapades. För att komma runt det här problemet så byggdes ett nytt meddelandesystem i den nya versionen där varje meddelande består av en adress och ett meddelande. På detta sätt så kan alla loopar som berörs av meddelandet adresse- ras. Om en ny form av meddelande skulle behöva skapas i framtiden så finns redan en väl fungerande kommunikationskanal, där endast meddelandets innehåll behöver skapas. Att insamlingen av data sker på två olika sätt, dels genom mätning av analoga signaler, där varje mätning tar en förutbestämd tid att genomföra, och dels genom mätningen av varvtal, där tiden för en mätning beror på varvtalet, skapar ett problem i hur dessa skall synkroni- seras med varandra. I den första versionen så samlades dessa in helt separat och skickades vidare till ett beräkningsblock där vidare beräkningar skedde. I beräkningsblocket så togs det senaste varvtalet och kopplades samman med den senaste serien av analog mätdata. Eftersom mätningen av de analoga signalerna ofta ställs in så att den tar ca 1 s att genom- föra och mätningen av varvtal bara tar en periodtid av varvtalet att genomföra (1000 rpm [varv per minut] → 0,06 s) så kan data bli väl osynkroniserad vid detta förfarande. Det egentliga varvtalet under insamlingen av den analoga mätserien skulle till exempel kunna ändras från 100 rpm till 120 rpm om turbinen rampas upp. Detta skulle resultera i att en- dast det senare värdet skulle anges vilket inte ger en korrekt bild av varvtalet. Vid sådana förändringar av varvtalet skulle ett medelvärde av varvtalet under hela tidsperioden ge en bättre bild av det verkliga varvtalet. Ett problem som kan uppstå med den valda lösningen i den nya versionen där varvtalet synkroniseras med analog mätdata är att periodtiden för varvtalet kan vara längre än tiden det tar att sampla den analoga mätserien. Detta gör att varvtalsmätning inte hinner utföras under insamlingen av den analoga datan. Lösningen på det problemet är att i dessa fall återanvända det senast insamlade varvtalet. Även denna lösning har nackdelar, till exempel att det kan vara svårt att upptäcka om varvtalssignalen försvinner eftersom mätningen ändå kommer att ge ett resultat.

Att sammankoppla de båda typerna av mätdatainsamling löste även ett annat problem med den tidigare versionen. Nämligen att beräkningsblocket fick sin data från flera olika block vilket gav ett rörigt program där för många delar var beroende av varandra. I den nya ver- sionen så är de olika blocken betydligt mer avgränsade med ett tydligt gränssnitt utåt vilket gör det betydligt lättare att återanvända blocken i andra applikationer. Av främst denna an- ledning så valdes envelope-beräkningen att utföras i beräkningsblocket. Rent logiskt sätt så passar beräkningen in bättre i just beräkningsblocket. Att det ändå fanns funderingar

6.4 Diskussion 35 på att implementera den direkt i mätdatainsamlingsblocket beror på det speciella förfaran- det vid beräkningen där alla mätserier måste utvärderas. Vid de andra mätningarna så kan användaren själv bestämma med vilket intervall mätserierna skall analyseras. Om envelo- pe-mätningen skulle ha utförts i mätdatainsamlingsblocket så skulle endast data behöva skickas till beräkningsloppet så ofta som användaren väljer att beräkningarna skall göras. En av de saker som har vållat störst problem är hur beräkningen av fem toppar skall konfigureras och genomföras. I den tidigare versionen så konfigurerades beräkningen så att alla fem toppars fas, frekvens och amplitud beräknades med en beräkningsparameter. Detta gjorde att en speciell meny behövde skapas för att kunna ställa in den speciella beräkningsparametern. Ytterliggare ett problem med den lösningen var att beräkningspa- rametrarna skiljde sig beroende på vilken typ av mätning det var, vilket inte kändes helt logiskt. Detta gjorde att målsättningen för den nya versionen var att alla beräkningspara- metrar skulle ställas in och bete sig på samma sätt oberoende av vilken typ av beräkning som skulle genomföras. Lösningen på detta problem blev att lägga till ett nytt fält för al- la beräkningsparametrar där information om den specifika mätningen kan sparas. I varje beräkningsparameter, där beräkningen av fem toppar skall genomföras, finns det sparat vilken mätning den tillhör, vilken topp i mätningen och om fas, amplitud eller frekvens ska sparas. Detta fält kan i framtiden även tänkas användas för andra beräkningar än be- räkningen av fem toppar.

För att inte iterationen efter den specifika toppen som eftersöks vid beräkningen av fem toppar skall behöva göras för varje beräkningsparameter så beräknas alla toppar innan be- räkningsparameterlistan gås igenom. Vilket sparar på datorns resurser. Den nya metoden att ange vilka toppar som skall beräknas medför även att användaren kan bestämma helt själv hur många toppar som skall beräknas, vilket inte begränsar funktionen till att bara beräkna precis fem toppar.

Hur ofta de olika beräkningarna skall utföras och därmed skickas till Scadapro eller OPC-

Related documents