 |
Funktionsblöcke und Blockverbindungen
Die Funktionsblöcke sind die Grundbausteine eines C-Control/plus-Programms. Sie sind die operativen Elemente auf den Datenverarbeitungspfaden. Diese Pfade ergeben sich durch die kettenförmige Verbindung
von Blöcken in einer Programmzelle. Datenpfade können sich in Funktionsblöcken vereinigen und münden innerhalb einer Programmzelle letztendlich in einen abschließenden Block.
Entsprechend Ihrer Funktion und Verknüpfbarkeit werden folgende Blockkategorien unterschieden:
|
 |
Rechenblöcke
Rechenblöcke verarbeiten die Daten der in sie hinein fließenden Pfade zu einem Ausgangswert, der selbst wieder auf nachfolgende Blöcke geführt werden kann. (Beispiele: Addierer-Block, Vergleicher-Block)
|
 |
Quellblöcke
Quellblöcke stehen ausschließlich am Anfang eines Datenpfades und liefern einen Ausgangswert, der auf nachfolgende Blöcke geführt werden kann. (Beispiele: A/D-Block, Frequenzmeßblock)
|
 |
Mündungsblöcke
Mündungsblöcke stehen ausschließlich am Ende eines Datenpfades und schließen die Programmoperation einer Zelle ab. (Beispiele: D/A-Block, LCD-Block, Programmverzweigungsblöcke) |
 |
Speicherblöcke
Speicherblöcke können Quelle oder Mündung von Daten in einer Programmzelle sein. Mündet ein Datenpfad in einen Speicherblock, so wird der übergebene Wert gespeichert. Durch die Verwendung des Speicherblocks als Datenquelle kann der gespeicherte Wert wieder ausgelesen werden. (Beispiele: Bit-Speicher, Byte-Speicher, Word-Speicher, Digitalports) |
 |
Stand-Alone-Blöcke
Stand-Alone-Blöcke (= einzeln stehende Blöcke) haben keine Anbindung an einen Datenpfand und führen unmittelbar zur Ausführung einer entsprechenden Programmoperation. |
 |
Datentypen
Welcher Natur sind die Daten, die entlang der Datenpfade von Funktionsblock zu Funktionsblock gelangen? Über die meisten Blockverbindungen werden einfache numerische Werte weitergereicht. Außerdem gibt es aus mehrerer' Werten zusammengesetzte Uhrzeit- und Datumsinformationen sowie Strings (Zeichenketten).
Der C-Control/plus Steuercomputer verarbeitet ausschließlich ganzzahlige numerische Daten - so genannte „Integerzahlen". Berechnungen erfolgen stets mit einer Breite von 16 Bit. Gespeichert werden Werte in der Breite von 1, 8 oder 16 Bit.
Ein Wert mit einer Breite, von 8 Bit heißt Byte und kann nur nichtnegative Werte von 0 bis 255 aufnehmen. Ein Wert mit einer Breite von 16 Bit heißt Word und reicht von -32768 bis +32767.
Achten Sie bei allen Berechnungen darauf, dass die Ergebnisse diese Grenzwerte nicht über- oder unterschreiten, da es sonst zu so genannten „Überläufen" kommt! |
 |
Blockvorrat des C-Control/plus Steuercomputers Wichtiger Hinweis!
Lesen Sie unbedingt auch die aktuellen Funktionsbeschreibungen zu den Blöcken in der Online-Hilfe. Dort sind dann eventuelle letzte Änderungen und Ergänzungen berücksichtigt, die erst nach dem
Redaktionsschluss dieser Anleitung in das System aufgenommen wurden.
Allgemeines
Zur universellen und flexiblen Gestaltung von Programmabläufen durch den Anwender verfügt der C-Control/plus Steuercomputer über einen Vorrat definierter Funktionsblöcke.
Jede Programmzelle enthält einen oder mehrere abschließende Blöcke (Mündungs-, Speicher- oder Stand-Alone-Blöcke). Die Reihenfolge bei der Berechnung der abschließenden Blöcke innerhalb einer Zelle ist nicht definiert! Daher sollte eine Zelle z.B. nur dann mehrere Ausgangsports beeinflussen, wenn die Reihenfolge dabei unerheblich ist. Beispielsweise
ist in einer Alarmanlagenapplikation sicher nebensächlich, ob in Bruchteilen einer Sekunde zuerst das Licht und dann die Sirene oder umgekehrt angeschaltet wird. Bei Ansteuerung eines externen Chips ist die erforderliche Sequenz der Steuerssignale jedoch meist eindeutig vorgeschrieben. Die Berechnung der Portsignale
muss dann auf mehrere aufeinander folgende Zellen aufgeteilt werden.
Blockparameter
Einige Blockarten fordern die Eingabe bestimmter Parameter. Dafür stehen im Programm entsprechende Dialogfenster zur Verfügung, die per Popup-Menü aufgerufen werden können. Das Popup-Menü für einen Block erscheint nach Klicken mit der rechten Maustaste auf den Block und enthält unter anderem den Eintrag „Eigenschaften". Wählen Sie diesen Menüpunkt, um den Parameterdialog zu öffnen.
|
 |
Ein-/Ausgabeblöcke (Ports)
Die Portblöcke dienen zum Zugriff auf die Digital- und Analogports des Steuercomputers, auf den Frequenzmeßeingang sowie zur Ausgabe von Tönen über den BEEP-Port. Außerdem ermöglichen der LCD-Block sowie der Keyboard-Block eine einfache Einbindung des LCD-Moduls bzw. der 12-Tasten-Folientastatur, die beide als Zubehörteile mit dem Application Boards ausgeliefert werden.
- Ein Digitalport-Block steht für einen der 16 digitalen Ports des Steuercomputers und kann als Digitaleingang abgefragt oder als Digitalausgang gesetzt werden. Als Parameter
muss die Nummer des Ports angesprochenen Port eingegeben werden (1...16).
- Ein Byteport-Block steht für eine Gruppe von jeweils acht der 16 Digitalports, die gemeinsam, also als Byte, angesprochen werden. Die Digitalports 1...8 bilden dabei den Byteport 1, die Digitalports 9...16 den Byteport 2. Ein Byteport kann eingelesen oder gesetzt werden. Als Parameter ist die Eingabe der Byteportnummer (1 oder 2) erforderlich.
- Ein Wordport-Block steht für den gemeinsamen Zugriff auf alle 16 Digitalports, also als Word. Der Wordport kann gelesen und gesetzt werden.
- Ein A/D-Wandler-Block steht für einen der 8 Analogeingänge des Steuercomputers. Ein A/D-Wandler-Block kann nur als Eingang benutzt werden. Als Parameter ist die Eingabe der Nummer des A/D-Eingangs (1...8) erforderlich.
- Ein D/A-Wandler-Block steht für einen der 2 Analogausgänge des Steuercomputers. Ein D/A-Wandler-Block kann nur als Ausgang benutzt werden. Als Parameter ist die Eingabe der Nummer des D/A-Ausgangs (1 oder 2) erforderlich.
- Der Frequenz-Block dient zur Messung der Frequenz [Hz] des am DCF/FREQ-Port anliegenden Signals (bis ca. 5kHz). Ist eine DCF77-Aktivantenne angeschlossen, so beträgt der gemessene Wert während der Synchronisation 1 Hz. Der Frequenz-Block kann nur als Eingang benutzt werden.
- Der Tastatureingabe-Block dient zum Zugriff auf eine am Application Board angeschlossene 12-Tasten-Tastatur. An seinem Ausgang liefert der Tastatureingabeblock den ASCII-Wert der gedrückten Taste oder 0, wenn keine Taste gedrückt ist. Lesen Sie die vollständige Funktionsbeschreibung in der Online-Hilfe!
- Der LCD-Block dient zur Ausgabe von Texte-n und Zahlenwerten auf dem am Application Board angeschlossenen 2*16-Zeichen LCD. Lesen Sie die vollständige Funktionsbeschreibung in der Online-Hilfe!
- Der Tonausgabe-Block dient zur Ausgabe von Tönen (Rechteckschwingung) am BEEP-Port des Steuercomputers. An seinen drei Eingängen werden dem Block Werte für Tonhöhe (a), Tondauer (b) und Pause (c) nach dem Ton zugeführt. Die Frequenz des ausgegebenen Tones ergibt sich aus dem als Tonhöhe zugeführten Wert nach der Formel
freq = 250000 / ton [Hz]
Für Dauer und Pause beträgt die Einheit der zugeführten Werte 20 Millisekunden. Werden dem Tonausgabe-Block also als Tonhöhe der Wert 586, als Dauer 10 und als Pause 3 zugeführt, wird für 10*20=200 Millisekunden ein Ton von etwa 440 Hz (Kammerton A) ausgegeben, gefolgt von einer Pause von 3*20=60 Millisekunden.
Bleibt der Pause-Eingang (c) offen, beträgt die Pause 0 ms, bleibt der Dauer-Eingang (b) offen, wird ein Dauerton ausgegeben. Ein Dauerton kann durch Zuführen des Wertes 0 als Tonhöhe abgeschaltet werden.
Bleiben alle Eingänge offen, wird die im Parameter-Dialog eingegebene Melodie abgespielt (siehe Online-Hilfe!).
|
 |
