Descarga la aplicación para disfrutar aún más
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
Compartir