Programación de texto estructurado
Si se lleva a cabo lo siguiente,
El lazo WHILE_DO evalúa primero sus condiciones. Si
el valor de las condiciones es verdadero, el controlador
ejecuta las instrucciones que se encuentren dentro del
lazo.
Esto es distinto al lazo REPEAT_UNTIL en cuanto a que
este ejecuta las declaraciones del construcción y
después determina si el valor de las condiciones es
verdadero antes de volver a ejecutar las instrucciones.
Las instrucciones de un lazo REPEAT_UNTIL siempre
se ejecutan al menos una vez. Puede que las
instrucciones de un lazo WHILE_DO nunca lleguen a
ejecutarse.
Si se lleva a cabo lo siguiente,
Mover caracteres ASCII de una matriz SINT a una
etiqueta de cadena. (En una matriz SINT, cada
elemento contiene un carácter.) Deténgase cuando
alcance el retorno de carro.
Inicializar Element_number a 0.
Cuente el número de elementos en SINT_array (matriz
que contiene los caracteres ASCII) y almacene el
resultado en SINT_array_size (etiqueta DINT).
Si el carácter en SINT_array[element_number] = 13
(valor decimal del retorno de carro), parar.
Establecer String_tag[element_number] = el carácter en
SINT_array[element_number].
Añadir 1 al valor de element_number. Esto deja que el
controlador compruebe el siguiente carácter de
SINT_array.
Establecer el miembro Length de String_tag =
element_number. (Esto registra el número de carácteres
que hay en String_tag hasta el momento).
Si element_number = SINT_array_size, a continuacion
se detiene. (Se encuentra al final de la matriz y no
contiene un retorno de carro).
Publicación de Rockwell Automation 1756-RM003T-ES-P - Noviembre 2018
Afecta a las marcas de estado matemáticas
No
Condiciones de fallo
Se producirá un fallo mayor si
el lazo de la construcción es
demasiado largo
Ejemplo 1
Introduzca este texto estructurado
pos := 0;
While ((pos <= 100) & structarray[pos].value <> targetvalue)) do
pos := pos + 2;
String_tag.DATA[pos] := SINT_array[pos];
end_while;
Ejemplo 2
Introduzca este texto estructurado
element_number := 0;
SIZE(SINT_array, 0, SINT_array_size);
While SINT_array[element_number] <> 13 do
String_tag.DATA[element_number] :=
SINT_array[element_number];
element_number := element_number + 1;
String_tag.LEN := element_number;
If element_number = SINT_array_size then
exit;
end_if;
end_while;
Tipo de fallo
Código de fallo
6
1
Capítulo 24
953