Antes de continuar deciros que podéis ampliar información en la ayuda de Plc Control, en Information System.

Arrays.

En Plc Control se pueden crear arrays de hasta tres dimensiones.

Ejemplos de declaración Codesys.

Array1 :ARRAY [0..9] OF INT;
 
Array2 :ARRAY[0..9,0..9,0..9] OF INT;

Ejemplo de declaración de array en Vb.net.

Dim Array1(10) As Short
 
Dim Array2(10,10) As Short

Programa ejemplo para Codesys.

(*ZONA DE DECLARACIÖN*)
PROGRAM MAIN
VAR
	Memo :ARRAY[0..9] OF INT;
	Suma:INT;
	Valor:INT;
	MemoValor:INT;
	Media:INT;
	Indice:INT;
	i: BYTE;
	conf :BOOL;
END_VAR
(*ZONA DE PROGRAMA*)
(*En este ejemplo calculamos la media de la variable valor. En lugar de hacerlo en un tiempo
determinado lo haremos por cambio de valor de la variable de proceso. De esta manera la media
se actualiza mas rápido cuando los cambio son rápidos. Pero TIENE EL GRAN INCONVENIENTE
QUE SI NO CAMBIAN EL VALOR NO CAMBIARA LA MEDIA. Es solo un ejemplo*)
 
(*Configuración para el primer ciclo de scan
cuando la variable Valor es distinta de 0 llenamos la matriz con ese valor *)
IF NOT Conf AND Valor <> 0 THEN
	FOR i := 0 TO 9 DO
		Memo[i] := Valor;
	END_FOR;
	Conf := TRUE;
	MemoValor := Valor;
END_IF ;
(*Si cambia la variable Valor llenamos el siguiente registro de la matriz*)
IF Valor <> MemoValor THEN
	Memo[indice] := Valor;
	Indice := Indice + 1;
	IF Indice > 9 THEN Indice := 0; END_IF;
	MemoValor := Valor;
END_IF;
(*Calculamos la media*)
Suma := 0;
i:= 0;
FOR i := 0 TO 9 DO
	Suma :=Suma +  Memo[i];
END_FOR;
IF Suma <> 0 THEN Media := Suma / 10; ELSE Media := 0; END_IF;
(*FIN*)

Programa ejemplo para Vb.net

Public Class Form1
    Dim Memo(10) As Short
    Dim MemoValor As Short
    Dim Conf As Short
    Dim Indice As Byte
 
    Private Sub buActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buActualizar.Click
        Dim Valor As Short = TextBox1.Text
        Dim Media As Short
        Dim Suma As Short
        Dim i As Integer
        'Configuración para la primera actualización
        If Not Conf And Valor <> 0 Then
            For i = 0 To 9
                Memo(i) = Valor
            Next
            Conf = True
            MemoValor = Valor
        End If
        'Si cambia la variable valor llenamos el siguiente registro de la matriz
        If Valor <> MemoValor Then
            Memo(Indice) = Valor
            Indice += 1
            If Indice > 9 Then Indice = 0
            MemoValor = Valor
        End If
        'Calculamos la media
        For i = 0 To 9
            Suma += Memo(i)
        Next
        'Comprobamos que la  suma no sea 0 para no dividir por 0
        If Suma <>  0 Then Media = Suma / 10 Else Media = 0
 
        laMedia.Text = Media
 
    End Sub
End Class

NOTA: He modificado el programa de las cajas de código para poder ver el ST, aun quedan algunos detalles pero espero ir retocándolo (cuando tenga un poco de tiempo).