Descripción
La instrucción "Guardar datos en el registro de desplazamiento" escribe datos en un registro de desplazamiento desde el origen indicado. Todo elemento del registro se desplaza a la siguiente dirección. Los datos contenidos en la última dirección del registro de desplazamiento se pierden tras la operación de desplazamiento.
Cada vez que la instrucción se ejecuta con el valor "0" en el parámetro RESET, se leen datos nuevos del origen (S_DATA) y se desplazan a la dirección inicial (START) del registro de desplazamiento. El parámetro LEN indica el número de elementos que deben desplazarse. El tipo de datos de los elementos se define en el parámetro E_TYPE. Si se indica un tipo de datos no admisible en el parámetro E_TYPE, no se procesa la instrucción.
Si el parámetro RESET está a "1" al ejecutarse la instrucción, se borra el registro. El parámetro Q se pone al estado lógico "1" si el registro de desplazamiento está ocupado con ceros o si se borra.
Parámetros
La tabla siguiente muestra los parámetros de la instrucción:
|
Parámetro |
Declaración |
Tipo de datos |
Área de memoria |
Descripción |
|---|---|---|---|---|
|
RESET |
Input |
BOOL |
I, Q, M, D, L |
Entrada de reset |
|
S_DATA |
Input |
POINTER |
I, Q, M, D |
Apunta al elemento de origen que se desplaza a la dirección inicial (START). En el direccionamiento indirecto por registro interárea, el puntero debe indicarse en formato de palabra doble. |
|
START |
Input |
POINTER |
I, Q, M, D |
Apunta a la dirección inicial del registro. En el direccionamiento indirecto por registro interárea, el puntero debe indicarse en formato de palabra doble. |
|
LEN |
Input |
WORD |
I, Q, M, D, L, P |
Número de elementos que deben desplazarse. |
|
E_TYPE |
Input |
BYTE |
I, Q, M, D, L, P |
Indica el tipo de datos de los elementos que deben desplazarse. Los siguientes tipos de datos son admisibles:
|
|
Q |
Output |
BOOL |
I, Q, M, D, L |
Indica "0" si el parámetro RESET está activado (1) o si todos los elementos que deben desplazarse tienen el valor "0". |
|
Valor de función |
VOID |
I, Q, M, D, L |
Valor de función vacío |
|
Ejemplo
En el ejemplo siguiente se desplazan cuatro elementos del tipo de datos WORD a partir de la dirección indicada en el parámetro START. Una vez desplazado el primer elemento del registro a la siguiente dirección, la primera dirección se ocupará con los datos a los que señala el puntero en el parámetro S_DATA. El valor del último elemento del registro se pierde entonces.
|
WSR(RESET := "Tag_Input_Reset", S_DATA := "Tag_Input_DataSource", START := "Tag_Input_StartAddress", LEN := "Tag_Input_Length", E_TYPE := "Tag_Input_ElementType", Q => "Tag_Output_Q"); |
No se transfiere ningún valor de función.
Las tablas siguientes muestran el funcionamiento de la instrucción con valores concretos.
Antes de la ejecución
En este ejemplo se utilizan los siguientes valores para los parámetros de entrada y salida:
|
Parámetro |
Operando |
Valor |
|---|---|---|
|
RESET |
Tag_Input_Reset |
0 |
|
S_DATA |
Tag_Input_DataSource |
DB2.DBX6.0 DW0 = W#16#1111 DW2 = W#16#2222 DW4 = W#16#3333 DW6 = W#16#4444 |
|
START |
Tag_Input_StartAddress |
DB1.DBX0.0 DW6 = W#16#1234 |
|
LEN |
Tag_Input_Length |
W#16#04 |
|
E_TYPE |
Tag_Input_ElementType |
W#16#04 |
|
Q |
Tag_Output_Q |
1 |
Después de la ejecución
Una vez ejecutada la instrucción, los valores siguientes se escriben en los parámetros de salida:
|
Parámetro |
Operando |
Valor |
|---|---|---|
|
RESET |
Tag_Input_Reset |
0 |
|
S_DATA |
Tag_Input_DataSource |
DB2.DBX6.0 DW0 = W#16#1234 DW2 = W#16#1111 DW4 = W#16#2222 DW6 = W#16#3333 |
|
START |
Tag_Input_StartAddress |
DB1.DBX0.0 DW6 = W#16#1234 |
|
LEN |
Tag_Input_Length |
W#16#04 |
|
E_TYPE |
Tag_Input_ElementType |
B#16#04 |
|
Q |
Tag_Output_Q |
1 |