Escolar Documentos
Profissional Documentos
Cultura Documentos
ÍNDICE
Objetivo do curso............................................................................................................3
A quem se destina o curso:.......................................................................................................3
Descrição do curso....................................................................................................................3
Introdução do VBA ao RSView32...................................................................................4
O que é Visual Basic for Application (VBA)...........................................................................4
Introdução.................................................................................................................................7
Visão geral do VBA.......................................................................................................10
Programação Orientada ao Objeto:.........................................................................................10
Fundamentos da Linguagem VBA.........................................................................................12
Laboratório – VBA, criando um procedimento no Microsoft Excel......................................19
Laboratório Adicional.............................................................................................................22
Projeto do RSView32 com VBA....................................................................................23
Antes de começar:...................................................................................................................23
Modelo do diagrama de Objeto..............................................................................................24
Modelo do diagrama de Objeto do RSView contem os seguintes objetos.............................29
Como o RSView32 utiliza o VBA..........................................................................................35
Lab – Um procedi-mento VBA que trabalha com um registro ativo (Activity Log) e executa
comandos do RSView32.........................................................................................................37
Lab - Adicional#1...................................................................................................................41
Lab - Adicional#2...................................................................................................................41
Lab – Criando um Procedimento que trabalha com as Tags em RSView32..........................42
Lab – Usando uma função InputBox......................................................................................44
Lab – Adicional#3..................................................................................................................46
Lab – Usando o Método BrowseForTags...............................................................................47
Lab – Adicional#4..................................................................................................................48
Lab – Usando VBA para escrever para na base de dados do RSView32...............................49
Lab – Usando Formulários no VBA.......................................................................................51
Lab – Adicional#5..................................................................................................................54
1
Índice
Usando Eventos............................................................................................................56
Eventos de Objeto do RSView32:..........................................................................................56
Lab – Usando objetos de eventos no RSView32....................................................................60
Lab – Adicional#6..................................................................................................................63
Ferramentas de depuração e manipulação de erros...................................................64
Depurador de código VBA.....................................................................................................64
Lab – Ferramentas de depuração para VBA em RSView32..................................................69
Manipulação de erro em código de VBA...............................................................................72
Lab – Manipulando erros no VBA para RSView32...............................................................76
Coleção de Objetos do RSView32...............................................................................79
Coleções:.................................................................................................................................79
Otimizando a escrita de tags...................................................................................................82
Lendo tags Eficazmente..........................................................................................................85
Lab – Usando coleções e otimizando escrita/leitura de Tag...................................................88
Acessando modelos de objetos para controle externo ao RSView32.........................90
Introdução:..............................................................................................................................90
Lab – Acessando o modelo de objeto do RSView32 a partir do VBA do Excel...................92
2
Objetivo do curso Capítulo 1
Objetivo do curso
Descrição do curso Este curso apresenta laboratórios práticos que possibilitam criar
uma aplicação, através do Software RSView32 com VBA. O
instrutor demonstrará todos os procedimentos relevantes,
incluindo uma seção de prática integrada que habilita o usuário
a utilizar uma aplicação desenvolvida por ele mesmo.
3
Visão geral do VBA Capítulo 3
O que é Visual Basic Visual Basic para Aplicações faz parte da família de tecnologia
for Application (VBA) do Visual Basic. Seu nome completo é sistema de programação
do Microsoft® Visual Basic©, Edição de Aplicações (VBA).
4
Visão geral do VBA Capítulo 3
O Visual Basic para Aplicações inclui um compilador de
linguagem, em um editor extremamente poderoso, além de
possuir um navegador de objetos, e ferramentas de depuração. O
RSView32, assim como o Microsoft Office 97, fornece aos
desenvolvedores a capacidade de construir aplicações
complexas, com mais flexibilidade possibilitando soluções
customizadas estendendo assim as características do aplicativo
através do Visual Basic para Aplicações e melhorando o
ambiente de desenvolvimento.
As soluções criadas com Visual Basic para Aplicações são
executadas mais rápido desde que o código seja executado no
mesmo espaço de memória, juntamente com a aplicação em que
ele está incorporado tornando direta a integração com a
aplicação. Este permite que os desenvolvedores escrevam um
código o qual irá responder de acordo com as ações do usuário,
possibilitando que um usuário abra, feche, salve ou modifique
um documento, projetos ou manipule os objetos do RSView32.
Finalmente, as distribuições de soluções customizadas em um
RSView32 são BASEADAS EM VBA tornando-se
simplificadas desde que o código esteja incorporado na
aplicação ou no projeto.
O produto RSView32 com VBA fornece um ambiente de
desenvolvimento completo pelo fato de permitir customizações
estendendo assim as funcionalidades do produto. O Microsoft
VBA além de poderoso possui toda a tecnologia da família
Microsoft, possibilitando que você aprenda uma linguagem de
desenvolvimento, habilitando-o a trabalhar com múltiplas
aplicações.
Agora com a integração do VBA, o RSView32 fornece um nível
de interoperabilidade indisponível na maioria dos outros
Softwares de IHM.
5
Visão geral do VBA Capítulo 3
O Visual Basic para Aplicações fornece um ambiente de
desenvolvimento integrado (IDE) isso inclui elementos
disponíveis em um Visual Basic 6.0, incluindo uma Janela de
Projeto, Páginas de Propriedade, depuração completa,
navegação nos objetos e no software.
6
Visão geral do VBA Capítulo 3
Introdução A Rockwell Software está orgulhosa em anunciar que o
RSView32 como a primeira interface homem-máquina (IHM),
disponível entre os pacotes de softwares da companhia, que está
preparado e homologado para utilizar o Microsoft Visual Basic
para aplicações (VBA), como extensão e customização de
soluções através de programação códigos no produto.
7
Visão geral do VBA Capítulo 3
como "scripting", entretanto e preferível que não se use esse
termo para se referenciar ao VBA), o RSView32 além de
permitir a utilização de scripts próprios, possibilita também a
utilização de códigos de programação VBA.
O RSView32 com VBA aproveita todas as funcionalidades do
Microsoft VBA convencional. O VBA do RSView32 tem a
mesma linguagem de programação e desenvolvimento de macros
que pode ser construído em produtos de software do pacote
Microsoft Office97.
O VBA permite ao usuário elevar seu nível de conhecimento
através de treinamentos das aplicações a serem utilizados no
escritório ou em casa. Este por sua vez, reduz o tempo de
aprendizado para adquirir conhecimento para configurar e
customizar aplicações com VBA no RSView32.
Com o VBA, o produto RSView32 pode interagir diretamente
com todos os produtos oficiais da linha Microsoft, como o
Microsoft BackOffice e também com outras aplicações de
Software da Rockwell. O usuário pode incorporar planilhas
eletrônicas do Microsoft Excel, documentos do Word, e
controles ActiveX nas telas gráficas do RSView32 sem ter que
importar ou exportar arquivos ou navegar em telas especifica.
Mais de 100 dos principais fabricantes de software tinham sido
licenciados pela Microsoft para usar o ambiente de
desenvolvimento do VBA em seus produtos. Estes fabricantes
são expertises em produzir mais de 200 produtos diferentes com
VBA, em mais de 23 diferentes setores industriais. Isto fornece
ao desenvolvedor do RSView32 uma habilidade de criar
facilmente soluções por interface com outros produtos
compatíveis com VBA.
Estas soluções são criadas com maior rapidez e seu uso mais
fácil porque os desenvolvedores e os usuários podem reutilizar as
8
Visão geral do VBA Capítulo 3
características da aplicação existente em um ambiente de
desenvolvedor, através de aplicações.
Para aprender mais sobre o Visual Basic da Microsoft
para Aplicações, veja o seguinte website:
http://msdn.microsoft.com/vba/
Para aprender mais sobre as tecnologias mais recentes no
RSView32, veja o conteúdo de IHM no website da
Rockwell Software no:
http://www.software.rockwell.com
9
Visão geral do VBA Capítulo 3
Programação Quando você criar uma aplicação no Visual Basic, você irá
Orientada ao Objeto: trabalhar com objetos. Você pode usar os objetos fornecidos pela
Visual Basic para Aplicações, e ainda poderá controlar outros
objetos da aplicação de dentro da sua aplicação no VBA. Um
objeto é uma combinação de código e dados que podem ser
tratados como uma unidade. Um objeto pode ser um pedaço de
uma aplicação, como um controle ou um formulário. Uma
aplicação inteira pode ser também considerada um objeto no
VBA.
Os objetos do Visual Basic fornecem Propriedades, métodos, e
eventos. As informações de um objeto (configurações ou
atributos) são chamadas a suas propriedades. Os procedimentos
(procedures) que podem atuar em um objeto são chamados de
métodos ("incorporado" na procedure que contem o objeto). Um
evento é uma ação reconhecida por um objeto, como um click no
mouse ou o pressionamento de uma tecla, você poderá escrever
códigos para responder a estes eventos.
Por exemplo, vamos considerar o seguinte, um formulário no
VBA :
10
Visão geral do VBA Capítulo 3
poderia ter seu valor fixo em tempo de projeto e mudado em
tempo de execução através de um código de VBA. A propriedade
poderia ser alterada através de um código utilizando a sintaxe
FormName.Backcolor.
Este formulário pode ter ainda dois métodos um chamado Show
e o outro Hide. Estes métodos poderiam ser chamados através de
um código VBA, para que pudéssemos aplicar neste Formulário
os métodos para que este seja exibido ou escondido.
Este formulário teria vários eventos que puderam ser usados para
executar códigos durante a sua execução através de ações. Por
exemplo, o evento de um clique de um mouse sempre seria
executado quando o usuário clicasse no formulário com o mouse.
11
Visão geral do VBA Capítulo 3
Fundamentos da Procedimentos ou Sub-rotinas - Os procedimentos ou sub-rotinas
Linguagem VBA nada mais são do que uma determinada seqüência de comandos
que são executados de uma só vez ao serem chamados, operando
como um bloco de código para o aplicativo localizado numa área
chamado janela de código. Um Sub-procedimento é normalmente
o tipo mais comum de procedimento. No ambiente de
desenvolvimento VBA, existe no menu de seleção um item aonde
é possível criar um procedimento. Se um procedimento deste tipo
é criado e nomeado de "Test", as linhas seguintes seriam
automaticamente colocadas na janela de código:
12
Visão geral do VBA Capítulo 3
informações em uma variável. A sintaxe é Destino = Fonte, em
outras palavras à informação a ser armazenada na variável estará
no lado direito seguido pelo sinal de igual e sendo colocado em
uma variável declarada ao lado esquerdo.
Store1 = 255
Store2 = Store1 * 150
13
Visão geral do VBA Capítulo 3
variável.
14
Visão geral do VBA Capítulo 3
próximas linhas para facilitar a leitura, e também, esteja certo que
você digitará com um espaço em branco antes do sublinhado em
cada linha que irá dar continuidade ao código que ficou faltando.
If Store1 = 55 Then
Store2 = Store1 + 20
MsgBox “Data has changed”
End if
15
Visão geral do VBA Capítulo 3
Msgbox “You are a youngster”
ElseIf (Store1>=13) And (Store1<=19) Then
Msgbox “You are a teenager”
Else
Msgbox “You are a grown-up”
End If
16
Visão geral do VBA Capítulo 3
Do
strPassword = InputBox("Enter your password")
Loop While strPassword <> "Lefty"
Outro exemplo :
17
Visão geral do VBA Capítulo 3
poderiam fazer isso:
IbIMainTitIeOnForm.ForeColor = vbBlue
IbIMainTitIeOnForm.Caption = "Production Report"
IbIMainTitIeOnForm.FontBold = True
IbIMainTitIeOnForm.Fontltalic = True
IbIMainTitIeOnForm.Visible = True
With IbIMainTitIeOnForm
.ForeColor = vbBlue
.Caption = "Production Report"
.FontBold = True
.Fontltalic = True
.Visible = True
End With
18
Visão geral do VBA Capítulo 3
Laboratório – VBA, 1. Inicie o Microsoft Excel
criando um 2. No Excel, mostre a caixa de ferramentas do VBA
procedimento no clicando em View – Toolbars – Control Toolbox nos
Microsoft Excel menus listados.
19
Visão geral do VBA Capítulo 3
“CommandButton1_Click” é gerado automaticamente
para você, com uma linha de começo (Private Sub
CommandButton1_Click) e outra linha finalizando (End
Sub).
7. Entre essas linhas do procedimento, desenvolva o código
de programação conforme as linhas abaixo:
Private Sub CommandButtonl_Click()
Dim Cel As Integer
Dim Fahr As Integer
Cel = InputBox("Por favor, entre com a temperatura emCelcius")
Fahr = (9 / 5 * Cel) + 32
MsgBox ("A temperatura convertida é " & Fahr & _
" Graus Fahrenheit")
End Sub
8. Antes você executa (RUN) o procedimento, informe-se
que seu código “não bate”, uma caixa de diálogo pode
aparecer dando a opção para terminar (end) ou depurar
(debug) do procedimento. Se você selecionar depuração
(a escolha recomendada), o IDE realçaria a linha do
código que causou o erro. O botão de reset na caixa de
ferramenta pode ser clicado para reiniciar o código.
20
Visão geral do VBA Capítulo 3
o valor entrado, para testar se é um número válido. Por exemplo,
caso você coloque um caracter alfanumérico e clicar em OK no
InputBox, ou mesmo clicar no botão Cancel, o código irá travar
(tente isto). Depois nesta aula, você verá exemplos de códigos
para verificar que o dado entrado na caixa é um número válido
com uma especificação de range, por exemplo. Se você está
familiar com cada código, vá em frente e adicione isto em seu
procedimento. Se ainda não está familiarizado, você agora algo a
mais para procurar aprender na aula.
11. Documente seu código com comentários explicando o que
cada linha do código faz.
12. Retorne à planilha Excel clicando no botão “View
Microsoft Excel” ou clique na tarefa do Excel sobre a
janela da caixa de ferramentas.
13. Nesta hora, clique no botão que acabou de criar e
configurar na planilha para executar o procedimento.
Você pegaria os mesmo resultados de quando você rodou
o procedimento de dentro do IDE (Ambiente de
desenvolvimento integrado).
14. Da planilha, se você quiser retornar para o IDE, você
pode fazer da seguinte maneira:
21
Visão geral do VBA Capítulo 3
indo a propriedades. Trocando as propriedades com
Caption (Título), Font (Fonte), BackColor (cor de
fundo) entre outros.
Laboratório Seguindo o procedimento detalhado do laboratório anterior,
Adicional crie um segundo botão para fazer a conversão de fahrenheit
para Celsius. O cálculo requer a seguinte fórmula
22
Projeto do RSView32 com VBA Capítulo 4
23
Projeto do RSView32 com VBA Capítulo 4
1. 1.Selecione o Object Browser no menu de Visualização
do IDE do VBA, ou clique com o botão do lado direito
na janela de Código para exibir um menu e então
selecione o Object Browser.
2. 2.Na janela Object Browser faça a seleção de uma
biblioteca de objetos do RSView32 na listagem
disponível
3. 3.Clique em um objeto do RSView32 na janela
selecionando as Classes,para ter acesso as suas
propriedades, métodos, e eventos que serão exibidos na
área de Membros.
4. 4.Pressione F1 para exibir a ajuda, mantendo um objeto
destacado ou clicando em uma propriedade, método, ou
evento na janela de Membros, pressionando F1 ou
clicando no ícone "?" será exibido a ajuda necessária
para este objeto, propriedades, métodos ou eventos.
Você pode utilizar também uma ajuda mais completa através da
Ajuda dos Modelos de Objetos do RSView32, dentro do menu
ajuda do RSView32. Selecione o item Conteúdo, Modelos de
Objetos do RSView32.
Modelo do diagrama Nesta parte será mostrado a estrutura de objeto que existe dentro
de Objeto do software RSView 32. Os termos aparecerão em inglês, pois
na programação toda a lógica e comando a ser criado é baseada
no inglês.
24
Projeto do RSView32 com VBA Capítulo 4
25
Projeto do RSView32 com VBA Capítulo 4
26
Projeto do RSView32 com VBA Capítulo 4
27
Projeto do RSView32 com VBA Capítulo 4
28
Projeto do RSView32 com VBA Capítulo 4
Modelo do diagrama Activity – Representa a atividade de registros do RSView32. O
de Objeto do RSView objeto Activity leva a você registra atividades para o registro do
contem os seguintes projeto do RSView32.
objetos
AlarmThreshold – Objeto para ler e escrever as informações
dos limites do alarme para uma tag analógica.
29
Projeto do RSView32 com VBA Capítulo 4
RSView32. O objeto DataLog proporciona acesso para todos os
modelos de registro de dados no projeto. Use a propriedade do
DataLog do objeto do projeto para obter uma referência para o
objeto de registro de dados.
30
Projeto do RSView32 com VBA Capítulo 4
31
Projeto do RSView32 com VBA Capítulo 4
32
Projeto do RSView32 com VBA Capítulo 4
mostrado somente para RSView32 VBA.
33
Projeto do RSView32 com VBA Capítulo 4
referência do objeto Security.
O nome da variável global para o objeto Security é gSecurity.
Este só é mostrado no RSView32 VBA.
34
Projeto do RSView32 com VBA Capítulo 4
35
Projeto do RSView32 com VBA Capítulo 4
Janela de Projeto
Janela de
Propriedade
O objeto de pesquisa é
aberto com este ícone
Janela de Código
Selecione RSView32
para mostrar somente
objetos do RSView32
36
Projeto do RSView32 com VBA Capítulo 4
Lab – Um procedi- 1. Inicie o RSLogix Emulate 5 e o RSView32 Works. No
mento VBA que RSView32, abra um projeto chamado “Projeto VBA”
trabalha com um (C:\Projeto VBA\ Projeto VBA.rsv). Do gerenciador de
registro ativo projetos, abra a pasta lógica e controle e abra o editor
(Activity Log) e Visual Basic com um duplo clique.
executa comandos
do RSView32
37
Projeto do RSView32 com VBA Capítulo 4
2. Entre com o seguinte código na janela:
Public Sub StartFan()
gActivity.Log “Exaustor Ligado!”
End Sub
38
Projeto do RSView32 com VBA Capítulo 4
clique sobre o botão de teste de operação TEST RUN.
39
Projeto do RSView32 com VBA Capítulo 4
diálogo para aceitar suas trocas. Clique no botão para
salvar suas trocas para esta tela.
Public SubStopFan()
gActivity.Log “Exaustor Desligado!”
Dim Resposta as String
Resposta = msgbox(“Você gostaria de visualizar o registro?”, vbYesNo)
If Resposta = vbYes Then gCommand.Execute “ActivityViewer”
40
Projeto do RSView32 com VBA Capítulo 4
End Sub
15. Test Run a tela Exaustor, e clique nos botões vermelho e
verde. Você agora deveria ver uma tela de PopUp
aparecer perguntando “Você gostaria de visualizar o
registro”, depois abrir a tela de Activity Log Viewer.
Lab - Adicional#1 1. Modifique o procedimento StartFun para ficar parecido
com as linhas seguintes:
Public Sub StartFan()
Dim Comentario as String
Dim Resposta as String
Comentario = inputbox(“Entre com comentário sobre sua ação.”)
gActivity.Log Comentario
Resposta = msgbox(“Você gostaria de visualizar o registro?”, vbYesNo)
If Resposta = vbYes Then gCommand.Execute “ActivityViewer”
End Sub
2. Teste os botões verde e vermelho para ver o
funcionamento deste procedimento.
Lab - Adicional#2 No exercício anterior, foi usado o método do objeto Command
para executar os comandos do RSView32 através do VBA (por
exemplo, o gCommand.Execute). O objeto Command também
tem um método chamado BrowseForCommand que mostrará
um “Localizador de Comandos” com potencial de permissão ao
usuário para selecionar um comando de sua escolha para
executar.
AVISO IMPORTANTE: Se usado este método em uma
aplicação real, será necessário tomar cuidado para ver se o
usuário tem permissão para acessar os comandos chamados.
1. Modifique o procedimento da seguinte forma:
Public Sub StartFan()
Dim Comentario as String
Comentario = inputbox(“Entre com comentário sobre sua ação.”)
gActivity.Log Comentario
Dim Resposta as String
41
Projeto do RSView32 com VBA Capítulo 4
Dim CMD as String
Resposta = msgbox(“Você deseja selecionar um comando a ser
executado?”, vbYesNo)
If Resposta = vbYes Then
CMD = gCommand.BrowserForCommand
gCommand.Execute CMD
End If
End Sub
2. Teste estas modificações, pressionando os botões Verde
e Vermelho.
Sub Decrementar()
Dim TL as Tag
Set TL = gTagDb.GetTag(”nivel_tanque”)
If TL.Value>=20 Then
TL.Value=TL.Value - 20
Else
MsgBox “Valor mínimo da Tag excedido”, vbCritical
42
Projeto do RSView32 com VBA Capítulo 4
EndIf
Set TL = Nothing
End Sub
Sub AmostraTag()
Dim TL as Tag
Dim sMensagem as String
Set TL = gTagDb.GetTag(”nivel_tanque”)
sMensagem = Tl.Name & “=” & Tl.Value & “ “ & Tl.Units
MsgBox sMensagem & “até” & Now, vbInformation, “Nível do Tanque”
Set TL = Nothing
End Sub
43
Projeto do RSView32 com VBA Capítulo 4
Lab – Usando uma No Menu do editor VBA, selecione o botão para inserir um
função InputBox novo Procedimento, como mostra a figura abaixo:
44
Projeto do RSView32 com VBA Capítulo 4
criar um novo Sub procedimento.
2. Neste novo procedimento, entre com as seguintes linhas
de código (Entre as declarações “Public Sub
MEU_INPUT()” e “End Sub”):
Dim Armazena As Variant
Dim TL As Tag
Armazena = InputBox (“Por Favor, entre com um valor para carregar”)
Set TL = gTagDb.GetTag (“nivel_tanque”)
TL.Value = Armazena
Set TL = Nothing
End If
3. Salve o código no Computador
4. Adicione um botão na tela TANQUE que irá executar
este novo procedimento (pelo comando VbaExec
MRU_INPUT)
5. Coloque o projeto em TEST RUN e coloque uma letra,
valores entre 0 e 110 e fora desta faixa para ver o que
ocorre.
6. O que aconteceu quando colocou algum caracter?
___________________________________________________
___________________________________________________
7. Quando colocou um valor entre 0 e 100?
___________________________________________________
___________________________________________________
Para que não ocorra falha alguma, é necessário criar uma lógica
45
Projeto do RSView32 com VBA Capítulo 4
que preveja que a variável tem um range, e que não se pode
passar deste, desta forma é necessário colocar a seguinte lógica:
Dim Armazena As Variant
Dim TL As Tag
Armazena = InputBox (“Por Favor, entre com um valor para carregar”)
If IsNumeric(Armazena) Then
If Armazena >=0 And Armazena<=100 Then
Set TL = gTagDb.GetTag (“nivel_tanque”)
TL.Value = Armazena
Set TL = Nothing
Else
MsgBox “Valor entrado está for a do Range”, vbExclamation
End If
Else
MsgBox “Valor entrado não é um número”, vbExclamation
End If
46
Projeto do RSView32 com VBA Capítulo 4
Lab – Usando o 1. Adicione um procedimento VBA para o projeto com as
Método seguintes características:
BrowseForTags Sub Pegar_tags()
Dim MinhasTags As Tags
Dim Conta As Integer
Dim sComando As String
Set MinhasTags = gTagDb.BrowseForTags
sComando = "Display Grafico /T"
For Conta = 1 To MinhasTags.Count
sComando = sComando & MinhasTags(Conta).FullName
If Conta <> MinhasTags.Count Then
sComando = sComando & ","
End If
Next Conta
gCommand.Execute sComando
End Sub
2. No gerenciador de Projeto vá a Graphics, Display, e
com o botão direito do mouse, crie uma nova tela
chamada Gráfico. Nesta tela, coloque um gráfico de
tendência, para que se possa visualizar variáveis dentro
dele, como mostra a figura abaixo, por exemplo.
48
Projeto do RSView32 com VBA Capítulo 4
Lab – Usando VBA 1. No projeto RSView32, crie uma tela chamada “Nível”.
para escrever para na Como mostra a figura abaixo
base de dados do
RSView32.
49
Projeto do RSView32 com VBA Capítulo 4
abaixo:
Public Sub TROCAMax()
Dim pre As Tag
Dim acc As Tag
Set pre = gTagDb.GetTag("Device\t4pre")
Set acc = gTagDb.GetTag("Device\t4acc")
acc.MaximumValue = pre.Value
acc.WriteConfiguration
End Sub
5. Adicione um botão na tela Nível que irá executar o
Procedimento TROCA_MAX, com o título “Troca de
Range”.
6. Depois de criar o botão coloque a tela em Test Run e
troque o valor de preset e clique no botão criado. Repare
que o valor do máximo ainda não foi trocado, pois será
necessário clicar em Normal, e depois em Test Run
novamente, para que a variável seja trocada.
7. Se quiser uma tela mais dinâmica, que após clicar no
botão a variável troque de valor, será necessário
adicionar mais duas linha a lógica anterior.
gCommand.Execute “Abort Nivel”
gCommand.Execute “Display Nivel”
8. Desta forma, a tela fechará e abrirá sozinha sem que se
perceba.
AVISO: Na primeira vez que pressionar o botão uma mensagem
irá aparecer perguntando se você quer salvar as alterações da
tela Nível.gfx. Clique em SIM (YES). Isto é normal porque a
tela vai para o modo de edição (EDIT) para RUN e isso não
ocorrerá mais depois do primeiro clique.
50
Projeto do RSView32 com VBA Capítulo 4
Lab – Usando 1. Do gerenciador de projeto do RSView32, Crie uma tela
Formulários no VBA chamada TelaInicial. Nela entre em propriedades (clicar
com o botão direito, vá a Display Settings), vá a aba
Behavior e em CommandsStartup coloque a seguinte
sentença “VbaExec MostrarFormulario”. Depois no
gerenciador de projetos vá até aba System Startup, na
aba Startup coloque a TelaInicial em Inicial Graphic.
2. Vá ao editor do Visual Basic do RSView32 e selecione
no menu o item inserir UserForm.
3. Um UserForm e uma caixa de ferramenta aparecerão
conforme mostra a figura abaixo.
51
Projeto do RSView32 com VBA Capítulo 4
52
Projeto do RSView32 com VBA Capítulo 4
53
Projeto do RSView32 com VBA Capítulo 4
Public Sub MostrarFormulario()
Userform1.Show
End Sub
54
Projeto do RSView32 com VBA Capítulo 4
Private Sub CommandButton1_Click()
If ComboBox1.Value = "Nivel" Then
gCommand.Execute "Display Nivel"
If ComboBox1.Value = "Exaustor" Then
gCommand.Execute "Display Exaustor"
If ComboBox1.Value = "Tanque" Then
gCommand.Execute "Display Tanque"
Unload UserForm2
End Sub
5. Como no Lab anterior, criar um procedimento para
chamar este novo formulário, ou colocando na
inicialização da tela, ou em um botão.
55
Usando Eventos Capítulo 5
Usando Eventos
56
Usando Eventos Capítulo 5
Por exemplo,
a linha
seguinte de
código na
seção de Declarações Gerais declarará uma variável de nível de
módulo nomeado "Main_Temp":
57
Usando Eventos Capítulo 5
Começando a Monitoração de Evento - Quando esta variável
de objeto de tag for enviado para uma tag, o processo de evento
começará e o evento será continuamente monitorado (como uma
atividade em segundo plano) para uma "condição verdadeira”.
Para enviar a variável de objeto de tag para uma tag, um
procedimento parecido com a seguir, poderia ser usado, que
enviaria a variável de Main_Temp para uma tag na base de
dados chamada mem1:
Sub Tag_EventsStart()
Set Main_Temp = gTagDb.GetTag("mem1 ")
End Sub
Sub Tag_EventsStop()
Set Main_Temp = Nothing
End Sub
Exemplo de um Evento - Pretensiosamente uma aplicação
declarou uma Variável de Objeto de tag de "Main_ Temp", e o
processo de eventos foi inicializado com a execução de um
procedimento como "Tag_ EventsStart", o procedimento
seguinte escreverá informações registro de Atividade do
RSView32:
58
Usando Eventos Capítulo 5
Um exemplo do que o registro de Atividade estaria fazendo
depois que procedimento anterior "Main_Temp_ ValueChange"
fosse executado :
59
Usando Eventos Capítulo 5
Lab – Usando 1. Na área de Declaração geral (General Declaration) da
objetos de eventos sua janela de código “ThisProject”, declare uma variável
no RSView32 chamada Timer4Pre. Esta linha de código deverá
aparecer da seguinte forma.
Sub FimMonitor()
Set Timer4Pre = Nothing
End Sub
5. Na Caixa de Lista Objeto (list Box) da janela de código,
selecione o objeto Timer4Pre (caixa da esquerda).
6. Na caixa de lista procedimento (list Box), selecione o
procedimento StatusChange.
7. Dentro da janela de código, aparecerão a seguintes
linhas.
Private Sub Timer4Pre_StatusChange(ByVal Status As Long)
End Sub
8. Dentro deste procedimento, entre com uma linha de
código que aparecerá uma caixa de mensagem (message
Box) dizendo, “Perda de comunicação com o PLC”.
60
Usando Eventos Capítulo 5
MsgBox "Comunicação com o PLC, trocou de estado"
61
Usando Eventos Capítulo 5
a palavra Status foi declarada como uma variável Long
(Long Integer) na primeira linha de seu procedimento:
Private Sub Timer4Pre_StatusChange(ByVal Status As Long)
17. Em um procedimento StatusChange, a variável “Status”
passará pelos seguintes valores: 0, 1, 2, 3 ou 4. O
conteúdo deste valores podem ser usados dentro de um
procedimento StatusChange para que o código possa
determinar qual status foi alterado. Os valores e as
definições seguem abaixo:
0 – roTagStatusValid – O valor da Tag é válida.
1 – roTagStatusState – O valor da Tag foi lido, mas não foi escaneado.
2 – roTagStatusError – Um erro ocorreu enquanto o valor da tag estava sendo
lido ou escrito
3 – roTagStatusDisabled – O valor de origem da Tag (o nó) foi desativado
4 – roTagStatusUninitialized – O valor da Tag nunca foi lido pelo
dispositivo.
18. Modifique o procedimento StatusChange à seguinte
linhas:
Private Sub Timer4Pre_StatusChange(ByVal Status As Long)
If Status=0 Then MsgBox “Valor do PLC é valido”
If Status=2 Then MsgBox “Valor do PLC está com erro”
End Sub
19. Retorne para o RSView32 coloque a tela “Lab –
Eventos” para funcionar. Então feche o software
RSLogix Emulate 5, veja o que aparece no RSView32,
depois abra novamente o RSLogix Emulate 5, e veja o
que aparece no RSView32.
62
Usando Eventos Capítulo 5
Lab – Adicional#6 Criar um evento que execute somente se os valores da tag
DEVICE\T4PRE trocar. Quando este evento ocorrer, seu
procedimento registrar para o Activity Log e mostrar uma
mensagem ao usuário. A informação de registro e a mensagem
para o usuário indicariam que “Valor device\t4pre foi trocado” e
incluiria também que o valor foi trocado. Por exemplo, uma
mensagem pode aparecer como ilustrado.
63
Ferramentas de depuração e manipulação de erros Capítulo 6
Ferramentas de depuração e
manipulação de erros
Depurador de código Ainda que um programador seja muito cuidadoso, procedimentos
VBA do VBA podem conter além dos erros de sintaxe, erros de lógica
("bugs") também. Estes erros são os mais difíceis de serem achados,
pois uma aplicação pode ter além dos códigos, sintaxe e outros, que
podem ser executados sem qualquer operação de erro, e ainda
produzir resultados incorretos. Encontrar e remover estes bugs são
chamados de depuração.
64
Ferramentas de depuração e manipulação de erros Capítulo 6
O código do VBA entrará em Break Mode quando:
Encontrar um Breakpoint quando seu código for executado.
Encontrar uma declaração de Parada.
Um Watch que você colocou for ativado.
Você apertar a tecla CTRL+BREAK, clicar no Break Mode,
ou pressionar F5 enquanto seu programa estiver sendo
executado.
Uma declaração em uma linha de código gera uma
interrupção de erro em tempo de execução e tipo de
depuração é escolhido na caixa de diálogo que irá aparecer.
Breakpoints - Um breakpoint é um marcador em seu código que
diz ao Visual Basic para suspender uma execução. A inserção de
um breakpoint em um lugar é feita quando você suspeitar de um
problema, permitindo que você pare seu programa e use as
ferramentas de depuração para investigar. Os breakpoints são
temporários e não são salvos em seu código. Para inserir um
breakpoint:
Posicione a inserção apontando em qualquer lugar em uma
linha do procedimento onde a execução de programa é para
ser paralisado. Nota: você não pode fixar breakpoint em
linhas que contem um código não executável como
comentários, declarações de uma declaração, ou linhas em
branco.
Use qualquer um dos métodos seguintes para adicionar um
breakpoint:
No menu depurar, clique no botão breakpoint.
Aperte a tecla F9.
Clique no botão de breakpoint e depurar na barra de
ferramentas.
Clique com o botão do lado Direito em uma linha de código
e clique no botão breakpoint no menu de atalhos.
65
Ferramentas de depuração e manipulação de erros Capítulo 6
Clique na barra do indicador de Margem próximo à linha de
código.
O breakpoint é adicionado e a linha ganha uma cor no definido no
breakpoint na caixa de diálogo no ToolsOptions. Você poderá usar
o mesmo procedimento acima para limpar um breakpoint do
código. Uma alternativa seria de clicar no menu depurar, selecione
a opção para limpar todos os breakpoints e remova todos os
breakpoints do seu código.
Declaração de parada - A declaração de Parada é semelhante a um
breakpoint, porém ele não executa o resto do código que não foi
marcado até que ele seja removido. As declarações de parada
deverão ser usadas com precaução. Esquecendo de remover as
declarações de Parada no código isso poderá resultar em problemas
futuros.
Barra de ferramentas depurar - Uma vez a depuração executada
em seu programa a paralisação é feita próximo a um ponto que você
está imaginando que um problema está acontecendo, você pode usar
as ferramentas de depuração fornecidas pelo Visual Basic para
investigar e encontrar os problemas. Estas ferramentas incluem a
barra de ferramentas de depuração, a janela de Relógio, a janela
Imediata, e a Pilha de chamadas. A barra de ferramentas de
depuração oferece um acesso rápido a várias e mais freqüentemente
características usadas para depuração.
66
Ferramentas de depuração e manipulação de erros Capítulo 6
execução do código.
Break - Pára a execução de um programa temporariamente.
Clique no botão continuar retornar a execução do programa.
End - Pára de executar o programa e retorna ao modo de
projeto.
Breakpoints - Podem ser inseridos ou removidos. Um
breakpoint é um lugar no código aonde o VBA irá
automaticamente parar a execução do código e entrar no
modo de parada.
Step Into - Executará a próxima linha de código, passo a
passo através de cada linha seqüencialmente. Se o código
fizer uma chamada a um outro procedimento, o passo a
passos será feito em cada linha deste novo procedimento
chamado.
Step Over - Executará a próxima linha de código, passo a
passo através de cada linha de código seqüencialmente. Se o
código fizer uma chamada a um outro procedimento, este
procedimento será executado completamente antes do passo
a passo para a próxima linha de código do primeiro
procedimento.
Step Out - Executará os procedimentos remanescentes e os
breakpoints atuais na próxima linha ao chamar o
procedimento.
Janelas locais - Exibem o valor corrente de cada variável
local.
Janela Imediata - Exiba a janela Imediata se ele não for
exibida. A janela Imediata permite a execução de código ou
a busca de valores enquanto a aplicação estiver no modo
break.
Janela de Relógio - Exiba a janela do Relógio se ela não for
exibido. A janela do Relógio exibirá os valores das
67
Ferramentas de depuração e manipulação de erros Capítulo 6
expressões selecionadas.
Relógio Rápido - Exibe o valor corrente da expressão
através do cursor enquanto estiver no modo break. A
expressão pode ser facilmente adicionada para a janela do
Relógio.
Call Stack - Exiba a caixa de diálogo Call Stack se ele não
for exibido. Enquanto estiver no modo Break, o Call Stack
listará o procedimento ativo atualmente chamado
apresentando uma caixa de diálogo que mostrará todos os
procedimentos que já foram executados e chamados, mas
não os executará.
Watch Windows - A janela do Relógio permite que você monitore
o comportamento de uma variável ou expressão que o programa
estiver executando. Você pode entrar com expressões no relógio
para dizer ao VBA que a variável ou as expressões deverão ser
monitoradas. O VBA irá monitorar as expressões que você escolheu
e, quando o programa entrar no modo Break, dirá a você seus
valores (se eles estiverem dentro do contexto). Você também ter no
VBA o modo break quando uma das expressões do Relógio
encontrar um valor transitando para verdadeiro ou para falso ou
quando tiver este valor mudado. Isto é especialmente útil para
visualizar as mudanças de uma variável dentro de um laço. Quando
utilizado junto com Relógio Rápido (veja Usar o Relógio Rápido e
a Janela Imediata), a janela do Relógio é uma ferramenta eficaz
para detectar e fixar erros.
Janela imediata - Use a janela Imediata para procurar variáveis,
valores de propriedade de objeto, e para executar o código. Por
exemplo, durante a depuração ou teste do código, você poderá usar
a janela Imediata para testar procedimentos, avaliar expressões, e
atribuir novos valores para as variáveis ou propriedades. A
informação de exibição na janela Imediata resulta as declarações de
68
Ferramentas de depuração e manipulação de erros Capítulo 6
depuração que você colocou no código (método Debug.Print) ou o
comando ou o que você escreveu diretamente na janela.
Para avaliar as expressões, você visualizará seus valores. Qualquer
expressão válida pode ser avaliada usando a janela Imediata,
inclusive expressões envolvendo propriedades.
Call Stack - O Call Stack cria uma lista de procedimentos que irá
localizar o fluxo do código através de múltiplos procedimentos
chamados ativos. Os procedimentos chamados ativos são os
procedimentos na aplicação que foram iniciados, mas não foram
terminados. Usando esta ferramenta, a seqüência correta dos
procedimentos podem ser verificados. Por exemplo, um
procedimento pode chamar um segundo procedimento, que pode
chamar um terceiro procedimento - todos antes do primeiro
procedimento foi completado. Tais procedimentos chamados
podem ser difíceis de serem seguidos. O Call Stack mostra este
fluxo a você. Você poderá exibir as pilhas de chamadas quando seu
código estiver em modo break.
Este procedimento mostrará como configurar um Tag Monitor.
69
Ferramentas de depuração e manipulação de erros Capítulo 6
3. Clique em algum lugar dentro deste procedimento e clique
no Run Sub/UserForm na barra de ferramentas de
depuração. O procedimento perguntaria por três números e
dá a você um total. Na primeira vez, assumindo que você
entrou com valores inteiro válidos, seu procedimento
funcionaria sem erros. AVISO: Quando você roda o
procedimento de dentro do ambiente do editor de
RSView32. Quando você estiver acabado retorne para o
editor VBA, clicando no ícone do Visual Basic que fica na
barra de tarefa do Windows.
4. Retorne ao editor VBA
5. Abra a janela Watch selecionado da janela View-Watch.
6. Dentro da janela View-Watch clique com o botão da direita
e selecione “Add Watch...”. Para uma expressão, tipo
“Store1” (sem aspas) e clique OK.
7. Seguindo um procedimento similar, adicione uma variável
TOTAL.
8. Sua janela Watch deveria aparecer o seguinte:
70
Ferramentas de depuração e manipulação de erros Capítulo 6
estão agora referenciadas como Integer e atualmente estão
com o valor ZERO. Também, note que se você passar o
cursor do mouse sobre uma das variáveis na janela de
código que uma “dica sobre a ferramenta” (tooltip) irá
aparecer dizendo a você o valor das variáveis.
12. Passe através das linhas do código no procedimento
repetidamente clicando no botão Step Into e clicando em
OK e/ou entrando com números dentro das caixas de
entrada quando apropriado. Você deveria estar habilitado a
sentir como estas ferramentas de depuração poderiam ser
usadas para passar através dos procedimentos, ajudando-o a
encontrar erros, caso existissem.
13. Quando você estiver confortável com estes procedimentos
de depuração, clique no botão Reset sobre a barra de
depuração para terminar o procedimento.
14. Feche a janela Watch e abra a janela Immediate clicando na
janela ViewImmediate.
15. Inicie o procedimento novamente. Passe através dos
procedimentos até você ter entrado com um valor para a
“linha 2”. Note, como antes você pode passar o cursos pelas
variáveis e visualizar seus valores. Desta vez, Store1 seria
igual ao valor que você colocou. Tipo “?Store” (sem aspas)
na janela Immediate e pressione ENTER. Isto deveria
Mostrar o mesmo valor e mostrar a você um uso para esta
janela, mostrando os valores das variáveis.
16. A janela Immediate pode ser usada também para trocar
variáveis durante o modo Break. Tipo “Store1=99”(sem
aspas) dentro da janela Immediate e pressione ENTER.
Você deveria estar apto a verificar que o valor de Store1 tem
sido trocado para 99 e como você continua executando o
procedimento este valor será usado até Store1 é escrito
71
Ferramentas de depuração e manipulação de erros Capítulo 6
novamente. Este é outro uso da janela Immediate, trocando
os valores das variáveis no modo break.
17. Remova o BreakPoint de seu procedimento
18. Adicione linha e código para seu procedimento que mostrará
o valor da variável total para a janela Immediate antes dos
cálculos matemáticos estão realizados nesta variável e
posteriormente faça de novo. Test Run seu procedimento e
verifique a funcionalidades.
Manipulação de erro Às vezes erros acontecem quando seu programa for executado, e
em código de VBA freqüentemente estes erros não podem ser evitados. Por
exemplo, um procedimento poderia tentar ler o valor de uma
etiqueta (label) de RSView32 que está em erro, ou sua aplicação
poderia tentar abrir um arquivo que não existe no sistema do
usuário. Para uma lista de todos os erros que são “armadilhas”
(trappable) em VBA, veja "Erros de Trappable" em Ajuda de
VBA.
Se você estiver executando um programa no ambiente de
projeto do VBA e um erro de execução acontecer sem que a
interrupção de erro esteja habilitada, o VBA exibirá uma
mensagem e o permitirá entrar no modo Depuração, utiliza-se
de uma referência de ajuda, ou terminar a aplicação. Se você
não estiver com a interrupção de erro habilitado e acontecer um
erro de execução enquanto seu procedimento estiver sendo
executado, o VBA exibirá uma mensagem de erro e a aplicação
e terminada (o código "travará").
Você pode escrever um código que irá fazer a manipulação dos
erros durante a execução e então permitir a correção em
qualquer situação, iniciando uma ação para o usuário, ou
salvando os dados antes de terminar o programa. A manipulação
72
Ferramentas de depuração e manipulação de erros Capítulo 6
de erros deste modo faz com que sua aplicação se torne muito
mais robusta e permita uma saída sem maiores problemas,
ambos os casos são qualidade muito apreciada por usuários.
Em declaração de Erro - Em uma declaração de Erro a
interrupção de erros e habilitada e é especificado o salto durante
a execução quando um erro acontecer. Por exemplo, a
declaração "Em Erro GoTo CheckError" executará um salto
para o código de seu programa intitulado como "CheckError",
que executará tipicamente um código de manipulação de erros,
seguido por uma declaração que ira retomar e indicar onde o
procedimento deverá continuar. A declaração “Em Erro Retoma
Próxima” irá ignorar os erros. Se um erro de execução
acontecer, o aplicativo irá continuar com a próxima linha.
A declaração "On Erro GoTo 0" desabilita o tratamento dos
erros.
Uma vez programado o tratamento dos erros, estes terão seus
valores fixados, eles estarão habilitados até que execução do
procedimento termine ou o tratamento de um erro acabe sendo
inválido.
Objeto Err - O objeto erro contém as informações sobre um
erro que acabou de acontecer. O objeto Err tem suas
propriedades e métodos que você pode verificar assim que o
erro acontecer, para limpar um valor de erro, ou para causar um
erro.
Propriedades
Number - A propriedade Número é um inteiro que
indica o último erro que aconteceu. Em alguns casos, seu
manipulador de erros poderá ser capaz de corrigir um
erro e continuar o procedimento sem interromper o
usuário. Caso contrário, notificará o usuário de um erro,
e então tomar uma ação baseada na resposta do usuário.
73
Ferramentas de depuração e manipulação de erros Capítulo 6
Description - A propriedade de descrição é uma string
que contém a descrição do erro.
Origem - A propriedade origem contém o nome da
aplicação do objeto que gerou o erro. Por exemplo, se
você acessar o Microsoft Excel e ele gerar um erro, o
Microsoft Excel irá apresentar um erro no Err.Number
para que o código corrija e fixe o Err.Source para
Excel.Application.
Clear - O método Clear limpa um erro, colocando o
valor do Err.Number anterior para 0. Use este método
principalmente quando você manipular erros nas linhas.
Raise - O método Raise causa um erro. Para manter o
código do duplicado do errortrapping, use o método de
Raise para passar por um erro e retornar de volta ao
procedimento que irá chamar ou para testar seu próprio
código de manipulação de erros.
Resume - Use a declaração resume para especificar onde sua
aplicação deverá retomar um procedimento depois de manipular
o erro. Existem três variações na declaração resume:
Resume - Retorna para a declaração que causou o erro.
Use esta declaração para repetir uma operação depois de
corrigir o erro.
Resume Next - Retorna a declaração imediatamente
seguindo o que causou o erro.
Resume Line ou Label - Retorna a um número
especifico de linha ou label.
Resumo de Manipulação de erro e Exemplo - O VBA usa o
objeto Err object como um mecanismo normal para lidar com
erros. Quando o modelo de objeto do RSView32 encontra um
erro, ele indica o erro usando este mecanismo que e um
mecanismo normal do VBA. Se você não criar uma
74
Ferramentas de depuração e manipulação de erros Capítulo 6
manipulação de erros, durante a execução do VBA o
manipulador de erros exibirá um erro de execução para o
usuário, avisando que o procedimento irá terminar
inesperadamente. Em alguns casos, esta ocorrência não seria
aceitável.
O código seguinte é um exemplo do que acontece quando uma
seqüência de dados que não tem nenhum tipo de manipulação de
erro, e este gera um erro. Assuma que a tag do RSView32 Tag1
não existe. Quando este procedimento for executado, o erro
(tentando colocar uma variável para uma tag que não existe)
será interceptado pelo manipulador de erros durante a execução
do VBA. O VBA exibirá uma mensagem com um erro de
execução em um caixa de diálogo, e então irá parar a seqüência
de dados (o código "travara"). Qualquer código adicional no
procedimento nunca seria executado. Isto devia ser SEMPRE
evitado.
Sub ExampIeBadErrorHandling()
Dim r As Single
r = gTagDb.GetTag("Tag1 ").Value
. . . other code. . .
. . . other code. . .
End Sub
Sub ErrorHandling()
On Error GoTo Handler
Dim r As Single
75
Ferramentas de depuração e manipulação de erros Capítulo 6
r = gTagDb.GetTag("Tag1 ").Value
. . . other code. . .
. . . other code..
Exit Sub
Handler:
msgbox "Error number " & Err.Number & ", " & Err.Description
Resume Next
End Sub
76
Ferramentas de depuração e manipulação de erros Capítulo 6
especificamente o número do erro e descrição?
4. Clique no botão “End” na caixa de erro e rode o
procedimento novamente. Nesta hora entre com
caracteres alfanuméricos em vez de um número. Você
pegaria o mesmo erro, numero 13 “Type mismatch” (tipo
não válido, não bate) porque o procedimento está
esperando um número inteiro porque Store1 foi
declarado com Inteiro.
5. Modifique o procedimento PartsTotalizer para incluir
um código de manipulação de erro para recuperar-se
deste tipo de erro. Seu código pode ter:
Uma declaração On Error no topo do procedimento para
identificar a “etiqueta” (Label) em caso de erro.
Uma seção de “manipulação de erro” (error-handling)
que checa para ver se o”type mismatch” é um erro que
foi ocorrido. Se for, mostrar uma mensagem, “Entrar
com um Dado válido” e retornar para a linha que gerou o
erro.
6. Seu procedimento deverá ficar parecido com este:
Public Sub PartsTotalizer()
On Error GoTo error_handler
Dim Store1 As Integer
Dim Total As Integer
msgbox "This will totalize number of parts made"
For x = 1 To 3
Store1 = InputBox("Please enter parts made on Line " & x)
Total = Store1 + Total
Next x
msgbox "The total number of parts made is " & Total
Exit Sub
error_handler:
If Err.Number = 13 Then
msgbox "Enter valid data"
77
Ferramentas de depuração e manipulação de erros Capítulo 6
Resume
End If
End Sub
78
Coleção de Objetos do RSView32 Capítulo 7
79
Coleção de Objetos do RSView32 Capítulo 7
Dim Recipe1 As Tags Set Recipe1 = New Tags
Recipe1.Add gTagDb.GetTag("mem1")
Recipe1.Add gTagDb.GetTag("mem2")
Recipe1.Add gTagDb.GetTag("mem3")
Recipe1.Add gTagDb.GetTag("mem4")
80
Coleção de Objetos do RSView32 Capítulo 7
com o valor da terceira tag da coleção:
81
Coleção de Objetos do RSView32 Capítulo 7
palavras, o número de índice e o nome da tag poderiam precisar
ser monitorados pelo procedimento do VBA para verificar se a
tag esta correta e se está provida de uma referência antes de
qualquer código atuar naquela tag.
gTagDb.GetTag("Mytag").value = 10
82
Coleção de Objetos do RSView32 Capítulo 7
exigido quando inicializamos variáveis. O mesmo exemplo de
código, mas agora usando a sintaxe de objetos de tag a seguir:
83
Coleção de Objetos do RSView32 Capítulo 7
collection
‘ initializing the PendingValue does not perform a
' write to the PLC device
Mytag.PendingValue = 0
Next Mytag
' blocks all pending values into one request to RSLinx
' this example waits for the write to complete
' Please note the actual write behavior is dependent an
' the node definition DDE/OPC or Direct
AIIMytags.WritePendingValues RoWait
84
Coleção de Objetos do RSView32 Capítulo 7
existem ainda vantagens de desempenho para este tipo de
abordagem utilizando a sintaxe simplificada, como a tag não
precisa ser verificada antes o objeto de tag, este não precisa
estar implicitamente criado e seria destruído ao escrever as
chamadas.
85
Coleção de Objetos do RSView32 Capítulo 7
recuperado o último valor varrido na tabela de Valores. A
atualização do valor depende da taxa em que o valor da etiqueta
é solicitado.
Exemplos - Os dois próximos procedimentos demonstram que a
leitura de valores nas tags são muito mais rápida se as tags
forem colocadas primeiro em varredura. A sub-rotina pesquisa o
banco de dados para todas as tags da pasta device e então quanto
tempo ele leva para ler e produzir os valores das tags para a
janela Imediata. A primeira seqüência de dados lê os valores das
tags sem colocar as tags em varredura. A segunda seqüência de
dados coloca as tags em varredura antes de ler os valores da tag.
Sub OneShotReads()
Dim oTags As Tags
Dim oTag As Tag
Dim fCount As Single
'Query the tag database for all tags in the Device folder
Set oTags = gTagDb.QueryForTags("device\*”)
'Get the current time fCount = Timer
'Loop through all tags in the collection
For Each oTag In oTags
'Output the Tag name and value to the Immediate window
Debug.Print oTag.Name & " _ " & oTag.Value
Next
'Calculate and display the time to read the tag values
fCount = Timer - fCount
msgbox "Time to get values: " & fCount & " seconds. "
End Sub
Sub ScannedReads()
Dim oTags As Tags Dim oTag As Tag
Dim fCount As Single
'Query the tag database for all tags in the Device folder
Set oTags = gTagDb.QueryForTags("device\*")
'Get the current time fCount = Timer
86
Coleção de Objetos do RSView32 Capítulo 7
'Place all of the tags in the collection on scan
oTags.ScanOn roWait
'Loop through all tags in the collection
For Each oTag In oTags
'Output the Tag name and value to the Immediate window
Debug.Print oTag.Name & " = " & oTag.Value
Next
'Take all of the tags in the collection off scan
oTags.ScanOff
'Calculate and display the time to read the tag values
fCount = Timer - fCount
msgbox "Time to get values: " & fCount & " seconds. "
End Sub
87
Coleção de Objetos do RSView32 Capítulo 7
Lab – Usando 1. Em seu editor VBA, para RSView32 em
coleções e “Projeto_VBA”, entre com o seguinte procedimento em
otimizando “ThisProject” que fica em RSView32 Objects.
escrita/leitura de Tag Sub AssignTagsToCollection()
Dim Recipe1 As Tags
Set Recipe1 = New Tags
Set Recipe1 = gTagDb.QueryForTags("device\int*")
Dim DATA As Tag
For Each DATA In Recipe1
msgbox DATA.Name & "=" & DATA.Value
Next DATA
Set Recipe1 = Nothing
End Sub
88
Coleção de Objetos do RSView32 Capítulo 7
código alterado, use a coleção de tags e aplique-las
ligando e desligando a varredura (Scan) é altamente
recomendado para melhorar a performance de seus
procedimentos em VBA.
5. Uma vez satisfeito com o procedimento atual, apague a
linha de código que causou as caixas de mensagem para
serem mostradas. Adicione uma linha de código para
que o nome, endereço e valor de cada tag será impresso
na tela da janela Immediate. Teste em Run seu
procedimento e localize os erros se necessário.
6. Adicione um código para seu procedimento para induzir
o usuário para um valor a ser carregado para cada uma
das tags na coleção. Seu código melhoraria a escrita de
tags, fazendo uso das propriedades PendingValue e
métodos WritePendingValues. Como antes, seu código
também imprimirá o nome, endereço e valor das tags na
janela Immediate.
89
Acessando modelos de objetos para controle externo ao RSView32 Capítulo 8
90
Acessando modelos de objetos para controle externo ao RSView32 Capítulo 8
Commandline que será aberto no RSView32.
RsvProj.Command.Execute "Commandline"
91
Acessando modelos de objetos para controle externo ao RSView32 Capítulo 8
mais próximo dos exemplos iniciais da documentação fornecida
em sistemas de ajuda do RSView32 e outras fontes de exemplos
como as bibliotecas de suporte ao Software de Rockwell.
92
Acessando modelos de objetos para controle externo ao RSView32 Capítulo 8
objeto RSView32.
7. Abaixo da linha de código “Private Sub” entre com as
seguintes linhas de código para declararem variáveis.
Dim RsvApp as RSView32.Application
Dim gProject as RSView32.Project
Dim gTagDb as RSView32.TagDb
Dim gActivity as RSView32.Activity
Dim gCommand as RSView32.Command
93
Acessando modelos de objetos para controle externo ao RSView32 Capítulo 8
notar que o RSView32 abra um Command Line. Isto foi
concluído pelo seu procedimento criado no VBA do
Excel interagindo com o modelo de objeto do
RSView32.
13. Adicione e teste o código para produzir um comando
diferente do RSView32 para ser executado do seu
procedimento do Excel (pode ser ActivityViewer,
display, etc).
14. Adicione e teste o código para produzir mensagem de
algum tipo para ser registrado para o Activity Log do
RSView32.
15. Adicione e teste o código para gerar um valor a ser lido
por uma tag do RSView32 e mostrado em uma MsgBox.
16. Adicione e teste o código para permitir um usuário entrar
com um valor em uma InputBox e ter este valor
carregado para uma tag no RSView32.
94