Diplomnikam / ASUTP / REG
.DOCDECLARE SUB Message () ' Выдает сообщение "Подождите пожалуйста я считаю"
DECLARE SUB Center (row%, text$) ' Вывод строки на экран, выровненной по центру
DECLARE SUB Pausa () ' Останов до нажатия любой клавиши
DIM B(1000), KX(5000), KY(5000)
1 CLS
COLOR 15
Center 1, "**************************************************"
COLOR 9
Center 2, "**** Расчет переходных процессов в цифровой системе ****"
COLOR 12
Center 3, "**************************************************"
2 REM PRINT "Порядок астатизма объекта N=0 или 1"
3 REM INPUT T(4)
4 REM PRINT "Параметры объекта KOR, TAU, T1, T2, T3, KOW, T4, T5="
6 REM INPUT V1, D6, T(1), T(2), T(3), V2, T(5), T(6)
COLOR 10
Center 5, "Введите следующие параметры передаточной функции"
COLOR 7
PRINT "1. Кор - коэфициент усиления по каналу регулирования: "; : COLOR 11: INPUT "", V1
COLOR 7
PRINT "2. Постоянная времени Т1 (мин): "; : COLOR 11: INPUT "", T(1)
COLOR 7
PRINT "3. Постоянная времени Т2 (мин): "; : COLOR 11: INPUT "", T(2)
COLOR 7
PRINT "4. Постоянная времени Т3 (мин): "; : COLOR 11: INPUT "", T(3)
COLOR 7
PRINT "5. Постоянная времени запаздывания tau (мин): "; : COLOR 11: INPUT "", D6
COLOR 7
PRINT "6. Порядок астатизма объекта N (0 или 1): "; : COLOR 11: INPUT "", T(4)
COLOR 15
PRINT " Значения введены корректно (Д/Н) "; : COLOR 14: INPUT ""; da$
IF (da$ <> "д") AND (da$ <> "Д") THEN 1
7 REM
COLOR 7
PRINT "7. Ков - коэфициент усиления по каналу возмущения: "; : COLOR 11: INPUT "", V2
COLOR 7
PRINT "8. Постоянная времени Т4 (мин): "; : COLOR 11: INPUT "", T(5)
COLOR 7
PRINT "9. Постоянная времени Т5 (мин): "; : COLOR 11: INPUT "", T(6)
COLOR 15
PRINT " Значения введены корректно (Д/Н) "; : COLOR 14: INPUT ""; da$
IF (da$ <> "д") AND (da$ <> "Д") THEN 7
8 IF V1 < 0 THEN 2
9 PRINT
COLOR 10
10 PRINT " Параметры регулятора"
12 REM INPUT K1, K2, K3, D
COLOR 7
PRINT "10. Настройка регулятора K1: "; : COLOR 11: INPUT "", K1
COLOR 7
PRINT "11. Настройка регулятора K2: "; : COLOR 11: INPUT "", K2
COLOR 7
PRINT "12. Настройка регулятора K3: "; : COLOR 11: INPUT "", K3
COLOR 7
PRINT "13. Значение Tkw - время квантования (мин): "; : COLOR 11: INPUT "", D
COLOR 15
PRINT " Значения введены корректно (Д/Н) "; : COLOR 14: INPUT ""; da$
IF (da$ <> "д") AND (da$ <> "Д") THEN 9
14 IF K1 < 0 THEN 2
15 PRINT
COLOR 10
16 PRINT " Параметры воздействий"
18 REM INPUT U1, F3, F4
COLOR 7
PRINT "14. Воздействие по каналу управления U1: "; : COLOR 11: INPUT "", U1
COLOR 7
PRINT "15. Воздействие по каналу возмущения F1: "; : COLOR 11: INPUT "", F3
COLOR 7
PRINT "16. Воздействие по каналу возмущения F2: "; : COLOR 11: INPUT "", F4
COLOR 15
PRINT " Значения введены корректно (Д/Н) "; : COLOR 14: INPUT ""; da$
IF (da$ <> "д") AND (da$ <> "Д") THEN 15
20 IF U1 < 0 THEN 10
25 y(1) = 0: y(2) = 0: y(3) = 0: y(4) = 0: y(5) = 0: y(6) = 0: R2 = 0: Q = 0: X = 0
27 y(7) = 0
30 Z = 0: K = 0
33 PRINT
35 REM PRINT "Шаг интегрирования H="
COLOR 7
PRINT "17. Шаг интегрирования H: "; : COLOR 11: INPUT "", H
40 REM INPUT H
45 REM PRINT "Шаг печати, верхний придел интегрирования ="
50 REM NPUT W1, W2
COLOR 7
PRINT "18. Шаг печати h : "; : COLOR 11: INPUT "", W1
COLOR 7
PRINT "19. Верхний придел интегрирования Tl: "; : COLOR 11: INPUT "", W2
COLOR 7
COLOR 15
PRINT " Значения введены корректно (Д/Н) "; : COLOR 14: INPUT ""; da$
IF (da$ <> "д") AND (da$ <> "Д") THEN 33
Message
cnt% = 0
55 IF W1 < C THEN 16
60 IF X > 2 * H THEN 160
100 L = INT(D6 / H)
110 N = INT(D / H)
120 REM DIM B(1000)
130 FOR I = 1 TO L + 1
140 B(I) = 0
150 NEXT I
160 GOSUB 350
170 A = y(6) + y(7)
175 IF X > 1.01 * W1 THEN 185
180 REM PRINT "Время", "Параметр", "Регулирующее воздействие"
185 REM PRINT X, A, R
KX(cnt%) = X
KY(cnt%) = A
cnt% = cnt% + 1
190 IF X < W2 - W1 + H THEN 160
NADPX$ = "t (мин)"
NADPY$ = "Y - значение выходной величины"
ZAG$ = "Реакция системы на ступенчатое воздействие"
COUNT% = cnt% - 1
CVET% = 13
GOSUB Grapher
200 GOTO 770
340 REM PRINT "Метод Рунге-Кутта"
345 REM PRINT "Чиcтого запаздывания по Y(1) - операторы 500 - 550"
350 M = INT(W1 / H)
360 FOR J = 1 TO M
370 IF Z > .99 THEN 390
380 GOSUB 700
390 Z = Z + 1
400 IF Z < .999 * N THEN 410
405 Z = 0
410 GOSUB 600
420 FOR I = 1 TO 6
425 IF T(I) = 0 THEN 444
430 G(I) = y(I) + H * P(I) / 4
440 y(I) = y(I) + 2 * H * P(I) / 3
442 GOTO 450
444 y(I) = y(I - 1)
450 NEXT I
460 GOSUB 600
470 FOR I = 1 TO 6
475 IF T(I) = 0 THEN 484
480 y(I) = G(I) + 3 * H * P(I) / 4
482 GOTO 490
484 y(I) = y(I - 1)
490 NEXT I
500 K = K + 1
510 S = B(K)
520 B(K) = y(4)
530 y(7) = S
540 IF K < .999 * L THEN 560
550 K = 0
560 X = X + H
570 NEXT J
580 RETURN
595 PRINT "Уравнение Коши"
600 P(1) = (V1 * (R + F3) - y(1)) / T(1)
602 IF T(2) = 0 THEN 606
604 P(2) = (y(1) - y(2)) / T(2)
606 IF T(3) = 0 THEN 610
608 P(3) = (y(2) - y(3)) / T(3)
610 IF T(4) = 0 THEN 614
612 P(4) = y(3)
614 P(5) = (V2 * F4 - y(5)) / T(5)
616 IF T(6) = 0 THEN 620
618 P(6) = (y(5) - y(6)) / T(6)
620 RETURN
695 PRINT "Расчет регулирующих воздействий"
700 E = U1 - y(6) - y(7)
710 R1 = K1 * E
720 R2 = R2 + K2 * E
730 R3 = K3 * (E - Q)
740 R = R1 + R2 + R3
750 Q = E
760 RETURN
770 END
Grapher:
SCREEN 12
IF GCV$ = "Д" OR GCV$ = "д" THEN CVET% = 15
CLS
OTRX = 0
OTRY = 0
MAXX = -9999
MAXY = -9999
MINX = 9999
MINY = 9999
FOR IM1 = 1 TO COUNT%
REM PRINT KX(I), KY(I)
IF KX(IM1) > MAXX THEN MAXX = KX(IM1)
IF KY(IM1) > MAXY THEN MAXY = KY(IM1)
IF KX(IM1) < MINX THEN MINX = KX(IM1)
IF KY(IM1) < MINY THEN MINY = KY(IM1)
NEXT IM1
REM PRINT COUNT%
REM STOP
OBLX = MAXX - MINX
OBLY = MAXY - MINY
IF MINX <= 0 THEN OCX = 40 + ABS(MINX) / OBLX * 400 ELSE OCX = 40
IF MINY <= 0 THEN OCY = 460 - ABS(MINY) / OBLY * 400 ELSE OCY = 460
MASHTX = 400 / OBLX
MASHTY = 400 / OBLY
REM РИСУЕМ МЕЛКУЮ СЕТКУ
FOR X = OCX + 4 TO 440 STEP 4
LINE (X, 60)-(X, 460), 8
NEXT X
FOR X = OCX - 4 TO 40 STEP -4
LINE (X, 60)-(X, 460), 8
NEXT X
FOR y = OCY + 4 TO 460 STEP 4
LINE (40, y)-(440, y), 8
NEXT y
FOR y = OCY - 4 TO 60 STEP -4
LINE (40, y)-(440, y), 8
NEXT y
REM РИСУЕМ ОСИ
LINE (OCX, 50)-(OCX, 470), 15
LINE (30, OCY)-(450, OCY), 15
PSET (OCX, 50)
DRAW "G3E3F3"
PSET (450, OCY)
DRAW "H3F3G3"
REM РИСУЕМ КРУПНУЮ СЕТКУ
FOR X = OCX + 40 TO 440 STEP 40
LINE (X, 60)-(X, 460), 7
NEXT X
FOR X = OCX - 40 TO 40 STEP -40
LINE (X, 60)-(X, 460), 7
NEXT X
FOR y = OCY + 40 TO 460 STEP 40
LINE (40, y)-(440, y), 7
NEXT y
FOR y = OCY - 40 TO 60 STEP -40
LINE (40, y)-(440, y), 7
NEXT y
REM РИСУЕМ ГРАФИК
FOR I = 1 TO COUNT%
IF I = 1 THEN OLDX = KX(1): OLDY = KY(1)
LINE (40 + (OLDX - MINX) * MASHTX, 460 - (OLDY - MINY) * MASHTY)-(40 + (KX(I) - MINX) * MASHTX, 460 - ABS(KY(I) - MINY) * MASHTY), CVET%
OLDX = KX(I)
OLDY = KY(I)
FOR kl% = 1 TO 10000: NEXT kl%
NEXT I
REM ПИШЕМ ЗАГОЛОВОК
DLN% = LEN(ZAG$)
LOCATE 1, 40 - DLN% / 2, 1
PRINT ZAG$;
REM ПРОСТАВЛЯЕМ ЧИСЛОВЫЕ МЕТКИ
LOCATE 4, 58, 1
PRINT USING "###.###"; MAXY;
LOCATE 29, 58, 1
PRINT USING "###.###"; MINY;
LOCATE 3, 2, 1
PRINT USING "###.###"; MINX;
LOCATE 3, 52, 1
PRINT USING "###.###"; MAXX;
REM ОБОЗНАЧЕНИЯ ОСЕЙ
LOCATE 3, 11, 1
PRINT "Ось Y: "; NADPY$;
LOCATE 26, 57, 1
PRINT "Ось X:";
LOCATE 27, 57, 1
PRINT NADPX$;
REM УКАЗЫВАЕМ МАСШАБЫ
LOCATE 6, 57, 1
PRINT " МАСШТАБ ПО"
LOCATE 7, 57, 1
PRINT USING " ОСИ X: ###.### ед."; OBLX / 10;
LOCATE 8, 57, 1
PRINT USING " ОСИ Y: ###.### ед."; OBLY / 10;
REM ДИАЛОГОВОЕ ОКНО
COLOR 14
LOCATE 12, 59, 1
PRINT "Для печати экрана"
LOCATE 13, 59, 1
PRINT " нажмите"
LOCATE 14, 59, 1
PRINT "[Shift] + [PrtScr]"
LOCATE 15, 59, 1
PRINT "Для продолжения"
LOCATE 16, 59, 1
PRINT " [G]"
LINE (455, 165)-(615, 265), 14, B
COLOR 15
REM ЗАДЕРЖКА
ZDR:
ZD$ = INKEY$
IF ZD$ <> "G" AND ZD$ <> "g" AND ZD$ <> "п" AND ZD$ <> "П" GOTO ZDR
CLS
COUNT% = 1
SCREEN 0
COLOR 15
CLS
LOCATE 1, 1, 1
RETURN
'Center:
' Center text on the given row.
SUB Center (row%, text$)
LOCATE row%, 41 - LEN(text$) / 2
PRINT text$;
END SUB
SUB Message
COLOR 15, 3
CLS
COLOR 15, 1
Center 9, "г======================================¬"
Center 10, "¦ ¦": COLOR 0, 3: PRINT "-"; : COLOR 15, 1
Center 11, "¦ Подождите пожалуйста, я считаю... ¦": COLOR 0, 3: PRINT "-"; : COLOR 15, 1
Center 12, "¦ ¦": COLOR 0, 3: PRINT "-"; : COLOR 15, 1
Center 13, "L======================================-": COLOR 0, 3: PRINT "-"; : COLOR 15, 1
COLOR 0, 3
Center 14, " ----------------------------------------"
COLOR 15, 1
LOCATE 1, 1, 0
END SUB
SUB Pausa
ZP:
PZ$ = INKEY$
IF PZ$ = "" GOTO ZP
END SUB