Vídeo: painel de administração da Habr. Permite ajustar usuários de karma, classificação e banimento.TL; DR: no artigo, tentarei criar um painel de controle em quadrinhos para Habr usando o ambiente de desenvolvimento industrial Webaccess / HMI Designer e o terminal WebOP.
A interface homem-máquina (HMI) é um conjunto de sistemas para interação humana com máquinas controladas. Normalmente, esse termo é usado para sistemas industriais nos quais há um operador e um painel de controle.
O WebOP é um terminal industrial independente para a criação de interfaces homem-máquina. É usado para criar painéis de controle de produção, sistemas de monitoramento, salas de controle, controladores domésticos inteligentes, etc. Ele suporta conexão direta a equipamentos industriais, pode funcionar como parte de um sistema SCADA.
Terminal WebOP - Hardware

O terminal WebOP é um computador de baixo consumo de energia baseado em um processador ARM, em um único gabinete com monitor e tela sensível ao toque, projetado para executar um programa com uma interface gráfica criada no HMI Designer. Dependendo do modelo, os terminais possuem várias interfaces industriais a bordo: RS-232/422/485, um barramento CAN para conexão com sistemas de automóveis, uma porta USB Host para conectar periféricos adicionais, uma porta USB Client para conectar o terminal a um computador, entrada de áudio e saída de áudio , Leitor de cartão MicroSD para configurações de memória não volátil e transferência.
Os dispositivos são posicionados como um substituto do orçamento para monoblocos, para tarefas que não exigem processadores poderosos e os recursos de um computador desktop completo. O WebOP pode operar como um terminal autônomo para gerenciamento e entrada / saída de dados, emparelhado com outros WebOPs ou como parte de um sistema SCADA.
O terminal WebOP pode se conectar diretamente a dispositivos industriaisArrefecimento passivo e proteção IP66
Devido à sua baixa dissipação de calor, alguns modelos WebOP são fabricados completamente sem resfriamento ativo do ar. Isso permite que você monte o dispositivo em objetos críticos para o nível de ruído e reduz a quantidade de poeira que cai no gabinete.
O painel frontal é fabricado sem folgas e juntas, possui um nível de proteção IP66 e permite contato direto com a água sob pressão.
Painel traseiro do terminal WOP-3100TMemória não volátil
Para evitar a perda de dados no WebOP, há 128 KB de memória não volátil, com a qual você pode trabalhar da mesma maneira que com a RAM. Ele pode armazenar leituras do medidor e outros dados críticos. No caso de uma falta de energia, os dados serão salvos e restaurados após uma reinicialização.
Atualização remota
O programa em execução no terminal pode ser atualizado remotamente através de uma rede Ethernet ou através de interfaces seriais RS-232/485. Isso simplifica a manutenção, pois elimina a necessidade de ignorar todos os terminais para atualizações de software.
Modelos WebOP
A série 2000T é o dispositivo mais acessível, construído sobre o sistema operacional HMI RTOS em tempo real. A série é representada pelo WebOP-
2040T /
2070T /
2080T /
2100T , com uma tela na diagonal de 4,3 polegadas, 7 polegadas, 8 polegadas e 10,1 polegadas, respectivamente.
As séries 3000T são modelos mais avançados baseados no sistema operacional Windows CE. Eles diferem da série 2000T em um grande número de interfaces de hardware e possuem uma interface CAN integrada. Os dispositivos operam em uma faixa de temperatura estendida (-20 ~ 60 ° C) e possuem proteção antiestática (Ar: 15KV / Contato: 8KV). A linha atende totalmente aos requisitos da norma IEC-61000, que permite o uso de dispositivos na fabricação de semicondutores, onde descargas estáticas são um problema. A série é representada pelos modelos WebOP-
3070T /
3100T /
3120T , com uma tela na diagonal de 7 polegadas, 10,1 polegadas e 12,1 polegadas, respectivamente.
Ambiente de desenvolvimento do WebAccess / HMI Designer
Pronto para uso, o terminal WebOP é apenas um computador ARM de baixa potência no qual você pode executar qualquer software, mas o ponto principal desta solução está no ambiente de desenvolvimento de interface industrial WebAcess / HMI proprietário. O sistema consiste em dois componentes:
- O HMI Designer é um ambiente para o desenvolvimento de interfaces e lógica de programação. Funciona no Windows, em um programador de computador. O programa final é compilado em um único arquivo e transmitido ao terminal para execução em tempo de execução. O programa está disponível em russo.
- Tempo de execução da HMI - tempo de execução para executar um programa compilado no terminal. Ele pode funcionar não apenas nos terminais WebOP, mas também nos computadores Advantech UNO, MIC e computadores de mesa comuns. Existem versões do tempo de execução para Linux, Windows, Windows CE.

