7. Temporización Un aspecto importante en el sistema será mantener una buena sincronización entre todos los sistemas que actúa simultáneamente para la transmisión de datos entre el modelo de Simulink y el Cliente OPC. 7.1. Bucle principal del programa. Timer. En primer lugar, el funcionamiento del servidor esta apoyado sobre un Timer. Para cada paso por el timer se comprueba que se cumple la condición de que se haya puesto en funcionamiento el servidor (variables bandera que indica si esto es así). Si es así se ejecuta la función principal (Rutina_ppal) que se encarga del intercambio de datos. Lo único que hay que hacer es inicializar el timer usando SetTimer, y pasando como parámetro cada cuanto tiempo queremos que salte el Timer. A partir de hay cada vez que pase ese tiempo se mandará al programa un mensaje WM_TIMER. Trataremos ese mensaje de manera que se ejecute la función principal. Antes de finalizar el programa se destruye el timer: KillTimer. Con esto aseguramos que de manera periódica se intercambien datos entre servidor OPC y entorno de trabajo de Matlab. 7.2. Simulación en tiempo cuasi real Utilizamos una S-function, desarrollada sobre lenguaje Matlab (M-file), para intentar simular el tiempo real: tpo.m. La colocación de un bloque S-function con nombre “tpo” y parámetros Tm, tendrá como consecuencia que cada Tm segundos se realiza una actualización de todos los bloques presentes en el modelo, de manera que la simulación se ejecute en tiempo cuasi-real, siendo más realistas en tanto en cuanto mas podamos minimizar el valor de Tm. Los bloques de entrada y salida de Simulink (que explicaremos a continuación), tomaran o dejaran valores del entorno de Matlab cada Tm segundo. El valor de Tm ha sido inicializado anteriormente (ConfigParam). El funcionamiento del bloque tpo es el siguiente. La S-function configura el bloque a 0 entradas y 0 salidas, 1 tiempo de muestreo y 1 solo estado. En cada bucle en la función mdlOutputs simplemente utilizamos la orden pause( Tm) que para la ejecución de toda la simulación (todos los bloques deben ejecutarse a la vez). El hecho de haber configurado (ConfigParam) el paso fijo de la simulación a Tm consigue que la simulación se produzca casi en tiempo real. Comunicación entre Simulink y Sistemas de control Simulink OPC Server 28 Figura 16. S-function tpo.m Por ultimo como elemento de interés, seria conveniente asegurarse de que el sistema se ejecuta hasta el infinito. Comunicación entre Simulink y Sistemas de control Simulink OPC Server 29