Programar PAC de Opto22 Usando FORTH En Linux (3 / 4 paso)

Paso 3: ESTRUCTURA GENERAL DE UN PROGRAMA

ESTRUCTURA GENERAL DE UN PROGRAMA

Ya teniendo una herramienta basica para gestion del PAC, se procedio a indagar un poco mas en como es la estructura de un programa para PAC de Opto22.La informacion obtenida fue la siguiente:

  • Los archivos con extensión .crn1, .crn2, .crn3, deben tener todos como
    nombre de como se "bautizo" el programa. * El archivo .crn1 contiene una linea: nombre de archivo. " PNAME "; PNAME de donde es el nombre con se "bautizo el programa. Las otras lineas de este archivo no cambiaron nunca con diferentes programas se crearon

  • El archivo .crn2 contiene los nombres de las "tareas" conforman las Naciones Unidas
    programa, las variables se utilizan, y la encarga de pines I/O

  • El archvo .crn3 inicializa las tareas, las variables y el hardware de / 0

  • Debera existir un archivo con extensión *.CCD para cada una de las tareas
    conforman el programa, cuyo nombre es el aparece en el archivo .crn2

Se desarrollo un programa ejemplo "PARPADEO", cuenta con dos tareas: una enciende y apaga una salida digital e incrementa una variable contador, la otra tarea revisa si la variable es exactamente divisible entre 5 (modulo 5) y enciende el led cuando esta condicion es valida, de lo contrario, lo apagara.

PARPADEO.crn1

En este archivo puede notarse la linea de codigo donde esta el nombre del programa, "PARPADEO". Las demas lineas había algun tipo de encarga de espacios de memoria para el hardware, las variables e I/O. No se notaron cambios en estas lineas para diferentes programas hechos y analizados.

_END NUEVA $$$. EJECUTAR

: NOMBRE DE ARCHIVO. " PARPADEO ";

1 $VAR 0 * _HSV_SEMA

1024 $VAR 0 * _HSV_TEMP

200 0 $VAR * _HSV_INIT_IO

IVAR 0 ^ _HNV_INIT_IO

PARPADEO.crn2

En este archivo se encontraron tres cosas:

-Tareas conforman el programa: Powerup, parpadeolento, _INI_IO. Encendido es una tarea viene por defecto, no puede ser renombrada, ni borrada. parpadeolento fue una tarea creada en el programa e _INIT_IO probablemente es una tarea interna encargada de inicializar el hardware automaticamente al iniciar un programa

-El en de utilizaron de la se de de la variables programa: variablecontador y variablemodulo

-Alias de los pinos del hardware un nombres mas amigables en el programa, en este caso los pines digitales 0 y 7 fueron asignados a los alias: SALIDA_DIGITAL_1 y SALIDA_DIGITAL_4

TAREA 0 & _INIT_IO

TAREA 0 & encendido

TAREA 0 & parpadeolento

IVAR 0 ^ variablecontador

IVAR 0 ^ variablemodulo

$0000000000000000... 32769 1.000000 0.000000 0,010000 2001 $7F000001 MBOARD 0% RACK_PROPIO SPOINT 0.0 0% RACK_PROPIO DE SALIDA

PUNTO 0 ~ SALIDA_DIGITAL_1

SPOINT 0.0 SALIDA 7% RACK_PROPIO

PUNTO 0 ~ SALIDA_DIGITAL_4

PARPADEO.crn3

Este archivo es un poco largo de mas. Al parecer en la parte inicial se crean se agrupan las tareas, los diferentes tipos de variables, en arreglos y hacia finales se el puede ver la inicializacion de las variables variablecontador y variablemodulo a 0. Tambien puede notarse por defecto los pines digitales estan configurados como entrada "0", y los seran usados como salida debera REALISATION un "1" ($... 0081 pinos 0 y 7)

: W_INIT_IO

CONFIG_PORTS

$0000000000000081... % RACK_PROPIO PERMITE!

«% RACK_PROPIO (1/1) "* _HSV_INIT_IO $MOVE 0 ^ _HNV_INIT_IO

% RACK_PROPIO PERMITEN

«Inicialización de variables» * _HSV_INIT_IO $MOVE

0 ^ variablecontador

0 ^ variablemodulo

««* _HSV_INIT_IO $MOVE

Archivos de tareas (powerup.ccd, parpadeo.ccd)

En estos archivos se encuentra el codigo del programa, para cada una de las tareas programadas. En cada archivo se encuentra dos tipos de cosas, hacia el final pueden verse el listado de cada uno de los "bloques" de codigo:

T: T0

DUMMY

0_0

0_1

0_3

0_5

0_7

0_10

T;

y encendido ' T0 SETTASK

Cada uno de estos "bloques" de codigo se encuentra numerado a-b donde a, es el numero de la tarea y b el "id" de dicho bloque de codigo dentro de esta tarea. Estos numeros de bloques corresponden con los numeros de los bloques mostrados en la aplicacion nativa y probablemente son usados para realizar tareas de depuracion paso a paso por bloques. Un ejemplo de un bloque de codigo es el siguiente

: 1_1

VERDADERA

1 LÍNEA. NÚMERO

^ variablemodulo

1 <

TIERRA

SI-4 OTRO -3 DESPUÉS DEL SALTO;

Puede notarse al comienzo la numeracion del bloque antecedida por: (dos puntos). Luego se ve la instrucción línea. NÚMERO antecedida por un numero de linea. Estos numeros de linea corresponde con los numeros de linea de la aplicacion nativa y probablemente son usados para realizar tareas de depuracion paso a paso por lineas.

Puede notarse parte del codigo se asemeja una FORTH en donde primero se nombran los operandos y finalmente se opera con ellos.

El bloque finaliza siempre con una instrucción JUMP precedida permiso de; (punto y coma). Estos no saltan son saltos absolutos, sino relativos.

Artículos Relacionados

Puede ser adelante con PAC de Opto22 y Linux

Puede ser adelante con PAC de Opto22 y Linux

CONTROLADORES industriales: PAC, PLC y LINUXEste proyecto tambien esta disponible en Español haciendo clic aquiLinux soporte para hardware industrial como PAC o PLC, en el caso de las marcas grandes y bien conocidas es básicamente inexistente. Alguno
Programar Arduino Pro Mini usando Arduino Uno

Programar Arduino Pro Mini usando Arduino Uno

Hola a todos. Hoy voy a mostrar como programar arduino pro mini usando arduino uno.Si ya tenías un arduino uno y nuevamente comprar arduino pro mini entonces usted no necesita comprar el convertidor USB a serial para programar el arduino pro mini por
Intel Edison - crear programa de Socket TCP usando GCC y Linux

Intel Edison - crear programa de Socket TCP usando GCC y Linux

¡Hola!Este instructable tiene un enfoque diferente de Intel Edison: en vez de usar recursos de red con el IDE de Arduino, aquí os muestro un camino para la apertura de un socket de servidor TCP en Intel Edison usando programación, cómo compilar con g
Programación de videojuegos en Industrial máquina controlador PAC/PLC

Programación de videojuegos en Industrial máquina controlador PAC/PLC

PROTOCOLO RFBProtocolo RFB o "Remoto de búfer de marco" fue creado en el laboratorio de investigación de Olivetti para administrar interfaces gráficas de forma remota. La idea era crear un protocolo más sencillo posible, como tanto hardware como
ESP8266 ESP-12E NodeMCU usando Arduino IDE - un Tutorial de programación

ESP8266 ESP-12E NodeMCU usando Arduino IDE - un Tutorial de programación

NodeMCU Dev Board se basa ampliamente explorado esp8266 sistema en Chip de Expressif. Se combinan características de WIFI accesspoint y estación + microcontrolador y utiliza simple lenguaje de programación LUA basado. Ofertas de NodeMCU de ESP8266-Ha
Arduino ESP8266 Modbus TCP IP Scada Industrial Opto22

Arduino ESP8266 Modbus TCP IP Scada Industrial Opto22

Ha realizado la integración de Arduino + ESP8266 + Software Opto22, implementar su entorno scada IP y Modbus TCP Modbus RTU, la idea es implementar este hardware en la industria para el monitoreo y control.Más información sobre este proyecto:Blog PDA
Plataforma robótica Arduino simple!

Plataforma robótica Arduino simple!

Acabo de recibir un Arduino después de jugar un rato con algunos Microcontroladores AVR durante reuniones del equipo de robótica.  Me gustó la idea de un chip programable realmente barato que podría ejecutar cualquier cosa desde una interfaz de compu
Piano de zanahoria (un proyecto MaKey MaKey)

Piano de zanahoria (un proyecto MaKey MaKey)

¿has pensado que una zanahoria puede crear un buen sonido? Con la ayuda de un MaKey MaKey pueden. Pero simplemente tener unas teclas no es lo suficientemente bueno, vamos a construir uno que puede tener 18 teclas y 2 octava completa.Paso 1: materiale
Escudo de programación de 8 pines

Escudo de programación de 8 pines

la pantalla de programación de 8 pines te permite programa ATtiny virutas de serie con el Arduino se como programador. En otras palabras, este enchufe su Arduino y entonces puede fácilmente programar chips de 8 pines. Estos microcontroladores pequeño
Peces fuera del agua - junta ATtiny con Arduino

Peces fuera del agua - junta ATtiny con Arduino

pecera es un pequeño microcontrolador programable con el software de Arduino.  Tiene una batería para luego pueda usarlo sin la placa principal de Arduino más grande.  Es como un pequeño Arduino para ir.Construir las instrucciones para el Kit de pece
Configurar el Zybot - Hardware, redondo y alto edición

Configurar el Zybot - Hardware, redondo y alto edición

Este Instructable es una parte de una serie de seis partes que pasará a través de la Zybot. Este Instructable le guiará a través de todo que lo necesario para montar el hardware de la Zybot.Para obtener más información acerca de la Zybot Ve el post d
Luces de Navidad Musical controlado por ordenador

Luces de Navidad Musical controlado por ordenador

en este Instructable, voy a enseñar todos los pasos básicos de cómo construir tu propio ordenador controlado musical luces de Navidad. Esta configuración es muy simple y común. Dentro de unas horas, también puede crear su propia exhibición ligera par
Tibbo LTPS nativo C desarrollo cómo

Tibbo LTPS nativo C desarrollo cómo

LTPP es una Linux-basado Tibbo proyecto PCB (TPS mainboard) basado en el potente de 1 GHz Cortex-A8 CPU Sitara de Texas Instruments. Lleva 512 MB de RAM y 512MB de memoria flash, la nueva Junta de LTPP3 funciona Tibbo propia, altamente pulido distrib
Configurar el Zybot - Hardware

Configurar el Zybot - Hardware

Este Instructable es una parte de una serie de seis partes que pasará a través de la Zybot. Este Instructable le guiará a través de todo que lo necesario para montar el hardware de la Zybot. El Zybot es un robot que es controlado por un controlador d