Hello world - criando um projeto
Vamos começar a criar uma interface de teste para o nosso painel de controle Habr. Vou executar o programa no terminal
WebOP-3100T executando o WinCE. Primeiro, crie um novo projeto no HMI Designer. Para executar o programa no WebOP, é importante escolher o modelo correto, o formato do arquivo final dependerá disso. Nesta etapa, você também pode selecionar uma arquitetura de área de trabalho e o arquivo resultante será compilado no tempo de execução do X86.
Criando um novo projeto e escolhendo uma arquiteturaSeleção do protocolo de comunicação pelo qual o programa compilado será carregado no WebOP. Nesta etapa, você pode escolher uma interface serial ou especificar o endereço IP do terminal.
Interface de criação do projeto. No lado esquerdo, há um diagrama em árvore dos componentes de um programa futuro. Embora estejamos interessados apenas no item Telas, essas são telas diretamente com elementos da GUI que serão exibidos no terminal.
Primeiro, crie duas telas com o texto "Hello World" e a capacidade de alternar entre elas usando os botões. Para fazer isso, adicione uma nova tela de tela nº 2 e, em cada tela, adicionamos um elemento de texto e dois botões para alternar entre telas (botões de tela). Cada botão está configurado para mudar para a próxima tela.
Interface para definir o botão para alternar entre telasO programa Hello World está pronto, agora você pode compilar e executá-lo. No estágio de compilação, pode haver erros no caso de variáveis ou endereços especificados incorretamente. Qualquer erro é considerado fatal, o programa será compilado apenas se não houver erros.
O ambiente fornece a capacidade de simular um terminal para que você possa depurar um programa em um computador localmente. Existem dois tipos de simulação:
- Simulação online - todas as fontes de dados externas especificadas no programa estarão envolvidas. Estes podem ser USO ou dispositivos conectados via interfaces seriais ou Modbus TCP.
- Simulação offline - simulação sem usar dispositivos externos.
Embora não tenhamos dados externos, usamos a simulação offline após a compilação do programa. O programa final estará localizado na pasta do projeto, com o nome
ProjectName_Program Name.px3O programa iniciado na simulação pode ser controlado pelo cursor do mouse da mesma maneira que seria na tela de toque do terminal WebOP. Vemos que tudo funciona como pretendido. Ótimo.
Para baixar o programa para o terminal físico, basta clicar no botão Download. Mas como não configurei a conexão do terminal com o ambiente de desenvolvimento, você pode simplesmente transferir o arquivo usando uma unidade flash USB ou um cartão de memória microSD.
A interface do programa é intuitiva, não desmontarei cada bloco gráfico. A criação de planos de fundo, formas e texto ficará clara para quem usou programas semelhantes ao Word. Criar uma interface gráfica não requer habilidades de programação, todos os elementos são adicionados arrastando e soltando no formulário.
Trabalhar com memória
Agora que somos capazes de criar elementos gráficos, estudaremos o trabalho com conteúdo dinâmico e uma linguagem de script. Crie um gráfico de barras exibindo dados da variável
U $ 100 . Nas configurações do gráfico, selecione o tipo de dados: número inteiro de 16 bits e o intervalo de valores do gráfico: de 0 a 10.

