DC303 - Entradas e Saídas Discretas em sistemas Profibus com controle híbridos e aplicações de bateladas
|
Introdução
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.
Blocos Funcionais no DC303
O DC303 possui três tipos de blocos funcionais. São eles:
- • Bloco Funcional de Entrada Discreta (16 DIs)
- • Bloco Funcional de Saída Discreta (8 DOs)
- • Bloco Funcional Lógicos (Lógica booleana, Timers on, off, pulse, counters up/down, flip/flop rs/sr, etc)Este bloco faz parte do bloco transdutor.
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.
DC303, o primeiro equipamento Profibus-PA a ter um Flexible Function Block

Figura 1 - DC303, Entradas e Saídas Remotas Profibus-PA
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.
Figura 2 – Aplicação genérica com entradas e saídas discretas e controle de processos
Execução de Lógicas no DC303
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).
Status
O status das saídas OUT_Dx será de acordo com:
- • Falha de entrada – ruim: Equipamento em falha (Input failure – Bad: Device Failure)
- • Partida– ruim: equipamento em falha (Power up – Bad: Device Failure)
Na execução da lógica, um status maior ou igual a 0x80 é considerado “verdadeiro” (true) e menor que 0x80, é considerado “falso” (false).
Modos Suportados
Bloco Transdutor: O/S e AUTO.
As mudanças nas Linhas Lógicas e seus parâmetros de configuração dependem da seleção de CHANGE_OPTION.
Esquemático
Figura 3 - Esquemático
Parâmetros
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. |
Tabela 1 – Parâmetros do Bloco Transdutor – Execuçao de lógicas
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 |
Funções
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.
TP TIMERPULSE
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.
Figura 4 - FunçãoTimer Pulse – diagramas de tempo
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:
- •
O1=TP01(IN1&IN2);: note que o argumento é o resultado de uma operação e isto não é permitido.
- •
O1=TP10(!IN1);: note que o argumento é o resultado de função NOT e isto não é permitido.
- •
O1=TP10(CTD01(IN1,IN2));: note que o argumento é o resultado de uma função e isto não é permitido.
TON TIMER ON-DELAY
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.
Figura 5 - Função Timer On-Delay– diagramas de tempo
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:
- •
O1=TON01(IN1&IN2);: note que o argumento é o resultado de uma operação e isto não é permitido.
- •
O1=TON10(!IN1);: note que o argumento é o resultado de uma função NOT e isto não é permitido.
- • O1=TON10(CTD01(IN1,IN2));: note que o argumento é o resultado de uma função e isto não é permitido.
TOF TIMER OFF-DELAY
Figura 6 - Função Timer OFF-Delay – Diagramas de Tempo
- • O1=TOF01(IN1&IN2);: note que o argumento é o resultado de uma operação e isto não é permitido.
- • O1=TOF10(!IN1);: note que o argumento é o resultado de uma função e isto não é permitido.
- • O1=TOF10(CTD01(IN1,IN2));: note que o argumento é o resultado de uma função e isto não é permitido.
CTD PULSE COUNTER DOWN
- •
O1=CTD01(IN1&IN2,IN3);: note que o argumento é o resultado de uma operação e isto não é permitido.
- •
O1=CTD10(!IN1,IN3);: note que o argumento é o resultado de uma função e isto não é permitido.
- • O1=CTD10(TP01(IN1),IN2);: note que o argumento é o resultado de uma função e isto não é permitido.
CTU PULSE COUNTER UP
- •
O1=CTU01(IN1&IN2,IN3);: note que o argumento é o resultado de uma operação e isto não é permitido.
- •
O1=CTU10(!IN1,IN3);: note que o argumento é o resultado de uma função e isto não é permitido.
- • O1=CTU10(TP01(IN1),IN2);: note que o argumento é o resultado de uma função e isto não é permitido.
FLIP-FLOP RS
R(arg1) |
S(arg2) |
OUT |
---|---|---|
0 |
0 |
Últimoestado |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
- •
O1=RS01(IN1&IN2,IN3);: note que o argumento é o resultado de uma operação e isto não é permitido.
- •
O1=RS10(!IN1,IN3);: note que o argumento é o resultado de uma função e isto não é permitido.
- • O1=RS10(TP01(IN1),IN2);: observe que o argumento é o resultado de uma função e isto não é permitido.
FLIP-FLOP SR
S(arg1) |
R(arg2) |
OUT |
---|---|---|
0 |
0 |
ÚltimoEstado |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
- •
O1=SR01(IN1&IN2,IN3);: o argumento é o resultado de uma operação e isto não é permitido.
- •
O1=SR10(!IN1,IN3);: o argumento é o resultado de uma função NOT e isto não é permitido.
- • O1=SR10(TP01(IN1),IN2);: o argumento é o resultado de uma função e isto não é permitido.
Códigos de Erros
Exemplos de aplicações

- • A esteira será ligada utilizando a saída 01 de hardware (O1);
- • A válvula de enchimento será ligada utilizando a saída 02 de hardware (O2);
- • sensor de garrafa será conectado a entrada de 01 de hardware (I01);
- • sensor de nível será conectado a entrada de 02 de hardware (I02);
- • A alimentação do sistema será a entrada de 03 de hardware (I03);


Processo:
- • Nível da pedra fosfática (LSL desativado);
- • Pressão do Óleo (PSL ligado);
- • Esteira transportadora nº 2 em movimento (M3 ligado);
- • Caçamba na posição inicial (C4 ligado);
- • Acionando-se o botão de partida, a comporta abre-se, dando início ao carregamento da caçamba.
- • Uma vez atingido o peso desejado, a comporta fecha. Decorridos 5 segundos a caçamba efetua um giro de 180º , descarregando o produto na esteira transportadora número 2.
- • Esta nova posição será detectada por C2 e após 5 segundos, a caçamba retornará à posição inicial e isto será detectado pelo C4.
- • Depois da caçamba retornar para a posição inicial, ter-se-á um novo ciclo de pesagem.
- • A sequência de operação deve ser interrompida se qualquer um dos pré-requisitos não for satisfeito.
- • A comporta silo é acionada por um pistão hidráulico.
- • LSL será conectado à entrada do hardware 01 (I01);
- • LSH será conectado à entrada do hardware 02 (I02);
- • PSL será conectado à entrada do hardware 03 (I03);
- • C2 será conectado à entrada do hardware 04 (I04);
- • C4 será conectado à entrada do hardware 05 (I05);
- • Alimentação será conectada à entrada do hardware 06 (I06);
- • M3 será conectado à entrada do hardware 07 (I07);
- • M será conectado à saída do hardware 01 (O1);
- • A Comport será ativada pela saída do hardware 02 (O2);
- • M1 será ativado pela saída do hardware 03 (O3);
- • TON_PST recurso [01] = 5.0s.
- • LOGIC_01 A01=!I01&I03&I07&I05;
- • LOGIC_02 A02=I06&RS01(I02,I01);
- • LOGIC_03 O3=A02&I03;
- • LOGIC_04 A03=I03&I07;
- • LOGIC_05 O2=I06&A03&!I04;
- • LOGIC_06 O1=TON01(I04)&!I05&A03;
- • A01: recebe a lógica entre os status das entradas discretas 1 e 2, como esta: A01=IN1S&IN2S; quando o status é ruim, uma destas entradas, então A01=false(0), de outra forma, A01=true (1);
- • FS1: é o valor de segurança de falha para O1;
- • A02: é o bit que contém a lógica para O1;
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 |
Configurando ciclicamente o DC303
- • Get_Cfg: carrega a configuração dos escravos no mestre e verifica a configuração da rede;
- • Set_Prm: escreve nos parâmetros dos escravos e executa os serviços de parametrização da rede;
- • Set_Cfg: configura os escravos de acordo com as entradas e saídas;
- • Get_Cfg: um outro comando, onde o mestre verifica a configuração dos escravos.
- • Copie o arquivo gsd do DC303 para o diretório de pesquisa do configurador PROFIBUS, normalmente chamado de GSD;
- • Copie o arquivo bitmap do DC303 para o diretório de pesquisa do configurador PROFIBUS, normalmente chamado de BMP;
- • Após escolher o mestre, defina a taxa de comunicação. Não esqueça que os couplers podem ter as seguintes taxas de comunicação: 45.45 kbits/s (Siemens), 93.75 kbits/s (P+F) e 12 Mbits/s (P+F, SK3). O link device IM157 pode ter até 12 Mbits/s;
- • Acrescente o DC303 e especifique o seu endereço no barramento;
- • Escolha a configuração cíclica via parametrização com o arquivo gsd, que depende da aplicação, conforme visto anteriormente. Para cada bloco DO e DI, o DC303 fornece ao mestre o valor da variável discreta e mais 1 byte de status que traz a informação da qualidade deste valor discreto.
- • No bloco DO e DI, pode-se escolher as seguintes opções cíclicas abaixo, sendo que no caso do Bloco DO, somente uma delas é possível por bloco.
- • Permite ativar a condição de watchdog, que faz o equipamento ir para uma condição de falha segura ao detectar uma perda de comunicação entre o equipamento escravo e o mestre.
Conclusão
Referências:
- • Manuais SMAR Profibus-PA;
- • Manuais de Operação do DC303;
- • www.smar.com.br
- • CASSIOLATO, César, O uso do Flexible Function Block em sistemas de controle híbridos e aplicações de bateladas, Revista Controle & Instrumentação, Edição nº 89 , 2004
Data de publicação: 2012-02-07 11:10:47