Ändra färg på objekt

Skifta mellan två färger

Vi ska titta på hur man kan ändra färg på ett objekt beroende på en digital signal i
databasen. Det finns några olika typer av dynamik man kan använda, DigLowColor, DigColor,
DigError och DigWarning. Vi börjar med att titta på ett exempel med DigLowColor.

DigLowColor skiftar mellan två färger, den ena är den man sätter på objektet i editorn, och
det är den här färgen objektet kommer att ha när signalen är hög. Den andra färgen anges i
DigLowColor.LowColor. Vi kommer att rita en orange indikator, som ska vara orange när signalen
är hög och mörkgrå när signalen är låg. Vi ritar alltså indikatorn orange i editorn, och
sätter DigLowColor.LowColor till mörkgrå.

Vi börjar med att rita en cirkel, och fyller den med orange färg. Vi sätter också gradienten
till GradientGlobe.


Fig Orange indikator

Vi skapar också en ram med metalliskt utseende till indikatorn genom att rita en lite större
cirkel med grå fyllnadsfärg. På ramen sätts fixcolor i objektseditorn till 1, eftersom denna
inte ska ändra färg med indikatorlampan. Vi sätter också 3D och väljer gradienten
DiagonalDownTube.


Fig Ram till indikatorn

I objektsediton ökas gradient_contrast till 8 och shadow_width till 9.


Fig Fixcolor sätt på ramen

För att kunna sätta dynamik gör vi en grupp av de båda cirklarna. När vi öppnar objektseditorn
för gruppen har vi nu attributet Dynamic och väljer DigLowColor. Vi sätter DigLowColor.Color
till en mörkgrå nyans och kopplar DigLowColor.Attribute till en Dv, H1-Dv1.


Fig Dynamik DigLowColor

Resultatet ses i figuren nedan. När signalen är hög är indikatorn orange, och signalen är
låg är indikatorn mörkgrå.


Fig Indikatorn med låg signal till vänster och hög till höger

Dynamiktypen DigColor är snarlik DigLowColor, och man skulle också kunna ha använt denna typ
här. Skillnaden är att signalens funktion är inverterad. I DigLowColor anger man den färg
som objektet har när signalen är låg, medan för DigColor anger man den färg som objektet har
när signalen är hög.

Skifta mellan flera färger

Vi ska nu se hur man kan skifta mellan flera färger. Vi utgår från indikatorn i exemplet
ovan och adderar dynamiken DigColor. I objektseditorn har vi nu attributen DigColor.Attribute
och DigColor.Color. DigColor.Attribute kopplas mot en signal i databasen, H1-Dv2, och i
DigColor.Color anges den färg som indikatorn får när signalen är hög.


Fig En tredje färg adderad med DigColor

Indikatorn kan nu skifta mellan tre olika färger. DigLowColor skiftar som förut mellan
mörkgrått och orange beroende på H1-Dv1, och DigColor sätter blå färg när H1-Dv2 går hög.
Notera att DigColor har högre prioritet än DigLowColor. Man kan se det i objektseditorn där
dynamiken ordnas i prioritetsordning med hög prioritet överst och låg prioritet underst.
Den högre prioriteten på DigColor gör att när H1-Dv2 är hög, blåfärgas indikatorn oberoende
av värdet på H1-Dv1.


Fig Indikatorn färgas orange när H1-Dv1 är hög, och blå när H1-Dv2 är hög

Vi ska nu lägga till ytterligare en färg och studera begreppet Instance. En del dynamik och
action typer kan förekomma i flera upplagor, eller flera instanser på samma objekt. För
DigColor innebär det att när man adderar ytterligare en instans, kan man sätta en färg till
på objektet. Eftersom det finns upp till 32 instanser kan man sätta 32 olika färger, där
varje färg kopplas till en signal i databasen.

Man adderar en DigColor instans genom att öppna DigColor.Instances och markera instans 2.
Nu visas attributen för denna instans, DigColor2.Attribute och DigColor2.Color. Vi kopplar
DigColor2.Attribute till signalen H1-Dv3 och anger en grön färg i DigColor2.Color. Notera
att instanser med högre instans-nummer har högre prioritet, dvs H1-Dv3 kommer att färga
indikatorn grön oberoende av värdet på H1-Dv1 och H1-Dv2.


Fig En fjärde färg adderad med DigColor instans 2

Resultatet ses i figuren nedan. Man kan nu skifta mellan fyra olika färger. Förutom de tre
tidigare, mörkgrått, orange och blått, färgas indikatorn nu grön när signalen H1-Dv3 är hög.


Fig Indikatorns fyra olika färger

Färger för varning och fel

I ProviewR används genomgående färgerna gult och rött för varning resp fel. Det finns
två typer av dynamik, DigWarning och DigError, som sätter gul resp röd färg. Fördelen
jämfört med DigLowColor eller DigColor är att men inte behöver ange färgen, utan det räcker
att koppla dynamiken till en digital signal i databasen.

Vi använder indikatorn i ovanstående exempel, men färgar om den till mörkgrått, som blir
den färg man får då varken signalen för DigWarning eller DigError är hög.
Vi kopplar DigWarning.Attribute till H1-Dv4 och DigError.Attribute till H1-Dv5.


Fig Dynamiken DigWarning och DigError

När ingen signal är sätt har indikatorn ursprungsfärgen mörkgrått. När H1-Dv4 sätts får den
varnings-färgen gul, och när H1-Dv5 sätts får den fel-färgen rött. DigError har högre
prioritet än DigWarning, alltså blir den röd när H1-Dv5 är satt, oberoende av vad H1-Dv4 har
för värde.


Fig Gul färg för varning och röd för fel

Blinkande dynamik

För att dra maximal uppmärksamhet till ett objekt kan man sätta DigFlash dynamik på det.
DigFlash innebär att objektet kommer att blinka, dvs skifta mella två färger, när en signal
är hög. Blinknings-frekvensen är lika med uppdaterings-frekvensen för objektet. Om Cycle är
Slow sker blinkningen med ScanTime för grafen, och om Cycle är Fast med FastScanTime.

Vi sätter DigFlash dynamik på indikatorn och kan nu ange två färger som objektet kommer
att blinka med, DigFlash.Color och DigFlash.Color2. Vi sätter DigFlash.Color till röd och
DigFlash.Color2 till svart, och kopplar DigFlash.Attribute till signalen H1-Dv6.


Fig DigFlash dynamik

När signalen H1-Dv6 är låg har indikatorn ursprungsfärgen mörkgrå. När H1-Dv6 går hög
börjar den blinka med färgerna rött och svart.


Fig Indikatorn blinkar mellan rött och svart när signalen är hög

Ändra färg på en analog signal

Nu ska vi titta på hur man kan ändra färg på ett objekt beroende på värdet på en analog
signal. Det finns två olika typer av dynamik, FillColor och AnalogColor, som kopplas till
en analog signal. FillColor färgar en del av ett objekt och hur stor del beror på signalens
värde. AnalogColor skiftar färg på objektet när signalen passerar vissa gränsvärden.

Färga till en viss nivå

Dynamiken FillColor färgar ett objekt till en viss nivå beroende på en analog signal. Den
liknar mycket stapel-objektet som vi har ett tidigare, med den skillanden att den kan
appliceras på vilken form som helst. Vi ska sätta FillColor på en tank som vi hämtar från
Hydraulics/Tank2 i subgrafmenyn.


Fig En tank

Tanken har ingen default dynamik. Vi markerar FillColor i DynType och kopplar den till Av
objektet H4-Av1. Vi sätter också en mörkgrå nyans i FillLevel.BackgroundColor.
FillLevel.MinValue och FillLevel.MaxValue anger området på signalen, som default är 0-100.
När värdet är noll kommer tanken att färgas helt med bakgrundsfärgen och när värdet är 100
med den blå färg som vi sätter i editorn.


Fig FillColor dynamik på tanken

I figuren nedan har vi satt värdet 70 på H4-Av1 och tanken är fylld upp till denna nivå.


Fig Tanken fylld till en viss nivå

Man kan fylla tanken i andra rikningar genom att ändra på FillColor.Direction. Används
FillColor dynamiken i en objektsbild kan också området kopplas till attribut för min och
max-värde i databasen.

Ändra färg över eller under en viss nivå

Ofta vill man visa att en analog signal har överskridit eller underskridit ett viss värde.
I tank-exemplet ovan ska nivån normalt ligga under 80, och stiger den över 90 börjar läget
bli kritiskt. Vi använder dynamiken AnalogColor för att ändra färg på tanken när värdet
passerar de båda gränsvärdena.

Till att börja med vill vi färga tanken gul när signalen H4-Av1 är över 80. Vi adderar
AnalogColor till DynType och kan nu sätta AnalogColor.Limit till 80. Typen av gränsvärde,
AnalogColor.LimitType, är redan GreaterThan, så denna behöver vi inte ändra på. Däremot
måste vi ange färgen som ska sättas när signalen överskrider 80, och vi lägger in en
gul nyans i AnlogColor.Color.

För att kunna lägga in ytterligare ett gränsvärde vid 90, lägger vi till instans 2 i
AnalogColor.Instances. Nu dyker attributen för AnalogColor2 upp och vi sätter
AnalogColor2.Limit till 90 och AnalogColor2.Color till en röd nyans. Notera att man inte
kopplar något ny signal till instans 2, utan alla instanser använder samma signal.


Fig AnalogColor dynamik

Resultatet visas figuren nedan. Så länge värdet på H4-Dv1 är under 80 är tanken blå. När
värdet går över 80 blir den gul, och när 90 passeras blir den röd.


Fig Vid 80 slår färgen om till gult, och vid 90 till rött

Genom att sätt LimitType till LessThan kan man också lägga till gränsvärden för miniminivåer,
t ex färga tanken gul om nivån underskrider 20, och röd om tanken underskrider 10.