Programar PAC Opto22 Usando FORTH En Linux (3 / 4 steg)
Steg 3: ESTRUCTURA GENERAL DE UN PROGRAMA
ESTRUCTURA GENERAL DE UN PROGRAMA
Ya teniendo una herramienta basica para gestion del PAC, se procedio en indagar un poco mas sv como es la estructura de un programa para PAC de Opto22.La informacion obtenida fue la siguiente:
Los archivos con förlängning .crn1, .crn2, .crn3, deben tener todos como
Nombre como se "bautizo" el programa. * El archivo .crn1 contiene una linea: FILENAME. " PNAME "; donde PNAME es el nombre con que se "bautizo el programa. Las otras Lineasen de este archivo ingen cambiaron nunca con diferentes programas que se crearonEl archivo .crn2 contiene los nombres de las "tareas" que conforman un
programa, las variabler que se utilizan, y la asignacion de tallar I/OEl archvo .crn3 inicializa las tareas, las variabler y el hårdvara de jag / 0
Debera existir un archivo con förlängning .ccd para cada una de las tareas
que conforman el programa, cuyo nombre es el que aparece en el archivo .crn2
Se desarrollo FN programa ejemplo "PARPADEO", que cuenta con dos tareas: una enciende y apaga una salida digital e incrementa una variabel contador, la otra tarea revisa si la variabel es delbara exactamente entre 5 (modulo 5) y enciende el ledde 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 Lineasen parecen Algún tipo de asignacion de espacios de memoria para el hårdvara, variabler e I/O. Ingen se notaron cambios sv estas Lineasen para diferentes programas hechos y analizados.
_END NYA $$$. KÖRA
: FILENAME. " PARPADEO ";
1 0 $VAR * _HSV_SEMA
1024 0 $VAR * _HSV_TEMP
200 0 $VAR * _HSV_INIT_IO
0 IVAR ^ _HNV_INIT_IO
PARPADEO.crn2
En este archivo se encontraron tres cosas:
-Tareas que conforman el programa: Powerup, parpadeolento, _INI_IO. PowerUp es una tarea que viene por defecto, ingen puede ser renombrada, ni borrada. parpadeolento fue una tarea creada en el programa e _INIT_IO probablemente es una tarea internationel encargada de inicializar el hårdvara automaticamente al iniciar FN programa
-Variabler que se utilizaron en el programa: variablecontador y variablemodulo
-Alias de los pines del hårdvara en nombres mas amigables en el programa, en este caso los pines digitales 0 y 7 fueron asignados en los alias: SALIDA_DIGITAL_1 y SALIDA_DIGITAL_4
_INIT_IO & 0 aktivitet
0 uppgift & Powerup
Parpadeolento & 0 aktivitet
0 IVAR ^ variablecontador
0 IVAR ^ variablemodulo
$0000000000000000... 32769 1.000000 0.010000 0.000000 2001 $7F000001 0 MBOARD % RACK_PROPIO SPOINT 0,0 UTGÅNG 0% RACK_PROPIO
0 POÄNG ~ SALIDA_DIGITAL_1
SPOINT 0,0 UTGÅNG 7% RACK_PROPIO
0 POÄNG ~ SALIDA_DIGITAL_4
PARPADEO.crn3
Este archivo es un poco mas largo. Al parecer en la parte inicial se crean se agrupan las tareas, los diferentes tipos de variabler, sv arreglos y hacia el final se puede ver la inicializacion de las variabler variablecontador y variablemodulo 0. Tambien puede notarse que por defecto los pines digitales estan configurados como entrada "0", y los que Enikö usados como salida debera escribirse un "1" ($... 0081 pines 0 y 7)
: W_INIT_IO
CONFIG_PORTS
$0000000000000081... % RACK_PROPIO KAN!
"% RACK_PROPIO (1/1)" * _HSV_INIT_IO $MOVE 0 ^ _HNV_INIT_IO
% RACK_PROPIO AKTIVERAR
"Initiera variabler" * _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. Sv cada archivo se encuentra dos tipos de cosas, hacia el final pueden vers 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;
& Powerup "T0 SETTASK
Cada uno de estos "bloques" de codigo se encuentra numerado Kristoffer donde en, 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 en paso por bloques. FN: S ejemplo de un bloque de codigo es el siguiente
: 1_1
SANNA
1 RAD. NUM
^ variablemodulo
1 <
MARK
OM-4 ANNARS HOPPA -3 SEDAN;
Puede notarse al comienzo la numeracion del bloque antecedida por: (dos puntos). Luego se ve la instruccion linje. NUM 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 en paso por Lineasen.
Puede notarse que parte del codigo se asemeja en FORTH sv donde primero se nombran los operandos y finalmente se opera con ellos.
El bloque finaliza siempre con una instruccion hoppa precedida de; (punto y koma). Estos hoppa ingen son saltos absolutos, sino relativos.