Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 wie c-cunit1.1 Programm auf c-c1 station2.0 umbauen Kategorie: Programmierung Basic (von hecktor - 30.06.2007 21:23)
hecktor nutzt:  CC1-Unit V1.1
Ich habe  nun doch vor die Station 2.0 in meine Bastelei einzubauen.

Ich habe ein Funktionierendes Programm für die alte cc1.2 und brauche das nun so umgebaut das es auf der Station 2.0 laufen kann. Nun suche ich mal wieder hier um eure Hilfe .
Ich habe es heute schon versucht, sage aber mal nix.


Das Programm:

'Hardware: Applikationsboard mit Tastatur, LCD-Anzeige 2 x 16 und Relaisplatine
'Waschprogramm am Montag 16 Oktober 2006 zuletzt Geändert  Stromausfall auf pause statt wartezeit gesetzt
' , Steuerprogramm für Filter Version 1.2 Sonntag 11 September 2005
'in diesem Programm sind Port 7 und 8  vertauscht
'---- LCD PARMAMETERS -----
define  LINE     byte[1]
define  CHAR     byte[1]
define  POS      byte[1]
define  BARS     byte[1]
define  BIN      byte[1]
define  DEZ      byte[1]
'-- LCD SYSTEM ADDR -----
define LCD_INIT   &H101
define LCD_CLR    &H11D
define LCD_LINE1  &H125
define LCD_LINE2  &H12A
define LCD_POSL1  &H12F
define LCD_POSL2  &H133
define LCD_SCRL   &H13B
define LCD_SCRR   &H140
define LCD_BAR    &H145
define LCD_BIN    &H154
define LCD_DEZ    &H1C3
define LCD_WRT    &H1A4
define LCD_PRINT  &H179


'--------------------------
'------ I/O PORTS ---------
'--------------------------
define leds        byteport[1]
define wiled1          port[1]'innenenspülung
define waled2          port[2]'aussenspülung
define schrled3        port[3]'motorrechts
define schlled4        port[4]'motorlinks
define ventled5        port[5]'ventil
define pumpled6        port[6]'pumpe
define vschalter7      port[8]'hier das relai das den Eingangs/Pumpenstrom ueberwacht
define wschalter8      port[7]'hier prüfstrom durch 2 druckdosen wenn eine druckdose schaltet unterbricht das signal.
define key_val  ad[8]
'--------------------------
'---- Variable -------
'--------------------------
define ProgNr       byte[2]
define Wartezeit    byte[3] '
define Schritt      byte[4]
define x            byte[5]
define Bytefrei6    byte[6]
define wert1        byte[7]'Schmierbyte
define wert2        byte[8]'Schmierbyte
define wert12       word[4]'Schmierword = byte 7,8
define wert3        byte[9] 'Schmierbyte
define key          byte[10]'------- KEY DECODER ---------
define Bit81_88     byte[11]'11 (statische Bits)<<(bit 81 bis 88)<<<<<<
define Zaehler1     byte[12]
define Zaehler2     byte[13]
define Zykluszeit   byte[14]'Timer-Differenz
define TimerAlt     word[8]'= Byte 15,16 (Altwert)

define wert1Bit0           Bit [49]'für bit-Handling des byte wert1
define wert1Bit1           Bit [50]
define wert1Bit2           Bit [51]
define wert1Bit3           Bit [52]
define wert1Bit4           Bit [53]
define wert1Bit5           Bit [54]
define wert1Bit6           Bit [55]
define wert1Bit7           Bit [56]
define FlankeZeitpuls      Bit[81]'Flankenbit
define TastaturFlanke      Bit[82]'Flankenbit
define AufrufbitKey7       Bit[83]'
define AufrufbitKey0       Bit[84]'
define BitFrei5            Bit[85]'
define BitFrei6            Bit[86]
define SekPuls             Bit[87]'
define LoeschLCD           Bit[88] 'Aufruf LCD löschen


 sys lcd_init
 sys lcd_clr
 '########################################################
