Commit 2be7fdc1 authored by Bernardo Quaresma Dias's avatar Bernardo Quaresma Dias
Browse files

Atualização de versões lançadas de bibliotecas de modelos

INSTMPA-933
parent 069eb782
include 'lib-list-1_2.mpam'
class{ id = "AGREED_REAL_POINT", name = "Ponto Real com Acordo", group = "Pontos Estendidos",
isPoint = true,
bases = { "REAL_POINT" },
simulationValue = 1,
description = [[Classe de ponto real que leva em consideração um lista de tags para retornar seu valor.
Quando disponível, a qualidade de uma leitura OPC deve ser boa (192) para que o valor seja considerado.
]],
attributes = {
{ id = "valores", name = "Valores", type = "REAL_POINT[]",
description = [[Lista de valores que devem ser considerados para definição de valor.]]
},
{ id = "referencia", name = "Referência", type = "REAL",
description = [[Valor que deve ser considerado caso nenhum valor apresente qualidade boa.]]
},
{ id = "considerar", name = "Considerar", type = "INTEGER",
description = [[Configuração de quantidade de elementos que devem ser considerados, caso positivo, ou eliminados, caso negativo, da lista para retornar o valor.
Caso esse valor não seja configurado ou seja zero, todos os elementos serão considerados inicialmente.]]
},
{ id = "criterio", name = "Critério", type = "STRING",
description = [[Configuração de critério de deve ser usado para considerar ou eliminar os valores.
'min' - menores valores devem ser considerados
'max' - maiores valores devem ser considerados
'dif' - maiores diferenças da média devem ser eliminadas
]]
},
{ id = "operacao", name = "Operação", type = "STRING",
description = [[Configuração de operação que de deve ser usada para calcular o valor considerado.
'min' - menor dos valores considerados
'max' - maior dos valores considerados
'avg' - media dos valores considerados
'med' - mediana dos valores considerados
]]
},
},
code = [[
function _CLASS:read()
local vals = {}
local total = 0
local removidos = 0
for i, val in ipairs(self.valores) do
total = total + 1
local v, q, t = val:read()
if q then
if q==192 then
vals[#vals+1] = v
else
removidos = removidos + 1
end
else
vals[#vals+1] = v
end
end
local remover = self.considerar
if remover then
if remover%1 ~= 0 then
remover = 0
elseif remover < 0 then
remover = abs(remover)
else
remover = total - remover
end
else
remover = 0
end
local med = average(vals)
table.sort(vals, self.criterio == 'dif' and (function(a,b) return math.abs(a-med) < math.abs(b-med) end) or nil)
while remover > removidos do
table.remove(vals, (self.criterio == 'max' and 1) or nil)
removidos = removidos + 1
end
local ret
if #vals == 0 then
ret = self.referencia
elseif self.operacao == 'med' then
ret = mediana(vals)
elseif self.operacao == 'min' then
ret = minimo(vals)
elseif self.operacao == 'max' then
ret = maximo(vals)
else
ret = average(vals)
end
return ret, #vals==0 and 0 or 192, os.time()
end
]],
}
This diff is collapsed.
This diff is collapsed.
include('lib-time-1_2.mpam')
include('lib-math-1_0.mpam')
include('lib-equips-1_3.mpam')
include('lib-painel-1_3.mpam')
include('lib-valvula-1_0.mpam')
include('lib-utils-1_0.mpam')
class{ id = "linha_gas", name = "Linha de Gás", group = "Composição de Gases",
bases = {}, description =
[[Classe que agrupa parâmetros e equipamentos associados a uma linha de gás.]],
code =[[
]],
attributes = {
{ id = "vazao", name = "Vazão", type = "REAL_POINT", access = "rw", description =
[[Variável de processo que indica a vazão na linha.]],
},
{ id = "pressao", name = "Pressão", type = "REAL_POINT", access = "r", description =
[[Variável de processo que indica a pressão na linha.]],
},
{ id = "conc_gases", name = "Conc. Gases", type = "REAL_POINT[]", access = "g", description =
[[Indica a concentração de gases na mistura.]],
},
{ id = "controlador_vazao", name = "Controlador de Vazão", type = "controlador", access = "g", description =
[[Controlador de vazão da linha.]],
},
{ id = "valvula_choke", name = "Válvula Choke", type = "valvula", access = "g", description =
[[Válvula Choke da linha.]],
},
},
methods = {
},
}
class{ id = "controle_linha_gas", name = "Controle de Linha de Gás", group = "Composição de Gases",
bases = {}, description =
[[Classe que agrupa parâmetros e equipamentos associados ao Controle Avançado de Linha de Gás.]],
code =[[
]],
attributes = {
{ id = "habilita", name = "Habilita", type = "chave", access = "g", description =
[[Chave que indica que a linha está habilitada para o controle avançado.]],
},
{ id = "prioritario", name = "Prioritário", type = "BOOLEAN_POINT", access = "r", description =
[[Indica, quando verdadeiro, que a linha tem prioridade de atuação.]],
},
{ id = "linha_gas", name = "Linha de Gás", type = "linha_gas", access = "g", description =
[[Linha de gás controlada.]],
},
{ id = "posicao_minima_choke", name = "Posição Mínima Choke", type = "REAL_POINT", access = "r", description =
[[Posição Mínima permitida para a choke da linha de gás.]],
},
{ id = "posicao_maxima_choke", name = "Posição Máxima Choke", type = "REAL_POINT", access = "r", description =
[[Posição Máxima permitida para a choke da linha de gás.]],
},
{ id = "delta_ab_choke", name = "Delta Abertura Choke", type = "REAL", access = "g", description =
[[Variação que deve ser aplicada em uma atuação de Abertura da choke da linha de gás.]],
},
{ id = "delta_fch_choke", name = "Delta Fechamento Choke", type = "REAL", access = "g", description =
[[Variação que deve ser aplicada em uma atuação de fechamento da choke da linha de gás.]],
},
{ id = "timer_atuacao_choke", name = "Timer de Atuação na Choke", type = "timer", access = "g", description =
[[Temporizador para garantir intevalo mínimo entre duas atuações na choke da linha de gás.]],
},
{ id = "setpoint_vazao", name = "Setpoint de Vazão", type = "REAL_POINT", access = "r", description =
[[Vazão desejada na linha de gás.]],
},
{ id = "vazao_minima", name = "Vazão Mínima", type = "REAL_POINT", access = "r", description =
[[Vazão Mínima permitida na linha de gás.]],
},
{ id = "vazao_maxima", name = "Vazão Máxima", type = "REAL_POINT", access = "r", description =
[[Vazão Máxima permitida na linha de gás.]],
},
{ id = "setpoint_pressao", name = "Setpoint de Pressão", type = "REAL_POINT", access = "r", description =
[[Pressão desejada na linha de gás.]],
},
{ id = "pressao_minima", name = "Pressão Mínima", type = "REAL_POINT", access = "r", description =
[[Pressão Mínima permitida na linha de gás.]],
},
{ id = "pressao_maxima", name = "Pressão Máxima", type = "REAL_POINT", access = "r", description =
[[Pressão Máxima permitida na linha de gás.]],
},
},
methods = {
},
}
class{ id = "controle_composicao_gases", name = "Controle de Composição de Gases", group = "Composição de Gases",
bases = {}, description =
[[Classe que agrupa parâmetros e equipamentos associados ao Controle Avançado de Composição de Gases.]],
code =[[
]],
attributes = {
{ id = "controles_linha_gas", name = "Controles de Linha de Gás", type = "controle_linha_gas[]", access = "g", description =
[[Lista de controles de linha de gás que afetam a composição de gases do controle.]],
},
{ id = "conc_gases", name = "Conc. Gases", type = "REAL_POINT[]", access = "g", description =
[[Indica a concentração de gases na mistura.]],
},
{ id = "sps_conc_gases", name = "Conc. Desejadas para Gases", type = "REAL_POINT[]", access = "g", description =
[[Concetrações desejadas para gases na mistura.]],
},
{ id = "tols_conc_gases", name = "Tols. Conc. para Gases", type = "REAL[]", access = "g", description =
[[Tolerâncias para considerar atendidas as concetrações de gases na mistura.]],
},
{ id = "estado", name = "Estado", type = "indicador", access = "g", description =
[[Indica o estado do controle da composição de gases.]],
},
},
methods = {
{ id = "calcular_fluxo_desejado_linha", name = "Calcula Fluxo Desejado para Linha",
description = [[Calcula o fluxo desejada para a linha baseado no SP desejado para a Concetração correspondente.]],
parameters = {
{ name = "Índice Linha", type = "INTEGER"},
{ name = "Índice Concentração de Gás", type = "INTEGER"},
},
results = {
{ name = "Fluxo Desejado", type = "REAL"}
},
code = [===[ function(self, l, c)
local sp_conc = self.sps_conc_gases[c]:read()
local sum_vazao_conc = 0
local vazao_atual
local dif_conc
for il, ctrl_linha in ipairs(self.controles_linha_gas) do
local linha_gas = ctrl_linha.linha_gas
local conc = linha_gas.conc_gases[c]:read()
local vazao = linha_gas.vazao:read()
if il ~= l then
sum_vazao_conc = sum_vazao_conc + vazao*(conc - sp_conc)
else
dif_conc = sp_conc - conc
vazao_atual = vazao
end
end
if math.abs(dif_conc) >= 1 and math.abs(sum_vazao_conc) >= 1 then
return sum_vazao_conc/dif_conc
else
return vazao_atual
end
end ]===],
},
},
}
This diff is collapsed.
This diff is collapsed.
include('lib-time-1_2.mpam')
include('lib-math-1_0.mpam')
include('lib-equips-1_3.mpam')
include('lib-painel-1_3.mpam')
include('lib-valvula-1_0.mpam')
include('lib-utils-1_0.mpam')
class{ id = "controle_ventgas", name = "Controle de Vent Gás", group = "Vent Gás",
bases = {}, description =
[[Classe que agrupa parâmetros e equipamentos associados ao Controle Avançado de Vent Gás.]],
code =[[
]],
attributes = {
{ id = "alarme", name = "Alarme", type = "alarme_mensagem", access = "g", description =
[[Instância que deve ser usada para indicar alarmes do controle.]],
},
{ id = "estado", name = "Estado", type = "indicador", access = "g", description =
[[Instância que deve ser usada para indicar o estado do controle.]],
},
{ id = "inibe", name = "Inibe", type = "chave", access = "g", description =
[[Chave que, quando ligada, indica que o controle não deve realizar abertura ou fechamento das válvulas de vent.]],
},
{ id = "alarme_pressao_alta", name = "Alarme de Pressão Alta", type = "alarme_mensagem", access = "g", description =
[[Indica, quando verdadeiro, que o MPA identificou pressão alta sem uma válvula aberta.]],
},
{ id = "alarme_conc_gas_alta", name = "Alarme Conc. Gás Alta", type = "alarme_mensagem", access = "g", description =
[[Indica, quando verdadeiro, que o MPA identificou concetração alta de gás com uma válvula aberta.]],
},
{ id = "hab_valv_vent_boreste", name = "Hab. Válv. Vent Boreste", type = "chave", access = "g", description =
[[Chave que, quando ligada, indica que a Válvula Vent Boreste pode ser usada
pelo controle para alívio de pressão do tanque da unidade.]],
},
{ id = "hab_valv_vent_bombordo", name = "Hab. Válv. Vent Bombordo", type = "chave", access = "g", description =
[[Chave que, quando ligada, indica que a Válvula Vent bombordo pode ser usada
pelo controle para alívio de pressão do tanque da unidade.]],
},
{ id = "tanque", name = "Tanque", type = "tanque", access = "g", description =
[[Tanque cuja pressão será monitorada pelo controle.]],
},
{ id = "direcao_vento", name = "Direção do Vento", type = "REAL_POINT", access = "r", description =
[[Indica o valor da direção do vento.]],
},
{ id = "velocidade_vento", name = "Velocidade do Vento", type = "REAL_POINT", access = "r", description =
[[Indica o valor da velocidade do vento.]],
},
{ id = "valv_vent_boreste", name = "Válv. Vent Boreste", type = "valvula_on_off", access = "g", description =
[[Válvula Vent boreste de alívio de pressão do tanque da unidade.]],
},
{ id = "conc_gas_boreste", name = "Conc. de Gás a Boreste", type = "REAL_POINT", access = "r", description =
[[Indica o valor da concentração de gás a Boreste.]],
},
{ id = "valv_vent_bombordo", name = "Válv. Vent Bombordo", type = "valvula_on_off", access = "g", description =
[[Válvula Vent bombordo de alívio de pressão do tanque da unidade.]],
},
{ id = "conc_gas_bombordo", name = "Conc. de Gás a Bombordo", type = "REAL_POINT", access = "r", description =
[[Indica o valor da concentração de gás a Bombordo.]],
},
{ id = "p_min_tanque", name = "P. Mín. Tanque", type = "REAL", access = "g", description =
[[Configuração de pressão mínima permitida no tanque.]],
},
{ id = "p_max_tanque", name = "P. Máx. Tanque", type = "REAL", access = "g", description =
[[Configuração de pressão máxima permitida no tanque.]],
},
{ id = "tol_p_tanque", name = "Tol. P. Tanque", type = "REAL", access = "g", description =
[[Configuração de tolerância para pressão no tanque para considerar que pressão caiu.]],
},
{ id = "delta_alivio_pressao", name = "Delta de Alívio de Pressão", type = "REAL", access = "g", description =
[[Configuração de delta de pressão que deve ser aplicado em um alívio de vent.]],
},
{ id = "timer_alivio", name = "Timer Alívio", type = "timer", access = "g", description =
[[Temporizador de alívio de vent.]],
},
{ id = "curva_vento_t_alivio", name = "Curva Vento X T. Alívio", type = "curva_interpolada", access = "g", description =
[[Configuração de delta de pressão que deve ser aplicado em um alívio de vent.]],
},
{ id = "conc_max_gas", name = "Conc. Máx. de Gás", type = "REAL", access = "g", description =
[[Configuração de concetração máxima de gás permitida para o controle.]],
},
{ id = "timer_disp", name = "Timer Disp.", type = "timer", access = "g", description =
[[Temporizador de dispersão de gases.]],
},
{ id = "timeout_aberta", name = "Timeout Aberta", type = "timer", access = "g", description =
[[Temporizador de timeout de válvula aberta para alívio de pressão.]],
},
},
methods = {
{ id = "validar_sensores_fundo", name = "Validar Sensores de Fundo",
description = [[Itera sobre lista de sensores de fundo e verifica que todos estão ok.]],
parameters = {
},
results = {
{ name = "Ok", type = "BOOLEAN"}
},
code = [===[ function(self)
for s, sensor in ipairs(self.sensores_fundo) do
if not sensor:avaliar() then
return false
end
end
return true
end ]===],
},
},
}
This diff is collapsed.
include('lib-time-1_2.mpam')
include('lib-math-1_0.mpam')
include('lib-equips-1_3.mpam')
include('lib-painel-1_3.mpam')
include('lib-valvula-1_0.mpam')
include('lib-utils-1_0.mpam')
include('lib-condicao-1_0.mpam')
class{ id = "controle_ventgas", name = "Controle de Vent Gás", group = "Vent Gás",
bases = {}, description =
[[Classe que agrupa parâmetros e equipamentos associados ao Controle Avançado de Vent Gás.]],
code =[[
]],
attributes = {
{ id = "alarme", name = "Alarme", type = "alarme_mensagem", access = "g", description =
[[Instância que deve ser usada para indicar alarmes do controle.]],
},
{ id = "estado", name = "Estado", type = "indicador", access = "g", description =
[[Instância que deve ser usada para indicar o estado do controle.]],
},
{ id = "inibe", name = "Inibe", type = "chave", access = "g", description =
[[Chave que, quando ligada, indica que o controle não deve realizar abertura ou fechamento das válvulas de vent.]],
},
{ id = "alarme_pressao_alta", name = "Alarme de Pressão Alta", type = "alarme_mensagem", access = "g", description =
[[Indica, quando verdadeiro, que o MPA identificou pressão alta sem uma válvula aberta.]],
},
{ id = "alarme_conc_gas_alta", name = "Alarme Conc. Gás Alta", type = "alarme_mensagem", access = "g", description =
[[Indica, quando verdadeiro, que o MPA identificou concetração alta de gás com uma válvula aberta.]],
},
{ id = "hab_valv_vent_boreste", name = "Hab. Válv. Vent Boreste", type = "chave", access = "g", description =
[[Chave que, quando ligada, indica que a Válvula Vent Boreste pode ser usada
pelo controle para alívio de pressão do tanque da unidade.]],
},
{ id = "hab_valv_vent_bombordo", name = "Hab. Válv. Vent Bombordo", type = "chave", access = "g", description =
[[Chave que, quando ligada, indica que a Válvula Vent bombordo pode ser usada
pelo controle para alívio de pressão do tanque da unidade.]],
},
{ id = "tanque", name = "Tanque", type = "tanque", access = "g", description =
[[Tanque cuja pressão será monitorada pelo controle.]],
},
{ id = "direcao_vento", name = "Direção do Vento", type = "REAL_POINT", access = "r", description =
[[Indica o valor da direção do vento.]],
},
{ id = "velocidade_vento", name = "Velocidade do Vento", type = "REAL_POINT", access = "r", description =
[[Indica o valor da velocidade do vento.]],
},
{ id = "valv_vent_boreste", name = "Válv. Vent Boreste", type = "valvula_on_off", access = "g", description =
[[Válvula Vent boreste de alívio de pressão do tanque da unidade.]],
},
{ id = "conc_gas_boreste", name = "Conc. de Gás a Boreste", type = "REAL_POINT", access = "r", description =
[[Indica o valor da concentração de gás a Boreste.]],
},
{ id = "valv_vent_bombordo", name = "Válv. Vent Bombordo", type = "valvula_on_off", access = "g", description =
[[Válvula Vent bombordo de alívio de pressão do tanque da unidade.]],
},
{ id = "conc_gas_bombordo", name = "Conc. de Gás a Bombordo", type = "REAL_POINT", access = "r", description =
[[Indica o valor da concentração de gás a Bombordo.]],
},
{ id = "p_min_tanque", name = "P. Mín. Tanque", type = "REAL", access = "g", description =
[[Configuração de pressão mínima permitida no tanque.]],
},
{ id = "p_max_tanque", name = "P. Máx. Tanque", type = "REAL", access = "g", description =
[[Configuração de pressão máxima permitida no tanque.]],
},
{ id = "tol_p_tanque", name = "Tol. P. Tanque", type = "REAL", access = "g", description =
[[Configuração de tolerância para pressão no tanque para considerar que pressão caiu.]],
},
{ id = "delta_acumulo_pressao", name = "Delta de Acúmulo de Pressão", type = "REAL", access = "g", description =
[[Configuração de delta de pressão que deve acumulado em um fechamento de vent.]],
},
{ id = "timer_alivio", name = "Timer Alívio", type = "timer", access = "g", description =
[[Temporizador de alívio de vent.]],
},
{ id = "curva_vento_t_alivio", name = "Curva Vento X T. Alívio", type = "curva_interpolada", access = "g", description =
[[Configuração de delta de pressão que deve ser aplicado em um alívio de vent.]],
},
{ id = "condicao_conc_gas_alta", name = "Condição de Conc. de Gás Alta", type = "condicao", access = "g", description =
[[Condicão que indica, quando ativa, que a concentração de gás está alta.]],
},
{ id = "timer_disp", name = "Timer Disp.", type = "timer", access = "g", description =
[[Temporizador de dispersão de gases.]],
},
{ id = "timeout_aberta", name = "Timeout Aberta", type = "timer", access = "g", description =
[[Temporizador de timeout de válvula aberta para alívio de pressão.]],
},
},
methods = {
{ id = "validar_sensores_fundo", name = "Validar Sensores de Fundo",
description = [[Itera sobre lista de sensores de fundo e verifica que todos estão ok.]],
parameters = {
},
results = {
{ name = "Ok", type = "BOOLEAN"}
},
code = [===[ function(self)
for s, sensor in ipairs(self.sensores_fundo) do
if not sensor:avaliar() then
return false
end
end
return true
end ]===],
},
},
}
Supports Markdown
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