# Kanäle

> Die abstrakten Kanäle, über die ein Modell festgelegt ist (Nummer, Name, Alias, Aliasbereich, Rolle, Typ, technische Einheit, Farbe und Diagrammgruppe), und die Quelle, der Alias und der laufende Wert, die jede Einheit dahinter bindet.

Ein **Kanal** ist ein abstrakter Punkt des Modells. Datalogs, Rezepte, Bewertungen, Ereigniseinträge, Einheitenbereiche, Dashboards und Berichte beziehen sich allein auf Kanäle und nie auf Tags, und das hält jede Einheit des Modells von Bauart her verträglich. Der Bildschirm **Kanäle** (Process > Modell > Definition > Kanäle) trägt beide Hälften des Themas: oben die Kanäle, über die das Modell festgelegt ist, darunter die Einheiten und daneben die Einstellungen der jeweils gewählten Zeile, die Erklärung eines Kanals oder die Verknüpfungstabelle einer Einheit. Der Kopf lautet "Was dieses Modell misst und kommandiert, und woher jede Einheit es liest." und zählt die Kanäle und die Einheiten.

Das Lesen braucht Modelle ansehen; jede Änderung braucht Process verwalten und eine nicht gesperrte Station. Der Bildschirm trägt die Form, die jeder Bildschirm der Definition teilt (siehe [Definition](process-definition#the-one-shape-of-the-five-screens)).

## Modelldefinition: die Kanaltabelle {#model-definition-the-channel-table}

Der Kopf lautet "Sie gilt für jede Einheit: ein Kanal, der hier hinzukommt oder wegfällt, ändert die Tabelle jeder Einheit." und trägt **Kanal**, das eine Zeile anhängt.

| Befehl | Was er tut | Ausgegraut, wenn | Nicht gezeichnet, wenn |
| --- | --- | --- | --- |
| **Kanal** | Fügt am Ende der Liste einen Kanal hinzu, benannt nach dem ersten freien "Kanal N" und mit der niedrigsten freien Nummer versehen; die neue Zeile ist gewählt, mit ihren Einstellungen daneben, und in den sichtbaren Bereich gerollt. | Die Station ist gesperrt. | Der Rolle fehlt Process verwalten (der ganze Bildschirm ist dann schreibgeschützt). |
| **Kanal nach oben verschieben** / **Kanal nach unten verschieben** (Zeile) | Verschiebt die Zeile um einen Platz; jeder Kanal behält seine Nummer. | Die Zeile ist bereits die erste oder die letzte. | |
| **Entfernen** (Zeile, Warnfarbe) | Entfernt den Kanal aus dem Modell und aus jeder Einheit (siehe unten). | | |

Jede Zeile trägt die ganze Erklärung. Dieselben Felder öffnen vollständig in der Spalte Einstellungen, sobald die Zeile gewählt ist, jedes über der Zeile, die sagt, worüber es entscheidet; beide Orte ändern denselben einen Kanal, eine Änderung an einem zeigt sich also am anderen.

| Feld | Was es ist | Werte / Vorgabe | Wirkung |
| --- | --- | --- | --- |
| **Kan.-Nr.** | Die feste, vom Benutzer vergebene Kanalnummer: der stabile menschliche Bezug, der Umbenennungen und Umsortierungen übersteht, überall als `Ch<n>` gezeigt, wo Kanäle gelistet werden ("Ch1 · Setpoint"). | Eine ganze Zahl ab 1, auf dem Modell eindeutig; die niedrigste freie Nummer beim Anlegen. | Aufgezeichnete Läufe behalten sie, und das Verschieben der Zeile ändert sie nie. Eine Nummer, die ein anderer Kanal hält, wird am Feld abgewiesen und unter der Tabelle gesagt: "Kan. 3 gehört bereits zu 'Flow'. Eine Nummer benennt einen Kanal, also bleibt 'Setpoint' auf Kan. 1."; eine Nummer unter 1 antwortet "Eine Kanalnummer beginnt bei 1, also bleibt 'Setpoint' auf Kan. 1." |
| **Bezeichnung** | Der feste Bezug, den jedes Artefakt des Modells benutzt: "Datalogs, Rezepte, Bewertungen und jeder aufgezeichnete Lauf benennen ihn danach." Außerdem der Adresspunkt jeder Einheit `Process.<Model>.<Unit>.Channels.<Name>` und die Eigenschaft `Channels.<name>`, die die Bedingung eines Ereigniseintrags liest. | Freier Text; "Kanal N" beim Anlegen. | Ein sicheres Umbenennen: Die Zeile unter dem Feld zeigt die Verweise vorab, und das Übernehmen schreibt die Adressen, die Spalten der Datalogs, die Werte der Rezepte, die Kriterien und die Aliaseinträge mit, die auf den Kanal zeigen, und ebenso dessen Verweise `Channels.*` in den Bedingungen der Ereigniseinträge des Modells. Zwei Namen, die auf denselben Bezeichner bereinigt werden (Buchstaben und Ziffern bleiben, alles andere wird `_`, einer führenden Ziffer wird `_` vorangestellt), werden abgewiesen: "Der Name 'X' bildet auf den Verweis 'Channels.Y' ab, der schon von 'Z' benutzt wird." Ohne Process verwalten und solange gesperrt abgeschaltet. |
| **Aliasname** | "Der Name, den der Bediener liest. Leer zeigt den Kanalnamen. Nichts verweist auf den Aliasnamen, ihn zu ändern schreibt also nichts um." Der modellweite Anzeigename. | Freier Text; leer (der Platzhaltertext zeigt den Namen). | Die Spalte ergänzt "Dem Bediener als X gezeigt." Jede laufende Fläche, jede Wiedergabe und jeder Bericht lesen den geltenden Alias; Adressen tun es nie. |
| **Geltungsbereich des Aliasnamens** | Ob eine Einheit diesen Kanal auf ihre Weise benennen darf. Die Zelle bietet **Ganzes Modell** oder **Jede Einheit**; die Spalte schreibt beide Antworten aus: "Einer für das ganze Modell" und "Jede Einheit kann einen eigenen setzen". | Die zwei Antworten; "Einer für das ganze Modell". | "Eine Einheit, die ihn benennen darf, tut das neben ihren Verknüpfungen oder über einen Aliassatz." Mit der Antwort für das ganze Modell weist die Zelle Alias der Einheit die Änderung ab, ein Aliassatz bietet für den Kanal weder einen Eintrag an noch schreibt er einen, und nichts wird unter einem Namen je Einheit gelesen, auch wo eine Verknüpfung noch einen hält; das Zurückschalten stellt wieder her, was da war. |
| **Rolle** | "Was das Modell mit diesem Kanal tun darf: ihn lesen, ihn schreiben oder beides." | **Nur lesen** ("Abgetastet, dargestellt und bewertet. Kein Rezept schreibt ihn."), **Nur schreiben** ("Ziel eines Rezepts. Nichts tastet ihn zurück."), **Lesen und schreiben** ("Von Rezepten geschrieben und zurück abgetastet: der übliche Sollwert."); Nur lesen. | Die Rolle entscheidet, welche Quellen eine Einheit binden darf (ein abgetasteter Kanal braucht eine lesbare Quelle, ein reiner Befehlskanal eine beschreibbare), ob Rezepte den Kanal ansteuern dürfen und ob Diagramme ihn zeichnen. |
| **Typ** | Die grobe Wertekategorie: "Eine Einheit darf nur ein Tag verknüpfen, dessen Wert in diese Kategorie passt." | **Wahrheitswert**, **Ganzzahl**, **Dezimalzahl**, **Text**, **Datum und Uhrzeit**; Dezimalzahl. | Wahrheitswert nimmt ein Tag vom Typ Wahrheitswert, Ganzzahl jede Ganzzahlfamilie, Dezimalzahl jede Zahl, Datum und Uhrzeit ein DateTime, Text jede Quelle. Eine gebundene Quelle, die nicht passt, ein Tag oder eine Variable, wird auf der Zeile der Einheit gekennzeichnet. |
| **Technische Einheit** | "Worin jeder Messwert dieses Kanals geschrieben wird. Leer gelassen, wird er ohne Einheit geschrieben." | Freier Text; leer (Platzhaltertext "keine"). | Wird hinter jedem Messwert gedruckt, auf den Skalen der Diagramme und in den Exporten. Unter dem Feld zeigt die Spalte einen Beispielmesswert vom Typ des Kanals mit dieser technischen Einheit, geschrieben wie der laufende Messwert des Kanals an einer Einheit ("Liest sich als 24,53 bar"). |
| **Farbe** | Die Farbe, in der jedes Diagramm des Modells diesen Kanal zeichnet: ein Farbfeld zum Wählen und der Hexwert zum Lesen, Tippen, Einfügen oder Leeren. | Eine Hexfarbe wie `#D62728` oder leer (Platzhaltertext "Farbpalette"). | Leer übergibt die Linie der Palette, die aus dem Platz des Kanals unter den gezeichneten Kanälen eine stabile Farbe zuteilt; das Farbfeld zeigt immer die geltende Farbe und ist anders gerahmt, solange sie zugeteilt wird ("Keine Farbe erklärt: die Farbpalette teilt diese zu. Wählen Sie eine, um sie zur eigenen des Kanals zu machen." gegenüber "Die Farbe, die dieser Kanal erklärt. Leeren Sie den Hexwert, um die Linie an die Farbpalette zurückzugeben."). Die aufgelöste Farbe wird in jeden Lauf eingefroren, eine aufgezeichnete Kurve behält sie also, nachdem das Modell neu eingefärbt oder gelöscht wurde. Ein Diagramm, das Sie selbst zusammengestellt haben, behält seine eigene Farbe. |
| **Gruppe** | Das Band des gestapelten Diagramms, in dem dieser Kanal gelesen wird; das Feld bietet die Gruppen an, die das Modell schon nennt, und nimmt eine neue an. | Freier Text; leer (Platzhaltertext "ohne Gruppe"). | Kanäle, die dieselbe Gruppe nennen, teilen ein Band und eine Werteachse, jedes Band entlang der einen Zeitachse, und die Skala des Bandes trägt den Namen der Gruppe und die technische Einheit, auf die sich ihre Kanäle einigen. Leer tritt dem Band bei, das die Kanäle ohne Gruppe teilen. |

Die Reihenfolge der Zeilen ist allein Anzeigereihenfolge: Ein Kanal trägt seine Nummer, wohin er auch fällt, die Spalte der Nummer darf sich also ehrlich als 1, 5, 2 lesen. Jede Liste des Modells, die Kanäle zeigt, folgt dieser Reihenfolge und schreibt diese Nummer als Ch1, Ch5, Ch2 vor den Namen des Kanals.

Das Speichern ist die letzte Verteidigungslinie für beide Regeln: eine Nummer, die auf einem anderen Weg doppelt bis dorthin gekommen ist, wird mit "Die Kanalnummer *N* wird von mehr als einem Kanal benutzt. Im Modell gehört jede Nummer genau einem Kanal." zurückgewiesen, und zwei Namen, die auf einen Verweis fallen, mit "Mehr als ein Kanal bildet auf den Verweis 'Channels.*Kanal*' ab."

### Die Spalte Einstellungen für einen Kanal {#the-settings-column-for-a-channel}

Unter den Feldern zeichnet die Spalte das Diagramm, das jede Einheit dieses Modells auf den Bildschirm bringen wird: jeden lesbaren Kanal in voller Stärke über einem Musterverlauf, aus demselben Baukasten, mit dem die Karte Kanäle eines Einheitenbereichs gezeichnet wird. Darunter "Farbe und Gruppe entscheiden, wie dieser Kanal in jedem Diagramm des Modells gezeichnet wird." und wo der gewählte Kanal landet: "Im Band Druck gelesen, auf einer eigenen Skala.", "Im obersten Band gelesen, mit den Kanälen, die keine Gruppe benennen.", "Mit jedem anderen Kanal gelesen, auf einer Skala." oder "Ein Ziel eines Rezepts wird nicht abgetastet, also zeichnet ihn kein Diagramm." bei einem Kanal mit Nur schreiben.

### Einen Kanal entfernen {#removing-a-channel}

**Entfernen** bestätigt mit der Reichweite, gezählt, bevor sich etwas bewegt: "Kanal 'Flow' (Kan. 3) aus jeder Einheit dieses Modells entfernen? Das entfernt außerdem 2 Datalog-Spalten, 1 Sollwert eines Rezepts und 3 Verknüpfungen von Einheiten. Das lässt sich nicht rückgängig machen." (oder "Sonst verweist nichts darauf. Das lässt sich nicht rückgängig machen."). Die Schaltflächen lauten **Entfernen** und **Den Kanal behalten**. Das Entfernen kehrt Datalog-Spalten, Rezeptsollwerte, Segmentziele, Verknüpfungen von Einheiten, Bewertungskriterien (ein Kriterium, das den Kanal als Bezugskanal genannt hat, verliert diesen Bezug) und Aliaseinträge heraus. Ein abgewiesenes Speichern stellt alles zurück.

## Je Einheit: die Einheitenliste {#per-unit-the-units-list}

Der untere Bereich listet die Einheiten des Modells in ihrer Reihenfolge, mit **Einheiten verwalten** ganz am Ende seines Kopfes (es öffnet die Seite des Modells, wo Einheiten hinzugefügt, benannt und entfernt werden).

| Spalte | Was sie zeigt |
| --- | --- |
| **Einheit** | Der Name der Einheit. |
| **Verknüpfungen** | Die am Modell abgelesene Abdeckung: "Noch keine Kanäle", "6 verknüpft, keiner fehlt" oder "4 verknüpft, 2 fehlen" in der warnenden Farbe. |

Nur die gewählte Einheit baut Zeilen und tastet Werte ab; die anderen Zeilen kosten nichts.

## Die Verknüpfungstabelle der gewählten Einheit {#the-binding-table-of-the-picked-unit}

Eine Einheit zu wählen öffnet ihre Verknüpfungstabelle in der Spalte Einstellungen ("Einheiten · Einheit 1"): eine Zeile je Kanal des Modells, in der Reihenfolge der Kanäle.

| Spalte | Was sie ist | Wirkung |
| --- | --- | --- |
| **Kanal** | `Ch<n> · Name`. | Schreibgeschützt. |
| **Rolle**, **Typ** | Die Rolle und die Kategorie des Kanals, in denselben Worten wie die Kanaltabelle oben. | Schreibgeschützt. |
| **Quelle** | Die eine Wertequelle, die der Kanal auf dieser Einheit liest oder schreibt: ein Tag aus dem [Connector](connector) oder eine Variable aus [Logic](logic), nie beides. | Die Liste bietet **(keine)** an, dann jedes aktivierte Tag eines aktivierten Geräts als "Treiber · Gerät · Tag", dann jede Variable als "Variable · Name" (oder "Variable · Ordner / Name", wenn sie in einem Ordner abgelegt ist, sodass zwei gleichnamige auseinanderzuhalten sind), reduziert auf das, was die Rolle benutzen kann: Einem abgetasteten Kanal werden lesbare Quellen angeboten, einem Kanal mit Nur schreiben beschreibbare; eine Variable und (keine) passen zu beidem. Das Wählen übernimmt sofort. Ein ungebundener Kanal tastet sich als Lücke ab, nie als Fehler. |
| **Aliasname** | "Der Name, unter dem diese Einheit den Kanal liest. Leer fällt auf den eigenen Namen des Kanals zurück." | Nur änderbar, wo der Bereich des Kanals "Jede Einheit kann einen eigenen setzen" lautet; sonst ist die Zelle abgeschaltet, und ihr Tooltip lautet "Dieser Kanal behält einen Namen für jede Einheit. Ändern Sie das in der Kanaltabelle oben." Einen Alias auf einem ungebundenen Kanal zu setzen legt die Verknüpfungszeile an; der geltende Name wird in jeden Lauf als Momentaufnahme übernommen. |
| (Warnzeichen) | Gezeigt, wenn die gebundene Quelle nicht in den Typ des Kanals passt: ein Tag, dessen Knotentyp nicht hineinpasst, oder eine Variable, deren erklärte Ausgabekategorie nicht passt. Eine Quelle, die die Station nicht auflöst, trägt keinen Typ, dem etwas widersprechen könnte, und bleibt ohne Zeichen. | Tooltip: "Der Tag-Typ 'String' ist nicht mit dem Kanaltyp 'Dezimalzahl' verträglich." oder "Der Variablentyp 'Text' ist nicht mit dem Kanaltyp 'Dezimalzahl' verträglich." |
| **Schreiben geteilt** | Bei einem beschreibbaren Kanal die anderen Einheiten, deren Verknüpfung für einen beschreibbaren Kanal auf dieselbe Quelle auflöst: Einheitennamen auf diesem Modell, "Modell · Einheit" über Modelle hinweg. | Zwei Einheiten, die sich eine Schreibquelle teilen, können nicht zusammen laufen: Der zweite Start wird unter Nennung des Namens abgewiesen. Lesevorgänge teilen sich nie. |
| **Wert** | Der laufende Messwert der gebundenen Quelle, alle 500 ms abgetastet, solange diese Tabelle offen ist, und im Zahlenformat der Station geschrieben ([Lokalisierung](settings-localization)): eine ganze Zahl ohne Nachkommastellen, eine Dezimalzahl mit den Dezimalstellen der Station, ein Datum mit Uhrzeit in den Formaten der Station. | Schreibgeschützt. |
| **Verknüpfung entfernen** (Zeile, Warnfarbe) | Leert beide Quellen der Zeile. | Der Alias bleibt. |

Eine Quelle, die die Station nicht mehr anbietet (ein entferntes Tag oder eine entfernte Variable oder ein Tag, dessen Schlüssel nun ein anderes Tag beansprucht), bleibt als "Nicht verfügbares Tag · Schlüssel" oder "Nicht verfügbare Variable · Schlüssel" auf der Zeile, abgeschaltet, mit dem Grund "Diese Quelle ist nicht mehr verfügbar; entfernen oder ersetzen Sie sie." Eine Quelle, die die Rolle des Kanals nicht mehr anbietet (etwa ein Kanal mit Nur schreiben, der an einen nur lesbaren Punkt gebunden ist), bleibt genauso benannt, mit "Dieser Kanal kommandiert nur, und diese Quelle kann nicht geschrieben werden. Entfernen oder ersetzen Sie sie." oder dem lesbaren Gegenstück. Eine solche Zeile kann nur geleert oder ersetzt werden.

Jede Änderung einer Verknüpfung speichert von selbst über das Modell. Solange die Station gesperrt ist, wird der Schreibvorgang abgewiesen ("Die Projektierung ist gesperrt, solange eine Einheit läuft."), und die Zelle geht zurück, die Verknüpfungen einer laufenden Einheit können sich also nicht unter ihr ändern; ein Lauf, der schon aufzeichnet, behält die Quellen, die er bei Start aufgelöst hat. Eine Änderung, die die Station erreicht, nachdem das Modell darunter neu geladen wurde, wird mit "Die Konfiguration der Einheit hat sich geändert. Prüfen Sie die Verknüpfung und versuchen Sie es erneut." abgewiesen. Eine Zeile, die am Ende beide Quellen zugleich benennt, erreicht die Datenbank nie: "Die Verknüpfung des Kanals '*Name*' zeigt zugleich auf ein Tag und auf eine Variable. Wählen Sie eines von beiden."

### Einen Aliassatz anwenden {#applying-an-alias-set}

Hält das Modell Aliassätze (Setup > Aliassätze), stehen unter der Tabelle eine Auswahl und **Anwenden**: "Einen benannten Satz von Kanalnamen auf die Aliasnamen oben anwenden. Diesen Satz auf eine Einheit anzuwenden überschreibt jeden Alias dieser Einheit, also fällt alles, was er nicht benennt, auf den eigenen Namen des Kanals zurück. Änderungen von Hand gewinnen, bis Sie erneut anwenden." Das Anwenden ist ein vollständiges, sichtbares Überschreiben der Aliasse der Einheit: Ein Kanal, den der Satz benennt, nimmt diesen Namen an (und legt die Verknüpfungszeile an, wenn der Kanal ungebunden ist), einem Kanal, den der Satz auslässt, wird der Alias geleert, und ein Kanal, dessen Bereich "Einer für das ganze Modell" lautet, bleibt ganz unberührt. Ein Ablauf darf außerdem einen Satz anheften, der angewendet wird, wenn der Ablauf auf der Einheit vorbereitet wird; siehe [Aliassätze](process-aliases).

## Was dieser Bildschirm nicht tut {#what-this-screen-does-not-do}

- Er erklärt keine Einheit: Eine Einheit hinzuzufügen, zu benennen und zu entfernen ist die Einheitentabelle auf der Seite des Modells ([Einheiten](process-units)).
- Er zeichnet nichts auf: Welche Kanäle ein Lauf aufzeichnet und wie oft, ist ein [Datalog](process-datalogs); die Ziele eines Rezepts stehen auf dem [Rezept](process-recipes).
- Er zeigt den laufenden Wert allein der gewählten Einheit und schreibt nie einen Wert: Ein beschreibbarer Kanal wird von einem Rezept, einer Dashboard-Komponente oder einem Befehlspunkt geschrieben.
- Farbe und Gruppe sind die Vorgaben des Modells für jedes Diagramm des Modells; ein Dashboard, das Sie zusammengestellt haben, behält die Farbe, die Sie darauf gewählt haben.
- Er ändert keine laufende Einheit: Jeder Schreibvorgang wird abgewiesen, solange die Station gesperrt ist.
