Advanced programming techniques
Técnicas de programação avançada

Este capítulo contém maiores informações sobre o Ambiente de Trabalho e sistema destino ISaGRAF. O usuário é aconselhado a se familiarizar com as ferramentas e métodos ISaGRAF antes de ler esta seção.

Mais sobre as ferramentas ISaGRAF

E/S bloqueada e virtual

Validação do link PC-PLC

Diretórios ISaGRAF

Símbolos da aplicação

Limites do ambiente de trabalho "LARGE" (WDL)


More about ISaGRAF tools
Mais sobre as ferramentas ISaGRAF

Na utilização das ferramentas de edição ISaGRAF, o usuário pode pressionar o botão direito do mouse para abrir um menu "popup", que contém os comando principais de edição. O menu é aberto na posição corrente do cursor. Isto é muito útil para reduzir operações do mouse em comandos recortar/colar.

As ferramentas ISaGRAF suportam execução múltipla. Apesar de a mesma ferramenta não poder ser aberta mais de uma vez para editar o mesmo documento, é possível abrir janelas diferentes com a mesma ferramenta e editar paralelamente diferentes objetos.

Outros comandos estão disponíveis para obter informações sobre os botões das barras de ferramentas. Um duplo clique em uma área vazia da barra de ferramentas exibe o conteúdo da barra como um menu popup. Parando o cursor do mouse sobre um botão da barra de ferramentas, um texto com o comando do botão é exibido.


Locked I/Os and virtual I/Os
E/S bloqueada e virtual

A definição de uma placa de E/S como virtual desconecta o processamento de canais físicos de E/S. Quando uma placa é definida como virtual, as operações do "kernel" (fonte) do ISaGRAF não são alteradas. A única diferença é que os sensores de entrada não lidos e os dispositivos de saída não são atualizados. Neste modo, é possível utilizar o depurador ISaGRAF para modificar os valores de entrada. O atributo Virtual se aplica a uma placa inteira. Ele 'w programado durante a definição das placas de E/S, antes da geração do código da aplicação. O atributo virtual é uma característica estática, e é armazenada quando a aplicação é parada e reiniciada.

Outra possibilidade é o bloqueio de variável de E/S. Ele consiste na desconexão do dispositivo físico da variável de E/S correspondente. O bloqueio e desbloqueio de variáveis é realizado através do depurador. O bloqueio de variáveis é uma opção dinâmica, e não é memorizada quando a aplicação reinicia. A operação de bloqueio, se aplica a apenas uma variável (e um canal de E/S) por vez. Este é o resumo das principais características de controle de E/S:

Atributo Virtual	Comando de bloqueio

ferramenta de seleção	Conexão a placa de E/S	depurador

definição	estática	dinâmica

modo de seleção	placa	variável

aplicação	validação e testes	manutenção

O seguinte gráfico explica o fluxo de dados de E/S entre as tarefas ISaGRAF:

Quando uma variável de entrada é bloqueada, os vários acessos ao banco de dados não são alterados, mas o dispositivo de entrada é desconectado. Valores de entrada podem ser determinados através do depurador e processados pelo kernel ISaGRAF:

Quando uma variável de saída é bloqueada, o kernel de execução e o driver de saída são desconectados. Neste caso, o acesso ao dispositivo de saída ainda é possível, através do driver de saída, com o depurador ISaGRAF:

Na determinação do atributo virtual para uma entrada, o banco de dados de entrada e os dispositivos de entrada associados são desconectados. Um driver virtual de E/S toma o lugar do driver real:

A determinação do atributo virtual segue as mesmas regras para uma placa de entrada ou para uma placa de saída. Para placas de saída, o kernel ISaGRAF atualiza o banco de dados de saída. No entanto, este banco de dados e os dispositivos de saída associados são desconectados. Um driver de E/S virtual toma o lugar do driver real.

Para resumir todas as possibilidades:


PC-PLC link validation
Validação do link PC-PLC

A maioria dos problemas relacionados a falhas de comunicação entre o Ambiente de Trabalho ISaGRAF e o PLC destino são representados na janela do depurador pela mensagem de estado "desconectado". Antes que quaisquer testes de diagnósticos sejam realizados, a comunicação deve ser validada enquanto nenhuma aplicação está ativa no PLC destino. Deste modo, o link de comunicação serial em si pode ser validado, isolando-o de efeitos relacionados a execução.

A linguagem "C", utilizada para descrição de funções de conversão e funções C, permite acesso direto ao sistema destino. Um erro de programação neste componente de software pode gerar erros de sistema ou comportamento incorreto do sistema ISaGRAF. Tais problemas podem ocorrer quando drivers de E/S são desenvolvidos através do ISaGRAF I/O toolkit. Erros de sistema, por exemplo, podem ser provocados se uma placa de E/S estiver conectada a um endereço de barramento inválido. A tabela a seguir mostra um resumo dos diagnósticos de erro:

estado	contexto	diagnóstico
"desconectado" (antes do descarregamento)		- destino não está executando - sem cabo / cabo inválido - parâmetros do link inválidos - instalação do destino ISaGRAF com problemas
"desconectado" (antes do descarregamento)	modo de início ciclo a ciclo	- configuração de E/S inválida - "crash" do sistema
	modo de início tempo real	- configuração de E/S inválida - "crash" do sistema (devido a programação "C")
"nenhuma aplicação"		- aplicação não descarregada - aplicação não iniciada (devido a programação "C") - não compatibilidade Intel/Motorola - versão inválida do destino


ISaGRAF directories
Diretórios ISaGRAF

O ambiente de trabalho ISaGRAF utiliza uma estrutura de subdiretórios dedicada. O diretório raiz  desta arquitetura é especificado pelo usuário durante a instalação do ISaGRAF. O nome padrão para o diretório raiz do ISaGRAF é ISAWIN. Esta é a arquitetura de subdiretórios padrão criada pelo programa de instalação:

Estes são o subdiretórios padrão ISaGRAF

DIRETÓRIO	CONTEÚDO
APL	diretório raiz para os projetos ISaGRAF cada projeto corresponde a um subdiretório que contém todos os dados do projeto
	outros diretórios podem existir para outros grupos de projeto. O programa de instalação do ISaGRAF cria o diretório "SMP", onde são armazenadas aplicações exemplo.
COM	dados de escopo "comum" Dados que podem ser utilizados por todos os projetos
EXE	programas ISaGRAF e arquivos de ajuda
LIB	bibliotecas ISaGRAF: - listas de elementos - parâmetros ou interface para cada elemento - observações técnicas
LIB\IOC	código fonte de configuração de E/S
LIB\FNC	código fonte de funções escritas em linguagens IEC
LIB\FBL	código fonte dos blocos de função escritos em linguagens IEC
LIB\SRC	código fonte de conversões e funções C
LIB\DEFS	headers (cabeçalhos) para o código fonte de conversões e funções C
LIB\RELS	código objeto de conversões e funções C
LIB\DEV	arquivos de comando para desenvolvimento de bibliotecas "C" "makefiles" (arquivos compilados) , "link lists", etc...
TMP	arquivos temporários: subdiretórios do TMP são reservados para o Gerador de Código e não podem ser apagados.

Os subdiretórios podem ser movidos para outros lugares no disco. Quando o usuário tem uma arquitetura fora do padrão, os caminhos dos subdiretórios devem ser declarados na seção WS001 do arquivo de inicialização  ISA.ini, no subdiretório EXE do ISaGRAF. Aqui estão as variáveis da seção WS001:

Isa	diretório raiz da arquitetura ISaGRAF
IsaExe	diretório raiz dos programas ISaGRAF e arquivos de ajuda
IsaApl	diretório raiz dos projetos ISaGRAF
IsaTmp	diretório de arquivos temporários
IsaSrc	diretório para o código fonte de bibliotecas
IsaDefs	diretório para os headers (cabeçalhos) do código fonte de bibliotecas

Observe que se você alterar a variável IsaTmp para outro subdiretório, você deve criar os subdiretórios OBJS, RELS e DATA no novo diretório. O seguinte exemplo utiliza as variáveis da seção WS001 para redefinir a arquitetura de subdiretórios padrão do ISaGRAF:

