GOTO Anfang FSVerlauf: REM Unterprogramm Kraft-Weg-Verlauf FOR XI = 0 TO S STEP XD XI = INT(XI * 1000 + .5) / 1000: REM Runden auf 1/1000 mm X = XI / S: SX = (SO - X) / (SO - SA - SZ) PRJN = XI / XPR: IF ABS(PRJN - INT(PRJN)) > DXPR THEN 420 VPXP = INT(VPX * 1000 + .5) / 1000: FPX1P = INT(FPX1): AXIP = INT(AXI / G0 * 1000 + .5) / 1000: TP = INT(T * 1000 + .5) / 1000 PRINT #1, XI, VPXP, FPX1P, AXIP, TP 420: ADX = ADU: IF SX <= 0 THEN 440 ADX = ADU + DAD * SX ^ NS IF (XI <= LA) THEN ADX = ADO - XI / LA * ADA IF ((XI > LA) AND (XI < (LA + LZ))) THEN ADX = ADO - XI / LA * ADA - (XI - LA) / LZ * ADZ 440: P1X = ZRA * VPX * VPX / ADX / ADX P2X = (V0 / (V0 - AKS * XI / 1000)) ^ NPOL * P0 FPX2 = (A1 * P1X + AKS * P2X) / ETA FC = C * (XI + XD) IF FPX2 >= FC THEN LET FPX2 = FC FVX = B0 + B1 * X + B2 * X * X IF FVX > FPX2 THEN GOSUB FVzuhoch DFP = FPX2 - FVX FPMAXI = FPX2: XFPMAXI = XI: REM Spitzenwert Pufferkraft IF FPMAXI > FPMAX THEN LET FPMAX = FPMAXI: XFPMAX = XFPMAXI AXI = DFP / M: REM max. Verz”gerung IF AXI > AMAX THEN LET AMAX = AXI: XAMAX = XI EUM = EUM + (FPX1 + FPX2) / 2000 * XD VPX2Q = VPX * VPX - .002 * XD * DFP / M IF VPX2Q <= 0 THEN GOSUB Stillstand VPX2 = SQR(VPX2Q) T = T + XD / (VPX + VPX2) * .002 FPX1 = FPX2: VPX = VPX2 NEXT XI PRINT #1, "Puffer f„hrt auf Anschlag!" GOSUB Stillstand: REM Ende drucken RETURN Anfang: CLS PRINT PRINT "Programm LP" PRINT PRINT "Berechnung der Drosselkennlinie von Hydraulikpuffern Typ LP" PRINT "Nur fr Aufzugspuffer in stehender Anordnung!" PRINT "*************************************************************" CPRT$ = "Copyright 2000 - 2017 by K. Drrbeck, D-XXXXX XXXXXXX" VER$ = "Version 2.0.3 vom 26.11.2017" REM Žnderungen zu Version 2.0.2 vom 31.10.2017: Anstiegsflanke 2-stufig REM Žnderungen zu Version 2.0.1 vom 15.04.2017: Korrektur Programmfehler Flanke REM Žnderungen zu Version 1.0.6 vom 01.11.2015: Anstiegsflanke m”glich REM Žnderungen zu Version 1.0.5 vom 16.08.2015: Schrittweite reduziert; Datens„tze fr LP 40x430 und LP 50x950Entwurf hinzu REM Žnderungen zu Version 1.0.4 vom 24.09.2000: LP 40x235 fr 1.8 m/s neu REM Žnderungen zu Version 1.0.2 vom 01.05.2000: Angabe Hydraulikrohrl„ngen; Hbe ge„ndert REM Žnderungen zu Version 1.0.3 vom 17.08.2000: Erg„nzung LP 40x80,120 und LP 50, k=1,25 statt 1,10 PRINT VER$: PRINT CPRT$ Datum: MTJ$ = DATE$ MONAT$ = LEFT$(MTJ$, 2): TAG$ = MID$(MTJ$, 4, 2): JAHR$ = MID$(MTJ$, 7, 4) DTM$ = TAG$ + "." + MONAT$ + "." + JAHR$ PI4 = ATN(1) Neurechnen2: GOSUB Pufferwahl: REM Einlesen von Puffergr”áe und Geometriedaten RHO = 890: REM ”ldichte 890 kg/m3 NPOL = 1.35: REM Polytropenexponent ZETA = 1.55: REM Drosselbeiwert ETA = .95: REM mech. Wirkungsgrad K = 1.25: REM Kurvenformfaktor G0 = 9.81: REM Erdbeschleunigung in m/s2 PRINT: PRINT "Auslegungsdaten des Puffers: " PRINT "----------------------------" PRINT INPUT "aufprallende Masse in kg: "; M VFAKT = 1.15: REM Aufprallgeschwindigkeit = 115% der Nenngeschwindigkeit nach EN 81 INPUT "Nenngeschwindigkeit in m/s: "; VNENN VP = VFAKT * VNENN: REM Aufprallgeschwindigkeit REM Vortriebskraft in N B0 = M * G0: REM INPUT "Vortriebskraft in N: "; B0 B1 = 0: B2 = 0 PRINT: INPUT "Fabriknummer(n): "; FAB$ PRINT: INPUT "Bemerkungen: "; BEMERK$ Energie: REM Energie und max. Pufferkraft EKIN = M / 2 * VP * VP: REM Ekin in Nm EPOT = B0 * SM + B1 * SM * SM / 2 + B2 * SM * SM * SM / 3: REM Epot in Nm EGES = INT(EKIN + EPOT): FPMAX = INT(K * (EKIN + EPOT) / SM) PRINT: PRINT "Pufferenergie E = "; EGES; " Nm" PRINT "max. Pufferkraft FPmax = "; FPMAX; " N" Andererpuffer: PRINT: INPUT "anderen Puffer w„hlen? ( j / n ) n"; JA$ IF NOT ((JA$ = "n") OR (JA$ = "N") OR (JA$ = "j") OR (JA$ = "J") OR (JA$ = "")) THEN GOTO Andererpuffer IF ((JA$ = "j") OR (JA$ = "J")) THEN GOSUB Pufferwahl IF ((JA$ = "j") OR (JA$ = "J")) THEN GOTO Energie PRINT: INPUT "Gasdruck in bar: "; PBAR P0 = PBAR * 100000!: REM Gasdruck in N/m2 FDYN = (EKIN + EPOT) / SM Neurechnen0: GOSUB Bohrbildwahl: REM Bohrbild ausw„hlen INPUT "Drosselkurvenexponent (0.5 ÷< nS ÷< 0.6): "; NS soein: INPUT "norm. Wegendpunkt der Drosselkurve (so ÷ 0.95): "; SO IF (SO > 1 OR SO <= .8) THEN GOTO sofalsch ELSE GOTO sorichtig sofalsch: PRINT "unzul„ssige Eingabe! " INPUT "Drcken Sie 'B' zur Best„tigung oder die RETURN-Taste zur Korrektur"; SOB$ IF ((SOB$ = "b") OR (SOB$ = "B")) THEN GOTO sorichtig ELSE GOTO soein sorichtig: PRINT INPUT "Andere Bohrbildauswahl treffen? ( j / n ) n"; JAND$ IF NOT ((JAND$ = "j") OR (JAND$ = "J") OR (JAND$ = "n") OR (JAND$ = "N") OR (JAND$ = "")) THEN GOTO sorichtig IF ((JAND$ = "j") OR (JAND$ = "J")) THEN GOTO Neurechnen0 XD = .02: IF S > 200 THEN XD = .05: REM Schrittweite IF S > 700 THEN LET XD = .1 IF ((VP < .6) OR (B0 / M > 4) OR (SCHWING% = 1)) THEN GOSUB NEUXD: REM Schrittweite verkleinern? DXPR = XD / 100: REM Fehlergrenze fr Abfrage Werte drucken FO = 1: REM oberer Funktionswert FU = INT(NR / NG * 1000 + .5) / 1000: REM unterer Funktionswert SA = LA / S: SZ = LZ / S: REM rel. L„nge Anstiegsflanke / Zwischenflanke ADO = DD * DD / 1000000! * PI4 * NG ADU = DD * DD / 1000000! * PI4 * NR ADA = DD * DD / 1000000! * PI4 * NA: REM Anstiegsflanke ADZ = DD * DD / 1000000! * PI4 * NZ: REM Zwischenflanke DAD = ADO - ADA - ADZ - ADU: ZRA = ZETA * RHO / 2 * A1 * A1 REM LSR = LMR / 1000 - CLSR: REM L„nge Schutzrohr in m REM DISR = DASR - 2 * SSR: REM Innendurchmesser Schutzrohr REM AR1 = ((DISR * DISR - D2 * D2)) * PI4: AR2 = ((DIMEM * DIMEM - DASR * DASR)) * PI4: REM Ringfl„chen REM V1OEL = A1 * (SM + COFF / 1000) + (AR1 + AR2) * LSR: REM ™lvolumen im Zylinder in m3 - N„herungswert REM V1OEL = INT(V1OEL * 100000 + .5) / 100: REM ™lerstfllung in l REM FOELV = .4: REM ™lvorrat 40 % vom Hubvolumen REM VOELVOR = A1 * SM * FOELV: REM ™lvorrat in m3 REM VVORL = INT(VOELVOR * 100000 + .5) / 100: REM ™lvorrat in l REM LG = LMR / 1000 - CLMR: REM Gasrauml„nge in m aus Gasrohrl„nge in mm rechnen V0 = A2 * HGAS / 1000 + V0KOPF: REM Gasvolumen in m3 VGAS = INT(V0 * 100000! + .5) / 100: REM Gasvolumen in l GOSUB Druckabst: REM Abstand der Druckwerte ausrechnen PRINT: PRINT "Eingabe beendet" PRINT: PRINT "Kraft-Weg-Verlauf wird gedruckt" OPEN "LP-203.txt:" FOR OUTPUT AS #1 ON ERROR GOTO Druckereinschalten REM PRINT #1, CHR$(27); "@"; CHR$(27); "l"; CHR$(5); GOSUB Kopfdruck: REM Kopf drucken VPX = VP: FPX1 = 0: EKINX1 = EKIN: AXI = 0: REM Anfangswerte EUM = 0: T = 0: REM Energie und Zeit FPMAX = 0: XFPMAX = 0: AMAX = 0: XAMAX = 0: REM Spitzenwerte ANSTFL% = 2: SYSTEM$ = ", beschleunigungsf„higes System": REM Parameter kl„rt Beschleunigungsverhalten in der Anstiegsflanke - 2 = beschleunigungsf„hig XSCHWING = 0: SCHWING% = 0: REM Parameter zur Schwingungserkennung bei zu groáer Schrittweite GOSUB FSVerlauf: REM Kraft-Weg-Verlauf rechnen Neurechnen1: IF SCHWING% = 1 THEN PRINT: PRINT "Bitte rechnen Sie mit verringerter Schrittweite neu!" PRINT: INPUT "Drosseldaten „ndern und neu rechnen? ( j / n ) n"; JDR$ IF NOT ((JDR$ = "j") OR (JDR$ = "J") OR (JDR$ = "n") OR (JDR$ = "N") OR (JDR$ = "")) THEN GOTO Neurechnen1 IF ((JDR$ = "j") OR (JDR$ = "J")) THEN CLOSE #1 IF ((JDR$ = "j") OR (JDR$ = "J")) THEN GOTO Neurechnen0 Fragebohrbilddruck: PRINT: INPUT "Drosselbohrbild drucken? ( j / n ) j"; JBOHR$ IF ((JBOHR$ = "n") OR (JBOHR$ = "N")) THEN GOTO Endebohrbild IF ((JBOHR$ = "") OR (JBOHR$ = "j") OR (JBOHR$ = "J")) THEN GOSUB Bohrbilddruck ELSE GOTO Fragebohrbilddruck Endebohrbild: CLOSE #1 Frageneupuff: PRINT: INPUT "Neuen Puffer rechnen? ( j / n ) j"; JNEU$ CLS IF ((JNEU$ = "n") OR (JNEU$ = "N")) THEN GOTO Programmende IF ((JNEU$ = "j") OR (JNEU$ = "J") OR (JNEU$ = "")) THEN GOTO Neurechnen2 ELSE GOTO Frageneupuff Programmende: ON ERROR GOTO 0 END Pufferwahl: PRINT: REM Unterprogramm Puffergr”áe ausw„hlen und Daten einlesen INPUT "Pufferdurchmesser in mm: "; dp INPUT "Pufferhub in mm: "; S: SM = S / 1000 LMR = 0: REM Gasrohrl„nge lG = 0 setzen REM Datensatz einlesen IF dp = 40 THEN GOSUB Daten40 IF dp = 50 THEN GOSUB Daten50 IF ABS(dp - d1 * 1000) < .001 THEN 2075 PRINT: PRINT "Pufferdurchmesser ungltig!": PRINT: GOTO Pufferwahl 2075: A1 = d1 * d1 * PI4: REM Hydraulikquerschnitt in m2 A2 = (D3 * D3 - D2 * D2) * PI4: REM Gasquerschnitt in m2 AKS = DKS * DKS * PI4: REM Kolbenstangenfl„che in m2 IF LMR = 0 THEN GOSUB lgeinlesen IF LMR <= S THEN GOSUB lgeinlesen REM Federkonstante Anstiegsflanke EERSATZ = 1515: REM Ersatz-E-Modul in N/mm2 C = A1 * 1000000! / S * EERSATZ C = INT(C / 100 + .5) * 100 RETURN REM L„ngenmaáe in m REM D1 = Innendurchmesser Hydraulikrohr REM D2 = Auáendurchmesser Hydraulikrohr REM D3 = Innendurchmesser Mantelrohr REM DKS = Durchmesser Kolbenstange REM DEL CLSR = Konstante Gasrohrl. - Schutzrohrl. REM DEL DASR = Auáendurchm. Schutzrohr REM DEL SSR = Wandst„rke Schutzrohr REM DEL DIMEM = Membraninnendurchmesser REM L„ngenmaáe in mm REM LHR = L„nge Hydraulikrohr REM LMR = L„nge Mantelrohr REM COFF = Offsetl„nge Hinterkante Kolbenfase - Ende Hydraulikrohr REM CHR = Abstand Restbohrung von Ende Hydraulikrohr REM HGAS = H”he Gasraum REM V0KOPF = Totvolumen im Gasraum kopfseitig in m3 Daten40: REM Daten fr LP 40 Stand 26.03.2000 d1 = .04: D2 = .05: D3 = .1: DKS = .032 COFF = 16.5: CHR = 13.5: V0KOPF = 0: REM CLMR = .072 GOSUB LMant40 RETURN LMant40: REM Rohrl„ngen fr LP 40 Stand 24.09.2000/17.08.2000/16.08.2015 IF S = 80 THEN LET LHR = 146: LMR = 177: HGAS = 44.5 IF S = 120 THEN LET LHR = 186: LMR = 217: HGAS = 44.5 IF S = 175 THEN LET LHR = 241: LMR = 272: HGAS = 44.5 IF S = 190 THEN LET LHR = 266: LMR = 297: HGAS = 54.5 IF S = 235 THEN LET LHR = 321: LMR = 352: HGAS = 64.5 IF S = 275 THEN LET LHR = 361: LMR = 392: HGAS = 64.5 IF S = 295 THEN LET LHR = 391: LMR = 422: HGAS = 74.5 IF S = 430 THEN LET LHR = 556: LMR = 587: HGAS = 91 RETURN Daten50: REM Daten fr LP 50 Stand 24.09.2000 d1 = .05: D2 = .065: D3 = .1382: DKS = .045 COFF = 16.5: CHR = 13.5: V0KOPF = 0: REM CLMR = ? GOSUB LMant50 RETURN LMant50: REM Rohrl„ngen fr LP 50 Stand 24.09.2000 IF S = 175 THEN LET LHR = 253: LMR = 291: HGAS = 54.5 IF S = 425 THEN LET LHR = 548: LMR = 586: HGAS = 99.5 IF S = 695 THEN LET LHR = 878: LMR = 916: HGAS = 159.5 IF S = 950 THEN LET LHR = 1193: LMR = 1231: HGAS = 206: REM ENTWURF; HGAS und Hub Prfen RETURN lgeinlesen: PRINT "Der gew„hlte Puffer ist kein Standardhub!" INPUT "Auáenl„nge des Hydraulikrohres lHR in mm "; LHR INPUT "Auáenl„nge des Mantelrohres lMR in mm "; LMR RETURN Kopfdruck: REM Unterprogramm Kopf drucken PRINT #1, "*** XXXXXXX GmbH, D-XXXXX XXXXXXX -*- Pufferauslegung am "; DTM$ PRINT #1, "Programm LP "; VER$; REM PRINT #1, "Pufferauslegung mit Programm LP am "; DTM$ REM PRINT #1, VER$ REM PRINT #1, PRINT #1, "LP "; dp; "*"; S; " Fabr.-Nr.: "; FAB$ PRINT #1, "**********************************************************************" PRINT #1, "L„nge Hydraulikrohr ="; LHR; "mm; "; BEMERK$ PRINT #1, "*** Auslegungsdaten des Puffers: ***" PRINT #1, "aufprallende Masse m ="; M; "kg ", "Vortriebskraft FV ="; B0; "N" PRINT #1, "Nenngeschwindigkeit vNenn ="; VNENN; "m/s", "Aufprallgeschw.v1 ="; VP; "m/s" PRINT #1, "Gasdruck p0 ="; PBAR; "bar", "Gasvolumen V0 ="; VGAS; "l" PRINT #1, "Drosselbohrungs-í dD ="; DD; "mm" PRINT #1, "Bohrungen: Gesamtzahl ng ="; NG, "Restbohrungen nR ="; NR PRINT #1, "Drosselkurvenexponent nS ="; NS; " ", "norm. Wegendpunkt so ="; SO IF ((LA = 0) AND (LZ = 0)) THEN PRINT #1, "unterer Funktionswert fu ="; FU; " ", "oberer Funktionsw. fo ="; FO IF LA <> 0 THEN PRINT #1, "Anstiegsflanke L„nge lA ="; LA; "mm", "Anzahl Bohrungen nA ="; NA IF LZ <> 0 THEN PRINT #1, "Zwischenflanke L„nge lZ ="; LZ; "mm", "Anzahl Bohrungen nZ ="; NZ REM PRINT #1, "Schrittweite xD ="; XD; "mm " PRINT #1, PRINT #1, " Weg", "Geschwindigk.", " Kraft", "Verz”gerung", " Zeit" PRINT #1, " x [mm]", " v [m/s]", " F [N]", " a/g0 ", " t [s]" PRINT #1, "---------------------------------------------------------------" RETURN Stillstand: REM Unterprogramm Stillstand VPXP = INT(VPX * 1000 + .5) / 1000: FPX1P = INT(FPX1): TP = INT(T * 1000 + .5) / 1000 IF ABS(PRJN - INT(PRJN)) > DXPR THEN PRINT #1, XI, VPXP, FPX1P, AXIP, TP PRINT #1, "Daten bei Bewegungsende (Schrittweite xD ="; XD; "mm):" FRANF = AKS * P0 * ETA: REM Rckstellkraft Hubanfang in N FRUECK = AKS * P2X * ETA: REM Rckstellkraft bei Bewegungsende in N PRINT #1, "Pufferenergie:"; EUM; "Nm"; SYSTEM$ PRINT #1, "max. Pufferkraft:"; INT(FPMAX); "N bei Hub"; XFPMAX; "mm; Rckstellkraft:"; INT(FRUECK); "N " AMAX = INT(AMAX * 100 + .5) / 100 AMITTLS = VP * VP / 2 / SM: AMITTLS = INT(AMITTLS * 100 + .5) / 100: REM mittlere Verz. ber den Hub AMittlT = (VP - VPXP) / T: AMittlT = INT(AMittlT * 100 + .5) / 100: REM mittlere Verz. ber die Zeit PRINT #1, "max. Verz”gerung:"; AMAX; "m/s2 bei Hub"; XAMAX; "mm" PRINT #1, "mittlere Verz”gerung, zeitlich:"; AMittlT; "m/s2 "; "ber den Hub:"; AMITTLS; "m/s2" PRINT #1, CHR$(12); RETURN Neurechnen1 FVzuhoch: REM Beschleunigung des Systems IF ANSTFL% = 0 THEN PRINT "Die hohe Vortriebskraft erlaubt keine Verz”gerung!": PRINT "Bitte w„hlen Sie Ihr passendes System aus:" IF ANSTFL% = 0 THEN PRINT " 1 - Aufprallgeschwindigkeit v1 kann nicht berschritten werden": PRINT " 2 - System kann beschleunigen" IF ANSTFL% = 0 THEN INPUT "Systemkennzahl eingeben:"; ANSTFL%: PRINT: IF ((ANSTFL% < 0) OR (ANSTFL% > 2)) THEN GOTO FVzuhoch IF NOT ((ANSTFL% = 1) AND (VPX >= VP)) THEN PRINT "Vortriebskraft zu hoch! System beschleunigt bei x ="; XI; "mm" IF ((ANSTFL% = 1) AND (VPX >= VP)) THEN LET FVX = FPX2: REM H”chstgeschwindigkeit nicht berschreiten IF ANSTFL% = 1 THEN LET SYSTEM$ = ", geschwindigkeitsbegrenztes System, v <= v1" IF ANSTFL% = 2 THEN LET SYSTEM$ = ", beschleunigungsf„higes System" REM Schwingungserkennung am Hubende DSCHWING = XI - XSCHWING - 2 * XD XSCHWING = XI IF ABS(DSCHWING) < XD / 100 THEN LET SCHWING% = 1: PRINT "System schwingt bei"; XI; "mm" RETURN Bohrbildwahl: REM Auswahl des Drosselrohrbohrbildes ADERF = VP * A1 * SQR(ZETA * RHO * A1 / 2 / FDYN): REM erf. Drosselfl„che in m2 NG = INT(.07 * S + .5): REM Vorschlag Gesamtzahl der Bohrungen DDM = SQR(ADERF / PI4 / NG): REM Drosselbohrung in m DD = INT(DDM * 10000 + .5) / 10: REM Drosselbohrung in mm IF DD > 1.8 THEN LET DD = 1.8 IF DD < 1 THEN LET DD = 1! NGERF = ADERF / (DD * DD * PI4) * 1000000!: REM erf. Bohrungszahl NG = INT(NGERF * 10 + .5) / 10 PRINT: PRINT "Drosselrohrbohrbild: Bohrungs-í "; DD; " mm, "; NG; " Bohrungen" PRINT: PRINT "Bitte w„hlen Sie:" INPUT "Drosselbohrungs-í in mm: "; DD NGERF = ADERF / (DD * DD * PI4) * 1000000!: REM erf. Bohrungszahl NG = INT(NGERF * 10 + .5) / 10 PRINT "erforderliche Bohrungszahl (gesamt): "; NG PRINT INPUT "gew„hlte Anzahl der Drosselbohrungen (gesamt): "; NG NR3 = NG - INT(NG): NR3 = INT(NR3 * 10000 + .5) / 10000 NR1 = INT(.065 * NG): IF NR1 < 1 THEN LET NR1 = 1 NR2 = INT(.065 * NG + .5): IF NR2 < 1 THEN LET NR2 = 1 IF B0 > M THEN LET NR1 = 1: NR2 = 1: REM bei Vortriebskraft 1 Restbohrung IF ((NR1 = NR2) AND (NR3 = 0)) THEN PRINT "Anzahl der Restbohrungen davon: "; NR1: GOTO 4600 IF NR3 > 0 THEN PRINT "Anzahl der Restbohrungen davon: "; NR3: GOTO 4600: REM kleinere Restborung PRINT "Anzahl der Restbohrungen davon: "; NR1; " oder "; NR2 4600: PRINT: INPUT "gew„hlte Anzahl der Restbohrungen: "; NR IF NR < 0 THEN 4600 IF NR > NG THEN 4600 INPUT "Anstiegsflanke bercksichtigen? (j/n) n"; JANST$ IF ((JANST$ = "n") OR (JANST$ = "N") OR (JANST$ = "")) THEN LET NA = 0: LA = 0: NZ = 0: LZ = 0: RETURN ANSTIEGEINGABE: INPUT "L„nge Anstiegsflanke in mm: LA = "; LA IF ((LA < 0) OR (LA > (.8 * S))) THEN PRINT "unzul„ssige Eingabe": GOTO ANSTIEGEINGABE INPUT "Anzahl Drosselbohrungen von nG in der Anstiegsflanke: nA = "; NA IF ((NA < 0) OR (NA > (NG - NR))) THEN PRINT "unzul„ssige Eingabe": GOTO ANSTIEGEINGABE INPUT "L„nge Zwischenflanke in mm: LZ = "; LZ IF ((LZ < 0) OR (LZ > (.8 * S))) THEN PRINT "unzul„ssige Eingabe": GOTO ANSTIEGEINGABE INPUT "Anzahl Drosselbohrungen von nG in der Zwischenflanke: nZ = "; NZ IF ((NZ < 0) OR (NZ > (NG - NR))) THEN PRINT "unzul„ssige Eingabe": GOTO ANSTIEGEINGABE RETURN NEUXD: REM Anpassung der Schrittweite PRINT "Die Berechnung erfolgt mit einer Schrittweite von"; XD; "mm." INPUT "Soll mit verkleinerter Schrittweite gerechnet werden? ( j / n ) n"; NEUXD$ IF ((NEUXD$ = "n") OR (NEUXD$ = "N") OR (NEUXD$ = "")) THEN RETURN NEUXD2: INPUT "neue Schrittweite in mm:"; XD IF XD < .001 THEN PRINT "Schrittweite zu klein! (min. 0.001 mm)": GOTO NEUXD2 IF XD > 1 THEN PRINT "Schrittweite zu groá! (max. 1 mm)": GOTO NEUXD2 RETURN Druckabst: REM Unterprogramm Abstand der Druckwerte ausrechnen XPR = (1 + INT((S - 5) / 200)) * 5 IF S <= 80 THEN LET XPR = 2: IF S <= 40 THEN LET XPR = 1 RETURN Bohrbilddruck: REM Unterprogramm Bohrbilddruck N1 = 1 / NS: NE = NG - NR FO2 = FO * (NG - NA - NZ) / NG: REM Reduzierung bei Anstiegsflanke DFN = (FO2 - FU) / (NE - NA - NZ) XOFF = COFF + S: REM Offsetl„nge PRINT #1, "XXXXXXX GmbH - D-XXXXX XXXXXXX" PRINT #1, "Pufferauslegung mit Programm LP am "; DTM$ PRINT #1, VER$ PRINT #1, PRINT #1, "Drosselbohrbild " PRINT #1, "LP "; dp; "*"; S; " Fabr.-Nr.: "; FAB$ PRINT #1, "**********************************************************************" PRINT #1, "L„nge Hydraulikrohr ="; LHR; "mm; "; BEMERK$ PRINT #1, "*** Auslegungsdaten des Puffers: ***" PRINT #1, "aufprallende Masse m ="; M; "kg ", " Vortriebskraft FV ="; B0; "N" PRINT #1, "Nenngeschwindigkeit vNenn ="; VNENN; "m/s", "Aufprallgeschw.v1 ="; VP; "m/s" PRINT #1, "Gasdruck p0 ="; PBAR; "bar", "Gasvolumen V0 ="; VGAS; "l" PRINT #1, CHR$(27); "G"; PRINT #1, "Drosselbohrungs-í dD ="; DD; "mm" PRINT #1, "Bohrungen: Gesamtzahl ng ="; NG, "Restbohrungen nR ="; NR; CHR$(27); "H" PRINT #1, "Drosselkurvenexponent nS ="; NS; " ", "norm. Wegendpunkt so ="; SO IF ((LA = 0) AND (LZ = 0)) THEN PRINT #1, "unterer Funktionswert fu ="; FU; " ", "oberer Funktionsw. fo ="; FO IF LA <> 0 THEN PRINT #1, "Anstiegsflanke L„nge lA ="; LA; "mm", "Anzahl Bohrungen nA ="; NA IF LZ <> 0 THEN PRINT #1, "Zwischenflanke L„nge lZ ="; LZ; "mm", "Anzahl Bohrungen nZ ="; NZ PRINT #1, PRINT #1, "Bohrung Nr.", "Bohrkoordinate x in mm", " x rel" PRINT #1, "----------------------------------------------------" REM Berechnung der Lage der Bohrungen BohrungenAnstieg: IF NA = 0 THEN GOTO BohrungenZflanke: FOR NI = 1 TO NA XIB = SA / NA * (NI - .5) XA = XIB * S: REM Bohrkoordinate ab Hubanfang XIB = INT(XIB * 1000 + .5) / 1000: REM rel. Hubkoordinate XBOHR = XOFF - XA: REM Bohrkoordinate ab Hydraulikrohrende XBOHR = INT(XBOHR * 10 + .5) / 10 PRINT #1, NI, XBOHR, " ", XIB IF ((NG > 45) AND (NI = 40)) THEN GOSUB Umbruch IF ((NG > 98) AND (NI = 95)) THEN GOSUB Umbruch NEXT NI BohrungenZflanke: IF NZ = 0 THEN GOTO Hauptbohrungen: FOR NI = (NA + 1) TO (NA + NZ) XIB = SA + SZ / NZ * (NI - .5) XA = XIB * S: REM Bohrkoordinate ab Hubanfang XIB = INT(XIB * 1000 + .5) / 1000: REM rel. Hubkoordinate XBOHR = XOFF - XA: REM Bohrkoordinate ab Hydraulikrohrende XBOHR = INT(XBOHR * 10 + .5) / 10 PRINT #1, NI, XBOHR, " ", XIB IF ((NG > 45) AND (NI = 40)) THEN GOSUB Umbruch IF ((NG > 98) AND (NI = 95)) THEN GOSUB Umbruch NEXT NI Hauptbohrungen: FOR NI = (NA + NZ + 1) TO NE FI = FO2 - (NI - NA - NZ - .5) * DFN FQ = (FI - FU) / (FO2 - FU) XIB = (SO - SA - SZ) * (1 - FQ ^ N1) + SA + SZ XA = XIB * S: REM Bohrkoordinate ab Hubanfang XIB = INT(XIB * 1000 + .5) / 1000 XBOHR = XOFF - XA: REM Bohrkoordinate ab Hydraulikrohrende XBOHR = INT(XBOHR * 10 + .5) / 10 PRINT #1, NI, XBOHR, " ", XIB IF ((NG > 45) AND (NI = 40)) THEN GOSUB Umbruch IF ((NG > 98) AND (NI = 95)) THEN GOSUB Umbruch NEXT NI IF NR = 0 THEN GOTO Seitenvorschub1: REM Koordinaten fr Restbohrungen berechnen IF ((NR > 0) AND (NR < 1)) THEN GOTO Kleinerestbohrung NYZ = NE + 1: REM Restbohrung(en) mit gleichem Durchmesser FOR NI = NYZ TO NG XBOHR = CHR: REM Konstante ab Hydraulikrohrende XA = XOFF - XBOHR: XIB = INT(XA / S * 1000 + .5) / 1000 PRINT #1, NI, XBOHR, " ", XIB IF ((NG > 45) AND (NI = 40)) THEN GOSUB Umbruch IF ((NG > 98) AND (NI = 95)) THEN GOSUB Umbruch NEXT NI GOTO Seitenvorschub1 Kleinerestbohrung: REM 1 Restbohrung mit kleinerem Durchmesser DREST = DD * SQR(NR): DREST = INT(DREST * 100 + .5) / 100: REM Durchmesser Restbohrung PRINT #1, "Restbohrung í"; DREST; "mm" XBOHR = CHR: REM Konstante ab Hydraulikrohrende XA = XOFF - XBOHR: XIB = INT(XA / S * 1000 + .5) / 1000 PRINT #1, NG, XBOHR, " ", XIB Seitenvorschub1: PRINT #1, CHR$(12); RETURN Umbruch: REM Seitenumbruch bei langen Bohrbildern PRINT #1, " **** Fortsetzung auf der n„chsten Seite ****"; CHR$(12); PRINT #1, "LP "; dp; "*"; S; CHR$(20); " Fabr.-Nr.: "; FAB$ PRINT #1, "**********************************************************************" PRINT #1, "L„nge Hydraulikrohr ="; LHR; "mm; "; BEMERK$ PRINT #1, PRINT #1, "Bohrung Nr.", "Bohrkoordinate x in mm", " x rel" PRINT #1, "----------------------------------------------------" RETURN Druckereinschalten: PRINT "Bitte Drucker einschalten und mit RETURN best„tigen oder mit B beenden" Eingabedr: RET1DR$ = INKEY$ IF NOT ((RET1DR$ = CHR$(13)) OR (RET1DR$ = "B") OR (RET1DR$ = "b")) THEN GOTO Eingabedr IF ((RET1DR$ = "B") OR (RET1DR$ = "b")) THEN CLOSE #1: RESUME Neurechnen1 RESUME