$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Após concluir o fluxo de trabalho descrito acima, tanto o experimento com ventilador quanto o experimento de controle de posição PID com motor CC podem ser acessados por meio da interface web gerada automaticamente. Um resultado bem-sucedido é indicado por três observações. Primeiro, a página web gera automaticamente controles de entrada e campos de exibição de saída de acordo com os metadados das variáveis retornados pelo RIP Server. Segundo, quando o usuário altera uma variável de entrada na página web, o valor modificado é escrito no VI de back-end do LabVIEW por meio da interface RIP. Terceiro, as variáveis de saída calculadas pelo VI de back-end são retornadas por meio do RIP e atualizadas na página web em tempo real. Para o experimento com ventilador, após inserir http://localhost:8090/fan em um navegador, a página gera automaticamente controles de entrada e campos de saída a partir dos metadados do RIP, conforme mostrado na Figura 7. O lado de entrada inclui Enable, PWM, Load, Tau, KMaxRPM e Disturbance, enquanto o lado de saída exibe SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA e PowerW. Durante o funcionamento normal, TimeS aumenta continuamente, indicando que o VI de back-end fengshan.vi está em execução. Quando PWM é aumentado, SpeedRPM e SteadyRPM aumentam proporcionalmente. Quando Load é aumentado, a velocidade do ventilador diminui porque a carga reduz a velocidade de operação em regime permanente. Quando Disturbance é ajustado, mudanças correspondentes podem ser observadas em SpeedRPM, CurrentA e PowerW. Essas observações confirmam que as entradas do lado web são transmitidas corretamente ao back-end do LabVIEW e que as saídas calculadas são retornadas ao front-end por meio do RIP.
Para o experimento de controle de posição PID do motor CC, após inserir http://localhost:8090/motor em um navegador, a página gera automaticamente os controles e campos de saída correspondentes a partir dos metadados RIP, conforme mostrado na Figura 12. As variáveis de entrada incluem Setpoint, Kc, Ti, Td, Perturbação e controle de Redefinição, e as variáveis de saída incluem Posição, Tensão, Tempo e Velocidade angular medida. Quando o valor de Setpoint é alterado, a Posição responde ao novo valor de referência. Quando os parâmetros PID Kc, Ti e Td são ajustados, a resposta de saída, a tensão de controle e a velocidade angular medida mudam de acordo, indicando que os valores dos parâmetros inseridos na página da Web são corretamente enviados ao modelo de back-end no LabVIEW e participam do cálculo de controle. Quando o controle de redefinição é ativado, as variáveis do modelo retornam aos seus estados iniciais de acordo com a lógica de redefinição.
Os estados de falha e comunicação no lado do navegador são mostrados na Figura 13, Figura 14, Figura 15. A Figura 13 mostra um caso de acesso falho pelo navegador no qual o Caddy não está em execução. O navegador tenta acessar http://localhost:8090/motor, mas exibe uma mensagem ERR_CONNECTION_REFUSED, indicando que o serviço proxy local está indisponível ou não está escutando na porta de acesso selecionada. A Figura 14 mostra uma falha na comunicação RIP POST após o carregamento da página. Nesse caso, o console do navegador relata um erro 502 Bad Gateway para a requisição RIP POST, indicando que a interface frontal alcançou o endereço do proxy, mas a requisição não pôde ser encaminhada com sucesso ou processada pelo back-end do RIP WebService. Em contraste, a Figura 15 mostra um estado normal de comunicação no lado do navegador. As ferramentas de desenvolvedor do navegador mostram o carregamento bem-sucedido da página, requisições RIP POST e uma requisição SSE ativa com expId=fan, indicando que a interface web está se comunicando com o RIP WebService por meio do proxy Caddy e recebendo atualizações em tempo real através do canal SSE.
Juntos, os resultados bem-sucedidos do ventilador e do motor e os resultados dos diagnósticos no lado do navegador demonstram que o mesmo fluxo de trabalho automatizado de geração de interface de usuário baseado em metadados pode ser reproduzido para dois experimentos LabVIEW diferentes. Esses resultados também fornecem critérios observáveis para distinguir comunicação bem-sucedida de falhas representativas de implantação, enquanto os procedimentos correspondentes de solução de problemas são discutidos na seção Discussão.

