Dicas Gerais ScadaBR

Boa tarde a todos, estou a praticamente 2 anos desenvolvendo um projeto no ScadaBr, no qual controlo uma fábrica inteira. Estou com o projeto bem avançado, e gostaria de retribuir toda a ajuda que tive ao longo dessa jornada nesse fórum. Hoje conto com o sistema com mais de 30 mil datapoints, vários APIs desenvolvidos para vários tipos de funções interligadas com o ScadaBR. Controlo diversos CLP´s , diversas IHM´s , e muitos outros equipamentos. Tenho um vasto banco de dados onde consigo arquivar todas as informações necessárias da fábrica, geração de relatórios personalizados e etc. Gostaria de poder ajudar com fornecimento de experiências e conhecimentos adquiridos. Qualquer dúvida estou a disposição.

2 curtidas

Legal, poderia compartilha como que ficou, mostrando alguns detalhes…

Você pode criar artigos aqui no fórum, como eu faço. Aqui é a fonte primária de ajuda dos usuários. Não precisa ser algo muito grande ou complexo. Além de ser um backup de conhecimento, caso um novo colaborador entre na empresa e vc esteja de férias ou sem tempo para dar manutenção ou suporte.
Eu mesmo uso meus artigos aqui para lembrar o que eu fiz anos atrás. Além de ajudar a comunidade

Boa dica, devido ao longo prazo de desenvolvimento a gente acaba se esquecendo de como resolveu tal problema ou função. Irei começar a criar tópico. Valeu pela dica.

Boa tarde Rafael, gostaria de umas dicas em como melhorar a performance do supervisório. Tenho um sistema bem menor que 30 mil datapoints e a interface fica travada com a utilização de gráficos e dados em tempo real.

Outro ponto que gostaria de ajuda é na personalização de relatórios, teria algum caminho para indicar para criação de relatórios personalizados por batelada onde conseguiria agrupar diversas variável no mesmo relatório?

Aproveitando poderia descrever as funções das APIs implementadas? é sempre bom sabermos até onde podemos chegar

Bom dia Gabriel, notei que com a alta quantidade de representações gráficas e datapoints, o sistema fica bem lento. Para resolver esse problema, eu instalei mais de um Scada. Basta alterar o nome da pasta para o nome desejado, alterar o env.propires para o nome do banco de dados, e depois através do mysql criar o banco com o mesmo nome definido no arquivo env. Dessa maneira consegui deixar o sistema bem fluído.Para acessar as representações dos outros programas que não são principais, eu utilizo a função public_view, sendo que assim não precisa fazer o login em mais de um Scada, apenas no principal. Para comunicar entre esses Scadas os datapoints necessários, eu utilizo o datasource SQL. Uma dica que utilzei, como a página public_view fica liberada para acesso, se os usuários anotarem o link, conseguem acessar sem efetuar o login no principal. Por esse motivo eu criei um programa, que consiste em um navegador, que não é possível alterar o link, e limitei o acesso nos terminais para que só funcione através desse software. E quanto a lentidão para mostrar os datapoints nas representações gráficas, são diretamenta ligadas ao processamento do PC. Já tive problemas de criar códigos no data source meta, que sobrecarregava totalmente o processamento e ocorria esse problema. Para encontrar tive que ir desabilitando datasource, reiniciando o sistema e testando qual código estava sobrecarregando. Se utiliza bastante esse datasource, tenho bastantes dicas para poder melhorar o desempenho deles. No sistema do servidor tenho usado um processador I9 de 12º geração, e mesmo assim quando á um código errado, o sistema sobrecarrega.

