CLP IEC61131-3 - Apresentação

CLP IEC61131-3 - Apresentação

(Parte 4 de 5)

LD weigh_command JMPC WEIGH_NOW

STENO(* No weighing, 0 to "ENO" *) RET WEIGH_NOW: LD gross_weight

BCD_TO_INT SUB tare_weight

INT_TO_BCD(* Return evaluated weight *) ST WEIGH

The body of function WEIGH in the ST language is:

IF weigh_command THEN WEIGH := INT_TO_BCD (BCD_TO_INT(gross_weight) - tare_weight); END_IF ;

+-------------------------+
| WEIGH |
BOOL---|ENENO|---BOOL
BOOL---|weigh_command|---WORD
WORD---|gross_weight|
INT----|tare_weight|
+-------------------------+

An equivalent graphical declaration of function WEIGH is:

|+--------+ +--------+ |
|| BCD_ | +-------+ | INT_ | |
| weigh_command | TO_INT | | SUB | | TO_BCD |ENO |

The function body in the LD language is:

|| | | | | | |
| gross_weight--||--| |---| |--WEIGH |
|+--------+ | | +--------+ |
| tare_weight---------------|| |
|+-------+ |
+--------+ +--------+
| BCD_ | +-------+ | INT_ |
| TO_INT | | SUB | | TO_BCD |
gross_weight----||---| |---| |--WEIGH
+--------+ | | +--------+
tare_weight------------------||

Funções Derivadas – Exemplo IsaGraf Representação gráfica

Lista de Instruções Texto Estruturado

LD Bruto SUB Tara ST Peso_IL

Peso_ST := Bruto - Tara

Funções Derivadas – Exemplo IsaGraf Ladder

Function Block

Habilita en in1BrutoBruto in2TaraTara eno q Peso_LDPeso_LD

- Concluida

Bruto - IN1

IN2 QTara Peso_FBD

POU Bloco de Função nDeve ser declarado nQuando executado produz um ou mais valores nInstanciação: várias instâncias (identificador + estrutura de dados) podem ser criadas nPossui memória de dados: todas as variáveis internas e de saída são mantidas entre as execuções de um bloco de função nPode ser invocado pelas linguagens textuais nUm bloco de função pode ser usado na declaração de outro bloco de função ou programa (instanciação)

POU Exemplo de bloco de função

IN : BOOL ;(* Default = 0 *)

FUNCTION_BLOCK DEBOUNCE (*** External Interface ***) VAR_INPUT

DB_TIME : TIME := t#10ms ; (* Default = t#10ms *) END_VAR

