Logo Studenta

Una Especificación Sintáctica de los Lenguajes de programacion textuales

¡Estudia con miles de materiales!

Vista previa del material en texto

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/283273480
Una Especificación Sintáctica de los Lenguajes de Programación Textuales de
la Norma IEC 61131-3
Conference Paper · June 2011
CITATIONS
0
READS
2,838
4 authors, including:
Flor Eugenia Narciso Farias
University of Puerto Rico at Mayagüez
27 PUBLICATIONS   53 CITATIONS   
SEE PROFILE
Addison Rios
University of the Andes (Venezuela)
123 PUBLICATIONS   332 CITATIONS   
SEE PROFILE
Francisco Hidrobo
University of the Andes (Venezuela)
65 PUBLICATIONS   263 CITATIONS   
SEE PROFILE
All content following this page was uploaded by Flor Eugenia Narciso Farias on 27 October 2015.
The user has requested enhancement of the downloaded file.
https://www.researchgate.net/publication/283273480_Una_Especificacion_Sintactica_de_los_Lenguajes_de_Programacion_Textuales_de_la_Norma_IEC_61131-3?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_2&_esc=publicationCoverPdf
https://www.researchgate.net/publication/283273480_Una_Especificacion_Sintactica_de_los_Lenguajes_de_Programacion_Textuales_de_la_Norma_IEC_61131-3?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_3&_esc=publicationCoverPdf
https://www.researchgate.net/?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_1&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Flor-Narciso-Farias?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Flor-Narciso-Farias?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/University_of_Puerto_Rico_at_Mayagueez?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Flor-Narciso-Farias?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Addison-Rios?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Addison-Rios?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/University-of-the-Andes-Venezuela?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Addison-Rios?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Hidrobo?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Hidrobo?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/University-of-the-Andes-Venezuela?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Francisco-Hidrobo?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Flor-Narciso-Farias?enrichId=rgreq-5e0e890a068e3e9bbc2a8a8eac2b18fa-XXX&enrichSource=Y292ZXJQYWdlOzI4MzI3MzQ4MDtBUzoyODkzMTQzODc4NDEwMzVAMTQ0NTk4OTMzMzgwMA%3D%3D&el=1_x_10&_esc=publicationCoverPdf
Congreso de Computación Aplicada – CAIP’2011 1043 
Una Especificación Sintáctica de los Lenguajes de 
Programación Textuales de la Norma IEC 61131-3 
 
Flor Narciso1, Addison Ríos Bolívar1, Francisco Hidrobo2, Olga González1 
(1) Facultad de Ingeniería, Escuela de Ingeniería de Sistemas. (2) Facultad de Ciencias, 
Departamento de Física, Universidad de Los Andes 5101 Mérida (Venezuela) 
(fnarciso@ula.ve) 
 
RESUMEN 
 
En este artículo se presenta la especificación sintáctica de los lenguajes de programación 
textuales (Lista de Instrucciones y Texto Estructurado) de la norma IEC 61131-3, la cual se 
construye en función de los elementos que conforman una gramática formal de tipo 2 o 
independiente del contexto, es decir, los símbolos terminales, los símbolos no terminales, el 
axioma y las reglas de producción. Con esta especificación es posible la construcción de un 
traductor que permita generar código escrito en un lenguaje de programación de alto nivel a partir 
de un programa escrito en cualquiera de los dos lenguajes de programación textuales de la 
norma, con fin de promover una implementación bajo estándares libres y códigos abiertos, lo cual 
representará un aporte importante dado que en la actualidad, la mayoría de los traductores de 
estos lenguajes que se encuentran disponibles en el mercado para apoyar el manejo de las 
lógicas de control son desarrollados utilizando software privativo, de código cerrado o software no 
libre. 
 
INTRODUCCIÓN 
 
La International Electrotechnical Commission (IEC) es una organización líder a nivel mundial, que 
elabora y publica normas internacionales para todas las tecnologías relacionadas con la 
electricidad y la electrónica. El objetivo de la IEC es promover la cooperación internacional en todo 
lo relativo a la normalización en los campos eléctricos y electrónicos (John y Tiegelkamp, 2001). 
La norma IEC 61131 es aquella que rige todo lo relacionado con los controladores lógicos 
programables (denominado PLC, del término inglés Programmable Logic Controllers) y sus 
correspondientes periféricos. La parte 3 de esta norma (IEC 61131-3) define, para cada uno de los 
lenguajes de programación más comúnmente usados para la programación de PLCs, los 
principales campos de aplicación, su sintaxis y semántica, conjuntos básicos simples y 
compuestos de elementos de programación, las pruebas y medios por los cuales los fabricantes 
pueden ampliar o adaptar esos conjuntos básicos para sus propias implementaciones (John y 
Tiegelkamp, 2001). Así, esta norma se constituye en la base para la estandarización de los 
lenguajes de programación para PLC, en el área de automatización industrial. 
 
Con el fin de apoyar a los ingenieros de control en el proceso de desarrollo de aplicaciones de 
control, a través de uno o varios lenguajes de programación estándar de PLC, cumpliendo con las 
premisas del software libre y de la norma IEC 61131-3 (I. 61131-1, 2003a), en (Hidrobo, 2009a; 
Hidrobo, 2009b; Hidrobo, 2010) se describe el diseño de una herramienta computacional para el 
manejo de las lógicas de control. La norma IEC 61131-3 tiene como objetivo presentar una 
estandarización industrial de los autómatas programables y sus periféricos, incluyendo los 
lenguajes de programación que se deben utilizar (I. 61131-1, 2003b; John y Tiegelkamp, 2001), 
loscuales son los denominados lenguajes de programación textuales o literales (Lista de 
Congreso de Computación Aplicada – CAIP’2011 1044 
Instrucciones (IL, por sus siglas en inglés) y Texto Estructurado (ST, por sus siglas en inglés)) y 
los lenguajes de programación gráficos (Diagrama de Escalera o Contactos (LD, por sus siglas en 
inglés) y Diagrama de Bloques Funcionales (FBD, por sus siglas en inglés)). 
 
El objetivo principal de esta herramienta es ofrecer un ambiente de desarrollo de aplicaciones de 
control que provea los lenguajes de programación de la norma IEC 61131-3, de manera de 
facilitar a los programadores de PLC o ingenieros de control la construcción de programas 
utilizando los recursos y servicios computacionales que la integran. Estos recursos y servicios en 
su forma básica, se reúnen en componentes bien definidos tales como un editor, un traductor y 
una interfaz gráfica de usuario. Esto representa una diferencia sustancial con respecto al 
desarrollo que han realizado empresas comercializadoras, ya que se dispone de un sistema que 
satisface los requerimientos del estándar y es de código abierto. 
 
En este artículo se presenta la especificación sintáctica de los lenguaje de programación textuales 
de PLC (IL y ST), en correspondencia con lo establecido en la norma IEC 61131-3 que define al 
lenguaje IL como un lenguaje de programación de bajo nivel (dependiente de la máquina), similar 
a un lenguaje ensamblador para aplicaciones simples, y al lenguaje ST como un lenguaje de 
programación de alto nivel (independiente de la máquina) similar al lenguaje de programación 
Pascal. Para realizar esta especificación se define en este trabajo una Gramática Independiente 
del Contexto (GIC), tomando en consideración la descripción realizada en (Hidrobo, 2009b), la 
cual puede ser usada en la construcción de un analizador sintáctico, componente de software 
importante que forma parte de la fase de análisis del proceso de traducción (Aho et al., 2007). 
 
MARCO TEÓRICO 
 
