
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
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 |