#Anfang ' Hauptprogramm

 if ProgNr =0 then goto ende12
 ' 3.1 Zeittakt
 SekPuls  = OFF
 wert1 = second
 if wert1Bit0 = FlankeZeitpuls  then goto ende1
 FlankeZeitpuls = wert1Bit0
 SekPuls  = ON
 AufrufbitKey7  = OFF
 AufrufbitKey0  = OFF
#ende1
 if  vschalter7 = ON then goto Schrittausfall
 ' 3.2 Steuerprogramm
 ' *** Schrittsteuerung mit Wartezeiten ***
 'In jedem Schritt kann eine Wartezeit gesetzt werden, die rückwärts gegen Null läuft.
 'Nach Ablauf  der Wartezeit wird der eingeschaltete Schritt bearbeitet.
 if (Wartezeit = 0)and ProgNr=1 then goto Schritt else if (Wartezeit = 0)and ProgNr=2 then goto Schrittaus
 'Wartezeit abgelaufen? ja ---> geh zu Schritt
 if (sekpuls = OFF) then goto Ende12
 Wartezeit = Wartezeit -1 'Wartezeit minus 1 sek (Zeittakt siehe oben)
 goto Ende12
#Schritt ' Schrittregister bei Wartezeit NULL
 if (Schritt = 1) then goto Schritt1 '
 if (Schritt = 2) then goto Schritt2 '
 if (Schritt = 3) then goto Schritt3 '
 if (Schritt = 4) then goto Schritt4 '
Schritt = 1
goto Ende12
#Schritt1
 schlled4 = OFF : waled2 = OFF : schrled3 = OFF
 ventled5 = OFF : wiled1 = OFF :  pumpled6 = ON '
 Wartezeit = 20 'x 1 sec Wartezeit setzen
 Goto Schrittweiter
#Schritt2
 schrled3 = OFF : pumpled6 = OFF :schlled4 = OFF : wiled1 = OFF
 waled2 = OFF :ventled5 = ON
If NOT wschalter8 = OFF  then goto ende1
goto Schrittweiter
#Schritt3
Wartezeit = 5
Goto Schrittweiter
 'x1 sec Wartezeit setzen goto Schrittweiter
#Schritt4
 schrled3 = OFF :schlled4 = OFF : wiled1 = OFF
 waled2 = OFF :ventled5 = ON :pumpled6 = ON
 if wschalter8 = OFF  then goto Ende12
#Schrittaus
 if (Schritt = 1) then goto Schrittaus1 '
 if (Schritt = 2) then goto Schrittaus2 '
 Schritt = 1
 goto Ende12
#Schrittaus1
 ventled5 = OFF :wiled1 = ON'
 Wartezeit = 30 'x 1 sec Wartezeit setzen
 Goto Schrittweiter
#Schrittaus2
 waled2 = OFF :deact leds :LoeschLCD = ON : ProgNr=0:
#Schrittausfall ' Schrittregister bei Wartezeit NULL
if ProgNr=0 then goto ende12
 if (Schritt = 1) then goto Schrittausfall1 '
Schritt = 1
Ende12
#Schrittausfall1
 ventled5 = OFF : schlled4 = OFF :wiled1 = OFF
 pumpled6 = OFF : waled2 = OFF : schrled3 = OFF '
 pause = 5 :if vschalter7 = OFF then goto ende12'
#Schrittweiter
 Schritt = Schritt + 1 ' Schritt-Nummer um 1 erhöhen
#Ende12
if  vschalter7 = ON then goto Schrittausfall
 'Messung der Zykluszeit des Programms
 'Das Messprogramm bildet Differenz des aktuellen Timer-Werts zum vorherigen gespeicherten Altwert.
 Zykluszeit = (Timer - TimerAlt)' * 20 ' Anzeige *20 in Millisekunden
 TimerAlt = Timer ' Bildung des Altwerts
 gosub Tastatur  ' Abfrage Tastatur
 Goto LCD'        Anzeigen (LCD endet mit goto Anfang)
 '########################################################
 ' *** Unterprogramme  ***
#Tastatur
 gosub key_decode  'Abfrage Taste gedrückt, sichere Version  <<<<<<<<<<<<<<<<<<
 if key < 199 then goto Taste ' >199=keine Taste, 0 bis 9=Ziffer, 10=*  11=#
 TastaturFlanke = OFF
 x = 1
 Return
