Após concluir o fluxo de trabalho descrito acima, tanto o experimento do ventilador quanto o experimento de controle de posição PID de 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 Servidor RIP. 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 do ventilador, após digitar 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 da entrada inclui Enable, PWM, Load, Tau, KMaxRPM e Disturbance, enquanto o lado da 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 para o 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 com 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 em Figura 12. As variáveis de entrada incluem Ponto de ajuste, Kc, Ti, Td, Perturbação, e Redefinir controle, e as variáveis de saída incluem Posição, Tensão, Tempo e Velocidade angular mediday. Quando Ponto de ajuste é alterado, Posição responde ao novo valor-alvo. Quando os parâmetros PID Kc, Ti, e Td são ajustados, a resposta de saída, controle tensão, e velocidade angular medida altere de acordo, indicando que os valores de parâmetro inseridos na página da Web são corretamente gravados no modelo de back-end do LabVIEW e participam do cálculo de controle. Quando o controle de reinicialização é ativado, as variáveis do modelo retornam aos seus estados iniciais de acordo com a lógica de reinicializaçã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 diferentes em LabVIEW. 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 de 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 exibidos 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 a partir 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 de 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 de Blocos 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 4: Página de configuração do fan.vi. O experimento do 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 de interface baseada em metadados nos arquivos de front-end XHTML. As imagens do código XHTML foram capturadas 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 imagens do código XHTML foram capturadas 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ída. Clique aqui para visualizar uma versão ampliada desta figura.

Figura 6: Configuração do Caddyfile. O Caddyfile define a porta de acesso proxy local, 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 fan 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 de variáveis retornados pelo Servidor RIP. Esta captura de tela da interface web foi obtida a partir da página web fan 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 Redefiniçã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ído. 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, passando pelo 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ída. Clique aqui para visualizar uma versão maior desta figura.

Figura 11: Página de configuração do Motor.vi. O experimento com 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 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 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 repassado http://localhost:8090/motor não pode ser alcançado, 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 local 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ída. 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 ou processada com êxito pelo back-end do WebService RIP. Esta captura de tela do console do navegador foi obtida utilizando 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 normal por POST RIP e SSE. 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 do uso de recursos no nível do processo para o experimento do ventilador. A captura de tela foi registrada durante um teste local do experimento com ventilador. O console mostra o tempo de requisição/resposta de metadados, a contagem de variáveis de metadados, o tempo de geração da interface de usuário baseada em metadados, o tempo de abertura da conexão SSE e os dados SSE recebidos. A visualização do gerenciador de tarefas mostra os valores de CPU e memória no nível do 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 representam medições de desempenho replicadas ou uma referência estatística. Esta captura de tela foi obtida a partir das Ferramentas de Desenvolvedor do Mozilla Firefox e do 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 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 de 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 imagens foram capturadas 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 | Boolean | 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 de 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 funcionamento | Representa o tempo contínuo de funcionamento 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 alcançar e forma o erro e com a posição real Position. | -3-3, passo 0,1 |
| Kc | DBL | Entrada | Ganho proporcional | Ajusta a intensidade de 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 no 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 | Boolean | Entrada | Controle de reinicialização | Dispara 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 atua 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 funcionamento | Representa o tempo contínuo de funcionamento 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 do ventilador e do 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 de controle máxima | 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 do ventilador e do 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 o ventilador e o motor.Clique aqui para baixar este arquivo.