;arquivo c:\ISAWIN\EXE\ISA.ini

[WS001]

Isa=c:\isawin

IsaExe=c:\isawin\exe

IsaApl=c:\isawin\apl

IsaTmp=c:\isawin\tmp

IsaSrc=c:\isawin\lib\src

IsaDefs=c:\isawin\lib\defs

Quando você desejar adicionar funções "C" ou blocos de função ao destino ISaGRAF, o diretório \ISAWIN\LIB\DEV será utilizado para armazenar arquivos de desenvolvimento: arquivos de comando, makefiles, mapas, etc... O diretório \ISAWIN\LIB\RELS é utilizado para armazenar o arquivos objeto gerados durante a compilação "C, e as bibliotecas "C" ISaGRAF necessárias para operações de LINK..


Application symbols
Símbolos da aplicação

Cada objeto de uma aplicação ISaGRAF é referenciado por um nome (inserido durante a declaração da variável) e um endereço virtual interno, calculado pelo gerador de código. O endereço virtual de uma variável não é o seu endereço na rede inserido durante a declaração da variável. Endereços virtuais são utilizados para comunicação, e aplicações "C" especiais, utilizando-se a opção OEM. Quando o gerador de código ISaGRAF é executado, ele gera um arquivo ASCII com a correspondência lógica entre nomes e endereços virtuais de todos os objetos (variáveis, programas, etapas...) do projeto. Este arquivo pode ser facilmente "interrogado" para a obtenção de informação sobre o banco de dados estáticos ISaGRAF de qualquer aplicação do usuário. O arquivo se chama "APPLI.TST" e está localizado no diretório do projeto ISaGRAF: "\ISAWIN\APL\proname" (proname é o nome do projeto). Esta seção descreve em detalhes o formato do arquivo "APPLI.TST". A notação utilizada na descrição é mostrada a seguir:

VA	endereço virtual

ATTR	atributo de uma variável

USP	função "C"

Os valores possíveis para os atributos de uma variável são mostrados a seguir. Tais valores ocorrem nos campos "atributos":

+X	variável interna

+C	variável interna somente de leitura

+I	variável de entrada

+O	variável de saída

Todos os números, exceto endereços virtuais, são expressos como inteiros decimais. Os endereços virtuais (VA) são expressos como hexadecimais de 4 dígitos, e são precedidos pelo caractere "!". Por exemplo:

123	este é um número decimal

!A003	este é um endereço virtual hexadecimal

A estrutura geral do arquivo "APPLI.TST" é mostrada abaixo. O arquivo é estruturado como uma lista de blocos. Um bloco é uma lista de registros. Cada registro é descrito em uma linha de texto. Cada bloco começa com um cabeçalho, colocado em uma linha de texto.

Start block

description blocks

end block

A sintaxe geral de um bloco é mostrada abaixo:

@ <nome_do_bloco > <argumentos>

#registro...

# registro...

...

A estrutura do primeiro bloco, contendo as informações principais sobre a aplicação, é mostrada a seguir:

@ISA_SYMBOLS,<appli_crc>

#NAME,<appli_name>,<version>

#DATE,<creation_date>

#SIZE,G=<nbprg>,S=<nbstep>,T=<nbtra>,L=0,P=<nbpro>,V=<nbvar>

#COMMENT,cj international

appli_crc	"checksum" dos símbolos da aplicação

appli_name	nome da aplicação

version	Versão do Ambiente de trabalho ISaGRAF

creation_date	data de geração da aplicação

nbprg	número de programas

nbstep	número de etapas SFC

nbtra	número de transições SFC

nbpro	número de funções "C" utilizadas

nbvar	número total de variáveis

A estrutura do último bloco, que indica o fim do arquivo, é mostrada a seguir:

@END_SYMBOLS

A estrutura do bloco utilizado para descrever os programas da aplicação é mostrada a seguir:

@PROGRAMS,<nbprg>

#<va>,<name>

#...

nbprg	número de programas definidos neste bloco

va	endereço virtual do programa

name	nome do programa

A estrutura do bloco utilizado para descrever as etapas SFC da aplicação é mostrada a seguir. Note que há uma etapa virtual definida para cada programa não-SFC:

@STEPS,<nbsteps>

#<va>,<name>,<father>

#...

nbsteps	número de etapas definidas neste bloco

va	endereço virtual da etapa

name	nome da etapa

father	endereço virtual do programa principal

A estrutura do bloco utilizado para descrever as transições SFC da aplicação é mostrada a seguir:

@TRANSITIONS,<nbtrans>

#<va>,<name>,<father>

#...

nbtrans	número de transições definidas neste bloco

va	endereço virtual da transição

name	nome da transição

father	endereço virtual do programa principal

A estrutura do bloco utilizado para descrever as variáveis booleanas da aplicação é mostrada a seguir:

@BOOLEANS,<nb_boo>

#<va>,<name>,<attr>,<program>,<eq_false>,<eq_true>

#...

e se o número de variáveis exceder 4095:

X#(1.<varno>),<name>,<attr>,<program>,<eq_false>,<eq_true>

nb_boo	número de variáveis neste bloco

va	endereço virtual da variável

varno	alcance do endereço (dentro do tipo de dados booleano)

name	nome da variável

attr	atributo da variável

program	endereço virtual do programa principal

ou "!0000" para um variável global

eq_false	cadeia utilizada para valor false

eq_true	cadeia utilizada para valor true

A estrutura do bloco utilizado para descrever as variáveis analógicas da aplicação é mostrada a seguir:

@ANALOGS,<nb_ana>

#<va>,<name>,<attr>,<program>,<format>,<unit>

#...

e se o número de variáveis exceder 4095:

X#(2.<varno>),<name>,<attr>,<program>,<eq_false>,<eq_true>

nb_ana	número de variáveis neste bloco

va	endereço virtual da variável

varno	alcance do endereço (dentro do tipo de dados analógico)

name	nome da variável

attr	atributo da variável

program	endereço virtual do programa principal

ou "!0000" para uma variável global

format	= "I" para uma variável inteira

= "F" para uma variável real

unit	unidade

A estrutura do bloco utilizado para descrever as variáveis do tipo temporizador da aplicação é mostrada a seguir:

@TIMERS,<nb_tmr>

#<va>,<name>,<attr>,<program>

#...

e se o número de variáveis exceder 4095:

X#(3.<varno>),<name>,<attr>,<program>,<eq_false>,<eq_true>

nb_tmr	número de variáveis neste bloco

va	endereço virtual da variável

varno	alcance do endereço (dentro do tipo de dados temporizador)

name	nome da variável

attr	atributo da variável (sempre +X: interna)

program	endereço virtual do programa principal

ou "!0000" para uma variável global

A estrutura do bloco utilizado para descrever as variáveis do tipo mensagem da aplicação é mostrada a seguir:

@MESSAGES,<nb_msg>

#<va>,<name>,<attr>,<program>,< max_len>

#...

and if variable number exceeds 4095:

X#(4.<varno>),<name>,<attr>,<program>,<eq_false>,<eq_true>

nb_msg	número de variáveis neste bloco

va	endereço virtual da variável

varno	alcance do endereço (dentro do tipo de dados mensagem)

name	nome da variável

attr	atributo da variável

program	endereço virtual do programa principal

ou "!0000" para uma variável global

max_len	tamanho máximo (capacidade declarada)

A estrutura do bloco utilizado para descrever das funções "C" utilizadas na aplicação é mostrada a seguir:

@USP,<nb_usp>

#<va>,<name>

#...

nb_usp	número de funções C neste bloco

va	endereço virtual da função C

name	nome da função C

A estrutura do bloco utilizado para descrever as instâncias de blocos de função "C" utilizados na aplicação é mostrada a seguir:

@FBINSTANCES,<nb_fb>

#<va>,<inst_name>,<fb_name>

#...

nb_fb	número de instancias do bloco de função C neste bloco

va	endereço virtual da instância do bloco de função C

inst_name	nome da instância do bloco de função C

fb_name	nome da referência ao bloco de função C


Limits of ISaGRAF "LARGE" (WDL) workbench
Limites do ambiente de trabalho ISaGRAF "LARGE" (WDL)

