C-control


C-control

Das Mikrocontrollermodul C-Control wird vom Elektronikunternehmen Conrad Electronic produziert und vermarktet. Die seit 1994 produzierte Mikrocontrollerreihe wird heute in verschiedenen Variationen vertrieben. Neben einem auf einem Motorola (seit 2004 Freescale) MC68HC05B6 basierenden Controller in einer Standard- und Kompaktausführung (M Unit), wird seit Mitte 2004 auch die Nachfolgegeneration der C-Control I M-Unit in Form der C-Control I M-Unit 2.0 68HC908GT16 und C-Control I Micro 68HC908QT4CP verkauft. Eine Neuentwicklung stellt die seit Ende 2000 erhältliche C-Control II dar, die durch eine dritte C-Control Version, die C-Control Pro Mitte 2005 ergänzt wurde. Die C-Control wird vor allem wegen der einfachen Handhabung, dem zahlreichen Zubehör und dem großen Angebot an deutschsprachiger Literatur verwendet.

Die C-Control M Unit 2.0 (rechts) im Größenvergleich mit der C-Control Micro
Die C-Control I Station 2 im Einsatz mit einer Hutschienen-Relaisbox

Inhaltsverzeichnis

Controller-Versionen

C-Control I

Version 1.x

Vor 1996 gab es eine C-Control I Version 1.0, die allerdings nicht mit den nach 1996 erschienen C-Control I V1.1 kompatibel ist. 1996 kam die C-Control I Version 1.1 auf den Markt, welche nun nicht nur in der grafischen Programmiersprache CCPLUS, sondern auch in dem BASIC-Dialekt CCBasic programmiert werden konnte.
Die C-Control I Version 1.1 ist sowohl als "große" C-Control I Main Unit, als C-Control I M-Unit und C-Control I Station verfügbar. Gängige Kurzbezeichnungen für die C-Control I V1.1 sind "CC1", "CC1 V1.1".

Alternative Controller

Es wurden inzwischen auch alternative Controller entwickelt, welche zum Tokeninterpreter der C-Control I Version 1.1 kompatibel sind, so dass diese u.a. auch mit CCBasic programmiert werden können. Anfang 2004 wurde das CC1-OS-Project eingestellt. Das Projekt verfolgte das Ziel, die C-Control I zu erweitern und zu optimieren. Als weitere Alternativen stehen die weitgehend CCBasic-kompatiblen Open-Micro, Open-Mini und Open-Midi von Dietmar Harlos, sowie die B-Control (basierend auf Atmel Atmega32/128) von Martin Kaup zur Auswahl.

Version 2.x/1.2

Standardausführung

Seit Mitte 2004 ist auch die Nachfolgegeneration der C-Control I Version 1.1, die C-Control I Version 2.0, erhältlich. Ziel des neuen Controllers ist es, eine weitestgehende Kompatibilität zur alten C-Control I Version 1.1 zu halten. Neben der C-Control I M-Unit 2.0 wurde auch die C-Control I Micro veröffentlicht. Die Micro ist ein einzelner Chip, der ohne äußerliche Beschaltung lauffähig ist. Nach anfänglicher fehlender Möglichkeit für den Anwender eigene Assembler-Routinen zu erstellen, ist dies mittlerweile mit Einschränkungen auch für diese Controller möglich, mit einem speziellen CCASM-Assembler Maschinencode erstellen.
Die C-Control I Version 2 ist in den Ausführungen C-Control I M-Unit V2.0, C-Control I M-Unit V1.2, C-Control I Station V2.0, sowie C-Control Micro verfügbar.
Verwendete Bezeichnungen, wie "M-Unit 2", "M-Unit 2.0", "C-Control 2.0", führen oftmals zu einer Verwechslung mit der C-Control II, welche u.a. auch die offizielle Bezeichnungen "C-Control 2" trägt.

Advanced-Ausführung

Die C-Control I M-Unit Version 2.0 und C-Control I Station V2.0 sind seit 2008 zusätzlich in einer erweiterten Version erhältlich. Neben 22 KByte Programmspeicher und 240 Byte User-RAM unterstützen die sogenannten Advanced Versionen 32-Bit Gleitkomma-Arithmetik.

C-Control II