Como se mencionó anteriormente, uno de los componentes de la herramienta computacional 
propuesta es un traductor, el cual es un software que lee un programa escrito en un lenguaje, el 
lenguaje fuente, y lo traduce a un programa equivalente escrito en otro lenguaje, el lenguaje 
destino o lenguaje objeto. Asimismo, el traductor informa al usuario la presencia de errores en el 
programa escrito en el lenguaje fuente (Aho et al., 2007). En el caso particular de esta 
herramienta, el traductor debe convertir un programa escrito en cualquiera de los lenguajes de 
programación descritos en la norma IEC 61131-3 a un programa equivalente escrito en un 
lenguaje intermedio, en este caso en lenguaje de programación C (Ritchie y Kernighan, 1998), el 
cual puede ser compilado y ejecutado. Un traductor opera en fases, cada una de las cuales 
transforma el programa escrito en lenguaje fuente (programa fuente) de una representación a otra 
hasta obtener el programa escrito en lenguaje intermedio (programa objeto). En la figura 1 se 
muestra la estructura típica de un traductor como el propuesto en (Hidrobo, 2010). En la fase de 
análisis se comprueba la corrección del programa fuente mediante tres tipos de análisis conocidos 
como léxico, sintáctico y semántico, en tanto que en la fase de síntesis se genera y optimiza el 
código intermedio. Las otras dos funciones, administración de la tabla de símbolos y manejo de 
errores están continuamente interactuando con las fases de análisis y síntesis. 
 
En (Chomsky, 1959), una gramática formal se define como la cuádrupla G = ( N, T, S, P) donde N 
corresponde al conjunto de símbolos no terminales, es decir, el conjunto de símbolos introducidos 
como elementos auxiliares para la definición de las reglas de producción de la gramática y que no 
aparecen en las palabras del lenguaje. El conjunto de símbolos terminales denotado por T es el 
conjunto de símbolos atómicos (no divisibles) del alfabeto, denotado por !, que se combinan para 
formar las palabras del lenguaje. El axioma o símbolo inicial denotado por S es un símbolo no 
Congreso d
terminal a 
aplicando s
P contiene
desde el s
lenguaje. P
 
 
Para defin
lenguajes f
la forma A
posibles pa
(Aho et al.
la notación
(Backus N
los lengua
Para repre
muestran e
 
 
Símbolo 
::= 
| 
{} 
[] 
 
 
 
de Computac
partir del c
sus reglas d
e las transfo
ímbolo inici
Para repres
Fig.1. R
nir la sintax
formales se
A " # tal qu
alabras que
, 2007). Ge
n EBNF (Ex
aur Form) y
ajes de prog
esentar cad
en la tabla 1
Separa la pa
Separa las d
Clausura, si
Opción, sign
ción Aplicada
cual se obtie
de producc
ormaciones
ial hasta ob
sentar una r
Representa
xis de los 
e utilizan las
ue A $ N y 
e se pueden
eneralment
xtended Ba
y se define 
gramación,
a una de la
1. 
Ta
arte izquierd
diversas alte
ignifica cero 
nifica cero o 
a – CAIP’201
enen todas 
ión. Finalm
s de cadena
btener una c
egla se usa
ación gráfica
lenguajes n
s GIC en las
# $ (N % T
n formar co
e, para esp
ackus Naur
como un m
 es decir u
as reglas de
bla 1:Símbo
a y derecha 
ernativas de l
o más conca
una ocurren
1 
las sentenc
ente, el con
as de símb
cadena de 
a la notación
a de las fas
naturales, 
s cuales las
T)*, donde (
on los símbo
pecificar las
r Form), la 
metalenguaj
una manera
e producció
olos de la n
Descripc
de la regla d
la parte dere
atenaciones 
ncia de los íte
cias del len
njunto de re
bolos, que p
terminales 
n & " #. 
es del proc
los lenguaj
s reglas de 
N % T)* rep
olos de (N 
s reglas de 
cual es un
je que se u
a formal de
ón esta not
notación EB
ción 
de producció
echa de las r
de los ítems
ems encerra
nguaje gene
eglas de pro
pueden apl
que constit
 
eso de trad
es de prog
producción
presenta el 
% T) incluy
producción
na extensión
tiliza para e
e especifica
ación utiliza
BNF 
ón. Se lee “se
eglas de pro
s encerrados
dos 
erado por la
oducción de
licarse suce
tuya una se
ducción. 
gramación 
n del conjun
conjunto d
yendo la pa
n de una GI
n de la not
expresar la 
ar lenguajes
a los símbo
e define com
oducción y se
s 
1045
a gramática
enotado por
esivamente
entencia del
y de otros
nto P tienen
e todas las
labra vacía
C se utiliza
tación BNF
sintaxis de
s formales.
olos que se
mo” 
e lee “o”
5 
a 
r 
e 
l 
s 
n 
s 
a 
a 
F 
e 
 
e 
Congreso de Computación Aplicada – CAIP’2011 1046 
ESPECIFICACIÓN DE LA SINTAXIS DE LOS LENGUAJES DE PROGRAMACIÓN TEXTUALES 
DE PLC 
 
En esta sección se presenta la especificación de la sintaxis de los componentes léxicos de los 
lenguajes de programación textuales de PLC, en términos de los símbolos terminales, no 
terminales, el axioma y las reglas de producción en notación EBNF de una GIC. Para este fin, se 
siguen los lineamientos establecidos en la norma IEC 61131-3, según la cual los símbolos 
terminales consisten de una cadena de caracteres encerrada entre comillas simples o dobles. Un 
símbolo terminal especial utilizado en esta sintaxis es el delimitador fin-de-línea, el cual es 
representado por la cadena de caracteres sin comillas EOL. Este símbolo consiste normalmente 
del carácter “separador de párrafo” definido como código hexadecimal 2029 por la ISO/IEC 10646-
1. Un segundo símbolo especial utilizado en esta sintaxis es la cadena nula, esto es, una cadena 
que no contiene ningún carácter, la cual se representa por el símbolo terminal NIL (I. 61131-1, 
2003b). Según se define en la norma IEC 61131-3, los símbolos no terminales se representan por 
cadenas de caracteres de letras minúsculas, números y el carácter subrayado (_), comenzando 
con una letra minúscula. El axioma de la gramática corresponde al símbolo no terminal 
library_element_name. En esta GIC, un modelo de programación se define de acuerdo a las 
siguientes reglas de producción: 
 
library_element_name ::= data_type_name | function_name | function_block_type_name | 
program_type_name | resource_type_name | configuration_name 
library_element_declaration::= data_type_declaration | function_declaration | function_block_declaration | 
program_declaration | configuration_declaration 
 
Estas reglas de producción reflejan el modelo básico de programación definido en (Hidrobo, 
2009a), donde las declaraciones son el mecanismo básico para la producción de los llamados 
library elements. La especificación sintáctica completa de los lenguajes de programación de la 
norma IEC 61131-3 puede ser consultada en (Narciso et al., 2010), donde se presentan, además, 
las reglas de producción de los elementos comunes a los lenguajes de programación textuales y 
gráficos. 
 
El lenguaje de programación IL, es el modelo de lenguaje ensamblador basado en un acumulador 
simple. En este lenguaje se tiene que una lista de instrucciones está compuesta de una secuencia 
de instrucciones. Cada una de estas instrucciones debe comenzar en una nueva línea y debe 
contener un operador con modificadores opcionales, y si es necesario para la operación particular, 
uno o más operandos separados por comas. Los operandos pueden ser cualquiera de los tipos de 
datos definidos en la norma: literales, enumerados o variables. El siguiente es un ejemplo de un 
programa escrito en el lenguaje de programación IL: 
 
Etiqueta Operador Operando 
START: LD A 
 ANDN B 
 ST C 
 
A continuación se presentan las reglas de producción que definen los elementos del lenguaje de 
programación IL, los cuales corresponden a instrucciones, operandos y operadores. En (Hidrobo, 
2009b) se presenta la descripción de cada uno de los operadores de este lenguaje. 
 
