private static void Executa() { do { Thread.Sleep(1000); /////////////////////////////////////// //AQUECEDOR var Dados_A = Simulation.Input.Termostato_A(); var Dados_D = Simulation.Input.Termostato_D(); var Dados_E = Simulation.Input.Termostato_E(); var Dados_G = Simulation.Input.Termostato_G(); bool saida_heater_A = Decisao.ResultadoAquecedorSimplificado(Dados_A.TemperaturaReal, Dados_A.SetPointReal); bool saida_heater_D = Decisao.ResultadoAquecedorSimplificado(Dados_D.TemperaturaReal, Dados_D.SetPointReal); bool saida_heater_E = Decisao.ResultadoAquecedorSimplificado(Dados_E.TemperaturaReal, Dados_E.SetPointReal); bool saida_heater_G = Decisao.ResultadoAquecedorSimplificado(Dados_G.TemperaturaReal, Dados_G.SetPointReal); if (saida_heater_A) { Simulation.Output.LigarAquecedor_A(); } else { Simulation.Output.DesligarAquecedor_A(); } ///////////////// if (saida_heater_D) { Simulation.Output.LigarAquecedor_D(); } else { Simulation.Output.DesligarAquecedor_D(); } ///////////////// if (saida_heater_E) { Simulation.Output.LigarAquecedor_E(); } else { Simulation.Output.DesligarAquecedor_E(); } ///////////////// if (saida_heater_G) { Simulation.Output.LigarAquecedor_G(); } else { Simulation.Output.DesligarAquecedor_G(); } }while (true); }
/// <summary> /// Carrega funções na visão adicionando mapeamento valor da variável global para variável "interna" da função /// </summary> /// <param name="visao"></param> /// <param name="variaveis"></param> /// <param name="funcoes"></param> public static void CarregarFuncoes(Visao visao, List<Variavel> variaveis, List<Funcao> funcoes) { visao.Funcoes = new List<KeyValuePair<Funcao, int>>(); int i = 0; // Adiciona primeiro o periodo de carga pois o resultado será usado nas outras funções (variável PeriodoCarga_SE_CO atualizada no Main.Executar() Funcao funcaoPeriodoCarga = funcoes.Where(f => f.Nome == "Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO").FirstOrDefault(); // xHora As Date, xDiaSemana As String, xTipo As String, Hverao funcaoPeriodoCarga.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_SE_CO".ToLower()).FirstOrDefault(); KeyValuePair<Funcao, int> funcKVP = new KeyValuePair<Funcao, int>(funcaoPeriodoCarga, i); visao.Funcoes.Add(funcKVP); foreach (Funcao funcao in funcoes) { Decisao decisao = new Decisao(); List<Decisao> decisoes = new List<Decisao>(); KeyValuePair<Funcao, int> func = new KeyValuePair<Funcao, int>(); switch (funcao.Nome) { case "Modulo_Interligacao_SSE-LimiteFBAIN": //-> dependencia pro xpercarga = PeriodoCarga_SE_CO(...): executado no SUL (melhoria: não executar novamente) decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xNMaqIpu = vglobal_Mq_60Hz; xGerIPU = vglobal_GIPU_60Hz; xpercarga = PeriodoCarga_SE_CO;"; // xangra = vglobal_GIPU_60Hz"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-limiteFINBA": // dependência da VisaoSUL: xUGarauc, x_refFRS_Ger, xFRS_GerUSs, xJLP, xJLM, xJLG, xJLGG decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xrsul = vglobal_RSUL; xcargasul = vglobal_CARGA_SUL;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-LimiteFSE": // xpercarga <- PeriodoCarga_SE_CO decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xMaqIpu = vglobal_Mq_60Hz; xGerIPU = vglobal_GIPU_60Hz; xpercarga = PeriodoCarga_SE_CO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-Limite_RSE": // xpercarga <- PeriodoCarga_SE_CO // xangra decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xelo = vglobal_POT_ELO_CC; xMaq = vglobal_Mq_60Hz; xGerIPU = vglobal_GIPU_60Hz; xrsul = vglobal_RSUL; xpercarga = PeriodoCarga_SE_CO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-LIMITE_RSUL": // xpercarga <- PeriodoCarga_SE_CO // VisaoSUL: xUGarauc, xugG1, xugG2, xugG3, xugG4 decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xrsul = vglobal_RSUL; xcargasul = vglobal_CARGA_SUL; xelo = vglobal_POT_ELO_CC; xMaq = vglobal_Mq_60Hz; xGerIPU = vglobal_GIPU_60Hz; xpercarga = PeriodoCarga_SE_CO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-LIMITE_FSUL": // xpercarga <- PeriodoCarga_SE_CO /* decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = " "; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); */ funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-Mqs_CORTE_FIPU_FSE": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = " xFIV = vglobal_FIV; xFSE = vglobal_FSE_Programado; xMqs = vglobal_Mq_60Hz;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-LimGIPU": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xmaq60 = vglobal_Mq_60Hz;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-GIPU_minimo": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xrsul = vglobal_RSUL; xcargasul = vglobal_CARGA_SUL;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-refFRS_Ger": // VisaoSUL: xUGarauc decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xcargasul = vglobal_CARGA_SUL;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; default: break; } } }
static void Main() { Decisao decidir = new Decisao(); decidir.Decide(); }
/// <summary> /// Salva a decisão da portaria em documento NF-e. /// </summary> public async Task <RootDocumento> DecisaoPortariaNFe(string chave, Decisao decisao, string observacao = null) { return(await DecisaoPortariaNFe(chave, CodigoDecisao(decisao), observacao)); }
/// <summary> /// Carrega funções na visão adicionando mapeamento valor da variável global para variável "interna" da função /// </summary> /// <param name="visao"></param> /// <param name="variaveis"></param> /// <param name="funcoes"></param> public static void CarregarFuncoes(Visao visao, List<Variavel> variaveis, List<Funcao> funcoes) { visao.Funcoes = new List<KeyValuePair<Funcao, int>>(); int i = 0; /* // Adiciona primeiro o periodo de carga pois o resultado será usado nas outras funções (variável PeriodoCarga_SE_CO atualizada no Main.Executar() Funcao funcaoPeriodoCarga = funcoes.Where(f => f.Nome == "Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO").FirstOrDefault(); // xHora As Date, xDiaSemana As String, xTipo As String, Hverao funcaoPeriodoCarga.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_SE_CO".ToLower()).FirstOrDefault(); KeyValuePair<Funcao, int> funcKVP = new KeyValuePair<Funcao, int>(funcaoPeriodoCarga, i); visao.Funcoes.Add(funcKVP); */ foreach (Funcao funcao in funcoes) { Decisao decisao = new Decisao(); List<Decisao> decisoes = new List<Decisao>(); KeyValuePair<Funcao, int> func = new KeyValuePair<Funcao, int>(); switch (funcao.Nome) { case "Modulo_Acre_Rondonia_MT-limite_FMT": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "ger_Itq_PPdr = vglobal_GeracaoItqPPdr;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_Sup_FACRO": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xBtB = vglobal_FBtB; xTR_prov = vglobal_FTRpr; t_nort = vglobal_GerTNorteII; xPOLO1 = vglobal_POLO1"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_Inf_FACRO": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xFACRO = vglobal_FACRO; xMaqSA = vglobal_UHESantoAntonioNumUGs; xMaqJir = vglobal_UHJirauNumUgs; xilha1 = vglobal_UHESantoAntonioGeracaoIlha1; xilha2 = vglobal_UHESantoAntonioGeracaoIlha1; xmesq = vglobal_UHESantoAntonioGeracaoMEsqrd; xJirau = vglobal_UHJirauGer; xTR_prov = vglobal_FTRpr; xBtB = vglobal_FBtB; xPOLO1 = vglobal_POLO1"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_Sam_Ariq": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xTN2 = vglobal_GerTNorteII;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_BtB": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xPOLO1 = vglobal_POLO1; xMaqSA = vglobal_UHESantoAntonioNumUGs; xMaqJir = vglobal_UHJirauNumUgs; xTR_prov = vglobal_FTRpr; Facro = vglobal_FACRO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_TRprov": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xFACRO = vglobal_FACRO; xPOLO1 = vglobal_POLO1; xMaqSA = vglobal_UHESantoAntonioNumUGs; xMaqJir = vglobal_UHJirauNumUgs; xBtB = vglobal_FBtB;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_POLO": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xPolo = vglobal_POLO1; BtB = vglobal_FBtB; xMaqSA = vglobal_UHESantoAntonioNumUGs; xMaqJir = vglobal_UHJirauNumUgs;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_RACRO-Limite_SA_JI": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xPolo = vglobal_POLO1; xTR_prov = vglobal_FTRpr; xBtB = vglobal_FBtB; xGerSA = vglobal_UHESantoAntonioGerTotal; xGerJir = vglobal_UHJirauGer;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; default: break; } } }
/// <summary> /// Carrega funções na visão adicionando mapeamento valor da variável global para variável "interna" da função /// </summary> /// <param name="visao"></param> /// <param name="variaveis"></param> /// <param name="funcoes"></param> public static void CarregarFuncoes(Visao visao, List<Variavel> variaveis, List<Funcao> funcoes) { visao.Funcoes = new List<KeyValuePair<Funcao, int>>(); int i = 0; foreach(Funcao funcao in funcoes) { Decisao decisao = new Decisao(); List<Decisao> decisoes = new List<Decisao>(); KeyValuePair<Funcao, int> func = new KeyValuePair<Funcao, int>(); switch(funcao.Nome) { case "Modulo_Interligacao_SSE-UGminARAUC": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xcargasul = vglobal_CARGA_do_SUL; xrsul = vglobal_RSUL"; decisoes.Add(decisao); foreach(Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-GERminARAUC": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xcargasul = vglobal_CARGA_do_SUL; xrsul = vglobal_RSUL"; decisoes.Add(decisao); foreach(Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_GARABI_ITASSA1-LimiteSUPGARABI1": funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_GARABI_ITASSA1-LimiteINFGARABI1": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xGarabi1 = vglobal_Grbi_I; xGarabi2 = vglobal_Grbi_II;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_GARABI_ITASSA1-LimiteSUPGARABI2": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xGarabi1 = vglobal_Grbi_I; xGarabi2 = vglobal_Grbi_II;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_GARABI_ITASSA1-LimiteINFGARABI2": funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO": // xHora As Date, xDiaSemana As String, xTipo As String, Hverao funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_SE_CO".ToLower()).FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Interligacao_SSE-refFRS_Ger": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xcargasul = vglobal_CARGA_do_SUL; xUGarauc = vglobal_Gera_Araucara"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; default: break; } } }
/// <summary> /// Carrega funções na visão adicionando mapeamento valor da variável global para variável "interna" da função /// </summary> /// <param name="visao"></param> /// <param name="variaveis"></param> /// <param name="funcoes"></param> public static void CarregarFuncoes(Visao visao, List<Variavel> variaveis, List<Funcao> funcoes) { visao.Funcoes = new List<KeyValuePair<Funcao, int>>(); int i = 0; // Adiciona primeiro o periodo de carga pois o resultado será usado nas outras funções (variável PeriodoCarga_SE_CO atualizada no Main.Executar() Funcao funcaoPeriodoCarga = funcoes.Where(f => f.Nome == "Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO").FirstOrDefault(); // xHora As Date, xDiaSemana As String, xTipo As String, Hverao funcaoPeriodoCarga.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_SE_CO".ToLower()).FirstOrDefault(); KeyValuePair<Funcao, int> funcKVP = new KeyValuePair<Funcao, int>(funcaoPeriodoCarga, i); visao.Funcoes.Add(funcKVP); foreach (Funcao funcao in funcoes) { Decisao decisao = new Decisao(); List<Decisao> decisoes = new List<Decisao>(); KeyValuePair<Funcao, int> func = new KeyValuePair<Funcao, int>(); switch (funcao.Nome) { case "Modulo_Limites_MOPs-Limite_GIPU_n3": /* decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xlogica24"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); */ funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-LIM_FSE_n3": decisao.Inequacao = string.Empty; // xcargaSIN, xelocc, , xlimite_fse decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_SE_CO; xhbo = vglobal_HBO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-LIM_RSE_n3": decisao.Inequacao = string.Empty; // xcargaSIN, xelocc, , xlimite_rse decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_SE_CO; xhbo = vglobal_HBO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-LIM_FNS_n3": decisao.Inequacao = string.Empty; // xcargaSIN, xcbrava, xmq_sm = N_NE_SE!L6+N_NE_SE!O6 decisao.BlocoDeAcao = "xcbrava = vglobal_MqsCanaBrava; xhbo = vglobal_HBO; xpercarga = PeriodoCarga_SE_CO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-LIM_FSM_n3": decisao.Inequacao = string.Empty; // xcargaSIN, , xmq_sm, decisao.BlocoDeAcao = "xcbrava = vglobal_MqsCanaBrava; xhbo = vglobal_HBO; xpercarga = PeriodoCarga_SE_CO;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-Limite_RSUL_n3": // xcarga_SIN funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; default: break; } } }
/// <summary> /// Carrega funções na visão adicionando mapeamento valor da variável global para variável "interna" da função /// </summary> /// <param name="visao"></param> /// <param name="variaveis"></param> /// <param name="funcoes"></param> public static void CarregarFuncoes(Visao visao, List<Variavel> variaveis, List<Funcao> funcoes) { visao.Funcoes = new List<KeyValuePair<Funcao, int>>(); int i = 0; // Adiciona o periodo de carga N/NE pois o resultado será usado nas outras funções Funcao funcaoPeriodoCargaNNE = funcoes.Where(f => f.Nome == "Modulo_Horarios_RNE_2009-PeriodoCarga_N_NE").FirstOrDefault(); // xHora As Date, xDiaSemana As String, xTipo As String, Hverao funcaoPeriodoCargaNNE.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_N_NE".ToLower()).FirstOrDefault(); KeyValuePair<Funcao, int> funcKVPNNE = new KeyValuePair<Funcao, int>(funcaoPeriodoCargaNNE, i); visao.Funcoes.Add(funcKVPNNE); // Adiciona o periodo de carga SE/CO pois o resultado será usado nas outras funções Funcao funcaoPeriodoCarga = funcoes.Where(f => f.Nome == "Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO").FirstOrDefault(); // xHora As Date, xDiaSemana As String, xTipo As String, Hverao funcaoPeriodoCarga.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_SE_CO".ToLower()).FirstOrDefault(); i++; KeyValuePair<Funcao, int> funcKVP = new KeyValuePair<Funcao, int>(funcaoPeriodoCarga, i); visao.Funcoes.Add(funcKVP); // Adiciona função pois o resultado será usado nas outras funções Funcao funcaoXingoMinMaqs = funcoes.Where(f => f.Nome == "Modulo_N_NE_SE_semECE_RNE_2009-min_Xingo").FirstOrDefault(); Decisao decisaoXingo = new Decisao(); List<Decisao> decisoesXingo = new List<Decisao>(); decisaoXingo.Inequacao = string.Empty; decisaoXingo.BlocoDeAcao = "xRNE = vglobal_RNE; xger_xingo = vglobal_Xingo_Gera;"; decisoesXingo.Add(decisaoXingo); foreach (Decisao dec in funcaoXingoMinMaqs.ListaDecisoes.Decisoes) { decisoesXingo.Add(dec); } funcaoXingoMinMaqs.ListaDecisoes.Decisoes = decisoesXingo.ToArray(); funcaoXingoMinMaqs.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "maqs".ToLower()).FirstOrDefault(); i++; KeyValuePair<Funcao, int> funcKVPXingo = new KeyValuePair<Funcao, int>(funcaoXingoMinMaqs, i); visao.Funcoes.Add(funcKVPXingo); foreach (Funcao funcao in funcoes) { Decisao decisao = new Decisao(); List<Decisao> decisoes = new List<Decisao>(); KeyValuePair<Funcao, int> func = new KeyValuePair<Funcao, int>(); switch (funcao.Nome) { case "Modulo_N_NE_SE_comECE_RNE_2009-ECE_ON_OFF": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xFNS = vglobal_FNS;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "estado_ece").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_N_NE_apoio-LimiteEXPN_N_EXP": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_SE_CO; xRNE = vglobal_RNE; xEXPN = vglobal_EXP_N; xFSENE = vglobal_FSENE;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_N_NE_apoio-Limite_Inf_EXPN_IO_NNE": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_N_NE; xRNE = vglobal_RNE; xEXPN = vglobal_EXP_N; xEXPSE = vglobal_EXP_SE;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_N_NE_apoio-LimiteRNE_Cenarios_N_NE_SE": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xEXPN = vglobal_EXP_N; xRNE = vglobal_RNE; xEXP_SE = vglobal_EXP_SE; xpercarga = PeriodoCarga_N_NE; x_cargaNE = vglobal_CargaNE; xugxingo = vglobal_Xingo_NumUgs; xlimugx = maqs; xFSENE = vglobal_FSENE;"; //xEXPN As Double, xRNE As Double, xEXP_SE As Double, xpercarga As String, x_cargaNE, xugxingo, xlimugx, xFSENE decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_N_NE_apoio-LimiteEXP_SE_cenarios": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_N_NE; xRNE = vglobal_RNE; xEXP_SE = vglobal_EXP_SE; xPpecem = vglobal_Gera_Porto_Pecem; xFSENE = vglobal_FSENE;"; //xpercarga As String, xRNE As Double, xEXP_SE As Double, xPpecem, xFSENE decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_N_NE_apoio-Limite_inf_EXP_SE_SE_EXP": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_N_NE; xRNE = vglobal_RNE; xEXPSE = vglobal_EXP_SE;"; //xpercarga As String, xRNE As Double, xEXPSE decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_N_NE_apoio-LimiteFSENE": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xpercarga = PeriodoCarga_N_NE; x_cargaNE = vglobal_CargaNE;"; //xpercarga As String, x_cargaNE decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-LimiteFNS_IO": decisao.Inequacao = string.Empty; // xMqIPU = vglobal_ [S_SE:U] // xECE_IPU_TUC // xMW_ug_ipu [S_SE!K6/S_SE!L6] decisao.BlocoDeAcao = "xMqSM = vglobal_SMGerando; xSM_cs = vglobal_Maqs_SMCOp; xMqLJ = vglobal_Maqs_Laj; xMqPX = vglobal_Maqs_Px; xcarga_SIN = vglobal_CARGASIN; xpercarga = PeriodoCarga_N_NE; xFSM = vglobal_FSM; xFSENE = vglobal_FSENE;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-Lim_Inferior_FSM": decisao.Inequacao = string.Empty; decisao.BlocoDeAcao = "xEXPSE = vglobal_EXP_SE; xugSM = vglobal_SMGerando; xpercarga = PeriodoCarga_N_NE;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; case "Modulo_Limites_MOPs-Limite_Superior_FSM": decisao.Inequacao = string.Empty; // xMqIPU, xECE_IPU_TUC, xMW_ug_ipu decisao.BlocoDeAcao = "xMqSM = vglobal_SMGerando; xSM_cs = vglobal_Maqs_SMCOp; xMqLJ = vglobal_Maqs_Laj; xMqPX = vglobal_Maqs_Px; xcarga_SIN = vglobal_CARGASIN; xpercarga = PeriodoCarga_N_NE; xEXPN = vglobal_EXP_N; xFNS = vglobal_FNS; xFSENE = vglobal_FSENE;"; decisoes.Add(decisao); foreach (Decisao dec in funcao.ListaDecisoes.Decisoes) { decisoes.Add(dec); } funcao.ListaDecisoes.Decisoes = decisoes.ToArray(); funcao.VariavelRetorno = variaveis.Where(v => v.Nome.Trim().ToLower() == "lim").FirstOrDefault(); func = new KeyValuePair<Funcao, int>(funcao, i); visao.Funcoes.Add(func); i++; break; default: break; } } }
static void Main(string[] args) { ListPoints = new List <Points>(); DateTime datahora_atual = DateTime.MinValue; bool started = false; do { var datahora = Simulation.Memory.Get().dmDateTime; var Dados_A = Simulation.Input.Termostato_A(); var Dados_D = Simulation.Input.Termostato_D(); var Dados_E = Simulation.Input.Termostato_E(); var Dados_G = Simulation.Input.Termostato_G(); bool saida_heater_A = Decisao.ResultadoAquecedorSimplificado(Dados_A.TemperaturaReal, Dados_A.SetPointReal); bool saida_heater_D = Decisao.ResultadoAquecedorSimplificado(Dados_D.TemperaturaReal, Dados_D.SetPointReal); bool saida_heater_E = Decisao.ResultadoAquecedorSimplificado(Dados_E.TemperaturaReal, Dados_E.SetPointReal); bool saida_heater_G = Decisao.ResultadoAquecedorSimplificado(Dados_G.TemperaturaReal, Dados_G.SetPointReal); if (saida_heater_A) { Simulation.Output.LigarAquecedor_A(); } else { Simulation.Output.DesligarAquecedor_A(); } ///////////////// if (saida_heater_D) { Simulation.Output.LigarAquecedor_D(); } else { Simulation.Output.DesligarAquecedor_D(); } ///////////////// if (saida_heater_E) { Simulation.Output.LigarAquecedor_E(); } else { Simulation.Output.DesligarAquecedor_E(); } ///////////////// if (saida_heater_G) { Simulation.Output.LigarAquecedor_G(); } else { Simulation.Output.DesligarAquecedor_G(); } if (datahora.DataHora.Hour == 0 && datahora.DataHora.Minute == 0 && datahora.DataHora.Second > 0) { started = true; } if (started == true) { if (datahora.DataHora >= datahora_atual.AddSeconds(1)) { datahora_atual = datahora.DataHora; var p = new Points(); p.Hora = datahora.DataHoraNormalizado; p.TempA = Dados_A.TemperaturaNormalizado; p.SetA = Dados_A.SetPointNormalizado; p.TempD = Dados_D.TemperaturaNormalizado; p.SetD = Dados_D.SetPointNormalizado; p.TempE = Dados_E.TemperaturaNormalizado; p.SetE = Dados_E.SetPointNormalizado; p.TempG = Dados_G.TemperaturaNormalizado; p.SetG = Dados_G.SetPointNormalizado; p.SaidaEsperada.AquecedorA = Normalizacao.Norm_Bool(saida_heater_A); p.SaidaEsperada.AquecedorD = Normalizacao.Norm_Bool(saida_heater_D); p.SaidaEsperada.AquecedorE = Normalizacao.Norm_Bool(saida_heater_E); p.SaidaEsperada.AquecedorG = Normalizacao.Norm_Bool(saida_heater_G); ListPoints.Add(p); Console.WriteLine(ListPoints.Count); /*if (datahora.Hour == 23 && datahora.Minute == 59 && datahora.Second > 0) * break;*/ } } }while (ListPoints.Count < 10000); Salvar(); Console.WriteLine("Total points: " + ListPoints.Count); Console.ReadKey(); }