Farbverläufe

Farbverläufe, Transparenz und Grafiken in Objekten

Viele Objekte in PLC-Lab können mit Farbverläufen und eigenen Grafiken versehen werden. Somit besteht die Möglichkeit diese sehr individuell zu gestalten.

In diesem Abschnitt soll gezeigt werden, wie man z.B. Farbverläufe in Objekten nutzt um deren Aussehen z.B. plastischer wirken zu lassen. Des Weiteren wird gezeigt, wie man die Deckungskraft (somit die Transparenz) der Farben einstellt. Zuletzt wird erläutert, wie eigene Bilder bzw. Grafiken in Objekten angezeigt werden können.

Farbverläufe in Objekten einstellen

Mit Farbverläufen kann man Objekten ein plastisches Aussehen verleihen. So kann beispielsweise ein Rechteck durch Farbverläufe so gestaltet werden, dass dieses wie eine Metallstange wirkt. Die Farbe eines geometrischen Objekts ist innerhalb der Rubrik "Grundeinstellungen->Darstellung->Farben" veränderbar. Dabei sind zwei Eigenschaften für die Füllfarbe vorhanden. Die Eigenschaft "Füllfarbe" ist die Farbe die im Objekt verwendet wird, wenn kein Operand für das Umschalten der Füllfarbe angegeben ist oder aber dieser Operand den Status '0' hat. An der Eigenschaft "Füllfarbe bei Status 1" wird die Farbe definiert, welche zum Einsatz kommt, sobald der Operand an der Eigenschaft "Operand umschalten Füllfarbe" den Status '1' besitzt.

Beispiel

Im folgenden Beispiel soll einem Rechteck-Objekt das Aussehen einer Metallstange gegeben werden. Dies wird durch den Einsatz eines Farbverlaufs erreicht.

Folgende Schritte werden dafür ausgeführt:

  1. Selektion des Objekts.
  2. Bei der Eigenschaft "Füllfarbe" den Dialog für die Farbe aufrufen und den passenden Gradientenverlauf auswählen.
  3. Den linken Farbverlaufstopp auswählen und den Farbwert in die Zwischenablage kopieren.
  4. Den rechten Farbverlaufstopp selektieren und bei diesem den Farbwert aus der Zwischenablage einfügen.
  5. Einen neuen Farbverlaufstopp einfügen und in der Mitte platzieren. Für diesen eine etwas dunklere Farbe auswählen.

Am Ende wird noch die Linie als Umrandung des Objekts beseitigt, indem die Linienstärke auf 0 gesetzt wird.

Transparenz

Transparenz wird beispielsweise eingesetzt um glasähnliche Effekte zu erzeugen oder aber um Objekte übereinander zu legen und die verschiedenen Ebenen sichtbar zu machen.

Anbei ein Beispiel, bei dem zwei Förderelemente übereinander gelegt wurden. Am oberen Förderelement wurde die Deckkraft der Füllfarbe auf 50% eingestellt. Somit sind die darunterliegenden Objekte zu erkennen.

Im folgenden Beispiel sollen die beiden Schutztüren einer Bohranlage transparent dargestellt werden um die dahinterliegenden Vorrichtungen erkennen zu können. In der Realität sind die Türen aus Glas, dies soll auch in der virtuellen Anlage erkennbar sein. Dazu werden die beiden Türen selektiert, die Farb-Eigenschaft ausgewählt und auf dem Farben-Einstellungsdialog die Deckkraft von 100% auf einen geringeren Wert verändert. Die Auswirkungen sind sofort zu erkennen.

Farbe über Doppelwortoperanden beeinflussen

Ab der Version 2.1.0.0 kann die Farbe von geometrischen Objekten (Rechtecke, Ellipsen, usw.) und von Flüssigkeits-Objekten mit Hilfe eines Doppelwortoperanden beeinflusst werden. Dabei wird die Farbe des Objekts bei Status 0 beeinflusst. Die zu belegende Eigenschaft hat die Bezeichnung "Operand Wert Füllfarbe" und befindet sich in der Rubrik "Farben". Jedes Byte des Doppelwortoperanden beeinflusst einen anderen Kanal der Farbe.

Kanal Byte innerhalb des Doppelworts Bedeutung
Alpha HiByte-HiWord Deckungsgrad der Farbe 0: vollständig transparent 255: höchste Deckkraft
Rot LoByte-HiWord Rot-Anteil der Farbe. 0: kein Rot-Anteil 255: Max. Rot-Anteil
Grün HiByte-LoWord Grün-Anteil der Farbe. 0: kein Grün-Anteil 255: Max. Grün-Anteil
Blau LoByte-LoWord Blau-Anteil der Farbe. 0: kein Blau-Anteil 255: Max. Blau-Anteil