Figura 1: Estrutura geral do sistema experimental. O sistema é composto pelo VI de back-end do LabVIEW, servidor RIP, proxy Caddy e interface web gerada automaticamente. O VI do LabVIEW fornece as variáveis do modelo, o servidor RIP lê os metadados do VI e os valores das variáveis, o Caddy unifica o caminho de acesso e resolve o acesso entre origens distintas, e a interface web gera os controles automaticamente. O nome e o logotipo do Caddy são mostrados apenas para identificar o componente do servidor/proxy web Caddy utilizado no fluxo de trabalho. Clique aqui para visualizar uma versão maior desta figura.

Figura 2: Painel Frontal do VI do ventilador. O Painel Frontal contém controles de entrada para Enable, PWM, Load, Tau, KMaxRPM e Disturbance e indicadores de saída para SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA e PowerW. Esta captura de tela foi obtida do Painel Frontal do fengshan.vi no LabVIEW 2026 no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 3: Diagrama em Blocos do VI do ventilador. O modelo do ventilador é implementado com um Loop While, Registradores de Deslocamento, lógica Enable, um Nó de Fórmula e indicadores de saída. Esta captura de tela foi obtida a partir do Diagrama em Blocos do arquivo fengshan.vi no LabVIEW 2026 no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluída. Clique aqui para visualizar uma versão maior desta figura.

Figura 4: Página de configuração do fan.vi. O experimento com ventilador é registrado na Configuração RIP com o nome do experimento "fan", o caminho real do VI, informações de palavras-chave, descrição e frequência de amostragem. Esta captura de tela foi obtida a partir da interface de Configuração RIP utilizada com o LabVIEW 2026 e o RIP WebService no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 5: Configurações de ID do experimento e lógica de geração da interface do usuário baseada em metadados nos arquivos de front-end XHTML. As capturas de tela do código XHTML foram obtidas a partir dos arquivos Fan_Automatic_UI.xhtml e Motor_Automatic_UI.xhtml abertos no Visual Studio Code. As páginas do ventilador e do motor utilizam a mesma lógica de leitura de metadados e geração de controles; apenas o ID do experimento é alterado para corresponder ao campo Nome na Configuração RIP. As capturas de tela do código XHTML foram obtidas a partir dos arquivos Fan_Automatic_UI.xhtml e Motor_Automatic_UI.xhtml abertos no Visual Studio Code no ambiente de desenvolvimento local dos autores. Os arquivos de código foram preparados pelos autores para este protocolo. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 6: Configuração do Caddyfile. O Caddyfile define a porta de acesso local do proxy, define o diretório raiz do front-end, reescreve as rotas /fan e /motor para os arquivos XHTML correspondentes e faz proxy reverso das solicitações /RIP/SSE* e /RIP* para a porta do WebService LabVIEW/RIP. A captura de tela da configuração do Caddyfile foi obtida a partir do Caddyfile aberto no Visual Studio Code no ambiente de desenvolvimento local dos autores. O Caddyfile foi preparado pelos autores para configurar o Caddy como servidor Web local e proxy reverso. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 7: Página da interface web do fan.vi. Esta captura de tela da interface web foi obtida a partir da página web do ventilador implantada localmente pelos autores, utilizando o Mozilla Firefox. A página frontal gera automaticamente controles de entrada e exibições de saída com base nos metadados das variáveis retornados pelo Servidor RIP. Esta captura de tela da interface web foi obtida a partir da página web do ventilador implantada localmente pelos autores, utilizando o Mozilla Firefox. Os controles e campos de saída exibidos foram gerados a partir dos metadados RIP no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 8: Painel Frontal do VI do motor. O Painel Frontal contém controles para Setpoint, Kc, Ti, Td, Distúrbio e controle de Reinicialização, e indicadores para Posição, Tensão, Tempo e Velocidade angular medida. Esta captura de tela foi obtida a partir do Painel Frontal do Motor.vi no LabVIEW 2026 no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluída. Clique aqui para visualizar uma versão maior desta figura.

