Você está na página 1de 116

Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instruções de lógica de bits

Instruções de lógica de bits

LAD e FBD são muito eficazes para lidar com lógica booleana. Embora o SCL seja especialmente eficaz para
computação matemática complexa e para estruturas de controle de projeto, você pode usar SCL para
lógica booleana.

Contatos LAD

tabela 1 Contatos normalmente abertos e normalmente fechados

RAPAZ SCL Descrição

SE na declaração THEN;ELSE Contatos normalmente abertos e normalmente fechados: Você pode conectar contatos a
Declaração;END_IF; outros contatos e crie sua própria lógica de combinação. Se a entrada mordeu você
especificar usa o identificador de memória I (entrada) ou Q (saída), então o valor do bit é
SE NÃO (em) ENTÃO
lido do registro de imagem do processo. Os sinais de contato físico em seu
Declaração; OUTRO
processo de controle são conectados aos terminais I no PLC. A CPU varre os fios
Declaração;END_IF;
sinais de entrada e atualiza continuamente os valores de estado correspondentes em
o registrador de entrada da imagem do processo.

Você pode executar uma leitura imediata de uma entrada física usando ":P" seguindo
o deslocamento I (exemplo: "%I3.4:P"). Para uma leitura imediata, os valores de dados de bits
são lidos diretamente da entrada física em vez da imagem do processo. Um
a leitura imediata não atualiza a imagem do processo.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO Bool Bit atribuído

• O contato Normalmente Aberto é fechado (ON) quando o valor do bit atribuído é igual a 1.

• O contato Normalmente Fechado é fechado (ON) quando o valor do bit atribuído é igual a 0.

• Contatos conectados em série criam redes lógicas AND.

• Contatos conectados em paralelo criam redes lógicas OR.

Caixas FBD AND, OR e XOR


Na programação FBD, as redes de contato LAD são transformadas em AND (&), OR (>=1), e
Redes EXCLUSIVE OR (x) box onde você pode especificar valores de bit para as entradas e saídas da caixa.
Você também pode se conectar a outras caixas lógicas e criar suas próprias combinações lógicas. Depois de
caixa é colocada em sua rede, você pode arrastar a ferramenta "Inserir entrada" da barra de ferramentas "Favoritos"
ou árvore de instruções e, em seguida, solte-o no lado de entrada da caixa para adicionar mais entradas. Você pode
também clique com o botão direito do mouse no conector de entrada da caixa e selecione "Inserir entrada".

As entradas e saídas da caixa podem ser conectadas a outra caixa lógica ou você pode inserir um endereço de bit
ou nome do símbolo de bit para uma entrada desconectada. Quando a instrução de caixa é executada, a corrente
estados de entrada são aplicados à lógica da caixa binária e, se verdadeiro, a saída da caixa será verdadeira.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instruções de lógica de bits

Tabela 3 Caixas E, OU e XOR

FBD SCL1 Descrição

saída := entrada1 AND entrada2; Todas as entradas de uma caixa AND devem ser TRUE para que a saída seja TRUE.

saída := entrada1 OU entrada2; Qualquer entrada de uma caixa OR deve ser TRUE para que a saída seja TRUE.

out := in1 XOR in2; Um número ímpar das entradas de uma caixa XOR deve ser TRUE para o
saída seja TRUE.

1 Para SCL: Você deve atribuir o resultado da operação a uma variável a ser usada para outra instrução.

Tabela 4 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

IN1, IN2 Bool Bit de entrada

NÃO inversor lógico

Tabela 5 Inverter RLO (Resultado da Operação Lógica)

RAPAZ FBD SCL Descrição

NÃO Para programação FBD, você pode arrastar a ferramenta "Invert RLO" do
a barra de ferramentas "Favoritos" ou a árvore de instruções e solte-a
uma entrada ou saída para criar um inversor lógico nessa caixa
conector.

O contato LAD NOT inverte o estado lógico do fluxo de energia


entrada.

• Se não houver fluxo de energia no contato NOT, então não há


é o fluxo de energia para fora.

• Se houver fluxo de energia no contato NOT, então há


nenhuma saída de energia.

Bobina de saída e caixa de atribuição


A instrução de saída da bobina escreve um valor para um bit de saída. Se o bit de saída especificado usar
identificador de memória Q, então a CPU liga ou desliga o bit de saída no registrador de imagem do processo,
configurando o bit especificado igual ao status do fluxo de energia. Os sinais de saída para seus atuadores de controle
são ligados aos terminais Q da CPU. No modo RUN, o sistema da CPU verifica continuamente seu
sinais de entrada, processa os estados de entrada de acordo com a lógica do seu programa e, em seguida, reage
definindo novos valores de estado de saída no registro de saída da imagem do processo. O sistema de CPU transfere
a nova reação de estado de saída que é armazenada no registro de imagem do processo, para a saída com fio
terminais.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instruções de lógica de bits

Tabela 6 Atribuição e negação de atribuição

RAPAZ FBD SCL Descrição

out := <Boolean Na programação FBD, as bobinas LAD são transformadas em


expressão>; caixas de atribuição (= e /=) onde você especifica um endereço de bit
para a saída da caixa. As entradas e saídas da caixa podem ser conectadas
para outra lógica de caixa ou você pode inserir um endereço de bit.
out := NÃO <Boolean
Você pode especificar uma gravação imediata de uma saída física
expressão>;
usando ":P" após o deslocamento Q (exemplo: "%Q3.4:P"). Por
uma gravação imediata, os valores de dados de bits são gravados no

processar a saída da imagem e diretamente para a saída física.

Tabela 7 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

FORA Bool Bit atribuído

• Se houver fluxo de energia através de uma bobina de saída ou uma caixa FBD "=" estiver habilitada, o bit de saída será definido
para 1.

• Se não houver fluxo de energia através de uma bobina de saída ou uma caixa de atribuição FBD "=" não estiver habilitada, então
o bit de saída é definido como 0.

• Se houver fluxo de energia através de uma bobina de saída invertida ou uma caixa FBD "/=" estiver habilitada, então a saída
bit é definido como 0.

• Se não houver fluxo de energia através de uma bobina de saída invertida ou uma caixa FBD "/=" não estiver habilitada, então o
bit de saída é definido como 1.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Definir e redefinir instruções

Definir e redefinir instruções

Definir e Redefinir 1 bit

tabela 1 instruções S e R

RAPAZ FBD SCL Descrição

Não disponível Saída de


ajuste: Quando S (Set) é ativado, então o valor de dados no endereço OUT
é definido como 1. Quando S não está ativado, OUT não é alterado.

Não disponível Saída de reset:


Quando R (Reset) é ativado, então o valor dos dados na saída OUT
o endereço é definido como 0. Quando R não está ativado, OUT não é alterado.

1 Para LAD e FBD: Estas instruções podem ser colocadas em qualquer lugar da rede.

2 Para SCL: Você deve escrever código para replicar esta função em seu aplicativo.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

IN (ou conectar a lógica de contato/portão) Bool Bit tag do local a ser monitorado

FORA Bool Bit tag do local a ser definido ou redefinido

Definir e redefinir o campo de bits

Tabela 3 Instruções SET_BF e RESET_BF

DEIXE 1 FBD SCL Descrição

Não disponível Set bit field:

Quando SET_BF é ativado, um valor de dados de 1 é atribuído a "n" bits


começando na etiqueta de endereço OUT. Quando SET_BF não está ativado, OUT
não é alterado.

Não disponível Campo de bit de

reset: RESET_BF escreve um valor de dados de 0 a "n" bits começando no endereço


marcar fora. Quando RESET_BF não está ativado, OUT não é alterado.

1 Para LAD e FBD: Essas instruções devem ser a instrução mais à direita em um branch.

2 Para SCL: Você deve escrever código para replicar esta função em seu aplicativo.

Tabela 4 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