#Taste   'Auswertung und Befehlsgabe der Tastatur
 if ProgNr < 1 then goto TastaturFlanke'
#TastaturFlanke'
 if TastaturFlanke = ON then Return ' Einzelschritt
 TastaturFlanke = ON 'nachfolgende Tasten lösen Einzelschritt aus
 if key =1 then goto ProgNrPlus   'Programm Nr stellen (Einzelschritt)
 if ProgNr = 0 then return ' Relais schalten
 if Key = 7 then AufrufbitKey7 = ON
if AufrufbitKey7 and NOT (Schritt = 15  or Schritt = 19  or Schritt = 23  or Schritt = 27  or Schritt = 31  or Schritt = 35 ) then Wartezeit = 0 'goto Vibrationabschaltung
if Key = 0 then AufrufbitKey0 = ON
if AufrufbitKey0 then ProgNr=2
 return
#key_decode 'Umsetzungstabelle auf Tastencode  Applikationboard
 key=255 ' Vorbesetzung Anfang: (keine Taste gedrückt 240 bis 255)
 wert3 = key_val
 if wert3 > 240 then return  ' keine Taste gedrückt
 Key = key -1                '(Schleifenzähler)
 if wert3 = key_val then goto TasteAusgeben 'Wert stabil?
 if Key > 240 then goto Ende12 ' max. 15-mal prüfen
 return                         ' dann Abbruch
#TasteAusgeben
 if wert3>=0   then key=10 '  KEY *
 if wert3>14  then key=7  '  KEY
 if wert3>36  then key=4  '  KEY
 if wert3>57  then key=1  '  KEY
 if wert3>70  then key=0  '  KEY
 if wert3>100 then key=8  '  KEY
 if wert3>122 then key=5  '  KEY
 if wert3>142 then key=2  '  KEY
 if wert3>163 then key=11 '   KEY #
 if wert3>183 then key=9  '  KEY
 if wert3>204 then key=6  '  KEY
 if wert3>225 then key=3  '  KEY
 return
#LCD
 if LoeschLCD = OFF then goto Anzeige ' Aufruf LCD löschen (bei PrgPlus)
 LoeschLCD = OFF :sys LCD_CLR
#Anzeige
 if ProgNr =1 then goto LCDprg1
 if ProgNr =2 then goto LCDprg2 'u.s.w.
 SYS LCD_LINE1:sys LCD_PRINT:print" EIN = 1 und AUS = 0  (Schrittweiter=7)       "
 SYS LCD_SCRL:pause 15
 sys LCD_LINE2 ' Start Zeile 2
 sys LCD_PRINT:print"       001   FILTER"
 SYS LCD_SCRL:pause 15
 goto Anfang
#LCDprg1
 sys LCD_LINE1 ' Start Zeile 1
 DEZ = ProgNr : SYS LCD_DEZ               'Spalte 1
 sys LCD_PRINT:print"  warte "
 DEZ = Wartezeit : SYS LCD_DEZ : sys LCD_PRINT:print" sec"
 sys LCD_LINE2 ' Start Zeile 2
 sys LCD_PRINT:print"Schritt "
 DEZ = Schritt : SYS LCD_DEZ
 goto Anfang ' Ende Hauptprogramm

#LCDprg2
 sys LCD_LINE1 ' Start Zeile 1
 DEZ = ProgNr : SYS LCD_DEZ               'Spalte 1
 sys LCD_PRINT:print"  warte "
 DEZ = Wartezeit : SYS LCD_DEZ : sys LCD_PRINT:print" sec"
 sys LCD_LINE2 ' Start Zeile 2
 sys LCD_PRINT:print"Schritt "
 DEZ = Schritt : SYS LCD_DEZ
 goto Anfang ' Ende Hauptprogramm

#ProgNrPlus
 ProgNr = 1
 LoeschLCD = ON  ' Aufruf LCD löschen (jeweils bei ProgNrPlus)
 if ProgNr > 1 then goto ProgNrPlus
 return
'--------------- DISPLAY TREIBER ----------------------
'syscode "lcddrv11.s19"

 Antwort schreiben

Bisherige Antworten: