Mostrando postagens com marcador PropertyBag. Mostrar todas as postagens
Mostrando postagens com marcador PropertyBag. Mostrar todas as postagens

terça-feira, 6 de dezembro de 2011

da Criação de ActiveX para SCADA (Parte 1)

1. ActiveX, que [coisa] é essa?
ActiveX é um modelo para construção de componentes padronizado pela Microsoft.  Esse padrão define como a interface (interação e comunicação) entre controle e container (sistema que hospeda o componente) deve ser realizada.

2. Não entendi [coisa] nenhuma, qual é o objetivo?
Uma vez que os principais sistemas de supervisão (InTouch, WinCC, FactoryTalk, iFix) desempenham o papel de container, a reutilização é o primeiro objetivo para construção de ActiveX, ou seja, o esforço de criação é realizado uma única vez e o componente pode ser reaproveitado nos demais sistemas SCADA.

3. Ferramenta (VB6 versus .NET)
Esse post é direcionado para criação de componentes ActiveX em Visual Basic 6. Algumas pessoas questionarão a velhice do VB6. Para estas a minha resposta: o VB6 ainda resolve muitos problemas na automação, mais especificamente, nos sistemas de supervisão. No caso .NET o mesmo desenvolvimento é, definitivamente, mais complexo, uma vez que deve ser construída uma DLL COM em vez de um OCX (pode ser tema de outro post).

4. Desenvolvimento
Para acompanhar esse post será necessário uma máquina virtual com o Visual Basic 6 Service Pack 6 instalado, dessas que muitos, porém nem todos, já providenciaram junto ao revendedor não autorizado Microsoft.
A ideia será criar um controle que realize as operações de uma válvula On/Off. Na prática, esse componente deverá ser utilizado apenas para fins didáticos.

4.1. Criação do Projeto
Seria muito enfadonha a elucidação tela-a-tela para a construção de um ActiveX e não retornaria resultados expressivos, dessa forma, visando maximizar a produção de posts, o método sucinto de explicação já amplamente praticado pelos profissionais de meu convívio será utilizado. Da mesma maneira, as rotineiras expressões “como exibe a figura abaixo”, “como mostra a figura abaixo”, “como apresentado na figura abaixo” serão evitadas.

Passo 1: Na interface “New Project” selecione “ActiveX Control”.

Passo 2: Renomear o projeto para IHMControls.


Passo 3: Renomear o controle para “IHMFlowValve”.


Passo 4: Adicionar e renomear um controle Shape;


Passo 5: Redimensionar o formulário para o tamanho exato do componente.

Passo 6: Adicionar o código que redimensiona, automaticamente, o shape de acordo com o tamanho do formulário configurado pelo usuário final. E, importante, não se deixe confundir pelas longas frases deste post, o lado Saramago será largamente utilizado.

4.2.  Propriedades
As propriedades CorAberta e CorFechada deverão ser criadas para permitir a ferramenta SCADA definir as cores associadas aos estados da válvula sem a necessidade de modificação do código-fonte do ActiveX. 
Para realização dessa etapa, adicionar a lógica abaixo. Repare a dupla de procedimentos (Get e Let) para cada propriedade. Get é responsável por fornecer ao container (SCADA) o valor armazenado da propriedade, enquanto Let é responsável por receber do container (SCADA) o valor desejado para a mesma propriedade.


4.3. Métodos
Análogo às características (propriedades) da válvula, existem as ações (métodos) realizadas pelo componente. Para implementação dos métodos Abrir e Fechar, adicionar a lógica abaixo. Repare que o escopo desses métodos precisará ser público, uma vez que deverão ser chamados pelo sistema de supervisão. Para verificação do estado da válvula duas propriedades somente leitura (não possuem Let) serão adicionadas.


4.4.  Eventos
Para finalizar a comunicação do componente com o container, deverá ser adicionado o evento OnChange, lançado sempre que a válvula modificar seu estado. Essa é a maneira que o controle divulga ao sistema de supervisão um acontecimento relevante em seu interior. Repare que a implementação dos métodos Abrir e Fechar deverá ser modificada.


Para concluir o desenvolvimento do controle, adicionar o estado inicial da válvula no método nativo Initialize.

4.5.  Compilação
Para compilar o projeto e obter o arquivo OCX, proceder com a operação Make disponível no menu File.

4.6.  Registro
Para registrar o componente, siga os seguintes passos:
1. Copiar o arquivo com extensão OCX gerado no item anterior para a pasta C:\IHM\Componentes;
2. Criar um arquivo com extensão BAT, com o conteúdo:
regsvr32 C:\IHM\Componentes\IHMControls.ocx /s
pause
3. Copiar a pasta e executar o arquivo de lote em todas as estações de operação e engenharia que usarão o controle produzido.

