|
Previous Top Next |
· | No início, o programa deve apresentar, após a cláusula obrigatória clp, um nome ou denominação, o qual poderá descrever, de modo sintético, mas significativo, do que se trata o controle. E o fim do programa-fonte é sinalizado com a cláusula fim.
|
|
· | Com a cláusula var torna-se possível (mas não obrigatório) a associação de nomes significativos a variáveis do programa, os quais podem ser referenciados posteriormente, no corpo da lógica do programa, tornando mais clara sua compreensão.
|
|
· | A cláusula rede segmenta o programa em partes, onde cada parte inicializa a utilização da pilha (stack), tornando sua gerência mais racional, pois se garante que a mesma não crescerá ilimitadamente durante o funcionamento do programa. Além disso, quando acrescidos comentários esclarecedores da função de cada segmento, o programa de controle fica mais bem documentarizado, facilitando sua compreensão e manutenção.
|
|
· | A sintaxe da LCE é similar à das linguagens de programação de uso geral, como C, C++, Pascal, Basic, mas é infinitamente menor e mais simples que estas, aproximando-se de comandos imperativos em linguagem natural (em português, inglês, ou bilíngüe, indiferentemente) e do Texto Estruturado (Structured Text - ST) o que minimiza em muito a curva de aprendizagem da LCE, mesmo para os leigos em programação, pois ela oculta do usuário a complexidade inerente às linguagens de controle baseadas em listas de instruções.
|
|
· | Os modos alternativos de programação de PLCs, o desenho direto do diagrama ladder ou do diagrama de blocos de função, são apropriados, em programas de menor porte, para engenheiros e técnicos eletricistas ou eletrônicos, respectivamente, os quais detêm os conhecimentos especializados requeridos.
|
|
· | Ressalte-se que em programas de maior porte tal técnica, mesmo para os especialistas da área, sofre no aspecto da documentarização do controle implementado, que constitui um extenso trabalho suplementar a ser feito, decorrente da ausência de significado e semântica textual do programa obtido, características naturalmente inerentes às linguagens de alto nível, onde o próprio texto do programa escrito compõe sua melhor documentarização.
|
|
· | Para fins da visualização da simulação, a partir da Lista de Instruções, é gerado automaticamente o diagrama ladder correspondente, o qual funcionará como se percorrido por ciclos de varredura (scan cycles) reais, reiteradamente lendo os pontos de entrada virtuais e atualizando as variáveis internas correspondentes (simulação da memória-imagem do processo de E/S (I/O)), processando as instruções do início ao fim do programa de controle, ou de acordo com a lógica de desvios utilizada, atendendo, se habilitadas, as ocorrências de eventos de interrupções virtuais, e, ao final, colocando os resultados nos pontos de saída virtuais. Obs.: a forma de atualização das entradas e atuação das saídas pode ser alterada pelo item de menu I/O.
|
|
· | Tal ciclo é repetido indefinidamente, até que o Simulador seja posto no Modo Stop.
|
quando (cond) temporiza idVar id tempo; mais_coman |
|
|
quando_não (cond) temporiza idVar id tempo; mais_coman |
|
|
quando (cond) temporiza_acumula idVar id tempo; mais_coman |
|
|
quando_não (cond) temporiza_acumula idVar id tempo; mais_coman |
|
|
conta (cond) reset_quando (cond) em idVar referencia id;
|
mais_coman |
|
|
conta_decrescente (cond) quando (cond) faz idVar receber id;
|
mais_coman |
|
conta_crescente (cond) conta_decrescente (cond)
|
reset_quando (cond) em idVar referencia id; mais_coman |
|
|
label id: mais_coman |
|
|
seqüência idVar circuito fim_cto_seq rede id se (cond) { mais_ação
|
transfere_seqüência id; } else_seq mais_transfere rede id fim_seq; |
|
|
IL comando_il carriage_return new_line mais_coman |
|
|
|
|
F | -> tipo_ação idVar | id_cmp tipop Rel id | não tipo_ação idVar | (cond) | sem_erro | overflow | pulso_desliga (cond) | pulso_liga (cond) | nega (cond)
|
desliga tipo_ação idVar; mais_ação |
|
aciona tipo_ação idVar; mais_ação |
|
se (cond) { listacão } mais_ação |
|
vai_para id; |
|
para idVar de id a id comandos fim_para |
|
idVar tipopop:= expressão; mais_ação |
|
permuta_bytes de idVar; mais_ação |
|
incrementa tipop idVar; mais_ação |
|
decrementa tipop idVar; mais_ação |
|
desloca para direção tipop idVar id posições; mais_ação |
|
rotaciona para direção tipop idVar id posições; mais_ação |
|
encode id em idVar; mais_ação |
|
decode idVar de id; mais_ação |
|
display7seg id em idVar; mais_ação |
|
pid id, SP = id, Kc = id, Ti = id, Td = id,
|
MX = id, PV = id, Mn = id; |
|
id_sbr (id1, id2); mais_ação |
|
converte tipop id para tipop idVar; mais_ação |
|
BCD_para_inteiro em idVar; mais_ação |
|
inteiro_para_BCD em idVar; mais_ação |
|
extrai_raiz_quadrada de id em idVar; mais_ação |
|
extrai_seno de id em idVar; mais_ação |
|
extrai_cosseno de id em idVar; mais_ação |
|
extrai_tangente de id em idVar; mais_ação |
|
extrai_logaritmo_natural de id em idVar; mais_ação |
|
randomize id em idVar; mais_ação |
|
arredonda id em idVar; mais_ação |
|
trunca id em idVar; mais_ação |
|
inverte tipop idVar; mais_ação |
|
retorna; |
|
stop; |
|
finaliza_scan; |
|
habilita_interrupções; mais_ação |
|
desabilita_interrupções; mais_ação |
|
vincula id à interrupção evento; mais_ação |
|
desvincula evento; mais_ação |
|
recebe_byte em id vindo_do port; mais_ação |
|
transmite_byte id no port; mais_ação
|
mais_ação | -> listação | ou (cond_OuSe) { listacão } mais_ação_OuSe | e
|