Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > Hallo zusammen, > > > > ich betreibe momentan eine CC2 Station mit 5 Relais (1xUm). > > > > Für den Endausbau meiner derzeitigen Anwendung brauche ich > > mindestens 20 Relais-Umschaltfunktionen, also einiges mehr, > > als was die CC2 an Ausgängen (5+8=13) besitzt. > > > > Ich sollte vielleicht erwähnen, dass ich weder von Hardware noch von Software > > besonders viel Ahnung habe und die jetzige Anwendung nur mit sehr viel "try and error" > > hinbekommen habe. > > > > Beim Stöbern auf cctools.hs-control.de bin ich auf einige Komponenten gestossen, die > > dem ersten Anschein nach mein Problem glaub ich erschlagen würden. > > Doch leider scheint es da mehrere Möglichkeiten zu geben. > > > > Fragen: > > 1. Kann mir jemand sagen, wie ich am einfachsten zu zusätzlichen 8 Schaltfunktionen komme? > > 2. Das alles scheint irgendwie IIC (?) zu benötigen. > > Hat jemand ein Beispielprogramm, aus dem ich ersehen kann, wie so eine IIC Relaisansteuerung > > grundsätzlich funktioniert? > > > > Herzlichen Dank im Voraus und Gruss, > > Thomas Reiter > > > > Hallo Thomas, > am einfachsten geht das ganze aus meiner Sicht mit einer I²C Relaiserweiterung... > In meiner Heizungssteuerung verwende ich ein paar PCF8574, und die Ansteuerung über das > Modul PCF... > > > schnip... > > <code> > thread iic_relais_in > {byte i; > int R_in; // Variable für Relais Eingänge > int last_min; // Variable für Minuten > last_min = -1; // Init mit -1 > run 8; // Priorität ändern (Standart 32) > loop > {wait ((ports.get(12) == 0) or (system.minute() != last_min));// Interrupt P12 > sleep 100; // entprellen der Relais > last_min = system.minute(); // speichern für n+1 > cap.Capture(global.I2C_Cap); // I²C Bus sperren > R_in = (pcf.getn(global.Adr_IN_OUT,0) xor 0b1111); // Nibbel invert. einlesen > cap.Release(global.I2C_Cap); // I²C Bus freigeben > i= 0b1 and R_in; // Bit für Gaspumpe maskieren > global.P_Gas_in = i; // Eingang speicherm > i= (0b1 shl 1) and R_in; // Bit für Gasmischer maskieren > if i > 0 i = 1; // wenn Bit gesetzt, mit 1 überschreiben > global.M_Gas_in = i; // Eingang speichern > i= (0b1 shl 2) and R_in; // Bit für Bewegungsmelder EG maskieren > if i > 0 i = 1; // wenn Bit gesetzt, mit 1 überschreiben > global.BM_EG = i; // Eingang speichern > i= (0b1 shl 3) and R_in; // Bit für Bewegungsmelder DG maskieren > if i > 0 i = 1; // wenn Bit gesetzt, mit 1 überschreiben > global.BM_DG = i; // Eingang speichern > } > } > > thread iic_relais_out > {int r_out; // Variable für die Relais Ausgänge > int last_r_out; // Variable für Zwischenspeicherung > last_r_out = -1; // Init mit -1 > run 8; // Priorität ändern (Standart 32) > loop > {r_out = 0b1 and global.Fuehler_out; > r_out = r_out shl 1 or global.P_Zirkulation_out; > r_out = r_out shl 1 or global.Relais_1_out; > r_out = r_out shl 1 or global.Relais_0_out; > if r_out != last_r_out // hat sich was geändert?? > {last_r_out = r_out; // speichern für n+1 > cap.Capture(global.I2C_Cap); // I²C Bus sperren > pcf.putn(global.Adr_IN_OUT,1,last_r_out); // Nibbel ausgeben > cap.Release(global.I2C_Cap); // I²C Bus freigeben > } > } > } > > thread iic_ssr_out > {byte ssr_out; // Hilfsvariable > byte last_ssr_out; // Hilfsvariable > last_ssr_out = -1; // Variable initialisieren > run 8; // Priorität ändern (Standart 32) > loop > {ssr_out = 0b1 and global.M2_auf_out; // Bit 7=> Mischer 2 auf > ssr_out = ssr_out shl 1 or global.M2_zu_out; // Bit 6=> Mischer 2 zu > ssr_out = ssr_out shl 1 or global.M1_auf_out; // Bit 5=> Mischer 1 auf > ssr_out = ssr_out shl 1 or global.M1_zu_out; // Bit 4=> Mischer 1 zu > ssr_out = ssr_out shl 1 or global.P_Kohle_out; // Bit 3=> Pumpe Kohle > ssr_out = ssr_out shl 1 or global.P_Gas_out; // Bit 2=> Pumpe Gas > ssr_out = ssr_out shl 1; // Bit 1=> nicht genutzt > ssr_out = ssr_out shl 1 or global.P_Solar_out; // Bit 0=> Pumpe Solar > > if ssr_out != last_ssr_out // hat sich was geändert?? > {last_ssr_out = ssr_out; // speichern für n+1 > cap.Capture(global.I2C_Cap); // I²C Bus sperren > pcf.out(global.Adr_SSR_OUT,last_ssr_out); // Ausgabe PCF8574 > cap.Release(global.I2C_Cap); // I²C Bus freigeben > } > } > } > </code> > ...schnapp > > nitraM
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB