Scripts e .NET Framework

Como na maioria dos softwares do tipo SCADA, também está disponível no Action.NET, a funcionalidade de permitir ao usuário, durante a criação de um projeto de supervisão, de escrever programas de computador ou Scripts. Estes códigos de programação, que serão embutidos no sistema, possibilitam particularizar ou criar comportamentos e ações sobre os objetos (tags, telas, relatórios) não existentes de forma nativa no sistema.

As seções a seguir descrevem como criar scripts:

n        Configurar Tarefas

n        Configurando Classes

n        Trabalhando com o Editor de Código

NOTA - Quando você estiver usando o editor de código, o sistema constantemente compila o código em segundo plano. Você também pode “Build” (construir) todo o projeto, conforme necessário. Para mais informações, consulte Executando a Aplicação.

Duas bibliotecas dot NET estão disponíveis para uso comAction.NET:

n        Para o Script interno estão disponíveis métodos embutidos que você pode chamar usando TK. <methodName>. Para mais informações sobre esses métodos, consulte o manual Toolkits.html.

n        Se você usar o Microsoft Visual Studio, a biblioteca está disponível para uso com o Action.NET. Para mais informações sobre esta biblioteca, consulte a Toolkits.html.

Configurar Tarefas

As Tarefas, ou TASKS são códigos de programas, escrito em VB.Net ou CSharp, que executam a partir de eventos de processo, quando ocorre um evento (trigger) ou periodicamente a cada intervalo de tempo pre definido na configuração

O Action.NET vem com as seguintes Tasks internas, pré definidas:

n        ServerStartup - Executada quando o projeto começa a ser executado. É executada no servidor (computador que executa TServer.exe).

n        ServerShutdown - Executada quando o projeto é encerrado. É executada no servidor.

n        ClientStartup - Executada em cada cliente quando o TVisualizer.exe (módulo DISPLAYS) começa a funcionar.

n        ClientShutdown - Executada em cada cliente quando o módulo DISPLAYS é fechado.

A figura a seguir mostra a aba TASKS do espaço de trabalho do menu SCRIPTS.

ScriptsAndDotNeFrameworkt00001.bmp

Para configurar tarefas:

1.      Vá para Edit> Scripts> Tasks.

2.      Digite ou selecione as informações, conforme necessário.

Coluna

Descrição

Name

Digite um nome para a tarefa. O sistema permite que você saiba se o nome não é válido.

Code

Somente leitura. Por padrão a linguagem dot Net selecionada quando você criou o projeto. Na guia Editor de código, você pode mudar a linguagem do código. Para alterar o padrão de projeto, vá para Info > Settings.

Trigger

Digite ou selecione o evento (tag ou objeto) que será usado para desencadear a execução da tarefa. A tarefa é executada quando o valor do objeto muda.

Period

Digite a periodicidade de execução da tarefa. O campo tem o formato hh:mm:ss

Domain

Selecione o local onde o script é executado:

l      Cliente-Tarefa executada em cada sistema cliente. Estas são tarefas que se aplicam localmente (no computador do usuário), por exemplo, geração de relatórios.

l      Servidor-Tarefa executada no servidor do sistema. Estas são tarefas que se aplicam à toda a aplicação, ou seja, a nível global

InitialState

Selecione o estado inicial das tarefas:

l      Enabled- Tarefa está pronta para ser executado desde o inicio.

l      Disabled -Tarefa não está pronta para ser executado. Permite ativar a tarefa em condições específicas.

BuildStatus

Somente leitura. Situação do código da tarefa de acordo com o processo de compilação contínua.

l      Marca Verde - Tarefa compilada sem erros.

l      Marca em X Vermelha - A tarefa tem erros ou Warnings. Com um duplo clique o sistema vai mostrar o código no ponto em que está o Warning ou erro. Erros impediram a execução da Task específica. O restante da aplicação será executada normalmente.

EditSecurity

Permite escolher o nivel de segurança para a edição do código desta Tarefa. Ao clicar aparece a janela com as categorias de usuários que terão acesso para alterar esta TASK.

BuildErrors

Somente leitura. Mostrar erros encontrados desde o ultimo “Build”

Description

Digite uma descrição para a Task.

3.      Após ter completada a entrada de dados na linha descrevendo a TASK digite o código para a Task.