FORA Bool Elemento inicial de um campo de bit a ser definido ou redefinido (Exemplo:
#MyArray[3])

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Definir e redefinir instruções

Parâmetro Tipo de dados Descrição

n Constante (UInt) Número de bits para escrever

Flip-flops dominantes e redefinidos

Tabela 5 Instruções RS e SR

LAD / FBD SCL Descrição

Não disponível Reset/set flip-flop: RS


é um latch dominante de conjunto onde o conjunto domina. Se o ajuste (S1) e reset (R)
ambos os sinais forem verdadeiros, o valor no endereço INOUT será 1.

Não disponível Set/reset flip-flop: SR


é um latch dominante de reset onde o reset domina. Se o set (S) e reset (R1)
ambos os sinais forem verdadeiros, o valor no endereço INOUT será 0.

1 Para LAD e FBD: Essas instruções devem ser a instrução mais à direita em um branch.

2 Para SCL: Você deve escrever código para replicar esta função em seu aplicativo.

Tabela 6 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

S, S1 Bool Definir entrada; 1 indica dominância

R, R1 Bool Redefinir entrada; 1 indica dominância

ENTRADA Bool Tag de bit atribuída "INOUT"

Q Bool Segue o estado do bit "INOUT"

A tag "INOUT" atribui o endereço de bit que é definido ou redefinido. A saída opcional Q segue a
estado do sinal do endereço "INOUT".

Instrução S1 R bit "INOUT"

RS 0 0 Estado anterior

0 1 0

1 0 1

1 1 1

S R1

SR 0 0 Estado anterior

0 1 0

1 0 1

1 1 0

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de borda positiva e negativa

Instruções de borda positiva e negativa

tabela 1 Detecção de transição positiva e negativa

RAPAZ FBD SCL Descrição

Não disponível 1 Operando de varredura para borda de sinal positiva.

LAD: O estado deste contato é TRUE quando uma transição positiva (OFF-to ON) é detectada
no bit "IN" atribuído. O estado lógico de contato é então
combinado com o fluxo de energia no estado para definir o estado do fluxo de energia fora.
O contato P pode estar localizado em qualquer lugar da rede, exceto no final da
um ramo.

FBD: O estado lógico de saída é TRUE quando uma transição positiva (OFF-to-ON)
é detectado no bit de entrada atribuído. A caixa P só pode ser localizada na
início de um ramo.

Não disponível 1 Operando de varredura para borda de sinal negativa.

LAD: O estado deste contato é TRUE quando uma transição negativa (ON para OFF) é
detectada no bit de entrada atribuído. O estado lógico de contato é então
combinado com o fluxo de energia no estado para definir o estado do fluxo de energia fora.
O contato N pode estar localizado em qualquer lugar da rede, exceto no final da
um ramo.

FBD: O estado lógico de saída é TRUE quando uma transição negativa (ON para OFF) é
detectada no bit de entrada atribuído. A caixa N só pode ser localizada
no início de um ramo.

Não disponível 1 Configura o operando na borda do sinal positivo.

LAD: O bit atribuído "OUT" é TRUE quando uma transição positiva (OFF-to ON) é detectada
no fluxo de energia que entra na bobina. O fluxo de energia em
estado sempre passa pela bobina como o estado de saída de energia. O P
bobina pode ser localizada em qualquer lugar na rede.

FBD: O bit atribuído "OUT" é TRUE quando uma transição positiva (OFF-to ON) é detectada
no estado lógico na conexão de entrada da caixa ou no
atribuição de bit de entrada se a caixa estiver localizada no início de uma ramificação. A entrada
o estado lógico sempre passa pela caixa como o estado lógico de saída. o
A caixa P= pode estar localizada em qualquer lugar da ramificação.

Não disponível 1 Operando definido na borda do sinal negativo.

LAD: O bit atribuído "OUT" é TRUE quando uma transição negativa (ON-para OFF) é
detectada no fluxo de energia que entra na bobina. O fluxo de energia em
estado sempre passa pela bobina como o estado de saída de energia. Então
bobina pode ser localizada em qualquer lugar na rede.

FBD: O bit atribuído "OUT" é TRUE quando uma transição negativa (ON-para OFF) é
detectada no estado lógico na conexão de entrada da caixa ou no
atribuição de bit de entrada se a caixa estiver localizada no início de uma ramificação. A entrada
o estado lógico sempre passa pela caixa como o estado lógico de saída. o
A caixa N= pode estar localizada em qualquer lugar da ramificação.

1 Para SCL: Você deve escrever código para replicar esta função em seu aplicativo.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de borda positiva e negativa

mesa 2 P_TRIG e N_TRIG

LAD / FBD SCL Descrição

Não disponível 1 RLO de varredura (resultado da operação lógica) para borda de sinal positiva.

O fluxo de potência de saída Q ou estado lógico é TRUE quando uma transição positiva
(OFF-to-ON) é detectado no estado de entrada CLK (FBD) ou fluxo de energia CLK em
(RAPAZ).

No LAD, a instrução P_TRIG não pode ser localizada no início ou no final


de uma rede. No FBD, a instrução P_TRIG pode ser localizada em qualquer lugar
exceto o final de um ramo.

Não disponível 1 RLO de varredura para borda de sinal negativo.

O fluxo de potência de saída Q ou estado lógico é TRUE quando uma transição negativa
(ON-to-OFF) é detectado no estado de entrada CLK (FBD) ou fluxo de energia CLK em
(RAPAZ).

No LAD, a instrução N_TRIG não pode ser localizada no início ou no final


de uma rede. No FBD, a instrução N_TRIG pode ser localizada em qualquer lugar
exceto o final de um ramo.

1 Para SCL: Você deve escrever código para replicar esta função em seu aplicativo.

Tabela 3 Instruções R_TRIG e F_TRIG

LAD / FBD SCL Descrição

"R_TRIG_DB"( CLK:=_in_, Definir tag na borda do sinal positivo.


Q=> _bool_out_); O banco de dados da instância atribuída é usado para armazenar o estado anterior do CLK
entrada. O fluxo de potência de saída Q ou estado lógico é TRUE quando um
transição (OFF-to-ON) é detectada no estado de entrada CLK (FBD) ou CLK
fluxo de potência (LAD).

No LAD, a instrução R_TRIG não pode ser localizada no início ou no final


de uma rede. No FBD, a instrução R_TRIG pode ser localizada em qualquer lugar
exceto o final de um ramo.

"F_TRIG_DB"( CLK:=_in_, Definir tag na borda do sinal negativo.

O banco de dados da instância atribuída é usado para armazenar o estado anterior do CLK

Q=> _bool_out_); entrada. O fluxo de potência de saída Q ou estado lógico é TRUE quando um
transição (ON-to-OFF) é detectada no estado de entrada CLK (FBD) ou CLK
fluxo de potência (LAD).

No LAD, a instrução F_TRIG não pode ser localizada no início ou no final


de uma rede. No FBD, a instrução F_TRIG pode ser localizada em qualquer lugar
exceto o final de um ramo.

Para R_TRIG e F_TRIG, quando você insere a instrução no programa, a caixa de diálogo "Opções de chamada"
abre automaticamente. Nesta caixa de diálogo você pode
atribuir se o bit de memória de borda é armazenado em seu próprio bloco de dados (instância única) ou como um tag local
(múltiplas instâncias) na
interface do bloco. Se você criar um bloco de dados separado, você o encontrará na árvore do projeto no
Pasta "Recursos do programa"
em "Blocos de programa > Blocos do sistema".

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instruções de borda positiva e negativa

Tabela 4 Tipos de dados para os parâmetros (contatos/bobinas P e N, P=, N=, P_TRIG e N_TRIG)

Parâmetro Tipo de dados Descrição

M_BIT Bool Bit de memória no qual o estado anterior da entrada é salvo

DENTRO Bool Bit de entrada cuja borda de transição é detectada

FORA Bool Bit de saída que indica que uma borda de transição foi detectada

CLK Bool Fluxo de potência ou bit de entrada cuja borda de transição é detectada

Q Bool Saída que indica que uma borda foi detectada

Todas as instruções de borda usam um bit de memória (M_BIT: contatos/bobinas P/N, P_TRIG/N_TRIG) ou (instância
DB bit: R_TRIG, F_TRIG) para armazenar o estado anterior do sinal de entrada monitorado. Uma borda é
detectado comparando o estado da entrada com o estado anterior. Se os estados indicarem um
mudança da entrada na direção de interesse, então uma aresta é relatada escrevendo a saída
VERDADE. Caso contrário, a saída é gravada em FALSE.

Observação

As instruções de borda avaliam os valores de entrada e de bits de memória cada vez que são executadas,
incluindo a primeira execução. Você deve levar em conta os estados iniciais da entrada e da memória
bit em seu projeto de programa para permitir ou evitar a detecção de borda na primeira varredura.

Como o bit de memória deve ser mantido de uma execução para outra, você deve usar um
bit exclusivo para cada instrução de borda, e você não deve usar este bit em nenhum outro lugar em seu
programa. Você também deve evitar a memória temporária e a memória que pode ser afetada por outros
funções do sistema, como uma atualização de E/S. Use apenas M, banco de dados global ou memória estática (em uma instância
DB) para atribuições de memória M_BIT.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações do temporizador

Operações do temporizador

Você usa as instruções do temporizador para criar atrasos de tempo programados. O número de temporizadores que
você pode usar em seu programa de usuário é limitado apenas pela quantidade de memória na CPU. Cada
timer usa uma estrutura DB de tipo de dados IEC_Timer de 16 bytes para armazenar dados do timer que são especificados no
topo da caixa ou instrução de bobina. O STEP 7 cria automaticamente o DB quando você insere o
instrução.

tabela 1 Instruções do temporizador

Caixas LAD / FBD Bobinas LAD SCL Descrição

"IEC_Timer_0_DB".TP(IN:=_bool_in_, O temporizador TP gera um pulso com uma largura predefinida


PT:=_time_in_, Q=>_bool_out_, Tempo.

ET=>_time_out_);

"IEC_Timer_0_DB".TON O temporizador TON define a saída Q para ON após um


( IN:=_bool_in_, PT:=_time_in_, atraso de tempo.
Q=>_bool_out_, ET=>_time_out_);

"IEC_Timer_0_DB".TOF O temporizador TOF redefine a saída Q para OFF após um


( IN:=_bool_in_, PT:=_time_in_, atraso de tempo.
Q=>_bool_out_, ET=>_time_out_);

"IEC_Timer_0_DB".TONR O temporizador TONR define a saída Q para ON após um


( IN:=_bool_in_, R:=_bool_in_, PT:=_time_in_, atraso de tempo. O tempo decorrido é acumulado ao longo
Q=>_bool_out_, ET=>_time_out_); vários períodos de tempo até que a entrada R seja usada para
redefinir o tempo decorrido.

Apenas FBD: PRESET_TIMER( PT:=_time_in_, A bobina PT (Preset timer) carrega um novo tempo PRESET
TIMER:=_iec_timer_in_); valor no IEC_Timer especificado.

Apenas FBD: RESET_TIMER( _iec_timer_in_); A bobina RT (Reset timer) redefine o


IEC_Timer.

1 O STEP 7 cria automaticamente o DB quando você insere a instrução.

2 Nos exemplos de SCL, "IEC_Timer_0_DB" é o nome do banco de dados da instância.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações do temporizador

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

Empacotar Bool TP, TON e TON:


Bobina: fluxo de energia Caixa: 0=Desativar temporizador, 1=Ativar temporizador

Bobina: Sem fluxo de energia = Desativar temporizador, Fluxo de energia = Ativar temporizador

TOF:

Caixa: 0=Ativar temporizador, 1=Desativar temporizador

Bobina: Sem fluxo de energia = Ativar temporizador, Fluxo de energia = Desativar temporizador

R Bool Caixa TONR apenas:


0=Sem reinicialização

1= Redefinir o tempo decorrido e o bit Q para 0

Caixa: PT Tempo Caixa ou bobina do temporizador: entrada de tempo predefinido

Bobina: "PRESET_Tag"

Caixa: Q Bool Caixa do temporizador: saída da caixa Q ou bit Q nos dados do banco de dados do temporizador

Bobina: DBdata.Q Bobina do temporizador: você só pode endereçar o bit Q nos dados do DB do temporizador

Caixa: E Tempo Caixa do temporizador: saída da caixa ET (tempo decorrido) ou valor do tempo ET no banco de dados do temporizador
Bobina: DBdata.ET dados

Bobina do timer: você só pode endereçar o valor do tempo ET nos dados do timer DB.

Tabela 3 Efeito das mudanças de valor nos parâmetros PT e IN

Cronômetro Alterações nos parâmetros da caixa PT e IN e os parâmetros da bobina correspondentes

TP • A mudança de PT não tem efeito enquanto o temporizador é executado.

• A alteração de IN não tem efeito enquanto o temporizador é executado.

TONELADA
• A mudança de PT não tem efeito enquanto o temporizador é executado.

• Mudar IN para FALSE, enquanto o timer é executado, reinicia e para o timer.

TOF • A mudança de PT não tem efeito enquanto o temporizador é executado.

• Mudando IN para TRUE, enquanto o cronômetro é executado, reinicia e para o cronômetro.

TONR • A alteração de PT não tem efeito enquanto o temporizador é executado, mas tem efeito quando o temporizador é retomado.

• Alterar IN para FALSE, enquanto o cronômetro está em execução, interrompe o cronômetro, mas não o reinicializa. Alterando IN

de volta para TRUE fará com que o cronômetro comece a cronometrar a partir do valor de tempo acumulado.

Os valores de PT (tempo predefinido) e ET (tempo decorrido) são armazenados nos dados IEC_TIMER DB especificados como
inteiros duplos com sinal que representam milissegundos de tempo. Os dados TIME usam o identificador T# e
pode ser inserido como uma unidade de tempo simples (T#200ms ou 200) e como unidades de tempo compostas como
T#2s_200ms.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações do temporizador

Tabela 4 Tamanho e intervalo do tipo de dados TIME

Tamanho
Tipo de dados Intervalos de números válidos1

TEMPO 32 bits, armazenados como T#-24d_20h_31m_23s_648ms a T#24d_20h_31m_23s_647ms


Dados DInt
Armazenado como -2.147.483.648 ms a +2.147.483.647 ms

1 O intervalo negativo do tipo de dados TIME mostrado acima não pode ser usado com as instruções do temporizador. Os valores negativos de PT (tempo predefinido) são definidos como zero quando a

instrução do temporizador é executada. ET (tempo decorrido) é sempre um valor positivo.

Exemplo de bobina do temporizador

As bobinas do temporizador -(TP)-, -(TON)-, -(TOF)- e -(TONR)- devem ser a última instrução em uma rede LAD.
Conforme mostrado no exemplo do temporizador, uma instrução de contato em uma rede subsequente avalia o bit Q
nos dados IEC_Timer DB de uma bobina do temporizador. Da mesma forma, você deve endereçar o elemento ELAPSED nos
dados IEC_timer DB se quiser usar o valor do tempo decorrido em seu programa.

O temporizador de pulso é iniciado em uma transição de 0 para 1 do valor do bit Tag_Input. O cronômetro é executado pelo
tempo especificado pelo valor de tempo Tag_Time.

Enquanto o cronômetro for executado, o estado de DB1.MyIEC_Timer.Q=1 e o valor de Tag_Output=1.


Quando o valor Tag_Time tiver decorrido, DB1.MyIEC_Timer.Q=0 e o valor Tag_Output=0.

Reset timer -(RT)- e Preset timer -(PT)- bobinas

Essas instruções de bobina podem ser usadas com temporizadores de caixa ou bobina e podem ser colocadas em uma
posição de linha média. O status do fluxo de potência de saída da bobina é sempre o mesmo que o status de entrada da
bobina. Quando a bobina -(RT)- é ativada, o elemento de tempo ELAPSED dos dados IEC_Timer DB especificados é redefinido
para 0. Quando a bobina -(PT)- é ativada, o elemento de tempo PRESET dos dados IEC_Timer DB especificados é carregado
com o valor de tempo-duração atribuído.

Observação

Ao colocar instruções do temporizador em um FB, você pode selecionar a opção "Bloco de dados de várias instâncias".
Os nomes da estrutura do temporizador podem ser diferentes com estruturas de dados separadas, mas os dados do
temporizador estão contidos em um único bloco de dados e não requerem um bloco de dados separado para cada
temporizador. Isso reduz o tempo de processamento e armazenamento de dados necessários para lidar com os temporizadores.
Não há interação entre as estruturas de dados do temporizador no banco de dados de várias instâncias compartilhado.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Operações do temporizador

Funcionamento dos temporizadores

Tabela 5 Tipos de temporizadores IEC

Cronômetro Diagrama de tempo

TP: Gerar pulso O

temporizador TP gera um pulso com um tempo de largura predefinido.

TON: Gerar retardo de ativação O

temporizador TON define a saída Q para ON após um retardo de tempo predefinido.

TOF: Gerar atraso de desligamento O

temporizador TOF redefine a saída Q para OFF após um atraso de tempo predefinido.

TONR: acumulador de tempo

O temporizador TONR define a saída Q para ON após um atraso de tempo

predefinido. O tempo decorrido é acumulado em vários períodos de tempo até que a

entrada R seja usada para redefinir o tempo decorrido.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações do temporizador

Observação

Na CPU, nenhum recurso dedicado é alocado para qualquer instrução de timer específica. Em vez disso, cada temporizador utiliza sua própria estrutura

de temporizador na memória do banco de dados e um temporizador de CPU interno em execução contínua para executar o tempo.

Quando um temporizador é iniciado devido a uma mudança de borda na entrada de uma instrução TP, TON, TOF ou TONR, o valor do

temporizador de CPU interno em execução contínua é copiado para o membro START da estrutura de banco de dados alocada para esta instrução de
temporizador . Esse valor inicial permanece inalterado enquanto o cronômetro continua a ser executado e é usado posteriormente cada vez que o

cronômetro é atualizado.
Cada vez que o cronômetro é iniciado, um novo valor inicial é carregado na estrutura do cronômetro a partir do cronômetro interno da CPU.

Quando um temporizador é atualizado, o valor inicial descrito acima é subtraído do valor atual do temporizador interno da CPU para determinar o tempo

decorrido. O tempo decorrido é então comparado com o pré-ajuste para determinar o estado do bit Q do temporizador. Os membros ELAPSED e Q são

então atualizados na estrutura DB alocada para este temporizador. Observe que o tempo decorrido é fixado no valor predefinido (o cronômetro não

continua a acumular o tempo decorrido após a predefinição ser alcançada).

Uma atualização do temporizador é realizada quando e somente quando:

• Uma instrução de temporizador (TP, TON, TOF ou TONR) é executada

• O membro "ELAPSED" da estrutura de timer em DB é referenciado diretamente por uma instrução

• O membro "Q" da estrutura do temporizador em DB é referenciado diretamente por uma instrução

Programação do temporizador

As seguintes consequências da operação do temporizador devem ser consideradas ao planejar e criar seu programa de usuário:

• Você pode ter várias atualizações de um cronômetro na mesma varredura. O temporizador é atualizado cada vez que a
instrução do temporizador (TP, TON, TOF, TONR) é executada e cada vez que o membro ELAPSED ou Q da estrutura do
temporizador é usado como parâmetro de outra instrução executada. Isso é uma vantagem se você quiser os dados de
tempo mais recentes (essencialmente uma leitura imediata do cronômetro). No entanto, se você deseja ter valores
consistentes ao longo de uma varredura de programa, coloque sua instrução de temporizador antes de todas as outras
instruções que precisam desses valores e use tags das saídas Q e ET da instrução de temporizador em vez dos membros
ELAPSED e Q de a estrutura do banco de dados do temporizador.

• Você pode fazer varreduras durante as quais não ocorre nenhuma atualização de um temporizador. É possível iniciar o
cronômetro em uma função e, em seguida, parar de chamar essa função novamente para uma ou mais varreduras. Se
nenhuma outra instrução for executada que faça referência aos membros ELAPSED ou Q da estrutura do temporizador, o
temporizador não será atualizado. Uma nova atualização não ocorrerá até que a instrução do temporizador seja executada
novamente ou alguma outra instrução seja executada usando ELAPSED ou Q da estrutura do temporizador como parâmetro.

• Embora não seja típico, você pode atribuir a mesma estrutura de timer DB a várias instruções de timer. Em geral, para evitar
interações inesperadas, você deve usar apenas uma instrução de timer (TP, TON, TOF, TONR) por estrutura de timer de
banco de dados.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações do temporizador

• Os temporizadores de reinicialização automática são úteis para acionar ações que precisam ocorrer periodicamente. Normalmente, o próprio
Os temporizadores de reinicialização são criados colocando um contato normalmente fechado que referencia o bit do temporizador na frente da

instrução do temporizador. Essa rede de timer geralmente está localizada acima de uma ou mais redes dependentes que usam o bit de timer para

acionar ações. Quando o temporizador expira (o tempo decorrido atinge o valor predefinido), o bit do temporizador está LIGADO para uma varredura,

permitindo que a lógica de rede dependente controlada pelo bit do temporizador seja executada. Na próxima execução da rede do timer, o contato

normalmente fechado é OFF, zerando o timer e limpando o bit do timer. Na próxima varredura, o contato normalmente fechado está LIGADO,

reiniciando assim o temporizador. Ao criar temporizadores de reinicialização automática como este, não use o membro "Q" da estrutura DB do

temporizador como parâmetro para o contato normalmente fechado na frente da instrução do temporizador. Em vez disso, use o tag conectado à saída

"Q" da instrução do temporizador para esta finalidade.

A razão para evitar o acesso ao membro Q da estrutura do timer DB é porque isso causa uma atualização no timer e se o timer for atualizado

devido ao contato normalmente fechado, o contato reiniciará a instrução do timer imediatamente. A saída Q da instrução do temporizador não estará

LIGADA para uma varredura e as redes dependentes não serão executadas.

Retenção de dados de tempo após uma transição RUN-STOP-RUN ou um ciclo de energia da CPU

Se uma sessão do modo de execução for encerrada com o modo de parada ou um ciclo de energia da CPU e uma nova sessão do modo de
execução for iniciada, os dados do temporizador armazenados na sessão do modo de execução anterior serão perdidos, a menos que a
estrutura de dados do temporizador seja especificada como retentiva (TP, temporizadores TON, TOF e TONR).

Quando você aceita os padrões na caixa de diálogo de opções de chamada depois de colocar uma instrução de timer no editor de programa,
você recebe automaticamente um banco de dados de instância que não pode ser retentivo. Para tornar os dados do temporizador
retentivos, você deve usar um banco de dados global ou um banco de dados de várias instâncias.

Atribua um banco de dados global para armazenar dados do temporizador como dados retentivos

Esta opção funciona independentemente de onde o temporizador é colocado (OB, FC ou FB).

1. Crie um banco de dados global:

ÿ Clique duas vezes em "Adicionar novo bloco" na árvore do projeto

ÿ Clique no ícone do bloco de dados (DB)

ÿ Para o Tipo, escolha DB global

ÿ Se você quiser selecionar elementos de dados individuais neste banco de dados como retentivos, certifique-se de que a caixa Tipo
de banco de dados "Otimizado" esteja marcada. A outra opção do tipo DB "Padrão - compatível com S7-300/400" permite
apenas configurar todos os elementos de dados DB retentivos ou nenhum retentivo.

- Clique em OK

2. Adicione a(s) estrutura(s) de timer ao banco de dados:

ÿ No novo banco de dados global, adicione um novo tag estático usando o tipo de dados IEC_Timer.

ÿ Na coluna "Reter", marque a caixa para que essa estrutura seja retentiva.

ÿ Repita este processo para criar estruturas para todos os temporizadores que você deseja armazenar neste banco de dados. Você
pode colocar cada estrutura de timer em um banco de dados global exclusivo ou pode colocar várias estruturas de timer no
mesmo banco de dados global. Você também pode colocar outras tags estáticas além de temporizadores neste banco de
dados global. Colocar várias estruturas de timer no mesmo banco de dados global permite reduzir o número total de blocos.

ÿ Renomeie as estruturas do temporizador, se desejar.

3. Abra o bloco de programa para edição onde deseja colocar um temporizador retentivo (OB, FC ou FB).

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Operações do temporizador

4. Coloque a instrução do temporizador no local desejado.

5. Quando a caixa de diálogo de opções de chamada for exibida, clique no botão cancelar.

6. Na parte superior da nova instrução de timer, digite o nome (não use o auxiliar para navegar) do banco de dados global e da
estrutura de timer que você criou acima (exemplo: "Data_block_3.Static_1").

Atribua um banco de dados de várias instâncias para armazenar dados do temporizador como dados retentivos

Esta opção só funciona se você colocar o timer em um FB.

Esta opção depende se as propriedades do FB especificam "Acesso de bloco otimizado" (permite apenas acesso
simbólico). Para verificar como o atributo de acesso está configurado para um FB existente, clique com o botão
direito do mouse no FB na árvore do projeto, escolha propriedades e, em seguida, escolha Atributos.

Se o FB especificar "Acesso de bloco otimizado" (permite apenas acesso simbólico):

1. Abra o FB para edição.

2. Coloque a instrução do temporizador no local desejado no FB.

3. Quando a caixa de diálogo Opções de chamada for exibida, clique no ícone Multi instância. A opção Multi Instância só é
disponível se a instrução estiver sendo colocada em um FB.

4. Na caixa de diálogo Opções de chamada, renomeie o cronômetro, se desejar.

5. Clique OK. A instrução timer aparece no editor e a estrutura IEC_TIMER aparece na Interface FB em Static.

6. Se necessário, abra o editor de interface do FB (pode ser necessário clicar na pequena seta para expandir a visualização).

7. Em Static, localize a estrutura de timer que acabou de ser criada para você.

8. Na coluna Reter para esta estrutura de temporizador, altere a seleção para "Reter". Sempre que este FB for chamado
posteriormente a partir de outro bloco de programa, será criada uma instância DB com esta definição de interface que contém
a estrutura de timer marcada como retentiva.

Se o FB não especificar "Acesso ao bloco otimizado", o tipo de acesso ao bloco é padrão, compatível com as
configurações clássicas do S7-300/400 e permite acesso simbólico e direto. Para atribuir uma multi-instância a um
FB de acesso de bloco padrão, siga estas etapas:

1. Abra o FB para edição.

2. Coloque a instrução do temporizador no local desejado no FB.

3. Quando a caixa de diálogo de opções de chamada for exibida, clique no ícone de várias instâncias. A opção de várias instâncias é
disponível apenas se a instrução estiver sendo colocada em um FB.

4. Na caixa de diálogo Opções de chamada, renomeie o cronômetro, se desejar.

5. Clique OK. A instrução timer aparece no editor e a estrutura IEC_TIMER aparece na Interface FB em Static.

6. Abra o bloco que irá utilizar este FB.

7. Coloque este FB no local desejado. Isso resulta na criação de um bloco de dados de instância para este
FB.

8. Abra o bloco de dados de instância criado quando você colocou o FB no editor.

9. Em Estático, localize a estrutura de cronômetro de interesse. Na coluna Reter para esta estrutura de timer, verifique
a caixa para tornar esta estrutura retentiva.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Operações de contador

Operações de contador

tabela 1 Instruções do contador

LAD / FBD SCL Descrição

"IEC_Counter_0_DB".CTU(CU:=_bool_in, Use as instruções do contador para contar eventos internos do programa e


R:=_bool_in, PV:=_in, Q=>_bool_out, eventos de processos externos. Cada contador usa uma estrutura armazenada em um data
CV=>_out); bloco para manter os dados do contador. Você atribui o bloco de dados quando o
a instrução do contador é colocada no editor. • CTU é um

contador de contagem crescente

• CTD é um contador de contagem regressiva

• CTUD é um contador de contagem ascendente e descendente


"IEC_Counter_0_DB".CTD( CD:=_bool_in,
LD:=_bool_in, PV:=_in, Q=>_bool_out,
CV=>_out);

"IEC_Counter_0_DB".CTUD( CU:=_bool_in,
CD:=_bool_in, R:=_bool_in, LD:=_bool_in,
PV:=_in_, QU=>_bool_out, QD=>_bool_out,
CV=>_out_);

1 Para LAD e FBD: Selecione o tipo de dados do valor de contagem na lista suspensa abaixo do nome da instrução.

2 O STEP 7 cria automaticamente o DB quando você insere a instrução.

3 Nos exemplos de SCL, "IEC_Counter_0_DB" é o nome do banco de dados da instância.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados1 Descrição

CU, CD Bool Contar para cima ou para baixo, por uma contagem

R (CTU, CTUD) Bool Redefinir o valor da contagem para zero

LD (CTD, CTUD) Bool Controle de carga para valor predefinido

fotovoltaica
SInt, Int, DInt, USInt, UInt, UDInt Valor de contagem predefinido

Q, QU Bool Verdadeiro se CV >= PV

QD Bool Verdadeiro se CV <= 0

cv SInt, Int, DInt, USInt, UInt, UDInt Valor de contagem atual

1 O intervalo numérico de valores de contagem depende do tipo de dados selecionado. Se o valor de contagem for um tipo inteiro sem sinal, você
pode fazer uma contagem regressiva até zero ou até o limite do intervalo. Se o valor de contagem for um número inteiro com sinal, você poderá contar até o negativo
limite de número inteiro e conte até o limite de número inteiro positivo.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações de contador

O número de contadores que você pode usar em seu programa de usuário é limitado apenas pela quantidade de memória
na CPU. Os contadores usam a seguinte quantidade de memória:

• Para tipos de dados SInt ou USInt, a instrução do contador usa 3 bytes.

• Para tipos de dados Int ou UInt, a instrução do contador usa 6 bytes.

• Para tipos de dados DInt ou UDInt, a instrução do contador usa 12 bytes.

Essas instruções usam contadores de software cuja taxa máxima de contagem é limitada pela taxa de execução do
OB em que são colocadas. O OB no qual as instruções são colocadas deve ser executado com frequência suficiente para
detectar todas as transições das entradas CU ou CD. Para operações de contagem mais rápidas, consulte a instrução
CTRL_HSC.

Observação

Quando você coloca instruções de contador em um FB, você pode selecionar a opção de banco de dados de várias
instâncias, os nomes de estrutura de contador podem ser diferentes com estruturas de dados separadas, mas os dados do
contador estão contidos em um único banco de dados e não requerem um banco de dados separado para cada contador.
Isso reduz o tempo de processamento e armazenamento de dados necessários para os contadores. Não há interação entre
as estruturas de dados do contador no banco de dados de várias instâncias compartilhado.

Funcionamento dos contadores

Tabela 3 Operação da CTU (contagem crescente)

Contador Operação

O contador CTU conta em 1 quando o valor do parâmetro CU muda de 0 para 1. O diagrama de


temporização CTU mostra a operação para um valor de contagem inteiro sem sinal (onde PV = 3). • Se o
valor do parâmetro CV (valor de contagem atual) for maior ou igual ao valor do parâmetro PV (valor de

contagem predefinido), então o parâmetro de saída do contador Q = 1.

• Se o valor do parâmetro de reset R mudar de 0 para 1, então o


valor de contagem atual é redefinido para 0.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações de contador

Tabela 4 Funcionamento do CTD (contagem regressiva)

Contador Operação

O contador CTD faz uma contagem regressiva de 1 quando o valor do parâmetro


CD muda de 0 para 1. O diagrama de temporização do CTD mostra a operação
para um valor de contagem inteiro sem sinal (onde PV = 3). • Se o valor do

parâmetro CV (valor de contagem atual) for igual ou menor que 0, o parâmetro de


saída do contador Q = 1.

• Se o valor do parâmetro LOAD mudar de 0 para 1, o


valor no parâmetro PV (valor predefinido) é carregado no contador como o
novo CV (valor de contagem atual).

Tabela 5 Funcionamento do CTUD (contagem ascendente e descendente)

Contador Operação

O contador CTUD conta para cima ou


para baixo em 1 na transição de 0 para 1
das entradas de contagem crescente (CU)
ou contagem regressiva (CD). O diagrama
de temporização CTUD mostra a operação
para um valor de contagem inteiro sem
sinal (onde PV = 4).

• Se o valor do parâmetro CV for igual ou


maior que o valor do parâmetro PV,
então o parâmetro de saída do
contador QU = 1.

• Se o valor do parâmetro CV for menor


ou igual a zero, então o parâmetro
de saída do contador QD = 1.

• Se o valor do parâmetro
LOAD muda de 0 para 1, então o
valor no parâmetro PV é carregado
no contador como o novo CV.

• Se o valor do reset
parâmetro R é alterado de 0 para 1,
o valor de contagem atual é
redefinido para 0.

Retenção de dados do contador após uma transição RUN-STOP-RUN ou um ciclo de energia da CPU

Se uma sessão do modo de execução for encerrada com o modo de parada ou um ciclo de energia da CPU e uma nova sessão do
modo de execução for iniciada, os dados do contador armazenados na sessão do modo de execução anterior serão perdidos, a
menos que a estrutura de dados do contador seja especificada como retentiva (CTU, contadores CTD e CTUD).

Quando você aceita os padrões na caixa de diálogo de opções de chamada depois de colocar uma instrução de contador no editor
do programa, você recebe automaticamente um banco de dados de instância que não pode ser criado

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações de contador

retentivo. Para tornar os dados do contador retentivos, você deve usar um banco de dados global ou um banco de dados de várias
instâncias.

Atribua um banco de dados global para armazenar dados do contador como dados retentivos

Esta opção funciona independentemente de onde o contador é colocado (OB, FC ou FB).

1. Crie um banco de dados global:

ÿ Clique duas vezes em "Adicionar novo bloco" na árvore do projeto

ÿ Clique no ícone do bloco de dados (DB)

ÿ Para o Tipo, escolha DB global

ÿ Se você quiser selecionar itens individuais neste banco de dados como retentivos, certifique-se de que a caixa somente
acesso simbólico esteja marcada.

- Clique em OK

2. Adicione a(s) estrutura(s) do contador ao banco de dados:

ÿ No novo banco de dados global, adicione uma nova tag estática usando um dos tipos de dados do contador. Certifique-se de
considerar o Tipo que deseja usar para seus valores de Predefinição e Contagem.

ÿ Na coluna "Reter", marque a caixa para que essa estrutura seja retentiva.

ÿ Repita este processo para criar estruturas para todos os contadores que você deseja armazenar neste banco de dados.
Você pode colocar cada estrutura de contador em um banco de dados global exclusivo ou colocar várias estruturas de contador no
mesmo banco de dados global. Você também pode colocar outras tags estáticas além de contadores neste banco de dados global.
Colocar várias estruturas de contador no mesmo banco de dados global permite reduzir o número total de blocos.

ÿ Renomeie as estruturas do contador, se desejar.

3. Abra o bloco de programa para edição onde deseja colocar um contador retentivo (OB, FC ou FB).

4. Coloque a instrução do contador no local desejado.

5. Quando a caixa de diálogo de opções de chamada for exibida, clique no botão cancelar. Agora você deve ver uma nova instrução de contador
que tem "???" ambos logo acima e logo abaixo do nome da instrução.

6. Na parte superior da nova instrução do contador, digite o nome (não use o auxiliar para navegar) do banco de dados global e da estrutura do
contador que você criou acima (exemplo: "Data_block_3.Static_1"). Isso faz com que o tipo de valor predefinido e de contagem correspondente
seja preenchido (exemplo: UInt para uma estrutura IEC_UCounter).

Tipo de dados do contador Tipo correspondente para os valores predefinidos e de contagem

IEC_Counter INT

IEC_SCounter SANTO

IEC_DCounter FORÇA

Contador IEC_UC UINT

Contador IEC_US USINT

Contador IEC_UD UDINT

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Operações de contador

Atribua um banco de dados de várias instâncias para armazenar dados do contador como dados retentivos

Esta opção só funciona se você colocar o contador em um FB.

Esta opção depende se as propriedades do FB especificam "Acesso de bloco otimizado" (permite apenas acesso
simbólico). Para verificar como o atributo de acesso está configurado para um FB existente, clique com o botão
direito do mouse no FB na árvore do projeto, escolha propriedades e, em seguida, escolha Atributos.

Se o FB especificar "Acesso de bloco otimizado" (permite apenas acesso simbólico):

1. Abra o FB para edição.

2. Coloque a instrução do contador no local desejado no FB.

3. Quando a caixa de diálogo Opções de chamada for exibida, clique no ícone Multi instância. A opção de várias instâncias é
disponível apenas se a instrução estiver sendo colocada em um FB.

4. Na caixa de diálogo Opções de chamada, renomeie o contador, se desejar.

5. Clique OK. A instrução do contador aparece no editor com o tipo INT para os valores de preset e contagem, e a estrutura
IEC_COUNTER aparece na Interface FB sob Static.

6. Se desejar, altere o tipo na instrução do contador de INT para um dos outros tipos. A estrutura do contador mudará de forma
correspondente.

7. Se necessário, abra o editor de interface do FB (pode ser necessário clicar na pequena seta para expandir a visualização).

8. Em Static, localize a estrutura do contador que acabou de ser criada para você.

9. Na coluna Reter para esta estrutura de contador, altere a seleção para "Reter". Sempre que este FB for chamado posteriormente
de outro bloco de programa, será criada uma instância DB com esta definição de interface que contém a estrutura do contador
marcada como retentiva.

Se o FB não especificar "Acesso ao bloco otimizado", o tipo de acesso ao bloco é padrão, compatível com as
configurações clássicas do S7-300/400 e permite acesso simbólico e direto. Para atribuir uma multi-instância a um
FB de acesso de bloco padrão, siga estas etapas:

1. Abra o FB para edição.

2. Coloque a instrução do contador no local desejado no FB.

3. Quando a caixa de diálogo de opções de chamada for exibida, clique no ícone de várias instâncias. A opção de várias instâncias é
disponível apenas se a instrução estiver sendo colocada em um FB.

4. Na caixa de diálogo Opções de chamada, renomeie o contador, se desejar.

5. Clique OK. A instrução do contador aparece no editor com o tipo INT para o valor de preset e contagem, e a estrutura
IEC_COUNTER aparece na Interface FB sob Static.

6. Se desejar, altere o tipo na instrução do contador de INT para um dos outros tipos. A estrutura do contador mudará de forma
correspondente.

7. Abra o bloco que irá utilizar este FB.

8. Coloque este FB no local desejado. Isso resulta na criação de um bloco de dados de instância para este
FB.

9. Abra o bloco de dados de instância criado quando você colocou o FB no editor.

10. Em Static, localize a estrutura do contador de interesse. Na coluna Reter para esta estrutura de contador, marque a caixa para
tornar esta estrutura retentiva.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Operações de contador

Tipo mostrado na instrução do contador (para preset e Estrutura correspondente Tipo mostrado na interface FB
valores de contagem)

INT IEC_Counter

SANTO IEC_SCounter

FORÇA IEC_DCounter

UINT Contador IEC_UC

USINT Contador IEC_US

UDINT Contador IEC_UD

Veja também

ÿ Contador de alta velocidade

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Compare as instruções de valores

Compare as instruções de valores

tabela 1 Comparar instruções

RAPAZ FBD SCL Descrição

saída := entrada1 = entrada2; Compara dois valores do mesmo tipo de dados. Quando o
A comparação de contato LAD é TRUE, então o contato é
ativado. Quando a comparação da caixa FBD for TRUE, então
ou
a saída da caixa é TRUE.

SE entrada1 = entrada2 ENTÃO saída :=

1; ELSE out := 0; FIM SE;

1 Para LAD e FBD: Clique no nome da instrução (como "==") para alterar o tipo de comparação na lista suspensa. Clique no
"???" e selecione o tipo de dados na lista suspensa.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

IN1, IN2 Byte, Word, DWord, SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Valores para comparar
String, ,WString, Char, Char, Time, Date, TOD, DTL, Constant

Tabela 3 Descrições de comparação

Tipo de relação A comparação é verdadeira se ...

= IN1 é igual a IN2

<> IN1 não é igual a IN2

>= IN1 é maior ou igual a IN2

<= IN1 é menor ou igual a IN2

> IN1 é maior que IN2

< IN1 é menor que IN2

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções IN_Range (valor dentro do intervalo) e OUT_Range (valor fora do intervalo)

Instruções IN_Range (valor dentro do intervalo) e OUT_Range (valor


fora do intervalo)

tabela 1 Instruções de valor dentro do intervalo e valor fora do intervalo

LAD / FBD SCL Descrição

out := IN_RANGE(min, val, max); Testa se um valor de entrada está dentro ou fora de um intervalo de valores especificado.

Se a comparação for TRUE, a saída da caixa será TRUE.

out := OUT_RANGE(min, val, max);

1 Para LAD e FBD: Clique no botão "???" e selecione o tipo de dados na lista suspensa.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados1 Descrição

MIN, VAL, MAX SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Entradas do comparador
Constante

1 Os parâmetros de entrada MIN, VAL e MAX devem ser do mesmo tipo de dados.

• A comparação IN_RANGE é verdadeira se: MIN <= VAL <= MAX

• A comparação OUT_RANGE é verdadeira se: VAL < MIN ou VAL > MAX

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções OK (Verificar validade) e NOT_OK (Verificar invalidade)

Instruções OK (Verificar validade) e NOT_OK (Verificar invalidade)

tabela 1 Instruções OK (verificar validade) e Não OK (verificar invalidade)

RAPAZ FBD SCL Descrição

Não disponível Testa se uma referência de dados de entrada é um número real válido
de acordo com a especificação IEEE 754.

Não disponível

1 Para LAD e FBD: Quando o contato LAD é TRUE, o contato é ativado e passa o fluxo de potência. Quando a caixa FBD for TRUE,
então a saída da caixa é TRUE.

mesa 2 Tipos de dados para o parâmetro

Parâmetro Tipo de dados Descrição

DENTRO
Real, Real Dados de entrada

Tabela 3 Operação

Instrução O teste do número real é TRUE se:

OK O valor de entrada é um número real válido 1

NÃO ESTÁ TUDO BEM O valor de entrada não é um número real válido 1

1 Um valor Real ou LReal é inválido se for +/- INF (infinito), NaN (não é um número) ou se for um valor desnormalizado. Um desnormalizado
valor é um número muito próximo de zero. A CPU substitui um zero por um valor desnormalizado nos cálculos.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de comparação de igualdade e não igualdade

Instruções de comparação de igualdade e não igualdade

A CPU S7ÿ1200 fornece instruções para consultar o tipo de dados de um tag para o qual um Variant
pontos de operando para igualdade ou não igualdade com o tipo de dados do outro operando.

Além disso, a CPU S7ÿ1200 fornece instruções para consultar o tipo de dados de um elemento de matriz
para igualdade ou não igualdade com o tipo de dados do outro operando.

Nestas instruções, você está comparando <Operando1> com <Operando2>. <Operando1> deve ter
o tipo de dados Variante. <Operando2> pode ser um tipo de dados elementar de um tipo de dados PLC. Em LAD
e FBD, <Operando1> é o operando acima da instrução. Em LAD, <Operando2> é o operando
abaixo da instrução.

Para todas as instruções, o resultado da operação lógica (RLO) é 1 (verdadeiro) se a igualdade ou não igualdade
teste passa, e é 0 (falso) se não.

As instruções de comparação de tipo de igualdade e não igualdade são as seguintes:

tabela 1 EQ_Type (Compare o tipo de dados para EQUAL com o tipo de dados de uma tag)
NE_Type (Compare o tipo de dados para UNEQUAL com o tipo de dados de uma tag)
EQ_ElemType (Compare o tipo de dados de um elemento ARRAY para EQUAL com o tipo de dados de uma tag)
NE_ElemType (Compare o tipo de dados de um elemento ARRAY para UNEQUAL com o tipo de dados de uma tag) instruções

RAPAZ FBD SCL Descrição

Não Testa se a tag apontada pela Variant


acessível em Operand1 é do mesmo tipo de dados que a tag
em Operando2.

Não Testa se a tag apontada pela Variant


acessível em Operand1 é de um tipo de dados diferente da tag
em Operando2.

Não Testa se o elemento do array apontado por


acessível a Variante em Operando1 é do mesmo tipo de dados
como a tag em Operand2.

Não Testa se o elemento do array apontado por


acessível a Variante no Operando1 é de um dado diferente
digite como a tag em Operand2.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

Operando1 Variante Primeiro operando

Operando2 Strings de bits, números inteiros, números de ponto flutuante, Segundo operando
temporizadores, data e hora, cadeias de caracteres,
Tipos de dados ARRAY, PLC

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de comparação nula

Instruções de comparação nula

Você pode usar as instruções IS_NULL e NOT_NULL para determinar se a entrada


realmente aponta para um objeto ou não.

Para ambas as instruções, <Operando> deve ter o tipo de dados Variant.

As instruções de comparação nula são as seguintes:

tabela 1 IS_NULL (consulta para ponteiro EQUALS ZERO)


Instruções NOT_NULL (Consulta para ponteiro EQUALS ZERO)

RAPAZ FBD SCL Descrição

Não Testa se a tag apontada pela Variant


acessível at Operand é nulo e, portanto, não é um objeto.

Não Testa se a tag apontada pela Variant


acessível at Operando não é nulo e, portanto, aponta
a um objeto.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

Operando Variante Operando a ser avaliado como nulo ou não nulo.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


IS_ARRAY (Verificar ARRAY)

IS_ARRAY (Verificar ARRAY)

Você pode usar a instrução "Check for ARRAY" para consultar se a Variant aponta para uma tag de
o tipo de dados Array.

O <Operando> deve ter o tipo de dados Variant.

As instruções retornam 1 (verdadeiro) se o operando for um array.

tabela 1 IS_ARRAY (Verificar ARRAY)

RAPAZ FBD SCL Descrição

IS_ARRAY(_variant_in_) Testa se a tag apontada pela Variant


em Operando é uma matriz.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

Operando Variante Operando para avaliar se é uma matriz.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


CALCULATE (Calcular) instrução

CALCULATE (Calcular) instrução

tabela 1 instrução CALCULATE

LAD / FBD SCL Descrição

Use as expressões A instrução CALCULATE permite criar uma função matemática que opera nas entradas
matemáticas SCL (IN1, IN2, .. INn) e produz o resultado em OUT, de acordo com a equação que você
padrão para criar a definir. • Selecione primeiro um tipo de dados. Todas as entradas e saídas devem ser
equação.
iguais
tipo de
dados. • Para adicionar outra entrada, clique no ícone na última entrada.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados1

IN1, IN2, ..INn SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord

1 Os parâmetros IN e OUT devem ser do mesmo tipo de dados (com conversões implícitas dos parâmetros de entrada). Por exemplo: Um valor SINT
para uma entrada seria convertido em um valor INT ou REAL se OUT for um INT ou REAL

Clique no ícone da calculadora para abrir a caixa de diálogo e definir sua função matemática. Você
insere sua equação como entradas (como IN1 e IN2) e operações. Ao clicar em "OK" para salvar a
função, a caixa de diálogo cria automaticamente as entradas para a instrução CALCULATE.

A caixa de diálogo mostra um exemplo e uma lista de instruções possíveis que você pode incluir com
base no tipo de dados do parâmetro OUT:

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


CALCULATE (Calcular) instrução

Observação

Você também deve criar uma entrada para quaisquer constantes em sua função. O valor constante seria
então inserido na entrada associada para a instrução CALCULATE.

Ao inserir constantes como entradas, você pode copiar a instrução CALCULATE para outros locais em seu
programa do usuário sem precisar alterar a função. Você então pode alterar os valores ou tags das entradas
para a instrução sem modificar a função.

Quando CALCULATE é executado e todas as operações individuais no cálculo são concluídas com
sucesso, então ENO = 1. Caso contrário, ENO = 0.

Para obter um exemplo da instrução CALCULATE, consulte "Criando uma equação complexa com uma
instrução simples".

Veja também

ÿ Criando uma equação complexa com uma instrução simples

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google
26/10/2022 15:23 Instruções de adição, subtração, multiplicação e divisão - SIMATIC S7 S7-1200 Programmable c… - ID: 107623221 - Industry Support …

Instruções de adição, subtração, multiplicação e divisão

Tabela: instruções de adição, subtração, multiplicação e divisão

LAD / FBD SCL Descrição

saída := entrada1 + entrada2; saída := entrada1 - ADICIONAR: Adição (IN1 + IN2 = OUT)
*
entrada2;saída:=entrada1/ entrada2;saída:=entrada1 SUB: Subtração (IN1 - IN2 = OUT)
entrada2; MUL: Multiplicação (IN1 * ENTRADA = SAÍDA)

DIV: Divisão (IN1 / IN2 = OUT)

Uma operação de divisão Integer trunca a parte fracionária do quociente para


produzir uma saída inteira.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

Tabela: Tipos de dados para os parâmetros (LAD e FBD)

Parâmetro Tipo de dados


1 Descrição

IN1, IN2 SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Constant Entradas de operação matemática

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Saída da operação matemática

1 Os parâmetros IN1, IN2 e OUT devem ser do mesmo tipo de dados.

Para adicionar uma entrada ADD ou MUL, clique no ícone "Criar" ou clique com o botão direito do mouse em uma entrada
stub para um dos parâmetros IN existentes e selecione a opção "Inserir entrada"
comando.

Para remover uma entrada, clique com o botão direito do mouse em um stub de entrada para um dos parâmetros IN existentes (quando houver mais do que as duas entradas originais) e
selecione o comando "Excluir".

Quando habilitada (EN = 1), a instrução matemática realiza a operação especificada nos valores de entrada (IN1 e IN2) e armazena o resultado no
endereço de memória especificado pelo parâmetro de saída (OUT). Após a conclusão bem-sucedida da operação, a instrução define ENO = 1.

Tabela: status ENO

1 Descrição

1 Sem erro

0 O valor do resultado da operação matemática estaria fora do intervalo de números válido do tipo de dados selecionado. Pelo menos
parte significativa do resultado que se ajusta ao tamanho de destino é retornada.

0 Divisão por 0 (IN2 = 0): O resultado é indefinido e zero é retornado.

0 Real/LReal: Se um dos valores de entrada for NaN (não um número), então NaN será retornado.

0 ADD Real/LReal: Se ambos os valores IN forem INF com sinais diferentes, esta é uma operação ilegal e NaN é retornado.

0 SUB Real/LReal: Se ambos os valores IN forem INF com o mesmo sinal, esta é uma operação ilegal e NaN é retornado.

0 MUL Real/LReal: Se um valor IN for zero e o outro for INF, esta é uma operação ilegal e NaN é retornado.

https://support.industry.siemens.com/cs/mdm/107623221?c=59853526667&dl=en&lc=pt-BR 1/2
Machine Translated by Google
26/10/2022 15:23 Instruções de adição, subtração, multiplicação e divisão - SIMATIC S7 S7-1200 Programmable c… - ID: 107623221 - Industry Support …

0 DIV Real/LReal: Se ambos os valores IN forem zero ou INF, esta é uma operação ilegal e NaN será retornado.

https://support.industry.siemens.com/cs/mdm/107623221?c=59853526667&dl=en&lc=pt-BR 2/2
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução MOD (retorna o resto da divisão)

Instrução MOD (retorna o resto da divisão)

tabela 1 Instrução de módulo (retorna o resto da divisão)


LAD / FBD SCL Descrição

out := in1 MOD in2; Você pode usar a instrução MOD para retornar o restante de um inteiro
operação de divisão. O valor na entrada IN1 é dividido pelo valor na entrada
entrada IN2 e o restante é retornado na saída OUT.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados1 Descrição

IN1 e IN2 SInt, Int, DInt, USInt, UInt, UDInt, Constante Entradas de módulo

FORA SInt, Int, DInt, USInt, UInt, UDInt Saída do módulo

1 Os parâmetros IN1, IN2 e OUT devem ser do mesmo tipo de dados.

Tabela 3 Valores ENO

1 Descrição

1 Sem erro

0 Valor IN2 = 0, OUT é atribuído o valor zero

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução NEG (Criar complemento de dois)

Instrução NEG (Criar complemento de dois)

tabela 1 Instrução NEG (criar complemento de dois)

LAD / FBD SCL Descrição

-(dentro); A instrução NEG inverte o sinal aritmético do valor no parâmetro IN e armazena o


resultar no parâmetro OUT.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados1 Descrição

DENTRO
SInt, Int, DInt, Real, LReal, Constante Entrada de operação matemática

FORA SInt, Int, DInt, Real, LReal Saída da operação matemática

1 Os parâmetros IN e OUT devem ser do mesmo tipo de dados.

Tabela 3 Status ENO

1 Descrição

1 Sem erro

0 O valor resultante está fora do intervalo de números válido do tipo de dados selecionado.
Exemplo para SInt: NEG (-128) resulta em +128 que excede o máximo do tipo de dados.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções INC (Incremento) e DEC (Decremento)

Instruções INC (Incremento) e DEC (Decremento)

tabela 1 Instruções INC e DEC

LAD / FBD SCL Descrição

entrada_saída := entrada_saída + 1; Incrementa um valor de número inteiro com ou sem sinal:


Valor IN_OUT +1 = valor IN_OUT

in_out := in_out - 1; Decrementa um valor de número inteiro com ou sem sinal:


Valor IN_OUT - 1 = valor IN_OUT

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados Descrição

ENTRADA/SAÍDA SInt, Int, DInt, USInt, UInt, UDInt Entrada e saída de operação matemática

Tabela 3 Status ENO

1 Descrição

1 Sem erro

0 O valor resultante está fora do intervalo de números válido do tipo de dados selecionado.
Exemplo para SInt: INC (+127) resulta em +128, que excede o máximo do tipo de dados.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução ABS (Forma de valor absoluto)

Instrução ABS (Forma de valor absoluto)

tabela 1 Instrução ABS (valor absoluto)

LAD / FBD SCL Descrição

sai := ABS(entra); Calcula o valor absoluto de um número inteiro ou real com sinal no parâmetro IN
e armazena o resultado no parâmetro OUT.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados1 Descrição

DENTRO
SInt, Int, DInt, Real, LReal Entrada de operação matemática

FORA SInt, Int, DInt, Real, LReal Saída da operação matemática

1 Os parâmetros IN e OUT devem ser do mesmo tipo de dados.

Tabela 3 Status ENO

1 Descrição

1 Sem erro

0 O valor do resultado da operação matemática está fora do intervalo de números válido do tipo de dados selecionado.

Exemplo para SInt: ABS (-128) resulta em +128 que excede o máximo do tipo de dados.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções MIN (Obter o mínimo) e MAX (Obter o máximo)

Instruções MIN (Obter o mínimo) e MAX (Obter o máximo)

tabela 1 Instruções MIN (obter mínimo) e MAX (obter máximo)


LAD / FBD SCL Descrição

out:= MIN(in1:=_variant_in_, A instrução MIN compara o valor de dois parâmetros IN1 e


in2:=_variant_in_ [,...in32]); IN2 e atribui o valor mínimo (menor) ao parâmetro OUT.

out:= MAX( in1:=_variant_in_, A instrução MAX compara o valor de dois parâmetros IN1 e
in2:=_variant_in_ [,...in32]); IN2 e atribui o valor máximo (maior) ao parâmetro OUT.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados1 Descrição

IN1, IN2 SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Hora, Data, Entradas de operação matemática (até 32 entradas)
[...IN32] TOD, Constante

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Hora, Data, Saída da operação matemática
TOD

1 Os parâmetros IN1, IN2 e OUT devem ser do mesmo tipo de dados.

Para adicionar uma entrada, clique no ícone "Criar" ou clique com o botão direito do mouse em um stub de entrada para um dos
IN e selecione o comando "Inserir entrada".

Para remover uma entrada, clique com o botão direito do mouse em um stub de entrada para um dos parâmetros IN existentes (quando
existem mais do que as duas entradas originais) e selecione o comando "Excluir".

Tabela 3 Status ENO

1 Descrição

1 Sem erro

0 Apenas para o tipo de dados Real:

• Pelo menos uma entrada não é um número real (NaN).


• O OUT resultante é +/- INF (infinito).

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução LIMIT (Definir valor limite)

Instrução LIMIT (Definir valor limite)

tabela 1 Instrução LIMIT (valor limite definido)

LAD / FBD SCL Descrição

LIMIT(MN:=_variant_in_, A instrução Limit testa se o valor do parâmetro IN está dentro do


IN:=_variant_in_, faixa de valores especificada pelos parâmetros MIN e MAX e se não, grampos
MX:=_variant_in_, o valor em MIN ou MAX.
OUT:=_variant_out_);

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados1 Descrição

MN, IN e MX SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Hora, Data, TOD· Entradas de operação matemática
Constante

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Time, Date, TOD Saída de operação matemática

1 Os parâmetros MN, IN, MX e OUT devem ser do mesmo tipo de dados.

Se o valor do parâmetro IN estiver dentro do intervalo especificado, o valor de IN será armazenado em


parâmetro OUT. Se o valor do parâmetro IN estiver fora do intervalo especificado, o OUT
valor é o valor do parâmetro MIN (se o valor IN for menor que o valor MIN) ou o valor de
parâmetro MAX (se o valor IN for maior que o valor MAX).

Tabela 3 Status ENO

1 Descrição

1 Sem erro

0 Real: Se um ou mais valores para MIN, IN e MAX for NaN (Not a Number), então NaN será retornado.

0 Se MIN for maior que MAX, o valor IN é atribuído a OUT.

Exemplos SCL:

• MeuVal := LIMIT(MN:=10,IN:=53, MX:=40); //Resultado: MeuVal = 40

• MeuVal := LIMIT(MN:=10,IN:=37, MX:=40); //Resultado: MeuVal = 37

• MeuVal := LIMIT(MN:=10,IN:=8, MX:=40); //Resultado: MeuVal = 10

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google
26/10/2022 15:29 Instruções de expoente, logaritmo e trigonometria - SIMATIC S7 S7-1200 Programmbl… - ID: 107623221 - Industry Suppo…

Instruções de expoente, logaritmo e trigonometria

Você usa as instruções de ponto flutuante para programar operações matemáticas usando um tipo de dados Real ou LReal:

2
SQR: Forma quadrada (IN = OUT)
SQRT: Forma raiz quadrada (ÿIN = OUT)
LN: Forma logaritmo natural (LN(IN) = OUT)
DENTRO

EXP: Forma valor exponencial (e =OUT), onde base e = 2,71828182845904523536


EM 2
EXPT: exponenciar (IN1 = OUT)

Os parâmetros EXPT IN1 e OUT são sempre do mesmo tipo de dados, para os quais você deve selecionar Real ou LReal. Você pode selecionar o
tipo de dados para o parâmetro expoente IN2 entre muitos tipos de dados.

FRAC: Fração de retorno (parte fracionária do número de ponto flutuante IN = OUT)


SIN: Valor do seno do formulário (sin(IN radianos) = OUT)
ASIN: Forma arcsine value (arcsine(IN) = OUT radianos), onde o sin(OUT radianos) = IN
COS: forma cosseno (cos(IN radianos) = OUT)
ACOS: Forma o valor do arco-seno (arccos(IN) = OUT radianos), onde o cos(OUT radianos) = IN
TAN: Valor da tangente do formulário (tan(IN radianos) = OUT)
ATAN: Valor do arco tangente (arctan(IN) = OUT radianos), onde o tan(OUT radianos) = IN

Tabela: Exemplos de instruções matemáticas de ponto flutuante

LAD / FBD SCL Descrição

fora := SQR(in);
2
Quadrado: ENTRADA = SAÍDA
ou
Por exemplo: Se IN = 9, então OUT = 81.
*
fora := dentro dentro;

**
sair := entrar1 em 2;
EM 2
Exponencial geral: IN1 = FORA

Por exemplo: Se IN1 = 3 e IN2 = 2, então OUT = 9.

1
Para LAD e FBD: Clique no botão "???" (pelo nome da instrução) e selecione um tipo de dados no menu suspenso.
2
Para SCL: Você também pode usar os operadores matemáticos básicos de SCL para criar as expressões matemáticas.

Tabela: tipos de dados para parâmetros

Parâmetro Tipo de dados Descrição

E, E1 Real, LReal, Constante Entradas

EM 2 SInt, Int, DInt, USInt, UInt,UDInt, Real, LReal, Constant EXPT entrada do expoente

FORA Real, Real Saídas

Tabela: status ENO

1 Instrução Doença Resultado (OUT)

1 Tudo Sem erro Resultado válido

0 SQR O resultado excede o intervalo Real/LReal válido +INF

https://support.industry.siemens.com/cs/mdm/107623221?c=59852700299&dl=en&lc=pt-BR
IN é +/- NaN (não é um número) +NaN 1/2
Machine Translated by Google
26/10/2022 15:29 Instruções de expoente, logaritmo e trigonometria - SIMATIC S7 S7-1200 Programmbl… - ID: 107623221 - Industry Suppo…

SQRT IN é negativo -NaN

IN é +/- INF (infinito) ou +/- NaN +/- INF ou +/- NaN

LN IN é 0,0, negativo, -INF ou -NaN -NaN

IN é +INF ou +NaN +INF ou +NaN

EXP O resultado excede o intervalo Real/LReal válido +INF

IN é +/- NaN +/- NaN

SIN, COS, SO IN é +/- INF ou +/- NaN +/- INF ou +/- NaN

ASIN, ACOS IN está fora do intervalo válido de -1,0 a +1,0 +NaN

IN é +/- NaN +/- NaN

NUMA IN é +/- NaN +/- NaN

FRAC IN é +/- INF ou +/- NaN +NaN

EXPT IN1 é +INF e IN2 não é -INF +INF

IN1 é negativo ou -INF +NaN se IN2 for Real/LReal,


-INF caso contrário

IN1 ou IN2 é +/- NaN +NaN

IN1 é 0.0 e IN2 é Real/LReal (somente) +NaN

https://support.industry.siemens.com/cs/mdm/107623221?c=59852700299&dl=en&lc=pt-BR 2/2
Machine Translated by Google
26/10/2022 15:35 MOVE (Move o valor), MOVE_BLK (Move o bloco), UMOVE_BLK (Move o bloco ininterruptamente), a… - ID: 107623221 - Industry S…

MOVE (Mover valor), MOVE_BLK (Mover bloco), UMOVE_BLK (Mover bloco


ininterrupta) e instruções MOVE_BLK_VARIANT (Move o bloco)

Use as instruções Move para copiar elementos de dados para um novo endereço de memória e converter de um tipo de dados para outro. Os dados de origem são
não alterado pelo processo de movimentação.

A instrução MOVE copia um único elemento de dados do endereço de origem especificado pelo parâmetro IN para o destino
endereços especificados pelo parâmetro OUT.
As instruções MOVE_BLK e UMOVE_BLK possuem um parâmetro COUNT adicional. O COUNT especifica quantos dados
elementos são copiados. O número de bytes por elemento copiado depende do tipo de dados atribuído ao parâmetro IN e OUT
nomes de tags na tabela de tags do PLC.

Tabela: instruções MOVE, MOVE_BLK, UMOVE_BLK e MOVE_BLK_VARIANT

LAD / FBD SCL Descrição

saída1 := entrada;
Copia um elemento de dados armazenado em um endereço especificado

para um novo endereço ou vários endereços. 1

MOVE_BLK(in:=_variant_in,
count:=_uint_in, out=>_variant_out); Movimento interrompível que copia um bloco de dados
elementos para um novo endereço.

UMOVE_BLK(in:=_variant_in, count:=_uint_in,
out=>_variant_out); Movimento ininterrupto que copia um bloco de dados
elementos para um novo endereço.

MOVE_BLK( SRC:=_variant_in,
COUNT:=_udint_in, Move o conteúdo de uma área de memória de origem para um

SRC_INDEX:=_dint_in, área de memória de destino.

DEST_INDEX:=_dint_in,
Você pode copiar um array completo ou elementos de um
DEST=>_variant_out);
array para outro array do mesmo tipo de dados. O tamanho
(número de elementos) da matriz de origem e destino
pode ser diferente. Você pode copiar vários ou um único
elementos dentro de um array. Você usa tipos de dados Variant
para apontar para as matrizes de origem e destino.

1 Instrução MOVE: Para adicionar outra saída em LAD ou FBD, clique no ícone "Criar" junto ao parâmetro de saída. Para SCL, use vários
declarações de atribuição. Você também pode usar uma das construções de loop.

Tabela: Tipos de dados para a instrução MOVE

Parâmetro Tipo de dados Descrição

DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Endereço de Origem
Tipos de dados Char, WChar, Array, Struct, DTL, Time, Date, TOD, IEC,
Tipos de dados PLC

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Endereço de destino
Tipos de dados Char, WChar, Array, Struct, DTL, Time, Date, TOD, IEC,
Tipos de dados PLC

https://support.industry.siemens.com/cs/mdm/107623221?c=71045095435&dl=en&lc=pt-BR 1/4
Machine Translated by Google
26/10/2022 15:35 MOVE (Move o valor), MOVE_BLK (Move o bloco), UMOVE_BLK (Move o bloco ininterruptamente), a… - ID: 107623221 - Industry S…

Para adicionar saídas MOVE, clique no ícone "Criar" ou clique com o botão direito do mouse em um stub de saída
para um dos parâmetros OUT existentes e selecione a opção "Inserir saída"
comando.

Para remover uma saída, clique com o botão direito do mouse em um stub de saída para um dos parâmetros OUT existentes (quando houver mais do que os dois
outputs) e selecione o comando "Delete".

Tabela: Tipos de dados para as instruções MOVE_BLK e UMOVE_BLK

Parâmetro Tipo de dados Descrição

DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Byte, Word, DWord, Endereço inicial de origem
Hora, Data, TOD, WCar

CONTAR UInt Número de elementos de dados a serem copiados

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Endereço inicial de destino
Hora, Data, TOD, WCar

Tabela: Tipos de dados para a instrução MOVE_BLK_VARIANT

Parâmetro Tipo de dados Descrição

SRC Variante (que aponta para uma matriz ou elemento de matriz individual) Bloco de origem do qual copiar

CONTAR UDInt Número de elementos de dados a serem copiados

SRC_INDEX Força Índice baseado em zero no array SRC

DEST_INDEX Força Índice baseado em zero no array DEST

ESCOLHA CERTA Int Informações de erro

MÃO Variante (que aponta para um array ou elemento de array individualt) Área de destino na qual copiar o
conteúdo do bloco de origem

Observação

Regras para operações de cópia de dados

Para copiar o tipo de dados Bool, use SET_BF, RESET_BF, R, S ou output


bobina (LAD)

Para copiar um único tipo de dados elementar, use MOVE

Para copiar uma matriz de um tipo de dados elementar, use MOVE_BLK ou


MIND_BLK

Para copiar uma estrutura, use MOVE

Para copiar uma string, use S_MOVE

Para copiar um único caractere em uma string, use MOVE

As instruções MOVE_BLK e UMOVE_BLK não podem ser usadas para


copie matrizes ou estruturas para as áreas de memória I, Q ou M.

https://support.industry.siemens.com/cs/mdm/107623221?c=71045095435&dl=en&lc=pt-BR 2/4
As instruções MOVE BLK e UMOVE BLK diferem em como as interrupções são tratadas:
Machine Translated by Google
26/10/2022 15:35 MOVE (Move o valor), MOVE_BLK (Move o bloco), UMOVE_BLK (Move o bloco ininterruptamente), a… - ID: 107623221 - Industry S…

Os eventos de interrupção são enfileirados e processados durante a execução do MOVE_BLK. Use a instrução MOVE_BLK quando os dados em
o endereço de destino de movimentação não é usado em um subprograma OB de interrupção ou, se usado, os dados de destino não precisam ser
consistente. Se uma operação MOVE_BLK for interrompida, o último elemento de dados movido estará completo e consistente no
endereço de destino. A operação MOVE_BLK é retomada após a conclusão da execução do OB de interrupção.
Os eventos de interrupção são enfileirados, mas não processados até que a execução do UMOVE_BLK seja concluída. Use a instrução UMOVE_BLK
quando a operação de movimentação deve ser concluída e os dados de destino consistentes, antes da execução de um OB de interrupção
subprograma. Para obter mais informações, consulte a seção sobre consistência de dados.

ENO é sempre verdadeiro após a execução da instrução MOVE.

Tabela: status ENO

1 Doença Resultado

1 Sem erro Todos os elementos COUNT foram copiados com sucesso.

0 O intervalo de origem (IN) ou o intervalo de destino (OUT) Os elementos que se encaixam são copiados. Nenhum elemento parcial é
excede a área de memória disponível. copiado.

Tabela: Códigos de condição para a instrução MOVE_BLK_VARIANT

ESCOLHA CERTA Descrição

(W#16#...)

0000 Sem erro

80B4 Os tipos de dados não correspondem.

8151 O acesso ao parâmetro SRC não é possível.

8152 O operando no parâmetro SRC é um tipo inválido.

8153 Erro de geração de código no parâmetro SRC

8154 O operando no parâmetro SRC tem o tipo de dados Bool.

8281 O parâmetro COUNT tem um valor inválido.

8382 O valor no parâmetro SRC_INDEX está fora do


limites da Variante.

8383 O valor no parâmetro SRC_INDEX está fora da alta


limite da matriz.

8482 O valor no parâmetro DEST_INDEX está fora do


limites da Variante.

8483 O valor no parâmetro DEST_INDEX está fora da alta


limite da matriz.

8534 O parâmetro DEST é protegido contra gravação.

8551 O acesso ao parâmetro DEST não é possível.

8552 O operando no parâmetro DEST é um tipo inválido.


https://support.industry.siemens.com/cs/mdm/107623221?c=71045095435&dl=en&lc=pt-BR 3/4
Machine Translated by Google
26/10/2022 15:35 MOVE (Move o valor), MOVE_BLK (Move o bloco), UMOVE_BLK (Move o bloco ininterruptamente), a… - ID: 107623221 - Industry S…

8553 Erro de geração de código no parâmetro DEST

8554 O operando no parâmetro DEST tem o tipo de dado


Bool.

*Você pode exibir códigos de erro no editor do programa como valores inteiros ou hexadecimais.

https://support.industry.siemens.com/cs/mdm/107623221?c=71045095435&dl=en&lc=pt-BR 4/4
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Desserializar

Desserializar

Você pode usar a instrução "Desserializar" para converter a representação sequencial de um dado PLC
type (UDT) de volta a um tipo de dado PLC e para preencher todo o seu conteúdo. Se a comparação for VERDADEIRA, então
a saída da caixa é TRUE.

A área de memória que contém a representação seqüencial de um tipo de dado PLC deve ter a
Array do tipo de dados Byte e você deve declarar o bloco de dados para ter padrão (não otimizado)
Acesso. Certifique-se de que haja espaço de memória suficiente antes da conversão.

A instrução permite converter várias representações sequenciais de PLC convertido


tipos de dados de volta aos seus tipos de dados originais.

Observação

Se você deseja apenas converter de volta uma única representação sequencial de um tipo de dados PLC (UDT),
você também pode usar a instrução "TRCV: Receber dados via conexão de comunicação".

tabela 1 Desserializar instrução

LAD / FBD SCL Descrição

ret_val := Desserializar Converte o sequencial


( SRC_ARRAY:=_variant_in_, DEST_VARIA representação de um tipo de dados PLC
BLE=>_variant_out_, POS:=_dint_inout_); (UDT) de volta para um tipo de dados PLC e
preenche todo o seu conteúdo

mesa 2 Parâmetros para a instrução DESERIALIZE

Parâmetro Modelo Tipo de dados Descrição

SRC_ARRAY DENTRO Variante Bloco de dados globalque


contém o fluxo de dados

DEST_VARIABLE ENTRADA Variante Etiqueta na qual guardar o


tipo de dados PLC convertido (UDT)

PDV ENTRADA Força Número de bytes que o


tipo de dados PLC convertido usa

ESCOLHA CERTA FORA Int Informações de erro

Tabela 3 Parâmetro RET_VAL

RET_VAL* Descrição
(W#16#...)

0000 Sem erro

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Desserializar

RET_VAL* Descrição
(W#16#...)

80B0 As áreas de memória para os parâmetros SRC_ARRAY e DEST_VARIABLE se sobrepõem.

8136 O bloco de dados no parâmetro DEST_VARIABLE não é um bloco com acesso padrão.

8150 O tipo de dados Variant no parâmetro SRC_ARRAY não contém nenhum valor.

8151 Erro de geração de código no parâmetro SRC_ARRAY.

8153 Não há memória livre suficiente disponível no parâmetro SRC_ARRAY.

8250 O tipo de dados Variant no parâmetro DEST_VARIABLE não contém nenhum valor.

8251 Erro de geração de código no parâmetro DEST_VARIABLE.

8254 Tipo de dados inválido no parâmetro DEST_VARIABLE.

8382 O valor no parâmetro POS está fora dos limites do array.

*Você pode visualizar os códigos de erro como inteiro ou hexadecimal no editor do programa.

Exemplo: desserializar instrução


O exemplo a seguir mostra como a instrução funciona:

Rede 1:

A instrução "MOVE" move o valor "0" para o tag do bloco de dados "#BufferPos". A desserialização
A instrução então desserializa a representação sequencial dos dados do cliente do
bloco de dados "Buffer" e o grava no bloco de dados "Target". A instrução Deserialize calcula
o número de bytes que os dados convertidos usam e os armazena no bloco de dados "#BufferPos"
marcação.

Rede 2:

A instrução "Deserialize" desserializa a representação sequencial do fluxo de dados


apontado por "Buffer" e escreve os caracteres no operando "#Label". A lógica compara
os personagens usando as instruções de comparação "arti" e "Bill". Se a comparação para "arti" =
VERDADEIRO, os dados são dados do artigo que devem ser desserializados e gravados na estrutura de dados "Artigo"

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Desserializar

do bloco de dados "Destino". Se a comparação para "Bill" = TRUE, os dados são dados de faturamento que devem ser
desserializados e gravados na estrutura de dados "Bill" do bloco de dados "Target".

Interface do bloco de função (ou função):

Tipos de dados personalizados do PLC:

A estrutura dos dois tipos de dados PLC (UDTs) para este exemplo é a seguinte:

Blocos de dados:

Os dois blocos de dados para este exemplo são os seguintes:

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Serializar

Serializar

Você pode usar a instrução "Serialize" para converter vários tipos de dados PLC (UDTs) em um
representação sem perda de estrutura.

Você pode usar a instrução para salvar temporariamente vários itens de dados estruturados de seu
programa para um buffer, por exemplo, para um bloco de dados global, e os envia para outra CPU. o
a área de memória na qual os tipos de dados do PLC convertidos são armazenados deve ter o ARRAY de BYTE
tipo de dados e ser declarado com acesso padrão. Verifique se há espaço de memória suficiente
antes da conversão.

O parâmetro POS contém informações sobre o número de bytes que o CP convertido


tipos de dados usam.

Observação

Se você deseja enviar apenas um único tipo de dados PLC (UDT), você pode usar a instrução "TSEND: Send
dados via conexão de comunicação".

tabela 1 instrução SERIALIZE

LAD / FBD SCL Descrição

ret_val := serializar Converte um tipo de dados PLC (UDT)


( SRC_VARIABLE=>_variant_in_, DEST_ARR para uma representação sequencial.
AY:=_variant_out_, POS:=_dint_inout_);

mesa 2 Parâmetros para a instrução SERIALIZE

Parâmetro Modelo Tipo de dados Descrição

SRC_VARIABLE DENTRO Variante Tipo de dados PLC (UDT) que deve


ser convertido em um serial

representação

DEST_ARRAY ENTRADA Variante Bloco de dados no qual o

fluxo de dados gerado deve ser


armazenado

PDV ENTRADA Força Número de bytes que o


tipos de dados PLC convertidos usam.
O parâmetro POS calculado
é baseado em zero.

ESCOLHA CERTA FORA Int Informações de erro

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Serializar

Tabela 3 Parâmetro RET_VAL

RET_VAL* Descrição
(W#16#...)

0000 Sem erro

80B0 As áreas de memória para os parâmetros SRC_VARIABLE e DEST_ARRAY se sobrepõem.

8150 O tipo de dados Variant no parâmetro SRC_VARIABLE não contém valor.

8152 Erro de geração de código no parâmetro SRC_VARIABLE.

8236 O bloco de dados no parâmetro DEST_ARRAY não é um bloco com acesso padrão.

8250 O tipo de dados Variant no parâmetro DEST_ARRAY não contém nenhum valor.

8252 Erro de geração de código no parâmetro DEST_ARRAY.

8253 Não há memória livre suficiente disponível no parâmetro DEST_ARRAY.

8254 Tipo de dados inválido no parâmetro DEST_VARIABLE.

8382 O valor no parâmetro POS está fora dos limites do array.

*Você pode visualizar os códigos de erro como inteiro ou hexadecimal no editor do programa.

Exemplo: serializar instrução


O exemplo a seguir mostra como a instrução funciona:
Rede 1:

A instrução "MOVE" move o valor "0" para o parâmetro "#BufferPos". A "serialização"


A instrução serializa os dados do cliente do bloco de dados "Source" e os grava em sequência
representação para o bloco de dados "Buffer". A instrução armazena o número de bytes usados por
a representação sequencial no parâmetro "#BufferPos".
Rede 2:

A lógica agora insere algum texto separador para facilitar a desserialização do sequencial
representação posteriormente. A instrução "S_MOVE" move a string de texto "arti" para o "#Label"
parâmetro. A instrução "Serialize" grava esses caracteres após os dados do cliente de origem no
Bloco de dados "Buffer". A instrução adiciona o número de bytes na string de texto "arti" ao
número já armazenado no parâmetro "#BufferPos".
Rede 3:

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Serializar

A instrução "Serialize" serializa os dados de um artigo específico, que é calculado em tempo de execução, do bloco de dados
"Source" e os grava em representação sequencial no bloco de dados "Buffer" após os caracteres "arti"

Interface do bloco:

Tipos de dados personalizados do PLC:

A estrutura dos dois tipos de dados PLC (UDTs) para este exemplo é a seguinte:

Blocos de dados:

Os dois blocos de dados para este exemplo são os seguintes:

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções FILL_BLK (preencher bloco) e UFILL_BLK (preencher bloco ininterruptamente)

Instruções FILL_BLK (preencher bloco) e UFILL_BLK (preencher bloco ininterruptamente)

tabela 1 Instruções FILL_BLK e UFILL_BLK

LAD / FBD SCL Descrição

FILL_BLK(in:=_variant_in, count:=int, Instrução de preenchimento interrompível: Preenche um intervalo de endereços com cópias de um
out=>_variant_ou elemento de dados

t);

UFILL_BLK( em:=_variant_in, count:=int Instrução de preenchimento ininterrupto: Preenche um intervalo de endereços com cópias de um
out=>_variant_ou elemento de dados especificado
t);

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, Endereço da fonte de dados

DWord, Hora, Data, TOD, Char, WChar

CONTAR UDint, USInt, UInt Número de elementos de dados a serem copiados

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, Endereço de destino dos dados

DWord, Hora, Data, TOD, Char, WChar

Observação

Regras para operações de preenchimento de dados

• Para preencher com o tipo de dados BOOL, use SET_BF, RESET_BF, R, S ou bobina de saída (LAD)

• Para preencher com um único tipo de dados elementar, use MOVE

• Para preencher uma matriz com um tipo de dados elementar, use FILL_BLK ou UFILL_BLK

• Para preencher um único caractere em uma string, use MOVE

• As instruções FILL_BLK e UFILL_BLK não podem ser usadas para preencher arrays nas áreas de memória I, Q ou M.

As instruções FILL_BLK e UFILL_BLK copiam o elemento de dados de origem IN para o destino


onde o endereço inicial é especificado pelo parâmetro OUT. O processo de cópia se repete e um
bloco de endereços adjacentes é preenchido até que o número de cópias seja igual ao parâmetro COUNT.

As instruções FILL_BLK e UFILL_BLK diferem em como as interrupções são tratadas:

• Os eventos de interrupção são enfileirados e processados durante a execução de FILL_BLK. Use a instrução FILL_BLK
quando os dados no endereço de destino do movimento não são usados em um subprograma OB de interrupção ou, se
usados, os dados de destino não precisam ser consistentes.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções FILL_BLK (preencher bloco) e UFILL_BLK (preencher bloco ininterruptamente)

• Os eventos de interrupção são enfileirados, mas não processados até que a execução de UFILL_BLK seja concluída. Use o
Instrução UFILL_BLK quando a operação de movimentação deve ser concluída e os dados de destino
consistente, antes da execução de um subprograma OB de interrupção.

Tabela 3 Status ENO

1 Doença Resultado

1 Sem erro O elemento IN foi copiado com sucesso para todos


COUNT destinos.

0 O intervalo de destino (OUT) excede o Os elementos que se encaixam são copiados. Sem parcial

área de memória disponível elementos são copiados.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução SWAP (Swap bytes)

Instrução SWAP (Swap bytes)

tabela 1 Instrução SWAP

LAD / FBD SCL Descrição

sai := SWAP(in); Inverte a ordem de bytes para elementos de dados de dois e quatro bytes. Nenhuma mudança é
feita para a ordem de bits dentro de cada byte. ENO é sempre TRUE após a execução
da instrução SWAP.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
Palavra, DWord Bytes de dados ordenados IN

FORA Palavra, DWord Bytes de dados ordenados reversos OUT

Exemplo 1 Parâmetro IN = MB0 Parâmetro OUT = MB4, (após


(antes da execução) a execução)

Endereço MW0 MB1 MW4 MB5

Em # 16 # 1234 12 34 34 12

PALAVRA MSB LSB MSB LSB

Exemplo 2 Parâmetro IN = MB0 Parâmetro OUT = MB4, (após


(antes da execução) a execução)

Endereço MD0 MB1 MB2 MB3 MD4 MB5 MB6 MB7

DW#16# 12 34 56 78 78 56 34 12
12345678 MSB LSB MSB LSB
DWORD

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Endereçamento indexado com instruções PEEK e POKE

Endereçamento indexado com instruções PEEK e POKE

O SCL fornece instruções PEEK e POKE que permitem ler ou gravar em blocos de dados, E/S ou memória. Você
fornece parâmetros para deslocamentos de bytes específicos ou deslocamentos de bits para a operação.

Observação

Para usar as instruções PEEK e POKE com blocos de dados, você deve usar blocos de dados padrão (não
otimizados). Observe também que as instruções PEEK e POKE apenas transferem dados. Eles não têm
conhecimento dos tipos de dados nos endereços.

OLHADINHA
Lê o byte referenciado por byteOffset do bloco de dados
(área:=_in_, dbNumber:=_in_, byteOffse referenciado, E/S ou área de memória.
t:=_in_); Exemplo de bloco de dados de referência:

%MB100 := PEEK(area:=16#84, dbNumber:=1, byteOffset:=#i);

Exemplo de referência de entrada IB3:

%MB100 := PEEK(area:=16#81, dbNumber:=0,


byteOffset:=#i); // quando #i = 3

PEEK_WORD Lê a palavra referenciada por byteOffset do bloco de dados


(área:=_in_, dbNumber:=_in_, byteOffse referenciado, E/S ou área de memória.
t:=_in_); Exemplo:

%MW200 := PEEK_WORD(área:=16#84,
dbNumber:=1, byteOffset:=#i);

PEEK_DWORD Lê a palavra dupla referenciada por byteOffset de byteOffse o


(área:=_in_, dbNumber:=_in_, bloco de dados referenciado, E/S ou área de memória.
t:=_in_); Exemplo:

%MD300 := PEEK_DWORD(área:=16#84,
dbNumber:=1, byteOffset:=#i);

PEEK_BOOL Lê um Boolean referenciado pelo bitOffset e byteOffse


(área:=_in_, dbNumber:=_in_, t:=_in_, byteOffset do bloco de dados referenciado, E/S ou área de memória
bitOffset:=_in_);

Exemplo:

%MB100.0 := PEEK_BOOL(area:=16#84,
dbNumber:=1, byteOffset:=#ii, bitOffset:=#j);

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Endereçamento indexado com instruções PEEK e POKE

CUTUCAR Grava o valor (Byte, Word ou DWord) no


(área:=_in_, dbNumber:=_in_, valor:=_in_); byteOffse byteOffset referenciado do bloco de dados referenciado,
t:=_in_, E/S ou área de memória

Exemplo de bloco de dados de referência:

POKE(área:=16#84, dbNumber:=2, byteOffset:=3,


valor:="Tag_1");

Exemplo de referência de saída QB3:

POKE(área:=16#82, dbNumber:=0, byteOffset:=3,


valor:="Tag_1");

POKE_BOOL Grava o valor booleano no bitOffset referenciado


(área:=_in_, dbNumber:=_in_, byteOffse e byteOffset do bloco de dados referenciado, E/S ou
t:=_in_, bitOffset:=_in_, valor:=_in_); área de memória

Exemplo:

POKE_BOOL(área:=16#84, dbNumber:=2,
byteOffset:=3, bitOffset:=5, valor:=0);

POKE_BLK Escreve o número "count" de bytes começando no


(area_src:=_in_, dbNumber_src:=_in_, b byte referenciado Offset da fonte referenciada
yteOffset_src:=_in_, area_dest:=_in_, db bloco de dados, E/S ou área de memória para o referenciado
Number_dest:=_in_, byteOffset_dest:=_in_, byteOffset do bloco de dados de destino referenciado,
count:=_in_); E/S ou área de memória

Exemplo:

POKE_BLK(area_src:=16#84,
dbNumber_src:=#src_db,
byteOffset_src:=#src_byte, area_dest:=16#84,
dbNumber_dest:=#src_db,
byteOffset_dest:=#src_byte, contagem:=10);

Para instruções PEEK e POKE, os seguintes valores para "area", "area_src" e "area_dest"
parâmetros são aplicáveis. Para áreas que não sejam blocos de dados, o parâmetro dbNumber deve ser
0.

16#81 EU

16#82 Q

16#83M

16#84 BD

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Ler e escrever instruções grandes e pequenas em Endian (SCL)

Ler e escrever instruções grandes e pequenas em Endian (SCL)

A CPU S7-1200 fornece instruções SCL para leitura e escrita de dados em formato little endian
e em formato big endian. O formato little endian significa que o byte com o bit menos significativo
está no endereço de memória mais baixo. O formato big endian significa que o byte com mais
bit significativo está no endereço de memória mais baixo.

As quatro instruções SCL para leitura e escrita de dados no formato little endian e big endian são
do seguinte modo:

• READ_LITTLE (Ler dados em formato little endian)

• WRITE_LITTLE (Escrever dados em formato little endian)

• READ_BIG (Ler dados em formato big endian)

• WRITE_BIG (Grava dados em formato big endian)

tabela 1 Ler e escrever instruções big e little endian

LAD / FBD SCL Descrição

Não disponível READ_LITTLE Lê dados de uma área de memória e os grava em um único


(src_array:=_variant_in_, dest_Variable tag no formato de byte little endian.
=>_out_, pos:=_dint_inout)

Não disponível WRITE_LITTLE( src_variable:=_in_, dest_array Grava dados de uma única tag em uma área de memória em pouco
=>_variant_inout_, pos:=_dint_inout) formato de byte endian.

Não disponível READ_BIG Lê dados de uma área de memória e os grava em um único


(src_array:=_variant_in_, dest_Variable tag em formato de byte big endian.
=>_out_, pos:=_dint_inout)

Não disponível WRITE_BIG( src_variable:=_in_, dest_array Grava dados de uma única tag em uma área de memória em grande
=>_variant_inout_, pos:=_dint_inout) formato de byte endian.

mesa 2 Parâmetros para as instruções READ_LITTLE e READ_BIG

Parâmetro Tipo de dados Descrição

src_array Matriz de byte Área de memória a partir da qual ler


dados

dest_Variable Cadeias de bits, números inteiros, números de ponto flutuante, temporizadores, data e Variável de destino na qual escrever

tempo, cadeias de caracteres dados

posição
FORÇA Posição de base zero a partir da qual
comece a ler os dados do src_array
entrada.

Tabela 3 Parâmetros para as instruções WRITE_LITTLE e WRITE_BIG

Parâmetro Tipo de dados Descrição

variável_src Cadeias de bits, números inteiros, números de ponto flutuante, LDT, TOD, LTOD, Dados de origem da tag
DATA, Char, WChar

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Ler e escrever instruções grandes e pequenas em Endian (SCL)

Parâmetro Tipo de dados Descrição

dest_array Matriz de byte Área de memória na qual gravar dados

posição
FORÇA Posição de base zero na qual começar
escrevendo dados no dest_array
resultado.

Tabela 4 Parâmetro RET_VAL

RET_VAL* Descrição
(W#16#...)

0000 Sem erro

80B4 O SRC_ARRAY ou DEST_ARRAY não é um Array de Byte

8382 O valor no parâmetro POS está fora dos limites do array.

8383 O valor no parâmetro POS está dentro dos limites do Array mas o tamanho da área de memória excede o alto
limite da matriz.

*Você pode visualizar os códigos de erro como inteiro ou hexadecimal no editor do programa.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


VariantGet (leia o valor da tag VARIANT)

VariantGet (leia o valor da tag VARIANT)

Você pode usar a instrução "Read out Variant tag value" para ler o valor do tag para o qual
o ponteiro Variant nos pontos do parâmetro SRC e escreva-o na tag no parâmetro DST.

O parâmetro SRC tem o tipo de dados Variant. Qualquer tipo de dados, exceto Variant, pode ser especificado
no parâmetro DST.

O tipo de dados da tag no parâmetro DST deve corresponder ao tipo de dados ao qual a Variant
pontos.

tabela 1 Instrução VariantGet

LAD / FBD SCL Descrição

Lê a tag apontada pelo parâmetro SRC e a grava no


tag no parâmetro DST
VariantGet
( SRC:=_variant_in_, DST=>_va
rindo_fora_);

Observação

Para copiar estruturas e arrays, você pode usar a instrução "MOVE_BLK_VARIANT: Move block".

mesa 2 Parâmetros para a instrução VariantGet

Parâmetro Tipo de dados Descrição

SRC Variante Ponteiro para dados de origem

DST Cadeias de bits, números inteiros, números de ponto flutuante, temporizadores, data e Destino no qual gravar dados
tempo, cadeias de caracteres, elementos ARRAY, tipos de dados PLC

Tabela 3 Status ENO

1 Doença Resultado

1 Sem erro Instrução copiou os dados da tag apontados pelo SRC


para a marca de horário de verão.

0 A entrada de habilitação EN tem o estado do sinal "0" ou os tipos de dados não Instrução copiada sem dados.
não corresponde.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução VariantPut (gravar valor de tag VARIANT)

Instrução VariantPut (gravar valor de tag VARIANT)

Você pode usar a instrução "Write VARIANT tag value" para escrever o valor do tag no SRC
parâmetro para a tag no parâmetro DST para o qual a VARIANT aponta.

O parâmetro DST tem o tipo de dados VARIANT. Qualquer tipo de dados, exceto VARIANT, pode ser
especificado no parâmetro SRC.

O tipo de dados da tag no parâmetro SRC deve corresponder ao tipo de dados ao qual a VARIANT
pontos.

tabela 1 Instrução VariantPut

LAD / FBD SCL Descrição

Grava a tag referenciada pelo parâmetro SRC na variante


apontado pelo parâmetro DST
VariantPut
( SRC:=_variant_in_, DST=>_va
amplo_in_);

Observação

Para copiar estruturas e ARRAYs, você pode usar a instrução "MOVE_BLK_VARIANT: Move block".

mesa 2 Parâmetros para a instrução VariantPut

Parâmetro Tipo de dados Descrição

SRC Cadeias de bits, números inteiros, números de ponto flutuante, temporizadores, data e Ponteiro para dados de origem

tempo, cadeias de caracteres, elementos ARRAY, tipos de dados PLC

DST Variante Destino no qual gravar dados

Tabela 3 Status ENO

1 Doença Resultado

1 Sem erro A instrução copiou os dados da tag SRC para o DST


marcação.

0 A entrada de habilitação EN tem o estado do sinal "0" ou os tipos de dados não Instrução copiada sem dados.
não corresponde.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instrução CountOfElements (Obter o número de elementos ARRAY)

Instrução CountOfElements (Obter o número de elementos ARRAY)

Você pode usar a instrução "Obter número de elementos ARRAY" para consultar quantos elementos Array
estão em uma tag apontada por uma Variant.

Se for um ARRAY unidimensional, a instrução retorna a diferença entre o valor alto e


limite inferior +1 é emitido. Se for um ARRAY multidimensional, a instrução retorna o produto de
todas as dimensões.

tabela 1 Instrução CountOfElements

LAD / FBD SCL Descrição

Conta o número de elementos da matriz em


a matriz apontada pelo parâmetro IN.
Resultado := CountOfElements
( _variant_in_);

Observação

Se a Variant apontar para um Array de Bool, a instrução contará os elementos de preenchimento para o mais próximo
limite de bytes. Por exemplo, a instrução retorna 8 como a contagem para um Array[0..1] de Bool.

mesa 2 Parâmetros para a instrução CountOfElements

Parâmetro Tipo de dados Descrição

DENTRO Variante Tag com elementos da matriz a serem


contado

ESCOLHA CERTA UDint Resultado da instrução

Tabela 3 Status ENO

1 Doença Resultado

1 Sem erro A instrução retorna o número do array


elementos.

0 A entrada de habilitação EN tem o estado do sinal "0" ou a Variante não A instrução retorna 0.
não apontar para uma matriz.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções FieldRead (campo de leitura) e FieldWrite (campo de gravação)

Instruções FieldRead (campo de leitura) e FieldWrite (campo de gravação)

Observação

O STEP 7 V10.5 não suportava uma referência de variável como um índice de matriz ou matrizes multidimensionais.
As instruções FieldRead e FieldWrite foram usadas para fornecer operações de índice de matriz variável
para uma matriz unidimensional. STEP 7 V11 e superior suportam uma variável como um índice de matriz
e matrizes multidimensionais. FieldRead e FieldWrite estão incluídos no STEP 7 V11 e superior
para compatibilidade com programas que usaram estas instruções.

tabela 1 Instruções FieldRead e FieldWrite

LAD / FBD SCL Descrição

valor := membro[índice]; FieldRead lê o elemento da matriz com o valor do índice


INDEX da matriz cujo primeiro elemento especificado
pelo parâmetro MEMBRO. O valor da matriz
elemento é transferido para o local especificado no
parâmetro VALUE.

membro[índice] := valor; WriteField transfere o valor no local especificado


pelo parâmetro VALUE para o array cujo primeiro
elemento é especificado pelo parâmetro MEMBER. o
valor é transferido para o elemento da matriz cuja matriz
index é especificado pelo parâmetro INDEX.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para parâmetros

Parâmetro e tipo Tipo de dados Descrição

Índice Entrada Força O número de índice do elemento da matriz a ser lido ou


escrito para

Membro 1 Entrada Números binários, inteiros, Localização do primeiro elemento em uma matriz de uma dimensão
números de ponto flutuante, temporizadores, definido em um bloco de dados global ou interface de bloco.
DATA, TOD, CHAR e WCHAR como
Por exemplo: Se o índice do array for especificado como [-2..4],
componentes de uma tag ARRAY então o índice do primeiro elemento é -2 e não 0.

Valor 1 Fora Números binários, inteiros, Local para o qual o elemento de matriz especificado é copiado
números de ponto flutuante, temporizadores, (CampoLer)
DATA, TOD, CHAR, WCHAR
Localização do valor que é copiado para o especificado
elemento de matriz (FieldWrite)

1 O tipo de dados do elemento da matriz especificado pelo parâmetro MEMBER e o parâmetro VALUE devem ter os mesmos dados
modelo.

A saída de habilitação ENO = 0, se uma das seguintes condições se aplicar:

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções FieldRead (campo de leitura) e FieldWrite (campo de gravação)

• A entrada EN tem estado de sinal "0"

• O elemento do array especificado no parâmetro INDEX não está definido no array referenciado em MEMBER
parâmetro

• Erros como estouro ocorrem durante o processamento

Exemplo: Acessando dados por indexação de array

Para acessar elementos de um array com uma variável, simplesmente use a variável como um índice de array
na lógica do seu programa. Por exemplo, a rede abaixo configura uma saída baseada no valor booleano de um
array de booleanos em "Data_block_1" referenciado pelo tag do PLC "Index".

A lógica com a variável array index é equivalente ao método anterior usando a instrução FieldRead:

As instruções FieldWrite e FieldRead podem ser substituídas por lógica de indexação de array variável.

SCL não tem instruções FieldRead ou FieldWrite, mas suporta endereçamento indireto de um array com uma
variável:

#Tag_1 := "Data_block_1".Bool_Array[#Index];

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 26/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução CONV (Converter valor)

Instrução CONV (Converter valor)

tabela 1 Instrução de conversão (CONV)

LAD / FBD SCL Descrição

out := <data type in>_TO_<data type out>(in); Converte um elemento de dados de um dado
tipo para outro tipo de dados.

1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.

2 Para SCL: Construa a instrução de conversão identificando o tipo de dados para o parâmetro de entrada (in) e o parâmetro de saída
(Fora). Por exemplo, DWORD_TO_REAL converte um valor DWord em um valor Real.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
Bit string1 , SInt, USInt, Int, UInt, DInt, UDInt, Real, LReal, BCD16, Valor de entrada
BCD32, Char, WChar

FORA Bit string1 , SInt, USInt, Int, UInt, DInt, UDInt, Real, LReal, BCD16, Valor de entrada convertido para um novo tipo de dados
BCD32, Char, WChar

1 A instrução não permite selecionar cadeias de bits (Byte, Word, DWord). Para inserir um operando do tipo de dados Byte, Word ou
DWord para um parâmetro da instrução, selecione um inteiro sem sinal com o mesmo comprimento de bit. Por exemplo, selecione USInt para um
Byte, UInt para um Word ou UDInt para um DWord.

Depois de selecionar o tipo de dados (converter de), uma lista de conversões possíveis é mostrada na
(converter para) lista suspensa. As conversões de e para BCD16 são restritas ao tipo de dados Int.
As conversões de e para BCD32 são restritas ao tipo de dados DInt.

Tabela 3 Status ENO

1 Descrição Resultado OUT

1 Sem erro Resultado válido

0 IN é +/- INF ou +/- NaN +/- INF ou +/- NaN

0 O resultado excede o intervalo válido para o tipo de dados OUT OUT é definido para o valor IN

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de data e hora do dia

Instruções de data e hora do dia

Use as instruções de data e hora para cálculos de calendário e hora.

• T_CONV converte um valor para ou de (tipos de dados de data e hora) e (dados de tamanho de byte, palavra e dword
tipos)

• T_ADD adiciona valores de Tempo e DTL: (Tempo + Tempo = Tempo) ou (DTL + Tempo = DTL)

• T_SUB subtrai os valores de Tempo e DTL: (Tempo - Tempo = Tempo) ou (DTL - Tempo = DTL)

• T_DIFF fornece a diferença entre dois valores DTL como um valor de Tempo: DTL - DTL = Tempo

• T_COMBINE combina um valor Date e um valor Time_and_Date para criar um valor DTL

Para obter informações sobre o formato dos dados DTL e Hora, consulte a seção sobre Hora e
Tipos de dados de data.

tabela 1 Instrução T_CONV (Converter tempos e extrair)

LAD / FBD Exemplo SCL Descrição

out := T_CONV converte um valor para ou de (tipos de dados de data e hora) e (byte,
DINT_TO_TIME( in:=_variant_in); word e tipos de dados de tamanho dword).

out :=
TIME_TO_DINT( in:=_variant_in);

1 Para caixas LAD e FBD: Clique em "???" e selecione os tipos de dados de origem/destino no menu suspenso.

2 Para SCL: Arraste T_CONV da árvore de instruções e solte no editor de programa, depois selecione os tipos de dados de origem/destino.

mesa 2 Tipos de dados válidos para conversões T_CONV

Tipo de dados IN (ou OUT) Tipos de dados OUT (ou IN)

TEMPO (milissegundos) DInt, Int, SInt, UDInt, UInt, USInt, TOD


SCL apenas: Byte, Word, Dword

DATE (número de dias desde 1º de janeiro de 1990) DInt, Int, SInt, UDInt, UInt, USInt, DTL
SCL apenas: Byte, Word, Dword

TOD (milissegundos desde meia-noite - 24:00:00.000) DInt, Int, SInt, UDInt, UInt, USInt, TIME, DTL
SCL apenas: Byte, Word, Dword

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instruções de data e hora do dia

Observação

Usando T_CONV para converter um tamanho de dados maior em um tamanho de dados menor

Os valores de dados podem ser truncados quando você converte um tipo de dados maior com mais bytes em um menor
tipo de dados com menos bytes. Se este erro ocorrer, então ENO é definido como 0.

Conversão de/para tipo de dados DTL

DTL (Date and Time Long) contém dados de ano, mês, data e hora. Os dados DTL podem ser convertidos
de/para tipos de dados DATE e TOD.
No entanto, a conversão DTL com dados DATE afeta apenas os valores de ano, mês e dia. DTL
a conversão com dados TOD afeta apenas os valores de hora, minutos e segundos.

Quando T_CONV converte para DTL, os elementos de dados não afetados no formato DTL são deixados
inalterado.

Tabela 3 Instruções T_ADD (Adicionar tempos) e T_SUB (Subtrair tempos)

LAD / FBD SCL Descrição

out := T_ADD adiciona o valor IN1 de entrada (tipos de dados DTL ou Time) com a entrada
T_ADD( in1:=_variant_in, IN2 Valor de tempo. O parâmetro OUT fornece o resultado do valor DTL ou Time.
in2:=_time_in); Duas operações de tipo de dados são possíveis:

• Tempo + Tempo = Tempo

• DTL + Tempo = DTL

out := T_SUB( in1:=_variant_in, in2:=_time_in); T_SUB subtrai o valor IN2 Time de IN1 (DTL ou valor Time).
O parâmetro OUT fornece o valor da diferença como um tipo de dados DTL ou Time.
Duas operações de tipo de dados são possíveis:

• Tempo - Tempo = Tempo

• DTL - Hora = DTL

1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.

Tabela 4 Tipos de dados para os parâmetros T_ADD e T_SUB

Parâmetro e tipo Tipo de dados Descrição

IN11 DENTRO
DTL, Hora DTL ou valor de tempo

EM 2 DENTRO Tempo Valor de tempo para adicionar ou subtrair

FORA FORA DTL, Hora DTL ou soma ou diferença de tempo

1 Selecione o tipo de dados IN1 na lista suspensa disponível abaixo do nome da instrução. A seleção do tipo de dados IN1 também define
o tipo de dados do parâmetro OUT.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de data e hora do dia

Tabela 5 Instrução T_DIFF (diferença de tempo)

LAD / FBD SCL Descrição

out := T_DIFF(in1:=_DTL_in, in2:=_DTL_in); T_DIFF subtrai o valor DTL (IN2) do valor DTL (IN1). Parâmetro
OUT fornece o valor da diferença como um tipo de dados Time.

• DTL - DTL = Tempo

Tabela 6 Tipos de dados para os parâmetros T_DIFF

Parâmetro e tipo Tipo de dados Descrição

EM 1 DENTRO DTL Valor DTL

EM 2 DENTRO DTL Valor DTL para subtrair

FORA FORA Tempo Diferença de tempo

Códigos de condição: ENO = 1 significa que não ocorreu nenhum erro. ENO = 0 e parâmetro OUT = 0 erros:
• Valor DTL inválido

• Valor de tempo inválido

Tabela 7 Instrução T_COMBINE (combinar tempos)

LAD / FBD SCL Descrição

out := CONCAT_DATE_TOD( T_COMBINE combina um valor Date e um valor Time_of_Day


In1 := _date_in, In2 := para criar um valor DTL.

_tod_in);

1 Observe que a instrução T_COMBINE nas instruções estendidas equivale à função CONCAT_DATE_TOD em SCL.

Tabela 8 Tipos de dados para os parâmetros T_COMBINE

Parâmetro e tipo Tipo de dados Descrição

EM 1 DENTRO Encontro O valor de data a ser combinado deve estar entre


DATA#1990-01-01 e DATA#2089-12-31

EM 2 DENTRO
Hora do dia Valores Time_of_Day a serem combinados

FORA FORA DTL Valor DTL

Veja também

ÿ Tipos de dados de hora e data

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de conversão para SCL

Instruções de conversão para SCL

Instruções de conversão para SCL

tabela 1 Conversão de um Bool, Byte, Word ou DWord

Tipo de dados Instrução Resultado

Bool BOOL_TO_BYTE, BOOL_TO_WORD, O valor é transferido para o bit menos significativo do


BOOL_TO_DWORD, BOOL_TO_INT, tipo de dados de destino.
BOOL_TO_DINT

Byte BYTE_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

BYTE_TO_WORD, BYTE_TO_DWORD O valor é transferido para o byte menos significativo do


tipo de dados de destino.

BYTE_TO_SINT, BYTE_TO_USINT O valor é transferido para o tipo de dados de destino.

BYTE_TO_INT, BYTE_TO_UINT, O valor é transferido para o byte menos significativo do


BYTE_TO_DINT, BYTE_TO_UDINT tipo de dados de destino.

Palavra WORD_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

WORD_TO_BYTE O byte menos significativo do valor de origem é transferido


para o tipo de dados de destino

WORD_TO_DWORD O valor é transferido para a palavra menos significativa do


tipo de dados de destino.

WORD_TO_SINT, WORD_TO_USINT O byte menos significativo do valor de origem é transferido


para o tipo de dados de destino.

WORD_TO_INT, WORD_TO_UINT O valor é transferido para o tipo de dados de destino.

WORD_TO_DINT, WORD_TO_UDINT O valor é transferido para a palavra menos significativa do


tipo de dados de destino.

DWord DWORD_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

DWORD_TO_BYTE, DWORD_TO_WORD, O byte menos significativo do valor de origem é transferido


DWORD_TO_SINT para o tipo de dados de destino.

DWORD_TO_USINT, DWORD_TO_INT, A palavra menos significativa do valor de origem é transferida


DWORD_TO_UINT para o tipo de dados de destino.

DWORD_TO_DINT, DWORD_TO_UDINT, O valor é transferido para o tipo de dados de destino.


DWORD_TO_REAL

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de conversão para SCL

mesa 2 Conversão de um inteiro curto (SInt ou USInt)

Tipo de dados Instrução Resultado

SInt SINT_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

SINT_TO_BYTE O valor é transferido para o tipo de dados de destino

SINT_TO_WORD, SINT_TO_DWORD O valor é transferido para o byte menos significativo do


tipo de dados de destino.

SINT_TO_INT, O valor é convertido.


SINT_TO_DINT,SINT_TO_USINT,
SINT_TO_UINT, SINT_TO_UDINT,
SINT_TO_REAL, SINT_TO_LREAL,
SINT_TO_CHAR, SINT_TO_STRING

USInt USINT_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

USINT_TO_BYTE O valor é transferido para o tipo de dados de destino

USINT_TO_WORD, USINT_TO_DWORD, O valor é transferido para o byte menos significativo do


USINT_TO_INT, USINT_TO_UINT, tipo de dados de destino.
USINT_TO_DINT, USINT_TO_UDINT

USINT_TO_SINT, USINT_TO_REAL, O valor é convertido.


USINT_TO_LREAL, USINT_TO_CHAR,
USINT_TO_STRING

Tabela 3 Conversão de um inteiro (Int ou UInt)

Tipo de dados instrução Resultado

Int INT_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

INT_TO_BYTE, INT_TO_DWORD, INT_TO_SINT, O valor é convertido.


INT_TO_USINT, INT_TO_UINT, INT_TO_UDINT,
INT_TO_REAL, INT_TO_LREAL, INT_TO_CHAR,
INT_TO_STRING

INT_TO_WORD O valor é transferido para o tipo de dados de destino.

INT_TO_DINT O valor é transferido para o byte menos significativo do


tipo de dados de destino.

UInt UINT_TO_BOOL O bit menos significativo é transferido para o destino


tipo de dados.

UINT_TO_BYTE, UINT_TO_SINT, O valor é convertido.


UINT_TO_USINT, UINT_TO_INT,
UINT_TO_REAL, UINT_TO_LREAL,
UINT_TO_CHAR, UINT_TO_STRING

UINT_TO_WORD, UINT_TO_DATE O valor é transferido para o tipo de dados de destino.

UINT_TO_DWORD, UINT_TO_DINT, O valor é transferido para o byte menos significativo do


UINT_TO_UDINT tipo de dados de destino.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de conversão para SCL

Tabela 4 Conversão de um inteiro duplo (Dint ou UDInt)

Tipo de dados Instrução Resultado

Força DINT_TO_BOOL O bit menos significativo é transferido


no tipo de dados de destino.

DINT_TO_BYTE, DINT_TO_WORD, DINT_TO_SINT, O valor é convertido.


DINT_TO_USINT, DINT_TO_INT, DINT_TO_UINT, DINT_TO_UDINT,
DINT_TO_REAL, DINT_TO_LREAL, DINT_TO_CHAR,
DINT_TO_STRING

DINT_TO_DWORD, DINT_TO_TIME O valor é transferido para o destino


tipo de dados.

UDInt UDINT_TO_BOOL O bit menos significativo é transferido


no tipo de dados de destino.

UDINT_TO_BYTE, UDINT_TO_WORD, UDINT_TO_SINT, O valor é convertido.


UDINT_TO_USINT, UDINT_TO_INT, UDINT_TO_UINT,
UDINT_TO_DINT, UDINT_TO_REAL, UDINT_TO_LREAL,
UDINT_TO_CHAR, UDINT_TO_STRING

UDINT_TO_DWORD, UDINT_TO_TOD O valor é transferido para o destino


tipo de dados.

Tabela 5 Conversão de um número real (Real ou LReal)

Tipo de dados Instrução Resultado

Real REAL_TO_DWORD, REAL_TO_LREAL O valor é transferido para o destino


tipo de dados.

REAL_TO_SINT, REAL_TO_USINT, REAL_TO_INT, REAL_TO_UINT, O valor é convertido.


REAL_TO_DINT, REAL_TO_UDINT, REAL_TO_STRING

LReal LREAL_TO_SINT, LREAL_TO_USINT, LREAL_TO_INT, O valor é convertido.


LREAL_TO_UINT, LREAL_TO_DINT, LREAL_TO_UDINT,
LREAL_TO_REAL, LREAL_TO_STRING

Tabela 6 Conversão de Hora, DTL, TOD ou Data

Tipo de dados Instrução Resultado

Tempo TIME_TO_DINT O valor é transferido para o tipo de dados de destino.

DTL DTL_TO_DATE, DTL_TO_TOD O valor é convertido.

TOD TOD_TO_UDINT O valor é convertido.

Encontro DATE_TO_UINT O valor é convertido.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções de conversão para SCL

Tabela 7 Conversão de um Char ou String

Tipo de dados Instrução Resultado

Caracteres
CHAR_TO_SINT, CHAR_TO_USINT, CHAR_TO_INT, O valor é convertido.
CHAR_TO_UINT, CHAR_TO_DINT, CHAR_TO_UDINT

CHAR_TO_STRING O valor é transferido para o primeiro caractere do


corda.

Corda STRING_TO_SINT, STRING_TO_USINT, STRING_TO_INT, O valor é convertido.


STRING_TO_UINT, STRING_TO_DINT,
STRING_TO_UDINT, STRING_TO_REAL,
STRING_TO_LREAL

STRING_TO_CHAR O primeiro caractere da string é copiado para o


Caracteres.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções ROUND (valor numérico redondo) e TRUNC (valor numérico truncado)

ROUND (Valor numérico arredondado) e TRUNC (Valor numérico truncado)


instruções

tabela 1 Instruções ROUND e TRUNC

LAD / FBD SCL Descrição

fora := REDONDO (dentro); Converte um número real em um inteiro. Para LAD/FBD, você clica no "???" no
caixa de instruções para selecionar o tipo de dados para a saída, por exemplo "DInt".
Para SCL, o tipo de dados padrão para a saída da instrução ROUND é DINT.
Para arredondar para outro tipo de dados de saída, insira o nome da instrução com o
nome explícito do tipo de dados, por exemplo, ROUND_REAL ou ROUND_LREAL.
A fração de número real é arredondada para o valor inteiro mais próximo (IEEE - round
para o mais próximo). Se o número for exatamente a metade do intervalo entre dois números inteiros
(por exemplo, 10,5), então o número é arredondado para o inteiro par. Por
exemplo:
• REDONDO (10,5) = 10
• REDONDO (11,5) = 12

fora := TRUNC(in); TRUNC converte um número real em um inteiro. A parte fracionária do real
número é truncado para zero (IEEE - arredondado para zero).

1 Para LAD e FBD: Clique no botão "???" (pelo nome da instrução) e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
Real, Real Entrada de ponto flutuante

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Saída arredondada ou truncada

Tabela 3 Status ENO

1 Descrição Resultado OUT

1 Sem erro Resultado válido

0 IN é +/- INF ou +/- NaN +/- INF ou +/- NaN

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções CEIL e FLOOR (Gerar o próximo inteiro superior e inferior a partir do número de ponto flutuante)

CEIL e FLOOR (Gerar o próximo inteiro superior e inferior do ponto flutuante


número) instruções

tabela 1 Instruções de TETO e PISO

LAD / FBD SCL Descrição

fora := CEIL(in); Converte um número real (Real ou LReal) para o inteiro mais próximo
maior ou igual ao número real selecionado (IEEE "round
para +infinito").

fora := ANDAR(dentro); Converte um número real (Real ou LReal) para o inteiro mais próximo
menor ou igual ao número real selecionado (IEEE "round
ao infinito").

1 Para LAD e FBD: Clique no botão "???" (pelo nome da instrução) e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
Real, Real Entrada de ponto flutuante

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Saída convertida

Tabela 3 Status ENO

1 Descrição Resultado OUT

1 Sem erro Resultado válido

0 IN é +/- INF ou +/- NaN +/- INF ou +/- NaN

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções SCALE_X (Escala) e NORM_X (Normalize)

Instruções SCALE_X (Escala) e NORM_X (Normalize)

tabela 1 Instruções SCALE_X e NORM_X

LAD / FBD SCL Descrição

out :=SCALE_X(min:=_in_, valor:=_in_, Dimensiona o parâmetro real normalizado VALUE onde


max:=_in_); ( 0,0 <= VALOR <= 1,0 ) no tipo de dados e valor
intervalo especificado pelos parâmetros MIN e MAX: OUT =

VALUE (MAX - MIN) + MIN

out :=NORM_X(min:=_in_, valor:=_in_, Normaliza o parâmetro VALUE dentro do valor


max:=_in_); intervalo especificado pelos parâmetros MIN e MAX: OUT =

(VALUE - MIN) / (MAX - MIN), onde ( 0.0 <= OUT <= 1.0 )

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados1 Descrição

MIN SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Insira o valor mínimo para o intervalo

VALOR ESCALA_X: Real, LReal Valor de entrada para dimensionar ou normalizar

NORM_X: SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal

MÁX. SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Insira o valor máximo para o intervalo

FORA SCALE_X: SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Valor de saída dimensionado ou normalizado

NORM_X: Real, LReal

1 Para SCALE_X: Os parâmetros MIN, MAX e OUT devem ser do mesmo tipo de dados.
Para NORM_X: os parâmetros MIN, VALUE e MAX devem ser do mesmo tipo de dados.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções SCALE_X (Escala) e NORM_X (Normalize)

Observação

O parâmetro SCALE_X VALUE deve ser restrito a ( 0.0 <= VALUE <= 1.0 )

Se o parâmetro VALUE for menor que 0,0 ou maior que 1,0:

• A operação de escala linear pode produzir valores OUT menores que o valor MIN do parâmetro ou
acima do valor MAX do parâmetro para valores OUT que se encaixam no intervalo de valores do tipo de dados OUT.
A execução SCALE_X define ENO = TRUE para esses casos.

• É possível gerar números em escala que não estão dentro do intervalo do tipo de dados OUT. Para estes
casos, o valor do parâmetro OUT é ajustado para um valor intermediário igual à porção menos significativa
do número real escalado antes da conversão final para o tipo de dados OUT. Conjuntos de execução SCALE_X ENO
= FALSO neste caso.
O parâmetro NORM_X VALUE deve ser restrito a ( MIN <= VALUE <= MAX )

Se o parâmetro VALUE for menor que MIN ou maior que MAX, a operação de escala linear pode
produzem valores OUT normalizados que são menores que 0,0 ou maiores que 1,0. Execução NORM_X
define ENO = TRUE neste caso.

Tabela 3 Status ENO

1 Doença Resultado OUT

1 Sem erro Resultado válido

0 O resultado excede o intervalo válido para o tipo de dados OUT Resultado intermediário: a parte menos significativa de um
número antes da conversão final para o tipo de dados OUT.

0 Parâmetros MAX <= MIN SCALE_X: A parte menos significativa do número real
VALUE para preencher o tamanho OUT.

NORM_X: VALUE no tipo de dados VALUE estendido para preencher um duplo


tamanho da palavra.

0 Parâmetro VALOR = +/- INF ou +/- NaN VALUE é gravado em OUT

Exemplo (LAD): normalizando e escalando um valor de entrada analógica

Uma entrada analógica de um módulo de sinal analógico ou placa de sinal usando entrada em corrente está no
intervalo de 0 a 27648 para valores válidos. Suponha que uma entrada analógica represente uma temperatura onde
o valor 0 da entrada analógica representa -30,0 graus C e 27648 representa 70,0 graus
C.

Para transformar o valor analógico nas unidades de engenharia correspondentes, normalize a entrada para
um valor entre 0,0 e 1,0 e, em seguida, dimensione-o entre -30,0 e 70,0. O valor resultante é
a temperatura representada pela entrada analógica em graus C:

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções SCALE_X (Escala) e NORM_X (Normalize)

Observe que se a entrada analógica fosse de um módulo de sinal analógico ou placa de sinal usando
tensão, o valor MIN para a instrução NORM_X seria -27648 em vez de 0.

Exemplo (LAD): normalizando e dimensionando um valor de saída analógica

Uma saída analógica a ser configurada em um módulo de sinal analógico ou placa de sinal usando saída
em corrente deve estar na faixa de 0 a 27648 para valores válidos. Suponha que uma saída analógica
represente uma configuração de temperatura em que o valor 0 da entrada analógica represente -30,0
graus C e 27648 represente 70,0 graus C. Para converter um valor de temperatura na memória entre -30,0
e 70,0 em um valor para a saída analógica em a faixa de 0 a 27648, você deve normalizar o valor em
unidades de engenharia para um valor entre 0,0 e 1,0 e, em seguida, escalá-lo para a faixa da saída
analógica, de 0 a 27648:

Observe que se a saída analógica fosse para um módulo de sinal analógico ou placa de sinal usando
tensão, o valor MIN para a instrução SCALE_X seria -27648 em vez de 0.

Informações adicionais sobre representações de entradas analógicas e representações de saídas


analógicas em tensão e corrente podem ser encontradas nas Especificações Técnicas.

Veja também

ÿ Faixas de medição das entradas analógicas para tensão e corrente (SB e SM) ÿ Faixas de
medição das saídas analógicas para tensão e corrente (SB e SM)

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução VARIANT_TO_DB_ANY (Converter VARIANT para DB_ANY)

Instrução VARIANT_TO_DB_ANY (Converter VARIANT para DB_ANY)

Você usa a instrução SCL "Convert VARIANT to DB_ANY" para ler o operando no IN
parâmetro e convertê-lo para o tipo de dados DB_ANY. O parâmetro IN é do tipo de dados Variant
e representa um bloco de dados de instância ou um bloco de dados ARRAY. Quando você cria o
programa, você não precisa saber qual bloco de dados corresponde ao parâmetro IN. o
instrução lê o número do bloco de dados durante o tempo de execução e o grava no operando no
parâmetro RET_VAL.

tabela 1 Instrução VARIANT_TO_DB_ANY

LAD / FBD SCL Descrição

Não disponível RET_VAL := VARIANT_TO_DB_ANY Lê o operando do parâmetro Variant IN e o armazena em


( em := _variant_in_, err => o resultado da função, que é do tipo DB_ANY
_int_out_);

mesa 2 Parâmetros para a instrução VARIANT_TO_DB_ANY

Parâmetro Tipo de dados Descrição

DENTRO Variante Variante que representa um bloco de dados de instância


ou um bloco de dados de matriz

ESCOLHA CERTA DB_ANY Tipo de dados DB_ANY de saída que contém o


número do bloco de dados convertido

ERRAR Int Informações de erro

Tabela 3 Status ENO

1 Doença Resultado

1 Sem erro A instrução converte a Variant de entrada e armazena


na saída da função DB_ANY

0 A entrada de habilitação EN tem o estado do sinal "0" ou o parâmetro IN A instrução não faz nada.
é inválido.

Tabela 4 Códigos de saída de erro para a instrução VARIANT_TO_DB_ANY

Errar Descrição
(W#16#...)

0000 Sem erro

252C O tipo de dado Variant no parâmetro IN tem o valor 0. A CPU


muda para o modo STOP.

8131 O bloco de dados não existe ou é muito curto (primeiro acesso).

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução VARIANT_TO_DB_ANY (Converter VARIANT para DB_ANY)

Errar Descrição
(W#16#...)

8132 O bloco de dados é muito curto e não é um bloco de dados Array (segundo
acesso).

8134 O bloco de dados está protegido contra gravação

8150 O tipo de dados Variant no parâmetro IN fornece o valor "0". Para receber
esta mensagem de erro, deve-se ativar a propriedade do bloco "Tratar erros
dentro do bloco". Caso contrário, a CPU muda para o modo STOP e envia o
código de erro 16#252C

8154 O bloco de dados tem o tipo de dados incorreto.

*Você pode exibir códigos de erro no editor do programa como valores inteiros ou hexadecimais.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução DB_ANY_TO_VARIANT (Converter DB_ANY em VARIANT)

Instrução DB_ANY_TO_VARIANT (Converter DB_ANY em VARIANT)

Você usa o SCL "Convert DB_ANY to VARIANT" para ler o número de um bloco de dados que atende
os requisitos listados abaixo. O operando no parâmetro IN tem o tipo de dados DB_ANY,
o que significa que você não precisa saber durante a criação do programa qual bloco de dados cujo número
deve ser lido será especificado. O número do bloco de dados é lido durante o tempo de execução e escrito por
meio de um ponteiro VARIANT para o operando especificado no parâmetro RET_VAL.

tabela 1 Instrução DB_ANY_TO_VARIANT

LAD / FBD SCL Descrição

Não disponível RET_VAL := DB_ANY_TO_VARIANT Lê o número do bloco de dados do parâmetro Variant IN e


( em := _db_any_in_, err => armazena no resultado da função, que é do tipo Variant
_int_out_);

mesa 2 Parâmetros para a instrução DB_ANY_TO_VARIANT

Parâmetro Tipo de dados Descrição

DENTRO
DB_ANY Variante que contém o número do bloco de dados

ESCOLHA CERTA Variante Tipo de dados DB_ANY de saída que contém o


número do bloco de dados convertido

ERRAR Int Informações de erro

Tabela 3 Status ENO

1 Doença Resultado

1 Sem erro A instrução converte o número do bloco de dados no


variante e a armazena na função DB_ANY
resultado

0 A entrada de habilitação EN tem o estado do sinal "0" ou o IN A instrução não faz nada.
parâmetro é inválido.

Tabela 4 Códigos de saída de erro para a instrução DB_ANY_TO_VARIANT

Errar Descrição
(W#16#...)

0000 Sem erro

8130 O número do bloco de dados é 0.

8131 O bloco de dados não existe ou é muito curto.

8132 O bloco de dados é muito curto e não é um bloco de dados Array.

8134 O bloco de dados está protegido contra gravação.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução DB_ANY_TO_VARIANT (Converter DB_ANY em VARIANT)

Errar Descrição
(W#16#...)

8154 O bloco de dados tem o tipo de dados incorreto.

8155 Código de tipo desconhecido

*Você pode exibir códigos de erro no editor do programa como valores inteiros ou hexadecimais.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google
28/10/2022 10:00 Instruções JMP (Saltar se RLO = 1), JMPN (Saltar se RLO = 0) e Label (Rótulo de salto) … - ID: 107623221 - Suporte da Indústria…

Instruções JMP (Saltar se RLO = 1), JMPN (Saltar se RLO = 0) e Label (Rótulo de salto)

Tabela: instrução JMP, JMPN e LABEL

RAPAZ FBD SCL Descrição

Veja o GOTO declaração. Saltar se RLO (resultado da operação lógica) = 1:

Se houver fluxo de energia para uma bobina JMP (LAD), ou se a caixa JMP
entrada é verdadeira (FBD), então a execução do programa continua com
a primeira instrução após o rótulo especificado.

Saltar se RLO = 0:
Se não houver fluxo de energia para uma bobina JMPN (LAD), ou se o
A entrada da caixa JMPN é falsa (FBD), então a execução do programa
continua com a primeira instrução seguindo o especificado
etiqueta.

Rótulo de destino para uma instrução de salto JMP ou JMPN.

1 Você cria seus nomes de rótulos digitando a instrução LABEL diretamente. Use o ícone do auxiliar de parâmetro para selecionar os nomes de rótulos disponíveis
para o campo de nome do rótulo JMP e JMPN. Você também pode digitar um nome de rótulo diretamente na instrução JMP ou JMPN.

Tabela: Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

Nome do rótulo Identificador de rótulo Identificador para instruções de salto e o destino de salto correspondente
rótulo do programa

Cada rótulo deve ser exclusivo dentro de um bloco de código.


Você pode pular dentro de um bloco de código, mas não pode pular de um bloco de código para outro.
Você pode pular para frente ou para trás.
Você pode pular para o mesmo rótulo de mais de um lugar no mesmo bloco de código

https://support.industry.siemens.com/cs/mdm/107623221?c=59852195723&dl=en&lc=pt-BR 1/1
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução JMP_LIST (Definir lista de saltos)

Instrução JMP_LIST (Definir lista de saltos)

tabela 1 Instrução JMP_LIST

LAD / FBD , SCL Descrição

CASO k DE 0: GOTO dest0; A instrução JMP_LIST atua como um distribuidor de salto de programa para controlar o
1: GOTO dest1; 2: GOTO execução das seções do programa. Dependendo do valor da entrada K, um
mão2; [n: GOTO destino;] salto ocorre para o rótulo de programa correspondente. Execução do programa
END_CASE; continua com as instruções do programa que seguem o salto de destino
etiqueta. Se o valor da entrada K exceder o número de rótulos - 1, então não
salto ocorre e o processamento continua com a próxima rede de programa.

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados Descrição

K UInt Valor de controle do distribuidor de salto

DEST0, DEST1, .., Etiquetas do programa Rótulos de destino de salto correspondentes a valores de parâmetro K específicos:
MANUAL
Se o valor de K for igual a 0, ocorre um salto para o rótulo do programa atribuído
para a saída DEST0. Se o valor de K for igual a 1, então ocorre um salto para o
rótulo de programa atribuído à saída DEST1 e assim por diante. Se o valor do
A entrada K excede o (número de rótulos - 1), então nenhum salto ocorre e
o processamento continua com a próxima rede de programa.

Para LAD e FBD: Quando a caixa JMP_LIST é colocada pela primeira vez em seu programa, há duas saídas de rótulo de salto.
Você pode adicionar ou excluir destinos de salto.

Clique no ícone de criação dentro da caixa (à esquerda do último parâmetro DEST) para adicionar novos
saídas para rótulos de salto.

• Clique com o botão direito do mouse em um stub de saída e selecione o comando "Insert output".

• Clique com o botão direito do mouse em um stub de saída e selecione o comando "Excluir".

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


SWITCH (distribuidor de salto) instrução

SWITCH (distribuidor de salto) instrução

tabela 1 Instrução SWITCH

LAD / FBD SCL Descrição

Não disponível A instrução SWITCH atua como um distribuidor de salto de programa para controlar a
execução das seções do programa. Dependendo do resultado das comparações entre o
valor da entrada K e os valores atribuídos às entradas de comparação especificadas,
ocorre um salto para o rótulo do programa que corresponde ao primeiro teste de
comparação verdadeiro. Se nenhuma das comparações for verdadeira, ocorrerá um salto
para o rótulo atribuído a ELSE. A execução do programa continua com as instruções do
programa que seguem o rótulo de salto de destino.

1 Para LAD e FBD: Clique abaixo do nome da caixa e selecione um tipo de dados no menu suspenso.

2 Para SCL: Use um conjunto de comparações IF-THEN.

mesa 2 Tipos de dados para parâmetros

Parâmetro Tipo de dados1 Descrição

K UInt Entrada de valor de comparação comum

==, <>, <, <=, >. >= SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, Entradas de valor de comparação separadas para tipos de comparação
DWord, Hora, TOD, Data específicos

DEST0, DEST1, .., Etiquetas do programa Salto rótulos de destino correspondentes a comparações
DESTn, ELSE específicas: A entrada de comparação abaixo e ao lado da

entrada K é processada primeiro e causa um salto para o rótulo atribuído


a DEST0, se a comparação entre o valor K e esta entrada for verdadeira. O
próximo teste de comparação usa a próxima entrada abaixo e causa um salto
para o rótulo atribuído a DEST1, se a comparação for verdadeira, as comparações
restantes são processadas de forma semelhante e se nenhuma das comparações
for verdadeira, um salto para o rótulo atribuído ao A saída ELSE ocorre.

1 A entrada K e as entradas de comparação (==, <>, <, <=, >, >=) devem ser do mesmo tipo de dados.

Adicionando entradas, excluindo entradas e especificando tipos de comparação

Quando a caixa LAD ou FBD SWITCH é colocada pela primeira vez em seu programa, há duas entradas de
comparação. Você pode atribuir tipos de comparação e adicionar entradas/destinos de salto, conforme mostrado abaixo.

Clique em um operador de comparação dentro da caixa e selecione um novo operador na lista


suspensa.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


SWITCH (distribuidor de salto) instrução

Clique no ícone criar dentro da caixa (à esquerda do último parâmetro DEST) para
adicionar novos parâmetros de destino de comparação.

• Clique com o botão direito do mouse em um stub de entrada e selecione o comando "Insert input".

• Clique com o botão direito do mouse em um stub de entrada e selecione o comando "Excluir".

Tabela 3 Seleção do tipo de dados da caixa SWITCH e operações de comparação permitidas

Tipo de dados Comparação Sintaxe do operador

Byte, Word, DWord Igual ==

Não igual <>

SInt, Int, DInt, USInt, UInt, UDInt, Igual ==

Real, LReal, Tempo, TOD, Data


Não igual <>

Maior ou igual >=

Menor ou igual <=

Maior que >

Menor que <

Regras de posicionamento da caixa SWITCH

• Nenhuma conexão de instrução LAD/FBD na frente da entrada de comparação é permitida.

• Não há saída ENO, então apenas uma instrução SWITCH é permitida em uma rede e o SWITCH
instrução deve ser a última operação em uma rede.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução RET (Retorno)

Instrução RET (Retorno)

A instrução opcional RET é usada para encerrar a execução do bloco atual. Se e somente
se houver fluxo de energia para a bobina RET (LAD) ou se a entrada da caixa RET for verdadeira (FBD), então programe
a execução do bloco atual terminará nesse ponto e as instruções além da instrução RET
não será executado. Se o bloco atual for um OB, o parâmetro "Return_Value" é ignorado. Se
o bloco atual é um FC ou FB, o valor do parâmetro "Return_Value" é passado de volta para o
rotina de chamada como o valor ENO da caixa chamada.

Você não é obrigado a usar uma instrução RET como a última instrução em um bloco; isso está feito
automaticamente para você. Você pode ter várias instruções RET em um único bloco.

Para SCL, consulte a instrução RETURN .

tabela 1 Instrução de controle de execução Return_Value (RET)

RAPAZ FBD SCL Descrição

RETORNA; Finaliza a execução do bloco atual

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

Valor de retorno Bool O parâmetro "Return_value" da instrução RET é atribuído à saída ENO do
a caixa de chamada de bloco no bloco de chamada.

Etapas de exemplo para usar a instrução RET dentro de um bloco de código FC:

1. Crie um novo projeto e adicione um FC:

2. Edite o FC:

ÿ Adicione instruções da árvore de instruções.

ÿ Adicione uma instrução RET, incluindo uma das seguintes para o parâmetro "Return_Value":

TRUE, FALSE ou um local de memória que especifica o valor de retorno necessário.

ÿ Adicione mais instruções.

3. Chame o FC de MAIN [OB1].

A entrada EN na caixa FC no bloco de código MAIN deve ser verdadeira para iniciar a execução do FC.

O valor especificado pela instrução RET no FC estará presente na saída ENO do FC


caixa no bloco de código MAIN após a execução do FC para o qual o fluxo de energia para o RET
instrução é verdadeira.

Veja também
ÿ Instrução RETURN

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instrução ENDIS_PW (Ativar/ desativar senhas de CPU)

Instrução ENDIS_PW (Ativar/desativar senhas de CPU)

tabela 1 Instrução ENDIS_PW

LAD / FBD SCL Descrição

ENDIS_PW A instrução ENDIS_PW pode permitir e


(req:=_bool_in_, f_pwd:=_bool_in_, completo não permitir conexões de cliente com uma CPU S7-1200,

_pwd:=_bool_in_, r_pwd:=_bool_in_, hm mesmo quando o cliente pode fornecer as informações corretas


i_pwd:=_bool_in_, f_pwd_on=>_bool_out senha.
_, full_pwd_on=>_bool_out_, r_pwd_on= Esta instrução não desautoriza o servidor Web
>_bool_out_, hmi_pwd_on=>_bool_out_); senhas.

mesa 2 Tipos de dados para os parâmetros

Parâmetro e tipo Tipo de dados Descrição

REQ DENTRO Bool Execute a função se REQ=1

F_PWD DENTRO Bool Senha à prova de falhas: permitir (=1) ou não permitir (=0)

FULL_PWD DENTRO Bool Senha de acesso total: Permitir (=1) ou proibir (=0) senha de acesso total

R_PWD DENTRO Bool Senha de acesso de leitura: Permitir (=1) ou proibir (=0)

HMI_PWD DENTRO Bool Senha da HMI: Permitir (=1) ou proibir (=0)

F_PWD_ON FORA Bool Status de senha à prova de falhas: permitido (=1) ou não permitido (=0)

FULL_PWD_ON FORA Bool Status da senha de acesso total: permitido (=1) ou não permitido (=0)

R_PWD_ON FORA Bool Status da senha somente leitura: permitido (=1) ou não permitido (=0)

HMI_PWD_ON FORA Bool Status da senha da HMI: Permitido (=1) ou não permitido (=0)

Escolha certa FORA Palavra Resultado da função

Chamar ENDIS_PW com REQ=1 não permite tipos de senha onde a senha correspondente
parâmetro de entrada é FALSE. Cada tipo de senha pode ser permitido ou não permitido de forma independente. Por
Por exemplo, se a senha à prova de falhas for permitida e todas as outras senhas não forem permitidas, você poderá
restringir o acesso da CPU a um pequeno grupo de funcionários.

O ENDIS_PW é executado de forma síncrona em uma varredura do programa e os parâmetros de saída de senha
sempre mostre o estado atual da permissão de senha independente do parâmetro de entrada REQ.
Todas as senhas definidas para permitir devem ser alteradas para não permitidas/permitidas. Caso contrário, um
O erro é retornado e todas as senhas permitidas antes da execução do ENDIS_PW são permitidas.
Isso significa que em uma CPU padrão (onde a senha à prova de falhas não está configurada) F_PWD deve
sempre ser definido como 1, para resultar em um valor de retorno de 0. Nesse caso, F_PWD_ON é sempre 1.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instrução ENDIS_PW (Ativar/ desativar senhas de CPU)

Observação

• A execução do ENDIS_PW pode bloquear o acesso dos dispositivos HMI, caso a senha da HMI não seja permitida.

• As sessões do cliente que foram autorizadas antes da execução do ENDIS_PW permanecem inalteradas pelo ENDIS_PW
execução.

Após uma energização, o acesso à CPU é restrito por senhas previamente definidas na configuração regular de proteção
da CPU. A capacidade de desabilitar uma senha válida deve ser restabelecida com uma nova execução de ENDIS_PW. No
entanto, se o ENDIS_PW for executado imediatamente e as senhas necessárias não forem permitidas, o acesso ao portal
TIA poderá ser bloqueado. Você pode usar uma instrução de timer para atrasar a execução do ENDIS_PW e dar tempo para
inserir as senhas, antes que as senhas sejam desautorizadas.

Observação

Restaurando uma CPU que bloqueia a comunicação do portal TIA

Consulte o tópico "Recuperação de uma senha perdida" para obter detalhes sobre como apagar a memória de carga
interna de um CLP usando um cartão de memória.

Uma mudança de modo de operação para STOP causada por erros, execução STP ou STEP 7 não anula a proteção. A
proteção é válida até que a CPU seja desligada e ligada. Consulte a tabela a seguir para obter detalhes.

Ação Modo operacional Controle de senha ENDIS_PW

Após a reinicialização da memória a partir do PASSO 7 STOP Ativo: as senhas não permitidas
permanecem não permitidas.

Após ligar ou trocar um cartão de memória PARE Desligado: Nenhuma senha


não é permitida.

Após a execução do ENDIS_PW em um INICIAR, EXECUTAR Ativo: as senhas não são permitidas de

ciclo de programa ou OB de inicialização acordo com os parâmetros ENDIS_PW

Após a mudança do modo de operação PARE Ativo: senhas não permitidas permanecem
de RUN ou STARTUP para não permitidas

STOP através de instrução STP, erro ou


STEP 7

Observação

Senha protege os níveis de acesso da CPU com senhas fortes. As senhas fortes têm pelo menos dez caracteres de
comprimento, misturam letras, números e caracteres especiais, não são palavras que podem ser encontradas em um
dicionário e não são nomes ou identificadores que podem ser derivados de informações pessoais. Mantenha a senha em
segredo e altere-a com frequência.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução ENDIS_PW (Ativar/ desativar senhas de CPU)

Tabela 3 Códigos de condição

ESCOLHA CERTA Descrição


(W#16#...)

0000 Sem erro

8090 A instrução não é suportada.

80D0 A senha para fail-safe não está configurada.

80D1 A senha para acesso de leitura/gravação não está configurada.

80D2 A senha para acesso de leitura não está configurada.

80D3 A senha de acesso HMI não está configurada.

Veja também

ÿ Recuperação de uma senha perdida

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instrução RE_TRIGR (Tempo de monitoramento do ciclo de reinicialização)

Instrução RE_TRIGR (Tempo de monitoramento do ciclo de reinicialização)

tabela 1 Instrução RE_TRIGR

LAD / FBD SCL Descrição

RE_TRIGR(); RE_TRIGR (re-trigger scan time watchdog) é usado para estender o tempo máximo
permitido antes que o temporizador do watchdog do ciclo de varredura gere um erro.

Use a instrução RE_TRIGR para reiniciar o temporizador de monitoramento do ciclo de varredura durante uma única varredura
ciclo. Isso tem o efeito de estender o tempo máximo de ciclo de varredura permitido em um máximo
período de tempo do ciclo, desde a última execução da função RE_TRIGR.

Observação

Antes da versão 2.2 do firmware da CPU S7-1200, o RE_TRIGR era restrito à execução de um programa
ciclo OB e pode ser usado para estender o tempo de varredura do PLC indefinidamente. ENO = FALSO e o
watchdog timer não é resetado quando RE_TRIGR foi executado a partir de um OB de inicialização, um OB de interrupção,
ou um erro OB.

Para firmware versão 2.2 e posterior, RE_TRIGR pode ser executado a partir de qualquer OB (incluindo inicialização,
interrupção e OBs de erro). No entanto, a varredura do PLC só pode ser estendida em no máximo 10x
o tempo de ciclo máximo configurado.

Configurando o tempo de ciclo máximo do PLC

Configure o valor para o tempo máximo do ciclo de varredura na configuração do dispositivo para "Tempo do ciclo".

mesa 2 Valores de tempo de ciclo

Monitor de tempo de ciclo Valor mínimo Valor máximo Valor padrão

Tempo máximo de ciclo 1 ms 6000ms 150 ms

Tempo limite do watchdog

Se o temporizador máximo do ciclo de varredura expirar antes da conclusão do ciclo de varredura, um erro será
gerado. Se o programa do usuário inclui uma interrupção de erro de tempo OB (OB 80), a CPU executa o
interrupção de erro de tempo OB, que pode incluir lógica de programa para criar uma reação especial.

Se o programa do usuário não incluir um OB de interrupção de erro de tempo, a primeira condição de timeout é
ignorado e a CPU permanece no modo RUN. Se um segundo tempo limite máximo de varredura ocorrer em
a mesma varredura do programa (2 vezes o valor máximo do tempo de ciclo), então é acionado um erro que
causa uma transição para o modo STOP.

No modo STOP, a execução do seu programa para enquanto as comunicações do sistema da CPU e o sistema
os diagnósticos continuam.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução STP (Sair do programa)

Instrução STP (Sair do programa)

tabela 1 Instrução STP

LAD / FBD SCL Descrição

STP(); STP coloca a CPU no modo STOP. Quando a CPU está em modo STOP, a execução
do seu programa e as atualizações físicas da imagem do processo são interrompidas.

Para obter mais informações, consulte: Configurando as saídas em uma transição RUN-to-STOP.

Se EN = TRUE, então a CPU vai para o modo STOP, a execução do programa para e o estado ENO
é sem sentido. Caso contrário, EN = ENO = 0.

Veja também

ÿ Configurando as saídas em uma transição RUN-to-STOP

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instrução RUNTIME (Medir o tempo de execução do programa)

Instrução RUNTIME (Medir o tempo de execução do programa)

tabela 1 Instrução RUNTIME

LAD / FBD SCL Descrição

Ret_Val := Mede o tempo de execução de todo o programa, blocos individuais ou


RUNTIME( _lread_inout_); sequências de comando.

Se você quiser medir o tempo de execução de todo o seu programa, chame a instrução "Measure
tempo de execução do programa" em OB1. A medição do tempo de execução é iniciada com a primeira chamada e o
output RET_VAL retorna o tempo de execução do programa após a segunda chamada. O tempo de execução medido
inclui todos os processos da CPU que podem ocorrer durante a execução do programa, por exemplo,
interrupções causadas por eventos de alto nível ou comunicação. A instrução "Medir
programa runtime" lê um contador interno da CPU e escreve o valor no IN-OUT
parâmetro MEM. A instrução calcula o tempo de execução do programa atual de acordo com o
freqüência interna do contador e a grava na saída RET_VAL.

Se você deseja medir o tempo de execução de blocos individuais ou sequências de comandos individuais, você
precisa de três redes separadas. Chame a instrução "Measure program runtime" em um
rede dentro do seu programa. Você define o ponto inicial da medição do tempo de execução com este
primeira chamada da instrução. Em seguida, você chama o bloco de programa necessário ou a sequência de comandos
na próxima rede. Em outra rede, chame a instrução "Measure program runtime" de
segunda vez e atribua a mesma memória ao parâmetro IN-OUT MEM que você fez durante o
primeira chamada da instrução. A instrução "Measure program runtime" na terceira rede
lê um contador de CPU interno e calcula o tempo de execução atual do bloco de programa ou o
sequência de comando de acordo com a frequência do contador interno e grava na saída
ESCOLHA CERTA.

A instrução Measure program runtime" usa um contador interno de alta frequência para calcular
A Hora. Se o contador for excedido, a instrução retornará valores <= 0,0. Ignorar estes ambientes de execução
valores.

Observação

A CPU não pode determinar exatamente o tempo de execução de uma sequência de comandos, porque a sequência
de instruções dentro de uma sequência de comandos muda durante a compilação otimizada do
programa.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

MEM LReal Iniciando o poing da medição de tempo de execução

ESCOLHA CERTA LReal Tempo de execução medido em segundos

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução RUNTIME (Medir o tempo de execução do programa)

Exemplo: instrução RUNTIME


O exemplo a seguir mostra o uso da instrução RUNTIME para medir o tempo de execução de um
bloco funcional:

Rede 1:

Rede 2:

Rede 3:

Quando o operando "Tag_1" na rede 1 tem o estado de sinal "1", a instrução RUNTIME é
executada. O ponto inicial para a medição do tempo de execução é definido na primeira
chamada da instrução e armazenado como referência para a segunda chamada da instrução no operando "Mem".
O bloco funcional FB1 é executado na rede 2.

Quando o bloco de programa FB1 é concluído e o operando "Tag_1" tem o estado de sinal "1", a
instrução RUNTIME na rede 3 é executada. A segunda chamada da instrução calcula o tempo de
execução do bloco de programa e escreve o resultado na saída RET_VAL_2.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Visão geral das instruções de controle do programa SCL

Visão geral das instruções de controle do programa SCL

Structured Control Language (SCL) fornece três tipos de instruções de controle de programa para
estruturando seu programa de usuário:

• Instruções seletivas: Uma instrução seletiva permite direcionar a execução do programa para alternativas
sequências de declarações.

• Loops: Você pode controlar a execução do loop usando instruções de iteração. Uma instrução de iteração especifica
quais partes de um programa devem ser iteradas dependendo de certas condições.

• Saltos de programa: Um salto de programa significa um salto imediato para um destino de salto especificado e
portanto, para uma instrução diferente dentro do mesmo bloco.

Essas instruções de controle de programa usam a sintaxe da linguagem de programação PASCAL.

tabela 1 Tipos de instruções de controle do programa SCL

Instrução de controle do programa Descrição

Seletivo Instrução SE-ENTÃO Permite direcionar a execução do programa para uma das duas alternativas
ramos, dependendo de uma condição ser TRUE ou FALSE

Declaração CASE Possibilita a execução seletiva em 1 de n branches alternativos, com base em


o valor de uma variável

Ciclo Declaração FOR Repete uma sequência de instruções enquanto a variável de controle
permanece dentro do intervalo de valores especificado

Declaração WHILE-DO Repete uma sequência de instruções enquanto uma condição de execução continua
estar satisfeito

Instrução REPEAT-UNTIL Repete uma sequência de instruções até que uma condição de término seja atendida

Salto do programa CONTINUAR declaração Interrompe a execução da iteração do loop atual

Declaração de SAÍDA Sai de um loop em qualquer ponto, independentemente de a condição de término ser
satisfeito ou não

Declaração GOTO Faz com que o programa salte imediatamente para um rótulo especificado

Declaração de DEVOLUÇÃO Faz com que o programa saia do bloco que está sendo executado e
retornar ao bloco de chamada

Veja também
ÿ Instrução SE-ENTÃO

ÿ Declaração CASE
ÿ Instrução FOR
ÿ Instrução WHILE-DO
ÿ Instrução REPEAT-UNTIL
ÿ CONTINUAR declaração
ÿ Declaração EXIT
ÿ declaração GOTO
ÿ Instrução RETURN

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções GET_ERROR e GET_ERROR_ID (Obter erro e ID de erro localmente)

Instruções GET_ERROR e GET_ERROR_ID (Obter erro e ID de erro localmente)

As instruções get error fornecem informações sobre erros de execução do bloco de programa. Se você adicionar
uma instrução GET_ERROR ou GET_ERROR_ID para seu bloco de código, você pode lidar com erros de programa
dentro do seu bloco de programa.

GET_ERROR

tabela 1 Instrução GET_ERROR

LAD / FBD SCL Descrição

GET_ERROR(_out_); Indica que ocorreu um erro de execução de bloco de programa local e


preenche uma estrutura de dados de erro predefinida com informações detalhadas de erro.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

ERRO ErrorStruct Estrutura de dados de erro: você pode renomear a estrutura, mas não a
membros dentro da estrutura.

Tabela 3 Elementos da estrutura de dados ErrorStruct

Componentes da estrutura Tipo de dados Descrição

ERROR_ID Palavra Código do erro

BANDEIRAS Byte Mostra se ocorreu um erro durante uma chamada de bloco.

• 16#01: Erro durante uma chamada de bloco.

• 16#00: Nenhum erro durante uma chamada de bloco.

REAÇÃO Byte Reação padrão:

• 0: Ignorar (erro de gravação),

• 1: Continuar com o valor substituto "0" (erro de leitura),

• 2: Ignorar instrução (erro do sistema)

CODE_ADDRESS CREF Informações sobre o endereço e tipo de bloco

BLOCK_TYPE Byte Tipo de bloco onde ocorreu o erro:


• 1: OB

• 2: FC

• 3: FB

CB_NUMBER UInt Número do bloco de código

DESLOCAMENTO UDInt Referência à memória interna

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções GET_ERROR e GET_ERROR_ID (Obter erro e ID de erro localmente)

Componentes da estrutura Tipo de dados Descrição

MODO Byte Modo de acesso: Dependendo do tipo de acesso, as seguintes informações


pode ser saída:

Modo (UMA) (B) (C) (D) (E)

1 Desvio

2 Área

3 Escopo do local Número

4 Área Desvio

5 Área DB nº. Desvio

6 PtrNo. / Área DB nº. Desvio


Conta

7 PtrNo. / Nº do slot / Área DB nº. Desvio


Conta Alcance

OPERAND_NUMBER UInt Número do operando do comando da máquina

POINTER_NUMBER_ UInt (A) Ponteiro interno


LOCALIZAÇÃO

SLOT_NUMBER_SCOPE UInt (B) Área de armazenamento na memória interna

DATA_ADDRESS NREF Informações sobre o endereço de um operando

ÁREA Byte (C) Área de memória:


• L: 16#40 – 4E, 86, 87, 8E, 8F, C0 – CE
• I: 16#81

• P: 16#82
• M: 16#83

• DB: 16#84, 85, 8A, 8B

DB_NUMBER UInt (D) Número do bloco de dados

DESLOCAMENTO UDInt (E) Endereço relativo do operando

GET_ERROR_ID

Tabela 4 Instrução GetErrorID

LAD / FBD SCL Descrição

GET_ERR_ID(); Indica que ocorreu um erro de execução do bloco de programa e relata o


ID (código identificador) do erro.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções GET_ERROR e GET_ERROR_ID (Obter erro e ID de erro localmente)

Tabela 5 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

EU IRIA Palavra Valores do identificador de erro para o membro ErrorStruct ERROR_ID

Tabela 6 Valores Error_ID

ERROR_ID ERROR_ID decimal Erro de execução do bloco de programa


hexadecimal

0 0 Sem erro

2520 9504 Cadeia corrompida

2522 9506 Erro de leitura de operando fora do intervalo

2523 9507 Erro de gravação de operando fora do intervalo

2524 9508 Erro de leitura de área inválida

2525 9509 Erro de gravação de área inválida

2528 9512 Erro de leitura de alinhamento de dados (alinhamento de bit incorreto)

2529 9513 Erro de gravação de alinhamento de dados (alinhamento de bits incorreto)

252C 9516 Erro de ponteiro não inicializado

2530 9520 DB protegido contra gravação

2533 9523 Ponteiro inválido usado

2538 9528 Erro de acesso: DB não existe

2539 9529 Erro de acesso: DB errado usado

253A 9530 O banco de dados global não existe

253C 9532 Versão errada ou FC não existe

253D 9533 Instrução não existe

253E 9534 Versão errada ou FB não existe

253F 9535 Instrução não existe

2550 9552 Erro de acesso: DB não existe

2575 9589 Erro de profundidade de aninhamento do programa

2576 9590 Erro de alocação de dados locais

2942 10562 O ponto de entrada físico não existe

2943 10563 O ponto de saída física não existe

Operação
Por padrão, a CPU responde a um erro de execução de bloco registrando um erro no diagnóstico
amortecedor. No entanto, se você colocar uma ou mais instruções GET_ERROR ou GET_ERROR_ID em um
bloco de código, este bloco agora está definido para lidar com erros dentro do bloco. Neste caso, a CPU
não registrar um erro no buffer de diagnóstico. Em vez disso, as informações de erro são relatadas na saída

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções GET_ERROR e GET_ERROR_ID (Obter erro e ID de erro localmente)

da instrução GET_ERROR ou GET_ERROR_ID. Você pode ler as informações detalhadas do erro com a
instrução GET_ERROR ou ler apenas o identificador de erro com a instrução GET_ERROR_ID.
Normalmente o primeiro erro é o mais importante, sendo os seguintes erros apenas consequências do primeiro
erro.

A primeira execução de uma instrução GET_ERROR ou GET_ERROR_ID dentro de um bloco retorna o primeiro
erro detectado durante a execução do bloco. Este erro pode ter ocorrido em qualquer lugar entre o início do
bloco e a execução de GET_ERROR ou GET_ERROR_ID. As execuções subsequentes de GET_ERROR ou
GET_ERROR_ID retornam o primeiro erro desde a execução anterior de GET_ERROR ou GET_ERROR_ID.
O histórico de erros não é salvo, e a execução de qualquer instrução irá rearmar o sistema PLC para capturar o
próximo erro.

O tipo de dados ErrorStruct usado pela instrução GET_ERROR pode ser adicionado no editor de bloco de
dados e editores de interface de bloco, para que sua lógica de programa possa acessar esses valores.
Selecione ErrorStruct na lista suspensa de tipos de dados para adicionar essa estrutura. Você pode criar
vários elementos ErrorStruct usando nomes exclusivos. Os membros de um ErrorStruct não podem ser
renomeados.

Condição de erro indicada por ENO


Se EN = TRUE e GET_ERROR ou GET_ERROR_ID for executado, então:

• ENO = TRUE indica que ocorreu um erro de execução de bloco de código e dados de erro estão presentes

• ENO = FALSE indica que não ocorreu nenhum erro de execução do bloco de código

Você pode conectar a lógica do programa de reação de erro ao ENO, que é ativado após a ocorrência de um
erro. Se existir um erro, o parâmetro de saída armazena os dados do erro onde seu programa tem acesso a ele.

GET_ERROR e GET_ERROR_ID podem ser usados para enviar informações de erro do bloco atualmente
em execução (bloco chamado) para um bloco de chamada. Coloque a instrução na última rede do programa do
bloco chamado para relatar o status final de execução do bloco chamado.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução SE-ENTÃO

Instrução SE-ENTÃO

A instrução IF-THEN é uma instrução condicional que controla o fluxo do programa executando um
grupo de declarações, com base na avaliação de um valor Bool de uma expressão lógica. Você pode
também use colchetes para aninhar ou estruturar a execução de várias instruções IF-THEN.

tabela 1 Elementos da instrução IF-THEN

SCL Descrição

SE "condição" THEN statement_A; Se "condition" for TRUE ou 1, execute as seguintes instruções até
declaração_B; declaração_C; ; encontrando a instrução END_IF.

Se "condição" for FALSE ou 0, pule para a instrução END_IF (a menos que o programa
inclui instruções opcionais ELSIF ou ELSE).

[ELSIF "condição-n" THEN instrução_N; ;] A instrução opcional ELSEIF1 fornece condições adicionais a serem avaliadas.
Por exemplo: Se "condição" na instrução IF-THEN for FALSE, então o programa
avalia "condição-n". Se "condition-n" for TRUE, execute "statement_N".

[ELSE instrução_X; ;] A instrução ELSE opcional fornece instruções a serem executadas quando o
"condição" da instrução IF-THEN é FALSE.

FIM SE; A instrução END_IF termina a instrução IF-THEN.

1 Você pode incluir várias instruções ELSIF em uma instrução IF-THEN.

mesa 2 Variáveis para a instrução IF-THEN

Variáveis Descrição

"doença" Requeridos. A expressão lógica é TRUE (1) ou FALSE (0).

"declaração_A" Opcional. Uma ou mais instruções a serem executadas quando "condição" for TRUE.

"condição-n" Opcional. A expressão lógica a ser avaliada pela instrução ELSIF opcional.

"declaração_N" Opcional. Uma ou mais instruções a serem executadas quando a "condição-n" da instrução ELSIF for
VERDADE.

"declaração_X" Opcional. Uma ou mais instruções a serem executadas quando a "condição" da instrução IF-THEN for
FALSO.

Uma instrução IF é executada de acordo com as seguintes regras:

• A primeira sequência de instruções cuja expressão lógica = TRUE é executada. O restante


seqüências de instruções não são executadas.

• Se nenhuma expressão booleana = TRUE, a sequência de instruções introduzidas por ELSE é executada (ou nenhuma
seqüência de instruções se a ramificação ELSE não existir).

• Pode existir qualquer número de instruções ELSIF.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução SE-ENTÃO

Observação

O uso de uma ou mais ramificações ELSIF tem a vantagem de que as expressões lógicas que seguem
uma expressão válida não são mais avaliadas em contraste com uma sequência de instruções IF. O tempo
de execução de um programa pode, portanto, ser reduzido.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração CASE

Declaração CASE

tabela 1 Elementos da instrução CASE

SCL Descrição

CASE "Test_Value" OF "ValueList": Statement[; Declaração, ...] "ValueList": A instrução CASE executa um dos vários
Declaração[; Declaração, ...] grupos de declarações, dependendo do valor
de uma expressão.

[ELSEElse-instrução[; Outra declaração, ...]]

END_CASE;

mesa 2 Parâmetros

Parâmetro Descrição

"Test_Value" Requeridos. Qualquer expressão numérica do tipo de dados Int

"Lista de Valores" Requeridos. Um valor único ou uma lista de valores ou intervalos de valores separados por vírgulas. (Use dois
períodos para definir um intervalo de valores: 2..8) O exemplo a seguir ilustra as diferentes variantes
da lista de valores:

1: Declaração_A; 2,
4: Declaração _B; 3,
5..7,9: Declaração _C;

Declaração Requeridos. Uma ou mais instruções que são executadas quando "Test_Value" corresponde a qualquer valor em
a lista de valores

Outra declaração Opcional. Uma ou mais instruções que são executadas se não corresponderem a um valor de "ValueList"
correspondências declaradas

A instrução CASE é executada de acordo com as seguintes regras:

• A expressão Test_value deve retornar um valor do tipo Int.

• Quando uma instrução CASE é processada, o programa verifica se o valor de Test_value


expressão está contida em uma lista especificada de valores. Se uma correspondência for encontrada, o componente de instrução
atribuído à lista é executado.

• Se nenhuma correspondência for encontrada, a seção do programa após ELSE será executada ou nenhuma instrução será executada se
a ramificação ELSE não existe.

Exemplo: instruções CASE aninhadas

As instruções CASE podem ser aninhadas. Cada instrução case aninhada deve ter um END_CASE associado
declaração.

CASO "var1" DE

1 : #var2 := 'A';2 : #var2 := 'B';

SENÃO

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração CASE

CASO "var3" DE

65..90: #var2 := 'Maiúsculas'; 97..122: #var2 := 'Minúsculas';

SENÃO

#var2:= 'Caractere Especial';

END_CASE;

END_CASE;

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração FOR

Declaração FOR

tabela 1 Elementos da instrução FOR

SCL Descrição

FOR "control_variable" := "begin" TO "end" [BY "increment"] instrução Uma instrução FOR é usada para repetir uma sequência
DO; ; de instruções, desde que uma variável de controle esteja
dentro do intervalo de valores especificado. A definição de
um loop com FOR inclui a especificação de um valor inicial
END_FOR;
e final. Ambos os valores devem ser do mesmo tipo que a
variável de controle.

Você pode aninhar loops FOR. A instrução END_FOR


refere-se à última instrução FOR executada.

mesa 2 Parâmetros

Parâmetro Descrição

"control_variable" Requeridos. Um inteiro (Int ou DInt) que serve como contador de loops

"começar" Requeridos. Expressão simples que especifica o valor inicial das variáveis de controle

"fim" Requeridos. Expressão simples que determina o valor final das variáveis de controle

"incremento" Opcional. Quantidade pela qual uma "variável de controle" é alterada após cada loop. O "incremento" tem
o mesmo tipo de dados que a "variável de controle". Se o valor de "incremento" não for especificado, o valor
das tags de execução será aumentado em 1 após cada loop. Você não pode alterar "incremento" durante a
execução da instrução FOR.

A instrução FOR é executada da seguinte forma:

• No início do loop, a variável de controle é definida para o valor inicial (atribuição inicial) e cada vez que o loop itera,
é incrementado pelo incremento especificado (incremento positivo) ou decrementado (incremento negativo) até
que o valor final seja alcançado.

• Após cada execução do loop, a condição é verificada (valor final alcançado) para estabelecer se ela é satisfeita ou
não. Se a condição final não for satisfeita, a sequência de instruções é executada novamente, caso contrário, o
loop termina e a execução continua com a instrução imediatamente após o loop.

Regras para formular declarações FOR:

• A variável de controle só pode ser do tipo de dado Int ou DInt.

• Você pode omitir a instrução BY [incremento]. Se nenhum incremento for especificado, é assumido automaticamente
ser +1.

Para encerrar o loop independentemente do estado da expressão "condition", use a instrução EXIT.
A instrução EXIT executa a instrução imediatamente após a instrução END_FOR.

Use a instrução CONTINUE para ignorar as instruções subsequentes de um loop FOR e continuar o loop examinando
se a condição foi atendida para o término.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração FOR

Veja também
ÿ Declaração EXIT
ÿ CONTINUAR declaração

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração WHILE-DO

Declaração WHILE-DO

tabela 1 declaração WHILE

SCL Descrição

ENQUANTO "condição" FAZ A instrução WHILE executa uma série de instruções até que uma determinada condição seja TRUE.

Você pode aninhar loops WHILE. A instrução END_WHILE refere-se à última instrução WHILE executada.

Declaração; Declaração; ...;

END_WHILE;

mesa 2 Parâmetros

Parâmetro Descrição

"doença" Requeridos. Uma expressão lógica que é avaliada como TRUE ou FALSE. (Uma condição "null" é interpretada como
FALSE.)

Declaração Opcional. Uma ou mais instruções que são executadas até que a condição seja avaliada como TRUE.

Observação

A instrução WHILE avalia o estado de "condição" antes de executar qualquer uma das instruções.
Para executar as instruções pelo menos uma vez, independentemente do estado de "condição", use a
instrução REPEAT.

A instrução WHILE é executada de acordo com as seguintes regras:

• Antes de cada iteração do corpo do loop, a condição de execução é avaliada.

• O corpo do loop após DO itera enquanto a condição de execução tiver o valor TRUE.

• Uma vez que o valor FALSE ocorre, o loop é ignorado e a instrução que segue o loop é executada.

Para encerrar o loop independentemente do estado da expressão "condition", use a instrução EXIT.
A instrução EXIT executa a instrução imediatamente após a instrução END_WHILE

Use a instrução CONTINUE para ignorar as instruções subsequentes de um loop WHILE e continuar o loop
examinando se a condição foi atendida para o término.

Veja também
ÿ Instrução EXIT ÿ
Instrução REPEAT-UNTIL

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução REPEAT-UNTIL

Instrução REPEAT-UNTIL

tabela 1 REPETIR instrução

SCL Descrição

REPETIR A instrução REPEAT executa um grupo de instruções até que uma determinada condição seja TRUE.

Você pode aninhar loops REPEAT. A instrução END_REPEAT sempre se refere à última instrução de repetição

Declaração; ; executada.

ATÉ "condição"

END_REPEAT;

mesa 2 Parâmetros

Parâmetro Descrição

Declaração Opcional. Uma ou mais instruções que são executadas até que a condição seja TRUE.

"doença" Requeridos. Uma ou mais expressões das duas maneiras a seguir: Uma expressão numérica ou expressão de seqüência
de caracteres que é avaliada como TRUE ou FALSE. Uma condição "null" é interpretada como FALSE.

Observação

Antes de avaliar o estado de "condição", a instrução REPEAT executa as instruções durante a


primeira iteração do loop (mesmo que "condição" seja FALSE). Para revisar o estado de
"condição" antes de executar as instruções, use a instrução WHILE.

Para encerrar o loop independentemente do estado da expressão "condition", use a instrução EXIT.
A instrução EXIT executa a instrução imediatamente após a instrução END_REPEAT

Use a instrução CONTINUE para ignorar as instruções subsequentes de um loop REPEAT e


continuar o loop examinando se a condição foi atendida para o término.

Veja também
ÿ Declaração EXIT
ÿ CONTINUAR declaração
ÿ Instrução WHILE-DO

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


CONTINUAR declaração

CONTINUAR declaração

tabela 1 CONTINUAR declaração

SCL Descrição

PROSSEGUIR A instrução CONTINUE ignora as instruções subsequentes de um loop de programa (FOR, WHILE,
REPEAT) e continua o loop examinando se a condição é atendida para o término. Se este não for o
caso, o loop continua.
Declaração; ;

A instrução CONTINUE é executada de acordo com as seguintes regras:

• Essa instrução encerra imediatamente a execução de um corpo de loop.

• Dependendo se a condição para repetir o loop é satisfeita ou não, o corpo é executado novamente ou a instrução
de iteração é encerrada e a instrução imediatamente seguinte é executada.

• Em uma instrução FOR, a variável de controle é incrementada pelo incremento especificado imediatamente após
uma instrução CONTINUE.

Use a instrução CONTINUE somente dentro de um loop. Em loops aninhados, CONTINUE sempre se
refere ao loop que o inclui imediatamente. CONTINUE é normalmente usado em conjunto com um IF
declaração.

Se o loop for sair independentemente do teste de encerramento, use a instrução EXIT.

Exemplo: instrução CONTINUE

O exemplo a seguir mostra o uso da instrução CONTINUE para evitar um erro de divisão por 0 ao calcular
a porcentagem de um valor:

PARA i := 0 A 10 DO

SE valor[i] = 0 ENTÃO CONTINUA; FIM SE;

p := parte / valor[i] * 100; s := INT_TO_STRING(p); porcentagem := CONCAT(IN1:=s, IN2:="%");

END_FOR;

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração GOTO

Declaração GOTO

tabela 1 Declaração GOTO

SCL Descrição

GOTO JumpLabel;Declaração; ...; A instrução GOTO pula as instruções pulando para um rótulo no mesmo bloco.

JumpLabel: Declaração; O rótulo de salto ("JumpLabel") e a instrução GOTO devem estar no mesmo bloco.
O nome de um rótulo de salto só pode ser atribuído uma vez dentro de um bloco. Cada rótulo
de salto pode ser o destino de várias instruções GOTO.

Não é possível pular para uma seção de loop (FOR, WHILE ou REPEAT). É possível saltar de dentro de um
loop.

Exemplo: instrução GOTO

No exemplo a seguir: Dependendo do valor do operando "Tag_value", a execução do programa recomeça no


ponto definido pelo rótulo de salto correspondente. Se "Tag_value" for igual a 2, a execução do programa
continua no rótulo de salto "MyLabel2" e pula "MyLabel1".

CASE "Valor_Tag" OF1 : GOTO MyLabel1; 2 : GOTO MyLabel2;ELSE GOTO MyLabel3;END_CASE;

MeuEtiqueta1: "Tag_1" := 1;

MeuEtiqueta2: "Tag_2" := 1;

MeuEtiqueta3: "Tag_4" := 1;

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração de SAÍDA

Declaração de SAÍDA

tabela 1 instrução SAIR

SCL Descrição

SAÍDA; Uma instrução EXIT é usada para sair de um loop (FOR, WHILE ou REPEAT) em qualquer ponto, independentemente de a
condição de término ser satisfeita.

A instrução EXIT é executada de acordo com as seguintes regras:

• Essa instrução faz com que a instrução de repetição imediatamente ao redor da instrução exit seja encerrada imediatamente.

• A execução do programa continua após o término do loop (por exemplo, após END_FOR).

Use a instrução EXIT dentro de um loop. Em loops aninhados, a instrução EXIT retorna o processamento para o
próximo nível de aninhamento mais alto.

Exemplo: instrução EXIT

PARA i := 0 A 10 DO

CASE valor[i, 0] OF 1..10: valor [i, 1]:="A"; 11..40: valor [i, 1]:="B"; 41..100: valor [i, 1]:="C";ELSEEXIT;

END_CASE;END_FOR;

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Declaração de DEVOLUÇÃO

Declaração de DEVOLUÇÃO

tabela 1 Instrução de RETORNO

SCL Descrição

RETORNA; A instrução Return sai do bloco de código que está sendo executado sem condições. A execução do programa retorna ao bloco de
chamada ou ao sistema operacional (ao sair de um OB).

Exemplo: instrução RETURN:

SE "Erro" <> 0 ENTÃO

RETORNA;

FIM SE;

Observação

Após executar a última instrução, o bloco de código retorna automaticamente ao bloco chamador.
Não insira uma instrução RETURN no final do bloco de código.

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de qualquer
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros. 28/10/2022
Machine Translated by Google
28/10/2022 11:48 Instruções de operação da lógica AND, OR e XOR - SIMATIC S7 S7-1200 Programmable co… - ID: 107623221 - Industry Supp…

Instruções de operação lógica AND, OR e XOR

Tabela: Instruções de operação lógica AND, OR e XOR

LAD / FBD SCL Descrição

saída := entrada1 AND entrada2;


E: E Lógico

saída := entrada1 OU entrada2;


OU: OU Lógico

out := in1 XOR in2;


XOR: OU EXCLUSIVO Lógico

1
Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

Para adicionar uma entrada, clique no ícone "Criar" ou clique com o botão direito do mouse em um stub de entrada para um dos

os parâmetros IN existentes e selecione o comando "Inserir entrada".

Para remover uma entrada, clique com o botão direito do mouse em um stub de entrada para um dos parâmetros IN existentes (quando houver mais do que as duas entradas originais) e
selecione o comando "Excluir".

Tabela: Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

IN1, IN2 Byte, Word, DWord Entradas lógicas

FORA Byte, Word, DWord Saída lógica

1
A seleção do tipo de dados define os parâmetros IN1, IN2 e OUT para o mesmo tipo de dados.

Os valores de bit correspondentes de IN1 e IN2 são combinados para produzir um resultado lógico binário no parâmetro OUT. ENO é sempre TRUE
após a execução destas instruções.

https://support.industry.siemens.com/cs/mdm/107623221?c=72560184459&dl=en&lc=pt-BR 1/1
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instrução INV (Criar um complemento)

Instrução INV (Criar um complemento)

tabela 1 Instrução INV

LAD / FBD SCL Descrição

Não disponível Calcula o complemento do binário do parâmetro IN. O um


complemento é formado pela inversão de cada valor de bit do parâmetro IN
(mudando cada 0 para 1 e cada 1 para 0). ENO é sempre TRUE seguindo o
execução desta instrução.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Byte, Word, DWord Elemento de dados para inverter

FORA SInt, Int, DInt, USInt, UInt, UDInt, Byte, Word, DWord Saída invertida

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções DECO (Decodificar) e ENCO (Codificar)

Instruções DECO (Decodificar) e ENCO (Codificar)

tabela 1 Instrução ENCO e DECO

LAD / FBD SCL Descrição

out := ENCO(_in_); Codifica um padrão de bits para um número


binário A instrução ENCO converte o parâmetro IN para o número binário
correspondente à posição do bit do bit definido menos significativo de
parâmetro IN e retorna o resultado para o parâmetro OUT. Se parâmetro
IN é 0000 0001 ou 0000 0000, então um valor de 0 é retornado
para o parâmetro OUT. Se o valor do parâmetro IN for 0000 0000, então ENO
está definido como FALSO.

out := DECO(_in_); Decodifica um número binário para um padrão


de bits A instrução DECO decodifica um número binário do parâmetro IN,
definindo a posição do bit correspondente no parâmetro OUT para 1 (todos
outros bits são definidos como 0). ENO é sempre TRUE após a execução de
a instrução DECO.

Nota: O tipo de dados padrão para a instrução DECO é DWORD. Dentro


SCL, altere o nome da instrução para DECO_BYTE ou DECO_WORD para
decodificar um valor de byte ou palavra e atribuir a um byte ou tag de palavra ou
Morada.

1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
ENCO: Byte, Word, DWord ENCO: padrão de bits para codificar
DECO: UInt DECO: Valor a decodificar

FORA ENCO: Int ENCO: valor codificado

DECO: Byte, Word, DWord DECO: padrão de bits decodificado

Tabela 3 Status ENO

1 Doença Resultado (OUT)

1 Sem erro Número de bits válido

0 IN é zero OUT está definido como zero

A seleção do tipo de dados OUT do parâmetro DECO de um Byte, Word ou DWord restringe a
intervalo do parâmetro IN. Se o valor do parâmetro IN exceder a faixa útil, então um módulo
operação é executada para extrair os bits menos significativos mostrados abaixo.

Intervalo de ENTRADA do parâmetro DECO:

• 3 bits (valores 0-7) IN são usados para definir a posição de 1 bit em um Byte OUT

• 4 bits (valores 0-15) IN são usados para definir a posição de 1 bit em uma palavra OUT

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções DECO (Decodificar) e ENCO (Codificar)

• 5 bits (valores 0-31) IN são usados para definir a posição de 1 bit em um DWord OUT

Tabela 4 Exemplos

Valor DECO IN Valor DECO OUT (Decodificar posição de bit único)

Byte OUT Min. DENTRO 0 00000001

8 bits Máx. DENTRO 7 1.000.000

Palavra PARA FORA Min. DENTRO 0 0000000000000001

16 bits Máx. DENTRO 15 1000000000000000

DWord OUT Min. DENTRO 0 00000000000000000000000000000001

32 bits Máx. DENTRO 31 1000000000000000000000000000000

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google
28/10/2022 13:10 Instruções SEL (Select), MUX (Multiplex) e DEMUX (Demultiplex) - SIMATIC S7 S7… - ID: 107623221 - Industry Suppor…

Instruções SEL (Select), MUX (Multiplex) e DEMUX (Demultiplex)

Tabela: Instrução SEL (selecionar)

LAD / FBD SCL Descrição

out := SEL( g:=_bool_in, in0:-


_variant_in, in1:=_variant_in); O SEL atribui um de dois valores de entrada ao parâmetro OUT, dependendo do
valor do parâmetro G.

1
Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

Tabela: Tipos de dados para a instrução SEL

Parâmetro 1
Tipo de dados Descrição

0 seleciona IN0
G Bool 1 seleciona IN1

IN0, IN1 SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Time, Entradas
Data, TOD, Char, WChar

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Time, Resultado
Data, TOD, Char, WChar

1
As variáveis de entrada e a variável de saída devem ser do mesmo tipo de dados.

Códigos de condição: ENO é sempre TRUE após a execução da instrução SEL.

Tabela: Instrução MUX (multiplex)

LAD / FBD SCL Descrição

out := MUX( k:=_unit_in,


in1:=variant_in, in2:=variant_in, O MUX copia um dos muitos valores de entrada para o parâmetro OUT, dependendo do

[...in32:=variant_in,] inelse:=variant_in); valor do parâmetro K. Se o valor do parâmetro K exceder (INn - 1), então o
o valor do parâmetro ELSE é copiado para o parâmetro OUT.

1
Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

Para adicionar uma entrada, clique no ícone "Criar" ou clique com o botão direito do mouse em um stub de entrada para um

dos parâmetros IN existentes e selecione o comando "Inserir entrada".

Para remover uma entrada, clique com o botão direito do mouse em um stub de entrada para um dos parâmetros IN existentes (quando houver mais do que as duas entradas originais) e
selecione o comando "Excluir".

Tabela: Tipos de dados para a instrução MUX


https://support.industry.siemens.com/cs/mdm/107623221?c=71216406539&dl=en&lc=pt-BR 1/3
Machine Translated by Google
28/10/2022 13:10 Instruções SEL (Select), MUX (Multiplex) e DEMUX (Demultiplex) - SIMATIC S7 S7… - ID: 107623221 - Industry Suppor…

Parâmetro Tipo de dados Descrição

0 seleciona IN1
K UInt 1 seleciona IN2
n seleciona INn

IN0, IN1, .. INn SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Time, Entradas
Data, TOD, Char, WChar

SENÃO SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Time, Valor substituto de entrada (opcional)
Data, TOD, Char, WChar

FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Time, Resultado
Data, TOD, Char, WChar

1
As variáveis de entrada e a variável de saída devem ser do mesmo tipo de dados.

Tabela: Instrução DEMUX (Demultiplex)

LAD / FBD SCL Descrição

DEMUX( k:=_unit_in,
in:=variant_in, out1:=variant_in, DEMUX copia o valor da localização atribuída ao parâmetro IN para um dos

out2:=variant_in, [...out32:=variant_in,] muitas saídas. O valor do parâmetro K seleciona qual saída selecionada

outelse:=variant_in); como destino do valor IN. Se o valor de K for maior que o número
(OUTn - 1) então o valor IN é copiado para o local atribuído ao ELSE
parâmetro.

1
Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.

Para adicionar uma saída, clique no ícone "Criar" ou clique com o botão direito do mouse em um stub de saída para
um dos parâmetros OUT existentes e selecione o comando "Inserir saída".

Para remover uma saída, clique com o botão direito do mouse em um stub de saída para um dos parâmetros OUT existentes (quando houver mais do que os dois
outputs) e selecione o comando "Delete".

Tabela: Tipos de dados para a instrução DEMUX

Parâmetro 1
Tipo de dados Descrição

K UInt Valor do seletor:

0 seleciona OUT1
1 seleciona OUT2
n seleciona OUTn

DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Entrada
Hora, Data, TOD, Char, WChar

OUT0, OUT1, .. SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Saídas
OUTn Hora, Data, TOD, Char, WChar

SENÃO SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Substitua a saída quando K for maior que
Hora, Data, TOD, Char, WChar (OUTn - 1)

1
A variável de entrada e as variáveis de saída devem ser do mesmo tipo de dados.

https://support.industry.siemens.com/cs/mdm/107623221?c=71216406539&dl=en&lc=pt-BR 2/3
Tabela: Status ENO para as instruções MUX e DEMUX
Machine Translated by Google
28/10/2022 13:10 Instruções SEL (Select), MUX (Multiplex) e DEMUX (Demultiplex) - SIMATIC S7 S7… - ID: 107623221 - Industry Suppor…

1 Doença Resultado OUT

1 Sem erro MUX: O valor IN selecionado é copiado para OUT

DEMUX: O valor IN é copiado para OUT selecionado

Nenhum ELSE fornecido: OUT é


0 MUX: K é maior que o número de entradas -1 inalterado,
ELSE fornecido, valor ELSE
atribuído a OUT
Nenhum ELSE fornecido: as saídas são
DEMUX: K é maior que o número de saídas -1 inalterado,
ELSE fornecido, valor IN copiado para
SENÃO

https://support.industry.siemens.com/cs/mdm/107623221?c=71216406539&dl=en&lc=pt-BR 3/3
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200


Instruções SHR (Shift right) e SHL (Shift left)

Instruções SHR (Shift right) e SHL (Shift left)

tabela 1 Instruções SHR e SHL

LAD / FBD SCL Descrição

out := SHR( in:=_variant_in_, Use as instruções de deslocamento (SHL e SHR) para deslocar o padrão de bits de
n:=_uint_in);out := SHL(in:=_variant_in_, parâmetro IN. O resultado é atribuído ao parâmetro OUT. Parâmetro N
n:=_uint_in); especifica o número de posições de bit deslocadas: • SHR:

Deslocar padrão de bit para a direita

• SHL: Deslocar padrão de bits para a esquerda

1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
Inteiros Padrão de bits para mudar

N USInt, UDint Número de posições de bits a serem deslocadas

FORA Inteiros Padrão de bits após operação de deslocamento

• Para N=0, não ocorre deslocamento. O valor IN é atribuído a OUT.

• Os zeros são deslocados para as posições de bit esvaziadas pela operação de deslocamento.

• Se o número de posições a serem deslocadas (N) exceder o número de bits no valor alvo (8 para Byte, 16
para Word, 32 para DWord), então todos os valores de bits originais serão deslocados e substituídos por zeros (zero
é atribuído a OUT).

• ENO é sempre TRUE para as operações de deslocamento.

Tabela 3 Exemplo: SHL para dados do Word

Desloque os bits de uma palavra para a esquerda inserindo zeros da direita (N = 1)

DENTRO 1110 0010 1010 1101 Valor OUT antes do primeiro turno: 1110 0010 1010 1101

Após o primeiro turno à esquerda: 1100 0101 0101 1010

Após o segundo turno à esquerda: 1000 1010 1011 0100

Após o terceiro turno à esquerda: 0001 0101 0110 1000

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022
Machine Translated by Google

Controlador programável SIMATIC S7 S7-1200

Instruções ROR (Girar para a direita) e ROL (Girar para a esquerda)

Instruções ROR (Girar para a direita) e ROL (Girar para a esquerda)

tabela 1 Instruções ROR e ROL

LAD / FBD SCL Descrição

out := ROL( in:=_variant_in_, Use as instruções de rotação (ROR e ROL) para girar o padrão de bits de
n:=_uint_in);out := ROR( parâmetro IN. O resultado é atribuído ao parâmetro OUT. Parâmetro N
in:=_variant_in_, n:=_uint_in); define o número de posições de bit giradas. • ROR: Gire o

padrão de bits para a direita

• ROL: Gire o padrão de bits para a esquerda

1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.

mesa 2 Tipos de dados para os parâmetros

Parâmetro Tipo de dados Descrição

DENTRO
Inteiros Padrão de bits para girar

N USInt, UDint Número de posições de bits para girar

FORA Inteiros Padrão de bits após a operação de rotação

• Para N=0, não ocorre rotação. O valor IN é atribuído a OUT.

• Os dados de bits girados para fora de um lado do valor alvo são girados para o outro lado do valor alvo, então
nenhum valor de bit original é perdido.

• Se o número de posições de bit para girar (N) exceder o número de bits no valor de destino (8 para Byte,
16 para Word, 32 para DWord), a rotação ainda é executada.

• ENO é sempre TRUE após a execução das instruções de rotação.

Tabela 3 Exemplo: ROR para dados do Word

Gire os bits do lado direito para o lado esquerdo (N = 1)

DENTRO 0100 0000 0000 0001 Valor OUT antes da primeira rotação: 0100 0000 0000 0001

Depois de primeiro girar para a direita: 1010 0000 0000 0000

Após a segunda gire para a direita: 0101 0000 0000 0000

Este documento constitui um extrato gratuito compilado pelo próprio usuário da documentação fornecida pela Siemens para este produto. A Siemens se isenta de todas
responsabilidade pela integridade deste documento. Ele deve ser usado apenas para fins internos do próprio usuário. Não deve ser repassado a terceiros.
28/10/2022

Você também pode gostar