Commit 618e9c83 authored by Bernardo Quaresma Dias's avatar Bernardo Quaresma Dias
Browse files

Atualização de versão 2_0 de wellbot

INSTMPA-1344
parent 642e59a4
This diff is collapsed.
......@@ -110,6 +110,14 @@ class{ id = "mod_wellbot", name = "M
{ id = "ACIONAMENTO_REMOTO_MANIPULADA", name = "Acionamento remoto NMPC - Manipulada", type = "INTEGER_POINT", access = "rw",
description = [[Indica a condicao de acionamento remoto da malha da variavel manipulada do controlador preditivo (3 = Malha Fechada, 4 = Malha Aberta.)]],
},
{ id = "ind_variavel_processo", name = "Indicação de Variável de Processo", type = "INTEGER_POINT", access = "rw",
description = [[
Indica a variável de processo usada para o controle do Wellbot.
. 1 - pressão de fundo pdg
. 2 - pressão de fundo tpt
. 3 - pressão à montante
]],
},
{ id = "CHOKE_REFERENCIA", name = "Abertura de referencia da Choke", type = "REAL_POINT", access = "rw",
description = [[Indica abertura de seguranca da choke quando o controlador preditivo perde comunicacao.]],
},
......@@ -499,16 +507,21 @@ class{ id = "aux_wellbot_PID", name = "WellBot: PID", group = "WellBot",
local gs, kp_calc, transiente = self.gain_scheduling, false
if (modo == 0) then -- manual
local rastrear_pv = self:informar_rastrear_pv()
if rastrear_pv then
self:ajustar_sp(pv)
end
if gs then
gs:reset()
end
self.ffw = 0
self.p = 0
self.i = 0
self.d = 0
self.Ubias = self:informar_mv()
else -- automatico ou cascata
if gs then
kp_calc, transiente = gs:calcular(pv)
......@@ -578,6 +591,10 @@ class{ id = "aux_wellbot_PID", name = "WellBot: PID", group = "WellBot",
delta_mv_calc = 0
end
else
if not self.Ubias then
self.Ubias = mv
end
if tipo == 'pos' then
mv_calc = self:calcular_mv()
......@@ -667,9 +684,6 @@ class{ id = "aux_wellbot_PID", name = "WellBot: PID", group = "WellBot",
end
local N = self.N or 10
if not N then
self.N = N
end
local P, I, D = 0, 0, 0
......@@ -686,8 +700,8 @@ class{ id = "aux_wellbot_PID", name = "WellBot: PID", group = "WellBot",
end
if td and td~=0 then
local ad = td/(td+self.N*dt)
local bd = ac*kp*td*self.N/(td+N*dt)
local ad = td/(td+N*dt)
local bd = ac*kp*td*N/(td+N*dt)
local D_t_1 = self.d or 0
D = ad*D_t_1 - bd*self.erro_D
......@@ -737,13 +751,7 @@ class{ id = "aux_wellbot_PID", name = "WellBot: PID", group = "WellBot",
ac = -1
end
if not self.N then
self.N = 10
end
if not self.Ubias then
self.Ubias = self:informar_mv()
end
local N = self.N or 10
local P, I, D = 0, 0, 0
......@@ -1330,6 +1338,15 @@ class{ id = "mod_wellbot_AutoSettling", name = "WellBot: Auto-Settling", group =
- tpt, Utiliza a leitura de pressão do TPT para o diagnostico;
- pmon, Utiliza a leitura de pressão à montante da choke para o diagnostico.]],
},
{ id = "ind_pressao_diagnostico", name = "Indicação de Pressão de Diagnóstico", type = "INTEGER_POINT", access = "rw",
description = [[
Indica a variável de processo usada para o diagnóstico do Auto-Settling.
. 1 - pressão de fundo pdg (padrão)
. 2 - pressão de fundo tpt
. 3 - pressão à montante
. 4 - delta de pressão
]],
},
{ id = "HABILITA_AJUSTE_SP", name = "Habilita ajuste de SP", type = "BOOLEAN_POINT", access = "rw",
description = [[Habilita o ajuste automático do SP do PDG.]],
},
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment