César Cassiolato (cesarcass@smar.com.br), Diretor de Desenvolvimento de Equipamentos de Campo, Engenharia de Produtos e Qualidade, da SMAR Equipamentos Industriais Ltda.
Este artigo mostrará alguns detalhes do que há de mais novo em termos de desenvolvimento de equipamentos com a tecnologia Profibus-PA
Veremos neste artigo o uso desta tecnologia e as possibilidades de tratamento de entradas e saídas discretas em um equipamentos SMAR, o DC303, que é possui entradas e saídas discretas e um bloco funcional flexível que permite o controle lógico e seqüencial. As instalações Profibus-PA podem ser híbridas envolvendo arquiteturas distribuídas e estendendo-se a equipamentos convencionais analógicos e/ou discretos, e até mesmo a outras tecnologias.
O DC303 possui três tipos de blocos funcionais. São eles:
Os dois primeiros, embora executem tarefas avançadas, são conhecidos como blocos funcionais básicos, onde o número de entradas e saídas, assim como os tipos de dados, são pré-definidos de acordo com o padrão Profibus-PA ou ainda, podem ser específicos ao fabricante, mas de acordo com as especificações Profibus-PA.
O Bloco Funcional Flexível (daqui para frente denominado FFB), foi desenvolvido para atender funções mais complexas, tais como, o controle de processos discretos e híbridos, por exemplo, controle em batelada, controle de motores DC e AC, gateways de E/S, lógicas sequenciais, etc, onde o algoritmo, onde o usuário pode definir sua execução de acordo com sua necessidade, dando uma maior flexibilidade às aplicações. O FFB é configurado via linguagem de texto estruturado.
O DC303 permite uma fácil integração entre o Profibus-PA e E/S convencionais. Dispositivos discretos como chaves de pressão, botoeiras, válvulas “on/off”, bombas e esteiras podem ser integradas ao sistema Profibus via barramento PA, usando o DC303. Ele pode estar distribuído ao campo onde se tem os dispositivos discretos convencionais, sem a necessidade de cabeamento entre estes e a sala de controle.
O DC303 permite que entradas e saídas discretas convencionais possam estar disponíveis à fácil configuração de estratégias de controle, usando o conceito de Blocos Funcionais Profibus-PA e tornando o sistema homogêneo de tal forma a fazer com que estes dispositivos possam parecer como simples diapositivos em um barramento Profibus-PA. Possui os seguintes blocos funcionais: DI, DO, FFB, etc.
Malhas de controle são implementadas independentes se são dispositivos de E/S convencionais ou Profibus-PA. Apenas uma linguagem de programação é necessária para isto. Veremos a seguir o seu FFB.
O DC303 foi projetado para executar lógicas. Neste caso os blocos de saídas discretas DOs não atuarão fisicamente no hardware. O bloco transdutor possui um bloco funcional flexivel built-in (FFB) que pode receber até 8 entradas discretas vindas da rede Profibus via parâmetros SP_D dos blocos DOs. No bloco transdutor estes parâmetros são denominados de IN_D1 a IN_D8. O bloco transdutor também pode disponibilizar 8 saídas discretas à rede Profibus, através dos parâmetros OUT_D1 a OUT_D8 que são disponibilizados via blocos de entradas discretas DIs (DI1 a DI8). Pode receber até 16 entradas discretas via hardware e também disponibilizar 8 saídas discretas de hardware. Nesta situação os blocos DOs e DIs devem estar em automático(mode block). E ainda, automaticamente ao se habilitar o bloco FFB no bloco transdutor(via parâmetro TRD_FFB_ENABLED), os blocos DI9 a DI16 são colocados em “Out of Service”.
Quando o bloco FFB estiver desabilitado, o DC303 funciona com 16 blocos DIs e 8 blocos DOs, lendo suas 16 entradas discretas de hardware e atuando em suas 8 saídas de hardware, respectivamente.
A indicação do estado (status) das entradas depende do sub-sistema de E/S.
O Bloco FFB provê lógicas como AND, OR, XOR e NOT e funções como: TimerOn-Delay, Timer Off-Delay, Timer Pulse, Pulse Counter Down (CTD), Pulse Counter Up(CTU), Flip-Flop RS e Flip-Flop SR. As lógicas são feitas utilizando-se as entradas discretas (IN_Dx) vindas da rede Profibus via DOs(SP_D), as saídas disponíveis a rede Profibus (OUT_Dx via DIs), as entradas discretas de hardware, as saídas discretas de hardware , valores discretos de segurança em condições de falha (FSx) e variáveis discretas auxiliares (AUX’s).
O status das saídas OUT_Dx será de acordo com:
Na execução da lógica, um status maior ou igual a 0x80 é considerado “verdadeiro” (true) e menor que 0x80, é considerado “falso” (false).
As mudanças nas Linhas Lógicas e seus parâmetros de configuração dependem da seleção de CHANGE_OPTION.
Figura 3 - Esquemático
Idx |
Parâmetro |
Tipo Dado (comp) |
Faixa Válida/ |
Valor Default |
Unid. |
Descrição |
---|---|---|---|---|---|---|
16 |
TRD_FFB_ENABLE |
Unsigned8 |
0- Disabled ; 1- Enabled |
0- Disabled |
Permite a execução do FFB no TRD Block. |
|
17 |
IN_D1 |
DS-34 |
Entrada discreta nº 1 utilizada pelo cálculo do bloco.Vem do DO_1(SP_D) |
|||
18 |
IN_D2 |
DS-34 |
Entrada discreta nº 2 utilizada pelo cálculo do bloco.Vem do DO_2 (SP_D) |
|||
19 |
IN_D3 |
DS-34 |
Entrada discreta nº 3 utilizada pelo cálculo do bloco.Vem do DO_3 (SP_D) |
|||
20 |
IN_D4 |
DS-34 |
Entrada discreta nº 4 utilizada pelo cálculo do bloco.Vem do DO_4 (SP_D) |
|||
21 |
IN_D5 |
DS-34 |
Entrada discreta nº 5 utilizada pelo cálculo do bloco.Vem do DO_5 (SP_D) |
|||
22 |
IN_D6 |
DS-34 |
Entrada discreta nº 6 utilizada pelo cálculo do bloco.Vem do DO_6 (SP_D) |
|||
23 |
IN_D7 |
DS-34 |
Entrada discreta nº 7 utilizada pelo cálculo do bloco.Vem do DO_7 (SP_D) |
|||
24 |
IN_D8 |
DS-34 |
Entrada discreta nº 8 utilizada pelo cálculo do bloco.Vem do DO_28(SP_D) |
|||
25 |
FSTATE_VAL_D1 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 1. |
||
26 |
FSTATE_VAL_D2 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 2. |
||
27 |
FSTATE_VAL_D3 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 3. |
||
28 |
FSTATE_VAL_D4 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 4. |
||
29 |
FSTATE_VAL_D5 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 5. |
||
30 |
FSTATE_VAL_D6 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 6. |
||
31 |
FSTATE_VAL_D7 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 7. |
||
32 |
FSTATE_VAL_D8 |
Unsigned8 |
0 |
Valor discreto utilizado como valor de segurança na condição de falha para a saída de hardware nº 8. |
||
33 |
OUT_D1 |
DS-34 |
Variável discreta da saída 1 calculada pelo bloco quando em modo AUTO e copiada para o DI_1. |
|||
34 |
OUT_D2 |
DS-34 |
Variável discreta da saída 2 calculada pelo bloco quando em modo AUTO e copiada para o DI_2. |
|||
35 |
OUT_D3 |
DS-34 |
Variável discreta da saída 3 calculada pelo bloco quando em modo AUTO e copiada para o DI_3. |
|||
36 |
OUT_D4 |
DS-34 |
Variável discreta da saída 4 calculada pelo bloco quando em modo AUTO e copiada para o DI_4. |
|||
37 |
OUT_D5 |
DS-34 |
Variável discreta da saída 5 calculada pelo bloco quando em modo AUTO e copiada para o DI_5. |
|||
38 |
OUT_D6 |
DS-34 |
Variável discreta da saída 6 calculada pelo bloco quando em modo AUTO e copiada para o DI_6. |
|||
39 |
OUT_D7 |
DS-34 |
Variável discreta da saída 7 calculada pelo bloco quando em modo AUTO e copiada para o DI_7. |
|||
40 |
OUT_D8 |
DS-34 |
Variável discreta da saída 8 calculada pelo bloco quando em modo AUTO e copiada para o DI_8. |
|||
41 |
AUX_01_16 |
Bitstring(2) |
Variável Auxiliar bit enumerated 01_16. |
|||
42 |
AUX_17_32 |
Bitstring(2) |
Variável Auxiliar bit enumerated 17_32. |
|||
43 |
AUX_33_48 |
Bitstring(2) |
Variável Auxiliar bit enumerated 33_48. |
|||
44 |
AUX_49_64 |
Bitstring(2) |
Variável Auxiliar bit enumerated 49_64. |
|||
45 |
AUX_65_80 |
Bitstring(2) |
Variável Auxiliar bit enumerated 65_80. |
|||
46 |
AUX_81_96 |
Bitstring(2) |
Variável Auxiliar bit enumerated 81_96. |
|||
47 |
TON_PST |
16 Floats |
Positive |
0 |
Seg |
Vetor de 16 elementos em ponto flutuante onde o usuário pode setar em segundos o valor PST para cada Timer ON Delay. |
48 |
TON_CTA |
16 Floats |
0 |
seg |
Vetor de 16 elementos em ponto flutuante onde o usuário pode ver em segundos o valor decorrido para cada Timer ON Delay. |
|
49 |
TON_OUT |
Bitstring(2) |
Variável que indica os estados dos timers ativos. |
|||
50 |
TOFF_PST |
16 Floats |
Positive |
0 |
Seg |
Vetor de 16 elementos em ponto flutuante onde o usuário pode setar em segundos o valor PST para cada Timer OFF Delay. |
51 |
TOFF_CTA |
16 Floats |
0 |
seg |
Vetor de 16 elementos em ponto flutuante onde o usuário pode ver em segundos o valor decorrido para cada Timer OFF Delay. |
|
52 |
TOFF_OUT |
Bitstring(2) |
Variável que indica os estados dos timers ativos. |
|||
53 |
TP_PST |
16 Floats |
Positive |
0 |
Seg |
Vetor de 16 elementos em ponto flutuante onde o usuário pode setar em segundos o valor PST para cada Timer PULSE. |
54 |
TP_CTA |
16 Floats |
0 |
Seg |
Vetor de 16 elementos em ponto flutuante onde o usuário pode ver em segundos o valor decorrido para cada Timer PULSE. |
|
55 |
TP_OUT |
Bitstring(2) |
Variável que indica os estados dos timers ativos. |
|||
56 |
CTU_PST |
16 Unsigned32 |
Positive |
0 |
Nenhuma |
Vetor de 16 elementos unsigned integer32 onde pode-se configurar o valor a ser contado para cada contador. O contador irá incrementar de zero ao valor PST. |
57 |
CTU_CTA |
16 Unsigned32 |
0 |
Nenhuma |
Vetor de 16 elementos unsigned integer32 onde pode-se acompanhar a contagem parcial para cada contador. |
|
58 |
CTU_OUT |
Bitstring(2) |
Variável que indica os estados dos contadores ativos. |
|||
59 |
CTD_PST |
16 Unsigned32 |
Positive |
0 |
Nenhuma |
Vetor de 16 elementos unsigned integer32 onde pode-se configurar o valor a ser contado para cada contador. O contador irá decrementar do valor PST até zero. |
60 |
CTD_CTA |
16 Unsigned32 |
0 |
Nenhuma |
Vetor de 16 elementos unsigned integer32 onde pode-se acompanhar a contagem parcial para cada contador. |
|
61 |
CTD_OUT |
Bitstring(2) |
Variável que indica os estados dos timers ativos. |
|||
62 |
RS_OUT |
Bitstring(2) |
Variável que indica os estados dos Flip-Flops RS ativos. |
|||
63 |
SR_OUT |
Bitstring(2) |
Variável que indica os estados dos Flip-Flops SR ativos. |
|||
64 |
LOGIC_01 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 1. |
|
65 |
LOGIC_02 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 2. |
|
66 |
LOGIC_03 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 3. |
|
67 |
LOGIC_04 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 4. |
|
68 |
LOGIC_05 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 5. |
|
69 |
LOGIC_06 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 6. |
|
70 |
LOGIC_07 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 7. |
|
71 |
LOGIC_08 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 8. |
|
72 |
LOGIC_09 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 9. |
|
73 |
LOGIC_10 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 10. |
|
74 |
LOGIC_11 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 11. |
|
75 |
LOGIC_12 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 12. |
|
76 |
LOGIC_13 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 13. |
|
77 |
LOGIC_14 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 14. |
|
78 |
LOGIC_15 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 15. |
|
79 |
LOGIC_16 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 16. |
|
80 |
LOGIC_17 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 17. |
|
81 |
LOGIC_18 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 18. |
|
82 |
LOGIC_19 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 19. |
|
83 |
LOGIC_20 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 20. |
|
84 |
LOGIC_21 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 21. |
|
85 |
LOGIC_22 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 22. |
|
86 |
LOGIC_23 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 23. |
|
87 |
LOGIC_24 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 24. |
|
88 |
LOGIC_25 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 25. |
|
89 |
LOGIC_26 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 26. |
|
90 |
LOGIC_27 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 27. |
|
91 |
LOGIC_28 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 28. |
|
92 |
LOGIC_29 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 29. |
|
93 |
LOGIC_30 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 30. |
|
94 |
LOGIC_31 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 31. |
|
95 |
LOGIC_32 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 32. |
|
96 |
LOGIC_33 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 33. |
|
97 |
LOGIC_34 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 34. |
|
98 |
LOGIC_35 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 35. |
|
99 |
LOGIC_36 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 36. |
|
100 |
LOGIC_37 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 37. |
|
101 |
LOGIC_38 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 38. |
|
102 |
LOGIC_39 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 39. |
|
103 |
LOGIC_40 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 40. |
|
104 |
LOGIC_41 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 41. |
|
105 |
LOGIC_42 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 42. |
|
106 |
LOGIC_43 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 43. |
|
107 |
LOGIC_44 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 44. |
|
108 |
LOGIC_45 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 45. |
|
109 |
LOGIC_46 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 46. |
|
110 |
LOGIC_47 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 47. |
|
111 |
LOGIC_48 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 48. |
|
112 |
LOGIC_49 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 49. |
|
113 |
LOGIC_50 |
VisibleString(24) |
Espaços |
Na |
Linha Lógica de comando 50. |
|
114 |
LOGIC_CHECK |
Unsigned8 |
0 - Enable., 1 - Checked. 2- Changed but not checked yet. |
1 - Checked. |
Na |
Permite a verificação das linhas lógicas. |
115 |
ERROR_LINE |
Unsigned8 |
0-50 |
1 |
Na |
Indica a linha onde se tem erro. Valor igual a zero indica que não existe linha com erro. |
116 |
ERROR_CODE |
Unsigned8 |
0 - Logic Ok. 1 - Exceed String Length or string not valid. 2 - Non valid operand. 3 - No implemented logic or missing ';' 4 - Missing parentheses or argument not valid. 5 - Non valid resource. 6 - Argument not valid. 7 - Function not valid 8 - Non available resource. 9 - Non valid attribution. 10 - First Argument not valid. 11- Second Argument not valid. |
3 - No implemented logic or missing ';' |
Na |
Indica o código de erro. |
117 |
CHANGE_OPTION |
Unsigned8 |
0 - Logic parameter changes are only allowed in Out of Service. 1 - Always accept Logic parameter changes. |
0 - Logic parameter changes are only allowed in Out of Service. |
Na |
Habilita mudanças nas linhas de lógicas independentes do modo de operação do bloco. |
A tabela, a seguir, descreve as Operações Lógicas e os Comandos de Linha e seus Símbolos Correspondentes usados nas linhas lógicas:
OperaçãoLógica e Comando de Linha |
Símbolo- descrição |
---|---|
E |
& |
OU |
| |
OUExclusivo |
^ |
Inversor |
! |
Igual |
= |
(arg1,arg2) |
Argumentosde função |
; |
Finalizador de linha |
A lógica Inversora (!) trabalha somente com variáveis simples. Exemplo: OUT1=!IN1;
Note que não é permitido ter, por exemplo, OUT1=!TP01(IN1);. Para se trabalhar desta forma, deve-se fazer: A01= TP01(IN1);. -> OUT1=!A01;
A execução da linha lógica é sempre executada linha por linha e da esquerda para a direita. Não são permitidos espaços entre caracteres. Não é permitido linhas vazias entre linhas com lógicas implementadas, isto é, a implementação deve ser em seqüência.
Depoisde escrever a lógica dentro dos parâmetros LOGIC_XX (XX:01 -> XX:50), o usuário precisa selecionar a opção “Enable” no parâmetro LOGIC_CHECK para verificar se há erros de sintaxe. Quandose utiliza o processo de download, é primordial configurar, primeiramente, os parâmetros LOGIC_XX (XX:01 -> XX:50) e depois o parâmetro LOGIC_CKECK. Esta seqüência é fundamental para executar a verificação. A tabela abaixo mostra o mnemônico para cada parâmetro de bloco usado nas linhas lógicas. O mnemônico deve estar em letras maiúsculas:
Parâmetro |
Mnemônico |
---|---|
HW_IN.Value1 |
I01 |
HW_IN.Value2 |
I02 |
HW_IN.Value3 |
I03 |
HW_IN.Value4 |
I04 |
HW_IN.Value5 |
I05 |
HW_IN.Value6 |
I06 |
HW_IN.Value7 |
I07 |
HW_IN.Value8 |
I08 |
HW_IN.Value9 |
I09 |
HW_IN.Value10 |
I10 |
HW_IN.Value11 |
I11 |
HW_IN.Value12 |
I12 |
HW_IN.Value13 |
I13 |
HW_IN.Value14 |
I14 |
HW_IN.Value15 |
I15 |
HW_IN.Value16 |
I16 |
HW_IN.Status |
SI |
HW_OUT.Status |
SO |
HW_OUT.Value1 |
O1 |
HW_OUT.Value2 |
O2 |
HW_OUT.Value3 |
O3 |
HW_OUT.Value4 |
O4 |
HW_OUT.Value5 |
O5 |
HW_OUT.Value6 |
O6 |
HW_OUT.Value7 |
O7 |
HW_OUT.Value8 |
O8 |
IN_D1.Status |
IN1S |
IN_D2.Status |
IN2S |
IN_D3.Status |
IN3S |
IN_D4.Status |
IN4S |
IN_D5.Status |
IN5S |
IN_D6.Status |
IN6S |
IN_D7.Status |
IN7S |
IN_D8.Status |
IN8S |
IN_D1.Value |
IN1 |
IN_D2.Value |
IN2 |
IN_D3.Value |
IN3 |
IN_D4.Value |
IN4 |
IN_D5.Value |
IN5 |
IN_D6.Value |
IN6 |
IN_D7.Value |
IN7 |
IN_D8.Value |
IN8 |
OUT_D1.Status |
SOUT1 |
OUT_D2.Status |
SOUT2 |
OUT_D3.Status |
SOUT3 |
OUT_D4.Status |
SOUT4 |
OUT_D5.Status |
SOUT5 |
OUT_D6.Status |
SOUT6 |
OUT_D7.Status |
SOUT7 |
OUT_D8.Status |
SOUT8 |
OUT_D1.Value |
OUT1 |
OUT_D2.Value |
OUT2 |
OUT_D3.Value |
OUT3 |
OUT_D4.Value |
OUT4 |
OUT_D5.Value |
OUT5 |
OUT_D6.Value |
OUT6 |
OUT_D7.Value |
OUT7 |
OUT_D8.Value |
OUT8 |
FSTATE_VAL_D1 |
FS1 |
FSTATE_VAL_D2 |
FS2 |
FSTATE_VAL_D3 |
FS3 |
FSTATE_VAL_D4 |
FS4 |
FSTATE_VAL_D5 |
FS5 |
FSTATE_VAL_D6 |
FS6 |
FSTATE_VAL_D7 |
FS7 |
FSTATE_VAL_D8 |
FS8 |
AUX_01_16 |
A01-A16 |
AUX_17_32 |
A17-A32 |
AUX_33_48 |
A33-A48 |
AUX_49_64 |
A49-A64 |
AUX_65_80 |
A65-A80 |
AUX_81_96 |
A81-A96 |
TON |
TON01-TON16 |
TOFF |
TOF01-TOF16 |
TP |
TP01-TP16 |
CTU |
CTU01-CTU16 |
CTD |
CTD01-CTD16 |
RS |
RS01-RS16 |
SR |
SR01-SR16 |
Para cada tipo de função há 16 recursos disponíveis e o usuário pode usar somente um recurso de cada vez. O usuário poderá atribuir o resultado de uma função aos bits discretos auxiliares.
Esta função gera em sua saída um pulso de largura de tempo fixa a cada transição de falso para verdadeiro (borda de subida) na entrada. A largura de pulso pode ser programada no parâmetro TP_PST, em segundos. Transições na entrada serão ignoradas, enquanto a saída estiver ativa. O timer corrente pode ser monitorado no parâmetro TP_CTA.
A sintaxe para a função Timer Pulse é: TPxx(arg)
Onde, xx é o recurso de 01 a 16 e arg é o argumento da função e deve ser uma variável simples. Exemplos:
O1=TP01(IN1);
OUT1= TP01(A05);
OUT3=TP08(FS1);
Os exemplos seguintes são permitidos na linha lógica:
Nesta função a saída vai para verdadeiro após um período de tempo em segundos configurável no parâmetro TP_PST, após a entrada ir para verdadeiro. Se a entrada for para falso antes do tempo PST, a saída permanecerá em falso. O parâmetro CTA mostra o tempo decorrente até o valor PST.
A sintaxe para a função Timer On-Delayé: TONxx(arg)
Onde, xx é o recurso de 01 a 16 e arg é o argumento da função e deve ser uma variável simples. Exemplos:
O1=TON01(IN1)&SI;
OUT1= TON01(A05);
OUT3=TON08(FS1);
Os seguintes exemplos não são permitidos na linha lógica:
R(arg1) |
S(arg2) |
OUT |
---|---|---|
0 |
0 |
Últimoestado |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
S(arg1) |
R(arg2) |
OUT |
---|---|---|
0 |
0 |
ÚltimoEstado |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
FS1 |
A01 |
A02 |
O1 |
---|---|---|---|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |