 Utilização do gerador de código

A janela de geração de código é aberta automaticamente pelos comandos "Verificar" e "Compilar" das outras janelas do ambiente de trabalho ISaGRAF. A janela de geração de código não é fechada automaticamente quando a operação de geração de código solicitada termina, de forma que o usuário ainda tem acesso a todos os comandos de geração de código e opções da janela de menu.

Comandos principais

Opções de compilador

Geração do código fonte em linguagem "C"

Visualizando a informação

Definindo recursos


Comandos principais

O menu "Arquivo" contém os comandos para a verificação da sintaxe de programa e geração de código.

Gerar o código do aplicativo

Verificação da sintaxe do programa

Simulando uma modificação

Clicando duas vezes sobre a mensagem de erro abrirá o programa e posicionará o cursor sobre o erro.


Gerar o código do aplicativo

O comando "Compilar" constrói o código inteiro do projeto. Antes de gerar qualquer coisa, este comando confere a sintaxe das declarações e programas. Qualquer erro que não pode ser descoberto durante uma única compilação de  programa é descoberto durante a geração de código. Isto se aplica a tabelas de conversão, variáveis de conexões E/S e ligações com as bibliotecas. A geração de código interrompe a compilação de um programa quando erros são detectados. Este programa deve ser corrigido antes de continuar a geração de código. Programas que já tenham sido conferidos (sem erro detectado) e que não tenham sido modificados desde a sua última operação "Verificar" não são recompilados. A verificação de declaração de variável e a verificação da coerência do aplicativo sempre são processados. Durante a verificação de programa, a operação "Compilar" pode ser abortada pressionando a tecla ESCAPE (ESC).

Nota:	Se a declaração de uma variável local de um programa foi modificada, este programa é verificado. Se uma variável global foi modificada, todos os programas são verificados.


Verificação da sintaxe do programa

O comando "Verificar programa" permite que o usuário verifique somente um programa. O programa selecionado é compilado até mesmo se não foi modificado desde a sua última verificação. O comando "Verificar dicionário" permite que o usuário verifique as declarações de todas as variáveis do projeto.

O comando "Verificar todos os programas" verifica a sintaxe de todos os programas do projeto, até mesmo se alguns deles não tenha sido modificado. Este comando não interrompe quando um erro é detectado em um programa. Pode ser utilizado para produzir uma listagem completa de todos os erros que permanecem em programas do projeto. Este comando pode ser abortado pressionando a tecla de ESCAPE (ESC).


Simulando uma modificação

O comando "Simular modificação" simula uma modificação de todos os programas do projeto, de forma que eles são todos verificados durante a próxima operação "Compilar". O comando "Abrir" é utilizado para abrir o último programa verificado. Este comando é muito útil ter acesso direto a um programa no qual foram detectados erros de sintaxe.


Opções de compilador

O comando "Opções do compilador" é utilizado para configurar os principais parâmetros utilizados pelo Gerador de Código ISaGRAF para construir e aperfeiçoar o código destino. O objetivo principal deste comando é selecionar o tipo de código que tem que ser gerado, de acordo com os objetivos dos ISaGRAF destinos correspondentes, e para configurar os parâmetros de otimização de acordo com o tempo de compilação esperado e as necessidades de tempo de execução do aplicativo.

Selecionando destinos

Processamento SFC

Opções do otimizador

O botão "Carregar…" abre uma segunda caixa de diálogo com outras opções que habilitam a incorporação do código fonte ao código carregado, para habilitar a característica "Carregar" . Refira-se à documentação "Carregar" para explicações adicionais.


Selecionando destinos

A lista superior mostra a lista de códigos de destinos disponíveis que podem ser produzidos. O sinal ">>" é utilizado para indicar o(s) destino(s) selecionado(s). O Gerador de Código ISaGRAF pode produzir até 3 códigos diferentes na mesma operação de compilação. Utilize os botões "Selecionar" e "Anular seleção" para determinar a lista de códigos destinos exigidos, de acordo com o seu hardware destino. A seguir, os destinos ISaGRAF padrões:

SIMULATE:	Este código é dedicado ao Simulador ISaGRAF na Área de Trabalho. O simulador não pode ser executado se este destino não está selecionado para produzir o código de aplicativo.

ISA86M:	Este é um código TIC (Target Independent Code) dedicado aos núcleos ISaGRAF instalados em processadores baseados nos processadores Intel. O tipo de processador só considera a ordenação de byte no código gerado.

ISA68M:	Este é um código TIC (Target Independent Code) dedicado aos núcleos ISaGRAF instalados em um processador baseado em processador Motorola. O tipo de processador só considera a ordenação de byte no código gerado.

SCC:	A seleção deste destino leva o compilador ISaGRAF a produzir código fonte em linguagem "C" estruturado para ser compilado e ligado às bibliotecas do núcleo destino para produzir um código executável incorporado

CC86M:	A seleção deste destino leva o compilador ISaGRAF a produzir código fonte em linguagem "C" não estruturada para ser compilado e ligado às bibliotecas do núcleo destino ISaGRAF para produzir um código executável incorporado. Esta seleção é fornecida para compatibilidade com versões ISaGRAF anteriores a V3.23, quando a geração e a integração de códigos "C" estruturados não eram suportadas.

Refira-se a seu manual de hardware para conhecer o tipo de núcleo destino ISaGRAF instalado em seu PLC. Outros tipos de destinos (código de máquina, código fonte C...) pode ser suportado em futuras versões de ambiente de trabalho ISaGRAF.


Processamento SFC

Verifique a caixa "Processador SFC do usuário embutido" para habilitar a utilização da máquina SFC ISaGRAF. Este modo deve ser preferido já que conduz a desempenhos mais altos de tempo de execução. Porém, a máquina destino pode estar perdendo em algumas implementações particulares do destino ISaGRAF, mais comumente nos destinos personalizados baseados no processamento de código postal ISaGRAF. Neste caso você pode ter que remover esta opção e deixar o compilador ISaGRAF traduzir os gráficos SFC com instruções de baixo nível. Refira-se a sua documentação de hardware para mais informação sobre a utilização desta opção.


Opções do otimizador

A seguir, estão os parâmetros utilizados pelo Gerador de Código ISaGRAF para otimizar o código destino que pode ser configurado a partir da caixa de diálogo "Otimizador". O botão "Padrão" é utilizado para remover todas as opções de otimização para reduzir o tempo de compilação.

Quando a opção "Executar dois passos de otimização" é configurada, o Otimizador de Código ISaGRAF é executado duas vezes. Otimizações feitas durante a segunda passagem geralmente são menos significantes que aquelas feitas na primeira passagem.

Quando a opção "Avaliar expressões constantes" é configurada, expressões constantes são avaliadas pelo compilador. Por exemplo, a expressão numérica " 2 + 3 " é substituída pelo " 5 " no código destino. Quando esta opção não é configurada, as expressões constantes são calculadas durante o tempo de execução.

Quando a opção "Suprimir rótulos não utilizados" é configurada, o Otimizador simplifica o sistema de desvios e rótulos dos programas, de modo a suprimir rótulos de destinos não utilizados ou desvios nulos.

Quando a opção "Otimizar cópia de variáveis" é configurada, a utilização de variáveis temporárias (utilizadas para armazenar resultados intermediários) é otimizada. Esta opção é comumente utilizada com a opção "Otimizar expressões". Quando esta opção está configurada, o Otimizador reutiliza o resultado de expressões e subexpressões que são utilizadas mais de uma vez no programa.

Quando a opção "Suprimir código não utilizado" está configurada, o Otimizador suprime o código que não é significante. Por exemplo, se as seguintes declarações estão programadas: "var := 1; var := X;", o código gerado correspondente  é só : "var := X;".

Quando a opção "Otimizar operações aritméticas" está configurada, o Otimizador simplifica as operações aritméticas de acordo com os operandos especiais. Por exemplo, a expressão " A + 0 " será substituída pelo " A ". Quando a opção "Otimizar operações booleanas" está configurada, o Otimizador simplifica as operações booleanas de acordo com os operandos especiais. Por exemplo, a expressão booleana " A & A " será substituída por " A ".

Quando a opção "Construir diagramas de decisão binária (BDDs)" está configurada, o Otimizador substitui as equações booleanas (misturando operadores AND, OR , XOR e NOT), por uma lista reduzida de operações de desvios condicionais. A tradução só é operada se o tempo de execução esperado da seqüência de desvios for menor que aquela esperada para a expressão original.

A tabela a seguir resume a otimização esperada e tempo de compilação solicitado para cada parâmetro:

ganho (desempenhos)	tempo de compilação

Rodar 2 passos	xxxx	(*)

Otimizar expressões constantes	xxxxxxxxxx	xxxx

Suprimir rótulos não utilizados	xxxx	xxxxxxxxxx

Otimizar cópia de variáveis	xxxx	xxxxxxxxxx

Otimizar expressões	xxxx	xxxxxxxxxx

Suprimir código não utilizado	xxxx	xxxxxxxxxx

Otimizar operações aritméticas	xxxxxxxxxx	xxxx

Otimizar operações booleanas	xxxxxxxxxx	xxxx

Construir diagrama de decisão binária	xxxxxxxxxxxxxxx	xxxxxxxxxxxxxxx

(*) o tempo de compilação é também multiplicado por 2.


Geração do código fonte em linguagem "C"

O ambiente de trabalho de ISaGRAF habilita a produção de código de fonte em " linguagem de C ". Neste caso, todo o conteúdo do aplicativo, incluindo a descrição de gráfico SFC, definição de banco de dados e seqüências de código são gerados no formato de código fonte em "C". Há duas possibilidades, propostas como dois estilos de código gerado:

CC86M (C source code - V3.04)	produz código fonte em "C" não estruturado. Este estilo deve ser selecionado se seu software destino está baseado em ISaGRAF versão anterior a 3.23.

SCC (structured C source code)	produz código fonte em "C" estruturado. Este estilo deve ser preferido se seu software destino está baseado em ISaGRAF versão 3.23 ou posterior.

Os dois arquivos a seguir são criados no diretório de projeto:

APPLI.C	código fonte comum do aplicativo

APPLI.H	definições de linguagem "C" comuns

No caso de geração de código fonte "C" estruturado, um arquivo fonte ".C" e um arquivo de definição ".H" são criados para cada programa do aplicativo, além dos arquivos comuns "APPLI.C" e "APPLI.H".

Estes arquivos devem ser compilados e ligados às bibliotecas destino ISaGRAF para produzir o código executável final. Refira-se ao " Guia de usuário do kit de ferramentas de desenvolvimento ISaGRAF E/S " para informação adicional sobre técnicas de implementação indicadas.

Nota:	Algumas características de depuração tais como carga do aplicativo, modificação online e breakpoints não estão mais disponíveis quando o aplicativo ISaGRAF é compilado em "C".


Visualizando a informação

O menu "Editar" contém os comandos para a visualização de diferentes arquivos texto construídos durante as operações de geração do código ou verificação de sintaxe na janela de gerador de código. A janela de geração de código é uma área de texto que contém mensagens durante as operações de geração de código ou verificação de sintaxe. Toda a informação é armazenada no disco de modo que possa ser examinada utilizando os comandos do menu "Editar".

Comandos de edição

O comando "Apagar" é utilizado para limpar a área de texto da janela. A janela é limpa automaticamente antes de cada operação de geração de código ou verificação de sintaxe. O comando "Copiar" é utilizado para copiar o texto exibido na área de transferência do Windows, podendo assim  ser utilizado através por outros aplicativos tais como editores de texto ISaGRAF.

Visualização das mensagens de saída do compilador

O comando "Mensagens de execução" mostra todas as mensagens exibidas durante a última operação "Compilar" ou "Verificar" na área de texto da janela. Isto se aplica a todas as mensagens de erro.

Outras opções do menu "Editar" permitem que o usuário monitore arquivos de texto auxiliares criados durante a verificação de sintaxe e a geração de código. Estes arquivos normalmente não são utilizados para um projeto ISaGRAF comum.


Definindo recursos

O comando "Recursos" do menu "Opções" permite que o usuário defina recursos. Um recurso são quaisquer dados definidos pelo usuário (configuração de rede, de hardware...) de qualquer formato (arquivo, lista de valores) que tem que ser combinado com o código gerado e com ele ser carregado no PLC destino. Tais dados não são operados diretamente pelo núcleo ISaGRAF e são normalmente dedicados a outros softwares instalados no PLC destino. Refira-se ao seu manual de hardware para informação adicional sobre recursos disponíveis.

Arquivo de definição de recurso

Linguagem de referência

Exemplo

Compilar recursos

Implementação


Arquivo de definição de recurso

Os recursos estão definidos em um "Arquivo de definição de recurso" armazenado com outros arquivos do projeto ISaGRAF. Este é um arquivo texto ASCII puro, processado pelo Compilador de Recurso ISaGRAF. Este compilador é executado automaticamente quando o código de aplicativo é construído. Esta seção explica a sintaxe deste arquivo. O arquivo de definição de recurso utiliza regras léxicas da linguagem ST. Comentários, começando com  os caracteres"(*" e terminando com "*)" podem ser inseridos em qualquer lugar no texto. Cadeias são delimitadas através de apóstrofes simples. Refira-se à segunda parte deste manual para mais explicações sobre os formatos léxicos utilizados para inserir valores numéricos.


Linguagem de referência

A seguir, a lista de palavras chaves e declarações utilizadas em um arquivo de definição de recurso.

ULONGDATA

VARLIST

BINARYFILE

TEXTFILE

TARGET

ANYTARGET

FROM

TO


ULONGDATA

Significado: Especifica um recurso que é uma lista de valores inteiros. Os valores são armazenados no código destino como inteiros sem sinal de 32 bits. Os valores são armazenados na ordem especificada no arquivo de definição de recurso. Os valores devem ser separados através de vírgulas. O nome do recurso não pode exceder 15 caracteres.

Sintaxe:	ULONGDATA '<nome_recurso>'

BEGIN

... seleção_destino...

... lista de valores...

END

Exemplo:	ULongData 'MYDATA'

Begin

...

0, -1, 100_000,	(* decimal *)

16#A0B1, 2#1011_0101	(* hexadecimal, binary *)

End


VARLIST

Significado: Especifica um recurso que é uma lista de endereços de variáveis. As variáveis são identificadas por seus nomes no arquivo de definição de recurso. Os endereços de variáveis são armazenados no código destino como inteiros sem sinal de 16 bits. Os endereços são armazenados na ordem especificada no arquivo de definição de recurso. As variáveis devem ser separadas por vírgulas. O nome do recurso não pode exceder 15 caracteres.

Sintaxe:	VARLIST '<nome_recurso>'

BEGIN

... seleção_destino...

... lista de nomes de variáveis...

END

Exemplo:	VarList 'LIST'

Begin

...

Var100, MyParameter, Command, Alarm

End


BINARYFILE

Significado: Especifica um recurso Arquivo Binário. Os dados de fonte são armazenados em um arquivo MS-DOS. A definição do recurso destino é complementada com um nome do caminho destino. Caracteres de fim de linha (EL) não são convertidos pelo Compilador de Recurso ISaGRAF. O nome do recurso não pode exceder 15 caracteres.

Sintaxe:	BINARYFILE '<nome_recurso>'

BEGIN

... seleção_destino...

FROM '<nome_do_caminho_fonte>'

TO '<nome_do_caminho_destino>'

END

Exemplo:	BinaryFile 'MYFILE'

Begin

...

From 'c:\user\config.bin'

To '/dd/user/appl/config.dat'

End


TEXTFILE

Significado: Especifica um recurso Arquivo Texto. Os dados de fonte são armazenado num arquivo ASCII. A definição de recurso destino é complementada com um nome do caminho destino. Os caracteres de fim de linha (EL) são convertidos pelo Compilador de Recurso ISaGRAF de acordo com as convenções do sistema host destino. O nome do recurso não pode exceder 15 caracteres.

Sintaxe:	TEXTFILE '<nome_recurso>'

BEGIN

... seleção_destino...

FROM '<nome_do_caminho_fonte>'

TO '<nome_do_caminho_destino>'

END

Exemplo:	TextFile 'MYFILE'

Begin

...

From 'c:\user\config.bin'

To '/dd/user/appl/config.dat'

End


TARGET

Significado: Especifica o nome do código destino que tem que incluir o recurso. Refira-se à seção anterior (opções de compilador) para informação adicional sobre destinos controlados. A declaração "Target" pode aparecer mais de uma vez no mesmo bloco de recurso para selecionar vários destinos. Esta declaração não pode ser usada se a declaração "AnyTarget" está especificada.

Sintaxe:	TARGET '<nome_destino>'

Exemplo:	BinaryFile 'MYFILE'

Begin

Target 'ISA86M'

Target 'ISA68M'

...

End


ANYTARGET

Significado:Especifica que o recurso deve ser combinado com todos os códigos destino criados pelo Gerador de Códigos. O Gerador de Código ISaGRAF pode produzir vários códigos destino durante o mesmo comando "Compilar". Esta declaração não pode ser utilizada se uma ou várias declarações "Target" são especificadas.

Sintaxe:	ANYTARGET

Exemplo:	ULongData 'MYDATA'

Begin

AnyTarget

...

End


FROM

Significado: Especifica o nome do caminho fonte (no PC em que o Ambiente de Trabalho ISaGRAF está instalado) de um recurso BinaryFile ou TextFile. Os caracteres utilizados para isolar os componentes do nome do caminho (unidade, diretório, prefixo, sufixo) tem que estar conforme as convenções do sistema MS-DOS.

Sintaxe:	FROM '<nome_do_caminho_destino>'

Example:	BinaryFile 'MYFILE'

Begin

...

From 'c:\user\config.dat'

To '/dd/user/appl/config.dat'

End


TO

Significado:	Especifica o nome do caminho destino (no sistema destino) de um recurso BinaryFile ou TextFile. Os caracteres utilizados para isolar os componentes do nome do caminho (unidade, diretório, prefixo, sufixo) têm que estar conforme as convenções do sistema "host" destino.

Sintaxe:	TO '<nome_do_caminho_destino>'

Exemplo:	TextFile 'MYFILE'

Begin

...

From 'c:\user\config.dat'

To '/dd/user/appl/config.dat'

End


Exemplo

A seguir, um exemplo completo de um arquivo de definição de recurso:

(* arquivo de definição de recurso *)

ULongData 'DATA1'	(* lista de valores *)

Begin

   Target 'ISA86M'	(* apenas para este "target" *)

   1, 0, 16#1A2B3C4D, +1, -1	(* valores numéricos *)

End

VarList 'VLIST1'	(* lista de variáveis *)

Begin

   Target 'ISA86M'	(* apenas para este "taget" *)

   Valve1, StateX, Command, Alrm1	(* nome das variáveis *)

End

BinaryFile 'FILE1'	(* definição do arquivo binário *)

Begin

   AnyTarget	(* dedicado para todos "targets" *)

   From 'c:\user\updatef.bin'	(* arquivo fonte no PC *)

   To 'updatef.cfg'	(* arquivo "target" no PLC *)

End

TextFile 'FILE2'	(* definição do arquivo texto *)

Begin

   Target 'ISA68M'

   From 'c:\nw\nwbd.txt'	(* arquivo fonte PC *)

   To '/nw/dat/nwbd'	(* arquivo "taget" no PLC *)

End


Compilar recursos

Se recursos foram inseridos em arquivo de definição de recurso, uma caixa de diálogo é apresentada ao término da geração de código ISaGRAF. Pressione o botão "Iniciar compilação" para executar o compilador de recurso. Mensagens de saída e erros serão exibidas no controle principal. Pressione "Sair" para evitar a compilação de recurso. Neste caso, não serão acrescentados recursos ao código ISaGRAF.


Implementação

O número de recursos, o tamanho das linhas de dados e arquivos não estão limitados pelo ISaGRAF. Os recursos são armazenados ao término do código gerado, com um diretório de recurso. A seguir, o formato (utilizando notações em C) do formato de diretório de recurso:

__RESOURCE:

{

  long nbres;	/* número de recursos definidos */

  {

    char name[16];	/* nome do recurso */

    long type;	/* tipo de dado do recurso */

    long size;	/* tamanho exato do bloco de dados */

    void *data;

    char *path_offset;	/* pontos para uma "string" */

  } /*nb of records */

}

A seguir, os possíveis valores do "tipo" de campo:

1 = arquivo binário

2 = arquivo texto

3 = dados de ulong (o campo de path_offset não é utilizado neste caso)

4 = lista de variável (o campo de path_offset não é utilizado neste caso)

Para arquivos texto, os caracteres de fim de linha (EL) são traduzidos pelo compilador de recurso, de acordo com as convenções de sistema destino. Todos os ponteiros são offsets de 32 bits do endereço da estrutura correspondente. Todos os nomes de recurso e nomes de caminhos são cadeias terminadas por NULL. Os nomes dos caminhos e os dados seguem o diretório de recurso.