Congreso de Computación Aplicada – CAIP’2011 1047 
instruction_list ::= il_instruction {il_instruction} 
il_instruction ::= [label':'] [ il_simple_operation | il_expression | il_jump_operation | il_fb_call | 
il_formal_funct_call | il_return_operator ] EOL {EOL} 
label ::= identifier 
il_simple_operation ::= ( il_simple_operator [il_operand] ) | ( function_name [il_operand_list] ) 
il_expression ::= il_expr_operator '(' [il_operand] EOL {EOL} [simple_instr_list] ')' 
il_jump_operation ::= il_jump_operator label 
il_fb_call ::= il_call_operator fb_name ['(' (EOL {EOL} [ il_param_list ]) | [ il_operand_list ] ')'] 
il_formal_funct_call ::= function_name '(' EOL {EOL} [il_param_list] ')' 
il_operand ::= constant | variable | enumerated_value 
il_operand_list ::= il_operand {',' il_operand} 
simple_instr_list ::= il_simple_instruction {il_simple_instruction} 
il_simple_instruction ::= (il_simple_operation | il_expression | il_formal_funct_call) EOL {EOL} 
il_param_list ::= {il_param_instruction} il_param_last_instruction 
il_param_instruction ::= (il_param_assignment | il_param_out_assignment) ',' EOL {EOL} 
il_param_last_instruction ::= ( il_param_assignment | il_param_out_assignment ) EOL {EOL} 
il_param_assignment ::= il_assign_operator ( il_operand | ( '(' EOL {EOL} simple_instr_list ')' ) ) 
il_param_out_assignment ::= il_assign_out_operator variable 
il_simple_operator ::= 'LD' | 'LDN' | 'ST' | 'STN' | 'NOT' | 'S' | 'R' | 'S1' | 'R1' | 'CLK' | 'CU' | 'CD' | 'PV' | 'IN' | 'PT' 
| il_expr_operator 
il_expr_operator ::= 'AND' | '&' | 'OR' | 'XOR' | 'ANDN' | '\&N' | 'ORN' | 'XORN' | 'ADD' | 'SUB' | 'MUL' | 'DIV' | 
'MOD' | 'GT' | 'GE' | 'EQ' | 'LT' | 'LE' | 'NE' 
il_assign_operator ::= variable_name':=' il_assign_out_operator ::= ['NOT'] variable_name'=>' 
il_call_operator ::= 'CAL' | 'CALC' | 'CALCN' 
il_return_operator ::= 'RET' | 'RETC' | 'RETCN' 
il_jump_operator ::= 'JMP' | 'JMPC' | 'JMPCN' 
 
El lenguaje de programación ST es un lenguaje de alto nivel con orígenes en el Ada, Pascal y C, 
que puede ser utilizado para codificar expresiones complejas e instrucciones anidadas, el cual 
dispone de estructuras para bucles (REPEAT-UNTIL; WHILE-DO), ejecución condicional (IF-
THEN-ELSE; CASE), funciones (SQRT, SIN, etc.). A continuación se presenta un ejemplo de un 
segmento de programa escrito en ST: 
!
IF Manual AND Alarm THEN 
Level = Manual_Level; 
Mixer = Start AND NOT Reset 
ELSE IF Other_Mode THEN 
 Level = Max_level; 
ELSE Level = (Level_Indic X100)/Scale; 
END IF; 
!
En este lenguaje el _n de una línea de texto debe ser tratado igual que el carácter espacio (SP). 
El usuario debe poder insertar uno o más caracteres de espacio en blanco en cualquier lugar del 
texto de los programas, excepto entre palabras claves, literales, valores enumerados, 
identificadores o variables directamente representadas. El espacio en blanco se define como el 
caracter SPACE codificado con valor decimal 32, así como caracteres no imprimibles tales como 
tabuladores, nuevas líneas, etc. para las que no existe codificación en la IEC/ISO 10646-1. 
 