Zusätzlich gibt es seit Ende 2000 die C-Control II (auch C-Control 2 oder CC2 genannt) basierend auf dem Infineon-16-Bit-Mikrocontroller C164CI. Die C-Control 2 hat mit der C-Control I nur den Namen gemeinsam. Durch das Multithreading, die vorhandene Möglichkeit der Stringverarbeitung, 32Bit Long-Integer, sowie der 64-Bit-Gleitkommaarithmetik und den für einen Mikrocontroller sehr großen Speicher (64 kB RAM, 512 kB Flash), ist die C-Control II weiterhin die umfangreichste Variante. Durch die uneingeschränkte Möglichkeit auch größere Assembler-Routinen einzubinden (bis zu 192 kB des Flash), sind den Möglichkeiten kaum Grenzen gesetzt.
Die C-Control II ist in den Ausführungen C-Control II Main-Unit (auch CC2-Unit genannt) und C-Control II Station (auch CC2-Station genannt) verfügbar.

C-Control Pro

2005 wurde die C-Control-Serie um die C-Control-PRO-Familie erweitert. Diese Units besitzen im Vergleich zur C-Control-I-Familie deutlich mehr Speicher und Hardwareressourcen. Es sind ohne externe Erweiterungen 2 kB(MEGA32) bzw. ca. 2,6 kB(MEGA128) RAM, ca. 15 kB bzw. ca. 110 kB Flash für Anwenderprogramme, sowie 1 kB bzw. 2 kB EEProm-Speicher verfügbar. Die C-Control-PRO-Familie basiert auf RISC-Mikrocontrollern der AVR-Familie von Atmel. Die MEGA128 bietet deutlich mehr I/O-Ressourcen als jede andere bisher erschienene C-Control, wenn keine externe RAM-Erweiterung genutzt wird. Die C-Control Pro bietet ähnlich, wie die C-Control II, Multithreading. Die Programmierung kann in C-Compact oder Basic vorgenommen werden. Die beiden Programmiersprachen können gemischt werden, so kann ein Teil aus C-Compact bestehen und der andere Teil der Software aus Basic. Da es sich um ein modulares Programmiersystem handelt, können auch größere Projekte relativ einfach verwaltet werden. Universelle Module müssen, wie bereits bei der C-Control II und bei der C-Control I unter Basic++, nur einmal programmiert werden und können so wiederverwendet werden. Die C-Control IDE, enthält jedoch keinen Simulator, wie bei C-Control I und C-Control II, sondern besitzt stattdessen einen Hardware-Debugger.

Anwendungen

Mit der C-Control lassen sich einfache Automatisierungsvorgänge für den privaten, aber auch semiprofessionellen Bereich realisieren. Durch die C-Control I M-Unit 2.0 wird eine im Vergleich zur Vorgängerversion 38 Mal höhere Ausführungsgeschwindigkeit erreicht. Auch der Umgang mit dem I²C-Bus, externen Komponenten oder LC-Displays wurde vereinfacht.

Die C-Control II wird sogar sehr häufig im professionellen Bereich eingesetzt. Durch umfangreiche Programmmodule kann verschiedenste Hardware auf einfachste Weise eingebunden werden. Die C-Control II ist auch in der Heimautomatisierung sehr beliebt, da ein Controller ausreichend Ressourcen hat, um hier alles zu steuern bzw. zu regeln. Bei der Wahl des Controllers spielt oft auch die Ausführungsgeschwindigkeit eine wichtige Rolle. Verschiedene Versuche von Benchmarks haben aber gezeigt, dass ein Geschwindigkeitsvergleich der aktuellen Controller sehr stark von der Anwendung und damit von den vom Controller zur Verfügung gestellten Ressourcen abhängt. Prinzipiell sind die einzelnen C-Control-Familien untereinander nicht direkt vergleichbar, da sich u.a. der Funktionsumfang der einzelnen Betriebssysteme zu stark unterscheidet.

Jede C-Control-Variante hat demnach ihre Vor- und Nachteile.

Programmierung

C-Control I

Die für die Programmierung der C-Control I erhältliche C-Control I Software CD von CONRAD beinhaltet die Programmiersprachen BASIC++ und CCBASIC. Alternativ lässt sich für die C-Control I Version 1.1 auch mBasic, die C-ähnlichen Sprache CCCCC oder das für das Open-Control Projekt entwickelte, abwärtskompatible OCBASIC einsetzen.

Die C-Control I Version 1.1 kann außerdem mit Assemblersprache programmiert werden. Für die C-Control I M-Unit 2.0 und C-Control Micro wird allerdings ein spezieller Assembler namens CCASM benötigt, da sich nur mit CCASM signierte Programme auf den neuen C-Controls starten lassen.