Tipp:

Soll der Doppelwortoperand aus verschiedenen Byte-Operanden zusammengesetzt werden, bzw. sind einige Bytes über Konstanten zu definieren, dann kann ein Rechner-Objekt mit der Funktion "UInt32 aus Bytes zusammensetzen" zum Einsatz kommen. Dabei können an den 4 Eingängen jeweils ein Byte bzw. eine Konstante angegeben werden. Diese Bytes werden dann in ein am Ergebnis anzugebenden Doppelwortoperanden geschrieben.

Beispiel 1

Im Beispiel soll die Deckkraft eines schwarzen Rechtecks über einen Schieberegler beeinflusst werden. Dazu wird der Doppelwortoperand "Color" an der Eigenschaft "Operand Wert Füllfarbe" des Rechtecks angegeben. Das Rechteck verdeckt drei grüne Ellipsen. Diese werden sichtbar, sobald die Deckkraft der Farbe des Rechtecks nachlässt. Am Rechteck ist die Eigenschaft "ZOrder" auf den Wert 1 einzustellen, damit es die drei grünen Ellipsen verdeckt.

Der Doppelwortoperand wurde im IM-Device angelegt und hat die Adresse MD2. Somit besteht dieser aus den Bytes MB2 bis MB5. Mit dem MB6 soll der Alpha-Kanal verändert werden. Der Alpha-Kanal bestimmt die Deckkraft der dargestellten Farbe. Somit wird in der Symboltabelle das Symbol "AlphaChannel" im IM-Device definiert und diesem die Operandenadresse MB6 zugewiesen.

Nun wird ein Schieberegler-Objekt platziert, dessen Skalenwert ist auf 0 bis 255 einzustellen. Dem Schieberegler wird das Symbol "AlphaChannel" zugewiesen. Als Startwert ist der maximale Wert "255" anzugeben.

Die drei anderen Bytes des Farbwerts sollen nicht beeinflusst werden. Diese können alle den Wert 0 besitzen, denn dies ergibt eine schwarze Farbe. Um die einzelnen Bytes in den Doppelwortoperanden zu schreiben, wird ein Rechner-Objekt mit der Funktion "UInt32 aus Bytes zusammensetzen" verwendet. Am Eingang 1 ist das Symbol "AlphaChannel" azugeben, die anderen Eingänge für die Farbkanäle R, G und B sind mit der Konstanten 0 vorbelegt. Das Funktionsergebnis wird dem Symbol "Color" zugewiesen.

Damit sind alle notwendigen Objekte vorhanden und die Einstellungen getätigt. Die Simulation zeigt folgendes Verhalten:

Wird der Wert des Schiebereglers verringert, dann verringert sich auch die Deckkraft der Farbe des Rechtecks, bis die vom Rechteck verdeckten Kreise sichtbar sind. Beim Wert 0 ist das Rechteck vollständig transparent.

Fazit

Das Beispiel hat gezeigt, wie man die Farbe eines Objekts über einen Doppelwortoperanden verändern kann. Mit der Verwendung des Rechner-Objekts ist es sehr einfach, die einzelnen Bytes in das für die Farbe zuständige Doppelwort zu schreiben. Da hier auch Konstanten an den einzelnen Eingängen angegeben werden können, falls nur bestimmte Farbkanäle zu beeinflussen sind.

Beispiel 2

Im Beispiel soll sich die Farbe eines Objekts von blau nach rot verändern, sobald eine Heizung eingeschalten ist. Wird die Heizung ausgeschalten, dann soll der Abkühlungsvorgang durch den Übergang der Farbe Rot in Blau sichtbar sein. Dies wird erreicht, indem innerhalb des C#-Scripts die Bytes für die Farben Rot und Blau in ihrem Wert verändert werden. Wird z.B. die Heizung eingeschalten, dann wird der Wert des Bytes für die rote Farbe schrittweise erhöht und gleichzeitig der Wert des Bytes für die blaue Farbe verringert.

Die für das Beispiel benötigten Symbole sind nachfolgend zu sehen:

Das zu erwärmende Objekt wird über ein statisches Rechteck dargestellt. Im Rechteck ist an der Eigenschaft "Operand Wert Füllfarbe" der Doppelwortoperand "Color" des IM-Device anzugeben.

Die Heizung selbst wird über eine rote LED symbolisiert, diese leuchtet und pulsiert sobald die Heizung eingeschalten ist.

Im nächsten Schritt ist ein Rechner-Objekt zu platzieren, welches auf die Funktion "UInt32 aus Bytes zusammensetzen" einzustellen ist. Am ersten Eingang wird die Konstante "255" angegeben, diese Konstante wird somit in den Alpha-Kanal des Doppelwortoperanden geschrieben. Die Farbe hat also immer die maximale Deckkraft. Am zweiten Eingang ist das Symbol "Red" und am vierten Eingang das Symbol "Blue" anzugeben. Der dritte Eingang wird mit der Konstanten 0 versehen, denn die grüne Farbe wird nicht benötigt. Zuletzt ist am Funktionsergebnis das Symbol des Doppelwortoperanden "Color" einzutragen.

Nun der C#-Code welcher die Farbveränderung nach dem Einschalten der Heizung und in der Abkühlphase bewirkt. Sollten Sie mit dem C#-Script in PLC-Lab noch nicht vertraut sein, dann kann eine Beschreibung unter folgendem Link erreicht werden: C#-Script in PLC-Lab

DateTime StartHeating;
DateTime StopHeating;
bool HeatingLastValue;

/// <summary>
/// This method is called cyclically
/// </summary>
public void Loop() {
    //          
    int red = (int) Get_IMRed();
    int blue = (int) Get_IMBlue();
    //
    if (Get_DebugHeating() && !HeatingLastValue){
        //heating is just started
        StartHeating = DateTime.Now;
    }
    if (!Get_DebugHeating() && HeatingLastValue){
        //heating is just stopped
        StopHeating = DateTime.Now;
    }
    if (Get_DebugHeating()){
        TimeSpan delay = DateTime.Now - StartHeating;
        if (delay.Milliseconds >= 50){
            StartHeating = DateTime.Now;
            if (blue > 0){
                Set_IMBlue(blue - 1);
            }
            if (red < 255){
                Set_IMRed(red + 1);
            }
        }
    }
    else {
        TimeSpan delay = DateTime.Now - StopHeating;
        if (delay.Milliseconds >= 50){
            StopHeating = DateTime.Now;
            if (blue < 255){
                Set_IMBlue(blue + 1);
            }
            if (red > 0){
                Set_IMRed(red - 1);
            }
        }
    }
    //at the beginning set to blue
    if (G.LoopCount == 1){
        Set_IMBlue(255);
    }
    // 
    HeatingLastValue = Get_DebugHeating();
}

Damit sind alle Dinge vorbereitet und die Simulation wird ausgeführt.

Fazit

Im Beispiel wurden die beiden Farbkanäle Rot und Blau eines Rechtecks über Bytes beeinflusst, deren Wert im C#-Script verändert wurde. Dabei kam ein Rechner-Objekt mit der Funktion "Uint32 aus Bytes zusammensetzen" zum Einsatz. Im Rechner-Objekt wurden die Eingänge 1 und 3 mit Konstanten belegt, da diese nicht verändert werden mussten. Das Ergebnis wurde dann in den für die Farbe zuständigen Doppelwortoperanden geschrieben.

Verwendung von Grafiken (JPEG, PNG, BMP, ...) in den Objekten

In Schalter- und Geometrischen-Objekten können eigene Grafiken angezeigt werden. Dazu wird in den Rubriken "Grundeinstellungen->Darstellung->Bilder anzeigen" an den Eigenschaften "Bild bei Status 0" und "Bild bei Status 1" jeweils eine Grafikdatei selektiert. Ein Bild bei Status 1 muss nur ausgewählt werden, wenn auch ein Operand für die Umschaltung der Bilder angegeben wurde.

Beispiel 1

Im folgenden Beispiel wird das Bild eines Bohrers in einem Rechteck-Objekt angezeigt. Dabei wird jeweils ein Bild für den Status 0 selektiert und ein spiegelverkehrtes Bild für den Status 1.

Sobald der Motor des Bohrers eingeschaltet ist, soll die Darstellung der beiden Bilder wechseln. Diese Umschaltung wird mit Hilfe eines Taktmerkerbits aus dem IM-Speicherbereich von PLC-Lab realisiert (siehe auch "Sonderfall Taktmerkerbyte: IM.MB65534"). Es wird dabei das Bit IM.M65534.0 verwendet und über ein Rechner-Objekt mit dem Operanden des Motors UND-Verknüpft.

Damit wird die Simulation wie folgt ausgeführt:

Durch den Wechsel zwischen den beiden Bildern entsteht der Eindruck, dass der Bohrer sich dreht.

Beispiel 2