4.      Um duplo clique sobre a linha leva-o a acessar a área de código da tarefa na aba Code Editor. Veja em Trabalhando com o Editor de Código.

5.      Ao final da alteração de código clique em Save na parte superior do espaço de trabalho.

Configurando Classes

Classes permitem que você crie um repositório de bibliotecas de classes, métodos e funções que você pode usar em toda a aplicação. Você pode chamar estas classe de dentro de Tasks, de outras classes, e de Telas (Code Behind).

O Action.NET vem com as seguintes classes internas:

n        Biblioteca ServerMain-Métodos disponíveis para todas as tarefas do servidor.

n        Biblioteca ClientMain-Métodos disponíveis para todos os clientes.

Para configurar classes:

1.      Vá para Edit> Scripts> Classes.

2.      Digite ou selecione as informações, conforme necessário.

Column

Descrição

Name

Digite um nome para a classe. O sistema indicará se o nome não é válido mostrando em vermelho o contorno do campo.

Code

Somente leitura. Por padrão a linguagem dot Net selecionada quando você criou o projeto. Na guia Editor de código, você pode mudar a linguagem do código. Para alterar o padrão de projeto, vá para Info > Settings.

Domain

Selecione o local onde a classe é executada:

l      Classe Cliente - Executada em cada sistema cliente. Estas são classes que se aplicam localmente (no computador do usuário), por exemplo, geração de relatórios.

l      Classe Servidor-Executada no servidor do sistema. Estas são classes que se aplicam à toda a aplicação, ou seja, a nível global

BuildStatus

Somente leitura. Situação do código da classe de acordo com o processo de compilação contínua.

l      Marca Verde - classe compilada sem erros.

l      Marca em X Vermelha - A classe tem erros ou Warnings. Com um duplo clique o sistema vai mostrar o código no ponto em que está o Warning ou erro. Erros impediram a execução da classe específica. O restante da aplicação será executada normalmente.

BuildErrors

Somente leitura. Exibe todos os erros encontrados durante a última compilação

EditSecurity

Permite escolher o nivel de segurança para a edição do código desta Tarefa. Ao clicar aparece a janela com as categorias de usuários que terão acesso para alterar esta TASK.

Description

Digite uma descrição da classe

3.      Digite o código para a classe.

n        Dê um duplo clique na linha para acessar a aba Code Editor (Editor de código). Consulte Trabalhando com o Editor de Código.

4.      Ao final clique em Salvar, na barra superior do espaço de trabalho.

Trabalhando com o Editor de Código

Você pode escrever código tanto no VB.Net como em CSharp. Você também pode alternar entre os dois. Se você mudar a sua opção de seleção de linguagem no editor de código, o sistema converte automaticamente o código existente para a linguagem selecionada.

Se você precisa criar referências (References) à suas próprias partes de código (assemblies), você pode usar as facilidades disponíveis em Run > Build > References.

Por ser uma aplicação totalmente compatível.com o dot NET, você pode encontrar no meracdo ou na internet, trechos de código fonte, para uso gratuito, inclusive. produtos e bibliotecas dot NET, além de suas próprias bibliotecas que você pode usar imediatamente.

O Action.NET expõe para o programador de Scripts muitas bibliotecas do dot NET que podem ser utilizadas na aplicação. Existem alguns métodos que são muito frequentemente necessárias, tais como a conversão de tipo, ou cópia de Tags para DataTables o para objetos dot NET, ou para configurar dinamicamente parâmetros de comunicação, que estão incluídos em uma biblioteca kit de ferramentas própria. Para usar esses métodos, você só precisa colocar TK. no editor de código, pré fixando o método.

Exemplo:

double x = TK.ConvertTo <double> ("123");

Os métodos disponíveis estão descritos na Toolkits.html.

Para editar o código:

1.      Vá para Edit> Scripts> CodeEditor .

2.      Na lista drop-down na barra de ferramentas principal, selecione a Tarefa ou Classe que você deseja editar.

n        Para criar uma nova Task ou Classe, consulte Configurar Tarefas  ou Configurando Classes.

n        Caso seja necessário, a partir da barra de ferramentas do editor de código, selecione uma linguagem de código   fonte diferente.

3.      Clique no ícone de Salvar na barra de ferramentas na parte superior do espaço de trabalho.

Configurando Expressões

A ultima aba no espaço de trabalho Scripts é utilizada para a criação de Expressões que também funcionam como uma linha simples de código que será executada em determinadas condições, fornecendo um resultado.

Além da tabela que pode ser atualizada por Edit> Script> Expressions, em vários outros lugares no espaço de Engenharia do Action.NET, você pode digitar e usar expressões, utilizando a mesma sintaxe descrita aqui, para obter um valor resultado da expressão ou para configurar uma condição.

Expressions são meramente codificações na sintaxe VB.Net, como expressões aritméticas ou chamadas para métodos de classes definidas ou acessíveis no projeto. A facilidade Intellisense está orientada apenas para Tags e objetos de aplicação, não considerando a linguagem, mas as expressões são compiladas usando o compilador padrão VB.Net, então o que você puder escrever sem erros de sintaxe no editor de código, também poderá escrever para o código das Expressões.

O Action.NET implementa algumas substituições automatizadas, como == para =, então a sintaxe de uma expressão é muito próxima de uma declaração em C#, mas sem a necessidade de adicionar o ";" no final.

Desta forma, tanto os programadores VB.NET como os de C # são capazes de usar os campos de expressão, sem diferenças.

Em expressões, você não precisa colocar @ antes dos nomes de Tag. Você precisa do @ no editor de código para diferenciar os Tags do projeto das variáveis dot NET. No entanto, como as expressões não têm Variáveis locais dot NET, então pode-se usas os objetos de projeto diretamente.

Para operadores aritméticos, você deve usar os operadores padrão conforme descrito na documentação do dot NET.

Para permitir a avaliação de uma única linha, a linguagem dot NET dispõe do comando IIF, que atualmente é utilizado apenas com IF. O comando IF tem três parâmetros.

Por exemplo:

   IF (A, B, C)

l          O primeiro parâmetro é uma condição.

l          Esse método retornará B se a condição A é verdadeira;

l          E ele retorna C, se a condição for falsa.

Exemplo: Se (tag.A = 1, "Verdadeiro", "Falso") irá retornar uma string de acordo com o valor do tag.A.

Neste método dotNET, todos os três parâmetros são avaliados independentemente da condição. Por exemplo, se você tem

IF (tag.A = 1, script.class.client.Func1(),script.class.client.Func2())

 

Ambos Func1 e Func2 vão sempre ser executados. Apenas o valor de retorno será diferente com base no valor de tag.A.

O método IF ou IIF precisa avaliar os parâmetros antes de chamar o método. Há muitas situações em que você deseja executar apenas a função de acordo com o valor.

Para esse cenário o Action.NET tem um método chamado TIF, que tem esse comportamento.

Então, você usa a expressão:

TIF (tag.A = 1,script.class.client.Func1(),script.class.client.Func2())

Apenas a Func1 () ou a Func2 () vai ser executada, de acordo com o valor de Tag.A

O método TIF é definido na biblioteca de classes que é automaticamente exposta a expressões que estão na biblioteca de funções Toolkit.

Para cálculos mais complexos, você pode chamar uma classe que você deve antes criar na aba Classes. Veja em Configurando Classes.

Para configurar expressões:

1.      Vá para Edit> Scripts> Expressions .

2.      Digite ou selecione as informações, conforme necessário.

 

Coluna

Descrição

Object

Selecione uma tag ou objeto existente.

Expression

Digite a expressão. A expressão pode ser uma expressão matemática básica, usar uma classe, ou ser uma expressão condicional.

Domain

Selecione onde a expressão é executada:

l      Cliente - Expression será executada em cada sistema cliente. Estas são expressões que se aplicam localmente (no computador do usuário), por exemplo, geração de relatórios.

l      Servidor - Expression será executada no servidor do sistema. Estas são expressões que se aplicam em toda a aplicação, ou seja, em nível global.

Execution

Selecione quando a expressão é executada:

l      OnChange - A expressão é executada quando o valor de qualquer tag na expressão muda.

l      TriggerOrPeriod - A expressão é executada quando ocorre o evento de disparo configurado ou quando o é expirado o intervalo de tempo definido no período.

l      ChangeOrStartup - A expressão é executada quando o valor de qualquer tag na expressão muda ou na partida do aplicativo.

Trigger

Digite ou selecione um Tag ou objeto que será usado para disparar a execução da expressão. O disparo da execução ocorrerá quando o valor do tag ou objeto se alterar.

