POU: CheckPointer
Función de supervisión para punteros (CheckPointer)
Utilice esta función para monitorear el acceso a la memoria de los punteros en el modo de tiempo de ejecución. A diferencia de otros funciones de vigilancia, no existe una sugerencia estándar para la implementación de CheckPointer
. Debe definir una implementación de acuerdo con sus propios requisitos.
los CheckPointer
La función debe verificar si el puntero pasado hace referencia o no a una dirección de memoria válida, y si la orientación del área de memoria a la que se hace referencia coincide o no con el tipo de variable al que se refiere el puntero. Si se cumplen ambas condiciones, se devuelve el puntero. De lo contrario, la función debería completar un manejo de errores apropiado.
Atención
Para obtener la función de supervisión de funciones, no edite la parte de la declaración. Sin embargo, se le permite agregar variables locales.
Importante
No se produce una llamada a la función de supervisión implícita para THIS
puntero y SUPER
puntero.
Importante
En la versión del compilador 3.5.7.40 y superior, el Puntero de control también afecta REFERENCE
variables lo mismo que las variables de puntero.
Declaración:
// Automatically generated code: DO NOT EDIT FUNCTION CheckPointer : POINTER TO BYTE VAR_INPUT ptToTest : POINTER TO BYTE; iSize : DINT; iGran : DINT; bWrite: BOOL; END_VAR
Implementación: (incompleta)
// Not a standard implementation. Insert your code here. CheckPointer := ptToTest;
ptToTest
: dirección de destino del punteroiSize
: Tamaño de la variable referenciada; el tipo de datos deiSize
debe ser compatible conINT
y cubrir el alcance dimensional de las variablesiGran
: Granularidad del tamaño referenciado; este es el tipo de datos no estructurados más grande contenido en las variables referenciadas; el tipo de datos deiGran
debe ser compatible conINT
bWrite
: Tipo de acceso (TRUE
= acceso de escritura,FALSE
= acceso de lectura); el tipo de datos debWrite
tiene que serBOOL
Cuando el resultado de la verificación es positivo, se devuelve el puntero sin cambios (ptToTest
).