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
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