Podemos decir que una estructura es una forma de organizar una serie de variables relacionadas. Un ejemplo puede ser el control de un registro. Supongamos que tenemos una temperatura y queremos controlar que no supere unos valores.
Generaremos las siguientes variables dentro de la estructura:

1
2
3
4
	Valor: INT;
	Maximo: INT;
	Minimo: INT;
	Alarma: BOOL;

Declaración de structuras:

Para declarar las estructuras tenemos que ir a Data types, pinchamos con el derecho y Add Object.

Y declaramos las diferentes variables con sus tipos:

Al definir la estructura hemos definido un tipo pero aún no tenemos declarada ninguna variable de este tipo. Para trabajar con las estructuras deberemos declara una variable de este tipo, en este caso Reg.

El ejemplo anterior muestra como declarar esta variable y como utilizarla posteriormente en el programa. Con este ejemplo quizás no le veamos demasiado sentido a este tipo de dato, pero veamos un ejemplo algo más complejo creando una matriz de estructura.

Ejemplo del uso de estructuras y matrices de estructuras para Codesys.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(*ZONA DECLARACIÓN DE VARIABLES*)
PROGRAM MAIN
VAR
	Reg1:ARRAY[0..100] OF Reg;
	i:BYTE;
END_VAR
(*ZONA DE PROGRAMA*)
FOR i := 0 TO 100 DO
	IF Reg1[i].Valor > Reg1[i].Maximo OR Reg1[i].Valor < Reg1[i].MInimo THEN
		Reg1[i].Alarma := TRUE;
	ELSE
		Reg1[i].Alarma := FALSE;
	END_IF;
END_FOR;

Y este es el resultado

Ejemplo del uso de estructuras y matrices de estructuras para Vb.net. Para que el programa funcione de una manera analoga a como lo Plc Control he creado un control timer que hará que el código se lea de forma recurrente cada seg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Public Class Form1
    Structure Reg
        Dim Valor As Short
        Dim Maximo As Short
        Dim Minimo As Short
        Dim Alarma As Boolean
    End Structure
    Dim Reg1(101) As Reg
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim i As Integer
        For i = 0 To 100
            If Reg1(i).Valor > Reg1(i).Maximo Or Reg1(i).Valor < Reg1(i).Minimo Then
                Reg1(i).Alarma = True
            Else
                Reg1(i).Alarma = False
            End If
        Next
    End Sub
End Class

Y este es el resultado:

Como se puede ver en la imagen he creado un BreakPoint para poder ver lo que pasa en el código. Si nos situamos encima de la variable Reg1 podremos ver los valores, así como modificarlos pinchando en el valor.