Figura 9: Diagrama do modelo de controle de posição PID para motor CC. O diagrama mostra o caminho do sinal desde o erro do ponto de ajuste, controle PID, limitação de tensão, superposição de perturbação, dinâmica elétrica, dinâmica mecânica e atualização da posição até a realimentação. Clique aqui para visualizar uma versão maior desta figura.

Figura 10: Diagrama em Blocos do VI do motor. O modelo do motor é implementado com um Loop While, Registradores de Deslocamento, um Nó de Fórmula, lógica de temporização e indicadores de saída. Esta captura de tela foi obtida a partir do Diagrama em Blocos do Motor.vi no LabVIEW 2026 no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 11: Página de configuração do Motor.vi. O experimento de motor é registrado na Configuração RIP com o nome do experimento Motor, o caminho real do VI, informações de palavras-chave, descrição e frequência de amostragem. Esta captura de tela foi obtida da interface de Configuração RIP utilizada com o LabVIEW 2026 e o RIP WebService no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluída. Clique aqui para visualizar uma versão maior desta figura.

Figura 12: Página da interface web do Motor.vi. A página frontal gera automaticamente controles de entrada e exibições de saída para o experimento de controle de posição PID do motor CC. Esta captura de tela da interface web foi obtida a partir da página web do motor implantada localmente pelos autores, utilizando o Mozilla Firefox. Os controles e campos de saída exibidos foram gerados a partir dos metadados RIP no ambiente experimental local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 13: Acesso falho pelo navegador quando o Caddy não está em execução. Quando o Caddy não é iniciado, o endereço local encaminhado http://localhost:8090/motor não pode ser acessado, e o navegador exibe uma mensagem ERR_CONNECTION_REFUSED. Esse sintoma de falha indica que o serviço de proxy local Caddy está indisponível ou não está escutando na porta de acesso selecionada. Esta captura de tela do navegador foi obtida usando o Mozilla Firefox no ambiente de testes locais dos autores e mostra o estado de acesso falho quando o proxy local Caddy não estava em execução. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 14: Falha na comunicação RIP POST após o carregamento da página. O console do navegador exibe um erro 502 Bad Gateway para a solicitação RIP POST. Esse resultado indica que a página da web alcançou o endereço do proxy Caddy, mas a solicitação não pode ser encaminhada com sucesso ou processada pelo back-end do WebService RIP. Esta captura de tela do console do navegador foi obtida usando as Ferramentas de Desenvolvedor do Mozilla Firefox no ambiente de implantação local dos autores e mostra uma falha de comunicação RIP POST 502 Bad Gateway. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 15: Status da comunicação no lado do navegador durante operação normal. As ferramentas de desenvolvedor do navegador mostram carregamento bem-sucedido da página, requisições POST RIP e uma requisição SSE ativa com expId=fan. Essas requisições indicam que a interface web está se comunicando com o WebService RIP por meio do proxy Caddy e recebendo atualizações em tempo real através do canal SSE. Esta captura de tela das ferramentas de desenvolvedor do navegador foi obtida usando o Mozilla Firefox no ambiente de implantação local dos autores e mostra comunicação POST RIP e SSE normal. Nenhum dado de usuário de terceiros ou informação confidencial está incluída. Clique aqui para visualizar uma versão maior desta figura.

Figura 16: Observação representativa única do console do navegador e recursos no nível de processo para o experimento com ventilador. A captura de tela foi registrada durante um teste local do experimento com ventilador. O console mostra o tempo de solicitação/resposta de metadados, contagem de variáveis de metadados, tempo de geração da interface baseada em metadados, tempo de abertura da conexão SSE e dados SSE recebidos. A visualização do gerenciador de tarefas mostra os valores de CPU e memória no nível de processo para os processos do navegador e do LabVIEW no momento da captura. Esses valores são observações descritivas desse teste individual e não correspondem a medições de desempenho replicadas ou a uma referência estatística. Esta captura de tela foi obtida usando as Ferramentas de Desenvolvedor do Mozilla Firefox e o Gerenciador de Tarefas do Windows no ambiente de testes local dos autores. O Mozilla Firefox foi utilizado para registrar a saída do console do navegador, e o Gerenciador de Tarefas do Windows foi usado para observar o uso de CPU e memória pelos processos do navegador e do LabVIEW. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.