Main() ' Dies ist ein Kommentar

FUNCTION Main()
 DEFINE i AS BYTE
 DEFINE MeinString AS STRING * 10
 
 LCD.INIT
 LCD.CLEAR
 FOR i = 1 TO 10
  MeinString = "Wert von i = " & STR(i)
  LCD.PRINT MeinString
 NEXT i
 LCD.OFF
END FUNCTION

C-Control-I-Version-2.0-Beispiel in BASIC++ mit dynamischen Strings und LC-Display-Ausgabe

C-Control II

Die Programmierung der leistungsstärkeren C-Control II erfolgt dagegen mit der Programmiersprache C2. Allerdings können hier auch Assemblerroutinen leicht eingebunden werden. Auch ein direktes Programmieren der C-Control II ohne Betriebssystem ist ohne weiteres möglich. Das Betriebssystem kann jederzeit wieder neu aufgespielt werden.

thread main
{byte second;
 stports.init();
 stports.LCDlight(1);
 lcdext.init();
 lcdext.print("Hello World");
 second=system.second(); 
 
 loop
 {
  lcdext.line(2);
  lcdext.time(0);
  stports.togLED(1);
  sleep 490;
  stports.togLED(1);
  wait system.second()!=second; //Auf Sekundenwechsel warten
  second=system.second();
 }
 
}