Las expresiones son construcciones, las cuales, cuando son evaluadas, producen un valor 
correspondiente a uno de los tipos de datos definidos en la norma. Las expresiones se componen 
Congreso de Computación Aplicada – CAIP’2011 1048 
de operadores y operandos. Los operadores del lenguaje de programación ST pueden ser 
consultados en (Hidrobo, 2009b). Un operando es un literal, un valor enumerado, una variable, 
una invocación a función u otra expresión. La evaluación de una expresión consiste en aplicar los 
operadores a los operandos en una secuencia definida por la precedencia de operadores. El 
operador con mayor precedencia en una expresión debe ser evaluado primero, seguido del 
operador de precedencia inmediata inferior, etc., hasta que la evaluación se complete. Los 
operadores de igual precedencia deben ser evaluados como se escriben en la expresión de 
izquierda a derecha. 
 
A continuación se presentan las reglas de producción que definen los elementos propios del 
lenguaje de programación ST. 
 
expression ::= xor_expression {'OR' xor_expression} 
xor_expression ::= and_expression {'XOR' and_expression} 
and_expression ::= comparison {('&' | 'AND') comparison} 
comparison ::= equ_expression { ('=' | '<>') equ_expression} 
equ_expression ::= add_expression {comparison_operator add_expression} 
comparison_operator ::= '<' | '>' | '<=' | '>=' ' 
add_expression ::= term {add_operator term} 
add_operator ::= '+' | '-' 
term ::= power_expression {multiply_operator power_expression} 
multiply_operator ::= '*' | '/' | 'MOD' 
power_expression ::= unary_expression {'**' unary_expression} 
unary_expression ::= [unary_operator] primary_expression 
unary_operator ::= '-' | 'NOT' 
primary_expression ::= constant | enumerated_value | variable | '(' expression ')' | function_name '(' 
param_assignment {',' param_assignment} ')' 
statement_list ::= statement ';' {statement ';'} 
statement ::= NIL | assignment_statement |subprogram_control_statement | selection_statement | 
iteration_statement 
assignment_statement ::= variable ':=' expression 
subprogram_control_statement ::= fb_invocation | 'RETURN' 
fb_invocation ::= fb_name '(' [param_assignment {',' param_assignment}]')' 
param_assignment ::= ([variable_name ':='] expression) | (['NOT'] variable_name '=>' variable) 
selection_statement ::= if_statement | case_statement 
if_statement ::= 'IF' expression 'THEN' statement_list {'ELSIF' expression 'THEN' statement_list} ['ELSE' 
statement_list] 'END_IF' 
case_statement ::= 'CASE' expression 'OF' case_element {case_element} ['ELSE' statement_list] 
'END_CASE' 
case_element ::= case_list ':' statement_list 
case_list ::= case_list_element {',' case_list_element} 
case_list_element ::= subrange | signed_integer | enumerated_value 
iteration_statement ::= for_statement | while_statement | repeat_statement | exit_statement 
for_statement ::= 'FOR' control_variable ':=' for_list 'DO' statement_list 'END_FOR' 
control_variable ::= identifier 
for_list ::= expression 'TO' expression ['BY' expression] 
while_statement ::= 'WHILE' expression 'DO' statement_list 'END_WHILE' 
repeat_statement ::= 'REPEAT' statement_list 'UNTIL' expression 'END_REPEAT' 
exit_statement ::= 'EXIT' 
 
 
 
Congreso de Computación Aplicada – CAIP’2011 1049 
CONCLUSIONES 
 
En este artículo se ha presentado la especificaciónsintáctica de los lenguajes de programación 
textuales de la norma IEC 61131-3, para lo cual se concibieron las reglas de producción que 
definen los elementos propios de estos lenguajes de programación (IL y ST). Puesto que la 
especificación sintáctica de los lenguajes de gráficos (LD y FBD) está desarrollada, y que tanto el 
axioma como los conjuntos de símbolos terminales y no terminales están contenidos en las reglas 
de producción que definen los elementos de estos lenguajes, se puede definir la GIC que genera 
los lenguajes de programación que provee la norma IEC 61131-3 en término de sus cuatro 
componentes N, T, S y P. 
 