VAR_OUTPUT OUT : BOOL ;(* Default = 0 *)
ET_OFF : TIME ; (* Default = t#0s *)
VAR DB_ON : TON ;(** Internal Variables **)
DB_OFF : TON ; (** and FB Instances **)
DB_FF : SR ;

(** Function Block Body **)

DB_FF(S1 :=DB_ON.Q, R := DB_OFF.Q) ; OUT := DB_FF.Q ; ET_OFF := DB_OFF.ET ;

+---------------+
| DEBOUNCE |
BOOL---|IN OUT|---BOOL
TIME---|DB_TIME ET_OFF|---TIME
+---------------+

FUNCTION_BLOCK (** External Interface **) (** Function Block Body **)

DB_ON DB_FF
+-----+ +----+
| TON | | SR |
| +---|PT ET| +--|R |
| | +-----+ | +----+
| | |
| | DB_OFF |
| | +-----+ |
| | | TON | |
+--|--O|IN Q|--+
+-----+

IN----+------|IN Q|-----|S1 Q|---OUT DB_TIME--+---|PT ET|--------------ET_OFF END_FUNCTION_BLOCK

Blocos de Função Padrões

+-----+
| SR |
BOOL---|R|
+-----+
+-----+
| RS |
+-----+

Biestáveis BOOL---|S1 Q1|---BOOL BOOL---|S Q1|---BOOL BOOL---|R1 |

+--------+
| R_TRIG |
BOOL---|CLKQ|---BOOL
+--------+
+--------+
| F_TRIG |
BOOL---|CLKQ|---BOOL
+--------+

Detecção de Borda

+-----+
| CTU |
BOOL---|R|
+-----+
+-----+
| CTD |
+-----+
+------+
| CTUD |
BOOL---|R|
BOOL---|LD|
+------+

Contagem BOOL--->CU Q|---BOOL INT---|PV CV|---INT BOOL--->CD Q|---BOOL BOOL---|LD | INT---|PV CV|---INT BOOL--->CU QU|---BOOL BOOL--->CD QD|---BOOL INT---|PV CV|---INT

+-------+
| TON |
BOOL---|INQ|---BOOL
+-------+
+-------+
| TOF |
BOOL---|INQ|---BOOL
+-------+
+-------+
| TP |
BOOL---|INQ|---BOOL
+-------+
+-------+
| RTC |
BOOL---|INQ|---BOOL
+-------+

Temporização TIME---|PT ET|---TIME TIME---|PT ET|---TIME TIME---|PT ET|---TIME DT-----|PDT CDT|-----DT

Comunicação (IEC 61131-5)

Conexão CONNECT Verificação de DispositivosSTATUS, USTATUS Aquisição de DadosREAD, USEND, URCV ControleWRITE, SEND, RCV Alarmes NOTIFY, ALARM

Blocos de Função Derivados

Podem ser criados usando-se nBlocos de função padrões ou derivados nTipos de dados padrões ou derivados nQualquer uma das linguagens: IL, ST, LD, FBD ou SFC nLinguagens adicionais

Exemplo| FWD_MON |
| +---------------+ |
| AUTO_FWD | CMD_MONITOR | |
+--| |---------|AUTO_CMD CMD| |
| AUTO | | FWD_ALRM |
+--| |---------|AUTO_MODE ALRM|-------( )---+
| MAN_FWD | | |
+--| |---------|MAN_CMD | |
| MAN_FWD_CHK | | |
+--| |---------|MAN_CMD_CHK | |
| FWD_FDBK | | |
+--| |---------|FDBK | |
| ACK | | |
+--| |---------|ACK | |
| | | |
| T_FWD_MAX---|T_CMD_MAX | |
| +---------------+ |
| |
| REV_MON |
| +---------------+ |
| AUTO_REV | CMD_MONITOR | |
+--| |---------|AUTO_CMD CMD| |
| AUTO | | REV_ALRM |
+--| |---------|AUTO_MODE ALRM|-------( )---+
| MAN_REV | | |
+--| |---------|MAN_CMD | |
| MAN_REV_CHK | | |
+--| |---------|MAN_CMD_CHK | |
| REV_FDBK | | |
+--| |---------|FDBK | |
| ACK | | |
+--| |---------|ACK | |
| | | |
| T_REV_MAX---|T_CMD_MAX | |
| +---------------+ |
| |
| ACK FWD_REV_ALRM |
+-----| |--------------------------(R)-------+
| |
| FWD_MON.CMD REV_MON.CMD FWD_REV_ALRM |
+-----| |-----------| |------------(S)-------+
| |
| FWD_MON.CMD FWD_REV_ALRM FWD_CMD |
+-----| |-----------|/|-------------( )------+
| |
| REV_MON.CMD FWD_REV_ALRM REV_CMD |
+-----| |-----------|/|-------------( )------+
| |
| FWD_REV_ALRM KLAXON |
+-----| |------+--------------------( )------+
| | |
| FWD_ALRM | |
+-----| |------+ |
| | |
| REV_ALRM | |
+-----| |------+ |
| |
FWD_MON
+---------------+
| CMD_MONITOR |
AUTO_FWD----------|AUTO_CMDCMD|--+
MAN_FWD------|----|MAN_CMD| |
MAN_FWD_CHK--|----|MAN_CMD_CHK| |
FWD_FDBK-----|----|FDBK| |
ACK----------|-+--|ACK| |
T_FWD_MAX----|-|--|T_CMD_MAX| | +---+
| | +---------------+ +--| & |-------------+
| | +--| | |
| | REV_MON | +---+ |
| | +---------------+ | |
| | | CMD_MONITOR | | |
AUTO_REV-----|-|--|AUTO_CMDCMD|--+ |
+-|--|AUTO_MODE ALRM|---------REV_ALRM |
MAN_REV--------|--|MAN_CMD| |
MAN_REV_CHK----|--|MAN_CMD_CHK| |
REV_FDBK-------|--|FDBK| |
+--|ACK | |
T_REV_MAX---------|T_CMD_MAX| |
+---------------+ |
+------------------------------------------------+
| FWD_REV_FF
| +------+
| | SR |
+-----|S1 Q1|--+----------------FWD_REV_ALRM
ACK---|R | |
+------+ | +-----+
+---| >=1 |------KLAXON
FWD_MON.ALRM-------------|---||
REV_MON.ALRM-------------|---||
| +-----+
|
| +---+
+--O| & |--------FWD_CMD
| +---+
|
| +---+
+--O| & |--------REV_CMD
+---+
+----------------------+
| FWD_REV_MON |
BOOL---|AUTOKLAXON|---BOOL
BOOL---|ACKFWD_REV_ALRM|---BOOL
BOOL---|AUTO_FWDFWD_CMD|---BOOL
BOOL---|MAN_FWDFWD_ALRM|---BOOL
BOOL---|MAN_FWD_CHK|
TIME---|T_FWD_MAX|
BOOL---|FWD_FDBK|
BOOL---|AUTO_REVREV_CMD|---BOOL
BOOL---|MAN_REVREV_ALRM|---BOOL
BOOL---|MAN_REV_CHK|
TIME---|T_REV_MAX|
BOOL---|REV_FDBK|

Blocos de Função Derivados AUTO---------+----|AUTO_MODE ALRM|--|-------FWD_ALRM FWD_MON.CMD--------------|---| | REV_MON.CMD------------------| | +----------------------+

POU Programa

É um agrupamento lógico dos elementos necessários à todas as linguagens de programação, para o processamento de sinais desejado nDeve ser declarado nPermite a instanciação somente dentro de um recurso

POU Exemplo de programa

RESOURCE AGV_PROC: SMALL_PC
AGV_1
+--------------------+
| AGV |
%IX1---|SINGLE_PB FWD_MOTOR|---%QX1
%IX2---|DOUBLE_PB REV_MOTOR|---%QX2
%IX3---|LEFT_LS |
%IX4---|RIGHT_LS |
+--------------------+
¦¦
¦+===+===+ (* Main sequence *)
¦|¦START¦|
¦+===+===+
¦¦
¦+--------------------*----------+
|| |
¦+ READY.X & SINGLE_PB + READY.X & DOUBLE_PB
|| |
¦+--+---+ +-+-----+ +---+----+ +-+-----+
¦¦SINGLE+-¦N¦CYCLE¦ ¦DOUBLE_1+--¦N¦CYCLE¦
¦+--+---+ +-+-----+ +---+----+ +-+-----+
|| |
¦*---------+ + DONE.X
¦¦ + DONE.X & DOUBLE_PB ¦
¦¦ +---------------------+
|| |
¦¦ +-----+-----+
¦+ DONE.X & NOT DOUBLE_PB ¦DOUBLE_WAIT¦
¦¦ +-----+-----+
|| |
¦¦ + READY.X
|| |
¦¦ +---+----+ +-+-----+
¦¦ ¦DOUBLE_2+--¦N¦CYCLE¦
¦¦ +---+----+ +-+-----+
|| |
¦¦ + DONE.X
|| |
¦+---------------------+---------+
¦¦
¦+----+-----+
¦¦NON_REPEAT¦
¦+----+-----+
¦¦
¦+NOT(SINGLE_PB OR DOUBLE_PB)
¦¦

Linguagens

Linguagens de Programação n Textuais lIL - Lista de Instruções lST - Texto Estruturado n Gráficas lLD - Ladder lFBD - Diagrama de Blocos de Função nOrganização de Programas lSFC - Funções Gráficas de Seqüenciamento nOutras (dependente do produto) lFlow Chart lC l Etc.

Linguagens

Batch e estruturação geral do programa (Sequencial Function Charts)

Baixo nível Otimização ou pequenas aplicações

Mais flexível Controle lógico e sequencial

Controle lógico e regulatório

Funções Gráficas de Sequenciamento (SFC)

Blocos de Função

Ladder

Lista de Instruções

(Parte 4 de 5)

Comentários