Figura 17: Acesso simultâneo à mesma página da Web baseada em RIP a partir de um navegador de desktop e um navegador móvel. A página do experimento com o ventilador é aberta simultaneamente em dispositivos PC e móveis, e ambos os clientes exibem os controles e variáveis de saída gerados automaticamente. A página da Web no desktop foi acessada usando o Mozilla Firefox, e a página da Web móvel foi acessada usando um navegador móvel no mesmo ambiente de rede local. As capturas de tela foram obtidas no ambiente de testes local dos autores. Nenhum dado de usuário de terceiros ou informação confidencial está incluído. Clique aqui para visualizar uma versão maior desta figura.
| Nome da variável | Tipo de dado | Entrada/Saída | Significado físico | Papel no modelo | Intervalo/Configuração |
| Enable | Booleano | Entrada | Interruptor de funcionamento do ventilador | Controla se o modelo recebe a entrada PWM. Quando Verdadeiro, u = PWM; quando Falso, u = 0. | Verdadeiro / Falso |
| PWM | DBL | Entrada | Entrada de acionamento | Determina a intensidade básica do acionamento do ventilador e é a entrada principal usada para calcular a velocidade em regime permanente SteadyRPM. | 0-1, passo 0,01 |
| Load | DBL | Entrada | Coeficiente de carga | Descreve o efeito atenuante da carga sobre a velocidade em regime permanente. À medida que Load aumenta, a velocidade em regime permanente diminui. | 0-1, passo 0,01 |
| Tau | DBL | Entrada | Constante de tempo de resposta | Determina com que rapidez a velocidade do ventilador se aproxima da velocidade em regime permanente a partir do estado anterior. | 0,1-5, passo 0,1 |
| KMaxRPM | DBL | Entrada | Velocidade máxima | Define a velocidade máxima permitida pelo modelo e é usada para limitação e normalização da velocidade. | 500-6000, passo 100 |
| Disturbance | DBL | Entrada | Entrada de perturbação | Representa o efeito de perturbação externa ou flutuação de carga sobre a velocidade em regime permanente, corrente e potência. | 0-1, passo 0,1 |
| SpeedRPM | DBL | Saída | Velocidade real | Representa a velocidade de saída atual do ventilador e é atualizada por meio de dinâmica inercial de primeira ordem. | Calculado pelo modelo |
| SteadyRPM | DBL | Saída | Velocidade em regime permanente | Representa a velocidade teórica em regime permanente sob as condições de entrada atuais. | Calculado pelo modelo |
| TimeS | DBL | Saída | Tempo de execução | Representa o tempo contínuo de execução do modelo. | Calculado pelo modelo |
| SpeedNorm | DBL | Saída | Velocidade normalizada | Representa a razão entre SpeedRPM e KMaxRPM. | 0-1 ou calculado pelo modelo |
| CurrentA | DBL | Saída | Corrente | Representa a corrente estimada do modelo, que varia com a entrada de acionamento e a entrada de perturbação. | Calculado pelo modelo |
| PowerW | DBL | Saída | Potência | Representa a potência estimada do modelo, calculada a partir da constante de tensão e da corrente. | Calculado pelo modelo |
| Setpoint | DBL | Entrada | Posição desejada | Define a posição que o motor deve atingir e forma o erro e com a posição real Position. | -3-3, passo 0,1 |
| Kc | DBL | Entrada | Ganho proporcional | Ajusta a intensidade da resposta do Controlador PID ao erro. | 0-10, passo 0,1 |
| Ti | DBL | Entrada | Tempo integral | Ajusta a ação integral do Controlador PID e é usado para reduzir o erro em regime permanente. | 0-10, passo 0,1 |
| Td | DBL | Entrada | Tempo derivativo | Ajusta a ação derivativa do Controlador PID e é usado para suprimir mudanças excessivamente rápidas do erro e melhorar a resposta dinâmica. | 0-5, passo 0,1 |
| Disturbance | DBL | Entrada | Entrada de perturbação | Representa uma perturbação externa superposta à entrada do motor, atuando no modelo do motor juntamente com a tensão de controle. | 0-10, passo 0,1 |
| Reset control | Booleano | Entrada | Controle de reinicialização | Aciona a limpeza do estado do modelo, fazendo com que posição, velocidade angular, corrente, erro e termo integral retornem aos seus estados iniciais. | Verdadeiro / Falso |
| Position | DBL | Saída | Posição real | Representa a posição angular atual do motor e serve como variável de realimentação para o controle PID. | Calculado pelo modelo |
| Voltage | DBL | Saída | Tensão de controle | Representa a saída do Controlador PID após limitação de tensão e atua na entrada do motor. | Calculado pelo modelo; limitado a -24 a 24 V |
| Time | DBL | Saída | Tempo de execução | Representa o tempo contínuo de execução do modelo do motor. | Calculado pelo modelo |
| Measured angular velocity | DBL | Saída | Velocidade angular medida | Representa a velocidade angular atual do motor e é a saída de estado mecânico do motor. | Calculado pelo modelo |
Tabela 1: Variáveis de entrada e saída utilizadas nos exemplos de ventilador e motor CC. A tabela lista o nome de cada variável, tipo de dado, função de entrada/saída, significado físico, faixa recomendada e tamanho do passo.
| Parâmetro | Valor | Significado físico | Papel no modelo |
| R | 1 | Resistência do armadura | Representa o termo de resistência no circuito do armadura do motor e determina a queda de tensão R × im na equação da corrente. |
| L | 0,5 | Indutância do armadura | Representa a indutância do circuito do armadura e determina a taxa de variação da corrente. Um valor maior de L produz uma resposta de corrente mais lenta. |
| J | 0,01 | Momento de inércia | Representa a resistência do rotor do motor às mudanças na aceleração angular e determina a rapidez com que a velocidade angular varia. |
| b | 0,1 | Coeficiente de amortecimento viscoso | Representa o amortecimento mecânico e descreve o torque de amortecimento que dificulta o aumento da velocidade angular durante a rotação. |
| Kt | 0,01 | Constante de torque | Representa o coeficiente de proporcionalidade que converte a corrente do armadura em torque eletromagnético. |
| Ke | 0,01 | Constante de força eletromotriz contrária | Representa o coeficiente de proporcionalidade pelo qual a velocidade angular gera a força eletromotriz contrária e descreve o efeito de realimentação da velocidade sobre a corrente. |
| Vmax | 24 | Tensão máxima de controle | Representa o limite da tensão de saída do controlador e mantém a tensão dentro da faixa de -24 V a 24 V. |
| dt | 0,001 | Passo de simulação discreto | Representa o intervalo de tempo para cada atualização de estado baseada em laço e é usado para atualizar corrente, velocidade angular, posição e tempo de execução. |
Tabela 2: Parâmetros internos utilizados no modelo de controle de posição PID do motor CC. A tabela lista os parâmetros elétricos e mecânicos, símbolos, valores numéricos, unidades e funções no modelo.
Arquivos de Código Suplementares: Arquivos completos de código-fonte e configuração para reproduzir os exemplos com ventilador e motor CC. Os arquivos de código suplementares incluem o código do Nó de Fórmula do LabVIEW, a configuração do proxy reverso Caddy, os arquivos XHTML da interface frontal e os arquivos-fonte VI do LabVIEW utilizados neste protocolo. O arquivo Código no Nó de Fórmula do LabVIEW.docx contém o código do Nó de Fórmula para os modelos de controle de posição PID do ventilador e do motor CC. O arquivo Caddyfile.txt contém a configuração local do servidor Web e do proxy reverso. Os arquivos Fan_Automatic_UI.xhtml e Motor_Automatic_UI.xhtml contêm a lógica da interface frontal baseada em metadados. Os arquivos fengshan.vi e Motor.vi são os arquivos VI de back-end do LabVIEW para os experimentos com ventilador e motor.Clique aqui para baixar este arquivo.