La importancia de la definición de esta GIC para el desarrollo de un traductor que permita generar 
código en lenguaje de programación de alto nivel (Lenguaje C) a partir de un programa 
especificado en alguno de los lenguajes de programación que provee la norma IEC 61131-3, 
radica en que a partir de ella es posible el diseño e implementación tanto del analizador léxico, 
puesto que las expresiones regulares que describen un lenguaje son un caso particular de la GIC, 
así como del analizador sintáctico, el cual determina si una sentencia pertenece o no a cualquiera 
de los lenguajes de programación generados por la GIC propuesta. Para la implementación del 
traductor se propone el uso de estándares libres y códigos abiertos, lo cual representa un aporte 
importante dado que en la actualidad la mayoría de los traductores de los lenguajes de 
programación de PLC que se encuentran disponibles en el mercado son desarrollados utilizando 
software privativo, de código cerrado o software no libre, factor éste que le confiere al traductor 
todas las bondades propias del software libre. 
 
Para un trabajo futuro se propone la definición de las reglas de producción que se requieren para 
especificar el quinto lenguaje de programación de la norma IEC 61131-3 conocido como Diagrama 
Funcional Secuencial (SFC). 
 
REFERENCIAS 
 
I. 61131-1; Programmable controllers - Part 1: General information, Norma Internacional, IEC 
(International Electrotechnical Comission) (2003a). 
 
I. 61131-1; Programmable controllers - Part 3: Programming languages, Norma Internacional, IEC 
(International Electrotechnical Comission) (2003b). 
 
Aho, A. V., M. S. Lam, R. Sethi y J. D. Ullman; Compilers: Principles, Techniques, and Tools, 
Addison-Wesley, Boston, MA, 2nd edition (2007). 
 
Chomsky, N.; On certain formal properties of grammars, Information and Control: 2(2), 137–167, 
(1959). 
 
Hidrobo, F., A. Ríos, G. Díaz, F. Narciso, I. Besembel, A. Del Mar, Y. Rivas, O. González y B. 
Nava; Cuarto Informe: Diseño de una Herramienta Computacional para el Desarrollo de las 
Lógicas de Control Basada en la Norma IEC 61131-3. Reporte Técnico, UAPIT-ULA, Mérida, 
Venezuela (2009a). 
 
Hidrobo, F., A. Ríos, G. Díaz, I. Besembel, F. Narciso, O. González, Y. Rivas, A. Del Mar y B. 
Congreso de Computación Aplicada – CAIP’2011 1050 
Nava; Quinto Informe: Diseño de una Herramienta Computacional para el Desarrollo de las 
Lógicas de Control Basada en la Norma IEC 61131-3. Ingeniería de Detalle. Reporte Técnico, 
UAPIT-ULA, Mérida, Venezuela (2009b). 
 
Hidrobo, F., A. Ríos, F. Narciso e I. Besembel; Diseñando un SoftPLC sin Uso de Licencias. Actas 
del V Congreso Colombiano de Computación (CCC-2010), Colombia (2010). 
 
John, K. y M Tiegelkamp; IEC 61131-3: Programming Industrial Automation Systems: Concepts 
and Programming Languages, Requirements for Programming, Aids to Decision-Making Tools, 
Springer, Berlin (2001). 
 
Narciso, F., A. Ríos-Bolívar, F. Hidrobo y Olga González; A Syntactic Specification for the 
Programming Languages of the IEC 61131-3 Standard. Actas de la 9th WSEAS International 
Conference on Computational Intelligence, Man-Machine Systems and Cybernetics, (CIMMACS 
'10), Venezuela (2010). 
 
Ritchie, D. M. y B. W. Kernighan; The C programming language, Prentice Hall, Englewood Cliffs, 
NJ (1988). 
 
View publication stats
https://www.researchgate.net/publication/283273480

Continuar navegando

Materiales relacionados