Berechnungsblöcke (Mathematik)
-
Zur Programmierung des Steuercomputers stehen folgende mathematische Rechenblöcke zur Verfügung:
- Summe-Block (="Addierer"); der Summe-Block liefert an seinem Ausgang die Summe aller Eingangswerte (a+b+c+d...)
- Differenz-Block; der Differenz-Block hat zwei Eingänge (a und b) und liefert an seinem Ausgang der Wert a-b;
- Produkt-Block; der Produkt-Block liefert an seinem Ausgang das Produkt aller Eingangswerte (a*b*c*d...)
- Quotient-Block; der Quotient-Block hat zwei Eingänge (a und b) und liefert an seinem Ausgang der Wert a/b;
- Divisionsrest-Block; der Divisionsrest-Block hat zwei Eingänge (a und b) und liefert an seinem Ausgang den Rest der ganzzahligen Division a/b; • Negator-Block; der Negator-Block hat einen Eingang (a) und liefert an seinem Ausgang den Wert -a
- Absolutbetrag-Block; der Absolutbetrag-Block hat einen Eingang (a) und liefert an seinem Ausgang den Wert -a, wenn a<0 ist
- Signum-Block; der Signum-Block hat einen Eingang (a) und liefert an seinem Ausgang den Wert -1, wenn a<0 ist, den Wert 1, wenn a>0 ist, sonst 0.
- Zufallsgenerator-Block; der Zufallsgenerator-Block liefert an seinem Ausgang einen Pseudo-Integer-Zufallswert nach dem Multiplikationsverfahren. Wird dem Zufallsgenerator-Block ein Wert zugeführt, wird
der interne Zufallsgenerator des Steuercomputers neu initialisiert
- Tabellenblock; ein Tabellenblock hat einen Eingang und einen Ausgang; mit einem Tabellenblock kann ein Byte-Eingangswert in einen Integerausgangswert transformiert werden. Eine wichtige Anwendung dafür ist das Umsetzen von A/D-Werten, die ja in einem Bereich von 0...255 vom Wandler geliefert werden, in eine reale physikalische Größe, z.B. in eine Temperatur. Der Eingangswert des Tabellenblocks wird dabei als Index beim Zugriff auf eine Tabelle mit maximal 255 Einträgen benutzt. Am Ausgang des Tabellenblocks erscheint der indizierte Wert. Parameter des Tabellenblocks ist der Name einer in das Projekt geladenen Tabelle (siehe Online-Hilfe!).
- Minimum-Block; der Minimum-Block liefert an seinem Ausgang den Minimalwert der anliegenden Eingangswerte.
- Maximum-Block; der Maximum-Block liefert an seinem Ausgang den Maximalwert der anliegenden Eingangswerte.
|
 |