Existem algumas limitações para os objetos utilizados no Ambiente de trabalho ISaGRAF. Obviamente, muitos outros limites práticos existem devido à configuração do computador utilizado (memória e espaço em disco disponíveis), e à capacidade do sistema destino ISaGRAF (memória disponível, recursos de hardware e software disponíveis...). Os seguintes números são limites absolutos que não podem ser excedidos.

Para um projeto:

Objeto	Máximo	Observações

Programas	255	englobando principais e subprogramas

Níveis na hierarquia	20

O número de projetos instalado no Ambiente de trabalho somente é limitado pelo espaço disponível no disco rígido.

Para nomes:

Nome para:	Máximo	Observações

Projeto	8 carac

Programa	8 carac

Variável	16 carac	+ 60 caracteres para comentário

Nome de definição	16 carac

Equivalência da definição	255 carac	+ 60 caracteres para comentário

Tabela de conversão	16 carac

Lista de variáveis	16 carac

função / bloco f. (bib)	8 carac	isto se aplica a funções C, blocos de função C

ou funções escritas em linguagens IEC

parâmetro de função (bib)	16 carac	isto se aplica a funções C, blocos de função C

ou funções escritas em linguagens IEC

placa de ES	8 carac

configuração de ES	8 carac

parâmetro oem da placa	16 carac

função de conversão	8 carac

Edição (para um programa):

Objeto	Máximo	Observações

linhas SFC	600

colunas SFC	20

etapas SFC	4095	para todo o projeto, englobando etapas, etapas  iniciais

e etapas finais

transições SFC	4095	para toda a aplicação

edição LD/FBD	200 cols

2000 linhas	este é o tamanho da área de edição em células.

edição Quick LD	sem limite	limites são impostos pela capacidade do PC

rótulos IL	251	no mesmo programa IL

edição de texto	40KBytes

Para o dicionário (para um projeto):

Objeto	Máximo	Observações

variáveis booleanas	65535

variáveis analógicas	65535	englobando variáveis inteiras e reais

temporizadores	65535

variáveis do tipo mensagem	65535

Os limites dados para o número máximo de variáveis booleanas, analógicas ou mensagem englobam variáveis internas, de entrada e de saída. Eles também incluem todos os variáveis ocultas ou temporárias alocadas por compiladores. O número de variáveis editadas juntas (mesmo tipo, mesmo escopo), no editor de dicionário não pode exceder 16000. Dependendo da configuração do PC, o limite pode ser menor que 16000. A aplicação não pode rodar em um destino ISaGRAF versão 1.21 ou anterior se o número total de variáveis de um tipo exceder 4095. O link padrão "Modbus" utilizando endereços de rede não pode ser utilizado se o número de variáveis de um tipo exceder 4095.

Definições	4095	na mesma lista (mesmo escopo)

Definições	255	utilizadas no mesmo programa

Tabelas de conversão	127	utilizadas na aplicação

Pontos em uma tabela	32	definidas na mesma tabela de conversão

Conexões de IO:

Objeto	Máximo	Observações

Placas de ES	256	definidos para a mesma aplicação

(placas ou equipamentos complexos)

Número de placas de E/S incluindo placas simples e itens de equipamentos complexos não pode exceder 256.

Canais de IO	128	na mesma placa

Para bibliotecas:

Objeto	Máximo	Observações

Funções (ling. IEC)	255	instalados juntos na biblioteca

Blocos de função

(ling. IEC)	255	instalados juntos na biblioteca

Funções C	255	instalados juntos na biblioteca

Blocos de função C	255	instalados juntos na biblioteca

instâncias de blocos de

função	4095	para o mesmo tipo de blocos de função na mesma aplicação

Parâmetros de entrada de

funções	31	isto se aplica a funções C e funções escritas em linguagens IEC

Parâmetros de entrada de

blocos de função	32	livremente distribuídos entre parâmetros de entrada e saída

Pelo menos 1 parâmetro é necessário

Função de conversão	128	instalados juntos na biblioteca

Configurações de ES	255	instalados juntos na biblioteca

Placas de ES	255	instalados juntos na biblioteca

Equipamentos complexos

de ES	255	instalados juntos na biblioteca

Parâmetros oem da placa	16