
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Klaus, tut mir leid, hat etwas gedauert, würde mein Programm gerne als Datei schicken, habe es schon mal hier folgend beigelegt. Die zugehörige Schaltung ist mehr eine Bastelsache, müsste ich noch einscannen. Gruss laika '************************************************************************* ' Spannungsregler - Führt die beiden Analogausgänge einem Analogeingang nach ' Dabei ist AA1 für positive, AA2 für negative Spannungen gedacht ' ' Erstellung: 18.12.03 ' Änderungen: define version 02 'Versionsnr. und define tag 28 ' Datum/Uhrzeit für define monat 12 ' die Ausgabe am PC define jahr 03 ' beim Start und Auftrag "Hilfe"; define stunde 16 ' CControl sendet die Daten dann an den PC. define minute_ 00 ' 'minute_', da 'minute' Schlüsselwort ist!! '********************************************************************************** ' Ports, Variablen und Konstanten '********************************************************************************** '*** Ports -------------------------------------------------------------------- define da_vor port[1] 'steuert nur die grüne LED an define da_rue port[2] 'steuert die rote LED und das Umschaltrelais an define de_quitt port[3] define ae_ein ad[1] 'Eingangsspg. define ae_ausspg ad[5] 'Kurzschlussüberwachung über Ausgangsspg. define ae_ausstr ad[6] 'Kurzschlussüberwachung über Emitterstrom define aa_aus da[1] 'Ausgangsspg. 'Konstanten -------------------------------------------------------------------- define HI -1 'HIGH/LOW-Werte für define LO 0 ' Digitalein-/-ausgaben define MITTE 127 'Trennung vor-/rückwärts define AE_MAX 255 'Achsenabschnitt rückwärts define TOTZONE 20 'Zone um die MITTE herum, wo Fahrtspg. = 0 define SCHWELLE 50 'Rohwert, auf den die Ausgangsspg. an der TOTZONE springt define KURZSCHLUSS_STR 100 'Rohwert Emitterstrom, der zusammen mit dem define KURZSCHLUSS_SPG 200 ' Rohwert der Ausgangsspg. als Kurzschluss gewertet wird define KURZSCHLUSS_ZAEHLER_MAX 50 'Variablen -------------------------------------------------------------------- define kurzschluss_bit bit[1] define bit_wort word 'das ist nur zur Belegung des "Bitwortes" definiert, ' sonst liegt da die folgende Byte- oder Word-Definition drauf !! define b1 byte define b2 byte define i1 word define i2 word define a word 'Geradenparameter: define b_pos word ' y = a*x + b define b_neg word ' define kurzschluss_zaehler word 'Zähler, der verhindert, dass sofort Kurzschluss gemeldet wird '=== Programm ========================================================== gosub print_version 'Parameter ausgeben print "TOTZONE = "; TOTZONE, "SCHWELLE = "; SCHWELLE print "KURZSCHLUSS_SPG = "; KURZSCHLUSS_SPG, "KURZSCHLUSS_STROM = "; KURZSCHLUSS_STR 'Geradenparameter berechnen und ausgeben a = (255 - SCHWELLE)*100 / (127 - TOTZONE) b_pos = SCHWELLE*100 - (127 + TOTZONE)*a b_neg = AE_MAX * 100 print "a * 100 = "; a print "b_pos * 100 = "; b_pos print "b_neg * 100 = "; b_neg 'Alles rücksetzen und Startton ausgeben aa_aus = 0 da_vor = LO da_rue = LO kurzschluss_bit = LO kurzschluss_zaehler = 0 gosub hui #endlos 'zyklische Ausgabe an PC (wenn nicht angeschlossen, macht's nix, geht einfach ins Leere) print ae_ein, ae_ausspg, ae_ausstr, if kurzschluss_bit then print "Kurzer !!" else print 'Kurzschluss prüfen if ae_ausspg > KURZSCHLUSS_SPG and ae_ausstr > KURZSCHLUSS_STR then goto kurzschluss if not de_quitt then goto kein_kurzschluss_mehr if kurzschluss_bit then goto kurzschluss 'Fahrtrichtung prüfen if ae_ein <= 127 - TOTZONE then goto rueckwaerts if ae_ein > 127 - TOTZONE and ae_ein < 127 + TOTZONE then goto stillstand 'ae_ein >= 127 + TOTZONE ist vorwärts #vorwaerts aa_aus = (a*ae_ein + b_pos)/100 - 1 da_vor = HI goto aa_setzen #stillstand aa_aus = 0 da_vor = LO da_rue = LO goto aa_setzen #rueckwaerts aa_aus = (-a*ae_ein + b_neg)/100 da_rue = HI goto aa_setzen #kurzschluss kurzschluss_zaehler = kurzschluss_zaehler + 1 if kurzschluss_zaehler < KURZSCHLUSS_ZAEHLER_MAX then goto kurzschluss_ende kurzschluss_bit = HI aa_aus = 0 da_vor = LO da_rue = LO gosub k_ton #kurzschluss_ende goto aa_setzen #kein_kurzschluss_mehr kurzschluss_bit = LO kurzschluss_zaehler = 0 gosub hui goto aa_setzen #aa_setzen goto endlos #ende print "Spannungsregler: Ende" end '=== Subroutinen ======================================================= 'Versionsnummer, Erstellungsdatum und -uhrzeit an den PC senden #print_version print "Spannungsregler - V"; version; " - "; tag; "."; monat; "."; jahr; print " "; stunde; ":"; minute_; " Uhr" return '----------------------------------------------------------------------- table TOENE 1250 884 625 442 313 221 156 110 78 55 39 tabend define TOENE_ANZ 10 #hui for b1 = 0 to TOENE_ANZ looktab TOENE, b1, i1 beep i1, 2, 0 next return '----------------------------------------------------------------------- #k_ton beep 750, 20, 0 beep 400, 30,0 return '----------------------------------------------------------------------- '----------------------------------------------------------------------- |
| Antwort schreiben |