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


0