Python - Interrupcion bucle para pasar a otro dentro de uno mayor

 
Vista:

Interrupcion bucle para pasar a otro dentro de uno mayor

Publicado por Ramon (1 intervención) el 10/03/2021 20:05:50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 26 12:19:59 2021
@author: ramon
"""
 
import tclab
import time
 
lab = tclab.TCLab()
 
refT1=50
dur=500#tiempo de simulacion
# initialize lists
tm = [dur]
T1a = [dur]
a = [dur]
e= [dur]
res=0
 
 
# turn on heater 1
kc=3
eant=0
i=1
ie=0
tau=1
T1a.append(0)
e[0]=0
Kp = 0.54
taup = 185
thetap =10
tauc = max(0.1*taup,0.8*thetap)
Kc = 24
tauI =40
tauD =5
for i in range(dur):
 
 
    tm.append(i)
    T1a.append(lab.T1)
    e.append(refT1-T1a[i])
    ie=ie+Kc/tauI*e[i]
    c=T1a[i]-T1a[i-1]
 
    a.append(Kc*(e[i]-tauD*c)+ie)
    if tm[i]==dur/2:
        refT1=refT1+10
    # elif tm[i]==750:
    #     refT1=refT1+5
    ophi = 100
    oplo = 0
 
    if res==0 and( a[i] < oplo or a[i] > ophi):
        ie = ie - Kc/tauI * e[i]
        # clip output con windup incluido
        a[i] = max(oplo,min(ophi,a[i]))
        #time.sleep(2)
        eant=e[i]
        print(tm[i],a[i],T1a[i],e[i])
        time.sleep(1)
    res=input()
    if res==1:#introducimos un convertidor manual automatico
        print("cambio a manual")
        res=res+1
    elif res==2:
        print("escriba nueva t de referencia")
        refT1=input()
        print("escriba una nueva duracion")
        dur=input()
        res==0
 
    lab.Q1(a[i])
 
 
 
lab.close()
tm[0]=0
T1a[0]=T1a[2]
T1a[1]=T1a[2]
tm.append(tm[i])
import matplotlib.pyplot as plt
#matplotlib inline
 
plt.plot(tm,T1a,'r--',label='T1')
# add plot for temperature 2
plt.ylim([0, 85])
plt.legend()
plt.xlabel('t')
plt.ylabel('T1')
plt.savefig('temperatures.png')
plt.show()
lab.close()



Hola, buenas, estoy intenando hacer una transicion modelo manual a automático en python utilizando como variable bandera res, que inicialemente está a 0.El problemas es que se me queda colgado en el modelo automatico(bucle if primero) esperando que le meta un valor pero yo lo que quiero realmente es que funcione de mientras que no le meta un numero concreto.No puedo utilizar break porque sino me saca del bucle for y no se como podria hacerlo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder