05.10.2019 Views

BRESIMAR(asaTek)-Beckhoff-Nota Aplicação TwinCAT 2-13 NOVRAM

BECKHOFF - TwinCAT 2 Nota de Aplicação Técnica - 13 Memorias NOVRAM (v1.3/2018) Da empresa BRESIMAR AUTOMAÇÃO (Aveiro / Portugal) Autoria: asaTek / Jorge Andril

BECKHOFF - TwinCAT 2
Nota de Aplicação Técnica - 13 Memorias NOVRAM (v1.3/2018)
Da empresa BRESIMAR AUTOMAÇÃO (Aveiro / Portugal)
Autoria: asaTek / Jorge Andril

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Beckhoff</strong> <strong>TwinCAT</strong><br />

The Windows Control and Automation Technology<br />

NOTA DE APLICAÇÃO <strong>13</strong><br />

Princípios básicos de utilização da <strong>NOVRAM</strong> em<br />

PCembedded - CX e IPC´s<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>)<br />

e-mail j.andril@bresimar.pt<br />

B-NA<strong>13</strong>(v1.3)<br />

Outubro/2018


Bresimar Automação, S.A.<br />

Geral (Sede)<br />

Quinta do Simão - EN109 - Esgueira<br />

Apartado 3080<br />

3801-101 Aveiro<br />

PORTUGAL<br />

Telf . +351 234 303 320 Telm . +351 939 992 222<br />

Fax +351 234 303 328/9<br />

e-mail bresimar@bresimar.pt


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

Índice<br />

1. Introdução 2<br />

2. <strong>NOVRAM</strong> – Memoria RAM não volátil 2<br />

3. Visão geral dos dispositivos com <strong>NOVRAM</strong> 3<br />

3.1. Vantagens e desvantagens da <strong>NOVRAM</strong> 4<br />

4. Arquivo de dados na <strong>NOVRAM</strong> por FB 4<br />

4.1. Descrição da FB (“FB_NovRamReadWriteEx”) 8<br />

5. Arquivo de dados na <strong>NOVRAM</strong> com System Manager 10<br />

6. Terminal <strong>NOVRAM</strong> - EL6080 14<br />

6.1. Acesso cíclico 14<br />

.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 1 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

1 – Introdução<br />

Todos os sistemas BECKHOFF tem a capacidade de guardar e manter dados quando<br />

ocorre uma falha de energia. Em muitas aplicações de automação necessitamos que alguns<br />

dados (ex. parâmetros de máquina, receitas com tabelas de teste, etc.) não sejam perdidos<br />

quando ocorrem cortes de energia e consequentemente a alimentação elétrica da CPU.<br />

Após o reativar do sistema esses dados serão recuperados. Esses armazenamentos podem<br />

ser feitos de diversas maneiras, dependendo dos dados que pretendemos armazenar, da sua<br />

quantidade e que tipo de sistema BECKHOFF estamos a utilizar. Um tipo de memória, não<br />

volátil, é designado por <strong>NOVRAM</strong> e é utilizado em alguns dispositivos da BECKHOFF.<br />

Esta nota de aplicação aborda e descreve esse tipo de armazenamento de dados em memória<br />

não volátil.<br />

O acrónimo <strong>NOVRAM</strong> significa “Non-Volatile Random Access Memory”. O que<br />

significa que é um tipo de memória que pode guardar dados como uma memória ROM<br />

(conserva os dados mesmo que haja um corte de energia) mas com a possibilidade,<br />

ilimitada, de escrita de dados (ao contrario da ROM).<br />

Os dados salvaguardados são escritos, numa primeira fase, em RAM pelo <strong>TwinCAT</strong><br />

e depois automaticamente copiados para a <strong>NOVRAM</strong>, em caso de corte da alimentação<br />

elétrica. Um condensador, integrado no sistema da <strong>NOVRAM</strong>, permite a energia suficiente<br />

para essa operação.<br />

O sistema BECKHOFF, que este documento técnico utilizou, foi um PC embedded<br />

CX9010 com <strong>NOVRAM</strong> integrada. Foi utilizada, também, a livraria TxIoFunctions.lib e<br />

que deverá ser instalada no seu editor de programa <strong>TwinCAT</strong>.<br />

2 – <strong>NOVRAM</strong> – Memória RAM não volátil<br />

A memória <strong>NOVRAM</strong>, usada como backup de dados, é uma memória que pode<br />

armazenar dados com um número ilimitado de gravações. Quando o código é executado o<br />

PLC escreve ciclicamente na memória de trabalho RAM. Quando ocorre um corte de<br />

energia ao sistema, estes dados são perdidos. Para podermos manter esses dados ou outros<br />

teremos de escreve-los e copia-los para a <strong>NOVRAM</strong>. O sentido dos dados RAM versus<br />

<strong>NOVRAM</strong> será tanto de escrita como de leitura (cópia dos dados da <strong>NOVRAM</strong> para a<br />

RAM). Esses ciclos de leitura e escrita podem ser controlados pelo PLC usando Funções<br />

Bloco ou usando variáveis ligadas no System Manager.<br />

Quando utilizamos a Função Bloco, para arquivar os dados, podemos despoletar a<br />

ordem de escrita através de um evento digital ou através de eventos temporais cíclicos. É<br />

de alertar que as tarefas de escrita “roubam” processamento à CPU. Para evitar e aligeirar<br />

esse processamento é recomendado não guardar grandes quantidades de dados de uma só<br />

vez. Devemos dividi-los em blocos mais pequenos, espaçar os eventos temporais de escrita<br />

e se possível usar diferentes instâncias da Função Bloco.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 2 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

O Programa do PLC não é guardado na <strong>NOVRAM</strong>, mas sim em ficheiro residente<br />

na placa de memória (Flash Memory …/<strong>TwinCAT</strong>/ Boot/) que possui o Sistema Operativo<br />

do CX.<br />

3 – Visão geral dos dispositivos com <strong>NOVRAM</strong><br />

A tabela em baixo mostra as diferentes memórias internas disponíveis para os vários<br />

modelos CX, bem como a memória extra disponível para os PC´s Industriais da<br />

BECKHOFF.<br />

Sistemas BECKHOFF Descrição Tamanho da <strong>NOVRAM</strong><br />

PCe<br />

CX80xx Não tem <strong>NOVRAM</strong> (UPS/1s) 1 M byte<br />

CX90xx (CX9020 *) CPU com <strong>NOVRAM</strong> integrada 128 K byte<br />

CX10xx <strong>NOVRAM</strong> separada (CX1100-000x **) 8 K byte<br />

CX50xx Não tem <strong>NOVRAM</strong> (UPS/1s) 1 M byte<br />

CX20xx CPU com <strong>NOVRAM</strong> integrada 128 K byte<br />

PC<br />

PCI Card Fieldbus FC3101-002 Profibus DP 32 K byte<br />

FC3102-002 Profibus DP<br />

FC5101-002 CANopen<br />

FC5102-002 CANopen<br />

FC5201-002 DeviceNet<br />

FC5202-002 DeviceNet<br />

Mini PCI Card Fieldbus<br />

(encomendado com os<br />

C692x,CP62xx,CP66xx)<br />

FC3151-002 Profibus DP<br />

FC5151-002 CANopen<br />

FC5251-002 DeviceNet<br />

FC7551-002 Sercos<br />

128 K byte<br />

Panel PC<br />

CP67xx-0020 C9900-R229 256 K byte<br />

CP77xx-0020 C9900-R229 256 K byte<br />

CP62xx,CP64xx,CP65xx, C9900-R230<br />

128 K byte<br />

CP67xx,CP71xx,CP72xx, C9900-R231<br />

256 K byte<br />

CP77xx<br />

C9900-R232<br />

512 K byte<br />

Mini PCI Card Fieldbus<br />

(encomendado com a<br />

CP72xx)<br />

FC3151-002 Profibus DP<br />

FC5151-002 CANopen<br />

FC5251-002 DeviceNet<br />

FC7551-002 Sercos<br />

128 K byte<br />

Terminal<br />

EL6080 Terminal EtherCAT com <strong>NOVRAM</strong> 128 K byte<br />

* Tem opção de UPS/1s [CX9020-U900] , ** [CX1100-000x] = Fonte de Alimentação<br />

1 kbyte = 1024 byte<br />

Exemplo: 32 K byte = 32768 byte => 16384 word (tamanho, 16 bits)<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 3 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

3.1 – Vantagens e desvantagens da <strong>NOVRAM</strong><br />

Vantagens:<br />

É fácil de usar.<br />

Existem Funções Bloco para o seu manuseamento.<br />

Não necessita de alimentação por bateria.<br />

Desvantagens:<br />

Tamanho limitado de memória.<br />

Os dados não podem ser editados fora do programa do PLC o que é uma<br />

desvantagem na gestão de receitas.<br />

A sobrecarga de processamento na CPU é muito alta, se gravarmos<br />

grandes quantidades de dados de uma só vez na <strong>NOVRAM</strong>. Neste caso a<br />

melhor solução é usar diversas instâncias da Função Bloco, com eventos<br />

separados.<br />

Seguem-se dois exemplos de como podemos gravar dados na <strong>NOVRAM</strong>. No<br />

primeiro exemplo usaremos uma Função Bloco disponibilizada pela BECKHOFF e no<br />

segundo caso iremos usar a ligação dos dados diretamente a variáveis alocadas à<br />

<strong>NOVRAM</strong>, usando o System Manager.<br />

4 – Arquivo de dados na <strong>NOVRAM</strong> por FB<br />

A biblioteca com as Funções Bloco de manuseamento da <strong>NOVRAM</strong><br />

(TcIoFunctions.lib) pertence às livrarias, sem custo, quando da instalação do <strong>TwinCAT</strong>.<br />

As Funções Bloco utilizadas dependem do sistema (CPU) BECKHOFF que está ou vai<br />

utilizar na sua aplicação. Na tabela, em baixo, indicamos as Funções Bloco a utilizar em<br />

cada CPU.<br />

Seleção da CPU Função Bloco a utilizar Versão do <strong>TwinCAT</strong><br />

Cartas FCxxx<br />

FB_NovRAMReadWrite <strong>TwinCAT</strong> v2.8.0 Build > 722<br />

CX com Intel (x86)<br />

CX com ARM<br />

Cartas FCxxx<br />

CX com Intel (x86)<br />

CX com ARM<br />

FB_NovRAMReadWriteEx <strong>TwinCAT</strong> v2.10.0 Build > 1231<br />

O programa exemplo, em anexo, foi criado para um PCe CX9010 com processador<br />

ARM e o <strong>TwinCAT</strong> V2.10. Por esse motivo a Função Bloco a ser usada deve ser a FB<br />

NovRAMReadWriteEx .<br />

Inicie um novo projeto, no editor <strong>TwinCAT</strong> Control. De seguida vá para a pasta<br />

Resources e instale na subpasta Library Manager a livraria TcIoFunctions.Lib.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 4 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

Clique na pasta Library Manager. Clique na parte branca da janela em que aparece<br />

a livraria Standard.lib. De seguida, com a tecla direita do rato, escolha o comando<br />

Additional Library. Agora escolha a biblioteca TcIoFunctions.<br />

Uma vez esta biblioteca adicionada ao seu projeto poderá dar inicio a construção do<br />

seu programa no <strong>TwinCAT</strong> PLC Control.<br />

No programa exemplo o programa principal MAIN foi feito em ST – Structured Text<br />

e o programa NovramProg em FBD – Function Block Diagram<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 5 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

No programa NovRamProg adicione uma Box e selecione a instrução AND, que se<br />

encontra dentro da Box que colocou. De seguida clique na tecla função F2. Surgirá a janela<br />

de Input Assistant que irá permitir escolher a Função Bloco.<br />

Selecione a Função Bloco FB_NovRamReadWriteEx e clique de seguida em OK.<br />

A instância da Função Bloco irá ser declarada com o nome NovRam_Re_Wr_EX.<br />

Digite esse nome em cima da caixa da Função Bloco e de seguida faça Enter. Declare a<br />

variável clicando em OK.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 6 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

Agora, a Função Bloco é declarada como mostra a figura em baixo.<br />

De seguida inicie o configurador System Manager.<br />

Faça uma ligação ao hardware existente (ex. CX9010) usando o System Manager.<br />

Clique na pasta NOV/DP-RAM e de seguida na subpasta General. Verifique qual o Id que<br />

foi atribuído a este Device (no ex. 3). Este Nº vai ser utilizado na variável de entrada nDevId<br />

da Função Bloco, utilizada no projeto do <strong>TwinCAT</strong> Control.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 7 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

4.1 – Descrição da Função Bloco FB_NovRamReadWriteEx<br />

Descrições das variáveis de entrada da Função Bloco FB_NovRamReadWriteEx:<br />

VAR INPUT Tipo dado Descrição<br />

nDevId UDINT Device ID da <strong>NOVRAM</strong>, lido do System Manager<br />

bRead BOOL Ativa a leitura da <strong>NOVRAM</strong> (flanco ascendente)<br />

bWrite BOOL Ativa a escrita na NOVRAN (flanco ascendente)<br />

cbSrcLen UDINT Quantidade de dados (byte) a ser escrito na <strong>NOVRAM</strong><br />

cbDestLen UDINT Quantidade de dados (byte) a ser escrito da <strong>NOVRAM</strong><br />

pSrcAddr UDINT Endereço do POINTER que aponta o início do buffer de dados a serem gravados<br />

na <strong>NOVRAM</strong>. O endereço do ponteiro é obtido com o comando ADR().<br />

pDestAddr UDINT Endereço do POINTER que aponta o início do buffer de dados a serem lidos da<br />

<strong>NOVRAM</strong>. O endereço do ponteiro é obtido com o comando ADR().<br />

nReadOffs UDINT Offset da área de memória de leitura da <strong>NOVRAM</strong><br />

nWriteOffs UDINT Offset da área de memória da escrita na <strong>NOVRAM</strong><br />

tTimeOut TIME Tempo limite para execução do FB<br />

Descrições das variáveis de saída da Função Bloco FB_NovRamReadWriteEx:<br />

VAR INPUT Tipo dado Descrição<br />

bBusy BOOL Bit que indica que a FB está em execução (leitura ou escrita)<br />

bError BOOL Bit de indicação de erro<br />

bErrId UDINT Código do erro em caso do bit bError está a TRUE (“ADS_Return_Codes”)<br />

cbRead UDINT Nº de bytes lidos corretamente<br />

cbWrite UDINT Nº de bytes escritos corretamente<br />

Voltando para o Editor de programa <strong>TwinCAT</strong> Control podemos de uma maneira<br />

prática colocar todos os dados, de e para a memoria <strong>NOVRAM</strong>, em uma estrutura de dados.<br />

Sendo assim, apenas um bloco de função é usado. Essa estrutura de dados será constituída<br />

por diversos tipos de dados e será tratado como uma variável. Poderá parametrizar<br />

individualmente cada uma das variáveis dessa estrutura.<br />

Para declarar essa estrutura de dados deverá recorrer à pasta Data Types e de seguida<br />

clique com a tecla direita do rato e selecione Add Objects. De seguida dê o nome, a essa<br />

estrutura de dados, de DataToFromNovRam. Essa estrutura é constituída por diversos tipos<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 8 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

de dados como a<br />

figura mostra.<br />

O próximo<br />

passo é a criação de<br />

uma instância da<br />

estrutura, dando-lhe<br />

um nome, para que<br />

ela possa ser<br />

utilizada na FB.<br />

Também declaramos as variáveis de leitura/escrita, como mostra o exemplo seguinte.<br />

A instrução SIZEOF calcula automaticamente o tamanho da estrutura de dados, em<br />

nº de bytes. A alternativa é indicar um número fixo do comprimento de dados, a serem<br />

enviados ou lidos.<br />

A instrução ADR é usada para indicar o endereço absoluto, na memória do programa,<br />

onde a estrutura é colocada (endereço do inicio da estrutura de dados). É este endereço que<br />

a Função Bloco utiliza para ler ou escrever os dados da <strong>NOVRAM</strong>.<br />

Podemos escrever os dados através eventos cíclicos (colocando um bloco<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 9 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

temporizador cíclico) ou por evento (através da transição ascendente da variável<br />

bNovramWrite).<br />

A leitura de dados da <strong>NOVRAM</strong> deverá ser feita por evento com uma condição ligada<br />

(bNovramRead) á variável de entrada da FB bRead. Na transição positiva, desta variável<br />

booleana, os dados serão lidos da <strong>NOVRAM</strong> para a estrutura de dados.<br />

Caso queiramos, no arranque do sistema, inicializarmos o nosso automatismo com<br />

parâmetros anteriormente guardados na <strong>NOVRAM</strong> podemos utilizar um bit do sistema<br />

(FirstCycle pertencente a estrutura de sistema SystemTaskInfoArr[1] ).<br />

NOTA: Cada variável booleana (1 bit), colocada na estrutura de dados, ocupa 1 byte de<br />

memória.<br />

5 – Arquivo de dados na <strong>NOVRAM</strong> com System Manager<br />

Abra o System Manager e ligue-se, através de um varrimento ao hardware que tem<br />

no seu equipamento (ex. CX9010).<br />

Selecione o Device 3 que corresponde á memoria <strong>NOVRAM</strong>. Abra a subpasta<br />

Generic DPRAM e ative a propriedade Auto Init linked PLC Outputs. Esta propriedade<br />

vai permitir recuperar e atualizar, após o corte de energia a CPU, as variáveis do programa<br />

do PLC e guardadas na <strong>NOVRAM</strong>.<br />

Não deverá modificar os endereços e o tamanho indicado pelo System Manager.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 10 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

“Export Data to Disk”: Arquiva o conteúdo atual dos dados, guardados na <strong>NOVRAM</strong>,<br />

em um ficheiro do tipo XML no seu disco duro ou Flash.<br />

“Import Data from Disk”: Lê os dados, anteriormente guardados em ficheiro XML e<br />

coloca-os na memória <strong>NOVRAM</strong>. Podemos utiliza-los como “receitas” com parâmetros<br />

de máquina e copia-los para diversos equipamentos iguais.<br />

A exportação e importação destes ficheiros XML só é possível em Modo CONFIG<br />

(cor azul do icon do <strong>TwinCAT</strong>) do System Manager.<br />

No projeto editado no <strong>TwinCAT</strong> PLC Control e apresentado de seguida, iremos criar<br />

uma nova estrutura seguindo os procedimentos anteriormente explicados neste documento<br />

técnico. Esta estrutura irá ser anexada à memória <strong>NOVRAM</strong>:<br />

A estrutura deverá, obrigatoriamente, ser declarada com um endereço absoluto (AT<br />

%Q*) para posteriormente podermos linkar, no System Manager, à <strong>NOVRAM</strong>.<br />

Abrindo o System Manager e na pasta PLC Configuration clique com a tecla direita<br />

do rato. De seguida selecione o comando Append PLC project e escolha o ficheiro *.tpy<br />

do seu projeto.<br />

Este ficheiro (*.tpy) estará localizado na pasta onde arquivou o programa executado,<br />

no editor <strong>TwinCAT</strong> PLC Control. Ele será criado depois da sua compilação (Rebuil All).<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 11 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

De seguida iremos linkar, no System Manager, a estrutura a memoria <strong>NOVRAM</strong>.<br />

Abra a pasta Device 3 (NOV/DP-RAM) e selecione Outputs. Com a tecla direita do seu rato<br />

selecione o comando Insert Variables.<br />

Selecione a estrutura de dados DataToFromNovram<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 12 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

Caso queira linkar ou alterar a variável poderá usar o comando Change Link.<br />

Escolha a estrutura de dados criada no editor de programa <strong>TwinCAT</strong> PLC Control e<br />

clique em OK.<br />

Com este procedimento garante retentividade dos dados guardados na <strong>NOVRAM</strong>.<br />

Estes dados são guardados ciclicamente na <strong>NOVRAM</strong> e serão recuperados, os últimos<br />

dados guardados na <strong>NOVRAM</strong>, após o download do projeto ou falha de energia. Em ambos<br />

os casos será usada a mesma estrutura de dados ToFromNovRam.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. <strong>13</strong> de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

6 – Terminal de <strong>NOVRAM</strong> - EL6080<br />

O terminal EtherCAT EL6080 possui memoria não volátil <strong>NOVRAM</strong> com<br />

capacidade máxima de 128k byte. Podemos guardar neste terminal parâmetros de máquina<br />

ou receitas. Os dados são armazenados em memoria RAM quando o terminal se encontra<br />

alimentado eletricamente. Estes dados podem ser lidos e escritos ilimitadamente. No<br />

evento de uma falha de alimentação elétrica um buffer interno alimenta o bloco <strong>NOVRAM</strong><br />

até todo o conteúdo interno da RAM seja guardado na <strong>NOVRAM</strong>.<br />

O acesso à memoria do EL6080 suporta dois métodos e que são os seguintes:<br />

Acesso cíclico gerado por uma tarefa com o Control Word<br />

Acesso acíclico via SDO “Service Data Object” / CoE “Can Over Ethernet”<br />

O tempo de acesso depende, em ambos os casos, do tamanho dos dados que<br />

manuseamos e teremos de verificar sempre a consistência de dados.<br />

6.1 – Acesso cíclico<br />

Este método permite ao utilizador definir uma tabela de dados máxima de 1280 bytes<br />

que podem ser escritos ciclicamente para o terminal. É gerida uma tabela inteira não sendo<br />

possível gerir um único item dessa tabela. A tabela tem de ser simétrica, o que corresponde<br />

a ter o mesmo tamanho nas entradas e saídas do terminal e deverá ser constituído por um<br />

nº inteiro de bytes (não é permitida a utilização de bits ou composição de estruturas).<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 14 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

A arquitetura de I/O da carta EL6080 possui 1 word de controlo [CW-Control] e uma<br />

word de estado [SW-Status]. É através da word de controlo (CW.0 – bit 0) que damos<br />

ordem de escrita dos dados, ciclicamente, a arquivar na <strong>NOVRAM</strong> EL6080. O estado da<br />

execução dessa tarefa é reportado através da word de Status (SW.0 – bit 0).<br />

Quando o terminal EL6080 arranca (inicializa) as variáveis guardadas estão<br />

disponíveis nas entradas do terminal (%I*). O terminal EL6080 pode guardar dados<br />

associados às suas saídas (%Q*). A solicitação de dados guardados faz-se através da word<br />

de Control e Status. Vários ciclos podem ser necessários para escrever essas variáveis,<br />

dependendo dos tamanhos dos dados e do tempo de ciclo.<br />

A sequência do ciclo de operação com handshake deverá ser o seguinte:<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 15 de 16


<strong>13</strong> – Princípios básicos de utilização da <strong>NOVRAM</strong><br />

1º Passo: Coloque a TRUE a variável de Control (bit0 do Control Word)<br />

2º Passo: A variável de Status confirmará a escrita de dados (bit0 do Status Word)<br />

3º Passo: Coloque a FALSE a variável de Control (bit0 do ControlWord)<br />

4º Passo: Aguarde até que a variável de Status (bit0 do Status Word) passe a FALSE<br />

A partir desta sequência o terminal EL6080 está pronto para novo ciclo de escrita.<br />

O tempo de ciclo de escrita de dados está dependente do nº de dados (Ex. 20 byte´s<br />

200µS, 1250 byte´s 2,5mS).<br />

NOTA: Se as variáveis de Input e Output do terminal EL6080 forem criadas com<br />

tamanhos diferentes o terminal entra em modo falha (passa de modo “PREOP” para modo<br />

falha “SAFEOP”) e é reportado um erro com o Working Counter => 1. Se são criadas mais<br />

de 1280 bytes para salvar no terminal EL6080 o terminal entra também em falha (“Invalid<br />

SM In/Out Cfg”).<br />

.<br />

<strong>BRESIMAR</strong> (<strong>asaTek</strong>) - Jorge Andril (v1.3) Pag. 16 de 16

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!