C2-Beispiel mit LC-Display-Ausgabe bei einer C-Control-II-Station (Uhr mit im Sekundentakt blinkender LED

thread main
{byte second;
 lcdext.init();
 lcdext.print("Hello World");
 second=system.second(); 
 
 loop
 {
  lcdext.line(2);
  lcdext.time(0); //Aktuelle Zeit ausgeben Format: 2=hh:mm:ss
  sleep 500;
  lcdext.goto(2,2);
  lcdext.put(' '); //Doppelpunkt mit Leerzeichen überschreiben
  lcdext.goto(2,5);
  lcdext.put(' ');
  wait system.second()!=second; //Auf Sekundenwechsel warten
  second=system.second();
 }
 
}

C2-Beispiel mit LC-Display-Ausgabe bei einer C-Control-II-Unit mit externem LCD (Uhr mit im Sekundentakt blinkendem Doppelpunkt)

C-Control Pro

Die C-Control Pro enthält wie die C-Control I & II einen vorinstallierten Tokeninterpreter, welcher bei einem Programmdownload ggf. automatisch aktualisiert wird. Im Gegensatz zur C-Control I können die Token nicht nur aus einem BASIC- sondern auch aus einem C-Quelltext kompiliert werden, und das sogar gemischt. Allerdings ist die C-Control Pro im Gegensatz zur B-Control, welche ebenfalls auf ATmega-Mikrocontrollern basiert, nicht kompatibel zur C-Control I.

 DIM Text(9) AS Char                     'Char Array
 DIM X AS Word                           'Zählvariable
 LCD_Init()                              'LCD high-level initialisierung
 LCD_ClearLCD()                          'LCD löschen
 LCD_CursorOff()                         'Cursor ausschalten                                
 Text = "X:"                             'String übergeben
 DO WHILE True                           'Endlosschleife                                          
   LCD_Locate(1,1) : LCD_WriteText(Text) 'Schreibe an Position 1,1 des LCDs das Char Array
   LCD_Locate(1,3) : LCD_WriteWord(X,4)  'X wird vierstellig an Position 1,3 am LCD ausgegeben
   X = X+1                               'Zählervariable um eins erhöhen
   AbsDelay(100)                         'kurze Pause 
 END WHILE                               'Schleifenende

C-Control PRO Beispielcode, um einen Zählwert in Basic auszugeben

    word n;
    char num[8];
    LCD_Init();                     // Display initialisieren
    LCD_ClearLCD();                 // Display löschen
    LCD_CursorOff();                // Display Cursur ausschalten
    for (n=0; n<256; n=n+1)
    {
        Str_WriteWord(n,16,num,0,2);// Wort n in ASCII String konvertieren
        LCD_CursorPos(0);           // LCD Cursor positionieren
        LCD_WriteText(num);         // String num ausgeben
        AbsDelay(100);              // Verzögerung um 100ms
    }

eine Ausgabe auf das LCD in C-Compact

Übersicht über die verwendeten Programmiersprachen

Programmiersprache Zielplattform Ausgabe-Format Syntax/Paradigma Datentypen Strings/Arrays Stackverarbeitung Einschränkungen
CCBASIC 1.1 C-Control I Version 1.1 Bytecode/Maschinencode BASIC (imperativ) 16 Byte (8 Bit), Word (16 Bit) keine fest max. 6 kB (ohne DLL-Patch)
CCPLUS 1.1 C-Control I Version 1.1 Bytecode grafisch 16 Byte (8 Bit), Word (16 Bit) keine fest max. 6 kB (ohne DLL-Patch)
CCCCC 1.1 C-Control I Version 1.1 Bytecode C (modular) 16 Char (8 Bit), Int (16 Bit) keine fest keine
OCBASIC 1.1OC Open-Control, C-Control I Version 1.1 Bytecode/Maschinencode BASIC (modular) 16 Byte (8Bit), Word (16Bit) keine fest keine
AS05 1.1 C-Control I Version 1.1 Maschinencode Assembler (imperativ) 8 8 Bit keine dynamisch keine
BASIC++ 2.0 C-Control I Version 1.1, C-Control I Version 2.0 Bytecode BASIC (modular) 32 Byte (8 Bit), Word (16 Bit), Float (32 Bit), String (64 Byte) Strings, (EEPROM-) ChipRam, Arrays fest (optional dynamisch) keine
CCASM 2.0 C-Control I Version 2.0 Maschinencode Assembler (imperativ) 8 8 Bit keine dynamisch Code wird autorisiert, kein freier Zugriff auf alle Ressourcen
C2 II C-Control II Bytecode/Wordcode vereinfachtes C (modular) 64 Byte (8 Bit), Int (16 Bit), Long (32Bit), Float (64 Bit), String (32 Byte) Strings, Arrays, eigene Datentypen dynamisch keine
CompactC Pro C-Control Pro Bytecode C (modular) 32 Char/Byte (8 Bit), Word/Int (16 Bit), Float (32 Bit) Strings, Arrays dynamisch keine
Basic Pro C-Control Pro Bytecode BASIC (modular) 32 Char/Byte (8 Bit), Word/Int (16 Bit), Single (32 Bit) Strings, Arrays dynamisch keine

Die unterstützten Datentypen, die Möglichkeit mit Strings und Arrays zu arbeiten und die Stackverarbeitung werden im Wesentlichen durch das auf dem Mikrocontroller implementierten Betriebssystem vorgegeben.

Übersicht technische Daten

Controller Betriebssystem Takt Programmspeicher ASM-Speicher Datenspeicher User-RAM I/Os* ADC Referenzspannung PWM
C-Control I Version 1.1 Single-Threading 02 2 MHz 008 8 kB 0,249 kB 0088 kB (=Programmspeicher) 00024 24 Byte 3535 8 Bit 2,5 V - 5,0 V 2
C-Control I Version 1.2 Single-Threading 02 2 MHz 009,5 9,5kB 0,5 kB (=Programmspeicher) 009,59,5 kB (=Programmspeicher) 00064 64 Byte 2929 8 Bit 5,0 V 2
C-Control I Version 2.0 Single-Threading 08 8 MHz 009,5 9,5 kB 0,5 kB (=Programmspeicher) 009,59,5 kB (=Programmspeicher) 00140 140Byte 2929 8Bit 5,0 V 2
C-Control I Version 2.0 Advanced Single-Threading 08 8 MHz 0022 22 kB 0,5 kB (=Programmspeicher) 002222 kB (=Programmspeicher) 00240 240Byte 2929 8Bit 5,0 V 2
C-Control I Micro Single-Threading 03,2 3,2 MHz 002 2 kB 0,5 kB (=Programmspeicher) - 00024 24 Byte 066(5) 8 Bit 5,0 V -
C-Control II Multithreading (max. 255 Threads) 20 MHz 128 128 kB + 128 kB Const. 192 kB 128kB(192kB) 65536 64 kB 3434 10 Bit 4,096 V 3
C-Control Pro Mega 32 Multithreading (max. 16 Threads) 14,7456 MHz 015 15 kB - 001 1 kB 02048 2kB 3030 10Bit 2,5V - 5,0V 2
C-Control Pro Mega 128 Multithreading (max. 16 Threads) 14,7456 MHz 110 110 kB - 002 2 kB 02662 2,6kB 5151(32) 10Bit 2,5 V - 5,0 V 3

* Anmerkungen zu den I/Os:
Es wurden alle I/O-Ports inkl. AD-Ports und Sonderfunktionen berücksichtigt, die aus dem Anwenderprogramm bedient werden können. Das schließt auch Host-, Starttaster, (nutzbare) Status-LEDs und I²C-Bus ein. Ports für RxD und TxD der (ersten) RS232 wurden nicht mitgezählt, ebenso die Ports für den CAN-Bus der C-Control II. Für die C-Control Pro 128 wurde der Wert der nutzbaren I/Os bei Nutzung einer externen RAM-Erweiterung in Klammern geschrieben.

Literatur

Die C-Control zeichnet sich durch ein großes Angebot an deutschsprachiger Literatur aus. Der Einstieg in der Welt der Mikrocontroller erfolgt daher meist mit der C-Control. Die zahlreichen Bücher und Internetseiten greifen dabei sowohl Themen für Anfänger als auch Fortgeschrittene auf.

Literaturliste

Sortiert nach Erscheinungsdatum:

C-Control I Version 1.1

  • Burkhard Kainka, Martin Förster: C-Control-Anwendungen, Franzis Verlag: Poing 1998, ISBN 3-7723-5514-5
  • B. Kluth/C. Kluth: Erfolgreich automatisieren mit dem C- Control Basic System, Franzis Verlag: Poing 1999, ISBN 3-7723-4984-6
  • Burkhard Kainka: Messen, Steuern, Regeln mit dem C-Control/Basic-System, Franzis Verlag: Poing 2000, ISBN 3-7723-6735-6
  • Burkhard Kainka: C-Control Hardware-Erweiterungen, Franzis Verlag: Poing 2000, ISBN 3-7723-5705-9
  • B. Kluth/C. Kluth: C-Control-Station, Franzis Verlag: Poing 2000, ISBN 3-7723-8165-0

C-Control I Version 2.0

  • Stefan Tappertzhofen: Messen, Steuern und Regeln mit C-Control M-Unit 2 - 2. aktualisierte Auflage, Franzis Verlag: Poing 2007, ISBN 3-7723-5488-2

C-Control II

  • Burkhard Kainka, André Helbig: Messen, Steuern, Regeln mit C-Controll II, Franzis Verlag: Poing 2003, ISBN 3-7723-4054-7

C-Control Pro

  • Reiner Schirm, Peter Sprenger: Messen, Steuern und Regeln mit C-Control Pro, Franzis Verlag: Poing 2007, ISBN 3-7723-4097-0

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Control engineering — Control systems play a critical role in space flight Control engineering or Control systems engineering is the engineering discipline that applies control theory to design systems with predictable behaviors. The practice uses sensors to measure… …   Wikipedia

  • Control chart — One of the Seven Basic Tools of Quality First described by Walter A. Shewhart …   Wikipedia

  • Control (Janet Jackson album) — Control …   Wikipedia

  • Control (альбом) — Control …   Википедия

  • Control (2007 film) — Control Film poster showing lead actor Sam Riley as Ian Curtis Directed by Anton Corbijn Produce …   Wikipedia

  • Control reconfiguration — is an active approach in control theory to achieve fault tolerant control for dynamic systems [1]. It is used when severe faults, such as actuator or sensor outages, cause a break up of the control loop, which must be restructured to prevent… …   Wikipedia

  • Control Myself — Single by LL Cool J featuring Jennifer Lopez from the album Todd Smith …   Wikipedia

  • control — con·trol vt con·trolled, con·trol·ling 1: to exercise restraining or directing influence over esp. by law 2: to have power or authority over precedent control s the outcome in this case 3: to have controlling interest in control n …   Law dictionary

  • control — sustantivo masculino 1. Examen o comprobación de personas o cosas cuyo conocimiento interesa: Realicé un control de matemáticas. La directora lleva el control de los alumnos que faltan a clase. 2. Vigilancia: Ese preso está sometido a fuerte… …   Diccionario Salamanca de la Lengua Española

  • Control (Janet Jackson song) — Control Single by Janet Jackson from the album Control …   Wikipedia

  • Control valves — are valves used to control conditions such as flow, pressure, temperature, and liquid level by fully or partially opening or closing in response to signals received from controllers that compare a setpoint to a process variable whose value is… …   Wikipedia


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.