Comandos Basicos
Comandos Basicos
Comandos Basicos
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
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.
• 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.
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
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.
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.
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
• 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
tabela 1 instruções S e R
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.
IN (ou conectar a lógica de contato/portão) Bool Bit tag do local a ser monitorado
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.
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
Tabela 5 Instruções RS e SR
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.
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".
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
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.
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.
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.
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
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).
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).
1 Para SCL: Você deve escrever código para replicar esta função em seu aplicativo.
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).
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
Tabela 4 Tipos de dados para os parâmetros (contatos/bobinas P e N, P=, N=, P_TRIG e N_TRIG)
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
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
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.
ET=>_time_out_);
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.
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
Operações do temporizador
Bobina: Sem fluxo de energia = Desativar temporizador, Fluxo de energia = Ativar temporizador
TOF:
Bobina: Sem fluxo de energia = Ativar temporizador, Fluxo de energia = Desativar temporizador
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.
TONELADA
• A mudança de PT não tem efeito enquanto o temporizador é executado.
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
Operações do temporizador
Tamanho
Tipo de dados Intervalos de números válidos1
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
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.
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
temporizador TOF redefine a saída Q para OFF após um atraso de tempo predefinido.
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
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
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
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
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á
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
ÿ 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
ÿ 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.
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
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 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.
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.
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:
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.
5. Clique OK. A instrução timer aparece no editor e a estrutura IEC_TIMER aparece na Interface FB em Static.
7. Coloque este FB no local desejado. Isso resulta na criação de um bloco de dados de instância para este
FB.
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
Operações de contador
"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.
CU, CD Bool Contar para cima ou para baixo, por uma contagem
fotovoltaica
SInt, Int, DInt, USInt, UInt, UDInt Valor de contagem predefinido
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
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:
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.
Contador Operaçã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. 26/10/2022
Machine Translated by Google
Operações de contador
Contador Operação
Contador Operação
• 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
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
ÿ 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
ÿ 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.
3. Abra o bloco de programa para edição onde deseja colocar um contador retentivo (OB, FC ou FB).
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).
IEC_Counter INT
IEC_SCounter SANTO
IEC_DCounter FORÇA
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
Atribua um banco de dados de várias instâncias para armazenar dados do contador como dados retentivos
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.
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.
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:
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.
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.
8. Coloque este FB no local desejado. Isso resulta na criação de um bloco de dados de instância para este
FB.
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
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
Veja também
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
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.
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.
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
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
out := IN_RANGE(min, val, max); Testa se um valor de entrada está dentro ou fora de um intervalo de valores especificado.
1 Para LAD e FBD: Clique no botão "???" e selecione o tipo de dados na lista suspensa.
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 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
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.
DENTRO
Real, Real Dados de entrada
Tabela 3 Operação
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
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.
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
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
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
Você pode usar a instrução "Check for ARRAY" para consultar se a Variant aponta para uma tag de
o tipo de dados Array.
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
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.
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
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
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 …
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)
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
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
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.
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 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
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.
IN1 e IN2 SInt, Int, DInt, USInt, UInt, UDInt, Constante Entradas de módulo
1 Descrição
1 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
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
DENTRO
SInt, Int, DInt, Real, LReal, Constante Entrada de operação matemática
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
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
ENTRADA/SAÍDA SInt, Int, DInt, USInt, UInt, UDInt Entrada e saída de operação matemática
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
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.
DENTRO
SInt, Int, DInt, Real, LReal Entrada de operação matemática
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
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.
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
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".
1 Descrição
1 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
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
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 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.
Exemplos SCL:
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…
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
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.
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
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.
EM 2 SInt, Int, DInt, USInt, UInt,UDInt, Real, LReal, Constant EXPT entrada do expoente
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…
SIN, COS, SO IN é +/- INF ou +/- NaN +/- INF ou +/- 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…
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.
saída1 := entrada;
Copia um elemento de dados armazenado em um endereço especificado
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
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.
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".
DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Byte, Word, DWord, Endereço inicial de origem
Hora, Data, TOD, WCar
FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Endereço inicial de destino
Hora, Data, TOD, WCar
SRC Variante (que aponta para uma matriz ou elemento de matriz individual) Bloco de origem do qual copiar
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
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.
1 Doença Resultado
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.
(W#16#...)
*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
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.
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".
RET_VAL* Descrição
(W#16#...)
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
RET_VAL* Descrição
(W#16#...)
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.
8250 O tipo de dados Variant no parâmetro DEST_VARIABLE não contém nenhum valor.
*Você pode visualizar os códigos de erro como inteiro ou hexadecimal no editor do programa.
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:
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
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".
A estrutura dos dois tipos de dados PLC (UDTs) para este exemplo é a seguinte:
Blocos 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
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.
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".
representaçã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.
26/10/2022
Machine Translated by Google
RET_VAL* Descrição
(W#16#...)
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.
*Você pode visualizar os códigos de erro como inteiro ou hexadecimal no editor do programa.
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
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:
A estrutura dos dois tipos de dados PLC (UDTs) para este exemplo é a seguinte:
Blocos 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
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);
DENTRO
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, Endereço da fonte de dados
FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, Endereço de destino dos dados
Observação
• Para preencher com o tipo de dados BOOL, use SET_BF, RESET_BF, R, S ou bobina de saída (LAD)
• Para preencher uma matriz com um tipo de dados elementar, use FILL_BLK ou UFILL_BLK
• 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.
• 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
• 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.
1 Doença Resultado
0 O intervalo de destino (OUT) excede o Os elementos que se encaixam são copiados. Sem parcial
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
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.
DENTRO
Palavra, DWord Bytes de dados ordenados IN
Em # 16 # 1234 12 34 34 12
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
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:
%MW200 := PEEK_WORD(área:=16#84,
dbNumber:=1, byteOffset:=#i);
%MD300 := PEEK_DWORD(área:=16#84,
dbNumber:=1, byteOffset:=#i);
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
Exemplo:
POKE_BOOL(área:=16#84, dbNumber:=2,
byteOffset:=3, bitOffset:=5, valor:=0);
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
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:
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 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.
dest_Variable Cadeias de bits, números inteiros, números de ponto flutuante, temporizadores, data e Variável de destino na qual escrever
posição
FORÇA Posição de base zero a partir da qual
comece a ler os dados do src_array
entrada.
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
posição
FORÇA Posição de base zero na qual começar
escrevendo dados no dest_array
resultado.
RET_VAL* Descrição
(W#16#...)
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
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.
Observação
Para copiar estruturas e arrays, você pode usar a instrução "MOVE_BLK_VARIANT: Move block".
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
1 Doença Resultado
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
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.
Observação
Para copiar estruturas e ARRAYs, você pode usar a instrução "MOVE_BLK_VARIANT: Move block".
SRC Cadeias de bits, números inteiros, números de ponto flutuante, temporizadores, data e Ponteiro para dados de origem
1 Doença Resultado
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
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.
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.
1 Doença Resultado
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
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.
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
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.
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
• O elemento do array especificado no parâmetro INDEX não está definido no array referenciado em MEMBER
parâmetro
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
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.
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.
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
• 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.
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.
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
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.
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.
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:
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:
1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.
IN11 DENTRO
DTL, Hora DTL ou valor 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
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.
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
_tod_in);
1 Observe que a instrução T_COMBINE nas instruções estendidas equivale à função CONCAT_DATE_TOD em SCL.
EM 2 DENTRO
Hora do dia Valores Time_of_Day a serem combinados
Veja também
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
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
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
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
Caracteres
CHAR_TO_SINT, CHAR_TO_USINT, CHAR_TO_INT, O valor é convertido.
CHAR_TO_UINT, CHAR_TO_DINT, CHAR_TO_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 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
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.
DENTRO
Real, Real Entrada de ponto flutuante
FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Saída arredondada ou truncada
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
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.
DENTRO
Real, Real Entrada de ponto flutuante
FORA SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Saída convertida
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
(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.
MIN SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Insira o valor mínimo para o intervalo
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
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
Observação
O parâmetro SCALE_X VALUE deve ser restrito a ( 0.0 <= VALUE <= 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.
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.
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
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.
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.
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
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.
1 Doença Resultado
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.
Errar Descrição
(W#16#...)
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
Errar Descrição
(W#16#...)
8132 O bloco de dados é muito curto e não é um bloco de dados Array (segundo
acesso).
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
*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
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.
DENTRO
DB_ANY Variante que contém o número do bloco de dados
1 Doença 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.
Errar Descrição
(W#16#...)
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
Errar Descrição
(W#16#...)
*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)
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.
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.
Nome do rótulo Identificador de rótulo Identificador para instruções de salto e o destino de salto correspondente
rótulo do programa
https://support.industry.siemens.com/cs/mdm/107623221?c=59852195723&dl=en&lc=pt-BR 1/1
Machine Translated by Google
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.
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
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.
==, <>, <, <=, >. >= 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
1 A entrada K e as entradas de comparação (==, <>, <, <=, >, >=) devem ser do mesmo tipo de dados.
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.
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
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".
• 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
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.
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:
2. Edite o FC:
ÿ Adicione uma instrução RET, incluindo uma das seguintes para o parâmetro "Return_Value":
A entrada EN na caixa FC no bloco de código MAIN deve ser verdadeira para iniciar a execução do FC.
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
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)
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)
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
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
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.
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 a execução do ENDIS_PW em um INICIAR, EXECUTAR Ativo: as senhas não são permitidas de
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
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
Veja também
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
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.
Configure o valor para o tempo máximo do ciclo de varredura na configuração do dispositivo para "Tempo do ciclo".
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
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
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
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.
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
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
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.
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
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
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
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
ERRO ErrorStruct Estrutura de dados de erro: você pode renomear a estrutura, mas não a
membros dentro da estrutura.
• 2: FC
• 3: 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 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
1 Desvio
2 Área
4 Área Desvio
• P: 16#82
• M: 16#83
GET_ERROR_ID
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
0 0 Sem erro
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
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.
• 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
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.
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.
Variáveis Descrição
"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.
• 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).
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
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
Declaraçã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.
END_CASE;
mesa 2 Parâmetros
Parâmetro Descrição
"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
• 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.
As instruções CASE podem ser aninhadas. Cada instrução case aninhada deve ter um END_CASE associado
declaração.
CASO "var1" DE
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
CASO "var3" DE
SENÃO
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
Declaraçã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.
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.
• 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.
• 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
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
Declaração WHILE-DO
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.
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.
• 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
Instrução REPEAT-UNTIL
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
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
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
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; ;
• 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.
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
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
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.
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
Declaração de SAÍDA
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.
• 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.
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
Declaração de DEVOLUÇÃO
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).
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…
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
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".
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
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
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
1 Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
DENTRO
ENCO: Byte, Word, DWord ENCO: padrão de bits para codificar
DECO: UInt DECO: Valor a decodificar
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.
• 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
• 5 bits (valores 0-31) IN são usados para definir a posição de 1 bit em um DWord OUT
Tabela 4 Exemplos
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…
1
Para LAD e FBD: Clique no botão "???" e selecione um tipo de dados no menu suspenso.
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.
[...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
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".
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.
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".
Parâmetro 1
Tipo de dados Descrição
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…
https://support.industry.siemens.com/cs/mdm/107623221?c=71216406539&dl=en&lc=pt-BR 3/3
Machine Translated by Google
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:
1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.
DENTRO
Inteiros Padrão de bits para mudar
• 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).
DENTRO 1110 0010 1010 1101 Valor OUT antes do primeiro turno: 1110 0010 1010 1101
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
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
1 Para LAD e FBD: Clique no botão "???" e selecione os tipos de dados no menu suspenso.
DENTRO
Inteiros Padrão de bits para girar
• 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.
DENTRO 0100 0000 0000 0001 Valor OUT antes da primeira rotação: 0100 0000 0000 0001
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