Esta es la división de subrutinas del PIC, para el control de procesos mediante RS232 y redes de Petri. También se incluye una modificación que se deberá hacer en el programa controlador en C. También se incluye un pequeño resúmen por cada una de ellas.
Partes y subrutinas del PIC
-Subrutina de inicializacion
-Subrutina de lectura de sensores
-Subrutina de envío al PC
-Subrutina de recibir del PC
-Subrutina de envío a los motores
Modificación en el programa en C
Hay 11 patas para sensores y motores. El programa de C deberá detectar si el proceso de control introducido por el usuario está dentro de estos límites, siendo de 8 el número máximo de sensores y también de 8 el número máximo de motores, no pudiendo sumar mas de 11 entre ellos.
Subrutina de inicializacion
Leer el número de sensores y motores desde el PC (bucle infinito hasta que lea los valores, introduciéndolos en dos variables globales con los siguientes nombres: SENSORKOP y IRTEERAKOP). RA0 y RA1 se asignarán al PC (1 de entrada y 0 de salida). Las posteriores, dentro del PORTA, serán para los sensores (entradas) (a partir de RA2). Después de los sensores, las patas siguientes se configurarán como motores (salidas), hasta RB7.
Subrutina de lectura de sensores
Se deberán leer uno a uno los estados de cada sensor, almacenándolos en SENSOREAK usando rrf. Primero se tendrá que ir de i=2 (RA2) hasta i=4 (RA4), y después de i=0 hasta i=7 (RA0-RA7), siempre y cuando j sea menor a SENSORKOP. Es decir, tendremos dos bucles de doble condición: (i<=4 && j<=SENSOREAK) el primero, e (i<=7 && j<=SENSORKOP) el segundo. Al salir de la subrutina, se obtendrá en SENSOREAK el estado de los sensores de la siguiente manera: (000000111) , en el caso de que tuviéramos 3 sensores y los 3 estuvieran activados, siendo el de más a la izquierda el S1, y el de más a la derecha el S3.
Subrutina de envío al PC
Al enviar el estado de cada sensor al PC, se deberá en viar en orden, es decir, primero S1, luego S2… . Se habrá de transformar cada uno a byte: o 00000000 o 00000001, almacenándolos en variables antes de enviarlos (S0, S1, S2….S7), usando sólo las necesarias (SENSORKOP). Después de transformarlos, se enviarán al PC de la siguiente forma: bit de inicio (un 0), bits de datos en orden inverso (10000000 en el caso de sensor activado) y 2 bits de stop entre bytes, terminando la serie de bytes con 2 bits de stop.
Subrutina de recibir del PC
El PC envía en el mismo formato que se resume en el apartado de Subrutina de envío al PC. Por lo tanto la Subrutina de recibir debe comprobar que en la pata RA1 venga un 0 (bit de inicio) para empezar a leer lo que se le envía, y hasta que esto no ocurra estará en un bucle. Una vez comience a leer usando rrf para ir introduciendo bit a bit en cada variable (I0…I7), y leerá de 0 a IRTEERAKOP bytes, saltándo los 2 bits de stop entre cada byte.
Subrutina de envío a los motores
Según el bit 0 de cada variable I (I0..I7(irteerakop en realidad, no siempre habrá que llegar a la última ni empezar desde la primera)), lo pegará en la pata correspondiente (Rxx..RXx), valiéndose de SENSORKOP e IRTEERAKOP para hallar las patas correspondientes.
Comentarios recientes