Im nächsten Beispiel werden zwei feststehende Kreis-Objekte verwendet. Das obere Kreis-Objekt wurde mit jeweils einer Grafik für den Status '0' und den Status '1' eines Operanden konfiguriert. Dies bedeutet, wenn der Operand den Status '0' hat wird ein Bild mit einem weißen Pfeil angezeigt. Beim Status '1' ein Bild mit einem gelben Pfeil.

Beim zweiten Kreis-Objekt wird für den Status '0' eine PNG-Grafik verwendet, die einen transparenten Hintergrund besitzt. Eine zweite Grafik für den Status '1' wird nicht angegeben, denn der Status '1' soll über eine andere Farbe des Objekts angezeigt werden. Diese Farbe ist sichtbar, da die Grafik transparente Bereiche besitzt, in denen die Farben des Kreis-Objektes zu sehen sind.

In der Simulation zeigt die Anordnung folgendes Verhalten:

Das Beispiel zeigt, dass man bei der Verwendung von PNG-Grafiken mit transparenten Bereichen auch die Farbumschaltung für die Anzeige eines Statuswechsel verwenden kann. Es werden dann keine zwei Grafiken benötigt.

Beispiel 3

Nun ein Beispiel, bei dem ein Schalter-Objekt mit einer Grafik versehen wird. Auch hier wird eine PNG-Grafik mit transparenten Bereichen verwendet. Dabei kommt ein Leucht-Schalter-Objekt zum Einsatz, in diesem wird die Grafik angegeben. Des Weiteren wird ein Operand für das Umschalten der Farbe angegeben.

In der Simulation sieht dies wie folgt aus:

Info

Ab der Version 1.5.0.5 von PLC-Lab wird der operandenabhängige Farbwechsel bzw. der Wechsel von Grafiken innerhalb von geometrischen Objekten auch dann unterstützt, wenn diese Objekte keine Physikobjekte sind. Somit können beispielweise auch Dekorations-Objekte mit Farbwechsel oder wechselnden Grafiken versehen werden.

Verwendung von Vektor-Grafiken (XAML) in den Objekten

Vektor-Grafiken haben den Vorteil, dass diese in beliebiger Größe dargestellt werden können, ohne dass deren Darstellungsqualität sich ändert. Diese werden niemals "pixelig" dargestellt.

Anbei wird eine XAML-Grafik in einem Kreis-Objekt dargestellt und in der Größe verändert.

Man erkennt, dass die Grafik immer scharf dargestellt wird, unabhängig von der dargestellten Größe.

XAML-Dateien sind im Prinzip XML-Dateien, in denen die Grafiken definiert sind. Damit diese Grafiken in PLC-Lab verwendet werden können müssen die Dateien bestimmte Kriterien einhalten.

Die Elemente innerhalb der XAML-Datei müssen in einer Viewbox gekapselt sein:

<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Fill"> 
    ....
    ....
</Viewbox>

Beispiel

Über folgendes XAML-Snippet wird ein Pfeil dargestellt.

<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Fill">
 <ContentControl Content="&#x279B;"/>
</Viewbox>

Wo werden die benutzerdefinierten Grafik-Dateien eines Anlagenprojekts gespeichert?

Wird in einem Objekt eine benutzerdefinierte Grafik verwendet, dann wird diese Grafik-Datei (also z.B. die Datei mit der Endung .JPG oder .PNG) in das Verzeichnis des Anlagenprojekts kopiert. Diese Datei muss bei der Weitergabe des Anlagenprojekts dann ebenfalls mitgegeben werden. Wird ein Anlagenprojekt über "Speichern unter" an einen anderen Ort und unter einem anderen Namen abgespeichert, dann erfolgt das Kopieren der im Projekt verwendeten benutzerdefinierten Grafikdateien automatisch.

Wird ein Objekt, welches eine benutzerdefinierte Grafik anzeigt, in die Zwischenablage kopiert und in einem anderen Projekt eingefügt, dann findet ebenfalls ein solcher Kopiervorgang statt. Wichtig dabei ist, dass die Ursprungsdatei beim Einfügen des Objekts in das neue Projekt noch vorhanden, bzw. noch erreichbar ist.

Mitgelieferte grafische Symbole (Flasche, Kiste, Motor, ...)

Nach der Installation von PLC-Lab finden Sie in den eigenen Dokumenten den Ordner PLC-Lab-Editor. Hier finden Sie zum einen Beispielprojekte und zum anderen im Ordner Items nützliche grafische Symbole: Flaschen, Kisten (hoch, flach), Bälle, usw.