DisableCondition

Digite ou selecione um Tag ou objeto que será usado para desabilitar a execução da expressão

BuildStatus

Somente leitura. Situação do código atualizado após clicar em Verify.

l      Marca Verde - Expressão compilada sem erros.

l      Marca em X Vermelha - A Expressão contém erros.

BuildErrors

Somente leitura. Exibe todos os erros encontrados durante a última compilação

3.      Clique em Verify para verificar a validade da expressão.

Usando o depurador .NET

Criando Informação de depuração

O Action.NET tem um depurador dot NET integrado. Para usá-lo, é necessário que o computador local tenha arquivos de cache com os arquivos necessários para executar o depurador.

As etapas para ativar o depurador são:

1.      Ativar o Debug Informações em Run> Build> Messages

2.      Se necessário, salve novamente o código fonte que você deseja depurar, deste modo as informações de depuração serão criadas. Esta etapa só é necessária na primeira vez que abrir o projeto no computador. Depois disso, a compilação de “background” irá manter a geração das informações de depuração, à medida que se altera o código, para permitir o uso de pontos de interrupção e execução passo a passo.

Anexando o depurador dot NET

De modo a se ter uma sessão de depuração dot NET, o ambiente de Engenharia deve ser conectado ao ambiente do runtime e o depurador dot NET anexado (“Attached”) ao processo do servidor ou processo do cliente.

Siga estes passos.

1.      Durante a execução do projeto, seja em Run>Test ou Run>Startup habilitar a caixa de seleção de conexão.

2.      Se o projeto já estiver em execução, você pode ir para Run>Test ou Run>Startup, de acordo com o tipo de execução que você deseja anexar, e conectar-se ao sistema de execução, pressionando o botão de conexão nessas páginas.

3.      Abra qualquer script que tem informações de depuração e pressione o botão Anexar. depurador NET. Uma mensagem na parte inferior da área de trabalho de engenharia vai mostrar que uma sessão de depuração está ativa com os componentes do servidor ou os componentes do cliente do projeto em execução.

ScriptsAndDotNeFrameworkt00001.jpg

4.      Quando o depurador dot NET está Anexado o sistema irá parar nos pontos de interrupção definidos e também irá parar automaticamente quando ocorrer qualquer NET Exception.

Veja no Editor de Código os Botões para Anexar e Desanexar depurador, executar, executar passo a passo criar pontos de interrupção mostrados no retângulo vermelho. Na parte inferior informação de status da depuração.

ScriptsAndDotNeFrameworkt00002.jpg

 

Pontos de interrupção, Passo a Passo e Watch

Para configurar um ponto de interrupção, abra o código desejado, selecione a linha e pressione o Insert Breakpoint na barra de ferramenta ou clique na barra vertical esquerda da janela de código.

Quando o sistema para em um ponto de interrupção, você pode executar passo a passo pressionando os botões de execução passo a passo ou mandar seguir pressionando o botão continuar.

A fim de inspecionar variáveis locais do dot NET tags ou objetos do projeto, você pode selecionar o texto no editor de script e, quando a execução for interrompida em um ponto de interrupção, o kit de ferramentas mostrará o valor atual da variável.

Você também pode adicionar. variáveis locais do dot NET ou objetos do projeto na janela Watch do próprio Code Editor (parte inferior) Ao adicionar tags ou objetos do projeto, você precisa usar os símbolos @, example@tag.tag1, para que o sistema distingua entre objetos de projeto, e variáveis locais do dot NET. Tenha em mente o Watch atualizado apenas quando a execução é interrompida. Se você quer ter os valores em tempo real para tags e objetos que você pode abrir a ferramenta de diagnóstico PropertWatch descrita em Ferramentas para diagnose.

 

ScriptsAndDotNeFrameworkt00002.bmp

 

Objeto Runtime Script

O namespace Script é o ponto de entrada para todos os objetos relacionados ao módulo de Scripts.

O objeto Script.Task lista todas as Tasks configuradas e suas propriedades em tempo de execução.

Os objeto Script.Class lista todas as Classes e suas propriedades em tempo de execução configurado.

Veja em http://www.spinengenharia.com.br/help/an-2014/runtime/index.html . para a referência de programação completa em objetos de tempo de execução.

 

Tabela de conteúdo

Índice

Glossário

-Pesquisar-

Voltar