Commit 5470740e authored by Bernardo Quaresma Dias's avatar Bernardo Quaresma Dias
Browse files

Inclusão de revisões para implantação de filtro_reinj em P-51

parent f330618a
class{ id = "ZERO_ONE_POINT", name = "Ponto Lgico Zero/Um", group = "Pontos Lgicos",
isPoint = true,
bases = { "BOOLEAN_POINT" },
simulationValue = 0,
description = "Classe de ponto boleano que tem como valor verdadeiro 1 e como valor falso 0.",
code = [[
function _CLASS:read()
local result, errmsg = self.bridge:get(self.id)
if result == nil then
error("Erro na leitura do ponto "..tostring(self.id)..": ".. tostring(errmsg))
end
return result == 1
end
function _CLASS:write(value)
local result, errmsg = self.bridge:set(self.id, value and 1 or 0)
if result == nil then
error("Erro na escrita do ponto "..tostring(self.id)..": "..tostring(errmsg))
end
end
]],
}
class{ id = "CUSTOM_BOOLEAN_POINT", name = "Ponto Lgico Customizado", group = "Pontos Lgicos",
isPoint = true,
bases = { "BOOLEAN_POINT" },
simulationValue = 0,
description = "Classe de ponto boleano em que o usurio define os valores lgicos e tipo.",
code = [[
function _CLASS:convert(value)
local valor
if value then
valor = self.valor_ativo
else
valor = self.valor_inativo
end
local converted
if self.tipo_valor == "boolean" then
converted = tostring(valor) == "true"
elseif self.tipo_valor == "number" then
converted = tonumber(valor)
else
converted = valor
end
return converted
end
function _CLASS:read()
local result, errmsg = self.bridge:get(self.id)
if result == nil then
error("Erro na leitura do ponto "..tostring(self.id)..": "..tostring(errmsg))
end
return tostring(result) == tostring(self.valor_ativo)
end
function _CLASS:write(value)
-- converter valor
local converted = self:convert(value)
local result, errmsg = self.bridge:set(self.id, converted)
if result == nil then
error("Erro na escrita do ponto "..tostring(self.id)..": "..tostring(errmsg))
end
end
]],
attributes = {
{ id = "valor_ativo", name = "Valor Ativo", type = "STRING", access = "",
description = [[Valor que indica que o ponto est ativo.]],
},
{ id = "valor_inativo", name = "Valor Inativo", type = "STRING", access = "",
description = [[Valor que indica que o ponto est inativo.]],
},
{ id = "tipo_valor", name = "Tipo Valor", type = "STRING", access = "",
description = [[Indica o tipo do valor para converso na escrita.]],
},
},
}
class{ id = "ONE_TWO_POINT", name = "Ponto Lgico Um/Dois", group = "Pontos Lgicos",
isPoint = true,
bases = { "ZERO_ONE_POINT" },
simulationValue = 2,
description = "Classe de ponto boleano que tem como valor verdadeiro 1 e como valor falso 2.",
code = [[
function _CLASS:read()
local result, errmsg = self.bridge:get(self.id)
if result == nil then
error("Erro na leitura do ponto "..tostring(self.id)..": "..tostring(errmsg))
end
return tonumber(result) == 1
end
function _CLASS:write(value)
local result, errmsg = self.bridge:set(self.id, value and 1 or 2)
if result == nil then
error("Erro na escrita do ponto "..tostring(self.id)..": "..tostring(errmsg))
end
end
]],
}
class{ id = "ONOFF_POINT", name = "Ponto Lgico On/Off", group = "Pontos Lgicos",
isPoint = true,
bases = { "BOOLEAN_POINT" },
simulationValue = "OFF",
description = "Classe de ponto boleano que tem como valor verdadeiro o texto 'ON' e como valor falso o texto 'OFF'.",
code = [[
function _CLASS:read()
local ret, err = self.bridge:get(self.id)
if not ret
then error("Erro na leitura do ponto "..tostring(self.id)..": "..tostring(err))
else return ret == "ON"
end
end
function _CLASS:write(value)
local ret, err = self.bridge:set(self.id, value and "ON" or "OFF")
if not ret
then error("Erro na escrita do ponto "..tostring(self.id)..": "..tostring(err))
else return ret
end
end
]],
}
class{ id = "SET_RESET_BOOLEAN_POINT", name = "Ponto Lgico Set/Reset", group = "Pontos Lgicos",
isPoint = true,
bases = {"BOOLEAN_POINT"},
description = [[Classe de ponto que modela variveis de processo lgicas que possuem trs tags associados:
- Estado de Ativao;
- Comando Ativao;
- Comando Desativao.]],
code =[[
function _CLASS:read()
return self.estado:read()
end
function _CLASS:write(value)
local status = self.estado:read()
if (value == true) and (status == false) then
if self.comando_desativar then
self.comando_desativar:write(false)
end
return self.comando_ativar:write(true)
elseif (value == false) and (status == true) then
if self.comando_ativar then
self.comando_ativar:write(false)
end
return self.comando_desativar:write(true)
end
end
]],
attributes = {
{
id = "estado",
name = "Estado",
type = "BOOLEAN_POINT",
access = "r",
description = [[Indica o estado atual da varivel de processo.]],
},
{
id = "comando_ativar",
name = "Comando Ativar",
type = "BOOLEAN_POINT",
access = "w",
description = [[Envia, quando verdadeiro, um comando de ativao para varivel de processo.]],
},
{
id = "comando_desativar",
name = "Comando Desativar",
type = "BOOLEAN_POINT",
access = "w",
description = [[Envia, quando verdadeiro, um comando de desativao para varivel de processo.]],
},
},
methods = {
},
}
class{ id = "TRUE_FALSE_REAL_POINT", name = "Ponto Real Verdadeiro/Falso", group = "Pontos Lgicos",
isPoint = true,
bases = { "REAL_POINT" },
simulationValue = 0,
description = "Classe de ponto real que valor 1 verdadeiro e como valor 0 falso.",
code = [===[
function _CLASS:read()
local result, errmsg = self.bridge:get(self.id) --[[DEBUG]] print(self, result, errmsg, type(result) )
if result == nil then
error("Erro na leitura do ponto "..tostring(self.id)..": ".. tostring(errmsg))
end
if tostring(result) == 'false' then
return 0
else
return 1
end
end
function _CLASS:write(value)
local val
if value == false then
val = 0
else
val = 1
end
local result, errmsg = self.bridge:set(self.id, val)
if result == nil then
error("Erro na escrita do ponto "..tostring(self.id)..": "..tostring(errmsg))
end
return true
end
]===],
}
......@@ -4,7 +4,7 @@
-- Arquivo gerado pelo programa MPA
-- Verso: 6.10
-- Arquivo: lib-filtro_reinj.mpad
-- Data: 05/10/2022 10:21:52
-- Data: 21/11/2022 17:14:52
-- =============================================================================
MPA_5_0 = true
......@@ -4235,7 +4235,7 @@ Diagrams = {
beforemsg = nil,
aftermsg = nil,
expressions = {
"{agent;'filtro_reinj-log';dp;sp;xv;sdv;delta_dp;t_operando}",
"{agent;'filtro_reinj-log';sdv;xv;sp;dp;target;margem;dt_retrolav_min;delta_dp;status;dp_filtro;t_operando;delta_sp}",
"';'",
},
variables = {
......@@ -6661,7 +6661,7 @@ Diagrams = {
beforemsg = nil,
aftermsg = nil,
expressions = {
"dp",
"dp_min + 0.2*(dp - dp_min)",
},
variables = {
"dp_min",
......
......@@ -4,7 +4,7 @@
-- Arquivo gerado pelo programa MPA
-- Verso: 6.10
-- Arquivo: lib-filtro_reinj.mpae
-- Data: 05/10/2022 10:31:24
-- Data: 21/11/2022 17:13:13
-- =============================================================================
MPA_3_3 = true
EXPANDED = {
......@@ -103,7 +103,7 @@ PLANT = {
registro = {
["registro-FiltroReinj"] = {
cabecalhos = {
"agent;filtro_reinj-step;dp;sp;xv;dp_min;margem_din;status;dp_filtro;delta_sp",
"agent;filtro_reinj-log;sdv;xv;sp;dp;target;margem;dt_retrolav_min;delta_dp;status;dp_filtro;t_operando;delta_sp",
"agent;filtro_reinj-act;sp_retrolav;sp_retrolav_min;sp_retrolav_max;delta_sp;delta;sp_retrolav_alpha;sp_retrolav_calc;sp_retrolav_lim;act",
},
prefixo = "log-filtro_reinj",
......
......@@ -5,6 +5,10 @@ local function setPlant(plant)
PLANT = plant
end
--------------------------------------------------------------------------------
-- SET_RESET_BOOLEAN_POINT
--------------------------------------------------------------------------------
local function createSetResetBooleanPointSim(instid, scada)
local instance = PLANT["SET_RESET_BOOLEAN_POINT"][instid]
......@@ -58,6 +62,23 @@ package.loaded["pannels.SET_RESET_BOOLEAN_POINT"] = {
createSimFunction = createSetResetBooleanPointSim,
}
--------------------------------------------------------------------------------
-- TRUE_FALSE_REAL_POINT
--------------------------------------------------------------------------------
local function createTrueFalseRealPointPannel(instid, classid) --[[DEBUG]] assert(instid ~= nil, "got nil instid") print("[DEBUG.truefalsereal] Building...", instid)
return iup.hbox{ alignment = 'ACENTER';
iup.label{title = instid},
ihm.Boolean(instid)
}
end
package.loaded["pannels.TRUE_FALSE_REAL_POINT"] = {
createInstancePannel = createTrueFalseRealPointPannel,
}
--------------------------------------------------------------------------------
return {
setPlant = setPlant,
}
\ No newline at end of file
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