5. ActiveX no Wonderware InTouch
Para usar o controle no Wonderware InTouch, proceda de acordo com as figuras e passos abaixo:
Passo 1: Adicionar o ActiveX no InTouch local, repare que essa configuração deve ser realizada por estação de engenharia, não para cada projeto InTouch, ou seja, se outra aplicação InTouch for criada na mesma máquina, esse controle já estará disponível.


Passo 2: Selecionar e instalar o item IHMControls.IHMFlowValve;

Passo 3: Adicionar uma instância do controle na Window, através do clique no ícone destacado.


Passo 4: Calma, o controle estará preto porque o valor das propriedades CorAberta e CorFechada é 0, entretanto, esse conteúdo poderá ser modificado associando uma tag através da interface que o InTouch disponibiliza, ou atribuindo um literal através de um script.
Tópico especial sobre cores: para configurar o número das cores converter os três bytes (R, G e B; sendo R o byte menos significativo e B o byte mais significativo) para decimal.

Passo 5: Para tratar a mudança de estado da válvula, um script do InTouch poderá ser associado ao evento OnChange do controle, criado previamente.

Passo 6: Através da interface de implementação de scripts do InTouch é possível visualizar todas as propriedades e métodos dos componentes, até mesmo as somente leitura.

Passo 7: Para testar a chamada dos métodos, adicionar dois botões Abrir e Fechar nativos do InTouch e acrescentar o código abaixo.

6. ActiveX no Siemens WinCC
Para usar o controle no Siemens WinCC, proceda de acordo com as figuras e passos abaixo:

Passo 1: Acessar a interface para adição de componentes através do frame Object Palette.

Passo 2: Selecionar e adicionar o controle IHMControls.IHMFlowVale à paleta de objetos.

Passo 3: Modificar o valor das propriedades através da interface disponibilizadas pelo WinCC.


Passo 4: Será possível, também, associar um script (VBS, C) ao evento de modificação de estado da válvula. Quanta simplicidade, se imaginarmos alemães programando!

Passo 5: Para testar a chamada dos métodos, adicionar dois botões Abrir e Fechar nativos do WinCC e acrescentar o código abaixo.

segunda-feira, 5 de dezembro de 2011

da Criação de ActiveX para SCADA (Parte 2)

7. ActiveX no Rockwell FactoryTalk
Para usar o controle no Rockwell FactoryTalk, proceda de acordo com as figuras e passos abaixo:

Passo 1: Adicionar o componente IHMControls.IHMFlowValve através do ícone e interface em destaque.

Passo 2: Modificar o valor das propriedades através do Property Panel disponibilizado pelo FactoryTalk. Atenção para o conteúdo de ExposeToVBA, deverá ser VBA Control, para que scripts implementados em VBA sejam capazes de acessar o componente (propriedades, métodos e eventos).

Passo 3: Para testar a chamada dos métodos, adicionar dois botões Abrir e Fechar nativos do FactoryTalk, outra vez, atenção para a exposição a códigos VBA.

Passo 4: Acrescentar o código abaixo na rotina de tratamento do clique dos botões.

8. ActiveX no Microsoft Excel
Para usar o controle no Microsoft Excel, proceda de acordo com as figuras e passos abaixo:

Passo 1: Habilitar a guia Desenvolvedor na personalização da faixa de opções.


Passo 2: Habilitar todas as macros e marcar o checkbox para o Excel confiar no acesso ao modelo de dados de objeto do projeto do VBA na configuração da central de confiabilidade. Após essas modificações será necessário fechar o Excel e abri-lo novamente.

Passo 3: Acessar o Visual Basic for Application através da guia desenvolvedor recém-adicionada.

Passo 4: Inserir um formulário no projeto VBA.

Passo 5: Através da caixa de ferramentas acessar a interface para adicionar o famigerado controle.


Passo 6: Selecionar o IHMControls.IHMFlowValve na lista de controles registrados no sistema operacional.

Passo 7: Adicionar uma instância do componente ao formulário, modificar as propriedades CorAberta e CorFechada para 65280 (Verde) e 255 (Vermelho), respectivamente, e rodar a aplicação.

Passo 8: Parar a aplicação e observar o conteúdo das propriedades CorAberta e CorFechada. Meu Deus! Depois de tanto apanhar para converter os bytes RGB para um long, eles foram perdidos!

9. A Mala
Achou que já sabia tudo sobre ActiveX? Quem não ler até no final será duplamente penalizado.
Na verdade existem duas rotinas de armazenamento de propriedades que foram omitidas durante o desenvolvimento, para corrigir essa falha e evitar que os valores definidos em tempo de desenvolvimento sejam descartados, adicionar a lógica abaixo ao código do componente (Visual Basic 6).


Verificar se a opção Project Compatibility está marcada no quadro de compatibilidade de versões, dentro da interface de configuração do projeto. Depois dessa modificação, recompilar o projeto e registrar nas máquinas, pronto.

Para testar a chamada dos métodos, adicionar dois botões Abrir e Fechar nativos do Microsoft Excel.

Para o Gran Finale, adicionar a seguinte lógica: