Home

Anleitung - C

image

Contents

1. A B C B E H J K VEE SV L vec tv POWER SUPPLY ET 10uF 35V GND K35 R4 K37 3K371 O K36 E K13 R3 Vint A In dE i 10k mL R5 1171 41 mm l escht eg GND2 LCD 0 gt D TL 7757 R6 11K 1 O Ku GND O K42 _ T O Kuh R2 1K 1 Swi O K26 e 15xTaster u RESET e CH 100n ee 2 R21 1K71 O N 29 C Control ll 4 d S a I pao oa 140K47 VEC 12V 15 power og GND 30 R20 1K 1 is Y30 I paus pu H KB SVint 2 5 PHA pH5 Peksi SE JI on op Ps 1 vele O pue PHT Han cnoz Lcbeivo H vor cnn 4 0 7 G O GND op 22 e S2fico ab cup Oe es G R 9 A R18 1K 1 O op emo Pos En 61 p17 pie 8 A ue a er Beep 27 peep piM 1 H SF pis Pena D ns LED I O DRIVE DL RIT 1 19 O 39 LEC cra ocre prp SIT za P 2 D LZ an i Hr 0 E p 2 aller re PIO 5 p pl 1K 1 O 28 LM aoco anc 1 1222 221 GND op P i Taster GNO 4 9 O Y O Rio L it 3 RI 2 anc 3 NU SET RSTOUT ES E i RESET pel 1K 1 ae 220k oi 32 M aoa ancs pex 21 RSTI D D eh LED BOARD 2 2 O A E en 21 800 op Boot y x 1 NE O tH ou Pte 211 os op D We gt T2 gt O Y Se 2c ser 12c spa po 2 1 SCAN TxD CAN RxD ES D I nr PR SS ds A vn
2. Vorgesehen ist die Installation im Verzeichnis Userlib als Bibliotheksmodul Die Dotai station_treiberl1 zip finden Sie auf der beiliegenden CD UTILITIES F r den Betrieb der 2W Bus Sensoren mit Modem 2W SM F r den Betrieb der 2W Bus Sensoren mit Standardmodem F r den Betrieb des Powerline Modems mit PLRS Die Utilities werden je nach Anwendung separat installiert und bieten dem Programmierer schnellen Zugriff auf das Zubeh r zur C Control Il Station 10 1 can c2 10 1 1 Initialisierung function init int speed int globalMask int specialMask Vor der Daten bertragung auf dem CAN Bus mu das System initialisiert werden Der erste Parameter der init Funktion dient zur Festlegung der bertragungsgeschwindig keit bertragungsgeschwindigkeit SPEED_50 50 kbit s SPEED_62 62 5 kbit s SPEED_125 125 kbit s SPEED_250 3 250 kbit s SPEED_500 4 500 kbit s Wenn Sie einen ung ltigen Wert f r speed bergeben wird die bertragungsrate auf 125 kbit s festgesetzt Zur Akzeptanzfilterung eingehender CAN Nachrichten m ssen zwei Maskenwerte globalMask und specialMask spezifiziert werden globalMask gilt f r alle 15 92 10 Module Onrao Kan le f r den 15 Kanal channel 14 gilt zus tzlich die specialMask die vom Mikrocontroller intern mit der globalMask UND verkn pft wird Die Akzeptanzmaske bestimmt welche Bits der Message ID einer eingehenden Nachricht
3. 11 Systemprogrammierung 11 1 1 TASKING C C Tools Das Betriebssystem der C Control Il Unit wurde mit der Vollversion der TASKING C C Tools entwickelt Eine Demoversion dieser Tools finden Sie aut der Utility CD Diese Tools enthalten u a eine Entwicklungsumgebung mit Editor und Projekt verwaltung einen integrierten C C Compiler einen Assembler und Linker N here Informationen entnehmen Sie bitte den Dateien und Installationshinweisen auf der CD 11 1 2 Erg nzungen der virtuellen Maschine und nderungen am Betriebssystem In das Segment 3 des externen FLASH EEPROMs der Mikrocontrollerschaltung k nnen Sie kleine Systemroutinen zur Erg nzung der virtuellen Maschine laden Diese k nnen aus C2 Programmen heraus mit den Funktionen system call und system jump aufgerufen oder per Funktion system hook als Interrupt Handler f r Digitalports oder den Systemtimer installiert werden siehe Kapitel 711 Die Routinen in Assembler C oder C k nnen mit Hilte der Demoversion der Tasking C C Tool bersetzt werden Beachten Sie dabei die Limitierungen der Demoversion Das erzeugte Ausgabefile im Intel Hexformat l t sich mit Hilfe der C2 Entwicklungsumgebung in das Segment 3 der Unit bertragen Die Adressen Ihrer Funktionen finden Sie in der erzeugten Map Datei Einen passenden Compiler finden Sie in der Vollversion der TASKING C C Tools Aktuelle Informationen zu Preisen und Support finden Sie ab Verf gbarkeit
4. xor exklusiv oder 1 xor 0 O xor 0 14 3 1 lt 2 2 lt 3 1 lt 2 3 lt 2 SSA ena Eine Besonderheit bilden logische Operationen mit loat Operanden Hier findet vor der logischen Verkn pfung eine automatische Konvertierung in einen Integerwert O oder l statt der float Wert 0 0 wird zum Integer O alle Werte ungleich 0 0 werden zu 1 Das gilt jedoch nicht f r konstante Ausdr cke die keinen echten FlieBkommawert haben z B 2 0 da diese vom Compiler als int oder Long betrachtet werden ZB float x int result x 2 result not x result wird O result not 2 0 result wird 3 8 7 6 Stringverkettung mit dem Operator Bei Zuweisungen an string Variablen kann auf der rechten Seite des Zuweisungs operators ein verketteter Stringausdruck stehen In der Verkettung werden Teilstrings zu einem Ergebnis zusammengef gt Die Teilstrings sind jeweils durch einen Operator voneinander getrennt Als ein einzelner Teilstring kann ein Bezeichner einer string Variable ein indizierter Bezeichner eines variablen Stringarrays ein Bezeichner einer string Konstante ein indizierter Bezeichner einer konstanten Stringarrays eine unbenannte Stringkonstante ein numerischer Ausdruck stehen Numerische Ausdr cke in der Stringverkettung m ssen in Klammern stehen wenn sie selbst Operatoren enthalten Ein numerischer Ausdruck wird als ASCII Code eines 62 8 Die Programmiersprache
5. POO 5V OS GND ue 5 N ot JRO S ke GND Jo KSE z O ol ollo OR POS Din S el pod NC S 5 Os PO 7 S sl Pl No O E Cie P3 vol 5 P4 O 138 v E 3 ES t o dE 1 less o on o C Control Il Station 4 1 Tasten 4 1 1 Reset Boot Host Der Reset Taster dient zum R cksetzen Reset des Moduls und wird in der Regel zum Start des Anwenderprogramms siehe Programmierung oder vor dem laden des Anwenderprogramms zusammen mit der Host Taste gedr ckt Eine genaue Beschreibung finden Sie im Kapitel Hardware 4 1 2 Fl F2 F3 Die Funktionstasten k nnen im Anwenderprogramm abgetragt und so zum Beispiel zur Auswahl von Betriebsarten als Ein Ausschalter oder zur Parametermanipulation verwendet werden siehe Programmierung 4 1 3 Zehnertastatur Die Zehnertastatur kann im Anwenderprogramm abgefragt werden und z B Eingabe von Betriebsparametern verwendet werden siehe Programmierung 4 2 Leuchtdioden Die C Control II Station hat acht Leuchtdioden LEDs die durch kleine Rundfenster in der Folientastatur scheinen Die LEDs dienen der Information des Anwenders ber verschiedene Betriebszust nde des Moduls Die unterschiedlichen Farben kennzeichnen die einzelnen Funktionsgruppen gr n Relais gelb und rot Anwender LEDs 4 2 1 LEDs K1 und K2 gr n Diese LEDs geben Auskunft ber den aktuellen Schaltzustand der beiden Relais K1 und K2 leuchtet die entsprechend
6. 10 Module Onrao beim Lesen einzeln als Nibble oder als Byte erfolgen Parameter der set Funktionen sind die Portnummer und der zu setzende Portzustand als Bitmaske H herwertige Bits die in einer Ausgabe nicht darstellbar sind werden ignoriert zB das Setzen eines Nibbleports auf den Wert 17 Ob10001 ist nicht m glich und wird als Setzen auf 1 Ob00001 interpretiert Bei der Ausgabe auf Einzelports f hren alle Werte ungleich O zum Setzen des Ports auf Highpegel 10 9 3 Umschalten und Pulsen Nachdem ein Port mit einer set Funktion initialisiert wurde stehen folgende Funktionen zur Verf gung function toggle int number function pulse int number Die Funktion toggle invertiert einen Port Die pulse Funktion gibt einen Nadelpuls an einem Port aus zweimaliges Invertieren kurz hintereinander Das kann zum Beispiel als clock Signal f r digitale Schaltkreise mit Triggereingang benutzt werden Beide Funktionen beziehen sich jeweils auf einen einzelnen Digitalport dessen Nummer als Parameter bergeben wird 10 9 4 Deaktivieren von Ports deact int number function deactn int number function deactb int number Wird ein Digitalport nach Aufruf einer set Funktion als Ausgang betrieben sind im Mikrocontroller spezielle Transistorstufen aktiviert die am Port einen Strom treiben Port high oder gegen Masse ziehen k nnen Port low In manchen Anwendungen sollen Digitalports als Ausgang und dann w
7. outport 15 Ports 1 bis 4 werden manipuliert state Port 1 ist 1 Port 2 bis 4 sind null 10 17 4 Port deaktivieren auf input schalten function PORTdeact byte remote_io byte tx byte outport 10 175 Byteport deaktivieren function PORTdeactb byte remote_io byte tx byte outport Auch hier werden alle in outport gekennzeichneten Ports deaktiviert z B outport 15 deaktiviert Ports 1 4 10 17 6 Port lesen function PORTread 124 10 Module CONRAD cm byte remote_io byte tx byte outport returns byte Die Funktion gibt den Portzustand als O oder 1 zur ck 10 177 Byteport lesen function PORTreadb byte remote_io byte tx returns byte Die Funktion gibt den Zustand aller Ports in einem Byte zur ck ZaDi R ckgabe 15 Ports 1 bis 4 sind 1 alle anderen O 10 178 PLRS Status lesen function get_plrs_status byte rx byte tx returns byte Gibt den Zustand aller Tasten und des Relais in einem Byte zur ck 10 179 PLRS Abfrage der Tasten function get button byte rx byte tx returns byte function get_buttonl byte rx byte tx returns byte function get_button2 byte rx byte tx returns byte Liest den Zustand der Taste und gibt O oder 1 zur ck 10 17 10 PLRS Schalten des Relais function RELon byte rx byte tx function RELoff byte rx byte tx 10 17 11 PLRS Schalten des Beepers function BEEPon byte rx byte tx function BEEPoff byte rx byte tx 125 o DO o C Control Il Station
8. o DO o C Control Il Station 8 7 3 Bitschiebeoperatoren links schieben q1 lt lt 1 3 shl 2 logisch rechts schieben 8 7 4 Vergleichsoperatoren 1 gt gt 1 5 shr 2 1 shr 1 32767 long 1 shr 1 2147483647 Vergleichsoperatoren liefern den Wert 1 minus 1 nicht 1 falls der Ausdruck wahr ist Ist der Ausdruck falsch wird das Vergleichsergebnis O Der Wer 1 entspricht hexadezimal dem Integerwert OxFFFF bzw dem Longinteger OxFFFFFFFF Operator Bedeutung ist gleich ist ungleich ist g er ist kleiner ist gr er oder gleich ist kleiner oder gleich 60 8 Die Programmiersprache 2 8 7 5 Logische Operatoren und Bitmanipulationen CNRAD ran In C2 sind logische Verkn pfungen immer Bitoperationen Es wird nicht wie beispielsweise in C C in Bit AND und logisches AND unterschieden Operator Bedeutung Beispielausdruck Ergebnis nicht Bitinvertierung 1 amp 1 1 and 0 14 3 1 lt 2 amp 2 lt 3 1 lt 2 amp 3 lt 2 und mit anschlieBender Bitinvertierung 1 lg 1 I nand 0 14 amp 3 EC E 162 16 252 i M ok 1 or U 0 or 0 14 or 1 LEZ 2 lt 3 122 32 241 SS oder mit anschlie ender Bitinvertierung Lu T L nor 0 O nor O 14 nor 1 L122 235 1 lt 2 3 lt 2 21 ds 2 61 o DO o C Control Il Station cidcid tai
9. 2 Onrao Zeichens interpretiert und als solches im Ergebnisstring eingebunden Gegebenenfalls erfolgt eine Reduzierung des Wertes auf den Bereich von 0 255 Verkettungen werden automatisch aut maximal 30 Zeichen begrenzt Beispiel f r eine Stringverkettung mit const S AAA const SA XXXX gt YYYY ZAZA er 2Ing sl string Sally string s sl bbb sa 0 uuu sall vvv sal2 www Stringzuweisung mit Verkettung s SL sa 2 S GAO ze Mates Nach dieser Anweisung enth lt s den Text bbbwwwAAAXXXXcccD 8 8 Funktionen Die virtuelle Maschine der C Control Il Unit unterst tzt die Programmierung mit Unterfunktionen Bl cke von Anweisungen die im Programm mehrfach benutzt werden k nnen in Funktionen zusammengefa t werden Beim Aufruf einer Funktion k nnen Parameter bergeben werden Die Funktion selbst kann ein Rechenergebnis zur ckgeben In C2 gibt es keine Trennung zwischen Deklaration und Definition einer Funktion Ist eine Funktion einmal in einem Modul geschrieben kann sie weiter unten in diesem Modul und allen nachfolgenden Modulen des Projektes verwendet also aufgerufen werden Der Quelltext einer Funktion besteht aus dem Funktionskopf und einem Anweisungsblock function fx 63 o DO o C Control Il Station Anweisungen 8 8 1 Funktionskopf Der Funktionskopf beginnt mit dem Schl sselwort Ansch
10. 54 GND Jeder der Digitalports des Moduls kann frei als Eingang zum Erfassen eines Schalt zustandes oder als Ausgang zum Ausl sen eines Schaltvorganges programmiert werden Die logischen Pegel betragen 0 0 7V f r AUS und 4 3 5V f r EIN 5 1 9 Digitalports fester Ausgang 41 POO 42 PO 1 43 PO 2 44 PO 3 45 PO 4 Diese Ports k nnen als Ausgang zum Ausl sen eines Schaltvorganges verwendet werden Die logischen Pegel betragen 0 0 7V f r AUS und 4 3 5V f r EIN 5 1 10 PLM Ports 36 PLM O 37 PLM 1 38 GND Die Ports dienen der Ausgabe Pulsweitenmodulierter Signale o DO o C Control Il Station 5 1 11 FrequenzmeBeingang 13 DCF 77 Eingang oder alternativer Frequenzmesseingang FRQ O 39 FRQ 1 40 GND An Klemme 13 und 39 kann die Frequenz digitaler Pulse gemessen werden 5 1 12 Niederspannungsversorgung und Akkupufferung 15 GND 16 Ausgang der stabilisierten Systemspannung 12V bei Netzbetrieb 171 GND 18 Eingang f r ein stabilisiertes 12V Netzger t oder einen 12V Akku An Klemme 18 kann ein stabilisiertes 12V Netzger t oder ein 12V Akku angeschlossen werden um das Modul vor der Montage im Schaltschrank und ohne Anklemmen der 230V Versorgungsspannung an 26 und 27 zu programmieren Beachten Sie bitte dass dieser Eingang speziell f r eine Akkupufferung vorgesehen ist und deshalb bei Anlieben der Netzspannung einen kleinen Strom in den
11. Dateityp notwendig f r B jedoch ein long und C kann nur durch einen float Typ dargestellt werden B und C werden vom Compiler im Konstantenspeicher der C Control II Station angelegt wo sie eine feste Adresse haben Spezielle Operationscodes der virtuellen Maschine der C Control II Station laden benannte und unbenannte Byte und Integer konstanten wie oben A immer immediat d h eingebettet in den Operationscode F r A wird daher kein Platz im Konstantenspeicher belegt Neben numerischen Konstanten k nnen auch Stringkonstanten benannt werden Statt des konstanten numerischen Ausdrucks mu dann eine Zeichenkette in Anf hrungszeichen nach dem Zuweisungsoperator stehen const Name Text 2B const GREETINGS Hallo C2 const TABLEHEAD Nummer tZeit tWert Stringkonstanten belegen im Konstantenspeicher der C Control nur so viele Bytes wie sie Zeichen enthalten zuz glich eines Bytes zur Speicherung der Stringl nge Im Gegensatz zu string Variablen k nnen Stringkonstanten auch mehr als 30 Zeichen enthalten Sie wer den jedoch bei Stringoperationen auf maximal 30 Zeichen reduziert 56 8 Die Programmiersprache 2 ONRAD 8 6 6 Benannte konstante Arrays Sowohl von numerischen Konstanten als auch von Stringkonstanten lassen sich benannte eindimensionale Arrays anlegen In beiden F llen steht nach dem Bezeichner ein Paar eckiger Klammern TL Nach dem Zuweisungsoperator werden jeweils durch ein Komma getrennt d
12. Einige Empfehlungen zum Test und zur Fehlersuche Es gilt der Grundsatz alles was nicht getestet wurde wird fr her oder sp ter Fehlfunktionen zeigen niemals glauben da etwas funktioniert sondern testen und wissen Testen Sie ein Programm nicht erst im vollen Ausbau Stellen Sie zun chst die Korrektheit aller einzelnen Unterprogramme Threads Funktionen sicher f gen Sie die Bestandteile st ckweise zusammen und f hren Sie immer wieder Zwischentests durch F ttern Sie Ihre Funktionen zum Test mit allen m glichen Eingabedaten nicht nur mit den f r Ihre Anwendung normalen Werten Fr her oder sp ter kommt es zu unnormalen Situationen an die Sie im Moment vielleicht nicht denken Bauen Sie in Ihr Programm Statusausgaben auf das LCD ein auch wenn Ihre Anwendung das LCD nicht ben tigt nutzen Sie freie LEDs zur Ausgabe von Statussignalen Beobachten Sie das Programmverhalten anhand der Statusausgaben und signale Kreisen Sie Fehler durch gezieltes Auskommentieren von Programmzeilen ein Nutzen Sie Breakpoints Einzelschrittbetrieb und die berwachung und Anzeige von Variablen 89 o on o C Control Il Station 9 5 2 Simulationsumfang Kern des Simulators ist dieselbe virtuelle Maschine die auch im Betriebssystem der C Control Il arbeitet Die Ausf hrung aller Speicher Steuer und Rechenoperationen ist absolut identisch Somit kann die logische und algorithmische
13. a get_something OK a do_something Fehler 68 8 Die Programmiersprache 2 Onrao 8 8 5 Typenpr fung Der C2 Compiler f hrt zu jedem Aufruf einer Funktion eine Pr fung durch ob neben der Anzahl der Parameter auch deren jeweiliger Typ der Funktionsdefinition entspricht Ein Bezeichner einer string Variablen kann z B nicht bergeben werden wenn laut Definition an dieser Stelle ein numerischer Ausdruck erwartet wird Es gelten folgende Typkompatibilitatsregeln Typ des formalen Parameters zul ssige aktuelle Parameter beim Funktionsaufruf im Funktionskopf byte int long float beliebiger numerischer Ausdruck bytel Bezeichner einer byt e Arrayvariable Bezeichner einer st ring Variable indizierter Bezeichner einer st ring Arrayvariable Bezeichner einer int Arrayvariable Bezeichner einer 1 ong Arrayvariable Bezeichner einer loat Arrayvariable unbenannte st ring Konstante Bezeichner einer st ring Variable indizierter Bezeichner einer st ring Arrayvariable Bezeichner einer st ring Konstante indizierter Bezeichner einer st ring Arraykonstante string Bezeichner einer st ring Arrayariable zusammengesetzter Typ Bezeichner einer My Type Variable z B MyType indizierter Bezeichner einer My Type Arrayvariable MyType Bezeichner einer My Type Arrayvariable Referenzen auf konstante Arrays d rfen nicht an Funktionen bergeben werden 8 8 6 Rekursion E
14. 3 121 Auf alle Bezeichner von globalen Variablen benannten Konstanten zusammengesetzten Datentypen Funktionen und Threads eines Modules kann in nachfolgenden Modulen auf die hier beschriebene Weise zugegriffen werden 8 3 4 Anweisungen und Anweisungsbl cke Anweisungen sind die Grundbausteine eines Computerprogramms Folgende Anweisungsformen werden in C2 unterschieden Variablendefinition Konstantendefinition Zuweisung Funktionsaufruf Programmsteueranweisung Eine Anweisung kann sich ber eine oder auch Uber mehrere Zeilen erstrecken ES Nach jeder Anweisung mu ein Semikolon stehen 20 int aj a 123 43 o DO o C Control Il Station Anweisungsbl cke sind Folgen von Anweisungen die durch geschweifte Klammern zusammengefa t sind z B LA a 1 0 I Nach einem Anweisungsblock ist kein Semikolon erforderlich Anweisungsbl cke k nnen statt einer einzelnen Anweisung stehen zB um mehrere Aktionen innerhalb einer Programmsteueranweisung auszuf hren zB if x gt 0 1233 a 1 w I 8 3 5 Ausdr cke Ein Ausdruck oder Term ist die Verkn pfung von Daten Variablen oder Konstanten durch Operatoren In C2 gibt es ausschlie lich numerische Ausdr cke Jeder numerische Ausdruck ergibt durch mathematische Berechnung einen Wert G ltige numerische Ausdr cke sind z B a kb e iL PX f x ke La 1977 Eine Sonderform i
15. ONRAD ee C Control Il Station Handbuch Version 2001 12 10 Conrad Electronic GmbH Hirschau Germany o C Control Il Station ONRAD ee Sehr geehrte Kundin sehr geehrter Kunde wir danken Ihnen f r Ihr Interesse und Ihr Vertrauen in unsere C Control Il Station F r zahllose Anwender ist C Control bereits seit Jahren ein Begriff f r kompakte zuverl ssige und preiswerte Steuerungsl sungen Neben klassischen Applikationen wie Heizungssteuerungen und Datenerfassungssystemen sind uns auch erfolgreiche Eins tze in der Industrieautomation der Laborforschung oder der Midi Technik in Tonstudios bekannt Vielleicht haben Sie schon mit einem unserer bew hrten Systeme C Control BASIC C Control PLUS oder der C Control Station gearbeitet Eventuell sind Sie nach einiger Zeit an deren Grenzen in Bezug auf Leistungsf higkeit und Speicherkapazit t gesto en Oder Sie haben die genannten Systeme bisher noch nicht eingesetzt weil sie nicht f r Ihre Aufgabe geeignet schienen Sicher kann C Control Il diese Probleme jetzt l sen Vergessen Sie nicht sich ber aktuelle Neuheiten bez glich C Control auf unserer Homepage www c control de zu informieren Conrad Electronic GmbH Hirschau o on o C Control Il Station Impressum Diese Bedienungsanleitung ist eine Publikation der Conrad Electronic GmbH Klaus Conrad Stra e 1 D 92240 Hirschau Alle Rechte einschli
16. Software auf CD ROM werden in der vorliegenden Form geliefert Conrad Electronic bernimmt keine Garantie daf r da die Leistungsmerkmale dieser Software individuellen Anforderungen gen gen und da die Software in jedem Fall unterbrechungs und fehlerfrei arbeitet Conrad Electronic bernimmt keine Haftung f r Sch den die unmittelbar durch oder in Folge der Anwendung der C Control Il Station entstehen Der Einsatz der C Control Il Station in Systemen die direkt oder indirekt medizinischen gesundheits oder lebens sichernden Zwecken dienen ist nicht zul ssig Sollte die C Control II Station inklusive Software Ihre Anspr che nicht befriedigen oder sollten Sie mit den Gew hrleistungs und Haftungsbedingungen nicht einverstanden sein nutzen Sie unsere l4t gige Geld Zur ck Garantie Bitte geben Sie uns die Station dann innerhalb dieser Frist ohne Gebrauchsspuren in unbesch digter Originalverpackung und mit allem Zubeh r zur Erstattung oder Verrechnung des Warenwertes zur ck 3 Handhabung Capo U 3 Handhabung Dieses Kapitel gibt einen berblick ber die Handhabung des Moduls Die n tigen Detailinformationen entnehmen Sie bitte den nachfolgenden Kapiteln dieses Handbuches Die Arbeit mit der C Control Il Station gliedert sich in drei Stufen l Programmieren des Moduls 2 Montage 3 Ausf hren des Anwenderprogramms 3 1 Programmieren des Moduls Die Programmierung des unmontierten Moduls erfolgt am PC Arbeits
17. auf der C Control Homepage www c control de 11 1 3 Implementierung eines eigenen Betriebssystems Prinzipiell k nnen Sie ein vollst ndig eigenes Betriebssystem entwerfen und in die C Control Il Unit laden Sie sollten dazu ber umfangreiche Kenntnisse in der Anwendung und Programmierung des C164CI Mikrocontrollers verf gen Au erdem ben tigen Sie eine geeignete Entwicklungsumgebung z B die Vollversion der TASKING C C Tools Bitte haben Sie Verst ndnis da wir f r die Programmierung Ihrer eigenen Betriebssysteme keinen Support leisten k nnen 126 12 Anhang Capo pe 12 Anhang 12 1 Technische Daten Hinweis detailliertere Informationen finden Sie in den PDF Dateien der IC Hersteller auf der C Control Utility CD 12 1 1 Mechanik u ere Abmessungen ca 157mm x 90mm x 70 mm Masse ca 600g 12 1 2 Umgebungsbedingungen Bereich der zul ssigen Umgebungstemperatur O C 40 C Bereich der zul ssigen relativen Umgebunggsluftfeuchte 20 60 12 1 3 Versorgungsspannung Bereich der zul ssigen Versorgungsspannung 12V 16V Bereich der zul ssigen Versorgungsspannung 230V 15 Stromaufnahme der Station bei Versorgung ber 12V Systemspannung 18 ohne externe Lasten 120mA Ladestrom der angeschlossener Batterie 18 10mA max zul ssiger Dauerstrom aus der stabilisierten 5V Spannung 14 und der 12V Systemspannung 16 der Unit 100mA Summenstrom max Leistungsaufnahme aus dem 23
18. der C Control Il Station enth lt komfortable Routinen zum direkten Ansprechen der Sensoren so dass Kenntnisse des Protokolls nicht erforderlich sind 6 2 15 A D Ports Die C Control Il Station verf gt ber 8 Ports A DO A D7 die mit dem internen 10bitA DWandler des Mikrocontrollers verbunden sind Das Betriebssystem nimmt im Hintergrund st ndig A D Wandlungen vor Zur Reduzierung von St reinfl ssen werden die Spannungssignale durch eine gleitenden Mittelwertbildung gefiltert Die AD Wandler ADO bis AD sind nach aussen gef hrt AD7 wird f r die Decodierung der Tastatur intern verwendet 6 2 16 DCF FRQ Ports Am DCF FRQO Pin kann der invertierte Signalausgang einer DCF77 Funkuhraktivantenne angeschlossen werden Der ertorderliche Pullup Widerstand ist bereits in der Unit integriert Das Betriebssystem bernimmt bei Signalempfang automatisch die Dekodierung der Datenrahmen und stellt die interne Uhr des Systems Der DCF Pin kann gleichzeitig zur Messung von Pulstrequenzen von 100Hz bis ca 30kHz benutzt werden ebenso der zweite Frequenzme pin FRQ1 Die Frequenzmessung erfolgt nach dem Prinzip der Pulsz hlung in einer Torzeit von einer Sekunde Dadurch ergeben die Z hlwerte direkt eine Frequenz in Hz Weitere Hinweise zu Funkuhrempfang und Frequenzmessung finden Sie in den Kapiteln 10 11 und 10 9 6 30 6 Hardware ONRAD Ui 6 2 17 PLM Ports Die C Control Il Station verf gt ber drei Ports Kandle zu
19. diesem Wert kehrt das System in den Hostmodus zur ck siehe 73 Im Hostmodus k nnte z B ein neues Programm von einem angeschlossenen PC bertragen und dann gestartet werden Wird quit mit dem Parameter 1 oder 255 aufgerufen f hrt das System einen Software Reset des Mikrocontrollers aus quit Ausdruck z B quit 63 zur ck in den Hostmodus quit 1 Sofware Reset 84 9 Softwareentwicklung OnrAaD G nn 9 Softwareentwicklung 9 1 Installation und Start der Integrierten Entwicklungsumgebung Mit der C Control II Station haben Sie eine Utility CD erhalten Auf dieser CD befindet sich u a die Integrierte Entwicklungsumgebung die Sie zur Programmierung der Unit ben tigen Die Integrierte Entwicklungsumgebung l uft unter den 32Bit Betriebssystemen Microsoft Windows95 98 NT 2000 Zur Installation legen Sie die CD in das CD Lautwerk Ihres PC Ist f r das CD Lautwerk der Autostart Modus aktiviert das ist die Standardeinstellung dann ffnet sich nach Einlegen der CD ein Begr ungsbildschirm Folgen Sie bitte den Hinweisen dieses Begr ungsbildschirms Wenn Sie f r Ihr CD Laufwerk den Autostart Modus deaktiviert haben laden Sie bitte die Datei starthtm aus dem Wurzelverzeichnis der CD in Ihren aktu ellen Internet Browser Wenn Sie noch keinen Internet Browser installiert haben lesen Sie bitte die Datei browsertxt im Wurzelverzeichnis der CD Nach erfolgreicher Installation der Integrierten Entwicklungsumg
20. gt Lt Jl2Jl3J 4 l5 l6JL7JL8 Ss JLs6J 7 L8 STROBE Display GND2 LCD I 0 GND2 LCD I 0 LS Die PL7 P1 LO PAL3 K314 K32 KO Ka Datei Name cc2 station main pcb2709 Letze Sicherung Donnerstag 27 September 2001 CONRAD Variante ohne Varianten C CONTROL I STATION TECHNOLOGIE Bearbeiter AM LCD 1 0 DRIVE CENTRUM Seite3 von ST TT TOTO A TOO TS TOS TOO TO gt 1 3 1 Y WNYLNAD yw sn ayrequeag 3I501ONHI3L gad pa waer z pue ________awenen auo SEA GVYNOD Zon LO sn ny oz Denn Bunsayais 32137 LOLOOZgad pa Loles 739 3WeN 19 80 E O II DIE LY E4OLO LA e a CAC 84 ER 9h GH DIE 98 14 80 s OH DIE SY s0 DIE te 10 I ZAZ EN 3 ZAZ ZA 0 1 091 ZOND Az L Pz TASTE ARES ESSE HUESOS CESE SARENET TRAE ANTAS
21. k nnen in Bytearray Variablen aus einzelnen Substrings zusammengesetzt werden siehe Bibliotheksmodul mem c2 8 4 3 Zusammengesetzte Datentypen Zur Kapselung komplexer Datenstrukturen in einem Typ k nnen aus Standardtypen byte string und anderen zuvor definierten Typen zusammengesetzte Datentypen gebildet werden Dazu steht nach dem Schl sselwort type der Bezeichner des neuen Datentyps In geschweiften Klammern folgen die Definitionen der einzelnen Felder des Typs Die Definition eines Feldes besteht aus dem Schl sselwort oder Bezeichner eines zuvor bekannten Typs sowie dem Bezeichner des Feldes Mehrere Felder sind eweils durch ein Semikolon voneinander getrennt Beispiele type Position int x int Y type MyType Position pos 46 8 Die Programmiersprache 2 OnrAaD C E float value string text Vorteile eigener Typen sind z B die bessere Lesbarkeit eines Programmes und die einfachere bergabe zusammengeh riger Daten an Funktionen also z B function fx MyType t function fx int xpos int yoos float value string text 8 5 Variablen 8 5 1 Definition von Variablen Variablen dienen zur Zwischenspeicherung von Daten w hrend des Programmablautes Vor der ersten Verwendung im Quelltext mu eine Variable durch Angabe des Datentyps und des Bezeichners definiert werden Typ Name z B int i String 8 Mehrere Variablen gleichen Typs k nnen in einer gemeinsamen Anweisung definiert
22. ob ein oder mehrere neue Bytes im Empfangspuffer einer seriellen Schnittstelle verf gbar sind Wenn das so ist gibt sie den Wert 1 zur ck anderenfalls O 10 2 6 Lesen eines empfangenen Bytes function get returns byte Die Funktion get liest und entfernt ein einzelnes Byte aus dem Emptangsputter 10 2 7 Empfang von Datenrahmen function receive byte buf int length long timeout returns Int Die Funktion receive liest und entfernt eine Anzahl von Bytes Datenrahmen aus dem Empfangspuffer und kopiert diese in eine Bytepuffervariable Enth lt der Empfangspuffer bei Aufruf der Funktion weniger empfangene Bytes als spezifiziert wartet die Funktion auf den Empfang weiterer Bytes Das Warten wird abgebrochen wenn zwischen zwei Bytes eine l ngere Pause erkannt wird timeout Der R ckgabewert gibt die Anzahl der tats chlich gelesenen Bytes zur ck 98 10 Module CONRAD en buf Referenz auf eine Bytepuffervariable length Lange des Putters timeout Timeout in Millisekunden 10 2 8 Test auf Sendebereitschaft function ready returns int Die Funktion ready pr ft ob eine serielle Schnittstelle bereit f r eine neue bertragung ist R ckgabe wenn bereit sonst O 10 2 9 Senden eines Bytes function put byte c Die Funktion put sendet ein einzelnes Byte ber eine serielle Schnittstelle 72 10 Senden von Datenrahmen function send byte buf int length Die Funktion send sendet eine Anzahl von Bytes be
23. oder zu ausf hrbarem Code f hrt Punktsymbol Das entsprechende Symbol wird vor der Zeile angezeigt Leere Zeilen oder solche die nicht unmittelbar zu ausf hrbarem Code f hren haben kein Symbol Wenn Ihre Eingabe Fehler enth lt werden Ihnen im Meldungsfenster konkrete Fehlerbeschreibungen angezeigt Nachdem Sie alle Modulquelltexte eines Projektes vollst ndig geschrieben und 88 9 Softwareentwicklung ONRAD alle syntaktischen Fehler beseitigt haben kann Ihr Programm simuliert oder in die C Control II bertragen werden 9 5 Simulation und Debugging 9 5 1 Test und Fehlersuche Nachdem ein Programm syntaktisch korrekt compiliert wurde mu die funktionelle Fehlerfreiheit berpr ft werden Es ist nicht ratsam die C Control Il Unit mit einem Programm zu laden dessen prinzipielle Funktion nicht im Simulator der Integrierten Entwicklungsumgebung getestet wurde Sch tzen Sie selbst ab welche Folgen eine Programmfehlfunktion beim Betrieb Ihrer Applikation haben kann Von einfachsten Anwendungen abgesehen wird ein Programm selten auf Anhieb so funktionieren wie es im Detail gew nscht ist Manche Fehlfunktion ist offensichtlich und reproduzierbar Immer wenn ich die Taste dr cke dann Die Ursache kann meist leicht gefunden und beseitigt werden Schwieriger ist das Finden von Fehlern die nur in der Verkettung mehrerer zum Teil seltener Bedingungen auftreten Wochenlang l uft alles einwandfrei dann
24. somit auch als Pufferspeicher f r Daten bertragungen verwendet werden siehe Bibliotheksmodul hwcom c2 zB thread tx byte buf 48 Vd sa Bei der Vergabe von Namen tir lokale Variablen ist zu beachten daB sie eventuell globale Bezeichner desselben Moduls verdecken Will man dann auf gleichnamige globale Bezeichner zugreifen mu zus tzlich der Modulname spezifiziert werden als w rde sich der globale Bezeichner in einem anderen Modul befinden z B in Modul oc int i function fx d int i i 0 lt lokales i a i 0 lt globales i 52 8 Die Programmiersprache 2 OnrAaD C E 8 6 Konstanten 8 6 1 Benannte und unbenannte Konstanten Unbenannte Konstanten werden sehr h ufig verwendet In der Anweisung a 1 n ist 1 eine unbenannte Zahlenkonstante Benannte Konstanten repr sentieren einen Wer der ihnen zuvor in der Konstanten definition siehe weiter unten zugewiesen wurde Die Definition und Verwendung von benannten Konstanten bot folgende Vorteile Reduzierung des Aufwandes bei eventuellen nderungen im Programm Konstanten m ssen nur an der Stelle ihrer Definition modifiziert werden nicht an den vielen Stellen ihrer Verwendung im Programm Erh hung der Lesbarkeit eines Programmes wenn Konstanten mit vollst ndig selbstbe schreibenden Bezeichnern definiert werden also z B ERDUMFANG statt EUMF f r wiederholte Verwendung derselben long float
25. und string Konstanten wird weniger Speicherplatz im Konstantenspeicher ben tigt Unbenannte Konstanten mit gleichem Wer oder Textinhalt w rden n mlich bei mehrfacher Verwendung im Programmquelltext mehrfach im Konstantenspeicher angelegt werden Konstanten mit zusammengesetztem Datentyp werden in C2 nicht unterst tzt 8 6 2 Unbenannte Zahlenkonstanten Dezimalzahlen bestehen aus einer Folge der Ziffern O 9 ohne Zwischenr ume Optional kann ein Minus als negatives Vorzeichen vorangestellt werden Bei dezimalen FlieBkommazahlen folgen ohne Zwischenraum ein Dezimalpunkt kein Kommal und die Nachkommastellen Das Exponentialformat wird nicht unterst tzt Hexadezimalzahlen sind Folgen der Hexadezimalzittern O 9 A F bzw a f mit dem Pr fix Ox oder OX vgl C C Bin rzahlen sind Folgen der Bin rziftern O und 1 mit dem Pr fix Ob oder OB Oktalzahlen werden nicht unterst tzt 53 o DO o C Control Il Station Beispiele Dezimalzahlen O 17 FlieBkommazahlen 0 0 K Hexadezimalzahlen OxO OxFF Bindrzahlen ObO ObO 8 6 3 Unbenannte Zeichenkonstanten 12345 123 456 OXABCD 0B 11101 Zeichenkonstanten stehen f r deren ASCIl Codes Wertebereich O 255 und k nnen wie ganze Zahlen in numerischen Ausdr cken verwendet werden Unbenannte Zeichen konstanten sind von zwei Hochkommata eingeschlossen und bestehen selbst aus einem einzelnen Zeichen oder einem Sonderco
26. werden Dabei sind mehrere Bezeichner jeweils durch ein Komma voneinander getrennt Typ Namel Name2 ZB Long x Y Zi 47 o DO o C Control Il Station Definierte Variablen k nnen nachfolgend in Ausdr cken und Zuweisungen verwendet werden z B IOC x Y x 18 Oo F Xj Ke I 8 5 2 Definition und Anwendung von Variablen zusammengesetzter Datentypen Die Definitionsyntax entspricht der bereits bekannten Syntax f r die Definition von Variablen mit Standardtypen Mit dem Beispiel aus 74 3 l t sich eine Variable vom zusammenge setzten Typ MyType wie folgt definieren MyType t Danach kann auf die einzelnen Felder der Variablen t durch Anh ngen eines Punktes und des jeweiligen Feldbezeichners zugegriffen werden t value 82 5 So sind auch die Felder verschachtelter Datentypen zu erreichen z B t pos x 31 8 5 3 Definition und Indizierung von variablen Arrays C2 unterst tzt die Definition von variablen eindimensionalen Arrays Bei der Definition folgt dann nach dem Variablenbezeichner in eckigen Klammern ein konstanter Ausdruck Der Ergebniswert des Ausdrucks legt die Anzahl der Arrayelemente fest Typ ArrayName konstanter Wert z B float coeff 10 48 8 Die Programmiersprache 2 ONRAD Der ben tigte Speicherplatz errechnet sich aus der Gr Be eines einzelnen Elements multipliziert mit der Anzahl der Elemente Also werden f r das 1oat Array im obigen Be
27. wird Das Betriebssystem der C Control Il Station bietet eine einfach zu nutzende Softwareschnittstelle f r das Ansprechen der Ports Bedingt durch das Prinzip der Ansteuerung sind die Ansprechzeiten f r die Ports deutlich h her als bei den programmierbaren Ports Beachten Sie dies bitte bei der Entwicklung Ihres Programms 6 2 13 Zweite serielle Schnittstelle swcom An den Digitalports Pl und P2 kann das Betriebssystem softwarem ig eine zweite asynchrone Schnittstelle emulieren Lesen Sie dazu die Kapitel 8 2 und 10 2 6 2 14 Zweidrahtbus Conrad Electronic hat eine Familie von Sensor und Aktuatormodulen entwickelt mit denen ein Steuercomputer wie die C Control Il Station um zus tzliche Ein und Ausgabe funktionen erweitert werden kann Die Besonderheit dieser Module ist die einfache Vernetzung ber ein Zweidrahtbussystem englisch two wire bus abgek rzt auch 2W Bus 2WB oder TWB Bei diesem Bussystem werden digitale Daten ber eine 12V Gleichspannungsleitung bertragen Diese Leitung bernimmt gleichzeitig die Versorgung der Module Die Busstruktur ist eine Baumstruktur Zur Zeit stehen folgende 2W Bus Module zur Verf gung Digitalportmodul 4 zus tzliche I O Ports Digitalportmodul mit Leistungsausg ngen 4 Ports Is max 2A 25V Frequenzmesser Z hlermodul 1 Eingang is 3OkHz Pulsfrequenz integrierter Reed Kontakt zur Triggerung mit einem externen Magneten z B zur berwachung von T
28. 0 3 8 5 4 8 9 9 8 6 8 6 8 6 2 8 6 3 8 6 4 8 6 5 Virtuelle Maschine Grundlagen Bin rcodeinterpreter Multithreading Programm und Konstantenspeicher Datenspeicher Stapelprozessor Systemschnittstelle Die Programmiersprache C2 Einleitung Projekte und Module Syntax Grundelemente Kommentare Zwischenr ume Bezeichner Anweisungen und Anweisungsbl cke Ausdr cke Schl sselworte Datentypen Numerische Datentypen Zeichenketten Strings Zusammengesetzte Datentypen Variablen Definition von Variablen Definition und Anwendung von Variablen zusammengesetzter Datentypen Definition und Indizierung von variablen Arrays Initialisierung Globale und lokale Variablen Konstanten Benannte und unbenannte Konstanten Unbenannte Zahlenkonstanten Unbenannte Zeichenkonstanten Unbenannte Stringkonstanten Definition von benannten Konstanten 35 35 36 36 38 38 38 39 40 40 40 41 A 42 42 43 44 45 45 45 46 46 47 47 48 48 50 5l 53 53 99 54 39 09 Inhalt 8 6 6 8 7 Gel 8 7 2 8 78 8 74 8 75 8 76 8 8 8 9 8 10 9 1 9 2 9 3 9 4 9 5 10 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 10 11 10 12 10 13 10 14 10 15 10 16 Benannte konstante Arrays Operatoren Rangfolge Arithmetische Operatoren Bitschiebeoperatoren Vergleichsoperatoren Logische Operatoren und Bitmanipulationen Stringverkettung mit dem Operator Funktionen Threads Anweisungen z
29. 0V Netz 2 3 W 12 1 4 Ports max zul ssiger Strom aus digitalen Ports 5 mA max zul ssige Summe der Str me an digitalen Ports 50 mA Zul ssige Eingangsspannung an den Portpins digital und A D 0 5V 5 5 V 12 1 5 Relais Schaltleistung 230V 6A AC 127
30. 8O MODE ON function rec80_mode byte address 10 16 7 IR RMT Lesen von IR Kommando und IR Adresse function get_ir_data byte address ein empfangenes IR Kommando und die Adresse ist in der Variablen data1 und data0 im Modul verf gbar Diese Variablen haben den Wert 255 wenn nichts empfangen wurde 10 16 8 IR RMT Senden von IR Kommando und IR Adresse function send_ir_data byte address byte iradr byte ircmd Beachten Sie bitte dass bei allen diesen Funktionen die Fehlervariable status im Modul Aufschluss gibt ob die R ckgabe von Werten g ltig ist Status ist O wenn der Sensor ordnungsgem ss geantwortet hat 10 17 station_plm c2 Dieses Modul ist ein Utilitymodul und wird nicht zusammen mit der IDE installiert Es muss bei Bedarf separat Installiert werden morio_ plrs11 zip Das Modul unterst tzt den Zugriff auf das Modem Remote LO und den PLRS F r alle Funktionen gilt Adresse des angesprochenen Ger tes Adresse des Senders outport Angesprochener Port 1 6 state Logischer Zustand 1 0 123 o DO o C Control Il Station 10 171 Initialisierung des Modems function init byte tx 10 172 Port setzen function PORTset byte remote_io byte tx byte outport byte state 10 173 Byteport setzen function PORTsethb byte remote_io byte tx byte outport byte state outport und state spiegeln hier den Zustand aller Ports die manipuliert werden also z B
31. AN Bus Interface 10 CAN L 11 CAN H 12 GND Schliessen Sie hier CAN Bus Komponenten an o DO o C Control Il Station 5 1 5 DCF77 Aktivantenne 13 Signaleingangsleitung hier wird die low aktive Signalleitung der DCF77 Aktivantenne angeschlossen 14 stabilisierte Versorgungsspannung 5V f r die DCF77 Aktivantenne 15 Signal Ground Masse GND An den Klemmen 13 bis 15 kann optional eine DCF77 Aktivantenne zur Zeitsynchronisation des Moduls angeschlossen werden Alternativ steht an Klemme 14 die stabilisierte 5V Systemspannung zur Versorgung kleiner externer Schaltungen zur Verf gung Beachten Sie dabei den maximal entnehmbaren Strom siehe Technische Daten 5 1 6 GND Klemmen Masse GND GND GND 15 GND GND GND GND GND GND An den GND Klemmen steht die Systemmasse als Bezugspotential f r digitale und analoge Pors zur Verf gung 5 1 7 Analogports ADO AD AD 2 AD 3 AD 4 AD 5 AD 6 GND N 2 oO w w GG N Di ZS GH ZO NL 18 5 AnschluBklemmen OnrAaD mmm Die Analogports denen zur Messung von analogen Spannungswerten bezogen auf das Massepotential der C Control Il Station Die Me werterfassung erfolgt durch die A D Wandler des Mikrocontrollers mit 10 Bit Aufl sung und liefert Werte von O bis 1024 Die Referenzspannung betr gt 4 096V 5 1 8 Digitalports programmierbar 46 PO 47 Pl 48 P2 49 P3 50 P4 51 PS 52 P6 53 P7
32. Akku zur ckspeist um ihn betriebsbereit zu halten Der Ausgang der Systemspannung Klemme 16 f hrt in diesem Fall kein Netzbetrieb weniger als 12 V Spannung 5 2 Netzklemmen 5 2 1 Versorgungsspannungsanschlu 26 Phase 230 V _ L 27 Nulleiter 230 V_ N Uber den VersorgungsspannungsanschluB werden im Normalbetrieb alle internen elektronischen Komponenten des Moduls gespeist Im Modul befindet sich dazu ein Netzteil mit Transformator Gleichrichter und Spannungsstabilisierung 5 2 2 Relais K1 und K2 20 Kl 21 Kl 22 leere Klemme 23 K2 20 5 AnschluBklemmen OnrAaD mmm 24 K2 25 leere Klemme Mit den Relais K1 und K2 im Modul k nnen Ger te geschaltet werden die mit 230V Netzspannung betrieben werden Der maximal zul ssige Kontaktstrom siehe Technische Daten darf nicht berschritten werden Die leeren Klemmen zwischen den Relais und dem Versorgungsspannungs anschlu dienen zur Einhaltung der n tigen Sicherheitsabst nde zwischen den unterschiedlichen Spannungspotentialen 5 3 Hinweise zum Anschluss der Station 5 3 1 Verbindung der Station mit dem PC Um ein Anwenderprogramm vom PC in das Modul zu bertragen sind zwei Anschlu formen bez glich der Spannungsversorgung zul ssig In beiden F llen ist das Schnittstellenkabel zwischen PC und Station folgenderma en anzuschlie en Verbinden Sie den 9 poligen Sub D Verbinder des der Station beiliegenden Anschlu kabels mit einer der
33. Aufnahme von Sicherungen Schutzschaltern und Relais in der Hausinstallation Ublich ist Montieren Sie zun chst das Tr gersystem zum Beispiel den Verteilerkasten Ordnen Sie die C Control Il Station und andere Baugruppen Ihrer Gesamtapplikation im Verteilerkasten an Die Montage erfolgt einfach durch Aufschnappen der Module auf die DIN Schiene Nun k nnen Sie die Baugruppen verdrahten lesen Sie hierzu das Kapitel Anschlu klemmen Gegebenenfalls mu Ihre Gesamtinstallation von einer zust ndigen Stelle Elektromeister berpr ft werden Verblenden Sie abschlie end zumindest die NetzanschluBklemmen 3 3 Ausf hren des Anwenderprogramms Ist die C Control Il Station programmiert und montiert kann sie in Betrieb genommen werden um das Anwenderprogramm auszuf hren Schalten Sie die Spannungsversorgung ein Dr cken Sie den Reset Taster Nun k nnen Sie oder andere Anwender die C Control II Station in der von Ihrem Anwenderprogramm festgelegten Weise bedienen Die Station arbeitet so lange nach Programm bis die Betriebsspannung ausf llt oder der Reset Taster gedr ckt wird Nach Anlegen der Betriebsspannung erfolgt automatisch ein Neustart 4 Bedienelemente OnrAD U e 4 Bedienelemente ay Le el ADO EEN CIS Osl ADI Wi eo a QW CLOCK Joc E Sea OW D Ja _ GND O a Ha leo S Se m DC ap le a NL a Osi PIMI ANH 0 A e 5 gt eu FREQ 1 GND Js pech GND DCF FREQO
34. CT can cani E WI a nc PR se ee E Sf cig al TxD digital RxD 8 ha TxD CTS ES K2 x Ce y 3d dota cis uc cts 3x0 RTS D K3 e O K1 el Lou RTS uc RTS JA WI a o IN Goen ok ad e 1456m Km O Ku GND 20 R2 1K71 Sen O k28 22 23 24 O K25 Datei Name cc2 station main pcb2709 K8 CND Letze Sicherung Donnerstag 27 September AI CONRAD K7 Variante ohne Varianten C CONTROL IPSTATION ES E TECHNOLOGIE K0 Bearbeiter AM CENTRUM O K Seite 1 von 3 A B C D E H a K EUA ZRS RAIER AdanS X3MOd MT ET SISOTONHI3L NOLLYLS I TOLNOJ I o AA SEA QVYNOD LO0Z Jaquajdas LZ Deysyauuog DunJayals 32197 60Lzqad ulew uoyeys 739 AWEN 19 2 Z SIeray L aeen CLOOESAY W Z 198 AECH 349599 ZLOOESAY JL75 8 Y L 184 LZ 0ZA Cl Ll 4 BYLIN BYLIN 20 ge ZOOESAY 8 1 18 00 LI AL JIA O 5 MS 0 402Z Ak JIA O D 70 L007NL ON ON KI PN 0083088 UOOL 5 ASZ 3M000L u DND LE IEH Ll o nn vw n y ft m N Day 8 R7 vee ey 33R Y18 GND 199 Y4 VEC SV GND2 LCD I 0 GND2 LCD I 0 GND2 LCD I 0 Y el W pu amp en Gi y DB 6 u e h n 1 9 12 CLOCK B1 _Y25 2 3 T4HCT4094 T4HCT4094 126 Y27
35. Control Il Unit sind 512kB FLASH EEPROM 8 Segmente und 64kB SRAM 1Segment an den Mikrocontroller angeschlossen Im Schaltplan erkennen Sie die Dekodierung der AdreBbussignale und die Anschaltung der SpeicherlCs an den Controller Intern verf gt der Controller ber 64kB OTP ROM one time programmable einmalig programmierbar sowie 1kB RAM inklusive Universal Register und Special Function Register Das interne RAM wird vom Betriebssystem der C Control Il Station ber einen Teil des ersten FLASH Segments gelegt Der interne OTP Bereich ist deaktiviert und nicht nutzbar Der gesamte Speicher ist vom System wie folgt aufgeteilt Segment Adressen physischer Speichertyp Verwendung 0 0x00000 OxOFFFF ext FLASH EEPROM Betriebssystem internes RAM Register Hardwarezugritt 0x10000 0x1 FFFF ext FLASH EEPROM Betriebssystemreserve 0x20000 Ox2FFFF ext FLASH EEPROM Betriebssystemreserve 0x30000 Ox3FFFF ext FLASH EEPROM Anwendersystemroutinen 0x40000 Ox4FFFF ext FLASH EEPROM 2 Programm VM Codes 0x50000 Ox5FFFF ext FLASH EEPROM 2 Programm VM Codes 0x60000 OX6FFFF ext FLASH EEPROM 2 Programm Konstanten 0x70000 Ox7FFFF ext FLASH EEPROM 2 Programm Konstanten 0x80000 OXxBFFFF ext SRAM 2 Programm Daten 24 l 2 3 4 5 6 CO 6 Hardware Onrao 6 2 3 Referenzspannungserzeugung Der Mikrocontroller verf gt ber einen Analog Digital Wandler mit einer Aufl sung v
36. Hauptanwendung des LCD ist bei kurzen Ausgaben in Testprogrammen und in der Unterst tzung der Fehlersuche zu sehen Nicht alle Probleme lassen sich im Simulator am PC nachbilden In vielen F llen mu ein Programm in Echtzeit und unter realen Hardwarebedingungen berpr ft werden Dabei kann die Anzeige von Statusmeldungen am LCD oder die Ausgabe von Variablen zwischenwerten hilfreich bei der Suche nach schwer lokalisierbaren Programmfehlem sein 25 o on o C Control Il Station 6 2 6 Tastatur Die Tastatur der C Control Il Station ist eine Folientastatur Sie ist ber ein Widerstandsnetzwerk an einen internen AD Kanal der CPU angeschlossen Das Betriebssystem der C Control Il Station bietet eine einfach zu nutzende Softwareschnittstelle f r Eingaben von der Tastatur 6 2 7 LEDs Die zahlreichen LEDs der Station werden ber ein Schieberegister angesteuert das mit dem LCD zusammen an einem internen Bus betrieben wird Das Betriebssystem der C Control Il Station bietet eine einfach zu nutzende Softwareschnittstelle f r das Ansprechen der LEDs 6 2 8 Spannungsversorgung 230 V In der Unit befindet sich ein kompaktes Netzteil das zum Betrieb der Station ausreichend ist und an Klemme 14 5V bzw an Klemme 16 12V f r exteme Ger te und Zubeh r zur Verf gung stellt bis ca 100mA Beachten Sie den Hinweis zu kurzzeitigen Ausf llen der Versorgungsspannung in nachfolgenden Kapiteln 6 2 9 Spa
37. Korrektheit eines Programmes getestet und sichergestellt werden Was der Simulator nicht oder nicht vollst ndig nachbildet sind extern angeschlossene Systeme z B ICs am I2C Bus oder Sensormodule Au erdem entspricht das Timing des Simulators nicht dem der realen Unit D h von der Ausf hrungszeit bestimmter Programmabschnitte am PC kann nicht auf das Zeitverhalten im Betrieb der C Control Il geschlossen werden Daraus folgt Die korrekte Funktion eines Programmes im Simulator ist ein notwendiges jedoch kein hinreichendes Kriterium f r den fehlerfreien Betrieb Ihrer Applikation in Echtzeit und unter realen Hardwarebedingungen Im Simulator kann ein Programm im Einzelschrittmodus oder im ganzen gestartet werden Dabei k nnen Sie in speziellen Ausgabefenstern die Zust nde der wichtigsten Hardwareressourcen z B Digitalports beobachten Au erdem k nnen Sie die Werte globaler und lokaler Varibalen anzeigen lassen 9 5 3 Bedienung Hinweise zur Bedienung des Simulators entnehmen Sie bitte der Online Hilfe der Integrierten Entwicklungsumgebung 9 6 Programm bertragung in die Station Schlie en Sie die Control II Station an einer seriellen Schnittstelle Ihres PCs an Verwenden Sie dazu das der Station beiliegende Nullmodemkabel Beachten Sie bitte die Hinweise im Kapitel 5 3 Schlie en Sie die Versorgungsspannung an die Unit an und aktivieren Sie den Hostmodus siehe Kapitel 4 3 Stellen Sie in der Integrierten Entwicklungsumge
38. O A um 10 14 5 Folientastatur function getkey returns int Diese Funktion fr gt die Tastatur ab und gibt den Wert der gedr ckten Taste zur ck laste Fl Taste F2 Taste F3 Taste Clear Wert 13 Taste Enter Wert 14 120 10 Module nNRAD L AAA Um ihnen das Programmieren zu erleichtern ist die Funktion function getcode returns long implementiert Sie erm glicht die Eingabe einer 9 stelligen Zahl und gibt ihren Wert nach Abschluss der Eingabe Enter zur ck Eine Eingabekorrektur Clear ist ebenfalls m glich 10 15 station_Icd c2 Dieses Modul ist ein Erweiterungsmodul und wird nicht zusammen mit der IDE installiert Es muss separat Installiert werden station_treiber11 zip Folgende Funktionen kontrollieren die Displayausgaben der CCII Station 10 15 1 L schfunktionen function init Initialisierung des LCD function clear Loschen des Displays Fuinerti n cleari j L schen von Zeile 1 function alear2 L schen von Zeile 2 10 15 2 Cusorsteuerung function home Cursor auf Zeile 1 Pos 1 function line Cursor auf Zeile 2 Pos function c rsoron Cursor einschalten function cursoroft Cursor ausschalten D oye D oe Cursor eine Position links r cken function cursorleft function cursorright Cursor eine Position rechts r cken function cursorpos byte line byte col Cursor aut Zeile Spalte setzen 121 o DO o C Cont
39. Programmablaufes steuet das System alle Ein und Ausgabeoperationen im Hintergrund der Anwendung Ein wichtiger Teil des Systems ist die virtuelle Maschine siehe unten zur Ausf hrung von C2 Programmen Das Betriebssystem wurde in Assembler und der Programmiersprache C geschrieben und liegt in Bin rform auf der CD zur Unit vor Das Betriebssystem OS der C Control Il Station ist bei der Auslieferung in der Regel bereits installiert Sollten Sie eine aktualisierte Form soweit vorhanden laden wollen muss das OS im ersten Segment des FLASH Speichers gespei chert werden erstes Segment Segment 0 Wenn Sie die C Control Unit erstmalig in Betrieb nehmen k nnen Sie sich von der korrekten Funktion der Station selbst berzeugen da ein Testprogramm in den Speicher geladen wurde das alle Funktionen der Station kurz anspricht Auf der C Control Homepage www c control de im Internet finden Sie gegebenenfalls auch eine aktuellere Version der Installation oder einzelne Dateien zum Download Sie sollten dann diese Version statt der auf der CD ausgelieferten verwenden 7 2 Bootstrap Installieren des Betriebssystems Im Bootstrap Modus des Mikrocontrollers kann das C Control II Betriebssystem in den FLASH Speicher der Unit bertragen werden Installieren Sie zun chst das Boot Tool von der C Control CD auf Ihrem PC Lesen Sie dabei die Installationsanleitung und gegebe nenfalls die zus tzlichen Hinweise Um den Bootstrap Modus zu aktivieren m s
40. Schaltplan der C Control Il Station Er dokumentiert den inneren Aufbau und die Funktionsweise der Station Die Schaltung wurde nach Applikationsvorschl gen aus den Datenbl ttern der verwendeten ICs entwickelt Bei Fragen zu Details konsultieren Sie bitte diese Datenbl tter Sie finden diese im Internet als PDF Dateien einige davon auch auf der Utility CD 6 2 Schaltungstechnik intern 6 2 1 Mikrocontroller Der Mikrocontroller C164Cl stammt aus der C166 Familie von Infineon Technologies fr her SIEMENS Halbleiter und ist der kleine Bruder des C167 Im 80poligen QFP Geh use bietet der C164CI zahlreiche interessante Hardwareressourcen wie z B acht 10bit Analog Digitalwandlerports 23 o DO o C Control Il Station eine CAN Busschnittstelle eine asynchrone serielle Schnittstelle komfortable Timer Der Mikrocontroller verarbeitet Daten mit einer Breite von 16 Bit Sein AdreBraum umfa t 16MB Speicheradressen bestehen aus einem Segment Byte und einem Offset Word Die Kontrolle der umfangreichen Hardwareressouren des Controllers erfolgt ber Eintr ge in die Special Function Registers SFR Diese befinden sich in einem Bereich des ersten Speichersegments im internen RAM des Controllers Das System der C Control Il Unit kapselt die zum Teil sehr komplexen Zugriffs mechanismen auf die Hardwareressourcen inrelativ einfachen Funktionsaufrufen siehe Kapitel 10 6 2 2 Speicher In der C
41. Temp oder get_max_temp Die einmal gew hlte Schreibweise ist beizubehalten 7 Bezeichner sind in einer einzigen Sprache verfa t z B einheitlich englischsprachig oder einheitlich deutschsprachig Bezeichner sind in derselben Landessprache wie die Kommentare zu formulieren 9 3 4 Ausdr cke Komplexe numerische Ausdr cke sind durch Klammersetzung und Leerzeichen so zu gestalten da Teilausdr cke optisch erkennbar sind 9 3 5 Funktionsdefinitionen l Die Definitionszeilen sind durch Kommentarzeilen gerahmt siehe Standardmodulquelltexte Zwischen diesen Kommentarzeilen steht nichts au er der Funktionsdefinition 2 Eine Definitionszeile beginnt mit einer Einr ckung von zwei Leerzeichen 3 Rechts und links der runden Klammern steht ein Leerzeichen zB function fx intparam Bei Funktionen ohne Parameter entfallen die Leerzeichen innerhalb der runden Klammern zB function tx Q 4 Bei Funktionsdefinitionen mit mehreren Parametern steht nach jedem Komma in der Liste der formalen Parameter ein Leerzeichen z B function fx int a int b int c 87 o on o C Control Il Station 5 Erstreckt sich eine Definition ber mehrere Zeilen so sind die zweite und weitere Zeilen linksb ndig unter dem Typen des ersten Parameters fortzusetzen z B 9 3 6 Threads 1 Die Definitionszeilen sind wie bei Funktionen durch Kommentarzeilen gerahmt 2 Threads stehen stets am Ende eine
42. Text der Anleitungen enth lt daher keine expliziten Hinweise auf C Control ll 10 13 constant c2 und vmcodes c2 Das Modul constant enth lt einige allgemeine Konstanten die im Quelltext selbst betrachtet werden k nnen Das Modul vmcodes listet alle Operationscodes der virtuellen Maschine auf Eine Dokumentation der Codes ist nicht Bestandteil dieser Anleitung und ist zur Anwendungs programmierung der C Control Il Unit nicht erforderlich 10 14 station_io c2 Dieses Modul ist ein Erweiterungsmodul und wird nicht zusammen mit der IDE installiert Es muss separat installiert werden station_treiber11 zip Folgende Funktionen kontrollieren die zus tzlichen I O Resourcen der CCII Station 10 14 2 Beleuchtung des LCD function LIGHTon function LIGHTOff 10 14 2 LEDs function LEDon byte LED LED kennzeichnet die angesprochene LED 1 8 Function LEDSTf byte LED LED kennzeichnet die angesprochene LED 1 8 function LEDtoggle byte LED LED kennzeichnet die angesprochene LED 1 8 119 o DO o C Control Il Station 10 14 3 Relais function RELon byte LED REL kennzeichnet das angesprochene Relais 1 2 function RELoff byte LED REL kennzeichnet das angesprochene Relais 1 2 10 14 4 Outputports PO function PORTset byte outport byte state Diese Funktion setzt die Outputports PO O PO 4 function PORTtoggle byte outport Diese Funktion schaltet die Outputports PO O P
43. angskanal channel verf gbar ist Wenn das so ist gibt sie den Wert 1 zur ck anderenfalls O channel O 14 10 1 10 Empfangene Daten lesen function get int channel byte buf returns int Daten die auf einem Kanal channel automatisch oder nach einem request empfangen wurden k nnen mit get abgeholt und in eine Bytepuftervariable bertragen werden Der Puffer mu Platz f r 8 Bytes bieten Die Funktion liefert als Ergebnis die Anzahl der Bytes die tats chlich empfangen wurden g ltige Nachrichten k nnen auch aus O Datenbytes bestehen channel O si 14 buf Referenz auf Bytepuftervariable 10 2 hwcom c2 und swcom c2 Die C Control Il Station verf gt Ober zwei asynchrone serielle Schnittstellen Eine davon ist als Hardware hwcom bereits im Mikrocontroller implementiert Die zweite Schnittstelle swcom kann vom Betriebssystem softwarem ig ber zwei interruptsensible Ports nachgebildet werden Der Zugriff auf beide Schnittstellen in C2 ist identisch Nachfolgend beschriebene Funktionen sind in den Modulen hwcom c2 und swcom c2 gleichartig definiert 10 2 1 Initialisierung function init 96 10 Module Onrao L A Die Funktion init initialisiert eine serielle Schnittstelle und deaktiviert eventuell konkurrierende Portfunktionen 10 2 2 Einstellen der bertragungsgeschwindigkeit function setspeed int speed F r jede der beiden Schnittstellen kann die bertragungsgeschwindigkeit eingestellt w
44. arameter function fx long al int i Funktion mit einem benutzerdefinierten MyType Parameter function fx MyType t 8 8 2 Parameter und lokale Variablen Im Anweisungsblock einer Funktion k nnen lokale Variablen definiert werden Die im Funktionskopf definierten Parameter k nnen ebenso wie Variablen verwendet werden Numerische Parameter byte float sind echte lokale Variablen der Funktion Sie werden beim Aufruf der Funktion auf dem Stack des aktuellen Threads gespeichert und mit dem bergebenen Wert initialisiert Variable Strings Arrays und Parameter mit anwenderdefiniertem Datentyp hingegen werden automatisch als Referenz bergeben Manipulationen an Referenz parametern wirken sich auf das referenzierte Datenobjekt aus z B Function Ex gering s s abc thread main string Locals local_s 271237 rr rr fx local ke local 8 wird abe 65 o DO o C Control Il Station im Gegensatz zu numerischen Parametern function fx int 2 thread main int local_i local_i 1 fx local 1 local 1 bleibt 1 8 8 3 Ende einer Funktion und Ergebnisr ckgabe Eine Funktion endet automatisch wenn die Programmausf hrung zur schlie enden geschweiften Klammer des Anweisungsblocks gelangt Eine Funktion mit R ckgabewert liefert dann das Ergebnis O Zu function fx returns int thread main int i i 1 i EXP 47 wird U Mit
45. are Steuerzeichen Der konstante String I Faber ee NET enth lt also 9 Zeichen ein Anf hrungszeichen die Buchstabenfolge abc einen Tabulator die Buchstabenfolge xyz und noch ein Anf hrungszeichen FS Das abschlie ende Anf hrungszeichen einer Stringkonstanten mu vor dem Zeilenende stehen l ngere Strings k nnen gebildet werden in dem zwei Stringkonstanten jeweils in Anf hrungszeichen hintereinander im Quelltext stehen Zwischen den Teilstrings d rfen beliebige Zwischenraumzeichen stehen auch Zeilenvorsch be ZE ZE abc ZE ZE xyz wird vom C2 Compiler verkettet zu abexyz 8 6 5 Definition von benannten Konstanten Benannte Konstanten werden stets global auf Modulebene definiert Sie sind nach der Definition ber die Angabe des Modulbezeichners im gesamten Programm verf gbar vgl 55 o on o C Control Il Station globale Variablen Lokale Konstanten von Threads und Funktionen gibt es nicht Die Definition einer benannten Konstante beginnt stets mit dem Schl sselwort const Anschlie end folgen der Bezeichner ein Zuweisungsoperator sowie ein konstanter Ausdruck und abschlie end ein Semikolon const Name konstanter Ausdruck SE const A 1000 const B A 100000 const C 17 4 Der Datentyp einer Konstanten wird vom Compiler automatisch bestimmt Es wird der maximal notwendige Typ verwendet F r A im obigen Beispiel ist maximal ein int
46. bung die korrekte Schnittstelle ein Beenden Sie alle anderen Programme die auf dieselbe serielle Schnittstelle zugreifen laden oder bearbeiten Sie ein C2 Projekt compilieren Sie es und rufen Sie in der Integrierten Entwicklungsumgebung das Men zum bertragen des Programms auf Lesen Sie dazu auch die Online Hilfe 90 10 Module Onrao L A 10 Module Dieses Kapitel gibt einen berblick ber alle Bibliotheksmodule zum Zugriff auf die Systemressourcen der C Control Il Station SYSTEMMODULE bat Tina allgemeine Konstanten hwcom c2 l serielle Schnittstelle Hardwareschnittstelle i2c c2 D Du Icd c Mini LCD der Unit Ipt c2 Druckerschnittstelle Uber digitale Ports der Unit math c2 Flie komma Arithmetik plm c2 Pulsweitenmodulation f r D A Wandlung und Tonausgabe Digitalports und Analogports A D swcom c2 2 serielle Schnittstelle Softwareschnittstelle Timer Systemuhr Interrupt Umleitung Codekonstanten der virtuellen Maschine Die Systemmodule werden bei der Installation der Entwicklungsumgebung automatisch installiert ERWEITERUNGSMODULE Treiber f r LEDs Output Ports und Tastatur Treiber f r das LCD Die Erweiterungsmodule m ssen separat Installiert werden Die Module sind f r den uneingeschr nkten Betrieb der Station unbedingt erforderlich k nnen aber als Systemmodul Projektmodul oder Bibliotheksmodul installiert werden 91 o DO o C Control Il Station
47. ck if Ausdruck Anweisung if Ausdruck lass Die Anweisung bzw der Block werden nur dann ausgef hrt wenn das Ergebnis des numerischen Ausdrucks zur Programmlaufzeit ungleich O ist zB x 123 if x fx fx wird aufgerufen if x 123 fx fx wird nicht aufgerufen ber das Schl sselwort else kann eine alternative Anweisung oder ein Block angegeben werden die ausgef hrt wird wenn der Wert des Audrucks gleich O ist if Ausdruck Anweisung else AlternativAnweisung z B x 123 LE 32 1253 186 U 80 8 Die Programmiersprache 2 OnrAaD C PA EXI else fx2 x2 wird aufgerufen 8 10 2 loop Endlosschleife Programmschleifen erm glichen das wiederholte Ausf hren von Anweisungen Die einfachste Form ist die bedingungslose Endlosschleife Daf r kann in C2 das Schl sselwort loop verwendet werden Nach diesem steht eine einzelne Anweisung oder ein Anweisungsblock loop Anweisung loop Pie 8 10 3 while Schleife Die while Schleife wiederholt eine Anweisung oder einen Anweisungsblock solange der berechnete Wert eines numerischen Bedingungsausdrucks ungleich O ist Die Pr fung der Bedingung erfolgt vor jedem Schleifendurchlauf Nach dem Schl sselwort while folgt ein numerischer Ausdruck und danach die Anweisung bzw der Anweisungsblock while Ausdruck Anweisung while Ausdruck d os 8 10 4 do Schleife Die do Schleife wiederholt eine Anweisung oder einen Anweisungsblo
48. ck solange der berechnete Wert eines numerischen Bedingungsausdrucks ungleich O ist Die Pr fung der Bedingung erfolgt nach jedem Schleifendurchlauf Die Anweisung der Schleife wird also mindestens einmal ausgef hrt 81 o DO o C Control Il Station Nach dem Schl sselwort do folgt die Anweisung bzw der Anweisungsblock danach das Schl sselwort while und abschlie end der numerische Bedingungsausdruck do Anweisung while Ausdruck do Il ewa while Ausdruck 8 10 5 for Schleife Die for Schleife f hrt eine Anweisung oder einen Anweisungsblock solange aus bis eine Schleifenvariable eine Vergleichsbedigung nicht mehr erf llt for Variable Wert Operator Endwert step Wert Anweisung for Variable Wert Operator Endwert step Wert e Nach dem Schl sselwort for wird die Schleifenvariable mit einem Startwert initialisiert U n Variable Wert Dann folgt das Symbol Optional steht dann ein Vergleichsoperator Operator lt gt lt oder gt Wird der Operator nicht angegeben geht der C2 Compiler von einer kleiner gleich Bedingung aus lt Vor jedem Durchlauf wird die Schleifenvariable mit einem Endwert verglichen Optional kann mit dem Schl sselwort step eine Schrittweite angegeben werden Ohne diese Angabe betr gt die Schrittweite konstant 1 Nach jedem einzelnen Durchlauf wird der Schrittweitenwert zur Schleifenvariable addiert Beispiele fo
49. d Befehl 0 63 Befehl 64 127 Byte Parameter Fom A B Befehl 128 191 Word Parameter D Befehl 192 255 Byte Parameter Word Parameter An dem Werebereich in dem der Befehlscode liegt erkennt der Interpreter die Befehlsform Abh ngig von der Befehlsform werden optional ein Byte Parameter und ein Word Parameter geladen bevor es zu Ausf hrung der dem Codewert zugeordneten Operation kommt Einen berblick ber alle verf gbaren Operationen zu geben f hrt an dieser Stelle zu weit und ist f r das prinzipielle Verst ndnis der C Control Il nicht erforderlich 7 4 3 Multithreading Ein Hauptmerkmal der C Control II Unit ist die Unterst tzung von Multithreading in Anwenderprogrammen Verschiedene Programmteile k nnen quasi gleichzeitig und voneinander unabh ngig abgearbeitet werden Dadurch lassen sich komplexe in der Applikation parallel und asynchron ablaufende Vorg nge auf einfache Weise behandeln Beispiel verschiedene Digitalports sollen st ndig berwacht werden bei Eintreten einer bestimmten Kombination ist eine Pulstolge mit vorgegebenem Timing auszugeben gleichzeitig sind st ndig einige A D Kan le zu berwachen und bei berschreitung von Grenzwerten soll ein Alarm ausgel st werden von der seriellen Schnittstelle werden in einem bestimmten Rhythmus Datenrahmen erwartet die ausgewertet und beantwortet werden sollen ber den Drucker sollen Me werte ausgedruckt w
50. dann gibt der aktuelle 74 8 Die Programmiersprache 2 NRAD A Thread die Programmausf hrung sofort an den n chsten Thread ab vgl yield 8 9 6 Synchronisation In Computersystemen mit parallelen Prozessen kann es zu folgenden problematischen Situationen kommen Aliasing von Speicherzugriffen Konkurrenz mehrerer Prozesse um eine Ressource Konkurrenz um eine Ressource entsteht beispielsweise wenn zwei Threads gleichzeitig Daten ber dieselbe serielle Schnittstelle senden wollen Die serielle Schnittstelle kann aber nur einen Ausgabepuffer zu einer Zeit bedienen Folglich kann nur ein Thread gleichzeitig senden Der zweite Thread mu warten bis die Ressource frei ist Zur Erl uterung des Aliasing Problems folgendes Beispiel Ein Thread fragt zyklisch zwei Me kan le ab und speichert diese in zwei globalen Variablen Ein paralleler Thread liest diese globalen Variablen und soll jeweils beide Werte aus einem Me zyklus einer Pr ffunktion zuf hren float a b Messwerte thread measure get_channel_a 0 I det channel Di thread watch check a b Wie in 8 9 3 bereits gezeigt wird eine C2 Anweisung in mehreren Einzeloperationen der virtuellen Maschine ausgef hrt Die Anweisung 75 o DO o C Control Il Station check a b f hrt etwa zu folgender Befehlskette l a auf den Stack laden 2 b auf den Stack laden 3 Funktion check aufrufen Wie
51. de Sondercodes erm glichen die Darstellung von Zeichen die im Quelltext nicht sichtbar w ren z B Steuerzeichen Zwischenraumzeichen Auch das Hochkomma selbst mu als Sondercode geschrieben werden Sondercodes beginnen mit einem Backslash AnschlieBend folgt ohne Zwischenraum ein Codezeichen nicht case sensitiv oder die Angabe eines ASCIl Codes als Dezimal oder Hexadezimalzahl der Hexadezimalpr fix ist hier nur ein x ohne 0 Sondercodes mit Codezeichen Codezeichen Bedeutung Vollst ndige Zeichenkonstante Klingelton bell Backspace ein Zeichen zur ck Steuerzeichen form feed Seitenvorschub auf einem Ausgabeger t Steuerzeichen new line Zeilenvorschub auf einem Ausgabeger t Steuerzeichen carriage return Wagenr cklauf auf einem Ausgabeger t Tabulator Zwischenraumzeichen Backslash Hochkomma Anf hrungszeichen 54 8 Die Programmiersprache 2 OnrAaD C E Sondercodes mit ASCIl Code Beispiele Zeichen Konstante in Dezimalform Konstante in Hexadezimalform Tabulator 8 6 4 Unbenannte Stringkonstanten Konstante Strings oder Zeichenketten sind konstante Texte in zwei Anf hrungszeichen Zwischen den Anf hrungszeichen kann jedes darstellbare Zeichen stehen Soll der String selbst ein Anf hrungszeichen enthalten so mu dieses per Sondercode siehe oben eingebettet werden Das gilt auch f r nicht darstellb
52. den angeschlossenen Baugruppen sollten einige wenige Zentimeter nicht berschreiten Sind die Stichleitungen zu lang oder fehlen die Abschlu widerst nde k nnen Leitungsreflexion die Daten bertragung stark st ren oder unm glich machen Als Kabelstrang k nnen einfache verdrillte Leitungen eingesetzt werden twisted pair Bei der Verwendung geschirmter Leitungen lassen sich Probleme mit St rungsabstrahlung und einstrahlung reduzieren Das gilt besonders f r lange CAN Busse und hohe bertragungsgeschwindigkeiten Zur Unterdr ckung von Gleichtaktst rungen sollten spezielle CAN Drosseln verwendet werden Die CAN bertragungsgeschwindigkeit von 1Mbit s wird von C Control nicht direkt unterst tzt Diese Bitrate erfordert besondere Ma nahmen zur bertragungssicherheit und vor allem gegen die St raussendung Conrad Electronic geht nicht davon aus da die C Control Il Unit in Applikationen Einsatz findet die derartige hohe bertragungsraten erforderlich machen Einen berblick ber die verf gbaren Funktionen zur Programmierung einer der CAN Applikation bekommen Sie in Kapitel 10 1 32 7 Betriebsystem NRAD C E 7 Betriebssystem 7 1 berblick Das Betriebssystem der C Control Il Unit bernimmt das gesamte Interrupt Handling die Konfiguration des Mikrocontrollers nach dem Reset das laden von Anwender programmen in den FLASH Speicher sowie den Start und die Ausf hrung von Anwender programmen W hrend des
53. der return Anweisung kann eine Funktion vorzeitig beendet werden und den Wer eines numerischen Ausdrucks als Ergebnis zur ckgeben return return numerischer Ausdruck 66 8 Die Programmiersprache 2 OnrAaD C Ml Die erste Form darf nur f r Funktionen ohne definierten R ckgabetyp verwendet werden Die zweite Form mit numerischem Ausdruck ist f r Funktionen mit definiertem R ckgabetyp reserviert z B function fx int param returns int return param param 100 8 8 4 Aufruf Der Aufruf einer Funktion erfolgt durch Angabe ihres Bezeichners gefolgt von einer ffnenden und einer schlie enden runden Klammer Wenn im Kopf der Funktion formale Parameter definiert wurden so m ssen beim Funktionsaufruf innerhalb der runden Klammern genau so viele aktuelle Parameter aufgelistet werden jeweils durch ein Komma getrennt z B function Fx ink a int e zwei Parameter Pi rei x Fehler fx 17 Fehler fx 17 4 OK Aufrufe von Funktionen die einen R ckgabewert liefern k nnen in numerischen Ausdr cken verwendet werden aber auch als einzelne Anweisung Aufrufe von Funktionen ohne R ckgabewert d rfen ausschlie lich als einzelne Anweisung stehen ZB function get_something returns int 67 oo o C Control Il Station IT ass function do something EEE get_something OK R ckgabewert ignoriert do_something ij OK int a
54. e lich bersetzung vorbehalten Reproduktionen jeder Art zB Fotokopie Mikrovertilmung oder die Erfassung in EDV Anlagen bed rfen der schriftlichen Genehmigung des Herausgebers Nachdruck auch auszugsweise verboten Diese Bedienungsanleitung entspricht dem technischen Stand bei Drucklegung nderung in Technik und Ausstattung vorbehalten Copyright 2001 by Conrad Electronic GmbH Printed in Germany CTC DH 27 09 2001 KF Inhalt Inhaltsverzeichnis 1 1 1 2 2 1 22 2 3 3 1 3 2 3 3 4 1 4 2 5 1 52 5 3 6 1 6 2 7 1 72 7 3 Jal 732 Einleitung Lesen dieser Anleitung Wichtige Hinweise Produktbeschreibung Bestimmungsgem e Verwendung Leistungsmerkmale Gew hrleistung und Haftung Handhabung Programmieren des Moduls Montage Ausf hren des Anwenderprogramms Bedienelemente Tasten Leuchtdioden Anschlu klemmen Niederspannungsklemmen Netzklemmen Hinweise zum Anschluss der Station Hardware Einleitung Schaltungstechnik intern Betriebssystem berblick Bootstrap Installieren des Betriebssystems Hostmodus Systeminitialisierung und Starten von Programmen Download von Programmen und andere Host Befehle ONRAD ee Seite NO 23 23 23 33 33 33 34 34 34 o C Control Il Station 7A 7 4 1 74 2 74 3 TAA TAS 74 6 74 7 8 1 8 2 8 3 Oal 01012 8 33 8 3 4 Dada 8 3 6 8 4 8 4 1 8 4 2 8 4 3 8 5 8 0 1 O02 8
55. e zur Berechnung eines Ausdrucks herangezogen wird sollte sie initialisiert werden Anderenfalls ist auch das Ergebnis des Ausdrucks unbestimmt abgesehen von trivialen Ausdr cken wie O x Die Initialisierung erfolgt durch Wertzuweisung z B int i i 0 Bei Arrayvariablen mu jedes Element einzeln initialisiert werden z B in einer Schleife die den Index von O bis zur Anzahl der Elemente 1 laufen l t int i long table 13 for 1 0 lt 13 table i 0 Variablen zusammengesetzter Datentypen sind erst dann vollst ndig initialisiert wenn alle einzelnen Felder auch die Felder verschachtelter Typen initialisiert sind MyType t t pos x 0 t pos y 0 t value 0 t text IT 50 8 Die Programmiersprache 2 OnrAaD amp ee 8 5 5 Globale und lokale Variablen C2 und die virtuelle Maschine der C Control Il unterscheiden zwischen globalen und lokalen Variablen Globale Variablen werden auf Modulebene neben Threads Funktionen benannten Konstanten und zusammengesetzten Datentypen definiert z B int i Function fx 5 d core Globale Variablen existieren w hrend des gesamten Programmablaufes statisch an einer ganz bestimmten vom Compiler berechneten Speicherstelle ber den Modulnamen sind sie im gesamten Quelltext nach der Definition sichtbar und zugreifbar Globale Variablen sollten sehr sparsam und gut berlegt verwendet werden Nach M glichkeit sollten s mtliche Manipulationen eine
56. e LED so ist das zugeh rige Relais angezogen der Arbeitsstromkreis ist geschlossen 4 2 2 LEDs ber den Funktionstasten gelb Die LEDs ber den Funktionstasten F1 F3 k nnen im Anwenderprogramm ein und ausgeschaltet werden und so zur Anzeige von Programmzust nden dienen 4 2 3 LEDs im Anzeigefeld rot Die LEDs k nnen im Anwenderprogramm ein und ausgeschaltet werden und so zur Anzeige von Programmzust nden dienen 5 Anschlu klemmen OnrAaD mmm 5 AnschluBklemmen 5 1 Niederspannungsklemmen ES Achtung Zur Einhaltung der geltenden Bestimmungen bez EMV d rfen zum Anschluss an Ports nur geschirmte Leitungen verwendet werden 5 1 1 Serielle Schnittstelle RS232 1 Datenempfangsleitung RX Schnittstellenkabel weiBe Ader 2 Signal Ground Masse GND Schnittstellenkabel braune Ader 3 Datensendeleitung TX Schnittstellenkabel gr ne Ader An den Klemmen 1 bis 3 wird bei der Programmierung des Moduls das Schnittstellen kabel zum PC angeschlossen Au erdem kann das Modul zur seriellen Daten bertragung auch w hrend des Betriebes mit einem PC verbunden sein 5 1 2 2W Bus Interface 5 Clockleitung 6 Datenleitung 7 GND Schliessen Sie hier das 2W Bus Standardmodem an wenn sie Zugriff auf die busf higen Sensoren haben wollen 5 1 3 C Bus Interface 8 SCT Datenleitung 9 SDA Clockleitung Schliessen Sie hier Ger te oder Bausteine an die ber ein C Bus Interface verf gen 5 1 4 C
57. e der einzelnen Datumsinformationen dienen die Funktionen function year returns int function month Zi returns int function day returns int function dow returns int dow liefert den Wochentag Dabei steht O f r Sonntag 1 f r Montag usw bis 6 f r Samstag Stellen Sie in Ihrem Programm vor der Abfrage der einzelnen Datumswerte sicher da nicht zwischendurch ein Tageswechsel Mitternacht auftreten kann vgl Quellcode der Funktion gettime 10 11 5 Sommerzeitflag function dst returns int Die Funktion gibt die Information zur ck ob es sich beim aktuellen Systemdatum um ein Datum in der Sommerzeitperiode handelt O entspricht der Normalzeit Winterzeit bedeutet Sommerzeit 115 o DO o C Control Il Station 10 11 6 Aufruf von Systemfunktionen function call int segment int offset function Jump int segment int offset Aus C2 Programmen heraus k nnen beliebige Funktionen des Betriebssystems oder anwenderdetinierte Assembler C Routinen aufgerufen werden Dazu gibt es im Modul system c2 diese Funktion Uber den Aufruf der function jump k nnen Sie die virtuelle Maschine der C Control I Unit und somit die Abarbeitung eines C2 Programms verlassen und zu einer beliebigen Routine im GesamtadreBraum des C164Cl springen Voraussetzung f r den Aufruf von call und jump ist da Sie jeweils die Adresse seg ment offset der Funktion kennen Die Adressen Ihrer eigenen Ass
58. e des HiWord HiByte des LoWord LoByte des LoWord putfloat speichert den Wert in acht Bytes ab der Position pos im IEEE Format ab Da dieses Format nicht von allen Computersystemen gleicherma en interpretiert wird sollte putfloat nur f r den Datenaustausch zwischen C Control Il Systemen verwendet werden 10 74 Lesen von Zahlenwerten aus einem Bytepuffer function getint byte src int pos returns int function getlong byte sre int pos returns Long function getfloat byte sre int pos returns float Zu den Funktionen zum Schreiben von Zahlenwerten gibt es je eine entsprechende Funktion zum Lesen der Werte aus einem Bytepuffer F r alle drei Funktionen ist Src Referenz auf eine Bytepuffervariable pos Leseposition im Puffer 104 10 Module Onrao L A 10 8 plm c2 10 8 1 Setzen der Zeitbasis function settimebase int channel int timebase Es k nnen acht veschiedene Zeitbasiswerte eingestellt werden Das Einstellen erfolgt mit channel PLM Kanal 0 1 2 timebase Zeitbasis Die bergebenen Zahlenwerte ergeben folgende Zeitbasen Beachten Sie bitte da channel O und channel 1 eine gemeinsame Zeitbasis haben Zeitbasis Dauer eines Ticks BASE_400 0 BASE_800 1 BASE_ 1600 2 BASE_ 3200 3 BASE_ 6400 4 BASE_ 12800 5 BASE_25600 6 256 us BASE_51200 7 512 us 10 8 2 Setzen des Portmodus function setmode int channel int mode Jeder de
59. ebung k nnen Sie diese von Ihrem Windows Starimen aus starten Die Benutzeroberfl che der Integrierten Entwicklungsumgebung entspricht aktuellen Standards und ist intuitiv zu bedienen Details entnehmen Sie bitte der Online Hilfe die Sie durch Dr cken der Taste F1 aufrufen k nnen 9 2 Quelltexte bearbeiten Im Editor der Integrierten Entwicklungsumgebung geben Sie die Quelltexte der einzelnen Module ein Durch das sogenannte Syntax Highlighting werden die verschiedenen Syntaxelemente in verschiedenen einstellbaren Farben und Schriftstilen angezeigt Dadurch wird die Lesbarkeit der Programme am Bildschirm und beim Ausdruck erh ht Au erdem k nnen einfache Schreibfehler leichter erkannt werden Der Editor verf gt ber die blichen Funktionen zum laden und Speichern von Dateien Suchen und Ersetzen von Textpassagen sowie ber Undo und Redo f r Quelltext nderungen Weitere Werkzeuge zur Unterst tzung Ihrer Arbeit sind die automatische Vervollst ndigung von Bezeichnern w hrend der Eingabe kontextsensitive Hilfe zu C2 Schl sselw rtern und modul bergreifendes Suchen nach der Definition von C2 Bezeichnern im aktuellen Projekt Die genauen Beschreibungen dazu finden Sie in der Online Hilfe der Integrieren Entwicklungsumgebung Taste Fl 85 o DO o C Control Il Station 9 3 Richtlinien zur Quelltextformatierung 9 3 1 Vorteile der einheitlichen Formatierung Fur die syntaktische und funkti
60. einige einfache Formatierungen beim Anh ngen von Zahlenwerten an Strings Das Format wird durch einen Integerparameter bestimmt Die Funktion putintf h ngt einen formatierten Integer an einen String an Der Parameter format legt die Anzahl der Ausgabestellen fest Fehlende f hrende Stellen werden mit 0 aufgef llt int Ausgabe Purimtr s ly 235 h ngt also 0001 an s an Negative format Werte f hren zur Ausgabe als Hexadezimal Zahl mit Gro buchstaben DULINEE Ls 255 4 erweitert s um OOFF long Ausgabe Function putlongf string 8 long value int format Die Funktion put 1ongf arbeitet identisch zu put int sie akzeptiert jedoch einen Long Wert zur Ausgabe float Ausgabe Function putftloatf String Sp Float value int format Bei der Funktion putfloatf legt der format Parameter die Anzahl der Nachkommastellen fest Gegebenentalls wird eine Anzahl von Nullen hinter dem Dezimalpunkt ausgegeben 112 10 Module z B p tfloati s Ly 3 h ngt 1 000 an s an Insgesamt werden maximal 8 Ziffern vor und nach dem Dezimalpunkt ausgegeben 10 10 68 Ausgabe einer Bitmaske function putmask String s int valve ant cl int cU Die Funktion putmask gibt einen Integerwert 0 255 als 8 Bitzeichen in einen String aus Das Zeichen f r Highbits wird durch den Parameter cl bestimmt ASCII Code cO legt das Lowzeichen fest za putmask s 170 A S ser h ngt o o
61. elektrischen Eigenschaften Digitalports Beachten Sie die technischen Randbedingungen f r Digitalports max Strom 6 2 18 CAN Interface CAN Controller Area Network ist ein digitales Kommunikationssystem zur Vernetzung von mikrocontrollerbasierten Baugruppen Urspr nglich wurde es f r Anwendungen in der Automobiltechnik konzipiert und geht auf Entwicklungen der Robert Bosch GmbH zur ck In modernen Autos bernehmen Mikrocontroller mit CAN Steuerungsaufgaben von ABS bis zur Zentralverriegelung Inzwischen hat sich CAN auch als Feldbus in der industriellen Automatisierungstechnik etabliert und verbindet speicherprogrammierbare Steuerungen mit Sensoren und Aktoren oder auch untereinander 31 o DO o C Control Il Station Der CAN Bus ist ein Kabelstrang mit zwei elektrischen Leitern CAN H CAN L Die maximale L nge des CAN Bus betr gt bis zu 1200m abh ngig von der genutzten Bitrate Bitrate und maximale Busl nge 50 kbit s 1200 m 62 5 kbit s 1000 m 125 kbit s 500 m 250 kbit s 250 m 500 kbit s 100 m Auf dem CAN Bus werden Datenbits massefrei als Differenzspannungen bertragen vgl RS485 Standard Diese Art der Daten bertragung macht das Signal sicherer gegen die Einstrahlung von St rsignalen verglichen mit der bertragung von Spannungspegeln mit Bezugsmasse An beiden Enden mu der CAN Bus mit je einem 120 Ohm Widerstand abgeschlossen sein Die L ngen der Stichleitungen vom Bus zu
62. eln anderer Threads teilen mu Die Adressierung von Daten auf dem Stapel erfolgt relativ zu einem 16BitBasepointer BP Ein 16Bit Stackpointer SP zeigt auf das obere Ende des Stapels Jeder Thread hat sein eigenes Paar von Base und Stackpointern 7 4 7 Systemschnittstelle Die virtuelle Maschine der C Control Il Station verf gt ber spezielle Betehlscodes als Schnittstelle zu den Hardwareressourcen und Funktionen des Betriebssystems Damit unter scheidet sie sich vom zugrundeliegenden Mikrocontroller C164Cl der die Hardwareressourcen als Register in einen bestimmten SpeicheradreBbereich legt Special Function Register SFR Die Umwandlung von Systemoperationen der virtuellen Maschine in konkrete Hardwarezugriffe z B auf Register in den SFR erfolgt im Betriebssystem der C Control Il Damit sind die virtuelle Maschine selbst sowie die daf r compilierten Anwenderprogramme relativ einfach aut andere Computersysteme portierbar Die Befehlscodes zum Zugrift aut Hardwareressourcen werden den Anwenderprogrammen ber inline Funktionen in den C2 System modulen zur Verf gung gestellt 39 o DO o C Control Il Station 8 Die Programmiersprache C2 8 1 Einleitung Die Programmierung der C Control Il erfolgt in der Programmiersprache C2 C2 ist syntaktisch hnlich zu C einige Details erinnern auch an PASCAL oder BASIC Wie in C gibt es nur eine berschaubare Anzahl von Schl sselworten Einige Schl ss
63. elworte dienen speziell der Unterst tzung des Multithreading Alle System und Spezialfunktionen werden ber Bibliotheksmodule zur Verf gung gestellt und k nnen in Projekte eingebunden werden Die Projektarbeit in C2 in Verbindung mit der Integrierten Entwicklungsumgebung ist wesentlich einfacher als in C C2 bietet alle M glichkeiten die zur strukturierten Programmierung ben tigt werden Selten verwendete besonders gef hrliche und schwer verst ndliche Sprachkonstrukte von C wurden weggelassen Inhalt dieses Kapitels ist die systematische Beschreibung der Programmiersprache C2 in Form einer Referenz Nach einem berblick ber die Syntaxelemente folgt eine ausf hrliche Darstellung aller Operatoren Typen Definitions und Anweisungsformen Abschlie end finden Sie eine Aufstellung aller Datentypen und Funktionen der Systemmodule sowie kurze Beispiele zu deren Anwendung Ausf hrlichere Programmbeispiele befinden sich auf der CD zur Integrierten Entwicklungs umgebung F r nachfolgende Abschnitte vereinbaren wir die folgenden Formatierungen und Stile um Textelemente mit besonderer Bedeutung gezielt hervorzuheben datei ext Dateinamen STRG ir Tasten und Tastenkombinationen sourcecode Quelltextbeispiele Name im Quelltext zu ersetzen durch das beschriebene Syntaxelement 8 2 Projekte und Module Der C2 Compiler erzeugt aus einem C2 Projekt einen Bin rcode der anschlie end in die C Control II bertragen und von der virtue
64. embler C Routinen entnehmen Sie bitte den Ausgaben Ihrer Assembler C Entwicklungstools Ein Beispiel zur Anwendung von call finden Sie auf der Utility CD 10 11 7 Anwenderdefinierte Interruptroutinen Zur unverz gerten Reaktion auf die Ereignisse Ims Timerzyklus des Systems High Low Flanken an den Digitalports PIH O PIH 3 k nnen Interruptroutinen in Assembler oder C geschrieben und im Segment 3 des FLASH EEPROMs gespeichert werden Lesen Sie dazu das Kapitel 8 Systemprogrammierung Das Aktivieren der anwenderdefinierten Interruptroutinen erfolgt durch Aufruf der Funktion function hook int event int segment int offset int mode Die Funktion hook h ngt eine anwenderdefinierte Interruptroutine in die normale Interruptbehandlung des Systems ein Der Parameter event gibt vor f r welche Interruptquelle eine Interruptroutine aktiviert werden soll EVENT_TIMER 0 ms Timer Digitalport P1H 0 Digitalport P1H 1 Digitalport P1H 2 116 10 Module Onrao Die Parameter segment und offset geben die Speicheradresse der Interruptroutine im GesamtadreBraum des Mikrocontrollers an Die Speicheradresse entnehmen Sie bitte den Ausgaben Ihrer C Assembler Entwicklungstools Lesen Sie dazu die Dokumentation zu diesen Tools Wenn Sie eine C Funktion als Interruptroutine schreiben m chten mu sie im Stil void tx void definiert sein also ohne Parameter und R ckgabewert Wird eine Interrupt
65. enen numerischen Ausdrucks Ist der Wert gleich O dann gibt der aktuelle Thread die Programmausf hrung unabh ngig von seiner Priorit t sofort an den n chsten Thread ab vgl yield Dadurch wird vermieden da Threads mit hoher Priorit t wartend das System blockieren Ein Thread wiederholt die wait Anweisung so lange bis der numerische Wert ungleich O wird wait numerischer Ausdruck z B wait ports get 3 wartet auf High Pegel an Port3 8 9 5 Pausen In vielen Anwendungen ist es erforderlich da ein Thread seine Ausf hrung f r eine bestimmte Zeit unterbricht und danach automatisch weiterl uft Dazu gibt es in C2 die sleep Anweisung Nach dem Schl sselwort sLeep folgt ein numerischer Ausdruck sleep numerischer Ausdruck ZB sleep 1000 Der berechnete Wert des numerischen Ausdrucks bestimmt die Ruhepause des aktuellen Threads in Millisekunden Der Wert des Ausdrucks bleibt auf den int Bereich beschr nkt Gegebenenfalls nimmt die virtuelle Maschine eine Konvertierung vor Negative Pausenwerte von 1 bis 32768 werden als Werte von 65535 bis 32768 interpretiert Zweierkomplement Die Pr fung ob eine Pause beendet ist erfolgt mit jedem Zyklus in dem der Thread Rechenzeit erh lt In einer Anwendung mit sehr vielen Threads die mit hohen Priorit ten lange Umlaufzeiten nach sich ziehen kann die tats chliche Pause daher etwas l nger als urspr nglich spezifiziert werden Ist die Pause noch nicht vor ber
66. er zum Start des Programm Download CMD_LOAD_VMC Beim Download wird ein kompiliertes Anwender programm VMC Dateilvom PC zur C Control Il Unit bertragen und von dieser im FLASH Speicher abgelegt Die bertragung erfolgt innerhalb der Integrierten Entwicklungs 34 7 Betriebsystem umgebung die Sie von der Utility CD installieren k nnen Lesen Sie dazu die Hinweise auf der CD bzw in der Online Hilfe zur Integrierten Entwicklungsumgebung U a sind folgende Kommandobytes definiert Kommando Reaktion der Unit im Hostmodus CMD_SEND_ID 0 antwortet mit dem Text CControl II CMD_SEND_VERSION 2 antwortet mit einem Versionsstring CMD_START 3 startet ein vorhandenes 2 Anwenderprogramm CMD_LOAD_VMC 4 Beginn der bertragung eines 2 Anwenderprogramms CMD_ERASE_VMC 6 l scht ein vorhandenes 2 Anwenderprogramm CMD_RESET 255 f hrt einen Software Reset des Mikrocontrollers aus 7 4 Virtuelle Maschine 74 1 Grundlagen Die Ausf hrung von Anwenderprogrammen auf der C Control II Unit erfolgt durch die virtuelle Maschine VM Der Begriff virtuell wird heute in vielen Zusammenh ngen U n eu verwendet Virtuell bedeutet soviel wie gedacht nachgebildet so als ob Die Maschinen der Computertechnik sind die Mikroprozessorkerne Sie sind durch ihren jeweiligen Aufbau aus Registern Rechenwerken Steuerwerken und der Schnittstelle zum Programm und Datenspeicher c
67. erden In Programmteilen die mit anderen Ger ten kommunizieren kann es Situationen geben 36 7 Betriebsystem Onrao in denen gewartet werden mu bis der Kommunikationspartner bereit f r den Datenempfang ist In einem Computersystem mit ausschlie lich sequentieller Abarbeitung des Programmes ist es praktisch unm glich in diesen Wartezust nden auf weitere Ereignisse zu reagieren So kann es passieren da ein Alarmzustand aufgrund einer bertemperatur nicht oder nicht rechtzeitig erkannt wird w hrend das System auf die Bereitschaft eines angeschlossenen Druckers wartet Beim Multithreading der C Control II kann ein Programm in bis zu 255 Threads F den aufgetrennt werden Jedem Thread wird vom Kern des Betriebssystems reihum eine Portion Rechenzeit zugeteilt Wieviel Rechenzeit ein Thread erh lt kann ber seine Priorit t gesteuert werden Bei Priorit t O wird sofort zum n chsten Thread weitergeschaltet Der h chstm gliche Priorit tswert ist 255 In einem Umlauf f hrt der Bin rcodeinterpreter f r jeden Thread maximal so viele Operationen aus wie es dessen jeweiligem Priorit tswert entspricht In Wartesituationen erfolgt die Weiterschaltung vorzeitig Die Priorit t jedes Threads kann w hrend des Programmablaufes den aktuellen Leistungsanforderungen angepa t werden Die Schwierigkeit bei der Erstellung eines Programms mit Multithreading liegt in der ausgewogenen Vergabe der Priorit tswerte Bei bis zu 255 Thread
68. erden Die hwcom Schnittstelle kann dabei bis 115 200 Baud arbeiten swcom nur bis 9 600 Baud Ubertragungsgeschwindigkeit SPEED 200 0 300 Baud SPEED_600 1 600 Baud SPEED_ 1200 2 1200 Baud SPEED_ 2400 3 2400 Baud SPEED_9600 5 9600 Baud mt erg SPEED_57600 8 57600 Baud an ig SPEED_ 19200 bis SPEED_ 115200 nur f r hwcom 10 2 3 Setzen des erweiterten Empfangspuffers function setbuf byte buf int length Das Betriebssystem implementiert f r beide seriellen Schnittstellen standardm ig je einen Empfangspuffer von 64 Byte In Applikationen in denen gr ere Datenbl cke zu empfangen sind sollte ein erweiterter Empfangspfuffer reserviert werden Anderenfalls kann es zum Verlust empfangener Daten f hren die vom Programm nicht schnell genug aus dem Puffer gelesen werden buf Referenz auf eine statische oder quasi statische Bytepuffervariable length Lange des Puffers 97 o on o C Control Il Station 10 2 4 Verwerfen von Daten function flush Applikationen die serielle Daten in Rahmentorm empfangen k nnen unter bestimmten Bedingungen unvollst ndige Rahmen im Empfangspuffer enthalten Dann ist es erforderlich alle Bytes im Empfangspuffer zu verwerfen um auf den Beginn des n chsten Rahmens zu synchronisieren Die Funktion flush entfernt alle Daten aus dem Empfangspufter 10 2 5 Test auf Empfang function rxd returns int Die Funktion rxd testet
69. erlei Gew hrleistungsanspruch und bernehmen wir keine Haftung 1 2 Wichtige Hinweise C Control Il ist nur bedingt f r den Einstieg in die Programmierung von Mikrocomputern und die elektronische Schaltungstechnik geeignet Wir setzen voraus da Sie zumindest ber Grundkenntnisse in einer h heren Programmiersprache wie z B BASIC PASCAL C C oder Java verf gen Au erdem nehmen wir an da Ihnen die Bedienung eines PC unter einem der Microsoft Windows Betriebssysteme 95 98 NT 2000 gel ufig ist Wir haben uns bem ht alle Beschreibungen so einfach wie m glich zu formulieren Leider k nnen wir in einer Bedienungsanleitung zum hier vorliegenden Thema nicht immer auf den Gebrauch von Fachausdr cken und Anglizismen verzichten Schlagen Sie diese bei Bedarf bitte in entsprechenden Fachb chern nach o on o C Control Il Station 2 Produktbeschreibung 2 1 Bestimmungsgem e Verwendung Die C Control Il Station dient der programmierbaren Ansteuerung elektrischer und elektronischer Ger te Eine andere als die bestimmungsgem e Verwendung ist nicht zul ssig Sicherheitshinweise Lesen Sie diesen Abschnitt besonders aufmerksam durch Bei Nichtbeachtung der Sicherheitshinweise besteht Lebensgefahr durch einen Stromschlag oder Elektrobrand l Die C Control Il Station ist in einem Geh use f r DIN Schienen Montage Hutschiene aufgebaut Zur Gew hrleistung des Schutzes vor Ber hrung
70. etrennt sind linksb ndig untereinander stehen 5 Ein erl uternder Kommentar zu einer Folge von Anweisungen steht in einer eigenen Zeile vor diesen Anweisungen mit derselben Einr ckung wie diese Anweisungen 6 Kommentare sind in einer einzigen Sprache verta t z B einheitlich englischsprachig oder einheitlich deutschsprachig Kommentare sind in derselben Landessprache wie die Bezeichner zu formulieren 86 9 Softwareentwicklung Capo G r 9 3 3 Bezeichner l Bezeichner sollen selbstbeschreibend sein Abk rzungen sind m glich solange die Bedeutung im Kontext ohne zus tzliche Kommentare erkennbar leibt Zum Beispiel getMaxTemp statt getMaximumTemperature ist zul ssig Nur primitive Funktionen tempor re Variablen zur Speicherung von Zwischenergebnissen Indizes oder Schleifenvariablen d rfen aus einzelnen Buchstaben oder kurzen Zeichen kombinationen bestehen 2 Bezeichner von Modulen Threads Funktionen und Variablen beginnen mit einem Kleinbuchstaben 3 Bezeichner von zusammengesetzten Datentypen beginnen mit einem Gro buchstaben 4 Bezeichner von Konstanten bestehen nur aus Gro buchstaben Unterstrichen und Ziffern 5 Bezeichner von Funktionen sollten weitestgehend mit einem Verb oder einer blichen Abk rzung eines Verbs beginnen zB get set put write init calc 6 In l ngeren Bezeichnem sind einzelne Worte durch Unterstriche oder einzelne GroBbuchstaben an Wortwechseln zu trennen zB getMax
71. ewert kleiner als die Periodenl nge und gr er als O ist Zur Vereinfachung der Ausgabe von Tonfrequenzen gibt es die Funktion beep Sie bezieht sich stets auf den dritten PLM Kanal channel 2 Alle Berechnungen und Einstellungen von 106 10 Module Periodenl ngen unter Ber cksichtigung der aktuellen Zeitbasis bernimmt diese Funktion Der Parameter tone bestimmt einen Ton im Bereich der T ne a bis c Ein Ton mit der Frequenz von 440Hz ist der Kammerton a der Ton einer Stimmgabel Ein negativer tone Wert schaltet den Ton ab und legt den PLM Port auf konstanten Lowpegel Eine Anzahl von tone Konstanten ist in der Moduldatei plm c2 definiert Vor der Benutzung von beep sollte eine niedrige Zeitbasis gew hlt werden da dadurch die Tonfrequenzen mit h herer Pr zision wiedergegeben werden 10 9 ports c2 Die C Control Il Unit stellt insgesamt 8 Digitalports und 7 A D Wandlerports des Mikrocontrollers an ihren Pins zur universellen Anwendung bereit Der Zugriff auf diese Ports erfolgt ber Funktionen des Moduls ports c Zwischen den digitalen Prozessorports und den Portnummer Parametern der Funktionen dieses Moduls besteht folgender Zusammenhang Byteport 1 Nibbleport 2 Einzelport Einzelport Einzelport T Einzelport Einzelport Einzelport 107 CONRAD ee o DO o C Control Il Station 10 9 1 Abfrage von Digitalports function get int n
72. gef hrlicher Spannungen dart das Modul bei 230 V Versorgungsspannung oder Relais spannungen gr er 24V nur in einem geschlossenen Schaltschrank oder in einem Schaltkasten mit Verblendung der AnschluBklemmen betrieben werden 2 Uber die insgesamt 52 Anschlu klemmen wird die C Control Station mit anderen Ger ten verbunden Dabei ist grunds tzlich zwischen den Niederspannungsklemmen und den Netzklemmen 20 bis 27 zu unterscheiden Bei versehentlichem Vertauschen der Anschl sse besteht Brandgefahr durch Kurzschl sse und k nnen das Modul und angeschlossene Ger te schwer besch digt werden 3 Die C Control Il Station dart nicht in Verbindung mit Ger ten benutzt werden die direkt oder indirekt medizinischen gesundheits oder lebenssichernden Zwecken dienen oder durch deren Betrieb Gefahren f r Menschen Tiere oder Sachwerte entstehen k nnen Die C Control II Station dort nicht in explosionsgef hrdeter oder chemisch aggressiver Umgebung betrieben werden 4 Zur Programmierung des Ger tes ist ausschlie lich die mitgelieferte Software zu verwenden Programmieren Sie das Modul nur mit Anwenderprogrammen von deren Funktion Sie sich berzeugt haben 5 Statische Entladungen auf Anschlussklemmen kann zum Absturz des Programms und damit zu unkontrollierbaren Fehlfunktionen f hren 2 Produktbeschreibung OnrAaD U nn 2 2 Leistungsmerkmale Die C Control Il Station beinhaltet bereits alle n tigen Baugruppen um zahlreiche Appli
73. harakterisiert Diesen Aufbau bezeichnet man als die Prozessorarchitektur Eine virtuelle Maschine ist ein nachgebildeter Mikroprozessorkern Die gew nschte Architektur wird per Software auf einem existierenden Computersystem her gestellt Dem Nachteil einer geringeren Geschwindigkeit bei der Ausf hrung einfacher Programmanweisungen stehen einige Vorteile gegen ber Realisierbarkeit von Architekturelementen die das als Basis benutzte Computersystem nicht bietet optimale Anpassung an eine Programmiersprache einfache Portierbarkeit der VM auf andere Computersysteme bei Wiederverwendbarkeit existierender Programme sogar als Bin rcode Im Betriebssystem der Station l uft eine von Conrad Electronic entwickelte virtuelle Maschine Sie ist funktionell eng an die Programmiersprache C2 gekoppelt und bietet den Anwenderprogrammen einfachen Zugang zu den Systemressourcen 35 ONRAD ee o on o C Control Il Station 7 4 2 Bin rcodeinterpreter Der C2 Compiler erzeugt aus dem Programmauelltext des Anwenderprogramms einen Bin rcode Dieser kann in die C Control geladen werden Bei der Ausf hrung des Anwenderprogramms wird der Bin rcode schrittweise gelesen und interpretiert D h f r jeden gelesenen Code wird eine definierte Operation ausgef hrt Die virtuelle Maschine der C Control Il Station kennt vier Codeformen zwei 16bit Formen und zwei 32bit Formen low byte low word high byte low wor
74. iable Wie bereits erw hnt dieser Vorgang l uft atomar in einer einzigen Operation der virtuellen Maschine ab Die implizite Form lautet capture ohne weitere Angaben Die implizite Form kann nur innerhalb der Anweisungsbl cke von Funktionen verwendet werden nicht in denen von Threads Die implizite Form nutzt versteckte globale byte Variablen die der C2 Compiler automatisch anlegt Zu jeder Funktion exisitiert eine solche Variable 71 o DO o C Control Il Station Das Setzen des Freisignals erfolgt durch das Schl sselwort Da sich ein Thread merkt welche byte Variable er besetzt hat steht die release Anweisung ohne weitere Angaben release Ein Thread sollte release sofort aufrufen wenn er den synchronisierten Bereich verl t Andere vor capture wartende Threads werden sonst unn tig blockiert Ein Thread darf niemals zwei capture Anweisungen ohne zwischenzeitliches relea se ausf hren Der C2 Compiler kann das nicht nachpr fen Bei MiBachtung kommt es zu Blockaden im Programm Zo byte flagl byte flag2 thread tx capture flagl Blockade im 2 Durchlauf capture flag2 flagl wird vergessen ar release nur flag2 wird freigegeben Der Thread tx im obigen Beispiel l uft wie jeder Thread automatisch in einer Endlosschleife Im zweiten Schleifendurchlauf blockiert er da flagl noch auf Besetzt steht AbschlieBend je ein Beispiel z
75. ie einzelnen Elemente aufgelistet Die Gr e des Arrays ergibt sich automatisch aus der Z hlung der aufgelisteten Elemente Ein Array kann auch aus nur einem Element bestehen const Name elementl element2 2D const CHARACTERS A B C const TABLE1 0 100 10000 1000000 const TABLE2 0 1 5 3 17 const ONE 1 Arrays von numerischen Werten werden automatisch in dem maximal notwendigen Zahlentormat abgelegt Dieses ergibt sich aus dem Element mit dem anspruchsvollsten Datentyp So wird TABLE1 im obigen Beispiel ein Array von 1ong Werten wegen des Elementes 1000000 TABLE2 wird ein float Array wegen des Elementes 1 5 CHARACTERS und ONE sind Integer Arrays Wie Arrays von numerischen Konstanten k nnen Arrays von Stringkonstanten definiert werden zb const menu rice couscous potatos 8 7 Operatoren 8 7 1 Rangfolge Operatoren teilen numerische Ausdr cke in Teilausdr cke Dabei werden die Operatoren in einer von ihrem Rang abh ngigen Reihenfolge ausgewertet und die Teilausdr cke zur Programmlaufzeit nacheinander berechnet vgl Vereinbarung in der Mathematik Punktrechnung vor Strichrechnung 57 o DO o C Control Il Station zB a 10 4 2 a wird 18 Ausdr cke mit Operatoren gleichen Ranges werden von links nach rechts berechnet ZB a 10 74 Ze J7 a wird 1 25 Wie aus der Mathematik bekan
76. ieder als Eingang betrieben werden Dazu m ssen die Treiberstufen abgeschaltet deaktiviert werden Das erfolgt durch Aufruf der Funktionen jeweils f r einen Einzelport Nibbleport oder Byteport function 109 o DO o C Control Il Station 10 9 5 Pulsz hlung getcount int number returns long Die vier Digitalports PO P3 das sind die Einzelports 8 bis 11 sind interruptsensibel Sie werden vom Betriebssystem beim Reset so eingerichtet da sie eingehende Inpulse z hlen bei High Low Flanke am Digitalport Diese vier Z hlerst nde k nnen ber die Funktion getcount abgefragt werden Als Parameter erwartet die Funktion die Zahlernummer 0 3 Bei jeder Abfrage eines Z hlerstandes wird dieser auf O zur ck gesetzt Das Aufsummieren ber einen gr eren Zeitraum mu im Anwenderprogramm erfolgen 10 9 6 Frequenzmessung function getfreq int number returns long Die Pins DCF FRQ O und FRQ 1 der C Control II Unit k nnen zur Messung von Pulstrequenzen benutzt werden Die Abfrage erfolgt mit der Funktion get freq mit der Nummer O oder 1 als Parameter 10 9 7 Analog Digital Wandlung function adc int number returns int Die Funktion adc liefert den digitalisierten Me wert von einem der 8 ADC Ports der C Control II Unit Die Nummer des Ports O 7 wird als Parameter bergeben Das Ergebnis ist ein Integer im Bereich von O bis 1023 entsprechend der 10bit Aufl sung des A D Wandlers des M
77. ikrocontrollers siehe dazu auch Kapitel 3 2 3 Beachten Sie bitte dass der ADC Port 7 von der Tastatur belegt ist 110 10 Module Onrao 10 10 str c2 Die C Control unterst tzt einfache Stringoperationen bereits auf Ebene der virtuellen Maschine Der Zugriff auf diese Operationen erfolgt ber Funktionen des Moduls strc2 10 10 1 String leeren Function clear string 8 Die Funktion clear leert den als Referenz bergebenen String seine L nge wird auf O gesetzt 10 10 2 Stringl nge ermitteln function length string s returns int Die Funktion length ermittelt die L nge des als Referenz bergebenen Strings 10 10 3 String mit Zeichen f llen function fill string int pos int Die Funktion 411 fullt einen String s ab der Position pos 0 29 bis zur maximalen Lange 30 Zeichen mit dem Zeichen c ASCll Code 10 10 4 Ausgabe in einen String Function putchar X rg Sy ant function putstring string dest string source function putint string s int value function putlong string s long value Function putfloat String s float value Uber die put Funktionen im Modul strc2 k nnen Inhalte an eine existierende Stringvariable angeh ngt werden einzelne Zeichen Teilstrings Integer Long oder Floatwerte 111 o DO o C Control Il Station 10 10 5 Formatierte Ausgabe in einen String Function putint string sy int value ant format C2 unterst tzt
78. im Compilieren berlesen z B die Leerzeichen Tabulatoren und Zeilenvorsch be im Programmquelltext Das gilt jedoch nicht innerhalb von Stringkonstanten Leerzeichen in Stringkonstanten bleiben erhalten und gelangen so zur Ausgabe wie sie sich im Quelltext befinden 8 3 3 Bezeichner Bezeichner sind die Namen von Modulen Variablen Konstanten zusammengesetzten Typen deren Felder Funktionen und Threads ein Bezeichner besteht aus mindestens einem Zeichen und kann beliebig lang sein g ltige Zeichen eines Bezeichners sind Buchstaben A Z a z keine Umlaute oder B Ziffern 0 9 und Unterstriche _ das erste Zeichen dart keine Ziffer sein C2 ist case sensitiv d h Gro und Kleinschreibung von Buchstaben werden unterschieden Abc abc aBc sind verschiedene Bezeichner C2 Schl sselworte sind als Bezeichner nicht zul ssig ES Jeder Bezeichner mu dem Compiler vor seiner ersten Verwendung bekannt sein D h er mu weiter oben im aktuellen Modulquelltext oder in einem vorher bersetzten Modul definiert sein Bezeichnern die in einem anderen Modul zuvor definiert sind mu ohne Zwischenraum der Modulname und ein Punkt vorangestellt werden 42 8 Die Programmiersprache 2 Capo C E Beispiel Funktion fx definiert in Moduldatei a c2 function fx L Aufruf der Funktion weiter unten in a c2 EXC Aufruf der Funktion in einem anderen Modul in der Modulliste des Projektes nach a c2
79. in 8 9 3 ebenfalls erl utert wurde kann diese Befehlskette jederzeit von einem Threadwechsel unterbrochen werden also auch zwischen dem 1 und 2 Befehl im obigen Beispiel Dann kann der measure Thread bereits neue Werte erfa t haben bevor der watch Thread wieder an die Reihe kommt Der wat ch Thread setzt seine Ausf hrung mit dem laden von b und dem Aufruf von check fort An die Funktion check wird jetzt also ein a aus einem alten und b aus dem neuen MeBzyklus bergeben Abh ngig davon was check konkret von a und b erwartet kann das zu einer schweren Fehlfunktion des Programms f hren Im ung nstigsten Fall l uft ein Programm mit einem potentiellen Aliasing Problem in der Testphase v llig problemlos wenn die Aliasing Bedingung sehr selten eintritt Zur Vermeidung von Konkurrenz und Aliasing Situationen m ssen Threads an bestimmten kritischen Stellen synchronisiert werden d h Threads m ssen gezwungen werden vor der weiteren Programmabarbeitung auf eine Art Freizeichen zu warten Bei Verf gbarkeit des Freizeichens mu der wartende Thread sofort ein Besetzt signalisieren um konkurrierende Threads zum Warten zu zwingen Hat ein Thread den kritischen Programm bereich durchlaufen mu er das Besetzt zur cknehmen und das Freizeichen signali sieren Anderenfalls w rden die auf das Freizeichen wartenden Threads auf ewig blockiert bleiben Bei genauer berlegung der Problematik leuchtet ein da die Akt
80. ine Funktion kann sich theoretisch auch selbst aufrufen Das wird als Rekursion bezeichnet Einige mathematische N herungen beruhen auf rekursiven Algorithmen mit Abbruch schranken C2 verbietet rekursive Funktionsaufrufe nicht ausdr cklich sie sollten jedoch vermieden werden 69 o DO o C Control Il Station Rekursionen f hren ab einer gewissen Tiefe immer zur berschreitung des Stackbereiches der f r einen Thread reserviert is Dann werden Daten anderer Threads ungewollt berschrieben Das kann von lokalem Fehlverhalten bis zum Absturz des gesamten Systems der C Control f hren 8 8 7 Inline Funktionen und Anweisungen Die Bibliotheksmodule zum Zugriff auf die Ressourcen der C Control II Unit zB hwcom c2 benutzten inline Funktionen und Anweisungen zum direkten Einf gen von virtuellen Maschinencodes in den Programmaquelltext Es gilt inline Funktionen d rfen nur inline Anweisungen enthalten In einer inline Anweisung mu nach dem Schl sselwort ein konstanter Ausdruck stehen der einen Operationscode darstellt siehe 74 2 FS inline Funktionen und Anweisungen werden nur von C2 Systementwicklern ben tigt Eine ausf hrliche Dokumentation der einzelnen Operationscodes der virtuellen Maschine ist nicht Bestandteil des Lieferumfanges der C Control Unit 8 9 Threads 8 9 1 Definition Threads werden auf Modulebene definiert und sind nach der Definition global sichtbar Es gib
81. ion testen ob Freizeichen wenn ja dann besetzten atomar sein mu d h nicht durch einen Threadwechsel unterbrochen werden darf Eine wait Anweisung mit nachfolgendem L schen einer frei Variable erf llt diese Voraussetzung nicht z B wait free 2 virtuelle Maschinenoperationen free 0 2 virtuelle Maschinenoperationen besteht aus 4 virtuellen Maschinenoperationen Angenommen ein Thread bekommt hier das Freizeichen dann erfolgt ein Threadwechsel bevor er free auf O setzen kann Ein 76 8 Die Programmiersprache 2 ONRAD zweiter Thread der ebenfalls auf dieses Freizeichen wartet erh lt nun Rechenzeit Das Signal steht noch auf frei obwohl schon ein anderer Thread den kritischen Bereich betreten hat Zur L sung des Synchronisationsproblems stellt die virtuelle Maschine der C Control Il eine atomare Maschinenoperation zur Verf gung auf die in C2 ber das Schl sselwort capture zugegriffen werden kann Die capture Anweisung existiert in einer expliziten und einer impliziten Form Die explizite Form erwartet die Angabe eines Bezeichners einer globalen I byte Variable ZB byte flag thread tx capture flag explicit capture the flag Vd eas Beim Ausf hren der capture Anweisung testet der aktuelle Thread ob der Wert der Variablen O ist Freizeichen Wenn ja dann schreibt der Thread seine eigene Nummer Wert 1 255 in die Variable und merkt sich die Adresse der byt e Var
82. ispiel 80 Bytes belegt 10 8 Bytes Der Zugriff auf einzelne Arrayelemente in Ausdr cken und Zuweisungsanweisungen und erfolgt ber einen Indexterm in eckigen Klammern Der Indexterm kann ein beliebiger auch nichtkonstanter numerischer Ausdruck sein Sein Wert wird zur Programmlaufzeit berechnet z B Vila coeff 1 x i coeff i 1 x 1 1 FS Der Index ist nullbasiert D h der Indexwert O bezieht sich auf das erste Element der Wert 1 auf das zweite usw t W hrend des Programmlaufes erfolgt keine berpr fung des Index Ein h ufiger Fehler in Anwenderprogrammen ist die Verletzung des zul ssigen Indexbereiches Das kann vom einfachen lokalen Fehlverhalten des Programm bis zum vollst ndigen Systemabsturz der C Control Il f hren Mehrdimensionale Arrays werden in C2 nicht unterst tzt Eine vergleichbare Funktionalit t kann ber die Verwendung eindimensionaler Arrays von zusammengesetzten Datentypen hergestellt werden 26 Type Line d int row 10 15 Type Matrix d Line line 10 kr Matrix m int x 49 o on o C Control Il Station int Lp Ke x m line i row k Diese Syntax ist zwar etwas schreibaufwendiger als ein vergleichbares m i k in anderen Programmiersprachen daf r ist die Lesbarkeit von C2 Programmen an dieser Stelle wesentlich besser 8 5 4 Initialisierung Der Wert einer Variablen nach der Definition ist zun chst unbestimmt Bevor eine Variabl
83. kationen ohne Mehraufwand f r Zusatzger te zu realisieren Netzteil mit Spannungsstabilisierung Klemmen zum Anschlu eines Pufferakkus programmierbare Steuereinheit mit Mikrocontroller 8 programmierbare Digitalports 6 digitale Outports 7 programmierbare Analogports zur Spannungsmessung 0 2 55V 2 programmierbare PLM Ports Klemmen f r C Bus CAN Bus und 2W Bus LCD 2 Zeilen a 16 Zeichen mit schaltbarer Beleuchtung 3 Funktionstasten 10er Tastatur mit Enter und Clear 5 programmierbare LEDs 2 Relais zum direkten Schalten von Ger ten die mit 230V Netzspannung betrieben werden Schlie er max 6A Dauerstrom serielles Interface zum Anschlu eines PCs oder anderer Komponenten Anschlu f r eine DCF77 Funkuhrantenne FrequenzmeBport zum Beispiel zum Anschlu eines Windrades bei einer Rollosteuerung eingebauter Piezolautsprecher Mit dieser Ausstattung sind Sie in der Lage in kurzer Zeit anspruchsvolle Steuerungs und Regelaufgaben zu l sen o DO o C Control Il Station 2 3 Gew hrleistung und Haftung Conrad Electronic bietet f r die C Control II Station eine Gew hrleistungsdauer von 24 Monaten ab Rechnungsdatum Innerhalb dieses Zeitraums werden defekte Ger te kostenfrei umgetauscht wenn der Defekt nachweislich auf einen Produktionstehler oder Transportschaden zur ckzuf hren ist Die Software im Betriebssystem des Mikrocontrollers sowie die PC
84. konkurrierende Portfunktionen werden deaktiviert 10 12 2 Abfrage auf Empfang des Antwortrahmens Die Funktion function rxd returns int liefert 1 wenn ein Antwortrahmen vom 2W Bus Modem empfangen wurde anderenfalls O 10 12 3 Daten bertragung Die Kommunikation mit den 2W Bus Modulen l uft stets ber ein 2W Bus Modem Zwischen der C Control Il Unit und dem Modem werden seriell synchron 8 Byte lange Datenrahmen bertragen Die Bedeutung der einzelnen Bytes entnehmen Sie bitte den Anleitungen zu den 2W Bus Modulen und dem Modem function io byte buf returns int Die Funktion io erwartet als Parameter eine Referenz auf ein 8 Byte langes Array Ihr Programm mu die an den 2W Bus zu sendenden Informationen dort eintragen zB die Adresse des angesprochenen Moduls das Kommando und eventuelle Datenbytes Die Funktion io bertr gt diesen Bytepuffer und wartet auf den Empfang des Antwortrahmens Dieser Antwortrahmen wird in den bergebenen Bytepuffer buf bertragen Der R ckgabewert der Funktion ist 1 bei erfolgreicher Daten bertragung und O im Fehlerfall das Modul hat nicht geantwortet Beachten Sie bitte da Sie in jedes 2W Bus Modul vor der eigentlichen Anwendung eine eindeutige Adresse bertragen m ssen Lesen Sie dazu die Anleitungen zu den 2W Bus Modulen und dem Modem Einige dieser Anleitungen hatten ihren RedaktionsschluB vor 118 10 Module ENRAD L A Erscheinen der C Control II Unit Der
85. le Ein Ausgabe Operationen zur Verf gung Dazu m ssen zun chst die entsprechenden Initialisierungsfunktionen der Systemmodule aufgerufen werden siehe z B Kapitel 10 2 10 5 10 12 Beachten Sie da der Aufruf einer Initialisierung alle konkurrierenden Porttunktionen deaktiviert 6 2 11 2 Z hler und Interruptports Die vier Ports PO bis P3 der C Control II Station sind interruptsensibel Nach dem Reset sind sie vom Betriebssystem wie folgt konfiguriert Bei jeder High Low Flanke an einem der Pins wird in eine von vier Systeminterrupt routinen verzweigt In dieser Routine wird einer von vier Z hlerwerten um 1 erh ht Au erdem pr ft das System ob eine besondere Behandlungsroutine des Anwenders installiert ist und f hrt diese gegebenenfalls aus siehe Kapitel 10 11 7 und 11 1 2 Die Z hlereing nge k nnen Pulse mit Abst nden bis hinab zu ca einer Millisekunde verlustfrei z hlen Sollte eine k rzere Reaktionszeit notwendig sein kann das mit Hilfe der Systemprogrammierung durch Erh hen der Interruptpriorit ten erfolgen 6 2 11 3 Schnittstellenports Weitere Ports werden vom Betriebsystem in einer Funktion als Schnittstelle unterst tzt wenn das gew nscht ist P1 SWCOM RXD P2 SWCOM TXD P3 2W Bus DATA PA 2W Bus CLOCK 28 6 Hardware Onrao 6 2 12 Digitale Outputports Die Outputports PO O bis PO4 der Station werden ber ein Schieberegister angesteuert das mit dem LCD zusammen an einem internen Bus betrieben
86. leitung C Control Il ist ein kompakter Steuerungscomputer Das System basiert auf einem Mikrocontroller des deutschen Hilech Unternehmens Infineon Technologies Dieser Mikrocontroller wird z B in gro en St ckzahlen in einigen aktuellen Fahrzeugmodellen der deutschen Automobilindustrie eingesetzt Dort bernimmt der Controller wichtige Steuerungsaufgaben der Bordelektronik C Control Il bietet Ihnen diese hochmoderne Technologie zur l sung Ihrer Steuerungsprobleme Sie k nnen analoge Me werte und Schalterstellungen erfassen und abh ngig von diesen Eingangsbedingungen ent sprechende Schaltsignale ausgeben z B f r Relais oder Stellmotoren In Verbindung mit einer DCF77 Funkuhraktivantenne wei C Control Il was die Stunde geschlagen hat und kann pr zise Schaltuhrfunktionen bernehmen Verschiedene Hardware Schnittstellen und Bussysteme erlauben die Vernetzung von C Control Il mit Sensoren Aktoren und anderen Steuerungssystemen Wir wollen unsere Technologie einem weiten Anwenderkreis zur Verf gung stellen Aus unserer bisherigen Arbeit im C Control Service wissen wir da sich auch lernbereite Kunden ohne jegliche Elektronik und Programmierertahrungen f r C Control interessieren Sollten Sie zu dieser Anwendergruppe geh ren gestatten Sie uns an dieser Stelle bitte einen Hinweis In diesem Kapitel erfahren Sie die wichtigsten Grundlagen zur Hardware der C Control Il Station Auf den hinteren Umschlagseiten finden Sie den vollst ndigen
87. ler IC verf gt ber einen erh hten Schutz vor Spannungsspitzen Spannungsspitzen k nnen in elektromagnetisch belastetem Umfeld z B in industriellen Anwendungen in die Schnittstellenkabel induziert werden und angeschlossene Schaltkreise zerst ren Der RS 232 Treiber ist fest mit HWCOM verbunden SWCOM f hrt 5V C Mos Pegel Der C Control Il Unit beiliegende Nullmodem Kabel kreuzt die Leitungen RxD und TxD und verbindet sie mit den Pins 3 PC TxD bzw 2 PC RxD der 9poligen SUB D Buchse des PCs Au erdem wird eine Masseverbindung zwischen GND der Unit und Pin 5 der 9poligen SUB D Buchse des PCs hergestellt ES Verbinden Sie niemals die seriellen Sendeausg nge zweier Ger te miteinander Sie erkennen die Sendeausg nge in der Regel an der negativen Ausgangs spannung im Ruhezustand Wird die zweite serielle Schnittstelle ohne Pegel wandler betrieben gilt wie f r alle digitalen Ports eine maximal zul ssige Leitungsl nge von 0 25 Metern 6 2 11 Digitalports PO P7 Die C Control Il Station f hrt 8 digitale Ports des Mikrocontrollers PIH O PIH 7 nach aussen An den Digitalports k nnen z B Taster mit Pull Up Widerst nden Digital ICs Optokoppler oder Treiberschaltungen f r Relais angeschlossen werden Die Ports k nnen einzeln in Vierergruppen Nibble oder byteweise angesprochen werden siehe Kapitel 10 9 Ein Port ist entweder Eingang oder Ausgang Schalten Sie niemals zwei Ports direkt zusammen die gleichzei
88. lie end folgen der Funktionsname Bezeichner und in runden Klammern die Liste der formalen Parameter Optional kann dann nach dem Schl sselwort returns ein Ergebnistyp spezifiziert wer den function name typel namel returns type Funktionen in C2 k nnen nur numerische Ergebnisse zur ckgeben also die Datentypen byte int long und Die R ckgabe von Strings Arrays oder zusammengesetzten Typen ist nicht m glich function fx returns byte OK function fx returns int OK function fx returns long OK function fx returns float OK function fx returns string Fehler function fx returns MyType Fehler In der Liste der formalen Parameter werden Typen und Namen der beim Aufruf zu ber gebenden Daten spezifiziert Mehrere Parameter sind jeweils durch ein Komma voneinander getrennt Hat eine Funktion keine Parameter stehen nach dem Funktions namen nur die ffnende und schlie ende runde Klammer Als Parameter k nnen numerische Daten Strings oder Daten mit zusammengesetztem Typ bergeben werden Auch Arrays sind m glich Bei der bergabe von Arrays erfolgt keine Gr enangabe in den eckigen Klammern nach dem Parameternamen 64 8 Die Programmiersprache 2 ONRAD S Beispiele Funktion mit einem Integerparameter und einem Integerergebnis function fx int x returns int Funktion mit einem Stringparameter function fx string s Funktion mit einem long Array und einem Integerp
89. ll byte buf int length byte c Die Funktion i11 f llt eine angegebene Byteputtervariable mit einer Anzahl gleicher Zeichen zB Leerzeichen buf Referenz auf eine Bytepuffervariable length Fulll nge c Zeichen ASCIl Code 10 72 Kopieren function copy byte dest int pos byte src int length Die Funktion copy kopiert eine Anzahl length Zeichen aus einer Bytepuffervariable src an eine bestimmte Position pos einer anderen Bytepuffervariable dest Es ist darauf zu achten da der Zielpuffer gen gend Platz f r die kopierten Zeichen bietet 10 73 Speichern von Zahlenwerten in einem Bytepuffer function putint byte dest int pos int value function putlong byte dest int pos long value function putfloat byte dest int pos float value 103 o DO o C Control Il Station Beim Aufbau von Datenpuffern vor einer bertragung m ssen oft Zahlenwerte gespeichert werden die mehr Platz als je ein einzelnes Byte ben tigen Integer Long oder Flie kommawerte Dazu k nnen folgende Funktionen des Moduls mem c2 benutzt werden F r alle drei Funktionen ist dest Referenz auf eine Bytepuffervariable pos Ausgabeposition im Puffer c der Zahlenwert Die Funktion putint speichert den Wert in zwei Bytes ab der Position pos in der Folge HiByte LoByte putlong speicher den Wert in vier Bytes ab der Position pos in der Folge HiByte des HiWord LoByt
90. llen Maschine als Programm ausgef hrt werden kann Ein C2 Projekt kann aus beliebig vielen Modulen bestehen Ein Modul ist eine einfache ASCll Textdatei mit der Dateierweiterung c2 Der Dateiname ohne Pfad und Extension ist der Modulname Der Name eines Moduls mu ein g ltiger C2 Bezeichner 40 8 Die Programmiersprache 2 Onrao sein siehe unten Jeder Name darf nur einmal im Projekt vorkommen Auf die Module verteilt steht der gesamte Quelltext eines Programms Auf Modulebene werden globale Variablen benannte Konstanten zusammengesetzte Datentypen Funktionen und Threads definiert Die Aufteilung eines Projektes in mehrere Module hat folgende Vorteile verbesserte Ubersichtlichkeit ber die Quelltexte gro er Programme einfache Wiederverwendung getesteter Module in anderen Projekten verbesserte Lesbarkeit von Quelltexten durch die automatische Bildung eines Namensraumes f r jedes Modul und die Notwendigkeit der Modulspezifikation bei der Verwendung von Bezeichnern aus einem Modul Ein Projekt beschreibt eine Liste von Modulen Die Reihenfolge der Module in der Liste bestimmt die Reihenfolge bei der bersetzung durch den C2 Compiler Das erste Modul in der Liste wird als erstes bersetzt dann das zweite usw bis zum letzten Modul Zusammen mit der Integrierten Entwicklungsumgebung werden zahlreiche Bibliotheks module ausgeliefert die z B Funktionen zum Zugriff auf Systemressourcen der C Control Il Station enthal
91. lnen Fehlercodes empfehlen wir dringend die Lekt re eines Fachbuches zum Thema CAN Bus sowie der Systemdokumentation zum C164CI Mikrocontroller R ckgabe der Code Konstante ERROR STUEP ERROR_FORM 2 ERROR_ACK 3 1 ERROR_BIT1 4 10 1 4 Nachricht senden function send int channel int id byte buf int length Die Funktion send bergibt Bytes aus einem Bytepuffer an einen CAN Ausgabekanal channel O 13 channel 14 kann nur empfangen id Message ID der Nachricht buf Referenz auf Bytepuffervariable length Pufferl nge max 8 10 1 5 Nachricht ver ffentlichen function publish int channel int id byte buf int length Die Funktion publish bergibt Bytes aus einem Bytepuffer an einen CAN Ausgabekanal und stellt die Daten fur Remote Request Anforderungen anderer CAN Busteilnehmer zur Verf gung D h andere Busteilnehmer k nnen unter Angabe der passenden Message ID die bertragung der Pufferdaten anfordern channel 0 13 channel 14 kann nur empfangen id Message ID der Nachricht buf Referenz auf Bytepuffervariable 94 10 Module Onrao L A length Pufferl nge max 8 10 1 6 Z hlen der Remote Request Anfragen function rtrcount int channel returns byte Die Funktion rtrcount liefert nach Ver ffentlichung einer Nachricht einen Z hlerwert wie oft diese Nachricht von anderen Busteilnehmern abgefragt wurde Der Z hler ist jedoch auf den Wer
92. mit der Empfangs ID eines CAN Kanals zu vergleichen sind um zu entscheiden ob eine eingehenden Nachricht f r diesen Kanal bestimmt ist und zu empfangen ist Ein O Bit bedeutet don t care egal ein 1 Bit bedeutet compare mu verglichen werden 0000 Dam I em Empfangs ID 0x0120 Message ID 0x0120 Empfang ja nein ja Wenn specialMask ungleich globalMask ist dann werden wegen der UND Verkn pfung f r Kanal 14 weniger Bits als bei den Kan len O 13 verglichen Kanal 14 ist also f r mehr eingehende Nachrichten empfangsbereit Man k nnte z B g lobalMask auf OxO7FF setzen alle 11 ID Bits und specialMask auf Ox0000 Dann ist jeder Kanal O 13 nur f r den Empfang genau einer Nachricht zust ndig und Kanal 14 ist ein Universalempf nger Weitere Details zum Nachrichtenempfang siehe auch ab 10 1 7 10 1 2 Statusabfrage f r einen CAN Kanal function ready int channel returns int Die Funktion ready pr ft ob ein Kanal bereit f r eine neue CAN Ubertragung ist channel 0 14 channel 14 kann nur empfangen und ist nie bereit R ckgabe wenn bereit sonst O 10 1 3 Test auf bertragungsfehler function error returns int Die Funktion error befragt die integrierte CAN Hardware des C164CI nach dem zuletzt aufgetretenen Fehler Eine Zuordnung eines Fehlers zu einem einzelnen Kanal ist nicht 93 o DO o C Control Il Station m glich Zum Verst ndnis der einze
93. nction stop Eine Daten bertragung auf dem I C Bus wird durch die Stopbedingung abgeschlossen Die Funktion stop erzeugt dieses Signal auf dem Bus 100 10 Module Onrao 10 3 4 Schreiben eines Bytes function write byte c returns int Die Funktion write sendet ein Byte auf dem TC Bus Das Ergebnis der Funktion ist 1 wenn das angesprochene IC mit einem Acknowledge geantwortet hat anderentalls O 10 3 5 Lesen eines Bytes mit Acknowledge function read returns byte Die Funktion read liest ein Byte ber den I C Bus und antwortet mit einem Acknowledge Signal Eine typische Anwendung ist das sequentielle Lesen von Bytes aus einem seriellen EEPROM 10 3 6 Lesen eines Bytes ohne Acknowledge function readlast returns byte Die Funktion readlast liest ein Byte ber den I C Bus und antwortet mit einem No Acknowledge Signal Eine typische Anwendung ist das Lesen des letzten Bytes einer Bytesequenz aus einem seriellen EEPROM 10 3 7 Test auf Sendebereitschaft function ready returns int Die Funktion ready pr ft ob der PC Bus bereit f r eine neue bertragung ist R ckgabe wenn bereit sonst O 10 4 Icd c2 Das 2x8 Zeichen LCD der C Control Il Unit wird bei der Station nicht verwendet 101 o DO o C Control Il Station 10 5 Ipt c2 Die Digitalports der C Control Il Unit k nnen u a als parallele Druckerschnittstelle benutzt werden Bei der Station ist diese Option nicht ve
94. nnungsversorgung 12 18 V An Klemme 18 kann ein stabilisiertes Netzger t oder ein 12V Akku angeschlossen werden Beachten Sie bitte dass dieser Eingang speziell f r eine Akkupufferung vorgesehen ist und deshalb bei Anlieben der Netzspannung einen kleinen Strom in den Akku zur ckspeist um ihn betriebsbereit zu halten Der Ausgang der Systemspannung Klemme 16 f hrt in diesem Fall kein Netzbetrieb weniger als 12 V Spannung 6 2 10 Serielle Schnittstelle Der Mikrocontroller C164CI besitzt hardwareseitig eine asynchrone serielle Schnittstelle nach RS232 Standard erste serielle Schnittstelle hwcom Eine zweite asynchrone serielle Schnittstelle kann vom Betriebssystem per Software an den Digitalports P1 47 Empfangen und P2 48 Senden emuliert werden zweite serielle Schnittstelle swcom Das Betriebssystem setzt f r beide Schnittstellen das Format 8 N 1 fest also jedes Byte wird mit 8 Datenbits ohne Parit tsbit und mit einem Stopbit bertragen Andere Formate werden von C Control Il nicht unterst tzt Bei entsprechenden Detailkenntnissen der Programmierung des C164CI Mikrocontrollers k nnen per Systemprogrammierung auch andere Formate realisiert werden In der Station befindet sich ein hochwertiges Pegelwandler IC zur Umsetzung der digitalen Bitstr me in Non Return Zero Signale nach 26 6 Hardware ONRAD dem RS232 Standard positive Spannung f r Lowbits negative Spannung f r Highbits Das Pegelwand
95. nt ist kann die Rechenreihenfolge durch Klammersetzung beeinflu t werden zB as 107 4 2 a wird 5 Klammerebenen k nnen theoretisch beliebig tief ineinander verschachtelt werden Allerdings geht in der Regel bereits ab der dritten oder vierten Verschachtelung jeglicher berblick ber den dargestellten Ausdruck verloren Au erdem k nnen extrem tiefe Verschachtelungen zu Stackproblemen f hren siehe 4 4 6 Das Programm arbeitet dann nicht korrekt Teilen Sie daher die Berechnung komplexer Ausdr cke nach M glichkeit in mehrere Anweisungen und speichern Sie Zwischenergebnisse in lokalen Variablen F gen Sie die Zwischenergebnisse nacheinander zum Endergebnis zusammen Auch wenn die Rangfolge es nicht erfordern w rde kann eine zus tzliche Klammer setzung um Teilausdr cke die Lesbarkeit des Quelltextes erh hen ZB x 10 amp z x 20 statt x gt 10 amp x lt 20 58 8 Die Programmiersprache 2 NRAD A Rangfolge der Operatoren in C2 Operator Zu einigen Operatoren existiert neben einem Symbol eine alternative Schl sselwortform zB stehen und mod f r die Modulodivision W hlen Sie selbst welche Form Sie bevorzugen das Ergebnis bleibt gleich 8 7 2 Arithmetische Operatoren Seeche mn a Multiplikation 2 3 6 Division 6 Jf 3 2 18 4 4 18 0 4 4 5 mod Modulodivision Divisionsrest 18 mod 4 2 18 2 OpZ negatives Vorzeichen 2 59
96. o o an s an Mit putmask k nnen zum Beispiel Byteport Zust nde einfach zur Ausgabe auf dem LCD vorbereitet werden 10 11 system c2 10 11 1 Systemtimer Das Betriebssystem verwaltet einen freilaufenden Timer In jeder Millisekunde wird der Timer um 1 erh ht Der Z hlerstand wird vom System in einer internen long Variable gespeichert Der aktuelle Wert dieser Variablen kann durch die Funktion function timer returns long abgefragt werden Beachten Sie da der Z hlerstand gem dem Wertebereich von long Variablen nach 2147483647 in den negativen Wert 2147483648 berl uft 7 11 2 Uhrzeit function settime int hour int minute int second function hour returns int function minute returns int function second returns int 113 ONRAD ee o DO o C Control Il Station Die C Control Il Unit verf gt ber eine interne Echtzeituhr die sich durch den Anschlu einer DCF77 Aktivantenne sekundengenau synchronisieren kann Dar ber hinaus kann die Uhrzeit auch im C2 Programm gestellt werden und zwar durch Aufruf der Funktion settime Die Teilwerte der aktuellen Uhrzeit Stunde Minute Sekunde k nnen durch weitere Funktionen abgetragt werden FS Beachten Sie da zwischen den einzelnen Abfragen eine neue Minute oder Stunde anbrechen kann Beutzen Sie daher vorzugsweise die Funktion function gettime TIME time Diese Funktion gibt die volle Uhrzeit im Block in die als Paramete
97. on 10 Bit Das hei t gemessene Spannungen k nnen als ganze Zahlen von O bis 1023 dargestellt werden Die Referenzspannung f r die untere Grenze ist der GND Pegel also OV Die Referenzspannung f r die obere Grenze betr gt 4 096V und wird durch ein pr zises Referenzspannungs IC erzeugt Die Toleranz der Referenz spannung liegt unter einem Prozent Die maximale Temperaturdrift ber den gesamten zul ssigen Betriebstemperaturbereich betr gt 50ppm parts per million 1 ppm 0 0001 Prozent Eine Differenz von einem Bit des digitalisierten Me wertes entspricht einer Spannungsdifferenz von 4mV Ist x ein digitaler MeBwert dann errechnet sich der entsprechende Spannungswert u wie folgt u x A 096V 1024 oder einfach u x 0 004V 6 2 4 Takterzeugung Die Takterzeugung erfolgt durch einen SMHz Quarzoszillator Im Controller erzeugt eine Pll Schaltung daraus den 20MHz Systemtakt 6 2 5 LCD Das LCD der C Control Il Station stellt 2 Zeilen zu je 16 Zeichen dar Jedes Zeichen besteht aus einer monochromen Matrix von 5x7 Punkten Ein blinkender Cursor unter einem der Zeichen kann die aktuelle Ausgabeposition anzeigen Die Besonderheit des Displays ist seine schaltbare Hintergrundbeleuchtung Das Betriebssystem der C Control Il Station bietet eine einfach zu nutzende Software Schnittstelle f r Ausgaben auf das Display Das LCD eignet sich zur Implementierung von Me wertanzeigen oder von Benutzer schnittstellen elektronischer Ger te Eine
98. onale Korrektheit eines Programms ist die Formatierung eines Quelltextes ohne Bedeutung Im Interesse der Ubersichtlichkeit und der Verst ndlichkeit sollten Quelltexte jedoch auch optisch korrekt sein Ein stilvoll und diszipliniert gestalteter Quelltext nach einheitlichen Richtlinien ist auch nach l ngerer Zeit und auch f r andere Programmierer lesbar und nachvollziehbar Formatierte Quelltexte enthalten in der Regel von Anfang an weniger Fehler Wenn sie Fehler enthalten ist deren Suche und Beseitigung einfacher an einem sauberen Quelltext durchf hrbar Nachfolgende Richtlinien sind Gestaltungsvorschl ge Es steht Ihnen frei die Vorschl ge anzunehmen zu variieren oder zu verwerten Wenn Sie jedoch Unterst tzung von Conrad Electronic w nschen und dazu Quelltextausz ge zur berpr fung einsenden k nnen diese nur bearbeitet werden wenn sie den unten aufgef hrten Richtlinien erkennbar entsprechen Im Zweifel orientieren Sie sich bitte an der Formatierung der Standardmodule und Beispiele auf der CD zur C Control 9 3 2 Kommentare 1 Ein Programm soll Kommentare enthalten wenn das zur wesentlichen Verbesserung der Verst ndlichkeit f hrt 2 Ein Kommentar ist zu vermeiden wenn der Sinn von Anweisungen auch durch selbstbeschreibende Bezeichner deutlich werden kann 3 Kommentare sollen nicht trivial sein z B x 1 1 an x zuweisen 4 Zeilenendkommentare sollen zumindest f r Folgen von Anweisungen die nicht durch Leerzeilen g
99. ontrol Il Station AdreBraum und k nnen Ober globale Variablen relativ einfach Daten austauschen Die Frage ob die C Control Il Unit Multithreading oder Multitasking betreibt wenn sie eine Leuchtdiode linken l t und parallel Daten von der seriellen Schnittstelle empf ngt ist eher von akademischer als von praktischer Bedeutung F r den Anwender gen gt zu wissen da es funktioniert 74 4 Programm und Konstantenspeicher Die maximale L nge des Bin rcodes betr gt 128kB Er findet in zwei Segmenten des FLASH ROMs Platz Die Adressierung eines Bin rcodes im Programmspeicher erfolgt Wordweise ber einen 16bit Offset Getrennt vom Programmspeicher nutzt die virtuelle Maschine zwei weitere FLASH Segmente f r 128kB Konstantenspeicher Am Anfang des Konstantenspeichers sind die Initialisierungswerte f r jeden Thread des Anwenderprogramms abgelegt Dann folgen konstante Zahlenwerte Tabellen und Strings die im Programm verwendet werden Der Zugriff auf den Konstantenspeicher durch das Anwenderprogramm erfolgt Word weise durch spezielle Bin rcodes und einen 16bit Offset 7 4 5 Datenspeicher Der dritte Speicherblock ist der Datenspeicher der sich im externen SRAM der C Control befindet Von den 64kB stehen ca 60kB f r Daten des Anwenderprogramms zur Verf gung abz glich des Speicherbedartes f r den Stapelprozessor Die Adressierung der Daten erfolgt Byte weise ber einen 16bit Offset 7 4 6 Stapelprozess
100. or Die virtuelle Maschine der C Control Il Station arbeitet als Stapelprozessor Sie implemen tiert nicht wie viele Mikrocontroller und Mikroprozessoren spezielle Rechenregister oder einen Akkumulator Statt dessen werden alle Operanden auf einen Stapel Stack geladen Die Operationen des virtuellen Prozessors manipulieren stets den obersten Wert auf dem Stapel oder verkn pfen die zwei obersten Werte zu einem Ergebnis Speicheroperationen nehmen einen Wert vom Stapel und legen ihn an einer Adresse im Datenspeicher ab Der Stapelprozessor der C Control Il unterst tzt Rechenoperationen mit vorzeichenbehatteten 16Bit und 32Bit Integerwerten sowie mit 64Bit FlieBkommazahlen Bytes werden immer als 16Bit Integer verarbeitet Der Stapel dient auch als Zwischenspeicher f r lokale Variablen von Threads und Unterfunktionen sowie zur bergabe von Parametern und R ckgabewerten beim Aufruf von Unterfunktionen Au erdem werden R cksprungadresse und Speicherkontext BP vor einem Funktionsaufruf auf dem Stapel gesichert und beim 38 7 Betriebsystem Onrao R cksprung wiederhergestellt Jeder Thread des Anwenderprogramms verf gt ber einen eigenen Stapel Der f r den Stapel eines Threads zur Verf gung stehende Speicherplatz betr gt theoretisch 64kB Eine Limitierung ist jedoch dadurch gegeben da sich der Stapel das 64kB gro e SRAM Segment mit einigen Daten des Betriebssystems den globalen Variablen des Anwenderprogramms und weiteren Stap
101. platz Alternativ kann ein bereits montiertes Modul im Schaltschrank umprogrammiert werden wenn die n tige Verbindung zum PC hergestellt werden kann Anderenfalls muB das Modul ausgebaut werden Installieren Sie zun chst die Programmiersoftware von der beiliegenden CD Beachten Sie die Installationshinweise auf der CD Datei installixt bzw readme txt Haben Sie bereits eine Entwicklungsumgebung f r C Control Il Unit installiert k nnen Sie diese weiterhin verwenden Installieren Sie die Erweiterungsmodule f r die Station station_treiber11 zip Folgen Sie dazu den in Achtung bet enthaltenen Hinweisen Verbinden Sie die Station mit dem PC und der Spannungsversorgung wie im Kapitel Anschlu klemmen beschrieben Schalten Sie die Spannungsversorgung ein Schreiben Sie ein Anwenderprogramm um festzulegen was die Station im Betrieb tun soll Lesen Sie dazu die Kapitel zur Programmierung des Moduls Compilieren Sie das Anwenderprogramm mit Hilfe der Programmiersoftware Testen Sie die Funktion des Anwenderprogrammes bertragen Sie das getestete Programm in Station mit Hilfe der Programmiersoftware Lesen Sie hierzu auch Kapitel 9 6 Die C Control Station ist jetzt programmiert und kann montiert werden oo o C Control Il Station 3 2 Montage F r den Betrieb mu die C Control II Station auf einer DIN Schiene montiert werden zum Beispiel in einem Verteilerkasten wie er zur
102. r 0 10 11 L ufe Vous 82 8 Die Programmiersprache 2 OnrAD C E for i 0 u lt 10 10 L ufe pare for i 9 gt 0 step 1 10 L ufe r ckw rts Pros 8 10 6 Vorzeitiger Abbruch Wird eine loop while do oder for Schleife mit einem Anweisungsblock verwendet kann es erw nscht sein die Schleife unter bestimmten Sonderbedingungen vorzeitig abzubrechen also ohne eventuelle weitere Anweisungen des Blocks auszuf hren und ohne die Schleifenabbruchbedingung nochmals zu testen Daf r kann die break Anweisung benutzt werden break z B for a sas J999 1f bad break I Teas 8 10 7 Vorzeitige Fortsetzung Wird eine loop while do oder for Schleife mit einem Anweisungsblock verwendet kann es erw nscht sein die Schleife unter bestimmten Sonderbedingungen vorzeitig mit dem n chsten Durchgang fortzusetzen ohne eventuelle weitere Anweisungen des Blocks auszuf hren continue 83 o DO o C Control Il Station zB for i 0 9999 1f not i mod 13 continue Le Im obigen Beispiel f hren alle i die ohne Rest durch 13 teilbar sind zu einer Auslassung der Anweisungen die ab folgen w rden 8 10 8 Programmende Die gesamte Programmabarbeitung der virtuellen Maschine kann durch die quit Anweisung beendet werden Dazu mu nach dem quit Schl sselwort ein numerischer Ausdruck stehen dessen berechneter Wert ungleich O ist Mit
103. r bergebene Datenstruktur vom Typ TIME aus type TIME int hour int minute int second 10 11 3 Status der DCF77 Synchronisation function dcferr returns int Das Betriebssystem versucht zu jeder vollen Minute die interne Echtzeituhr auf den empfangenen DCF77 Datenrahmen zu synchronisieren Unter schlechten Empfangs bedingungen kann eine Synchronisation ber einen l ngeren Zeitraum ausfallen Die interne Echtzeituhr l uft dann quarzgetaktet weiter Bedingt durch Temperatureinfl sse und Toleranzen der elektronischen Bauteile f hrt das nach einer l ngeren Zeit zu einer zuneh menden Zeitabweichung der internen Uhr Um im C2 Programm die Aktualit t und Genauigkeit der internen Uhr abzusch tzen kann ber die Funktion dcferr ein Z hler des Betriebssystems abgefragt werden der die Anzahl der vergeblichen 114 10 Module ONRAD Synchronisationen wiedergibt Das R cksetzen des Z hlers erfolgt mit jeder korrekten Synchronisation Ist dann z B inner halb von 30 Minuten keine neue Synchronisation m glich steht der Z hler auf 30 Bei dauerhaftem Synchronisationsausfall wird der Z hler auf dem Wert 32767 festgehalten Auch beim Reset wird der Z hler mit diesem Wert initialisiert 10 11 4 Datum Mit der DCF77 Synchronisation wird auch das Datum des Systems gestellt Wenn Sie das Datum im C2 Programm manipulieren m chten benutzen Sie die Funktion function setdate int year int month int day Zur Abfrag
104. r Ausgabe pulsl ngen modulierter Signale PLMO PLM1 und PLM2 Letzterer wird intern zum Betrieb des Buzzers benutzt PIMO und PLM1 k nnen zur D A Wandlung zur Ansteuerung von Servomotoren im Modellbau oder zur Ausgabe von Tonfrequenzen benutzt werden Ein pulsl ngen moduliertes Signal hat eine Periode von sogenannten Ticks Die Dauer eines Ticks ist die Zeitbasis Setzt man den Ausgabewert eines PLM Ports auf X dann h lt dieser f r X Ticks einer Periode Highpegel und f llt f r den Rest der Periode auf low Als Zeitbasen k nnen 8 verschiedene Zeiten von 400ns bis 51 2 us eingestellt werden Die Periodenl nge kann von O bis 65535 variiert werden Die PLM Kan le O und 1 haben eine gemeinsame Zeitbasis und Periodenl nge F r Kanal 2 kann eine von den Kan len O und 1 unabh ngige Zeitbasis und Periodenl nge eingestellt werden lesen Sie dazu auch Kapitel 10 8 In Anwendungen zur pulsweitenmodulierten Digital Analogwandlung werden Zeitbasis und Periodenl nge einmalig eingestellt und dann nur der Ausgabewert manipuliert H lt man jedoch die Periodenl nge variabel und stellt sicher da der Ausgabewert z B stets die H lfte der Periodenl nge betr gt k nnen die PLM Kan le auch zur Ausgabe von Rechtecksignalen bestimmter Frequenzen benutzt werden Die Ausgabefrequenz eines PLM Kanals ergibt sich aus 1 Zeitbasis Periodenl nge Hinweise zur Ausgabe von Tonfrequenzen finden Sie im Kapitel 10 8 5 Die PLM Ports sind nach ihren
105. r Variablen eines Funktionsparameters oder eines R ckgabewertes sollte nach dem erforderlichen Wertebereich und der notwendigen Rechengenauigkeit gew hlt werden Operationen mit Long und loat Daten f hren zu einem wesentlich h herem Bedarf an Speicherplatz und Rechenzeit Die Ausf hrungsgeschwindigkeit von float Operationen ist geringer als die von long Operationen Diese wiederum dauern etwas l nger als int Berechnungen Das Rechnen mit Bytes anstelle von Integerdaten bringt keinen Geschwindigkeitsvorteil da Bytes vom Stapelprozessor der virtuellen Maschine immer zu Integern erweitert werden Das Verwenden des byte Jupe bei der Definition globaler und lokaler Variablen spart jedoch etwas Speicherplatz 45 o on o C Control Il Station Typschl sselwort Speicherplatzbedarf f r Variablen y int 32 68 32167 2 Bytes long 2147483648 2147483647 A Bytes a70 2 8 4 2 Zeichenketten Strings Die h ufigste Zeichenkettenoperation in Steuerungssystemen ist das Zusammensetzen von kurzen Texten und MeBwerten f r die Anzeige auf einem Display oder die Ausgabe auf einem Drucker Grundlage f r einige einfache Stringverkettungen und funktionen ist der string Typ Eine Stringvariable bietet Platz f r maximal 30 Zeichen und belegt stets 32 Bytes im Speicher auch wenn die tats chlich gespeicherte Zeichenkette k rzer als 30 Zeichen ist Ausgaben die l nger als 30 Zeichen sein sollen
106. r Variablen innerhalb desselben Moduls vorgenommen werden in dem sie definiert wurde Anderentalls wird ein Programm schnell un bersicht lich wenn nicht mehr klar erkennbar ist an welcher Stelle sich der Wert einer globalen Variablen ndern kann Typische Anwendung f r globale Variablen sind Variablen zur Speicherung von Programmzust nden und Benutzereinstellungen Variablen f r den Datenaustausch zwischen Threads oder Bytearray Variablen als Pufferspeicher bei einer Daten bertragung Lokale Variablen werden im Anweisungsblock eines Threads oder einer Funktion definiert ZB function fx d int i e eas Lokale Variablen einer Funktion werden zur Programmlautzeit auf dem Stack des aktuellen Threads angelegt und existieren nur innerhalb eines Speicherkontextes d h w hrend der 5 o DO o C Control Il Station Abarbeitung einer Funktion Sie sind nur innerhalb dieses Kontextes sichtbar und zugreifbar Beim Verlassen einer Funktion endet der Lebenszyklus einer lokalen Variable Beim Wiedereintritt in diese Funktion oder dem parallelen Aufrufen der Funktion durch einen anderen Thread ist der Wert einer lokalen Variable stets unbestimmt Eine Sonderform stellen lokale Variablen von Threads dar Da der Speicherkontext von Threads w hrend des gesamten Programmlaufes bestehen bleibt auch f r angehaltene Threads existieren die lokalen Variablen eines Threads quasi statisch Ein Bytearray k nnte
107. r die serielle Schnittstelle Das Senden erfolgt im Hintergrund D h die Funktion bergibt lediglich die Adresse des Sendepuffers an das System und startet die bertragung Daher mu die Bytepuffer varia ble statisch sein globale Variable oder Variable eines Threads buf Referenz auf eine statische Bytepuffervariable length Lange des Putters 99 o DO o C Control Il Station 10 3 2c c2 Uber die Funktionen des Moduls i2c c2 kann ein Programm auf Ger te zugreifen die am DC Bus der C Control Il Station angeschlossen sind Eine typische Anwendung ist der Anschlu serieller EEPROMs in einer Speichereinheit zur Aufzeichnung von Daten Der DC Bus der C Control II ist als Single Master Bus implementiert D h die Taktsignale die Start und Stopbedingungen werden stets von der C Control erzeugt 10 3 1 Initialisierung FUNCTION inie Die Funktion init initialisiert den DC Bus 10 3 2 Start der Ubertragung function start byte device returns int Jeder Zugriff auf ein Ger t am PC Bus erfolgt durch das Erzeugen der Startbedingung mit anschlie endem Senden der Ger teadresse auf den Bus Die Funktion start bernimmt diese Aufgabe Welche Ger teadresse f r welches IC oder Ger t welche Bedeutung hat entnehmen Sie bitte der Dokumentation zu diesen Ics oder Ger ten Das Ergebnis der Funktion start ist wenn das angesprochene IC bereit ist anderentfalls O 10 3 3 Senden der Stopbedingung fu
108. r drei PLM Ports kann in einem von zwei verschiedenen Hardwaremodi betrieben werden entweder mit digitalem Ausgangspegel oder mit TransistorPush Pull Ausgang Das Einstellen des Modus erfolgt mit Channel PLM Kanal 0 1 2 Mode Portmodus O digital l push pull Transistorstufe 105 o on o C Control Il Station 10 8 3 Einstellen der Periodenl nge function setperiod int channel int length Das Einstellen der Periodenl nge erfolgt mit Channel PLM Kanal 0 1 2 length Periodenl nge N Ticks Beachten Sie bitte da channel O und channel 1 eine gemeinsame Periodenl nge haben 10 8 4 PLM Ausgabe function out int channel int value channel PLM Kanal 0 1 2 length Periodenl nge N Ticks Die Funktion out gibt einen Wert pulsweitenmoduliert an einem PLM Port aus Ist der Ausgabewert mindestens so gro wie die f r diesen Kanal eingestellte Periodenl nge so ist der Ausgangspegel des Ports permanent high Ein Ausgabewert O f hrt zu permanentem Lowpegel 10 8 5 Ausgabe von Tonfrequenzen function beep int tone An jedem der drei PLM Ports kann ber eine bestimmte Periodenl nge und einen Ausgabewert von zB halber Periodenl nge ein Rechtecksignal mit einer bestimmten Frequenz ausgegeben werden Dabei ist die eingestellte Zeitbasis zu ber cksichtigen Die Ausgabetrequenz der Pulsl ngenmodulation f r einen Kanal ergibt sich aus 1 Zeitbasis Periodenl nge wenn der PLM Ausgab
109. ren und Fenstern Kombimodul 1 x A D Wandler 10bit O 2 5V und 2 x digital 1 O Kombimodul 1 x Temperatursensor 23 C 100 C 0 125K Aufl sung und 2 x digital I O Infrarotsender empf nger zur Fernsteuerung von Ger ten durch C Control oder zur Fernbedienungen von C Control Applikationen durch Infrarot Minidisplay f r zus tzliche Anzeigen im Stil des Minidisplays der C Control II Unit Relaismodul mit 2 potetzialfreien Umschaltkontakten 29 o DO o C Control Il Station Zum Betrieb der 2W Bus Sensoren ist ein 2W Bus Modem ertorderlich Das Standart Modem wird an Port 3 und 4 betrieben das serielle Modem 2W SM an der seriellen Schnittstelle HWCOM Diese Modems haben einen Eingang f r die unmodulierte 12V Versorgungsspannung aus einem Netzteil sowie eine synchrone digitale Schnittstelle mit einer Daten einer Takt und einer Masseleitung DATA CLOCK GND Ausgangsseitig befindet sich der 2W Bus Anschlu Die Leitungsl nge vom 2W Bus Modem zu einem 2W Bus Modul kann bis zu 20m betragen Im Betrieb sendet die C Control Il Unit 8 Byte lange Datenrahmen seriell synchron an das 2W Bus Modem Diese Rahmen enthalten die Adresse des angesprochenen 2W Bus Moduls ein Kommando und einige Datenbytes Nach einer kurzen Zeit ca 17ms 30ms antwortet das Modem jeweils mit einem 8 Byte langen Datenrahmen der Statusinformationen und Daten des angesprochenen Moduls enth lt Das Betriebssystem
110. rf gbar die Ports werden intern benutzt 10 6 math c2 10 6 1 Mathematische Standardfunktionen Die Definitionen der Standardfunktionen haben die Form function fx float x returns float 10 6 2 Potenzieren function pow float x float y returns float Diese Funktion berechnet die y Potenz zur Basis x x y x hoch y 10 6 3 Absolutwertfunktionen F r jeden numerischen Datentyp au er byte das entspricht int beim Funktionsaufruf gibt es eine Absolutwertfunktion function abs int value returns int function labs long value returns long function fabs float value returns float 10 6 4 Minimum und Maximumfunktionen F r jeden numerischen Datentyp au er byte das entspricht int beim Funktionsaufruf gibt es eine Minimum und eine Maximumfunktion function min int a int b returns int function lmin long a long b returns long function fmin float a float b returns float function max int a int b returns int function lmax long a long b returns long function fmax float a float b returns float 102 10 Module Onrao L A 10 7 mem c2 Die Funktionen des Moduls mem c2 erm glichen verschiedene Manipulationen an Bytepuffervariablen Hauptanwendungen dieser Funktionen sind der Aufbau von Datenrahmen vor einer Daten bertragung das Lesen von Daten aus empfangenen Datenrahmen die Zeilenformatierung vor einer Ausgabe z B auf einem Drucker 10 7 1 F llen mit einem Wert function fi
111. rol Il Station 10 15 3 Textausgabe Funot Lon print string e Ausgabe eines Strings function scrollleft Displayinhalt eine Position links schieben function scrollright Displayinhalt eine Position rechts schieben 10 15 4 Vorformatierte Ausgaben function showtime Anzeige der Systemzeit function showdate Anzeige des Systemdatums function showbar int barlength Anzeige eines Balkens 0 16 Segmente function showport byte port Anzeige eines Bytes als Bin rzahl 10 16 station_2wsm c2 station_twb c2 Dieses Modul ist ein Utilitymodul und wird nicht zusammen mit der IDE installiert Es muss bei Bedarf separat Installiert werden station_twbus11 zip Das Modul unterst tzt den Zugriff auf 2W Bus Sensoren ber das serielle Modem 2W SM bzw ber das standard Modem Folgende Funktionen erleichtern das Ansprechen der Sensoren address ist jeweils die Adresse des Sensors 10 16 1 T 23 100 R ckgabe der Temperatur function get_temp byte address returns float 10 16 2 ADC 10 R ckgabe der Spannung in mV function get_volts byte address returns float 10 16 3 F E CNT R ckgabe der Frequenz in Hz function get_freq byte address returns long 10 16 4 F E CNT R ckgabe der Ereignisse function get_events byte address returns long 122 10 Module Onrao L A 10 16 5 IR RMT RC5 MODE ON function rech mode byte address 10 16 6 IR RMT REC
112. routine in die normale Interruptbehandlung des Systems eingeh ngt gibt es f r die Abarbeitung bei Auftreten des Interrupts drei M glichkeiten Die gew nschte Variante bestimmen Sie durch den Parameter mode made O Ausf hrung der anwenderdefinierten Interruptroutine HOOK_ REPLACE 0 an Stelle der normalen Interruptbehandlung des Systems HOOK_BEFORE 1 vor der normalen Interruptbehandlung des Systems HOOK_AFTER 2 nach der normalen Interruptbehandlung des Systems Das Aktivieren eigener Interruptroutinen stellt einen erheblichen Eingriff in das Gesamtsystem dar und hat entscheidenden EinfluB auf dessen Zeitverhalten Interruptroutinen m ssen so kurz wie m glich gehalten werden Eine Interruptroutine f r ein Ereignis kann durch Aufruf der Funktion unhook deaktiviert werden function unhook int event 10 12 wb c2 Das Modul wb c2 ist der Treiber f r das 2W Bus Standard Modem und f r das serielle Modem 2W SM an HWCOM nicht relevant F r beide Modems finden Sie jedoch Tools und Utilities station_twbus11 zip auf der beigelegten CD Damit ist ein komfortabler Zugriff auf die 2W Bus Resourcen m glich ohne die internen Protokolle kennen zu m ssen 117 o DO o C Control Il Station 10 12 1 Initialisierung Das Modul wb c2 ist der Treiber f r das 2W Bus Standard Modem Die Initialisierung der 2W Bus Schnittstelle erfolgt mit der Funktion function init 4 Eventuell
113. rt entspricht Ein Thread mit Priorit t 32 kann genau 32 virtuelle Maschinenoperationen hintereinander ausf hren bevor ihn das System unter bricht und der n chste Thread an der Reihe ist Zur Orientierung die Anweisung a JE t CF wird in vier virtuellen Maschinenoperationen ausgef hrt wenn a b und c vom gleichen numerischen Datentyp sind 1 b auf den Stack laden 2 c auf den Stack laden 3 Addition 4 Ergebnis in a speichern 71 o on o C Control Il Station Komplexere Anweisungen sind entsprechend umfangreicher Das System kann einen Thread durchaus auch innerhalb einer Anweisung unterbrechen z B vor der Addition im obigen Beispiel Da jeder Thread mit seinem eigenen Stack arbeitet gibt es dabei keine Probleme Zur nderung der Priorit t eines Threads gibt es in C2 verschiedene Schl sselworte e run Das Schl sselwort run wird in zwei Formen verwendet Form 1 setzt die Priorit t des angegebenen Threads auf den Standardwert 32 Diese Form dient in der Regel dazu um von main Threads aus andere Threads zu starten Form 2 setzt die Priorit t des aktuell ausgef hrten Threads auf das Ergebnis des angegebenen numerischen Ausdrucks Form 1 run ThreadName zB run blink2 Form 2 run numerischer Ausdruck zB run 100 Beachten Sie da ein stillstehender Thread Priorit t O sich niemals mit run selbst starten kann ehalt Die halt Anweisung setzt die Priorit
114. s Modulquelltextes 9 3 7 Anweisungsbl cke l Die Definition lokaler Variablen ist durch eine leerzeile von den restlichen Anweisungen getrennt 2 Eine abschlie ende return Anweisung ist durch eine Leerzeile von den vorangehenden Anweisungen getrennt L ngere Anweisungsbl cke sind durch zus tzliche Leerzeilen geeignet zu strukturieren Geschweifte Klammern stehen paarweise untereinander Geschweifte Klammen stehen jeweils allein in einer Zeile DORA Verschachtelte Anweisungsbl cke sind jeweils um zwei Leerzeichen einger ckt 9 3 8 Kombinationen mit Schl sselworten zur Ablaufsteuerung l Einzelne Anweisungen in Kombinationen mit Schl sselworten zur Ablaufsteuerung if else loop while do for stehen in derselben Zeile wie das Schl sselwort oder vorzugsweise um zwei Leerzeichen einger ckt in der n chsten Zeile 2 Die geschweiften Klammern von Anweisungsbl cken nach Schl sselworten zur Ablaufsteuerung stehen linksb ndig unter dem Schl sselwort 3 Vor den Schl sselworten if loop while do und for sollte eine Leerzeile stehen Die Leerzeile kann entfallenwenn es sich um verschachtelte Konstrukte handelt und das Schl sselwort einger ckt direkt nach einer Zeile folgt 9 4 Automatischer Compiler Bereits w hrend der Eingabe des Quelltextes l uft im Hintergrund die Syntaxanalyse und bersetzung durch den C2 Compiler Im Ergebnis wird direkt im Editorfenster angezeigt ob eine Programmzeile fehlerhaft ist Kreuzsymbol
115. s und 256 Priorit tsstufen gibt es nahezu unz hlige M glichkeiten Rechenzeit zu verteilen Mit der Zuteilung von sehr niedrigen Priorit ten an alle Threads ergeben sich schnelle Umlaufzeiten und somit eine relativ geringe Verz gerung bis ein einzelner Thread auf ein Ereignis reagieren kann Daf r sinkt die Performance des Gesamtsystems da pro Zeiteinheit mehr Rechenleistung der virtuellen Maschine f r das Umschalten von Threads verbraucht wird So ist es nicht sinnvoll allen Threads die Priorit t 1 zu erteilen Die Performance steigt mit der Vergabe von hohen Priorit ten Das wird jedoch durch l ngere Reaktionszeiten erkauft Im nicht zu empfehlenden Extremfall haben alle Threads die Priorit t 255 Es hat sich bew hrt die meisten Threads mit einer eher niedrigen Standardpriorit t z B 32 laufen zu lassen Nur einigen Programmabschnitten die lange Zeit auf ein Ereignis warten dann aber mit hoher Geschwindigkeit reagieren m ssen sollte ein h herer Wert zugeteilt werden Anmerkung Multithreading vs Multitasking Von Tasks spricht man in der Regel im Zusammenhang mit parallel unter einem Betriebssystem laufenden unabh ngigen Programmen z B einer Textverarbeitung einem E Mail Client und einer Datenbank die gleichzeitig auf einem PC gestartet wurden Threads hingegen sind sogenannte leichtgewichtige Prozesse innerhalb eines Programms Mehrere Threads eines Programms teilen sich einen gemeinsamen 3 o DO o C C
116. sen Sie bei einem Hardware Reset der C Control Il Unit gleichzeitig den BOOT Taster gedr ckt halten Halten Sie beide Taster etwa 3 s gedr ckt und l sen Sie dann zuerst den RESET Taster und ca 3s sp ter auch den BOOT Taster Der Mikrocontroller erwartet jetzt die bertragung des Betriebssystems ber die serielle Schnittstelle Starten Sie nun die Daten bertragung des Systems mit Hilfe des Boot Tools Dieses PC Programm bernimmt die gesamte Steuerung des Boot Vorganges Die bertragung beginnt mit einem Nullbyte 1 Startbit 8 Datenbits 0 1 Stopbit Der Mikrocontroller der C Control Il Station empf ngt das Nullbyte und benutzt es zur Messung der 33 o on o C Control Il Station bertragungsgeschwindigkeit z B 9600 Baud Dann initialisiert er seine eigene Schnittstelle entsprechend Als Antwort sendet der Controller ein Identifizierungsbyte an den PC Die PC Software erkennt den konkreten ControllerTyp und bertr gt einen Ur Loader 32 Bytes an die Station Dieser UrLoader wird vom Controller im internen RAM abgelegt und automatisch gestartet Der Ur Loader selbst ist ein minimales Programm das nichts weiter tut als die zweite Stufe des Loaders ber die serielle Schnittstelle zu empfan gen im RAM abzulegen und anschlie end zu starten Die zweite Stufe des Loaders emp f ngt letztendlich das Betriebssystem und speichert es im ersten Segment des externen FLASH Dieses erste Segment enth lt ab Adre
117. seriellen Schnittstellen COM1 COMA4 des PCs Klemmen Sie die wei markierte Ader an Klemme 1 der Station RX Klemmen Sie die braun markierte Ader an Klemme 2 der Station GND Klemmen Sie die gr n markierte Ader an Klemme 3 der Station TX 5 3 2 Programmieren bei Niederspannungsversorgung Beim Programmieren mit Niederspannungsversorgung ist ein stabilisiertes 12V Netzger t oder ein 12V Akku an den Klemmen 18 und 17 des Moduls anzuschlie en Das Modul kann dann frei gehandhabt werden Diese Versorgungsart eignet sich besonders zur Programmierung am PC Arbeitsplatz im Labor in der Werkstatt oder im B ro 21 o DO o C Control Il Station 5 3 3 Programmieren bei Netzversorgung Die Programmierung mit Netzversorgung dient zur Ubertragung von Anwender programmen am Einsatzort des Moduls Die C Control Il Station ist dabei auf der DIN Schiene montiert Zur Gew hrleistung des Ber hrungschutzes m ssen zumindest die Netzanschlu klemmen verblendet sein Beim Anschlu des Programmierkabels mu die C Control Il Station spannunggfrei sein ES ACHTUNG Die Versorgung eines frei am Tisch liegenden Moduls ber ein Standard Netzkabel mit angegossenem Stecker f r Ger te der Schutzklasse II ist technisch m glich jedoch nach den gesetzlichen Bestimmungen zum Schutz vor Ber hrung gef hrlicher Spannungen nicht zul ssig 22 6 Hardware CONRAD ca 6 Hardware 6 1 Ein
118. sse Ox0000 die Interrupt Vektoren darunter auch den Reset Vektor Wenn das Betriebssystem korrekt installiert wurde startet es nach dem n chsten Reset automatisch und geht in den Hostmodus ber Bei allen nachfolgenden Kapiteln gehen wir davon aus da das Betriebssystem der C Control Il Station bereits korrekt installiert ist was im Rahmen der Endkontrolle bei der Fertigung erfolgt 7 3 Hostmodus 73 1 Systeminitialisierung und Starten von Programmen Nach dem Reset werden die Ressourcen des Mikrocontrollers initialisiert Anschlie end wird gepr ft ob ein C2 Anwenderprogramm im FLASH gespeichert ist Wird ein Programm gefunden dann startet das System die virtuelle Maschine und f hrt dieses Programm aus Anderenfalls geht das System in den Hostmodus ber Wenn Sie ein im FLASH gespeichertes Anwenderprogramm nicht automatisch starten wollen z B weil Sie ein neues Anwenderprogramm in die Unit laden m chten m ssen Sie w hrend des Hardware Reset der Station gleichzeitig den HOST Taster gedr ckt halten Halten Sie beide Taster etwa 3 s gedr ckt und l sen Sie dann zuerst den RESET Taster und ca 3s sp ter auch den HOST Taster Der Mikrocontroller erwartet jetzt die bertragung des Anwenderprogramms ber die serielle Schnittstelle 7 3 2 Download von Programmen und andere Host Befehle Im Hostmodus erwartet das System den Empfang von Kommandobytes ber die serielle Schnittstelle die es dann ausf hrt Der wichtigste Befehl ist d
119. st der konstante Ausdruck Dessen Wert l t sich bereits vor der Programmausf hrung bestimmen So ist der Wert des Ausdrucks 1 2 1977 offenbar immer 1980 Das steht zur Zeit der Programmierung fest und wird sich auch bei der Programmausf hrung nicht ndern Um unn tige Berechnungen konstanter Ausdr cke w hrend der Programmausf hrung zu vermeiden versucht der C2 Compiler diese Ad 8 Die Programmiersprache 2 Onrao weitestgehend vorherzubestimmen und zusammenzufassen So wird die Anweisung a 1 2 1977 c vom Compiler vorberechnet und intern umgewandelt in a 1980 c Funktionen siehe 78 werden jedoch immer aufgerufen und ausgef hrt auch wenn deren Parameter und der R ckgabewert konstant sind In konstanten Ausdr cken sind auch zuvor definierte benannte Konstanten siehe 76 verwendbar 8 3 6 Schl sselworte Untenstehend finden Sie eine alphabetische Liste aller C2 Schl sselworte Detaillierte Definitionen und Anwendungsbeispiele finden Sie im weiteren Verlauf dieser Anleitung And break byte capture const continue do else Float for function halt if inline int long loop nand nor not or quit releas resume run return returns shl shr sleep step string type thread wait while xor yield 8 4 Datentypen 8 4 1 Numerische Datentypen C2 bietet insgesamt vier verschiedene numerische Datentypen zur Definition von Variablen Funktionsparametern und R ckgabewerten von Funktionen byte int long und float Der Datentyp eine
120. t eines Threads auf O Es gibt zwei Formen Mit Form kann ein beliebiger laufender Thread einen anderen Thread oder auch sich selbst anhalten Form 2 bezieht sich immer auf den aktuell ausgef hrten Thread Form halt ThreadName zb halt blink2 72 8 Die Programmiersprache 2 Capo C E Form 2 halt Angehaltene Threads k nnen nur durch andere Threads wieder gestartet werden e resume Die resume Anweisung setzt die Priorit t eines Threads auf den Wert vor der letzten run oder halt Anweisung in Bezug auf diesen Thread Es gibt ebenfalls zwei Formen Form 1 bezieht sich aut den angegebenen Thread Form 2 auf den aktuell laufenden Form resume ThreadName zB halt blink2 blink2 steht resume blink2 blink2 l uft wie vor dem halt Form 2 resume zD run 100 aktueller Thread l uft mit Prio 100 resume aktueller Thread l uft wie vor run 100 e yield Mit Ausf hrung der yield Anweisung gibt der aktuelle Thread die Programmausf hrung unabh ngig von seiner Priorit t sofort an den n chsten Thread ab yield Der yield Befehl wird relativ selten ben tigt 73 o DO o C Control Il Station 8 9 4 Warten auf Ereignisse In bestimmten Situationen soll ein Thread auf das Eintreten eines Ereignisses warten und in der Wartephase m glichst wenig Rechenkapazit t belegen Daf r dient in C2 die wait Anweisung Die wait Anweisung pr ft den Wert eines angegeb
121. t keine verschachtelten Threads innerhalb von Threads und keine lokalen Threads innerhalb von Unterfunktionen Die Definition eines Threads beginnt mit dem Schl sselwort Dann folgen der Bezeichner und ein Anweisungsblock in geschweiften Klammern thread Name Anweisungen Innerhalb des Anweisungsblocks k nnen lokale Variablen definiert werden die quasistatisch sind siehe 8 5 5 Der gesamte Code des Anweisungsblock wird automatisch in einer Endlosschleite ausgef hrt 70 8 Die Programmiersprache 2 Capo pen Beispiel thread blink2 ports set 2 1 sleep 200 POLES SSL 1 Zy 0 sleep 800 8 9 2 main Threads Ein Thread dessen Bezeichner nicht main ist hat zum Programmstart die Priorit t O d h er befindet sich im Stillstand seine Anweisungen werden nicht ausgef hrt Jedes Modul kann einen main Thread enthalten also einen Thread mit dem Bezeichner main Dieser hat bei Programmstart die Standardpriorit t 32 Seine Anweisungen werden von Beginn an ausgef hrt Die Aufgabe der main Threads ist es Initialisierungen vorzu nehmen und bei Bedarf andere Threads zu starten Ein Programm sollte mindestens ein Modul mit einem main Thread haben Anderenfalls steht das gesamte Programm still und wartet endlos auf den run Befehl siehe 8 9 3 8 9 3 Priorit tssteuerung Die virtuelle Maschine der C Control II Unit stellt jedem Thread soviel Rechenkapazit t zur Verf gung wie es seinem Priorit tswe
122. tebereich eines Bytes beschr nkt Wird eine Nachricht fter als 253 mal abgefragt leibt der Z hlerwert auf 253 stehen channel 0 13 channel 14 kann nur empfangen 10 1 7 Einstellen der Empfangs ID function expect int channel int id F r jeden Kanal der zum Empfangen von CAN Nachrichten benutzt werden soll mu eine Empfangs ID eingestellt werden siehe auch 10 1 1 Werden f r mehrere Kan le glei che Empfangsbedingungen hergestellt resultierend aus der Akzeptanzmaske und der Empfangs ID so wird eine eingehende Nachricht die diesen Bedingungen entspricht im niedrigsten freien Kanal gespeichert Ein Kanal ist frei wenn seine zuletzt empfangene Nachricht mit get ausgelesen wurde siehe 0 channel O vas 14 id Emptangs ID des Kanals 10 1 8 Senden einer Remote Request Anforderung function request int Channel So wie die C Control Il Unit Nachrichten ver ffentlichen kann siehe 7 1 5 kann sie auch selbst eine Nachricht anfordern die ein anderer CAN Busteilnehmer ver ffentlicht hat Es mu bekannt sein unter welcher Message ID diese Nachricht abrufbar ist Diese ID mu zuvor per expect f r den Kanal channel als Empfangs ID eingestellt sein sonst kann die 95 o on o C Control Il Station Antwort des Busteilnehmers nicht empfangen werden 10 1 9 Test auf Empfang function rxd int channel returns int Die Funktion rd testet ob eine neue Nachricht auf einem Empf
123. ten In der Praxis besteht ein Projekt zun chst aus einigen dieser Bibliotheks module Dann folgen in der Liste die wiederverwendbaren Anwendermodule zB zur Implementierung oft ben tigter Algorithmen wie standardisierte Pr fsummen berechnungen oder hnliches Anschlie end stehen Module mit applikationsspezifischem Code z B zur Ansteuerung einer ganz konkreten externen Hardware Die letzten Module der Liste sind in der Regel die Hauptmodule Sie enthalten unabh ngige Hauptthreads des Programms Die meisten Anwendungen haben nur einen Hauptthread und somit nur ein Hauptmodul am Schlu der Modulliste 8 3 Syntax Grundelemente 8 3 1 Kommentare Sinnvolle Kommentare in einem Programm k nnen dessen Verst ndlichkeit und Lesbarkeit erh hen C2 Kommentare sind kompatibel zu denen in C und C Es gibt Zeilenendkommentare die durch zwei unmittelbar aufeinanderfolgende Schr gstriche eingeleitet werden Jeglicher Text bis zum Zeilenende einschlie lich der Schr gstriche wird beim Compilieren berlesen 2B a 123 das ist ein Kommentar Al o DO o C Control Il Station Mehrzeilige Kommentare k nnen in Sequenzen eingebettet werden Zp das alles ist ein Kommentar SE Verschachtelte mehrzeilige Kommentare sind nicht zul ssig 8 3 2 Zwischenr ume Alle Zeichen mit den ASCll Codes 0 32 werden als Zwischenr ume engl whitespaces oder blanks gelesen und be
124. tig als Ausgang arbeiten sollen Eingangsports sind hochohmig und berf hren ein anliegendes Spannungssignal in einen logischen Wert Voraussetzung daf r istdaB sich das Spannungssignal innerhalb der f r TTL zw CMOS ICs definierten Bereiche f r Low oder Highpegel befindet In der weiteren Verarbeitung im Programm werden die logischen Werte von einzelnen Eingangsports als O low oder 1 high dargestellt Nibbleports nehmen Werte von O bis 15 an Byteports O bis 255 Ausgangsports k nnen ber eine interne Treiberschaltung digitale Spannungssignale aus geben Angeschlossene Schaltungen k nnen einen geringen Strom aus den Ports ziehen bei High Pegel bzw in diesen speisen bei Low Pegel Beachten Sie den maximal 27 o DO o C Control Il Station zul ssigen Laststrom f r einen einzelnen Port und f r alle Ports in Summe siehe Kapitel 9 1 Technische Daten Eine berschreitung der Maximalwerte kann zur Zerst rung der C Control Il Station f hren Nach dem Reset ist zun chst jeder Digitalport als Eingangsport konfiguriert Ein Port wird automatisch zum Ausgangsportwenn das Anwenderprogramm einen Ausgabewert an diesen schreibt Durch Aufruf einer speziellen Funktion der Standardmodule kann ein Ausgangsport jedoch wieder deaktiviert werden d h in den hochohmigen Zustand gebracht werden 6 2 11 1 Sondertunktionen der Digitalports Einige Digitalports stehen alternativ f r speziel
125. umber returns int function getn int number returns int function getb int number returns int Digitalports k nnen einzeln in Vierergruppen Nibbles byteweise und im Ganzen als ein l bit Integer Word abgefragt werden Das Ergebnis der Abfrage ist immer ein Integerwert der als Bitmaske den Portzustand widerspiegelt 1 Bit Port high O Bit Port low FS Beachten Sie folgende Besonderheit Die Abfrage eines einzelnen Digitalports lie fert wie eine Vergleichsoperation das Ergebnis 1 Port ist high oder O Port ist low Parameter der Abfragefunktionen ist die Nummer des Portsder erste Port hat die Einzelportnummer 8 Die Einzelports 0 7 werden intern verwaltet und d rfen nicht manipuliert werden Folgende Aufstellung zeigt g ltige Portnummern und den Wertebereich der Ergebnisse der einzelnen Abfragefunktionen Abfrage von Einzelports getn Abfrage von Nibbleports GN 0 15 getb Abfrage von Byteports l 0 255 10 9 2 Setzen von Digitalports function set int number int state function setn int number int state function setb int number int state Jeder der 8 Digitalports kann als Eingang oder als Ausgang benutzt werden F r die Anwendung als Ausgang mu vor der ersten Ausgabe die interne Elektronik des Mikrocontrollers entsprechend aktiviert werden Das bernimmt das Betriebssystem der C Control Il automatisch beim Aufruf der set Funktionen Das Setzen von Ports kann wie 108
126. ur Ablaufsteuerung Softwareentwicklung Installation und Start der integrierten Entwicklungsumgebung Quelltexte bearbeiten Richtlinien zur Quelltextformatierung Automatischer Compiler Simulation und Debugging Module can c2 hwcom c2 und swcom c2 12602 led c2 Ipt c2 math c2 mem c2 plm c2 ports c2 str c2 system c2 wb c2 station_io c2 station_Icd c2 station_2wsm c2 station_twb c2 station_plm c2 CONRAD ee 5 57 957 57 60 60 sl 62 63 70 80 85 85 85 86 88 89 91 92 96 100 101 102 102 103 105 107 111 113 117 119 119 121 122 o C Control Il Station 11 12 12 1 Systemprogrammierung Anhang Technische Daten 126 127 127 1 Einleitung NRAD en 1 Einleitung 1 1 Lesen dieser Anleitung Bitte lesen Sie diese Anleitung bevor Sie die C Control Station in Betrieb nehmen W hrend einige Kapitel nur f r das Verst ndnis der tieferen Zusammenh nge von Interesse sind enthalten andere wichtige Informationen deren Nichtbeachtung zu Fehlfunktionen oder Besch digungen f hren kann Kapitel und Abs tze die Themen mit gehobenem Schwierigkeitsgrad enthalten k nnen Sie zu einem sp teren Zeitpunkt aufgreifen nachdem Sie erste Erfahrungen mit der Anwendung der C Control Il und der Programmiersprache C2 gesammelt haben ES F r Sch den die aus der Nichtbeachtung von Hinweisen in dieser Anleitung resultieren besteht kein
127. ur Anwendung der expliziten und der impliziten capture Form 1 Vermeidung von Aliasing bei Speicherzugriffen durch explizites capture 78 8 Die Programmiersprache 2 Onrao float a b Messwerte byte flag Synchronisationsvariable thread measure capture flag a Oet Channel aii b get channel bi release Els thread watch d capture flag check a b release 2 Synchronisation von Ressourcenzugriften durch implizites capture in einer Funktion function send byte buf int length capture wait ressource ready ressource send buf length release Im Beispiel wird hier ein Modul ressource angenommen dessen Funktionen selbst noch nicht synchronisiert sind Alle Bibliotheksmodule zum Zugriff auf Systemressourcen der C Control Il Unit enthalten bereits die notwendige Synchronisation siehe z B Modul hwcom c2 79 o DO o C Control Il Station 8 10 Anweisungen zur Ablaufsteuerung Unentbehrlicher Teil einer strukturierten Programmiersprache sind Anweisungen zur Steuerung des Programmflusses Erst dadurch k nnen Algorithmen realisiert werden die ber die loBe rechnerische Verkn pfung von Werten hinausgehen 8 10 1 if else Bedingte Ausf hrung Mit der if Anweisung wird die Abarbeitung von Programmabschnitten an eine Bedingung gekn pft Nach dem Schl sselwort i folgt ein numerischer Ausdruck und danach eine Anweisung oder ein Anweisungsblo

Download Pdf Manuals

image

Related Search

Related Contents

EA818EE-1B [無段変速]ハンドグラインダー 取扱説明書 - 作業中  P10 – P20 - ERM Energies  Dual HERO System  BACTEC™ MGIT™ 960 PZA Kit  カタログPDF  Sample & Assay Technologies PyroMark® Gold Q24  

Copyright © All rights reserved.
Failed to retrieve file