Para geração de relatórios, eu criei através do jaspersoft, e criei um API que roda no servidor tomcat, semelhante ao ScadaBR, que executa a função de gerar relatórios. Através da representação gráfica do ScadaBR, eu consulto o número da OS a ser gerada o relatório, e ele me gera em PDF com todas as informações necessárias. Esse API desenvolvi através do eclipse IDE. Quando se aprofunda o estudo nesse meio de API, fica quase solucionável quase todas as ideias de desenvolvimento. No próprio código do ScadaBR é possível fazer várias alterações de melhorias. Um exemplo que fiz no passado mas parei de utilizar após fazer essa atualização acima. Por conta do sistema ter mais de 5 mil scripts, quando selecionava a aba no scadabr, o sistema caia e era necessário reiniciar. Através do código fonte do ScadaBR, alterei a vizualização dos scripts em páginas que mostrava apenas 100. Fora esses APIs, também utilizo alguns para converter a requisição de dados da porta COM do PC para atualizar no SQL, o que me permite uma fácil comunicação com o ScadaBR.

Que legal! Obrigado pelas dicas, Rafael. Informações valiosas para os desenvolvedores.

Hi Rafae. My post is in English .I hope this is ok for you . I am new to ScadaBR so apologies if I am making a basic mistake . Here is my problem : Trying to get ScadaBR to work with Open PLC . Simple ladder logic program running on ESP32. Three outputs (coils) , one input contact . Close input contact to initiate timing sequence for 3 coil outputs. Works fine with OpenPLC with switch and LEDS’ connected .Connecting to ScadaBR via Modbus IP .Scada running on PC with Wifi connection to ESP32 again via Wifi connected to the same network router . In ScadaBR have good connection , can read coils in Data Sources window correctly , however we are not able to see the information being read correctly in the Watch window .Points are configured . We set the update period to 1 second on the Data Source window . We have an on/off switch configured in ScadaBR to control the switch contact . This is working . It starts the timing sequence on the ESP32 correctly . We expect the status of the three coil outputs to be updated in the Watch window ,but this does NOT work . The Points status configured for the 3x coils in the Watch window do not change even when we see the LEDS connected to the ESP32 output turn on or off or the coil data change in the Data Source window .We need to disconnect and re connect the Data Source to get it to update the coil status correctly in the Watch window .Why does the Watch window not show the changing state of the 3x coils ? I would be grateful if you can help let me know what the problem is here ?

Rafae, tentando fazer o ScadaBR funcionar com Open PLC. Programa de lógica ladder simples em execução no ESP32. Três saídas (bobinas), um contato de entrada. Feche o contato de entrada para iniciar a sequência de temporização para 3 saídas de bobina. Funciona bem com OpenPLC com interruptor e LEDs conectados. Conectando ao ScadaBR via Modbus IP. Scada em execução no PC com conexão Wi-Fi ao ESP32 novamente via Wi-Fi conectado ao mesmo roteador de rede. No ScadaBR há uma boa conexão, podemos ler bobinas na janela Data Sources corretamente, no entanto, não conseguimos ver as informações sendo lidas corretamente na janela Watch. Os pontos estão configurados. Definimos o período de atualização para 1 segundo na janela Data Source. Temos um interruptor liga/desliga configurado no ScadaBR para controlar o contato do interruptor. Isso está funcionando. Ele inicia a sequência de temporização no ESP32 corretamente. Esperamos que o status das três saídas de bobina seja atualizado na janela Watch, mas isso NÃO funciona. O status dos pontos configurados para as bobinas 3x na janela de observação não muda mesmo quando vemos os LEDs conectados à saída do ESP32 acenderem ou apagarem ou os dados da bobina mudarem na janela de fonte de dados. Precisamos desconectar e reconectar a fonte de dados para que ela atualize o status da bobina corretamente na janela de observação. O perfil do usuário está definido como “Ler todos os pontos”. Por que a janela de observação não mostra o estado de alteração das bobinas 3x? Agradeceria se você pudesse me ajudar a descobrir qual é o problema.

Boa tarde, geralmente tenho o problema de não atualizar os valor no watchlist quando existe mais de uma aba aberta na mesma tela, fora isso nunca tive problema com atualização. Pode ser também em questão da comunicação. No meu projeto tenho muitos pontos lidos pro CLP, entao mesmo que configure para ler a cada segundo, as vezes demora 30 segundos para ler. Eu costumo utilizar TCP com keep alive no tipo de transporte, qua mantém a conexão aberta para reuso.