Vergleicher-Blöcke
Vergleicher-Blöcke haben zwei Eingänge (a und b) und einen Ausgang. Abgesehen davon gibt es eine Spezialform, den Vergleich mit 0. In diesem Fall hat der Vergleicher-Block nur einen Ausgang. Der Ausgang eines Vergleicherblocks kann nur die Werte FALSCH (=0) oder WAHR
(= -1) annehmen, abhängig vom Ergebnis des Vergleichs. Die Vergleicher-Blöcke mit zwei Eingängen akzeptieren zum Vergleich neben Integerdaten auch zusammengesetzte Uhrzeit- und Datumsinformationen (siehe vorne, Abschnitt „Datentypen").
Folgende Blöcke sind verfügbar:
a<b, a<=b, a>b, a>=b, a=b, a ungleich b a=0, a ungleich 0, a<0, a>0
|
 |
Logik-Blöcke
Logik-Blöcke dienen zur Formulierung logischer Aussagen sowie zur binären logischen Verknüpfung von Daten.
- Inverter-Block; der Inverter-Block hat einen Eingang (a) und liefert an seinem Ausgang den Wert NOT a; dabei werden alle Bits des
Eingangswertes invertiert (0 -> 1, 1 -> 0)
- AND-Verknüpfungs-Block (UND); der AND-Verknüpfungs-Block liefert an seinem Ausgang die AND-Verknüpfung aller Eingangswerte
- NAND-Verknüpfungs-Block (NICHT UND); der NAND-Verknüpfungs-Block liefert an seinem Ausgang die NAND-Verknüpfung aller
Eingangswerte
- OR-Verknüpfungs-Block (ODER); der OR-Verknüpfungs-Block liefert an seinem Ausgang die OR-Verknüpfung aller Eingangswerte
- NOR-Verknüpfungs-Block (NICHT ODER); der NOR-Verknüpfungs-Block liefert an seinem Ausgang die NOR-Verknüpfung aller Eingangswerte
- XOR-Verknüpfungs-Block (EXKLUSIV ODER); der XOR-Verknüpfungs-Block liefert an seinem Ausgang die XOR-Verknüpfung aller Eingangswerte
|
 |
Zeitgeber-Blöcke
Zeitgeber-Blöcke bieten die Möglichkeit, auf die interne Echtzeituhr des Steuercomputers sowie auf den freilaufenden 20ms-Timer zuzugreifen.
- Zeitblöcke liefern an ihrem Ausgang eine Teilinformation des aktuellen Uhrzeitstandes im Steuercomputer; es gibt den Sekunden-Block,
den Minuten-Block und den Stunden-Block; über die Zeit-Blöcke kann die interne Uhrzeit auch gestellt werden, indem der gewünschte Wert
auf den entsprechenden Zeitblock geführt wird.
- der Uhrzeit-gesamt-Block liefert die komplette Uhrzeitinformation (siehe vorne, Abschnitt „Datentypen") an seinem Ausgang, z.B. zum
Vergleich mit einem Uhrzeit-Konstanten-Block (siehe unten); über einen Uhrzeit-gesamt-Block kann die Uhrzeit jedoch nicht gestellt werden!
- Datumsblöcke liefern an ihrem Ausgang eine Teilinformation des aktuellen Datums im Steuercomputer; es gibt den Tag-Block, den
Wochentag-Block, den Monats-Block und den Jahr-Block; über die Datumsblöcke kann das interne Datum auch gesetzt werden, indem
- der gewünschte Wert auf den entsprechenden Datumsblock geführt wird. Wochentage werden mit Werten von 0 (Sonntag) bis 6 (Samstag)
verarbeitet und gespeichert. Das Jahr wird nur mit den letzten beiden Ziffern verarbeitet und gespeichert. Achten Sie beim Vergleich von
Jahreszahlen auf den bevorstehenden Wechsel von 99 auf 00 mit Beginn des Jahres 2000.
- der Datum-gesamt-Block liefert die komplette Datumstinformation (siehe vorne, Abschnitt „Datentypen") an seinem Ausgang, z.B. zum
Vergleich mit einem Datum-Konstanten-Block (siehe unten); über einen Datum-gesamt-Block kann das Datum jedoch nicht gesetzt werden!
- der Zeitgeber-Block liefert an seinem Ausgang den aktuellen Stand des im Steuercomputer frei laufenden Timers (20ms-Zyklus). der Stand des
freilaufenden Timers kann jedoch nicht gesetzt werden!
|
 |
Variablen-Blöcke
- Variablen-Blöcke speichern jeweils ein Wert im Userbyte-Speicherbereich des Steuercomputers.
- Bitspeicher (Flag)-Block; ein Flag speichert in einem Bit den Wert 0 oder 1; als Blockparameter muss die Nummer der Bitspeicherzelle angegeben
werden (1...192).
- Bytespeicher-Block; ein Bytespeicher speichert Werte von 0 bis 255; als Blockparameter muss die Nummer der Bytespeicherzelle angegeben
werden (1...24).
- Wordspeicher-Block; ein Flag speichert in einem Word Werte von -32768 bis 32767; als Blockparameter muss die Nummer der Wordspeicherzelle
angegeben werden (1...12).
- Beachten Sie bitte, dass sich die Bits 1...16, die Bytes 1 und 2 sowie das Word 1 im Userbyte-Speicherbereich gegenseitig überschneiden!
|
 |
Konstanten-Blöcke
Konstanten-Blöcke liefern an ihrem Ausgang einen festen Wert. Es gibt
- Integerkonstanten, diese liefern einen konstanten Zahlenwert von -32768 bis 32767
- Textkonstanten, (nur für Ausgaben auf die serielle Schnittstelle von Bedeutung)
- Uhrzeit-Konstanten, für Vergleiche im Rahmen von Zeitschaltoperationen
- Datum-Konstanten, für Vergleiche im Rahmen von Zeitschaltoperationen
|
 |
Datenaufzeichnungsblöcke
Datenaufzeichnungsblöcke erlauben den Zugriff auf die Datei, den Speicherbereich nach dem Anwenderprogramm.
- Block „Neue Aufzeichnung beginnen"; dieser Block ist ein Stand-Alone-Block (keine Ein- und Ausgänge) und bereitet die Datei zur
Aufzeichnung neuer Werte vor. Die eventuell gespeicherten alten Werte werden dann überschrieben.
- Block „Aufzeichnung fortsetzen"; dieser Block ist ein Stand-Alone-Block (keine Ein- und Ausgänge) und bereitet die Datei zur
Aufzeichnung weiterer Werte vor. Die neuen Werte werden an die eventuell gespeicherten alten Werte angehängt.
- Block „Aufzeichnung öffnen"; dieser Block ist ein Stand-Alone-Block (keine Ein- und Ausgänge) und bereitet die Datei zum Auslesen gespeicherter Daten vor.
- Block „Wert aufzeichnen"; dieser Block schreibt den an seinem Eingang anliegenden Wert in die Datei; zuvor muss die Datei auf die
Aufzeichnung vorbereitet worden sein (Aufz. beginnen/fortsetzen)
- Block „Wert lesen"; dieser Block liest einen Wert aus der Datei und liefert den Wert seinem Ausgang; zuvor muss die Datei auf das Auslesen vorbereitet worden sein.
- Block „Aufzeichnung beenden"; dieser Block ist ein Stand-Alone-Block (keine Ein- und Ausgänge) und beendet eine Sequenz von
Aufzeichnungsoperationen; alle aufgezeichneten Werte sind erst nach Abarbeitung dieses Blockes gültig, d.h. vor Reset und Stromausfall
gesichert. Längere Aufzeichnungen sollten also in kleinere Portionen unterteilt und abgeschlossen werden!
|
 |
Serielle Schnittstelle
Die serielle Schnittstelle (RS232), über die die Anwenderprogramme vom PC in den Steuercomputer übertragen werden, kann auch im
Anwenderprogramm selbst verwendet werden. Dazu stehen folgende Blöcke zur Verfügung:
- Block „Ausgeben als Text"; dieser Block gibt den mit seinem Eingang verbundenen Text oder Wert als Text über die serielle Schnittstelle aus;
über einen Blockparameter kann angegeben werden, ob anschließend ein Zeilenvorschub- oder Tabulator angehängt werden soll.
- Block „Einlesen als Text"; dieser Block wartet auf einen über die serielle Schnittstelle empfangenen, mit einem Zeilenvorschub
abgeschlossenen Text, wandelt diesen Text in einen Integerwert um und gibt den Wert am Ausgang aus. Achtung: wird kein vollständiger Text
empfangen, bleibt das Anwenderprogramm an dieser Stelle endlos stehen!
- Block „Zeichen (Byte) ausgeben"; dieser Block interpretiert den an seinem Eingang anliegenden Wert als ASCII-Code und gibt ihn als Zeichen
über die serielle Schnittstelle aus.
- Block „Zeichen (Byte) einlesen"; dieser Block liest ein Zeichen von der seriellen Schnittstelle und liefert dessen ASCII-Code am Ausgang.
- Block „Baudrate setzen"; dieser Block ist eine Stand-Alone-Block und stellt die Übertragungsrate der seriellen Schnittstelle ein. Die gewünschte
Rate wird im Parameterdialog eingegeben (siehe Online-Hilfe).
- Block „Schnittstelle testen"; dieser Block liefert an seinem Ausgang den Wert -1, wenn ein Zeichen über die serielle Schnittstelle
empfangen wurde, sonst 0.
|
 |
Blöcke zur Programmsteuerung
Zur Realisierung vors Verzweigungen im Anwenderprogramm stehen spezielle Blöcke zur Verfügung, deren Funktionsbeschreibung Sie bitte
der Online-Hilfe entnehmen.
|