WR4X

Top 
       

Escribe variables de la zona 4x (protocolo Modbus). El formato de la instrucción es:

 

    WR4X id, Cant, Dst, Org, Port   (1º)

    WR4X id, Cant, Dst, Cte, Port   (2º)

 

id   = número de identificación del equipo esclavo.

Cant = cantidad de variables a enviar al equipo esclavo.

Dst  = variable del equipo esclavo (Modbus) a partir de la cual se almacenan las variables enviadas.

Org  = dirección de memoria local a partir de la cual se empieza a leer para enviar.

Cte  = valor numérico (aquí Cant es ignorada)

Port = número de puerto de comunicación local (1 o 2).

 

Cuando se ejecuta la instrucción ésta ocupa el puerto de comunicación hasta que es concluida. Mientras el puerto esté en uso la ejecución de cualquier instrucción de comunicación que intente usar el mismo puerto pondrá el acumulador con estado de ocupado (valor 0).

Cuado la comunicación halla terminado la ejecución de la instrucción pondrá el acumulador con el resultado de la misma: concluido (valor 1) o error (valor 3).

Solo la instrucción que inició la comunicación puede liberar el puerto. Esto significa que si se ejecuta una sola vez la ejecución de otras indicará siempre como ocupado (valor 0) aunque la comunicación halla concluido.

En caso de error ya cuenta con dos reintentos de comunicación que es transparente para el usuario. Cuando el resultado es error (valor 3) es porque ha fallado en la comunicación y sus dos reintentos.

 

Programa ejemplo. Dato y Dato2 son variables locales. Alterna entre lectura y escritura.

La instrucción opuesta es RD4X.

La ejecución de la instrucción hace una rotación de acumuladores.

 

           RD4X 1, 1, Dato, 1, 2           ;Lee Dato remoto

           JMPNC NoWrAhora                 ;Pasa a Wr si terminó

           WR4X 1, 1, 2, Dato2, 2          ;Capia Dato2 a remoto

NoWrAhora  END

 

La diferencia entre la 1º y la 2º es que la 2º envía un solo valor numérico (constante) en lugar del valor de la variable local (Org). Como es solo un valor, y se debe mantener la compatibilidad con el editor/compilador, el argumento Cant debe escribirse a pesar de que será ignorado (solo en el 2º caso).

 

    A partir de la ROM 2.10 del CP121 y ROM 1.51 del CP122 el argumento Cant sirve para reperir el valor Cte en el PLC escalvo. Debe tenerse cuidado de no usar valores cero o mayor a 32


     A partir de la ROM 2.53 del CP121 y ROM 2.01 del CP122 el argumento Cant srive para repetir el valor Cte en el PLC esclavo. Debe tenerse cuidado de no usar valores cero o mayor a 124
 

 

 

    Lo hace la mitad de las veces

 

        wr4x 1, 1, 1, sal_sts, 2

 

    Lo hace dos veces y una no

 

        wr4x 1, 1, 1, sal_sts, 2
        wr4x 1, 1, 1, sal_sts, 2

 

Como WR4X está pensada para usar varias juntas, se presenta un problema cuando hay una sola: en la primer ejecución hace la comunicación, en la segunda libera el puerto y no se comunica. El ciclo se repite siempre así. Al ir apilándolas se comunicará solo una y pasará el "derecho de hacerlo" a la siguiente. Por lo tanto siempre habrá un "vacío" entre el último de la lista y el primero.

WR4X
READ4X


Lista de instrucciones
Índice