Introducción

    La función de PLC es la capacidad de ejecutar un programa hecho por el usuario que interactúa con entradas, salidas y funciones propias del nodo.

Funcionamiento del PLC


    Una vez que es encendido entra en un ciclo repetitivo e ininterrumpido

Lista de instrucciones

ADD, AND, ANDN, ANDP, BLKMOVE, CAL, CALC, CALNC, CMOV, CTD, CTU, DEC, DIV, END, EQ, F_TRIG, GE, GT, INC, JMP, JMPC, JMPNC, LD, LDN, LE, LT, MOVE, MUL, MUXMOVE, NE, NOT, OR, ORN, ORP, R, R_TRIG, RET, RETC, RETNC, S, SCALE, SET, ST, STN, SUB, TOF, TON, TP, TP_C, XMT, XOR

Areas de memoria

    La memoria es un único bloque repartido en áreas. La primer área es la de las variables (V), y comienza a partir de la dirección cero. La primer dirección del área siguiente es la consecutiva a la última del área anterior. Cada variable tiene una longitud fija, de 16 bits. Solo el acumulador es de 32 bits, para facilitar las operaciones aritméticas. En el protocolo de comunicación la primer dirección empieza desde uno en vez de cero, por lo que debe tenerse en cuenta esta diferencia. Pero en el caso particular del Nodo GSM la primer variable (v0) le corresponde la dirección 9001 en la comunicación. De 1 a 9000 son retransmitidas por el nodo. La CPU tiene acceso a toda la memoria y se vale de un acumulador para la ejecución del programa.

    Hasta la ROM 1.05 cada área tiene la siguiente cantidad de variables:

    Se puede inspeccionar las variables (nombre, tipo y dirección) haciendo clic derecho sobre el área de código. Los items son "Inspeccionar variables" e "Inspeccionar variables estados" (área SM).

    Ver áreas ROMs 1.05, 1.06 , 1.07, 1.08.

Ejecución del programa

    Como se ve en "Funcionamiento del PLC" se indica el ciclo que se repite siempre. Este ciclo es la sucesión de la ejecución de instrucciones, que vuelve a empezar cada vez que la CPU ejecuta la instrucción END. La mayoría de las instrucciones requieren uno o mas argumentos. Estos son valores necesarios para realizar la operación indicada en cada instrucción (como una suma), y el resultado queda en el acumulador para interactuar con la instrucción siguiente. Ejemplo:

    ld v0      ;Copia el valor de v0 en el acumulador
    add
1      ;Suma 1 al acumulador
    mul
v1     ;Multiplica por v1 y guarda en acumulador
    st
v2      ;copia el valor del acumulador en v2
    end       
;Vuelve al principio


Solamente las instrucciones BLKMOVE, CAL, END, JMP, MOVE, MUXMOVE y RET no interactúan con el acumulador.

Todas las variables son de 16 bits, por lo que pueden albergar números desde -32768 hasta 32767. El acumulador es de 32 bits para alejar la posibilidad de desbordamiento en operaciones aritméticas. Aquí en donde debe prestarse atención, pues si el acumulador tiene un número que excede los 16 bits (mayor que 32767 o menor que -32768), al pasarlo a una variable será el valor máximo admitida por esta (-32768 o 32767 según corresponda).


Programación

Indice