O programa suporta escrever scripts em três idiomas: VBScript, JavaScript e sua própria linguagem. Usarei a terceira opção, porque para ela existem exemplos na documentação e ajuda automática na sintaxe, diretamente no editor.
Adicione uma nova macro:

Escreveremos um código simples para alterar gradualmente os dados em uma variável, que pode ser rastreada em um diagrama. Nós adicionaremos 10 à variável e zero quando for maior que 100.
$U100=$U100+10 IF $U100>100 $U100=0 ENDIF
Para executar o script em um loop, instale-o nas configurações de Configuração Geral como Macro Principal, com um intervalo de execução de 250ms.
Compile e execute o programa no simulador:

Nesta fase, aprendemos como manipular dados na memória e exibi-los em uma forma visual. Isso já é suficiente para criar um sistema de monitoramento simples, recebendo dados de dispositivos externos (sensores, controladores) e gravando-os na memória. No HMI Designer, várias unidades de exibição de dados estão disponíveis: na forma de mostradores circulares com setas, vários quadros, gráficos. Usando scripts JavaScript, você pode implementar o carregamento de dados de fontes externas via HTTP.
Painel de controle Habr
Usando as habilidades adquiridas, faremos uma interface cômica do painel de administração do Habrom.
Nosso controle remoto deve ser capaz de:
- Alternar perfis de usuário
- Armazenar dados de carma e classificação
- Alterar valores de karma e classificação usando controles deslizantes
- Quando você clica no botão banir, o perfil deve ser marcado como banido, a imagem do perfil deve mudar para riscada
Cada perfil será exibido em uma página separada, portanto, criaremos uma página para cada perfil. Armazenaremos karma e classificação em variáveis locais na memória, que serão inicializadas usando a Macro de Configuração quando o programa for iniciado.
Imagem clicávelAjustar karma e classificação
Para ajustar o karma, usaremos o controle deslizante (Slide Switch). Como endereço de registro, especificamos a variável inicializada em Macro de Configuração. Limitamos o intervalo de valores do controle deslizante de 0 a 1500. Agora, quando o controle deslizante se move, novos dados serão gravados na memória. Nesse caso, o estado inicial do controle deslizante corresponderá aos valores da variável na memória.
Para exibir os valores numéricos de karma e classificação, usaremos o elemento de exibição Numérico. O princípio de sua operação é semelhante ao diagrama do programa de exemplo "Hello World", basta especificar o endereço da variável em Endereço do Monitor.
Botão de proibição
O botão ban é implementado usando o elemento Toggle Switch. O princípio do armazenamento de dados é semelhante aos exemplos acima. Nas configurações, você pode selecionar texto, cor ou imagem diferente, dependendo do estado do botão.
No momento em que o botão é pressionado, o avatar deve estar riscado em vermelho. Isso é fácil de implementar com a unidade Picture Display. Permite especificar várias imagens vinculadas ao estado do botão Alternar alternância. Para isso, o bloco recebe o mesmo endereço que o bloco com o botão e o número de estados. Imagem igualmente configurada com placas de identificação sob o avatar.
Conclusão
Em geral, gostei do produto. Anteriormente, eu tinha experiência no uso de um tablet Android para tarefas semelhantes, mas o desenvolvimento de uma interface é muito mais complicado, e as APIs do navegador não permitem acesso total aos periféricos. Um terminal WebOP pode substituir um pacote de um tablet, computador e controlador Android.
O HMI Designer, apesar do design arcaico, é bastante avançado. Sem habilidades especiais de programação, você pode esboçar rapidamente uma interface de trabalho. O artigo não considera todos os blocos gráficos, dos quais existem muitos: tubos animados, cilindros, gráficos, chaves de alternância. Ele pronto para uso suporta muitos controladores industriais populares, contém conectores de banco de dados.
Referências
O WebAccess / HMI Designer e o ambiente de desenvolvimento Runtime podem ser baixados
aqui→
Fontes do projeto do painel de controle Habrom