Full text
10 Equation Chapter 1 Section 1 Trabajo Fin de Máster Ingeniería Industrial Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Autor: Manuel Orta Hernández Tutores: Daniel Limón Marruedo Pablo Krupa García Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 20 22
Trabajo Fin de Máster Ingeniería Industrial Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Autor: Manuel Orta Hernández Tutores: Daniel Limón Marruedo Pablo Krupa García Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2022
Trabajo Fin de Máster: Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Autor: Manuel Orta Hernández Tutores: Daniel Limón Marruedo, Pablo Krupa García El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2022 El Secretario del Tribunal
A mi familia y todos los que me apoyaron en momentos difíciles.
Resumen El objetivo principal de este trabajo es dar soporte a la herramienta SPCIES (Suite of Predictive Controllers for Industrial Embedded Systems), una aplicación para generación automática de controladores MPC creada por el Grupo de Estimación, Predicción, Optimización y Control del departamento de Ingeniería de Sistemas y Automática de la Universidad de Sevilla. Concretamente, se quiere explorar la posibilidad de la exportación del código generado por esta herramienta para su implantación en sistemas PLC industriales de la marca Siemens®. Para ello, en este trabajo se estudia el modo de exportar y hacer compatible el código generado de la forma más automatizada posible, así como la programación de los autómatas en STEP 7 en el entorno TIA Portal y la puesta en marcha de los controladores. La implantación de este tipo de controladores en sistemas embebidos como son los PLC requiere de un profundo estudio, debido a las grandes limitaciones de memoria y capacidad de computación que presentan estos dispositivos. Por ello, se empleará un algoritmo de resolución de problemas de optimización (FISTA) específicamente diseñado para ser lo más eficiente posible en la resolución de este tipo concreto de problemas de control. Se va a generar el código para controlar dos sistemas diferentes; ambos son sistemas reales, no lineales y multivariables, y se realizarán experimentos en contexto de simulación, integrando la respuesta de sus modelos matemáticos de forma online y próxima a la realidad. La herramienta que permitirá esto es un Hardware-in-the-Loop entre el sistema de control real (PLC S-1200) con el modelo del sistema integrado en Matlab-Simulink® mediante una tarjeta de adquisición de datos de National Instruments® y el software QUARC®.
3 2 MODELOS DE SISTEMAS En el desarrollo de este trabajo se han utilizado dos sistemas a controlar. El primero de ellos corresponde a un centro de servidores o “Centro de Procesado de Datos” real, con el cual el grupo GEPOC del Departamento de Ingeniería de Sistemas y Automática de la ETSI colabora en proyectos de investigación. El segundo sistema empleado es la planta de los cuatro tanques. Es un sistema disponible en los laboratorios de la ETSI para la realización de prácticas, trabajos de fin de estudios e investigación. En los siguientes epígrafes se detallan cada uno de los modelos. 2.1 Centro de Procesos de Datos Este sistema es un centro de procesamiento y almacenamiento de datos real con el que está trabajando el grupo de investigación GEPOC. En esencia, es una sala con forma trapezoidal en cuyo interior se encuentran distribuidos L=6 sistemas de refrigeración (en adelante “chillers”) y M=20 armarios de servidores (“cabinets”). Estos chillers enfrían el ambiente, y a su vez los armarios toman el aire frío para refrigerar los equipos en su interior, siendo 𝑇 la temperatura media en el interior del del armario. El objetivo es controlar la temperatura de estos en unos valores óptimos a través del enfriamiento proporcionado por los sistemas de refrigeración. Para ello, se dispone de un modelo dinámico detallado del comportamiento térmico de los dispositivos y de un autómata capaz de accionar sobre los chillers. El controlador final a diseñar será multi-input-multi-output (MIMO) con 6 entradas y 6 salidas. 2.1.1 Formulación del modelo en Espacio de Estados. El estado completo 𝑥(𝑘) contiene las temperaturas medias de los dispositivos en el interior de cada armario (𝑇) y las temperaturas de cada uno de los chillers (𝑇_). 𝑥 ( 𝑘 ) = [ 𝑇 ( 𝑘 ) , … , 𝑇 ( 𝑘 ) , 𝑇 ( 𝑘 ) , … , 𝑇 ( 𝑘 ) ] ( 1 ) En cuanto al modelo térmico, cada uno de los armarios se ve afectado por varios sistemas de refrigeración al mismo tiempo, por lo que se introduce un coeficiente 𝑠 que representa la proporción de aire frío que le llega al cabinet 𝑖 desde el chiller 𝑙. La temperatura del aire mezclado 𝑇 que entra en los armarios es:
4 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. 𝑇 ( 𝑘 ) = 𝑠 ∙ 𝑇 ( 𝑘 ) ( 2 ) Se realiza la hipótesis de que toda la energía eléctrica suministrada a los servidores se transforma en calor aportado al flujo de aire. La ecuación de conservación de energía proporciona la siguiente ecuación: 𝑇 ( 𝑘 + 1 ) = ( 1 − 𝑡 𝐾 𝐶 𝑞 ) ∙ 𝑇 ( 𝑘 ) + 𝑡 𝐾 𝐶 𝑞 ∙ 𝑠 ∙ 𝑇 ( 𝑘 ) + 𝑡 𝐾 ∙ 𝑃 ( 𝑘 ) ( 3 ) Donde 𝐾 es la capacidad térmica de los servidores, obtenida a través de experimentos, 𝐶 es la capacidad calorífica específica del aire, 𝑞 es el flujo másico de aire frío que entra al cabinet 𝑖, obtenido a través de experimentos y considerado constante. El consumo de potencia en cada instante 𝑃(𝑘) depende del volumen de solicitudes de clientes a los servidores en cada momento, por lo que, aunque se tiene un perfil de demanda obtenido mediante análisis de históricos, se considera una perturbación debido a su impredecibilidad. Las restricciones de temperatura consisten en mantener cada armario por debajo de un umbral de seguridad: 𝑇 ≤ 𝑇 ( 4 ) La dinámica de la temperatura del aire de salida de los chillers puede aproximarse por un sistema de primer orden, partiendo de una referencia de temperatura (𝑇) que es la variable manipulable del sistema: 𝜏 𝑑 𝑇 ( 𝑡 ) 𝑑𝑡 = 𝑇 ( 𝑡 ) − 𝑇 ( 𝑡 ) , ( 5 ) Aunque debido a que esta dinámica es mucho más rápida que la de los armarios, se realiza la hipótesis de que es instantánea. Las restricciones para esta temperatura de referencia son: 𝑇 , ≤ 𝑇 _ ( 𝑡 ) ≤ 𝑇 , , ∀ 𝑙 ∈ [ 1 , 𝐿 ] ( 6 ) Con todo lo anterior, se trata de calcular las actuaciones 𝑇 mediante un control predictivo, de forma que en tiempo real se calcule en el PLC el valor óptimo de esta referencia de temperatura. En el ANEXO A pueden verse los valores numéricos de las distintas constantes y factores implicados en las ecuaciones dinámicas.
Modelos de sistemas 5 2.1.1.1 Simplificación del modelo Se introducen en Matlab® todos los datos del apartado anterior, y a continuación se establecen algunas hipótesis para reducir la complejidad del modelo. Todo esto se realiza en el fichero .m siguiente, en el cual se explica el proceso mediante comentarios en el propio programa: %Código original por GEPOC (US) %Datacenter parameter M = 20; %Number of server cabinet L = 6; %Number of cooling system %Thermal parameter Kt = [96000,96000,72000,72000,72000,48000,60000,60000,60000,36000,48000,12000,240 00,24000,24000,48000,60000,12000,36000,48000]; %Cabinet thermal capacity,J/K qa = [0.836,0.836,0.627,0.313,0.331,0.209,0.232,0.697,0.813,0.470,0.581,0.145,0.2 90,0.097,0.097,0.197,0.247,0.049,0.148,0.197]; %Mass flow of the cold air,kg/s S = [1.0363,0,0,0,0,0;0.7544,0.2918,0,0,0,0;0.6955,0.3479,0,0,0,0;0.3501,0.6997, 0,0,0,0;0.1745,0.8714,0,0,0,0;0.0871,0.9538,0,0,0,0; 0,1.0338,0,0,0,0;0,1.0409,0,0,0,0;0,0,0.2636,0.7907,0,0;0,0,0.3944,0.6573,0, 0;0,0,0.5255,0.5255,0,0;0,0,0.7888,0.2629,0,0; 0,0,0.9203,0.1315,0,0;0,0,0,0,0.5044,0.5044;0,0,0,0,0.4410,0.5678;0,0,0,0,0. 3785,0.6303;0,0,0,0,0.3152,0.6937;0,0,0,0,0.2527,0.7562; 0,0,0,0,0.1893,0.8196;0,0,0,0,0.0634,0.9455]; %mixing coefficient of cold air Cp = 1000; %Specific heat capacity of air /(kg*K) ts = 0.1; %Integration step tau = 0.18; %Time constant % Initial conditions Ti = 298.15*ones(M,1); %Cabinet temperature Tc = 298.15*ones(L,1); %Outlet temperature of cooling subsystem x = [Ti;Tc]; %Initial value. Disturbance Pi = zeros(M,1); %Cabinet power consumption % Initial value. Input Tr = 293.15*ones(L,1); %Set point temperature of cooling subsystem %% Model parameter matrix calculation %Parametric matrix calculation of equality constraint:x(k+1)=A*x(k)+B*Tr(k)+W*Pi(k) D = eye(M,M); D(logical(eye(size(D)))) = 1-ts*Cp*qa./Kt; Z = eye(M,M); Z(logical(eye(size(Z)))) = ts*Cp*qa./Kt;
6 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. E = Z*S; F = eye(M,M); F(logical(eye(size(F)))) = ts./Kt; G = (1-ts/tau)*eye(L,L); H = ts/tau*eye(L,L); A = [D,E;zeros(L,M),G]; B = [zeros(M,L);H]; W = [F;zeros(L,M)]; %% Continuous time model Dc = eye(M,M); Dc(logical(eye(size(Dc)))) = -Cp*qa./Kt; Zc = eye(M,M); Zc(logical(eye(size(Zc)))) = Cp*qa./Kt; Ec = Zc*S; Fc = eye(M,M); Fc(logical(eye(size(Fc)))) = 1./Kt; Gc = (-1/tau)*eye(L,L); Hc = 1/tau*eye(L,L); Ac = [Dc,Ec;zeros(L,M),Gc]; Bc = [zeros(M,L);Hc]; Wc = [Fc;zeros(L,M)]; Cc=[eye(M),zeros(M,L)]; nu = 6; nd = 20; % The outputs are the Temperatures of the cabinets sys=ss(Ac,[Bc,Wc],Cc,zeros(M,nu+nd)); TimeConstant=sort(-1./eig(Ac)); %ratio between the max time constant and the minimum >1000 !! TimeConstant(end)/TimeConstant(1); %Model reduction eliminating the fast dynamics [ME,V]=eig(Ac); %Diagonalization T=inv(ME); sysD=ss2ss(sys,T); %Threshold of time constant Tc_th= 10; %Umbral de constante de tiemmpo para no despreciar la dinamica ind=find(diag(Ac)>=-1/Tc_th); sysDr=ss(sysD.a(ind,ind),sysD.b(ind,:),sysD.c(:,ind),sysD.d); Tr=T(ind,ind);
Modelos de sistemas 7 sysr=ss2ss(sysDr,inv(Tr)); Acr=sysr.a; Bcr=sysr.b(:,1:L); Wcr=sysr.b(:,L+1:M+L); Ccr=sysr.c; %Nominal system sysn=ss(Ac,Bc,Cc,zeros(M,L)); %SISTEMA NOMINAL CON 26 ESTADOS %Reduced nominal system sysrn=ss(Acr,Bcr,Ccr,zeros(M,L)); %SISTEMA CON 26 ESTADOS PERO REDUCIDO norm(sysn-sysrn); %Error ~0.0085 %Model reduction considering the AC instantaneous Acr=Dc; Bcr=Ec; Wcr=Fc; Ccr=eye(M); %SISTEMA CON 26 ESTADOS, REDUCIDO Y SUPONIENDO CHILLLERS INSTANTANEOS sysr=ss(Acr,[Bcr,Wcr],Ccr,zeros(M,M+L)); %w se coloca ahí al ser perturbacion [Abar,Bbar,Cbar,T,k] = ctrbf(Acr,Bcr,Ccr); % The chillers 1-2 only cool cabinets 1-8 % The chillers 3-4 only cool cabinets 9-13 % The chillers 5-6 only cool cabinets 14-20 % This 3 systems are decoupled. % The first subsystem is not controllable. % The other two are fully controllable. nx1=8; Acr1=Acr(1:8,1:8); Bcr1=Bcr(1:8,1:2); nx2=5; Acr2=Acr(9:13,9:13); Bcr2=Bcr(9:13,3:4); nx3=7; Acr3=Acr(14:20,14:20); Bcr3=Bcr(14:20,5:6); % The controllability is analyzed by means of the % singular values of the controllability matrix % It is deduced that the controllability of each subsystem is 2 [u,s1,v]=svd(ctrb(Acr1,Bcr1)); %Matrices de controlabilidad s1=diag(s1); [u,s2,v]=svd(ctrb(Acr2,Bcr2)); s2=diag(s2); [u,s3,v]=svd(ctrb(Acr3,Bcr3));
8 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. s3=diag(s3); %[Abar,Bbar,Cbar,T,k] = ctrbf(); %% discretization Tm=5; sysrd=c2d(sysr,Tm);%sistema con 26 estados, reducido, con a/c instant. y DISCRETO CON Tm=5 Acd=sysrd.a; Bcd=sysrd.b(:,1:L); Wcd=sysrd.b(:,L+1:L+M); Ccd=sysrd.c; [nx,nu]=size(Bcd); nd=size(Wcd,2); KLQR=-dlqr(Acd,Bcd,eye(nx),eye(nu)); %Klqr para preestudio del controlador Como se puede observar, la controlabilidad es estudiada a través de los autovalores de las matrices de controlabilidad de cada uno de los tres subsistemas desacoplados existentes. De este estudio se deduce un punto bastante importante en todo este procesamiento, y es que el sistema reducido de orden 16 no es controlable y sólo se pueden controlar 15 de los 16 estados. Por ello, se vuelve a reducir el sistema descartando, típicamente, la temperatura del armario 1. Además, al disponer únicamente de seis actuaciones, sólo se pueden regular de forma libre seis variables de salida. Esta nueva limitación en el número máximo de estados controlables lleva a una nueva reducción del sistema a orden 6, teniendo en cuenta que la matriz A es diagonal. A partir del modelo dinámico y todas las simplificaciones explicadas, se obtiene finalmente el modelo linealizado en espacio de estados del Centro de Procesado de Datos simplificado: 𝐴= ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 0 . 9574 0 0000 0 0 . 9574 0000 0 0 0.9436 000 0 0 0 0.9345 00 0 0 00 0.9800 0 0 0 000 0.9800 ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ 𝐵= ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 0.0321 0.0296 00 0 0 0.0124 0.0148 0.0587 0 0 0 000 0.0173 0 0 000 0.0518 0 0 0000 0 . 0101 0 . 0088 0000 0 . 0101 0 . 0114 ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ ( 7 )
Modelos de sistemas 9 C= ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 1 0 00 0 0 0 1 00 0 0 0 0 10 0 0 0 0 01 0 0 0 0 00 1 0 0 0 00 0 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ Cuyo punto de linealización es: 𝑈 = [ 15 , 15 , 15 , 15 , 15 , 15 ] 𝑋1=[15.693,15.651,15.6135,15.8145,15.132,15.132] 𝑌 = 𝑋 ( 8 ) Y las restricciones del problema: 𝐿 𝐵 = [ − 16 . 000 , − 16 . 000 , − 16 . 000 , − 16 . 000 , − 16 . 000 , − 16 . 000 ] 𝑈𝐵=[30.000,30.000,30.000,30.000,30.000,30.000] 𝐿𝐵=[−20.000,−20.000,−20.000,−20.000,−20.000,−20.000] 𝑈 𝐵 = [ 20 . 000 , 20 . 000 , 20 . 000 , 20 . 000 , 20 . 000 , 20 . 000 ] ( 9 ) 2.2 Planta de los Cuatro Tanques La Planta de los Cuatro Tanques es un sistema real, ubicado en una sección del Departamento de Ingeniería de Sistemas y Automática en el laboratorio L1 de la Escuela Técnica Superior de Ingeniería de la Universidad de Sevilla. Es un sistema creado para la realización de prácticas de asignaturas de los distintos estudios impartidos en la ETSI, para trabajos de fin de curso como este TFM y para investigación. El sistema es una versión de la planta original presentada en [7], estando constituida por 4 tanques de agua interconectados entre sí por un sistema de tuberías con dos válvulas que hacen recircular el flujo. El sistema posee un estado completo de orden 4, siendo dos estados medidos (tanques 1 y 2) y los dos restantes observados. El esquema de la planta se muestra en la siguiente figura: 1 Los estados seleccionados a controlar son el 2,3,8,9,14,15
10 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Figura 2.1 Planta de los cuatro tanques 2.2.1 Funcionamiento La altura de los dos tanques que están situados en la parte inferior (1 y 2) son las variables a controlar ℎ,ℎ. Los tanques 3 y 4, en la parte superior, tienen un desagüe que vierte en los tanques inferiores, mientras que los inferiores vierten en un depósito colector abajo del todo. En este depósito hay dos bombas que impulsan los flujos 𝑞,𝑞 (variables de control), que a su vez se dividen en dos ramas según la fracción 𝛾,𝛾, según el porcentaje de apertura de las válvulas, que se mantiene constante. De esta forma, el caudal 𝛾𝑞 entra en el tanque 1 y el caudal (1−𝛾)𝑞 entrará en el tanque 4, que descarga sobre el T2. Del mismo modo, el caudal 𝛾𝑞 entra en el tanque 2 y el caudal (1−𝛾)𝑞 entrará en el tanque 3, que descarga sobre el T1. 2.2.2 Modelo del sistema La dinámica no lineal del sistema queda expresada por medio de las siguientes ecuaciones: 1) 𝐴 = − 𝑎 2 𝑔 ℎ + 𝑎 2 𝑔 ℎ + 𝛾 2) 𝐴 =−𝑎2𝑔ℎ+𝑎2𝑔ℎ+𝛾 3) 𝐴 = − 𝑎 2 𝑔 ℎ + ( 1 − 𝛾 ) ( 10 )
Modelos de sistemas 11 4) 𝐴 = − 𝑎 2 𝑔 ℎ + ( 1 − 𝛾 ) Con los siguientes parámetros: Parámetro Descripción Valor A Sección de cada uno de los tanques. 0 . 3 𝑚 𝜸 𝒂 Apertura de la válvula a. 0 . 3 𝜸 𝒃 Apertura de la válvula b. 0 . 4 𝒂𝒊 Sección equivalente de los conductos de descarga de los tanques. 𝑎 = 1 . 3104 ∙ 10 𝑚 𝑎 = 1 . 5074 ∙ 10 𝑚 𝑎 = 9 . 2673 ∙ 10 𝑚 𝑎 = 8 . 8164 ∙ 10 𝑚 Tabla 2-1 Parámetros de la planta 4T Las limitaciones en los niveles de líquido y en los caudales aportados: 0 . 2 𝑚 ≤ ℎ ≤ 1 . 2 𝑚 0 𝑚 ℎ ≤ 𝑞 ≤ 3 𝑚 ℎ ( 11 ) 2.2.2.1 Linealización Se linealiza el modelo dinámico en torno al siguiente punto de funcionamiento: 𝑋 = 0 . 7292 0 . 8192 0 . 6594 0 . 9408 , 𝑈 = 1 . 948 2 . 0 , 𝑌 = 0 . 7292 0 . 8102 ( 12 ) Donde 𝑋=[ℎ,ℎ,ℎ,ℎ],𝑈=[𝑞,𝑞],𝑌=[ℎ,ℎ]. El resultado se puede estructurar en espacio de estados con las siguientes matrices: 𝐴 = 0 . 9434 0 0 0 . 9832 0 . 0421 0 0 0 . 0336 0 0 0 0 0 . 9579 0 0 0 . 9664 ( 13 )
12 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. 𝐵 = 0 . 0139 0 0 0 . 0185 0 0.0324 0 . 0278 0 𝐶 = 1 0 0 0 0 1 0 0 Las restricciones del sistema: 𝐿 𝐵 = − ( 0 . 5292 , 0 . 6102 , 0 . 4594 , 0 . 7408 ) 𝑈𝐵=(0.4708,0.3989,0.5406,0.2592) 𝐿𝐵=−(1.948,2.0) 𝑈 𝐵 = ( 1 . 052 , 1 . 0 ) ( 14 )
MPC y SPCIES 19 TiempoFista Entrada de tipo TIME Variable de tiempo cuyo valor sirve para observar cuánto tiempo ha estado ejecutándose el algoritmo FISTA. XD Entrada de tipo Array of REAL Realimentación del estado actual del sistema. UK Salida de tipo Array of REAL Acción de control a aplicar en el instante k sobre el sistema. Tabla 3-2 Entradas y salidas del bloque MPC 3.4 Funcionamiento del código generado 3.4.1 Function Block MPC En el apartado 3 del ANEXO B se muestran los dos fragmentos de código que se han generado y que están contenidos en el FB MPC. Están introducidos ya en el software de programación de autómatas Codesys, como se podía observar en la Figura 3.3. La explicación de la mayoría de las variables y sentencias está incluida en forma de comentarios de código, aunque se realizarán ciertas observaciones importantes en el siguiente apartado (3.4.1.1). En este caso, el sistema a controlar es el Centro de Procesamiento de Datos (sección 2.1). 3.4.1.1 Funcionamiento del FB MPC Se podría resumir el algoritmo con el esquema mostrado a continuación. Entradas: XR, UR, UM, MANUAL, BOOLTM, TiempoFista IF MANUAL = TRUE, THEN (Modo manual) Aplicar UK=UM IF BOOLTM = TRUE THEN (si hay nuevo tiempo de muestreo) Ejecutar observador de estado END IF ELSE (Modo automático) IF BOOLTM=TRUE THEN (si hay nuevo tiempo de muestreo) Reactivar algoritmo FISTA y observador de estado END IF IF NOT BOOLFISTAEND (empezar el algoritmo FISTA) [Nota 1] Realizar NumCiclesFista iteraciones del algoritmo [Nota 2]
20 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Calcular el valor residual Γ IF ‖𝚪‖≤𝝐 THEN (si se consigue un error menor que la tolerancia establecida) Establecer la UK calculada por el algoritmo Cambiar el valor del flag BOOLFISTAEND = TRUE (termina el algoritmo) ELSE IF TiempoFista > TiempoFistaMáximo (salida por exceso de tiempo) [Nota 3] Calcular U con una ley de control auxiliar Cambiar el valor del flag BOOLFISTAEND = TRUE (termina el algoritmo) END IF ELSE (el algoritmo FISTA ha convergido) IF NOT OBSERVADORHECHO THEN (si no se ha actualizado el observador en este Tm) Actualizar observador END IF END IF (Fin del algoritmo FISTA) END IF (Fin del modo automático) Algoritmo 3.2 Algoritmo del controlador MPC [Nota 1] BOOLFISTAEND es un booleano que indica si el algoritmo FISTA está en proceso (FALSE) o ya ha terminado (TRUE). [Nota 2] Se realiza un número determinado de iteraciones en cada ciclo del autómata para asegurar que no se bloquean el resto de las tareas de la CPU, puesto que el algoritmo podría no converger de forma rápida. Esto es crucial en sistemas de tiempo real como los PLC, debido a que estas otras tareas mencionadas podrían ser críticas (seguridad, control de procesos…). [Nota 3] Se establece el Tiempo Fista Máximo como un % sobre el tiempo de muestreo. Por ejemplo, si el tiempo de muestreo son 30 segundos, y establecemos el factor maxTiempoFista = 0.5 (ver ANEXO B, apartado 3), el tiempo máximo que se le da al algoritmo para converger es de 15 segundos. La filosofía de funcionamiento es la siguiente: partiendo de las entradas del bloque, lo primero que se comprueba en cada ciclo es si está en modo manual o automático. Si el modo es manual, la salida del bloque será un bypass de la que se haya establecido en la entrada UM. Si está en modo automático, se inicia el algoritmo FISTA. Se ejecutan ‘numCiclesFista’ ciclos (un número pequeño para no saturar la CPU), y se comprueba si se ha alcanzado la tolerancia. Si se ha alcanzado, se actualiza en valor de la salida UK y se restablecen las variables para cuando llegue un nuevo tiempo de muestreo. En el caso de que no se
MPC y SPCIES 21 haya alcanzado la tolerancia deseada, se guarda el proceso ejecutado hasta el momento y se pospone para continuar en el siguiente ciclo del autómata, desde el mismo punto en el que se encontraba. Esto se repite bien hasta que se alcance la tolerancia deseada, o bien cuando haya pasado un límite de 𝑇𝑖𝑒𝑚𝑝𝑜𝐹𝑖𝑠𝑡𝑎>𝑚𝑎𝑥𝑇𝑖𝑒𝑚𝑝𝑜𝐹𝑖𝑠𝑡𝑎∗𝑆𝑎𝑚𝑝𝑙𝑒𝑇𝑖𝑚𝑒, con 𝑚𝑎𝑥𝑇𝑖𝑒𝑚𝑝𝑜𝐹𝑖𝑠𝑡𝑎∈[0,1]. En el caso de alcanzar el timeout, se aplica una ley de control alternativa, como bien podría ser un LQR o similar. En el siguiente apartado se mostrará la integración del bloque del MPC con el resto de FBs que componen el sistema. 3.4.2 FBD completo Los autómatas programables, en general, funcionan de manera cíclica, ejecutando continuamente el bucle principal programado en su interior. La temporalización de este bucle, no obstante, sí que puede ser ajustada a uno de los dos modelos de la siguiente figura: Figura 3.4 Funcionamiento cíclico en los PLC. Fuente: [1] En nuestro caso, seguiremos el esquema “(a) - ciclo periódico”, pudiendo establecer la siguiente línea de tiempo para cuadrar todas las tareas de la CPU:
22 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Figura 3.5 Líneas de tiempo Dentro del bloque MPC se ejecutarían las N iteraciones del algoritmo Fista, mientras que si hubiera más tareas programadas en el autómata, se ejecutarían después de la simulación del sistema, antes de ponerse en espera. En este primer caso, la planta se está simulando a través de su modelo lineal, con las matrices de espacio de estados dentro de un FB. Podemos ver la estructura completa dentro del software de simulación Codesys, implementada en un bloque de programa tipo FBD (Function Block Diagram). Figura 3.6 FBD del MPC con simulación del Datacenter en Codesys El primer bloque, TON, es un contador de tiempo que tiene dos funciones: Llevar el control del tiempo de ejecución del algoritmo FISTA (variable “tiempoF”). Dar valor al flag “BoolTM”, que indica la llegada de un nuevo tiempo de muestreo. Es
MPC y SPCIES 23 importante, por como está programado el algoritmo del MPC, que esta variable booleana esté activa durante únicamente un ciclo de autómata. En cada ciclo del autómata se ejecutan los tres bloques de forma ordenada (de izquierda a derecha), de forma que cuando el temporizador indica un nuevo tiempo de muestreo, el MPC genera una nueva Uk en función de sus entradas, y luego esta acción de control es computada junto al modelo del sistema en el último bloque. Finalmente, la salida de la planta (estado del sistema) se almacena en la variable Xk. 3.5 Simulación del Centro de Procesamiento de Datos en Codesys En este apartado se muestra la primera simulación del Centro de Procesamiento de Datos, ejecutada en Codesys con la estructura mostrada en la Figura 3.6. Las matrices de control fueron introducidas en Spcies al generar el código del MPC (ver sección 3.3 - Generación del código con la herramienta SPCIES), y son las siguientes: Q = 10 ∙ I 𝑅 = 𝐼 ( 24 ) Además de otros parámetros como el número de iteraciones del algoritmo FISTA, la tolerancia, el tiempo de muestreo o el máximo tiempo de ejecución del algoritmo. Parámetro Valor numCiclesFista 10 Tol 0.01 SampleTime 5 s maxTiempoFista 0.5 Tabla 3-3 Parámetros de la simulación La simulación se ha ejecutado por muestras, de forma que cada punto en la siguiente gráfica equivale a un tiempo de muestreo (5 segundos). Además, por simplicidad, se están utilizando las variables incrementales, con valores en torno al punto de linealización.
24 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Figura 3.7 Simulación Centro de Procesamiento de Datos en Codesys Se pueden observar seis ejes, correspondiendo cada uno a una variable controlada 𝑋[1..6]. Se representa en negro la referencia dada 𝑋, y en color el valor de la variable real 𝑋. El experimento realizado es el siguiente: Se inicia en modo manual, cuya acción de control aplicada es: 𝑈 = [ 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 ] ( 25 ) El primer cambio de tendencia corresponde a una transición al modo automático, en el que la referencia establecida es: 𝑋 = [ 2 . 09 , 2 . 08 , 2 . 08 , 2 . 11 , 2 . 02 , 2 . 02 ] 𝑈 = [ 2 . 0 , 2 . 0 , 2 . 0 , 2 . 0 , 2 . 0 , 2 . 0 ] ( 26 ) Una vez estabilizado el sistema, se mantiene el modo automático y se establece un nuevo estado de referencia (el mismo que se alcanzó en el modo manual): 𝑋 = [ 5 . 231 , 5 . 217 , 5 . 2045 , 5 . 2715 , 5 . 044 , 5 . 044 ] 𝑈 = [ 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 ] ( 27 )
MPC y SPCIES 25 Como se puede observar en la Figura 3.7, el controlador está realizando su labor de forma correcta, llevando en pocos tiempos de muestreo el sistema a la referencia establecida. También mencionar que en 𝑋 existe algo de overshoot antes de alcanzar el régimen permanente, siendo esta la dinámica más lenta junto a 𝑋 y 𝑋. Por el contrario, las dinámicas más rápidas las encontramos en 𝑋,𝑋 y 𝑋.
27 4 VALIDACIÓN DE SPCIES EN EL ENTORNO DE SIEMENS Recordemos que uno de los objetivos principales de este trabajo es probar la implementación del código generado para un control MPC mediante SPCIES en autómatas Siemens® y su validación en un entorno realista basado en HIL. En el laboratorio de control disponemos de varios PLC S-1200, así como de interfaces HMI, ordenadores con el software necesario, tarjetas de adquisición de datos, materiales auxiliares como cables, portafusibles y otras herramientas como destornilladores u osciloscopios. En la siguiente tabla se enumeran los elementos más importantes utilizados: Ítem Modelo / versión Hardware PLC S-1200 CPU 12/14C AC/DC/RLY v4.2 Tarjeta I/O Analógicas AI 4x13BIT/AQ 2x14BIT HMI KTP 700 Basic PN Tarjeta adquisición de datos National Instruments USB 6211 Software TIA PORTAL Versión 13 + SP2 QUARC - Matlab R2013b Tabla 4-1 Hardware y software empleado 4.1 Tia Portal v.13 TIA Portal (Totally Integrated Automation Portal) es el software de Siemens que permite el acceso a toda su gama de productos de automatización, desde programación de autómatas, hasta integración de sistemas MES para control de producción y otros servicios para la industria 4.0. En este caso hacemos uso de este portal para la programación del autómata que va a integrar el control MPC y también la simulación de la planta en los posteriores apartados de esta memoria.
28 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Hay que destacar que los PLC Siemens no utilizan los lenguajes de programación IEC 61131-3 tal cual los vimos en la sección 3.4.1.1, sino que existen otros lenguajes de programación equivalentes (STEP 7), que guardan ciertas diferencias, principalmente de sintaxis [8]. Esto provoca que el código generado para Codesys o Unity no sea al 100% compatible con Siemens, y haya que realizar una “traducción” para su uso en este nuevo entorno. Actualmente el grupo de investigación está trabajando y a punto de terminar una versión actualizada de SPCIES que también incluya STEP 7 como lenguaje para la generación de código. Lenguaje estándar Siemens STEP 7 Ladder (LD) Kontaktplan (KOP) Function Block Diagram (FBD) Funktionsplan (FUP) Structured text (ST) Structured Control Language (SCL) Tabla 4-2 Lenguajes de programación 4.1.1 Entorno La vista del proyecto es la siguiente: Figura 4.1 Entorno TIA Portal En la parte izquierda se encuentra el árbol del proyecto, donde se muestran todos los elementos, como la configuración de dispositivos en la cual especificaremos el hardware conectado; también se encuentran bloques de programa, tablas de visualización/forzado de variables, traces para la
Validación de SPCIES en el entorno de SIEMENS 35 estado de referencia (el mismo que se alcanzó en el modo manual): 𝑋 = [ 5 . 231 , 5 . 217 , 5 . 2045 , 5 . 2715 , 5 . 044 , 5 . 044 ] 𝑈 = [ 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 , 5 . 0 ] ( 31 ) El resultado, visualizado en el propio Trace de TIA Portal es el siguiente: Figura 4.9 Resultado del experimento – trace Para poder visualizar correctamente los valores numéricos, se pueden exportar los datos del Trace a un archivo.csv (hoja de cálculo), que a su vez puede ser importado en Matlab para graficarlos cómodamente. close; clf; uiopen('C:\...\Trace datacenter X.csv',1); X1=Main_DBXK1; X2=Main_DBXK2; X3=Main_DBXK3; X4=Main_DBXK4; X5=Main_DBXK5; X6=Main_DBXK6; XR1=Main_DBXR1; XR2=Main_DBXR2; XR3=Main_DBXR3; XR4=Main_DBXR4; XR5=Main_DBXR5; XR6=Main_DBXR6; T=Xms03052118020820110UTC; K=Sample; figure subplot(6,1,1) title('Evolución de X[i]') plot(T,X1,'r','linewidth',1) title('Evolución de X[i]') hold on plot(T,XR1,'b','linewidth',1) ylabel('X1') subplot(6,1,2) plot(T,X2,'r','linewidth',1)
36 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. hold on plot(T,XR2,'b','linewidth',1) ylabel('X2') subplot(6,1,3) plot(T,X3,'r','linewidth',1) hold on plot(T,XR3,'b','linewidth',1) ylabel('X3') subplot(6,1,4) plot(T,X4,'r','linewidth',1) hold on plot(T,XR4,'b','linewidth',1) ylabel('X4') subplot(6,1,5) plot(T,X5,'r','linewidth',1) hold on plot(T,XR5,'b','linewidth',1) ylabel('X5') subplot(6,1,6) plot(T,X6,'r','linewidth',1) hold on plot(T,XR6,'b','linewidth',1) ylabel('X6') xlabel('Tiempo [s]') Código 4-1 Creación de las gráficas en Matlab
Validación de SPCIES en el entorno de SIEMENS 37 Figura 4.10 Resultados del experimento – Matlab En este caso se han mantenido las variables incrementales, aunque se ha elegido la escala de tiempo real. Se puede observar que el control se ejecuta de forma bastante ideal, debido a que la planta se está simulando con el mismo modelo lineal que utiliza el controlador.
39 5 HARDWARE-IN-THE-LOOP El siguiente paso lógico en este estudio es tratar de simular un sistema dinámico completo, con las ecuaciones dinámicas no lineales, y comprobar el funcionamiento del MPC en condiciones no ideales. Además, la simulación de la planta se va a realizar también de forma externa al autómata, para conseguir unas condiciones lo más reales posibles, mediante un Hardware-in-the-Loop (HIL). En la siguiente imagen se muestra la configuración montada en el Laboratorio de Control para la realización del HIL. 5.1 Elección del sistema Aunque la idea inicial de este trabajo era la de continuar con la planta del Centro de Procesamiento de Datos, debido a ciertas imposibilidades técnicas, finalmente se ha optado por controlar otro sistema distinto: la Planta de los Cuatro Tanques (ver sección 2.2). Estas dificultades son debidas principalmente al hardware disponible en el laboratorio, ya que el Centro de Procesamiento de Datos tiene seis estados controlables y por lo tanto necesitaríamos al menos 6 entradas y 6 salidas analógicas. Sin embargo, los PLC Siemens disponibles mejor equipados, con tarjetas de I/O analógicas, disponen de hasta 3 salidas analógicas. Además, las tarjetas de adquisición de datos National Instruments que se están usando tienen solo dos salidas analógicas, por lo que habría que emplear tres al mismo tiempo, conectadas en paralelo, con sus consecuentes dificultades. No obstante, sí que se ha realizado un análisis de posibles alternativas para mantener el sistema original. Servidor OPC: OPC UA (Object-Linking-and-Embedding Process Control Unified Architecture) es un tipo de servidor, open access, concebido para el intercambio de información en redes de entornos industriales [9]. Posee la típica estructura cliente-servidor, de tal manera que cualquier dispositivo (con permiso) en la red puede acceder en modo lectura y/o escritura al servidor, proporcionando así una base de datos online y en tiempo real del estado de la planta y todas las variables de los procesos. Este sistema es especialmente útil para control y visualización de sistemas de procesos tipo SCADA, y también sería una opción viable para atajar el problema de la limitación de entradas/salidas analógicas del PLC, dado que se realizaría la conexión a través de Ethernet.
40 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Figura 5.1 Estructura OPC Server Por otra parte, los dispositivos S-1200 disponibles en el laboratorio poseen la versión de firmware 4.2, mientras que la funcionalidad de albergar y acceder a los servidores OPC fue añadida en la actualización 4.4, por lo que se requeriría una actualización del software de las CPU. Como problema añadido, la versión 4.4 del firmware de los PLC sólo sería compatible con las versiones de TIA Portal a partir de la v14 [10]. Dado que la licencia disponible en el laboratorio es de la versión 13, esta opción queda descartada. SIMATIC NET: antes de que Siemens añadiera la funcionalidad de los OPC servers a sus autómatas, existía una alternativa llamada SIMATIC NET, que consistía en un módulo adicional conectable al autómata que básicamente realiza la misma función que el servidor, pero de forma integrada. Esta solución requiere de la adquisición de hardware y otra licencia de software específica, por un valor superior a los 2.000 €, por lo que también queda descartada. Figura 5.2 Módulo SIMATIC NET Ethernet + servidor Access: Otra opción es crear un servidor propio a través de una herramienta tipo Access y conectar el autómata vía Ethernet. Esta opción quedó descartada debido a la inexperiencia del alumno con esta herramienta y las limitaciones de plazo para la finalización del TFM.
Hardware-in-the-Loop 41 SIMATIC Target 1500S™ for Simulink®: se trata de una nueva funcionalidad disponible para los nuevos autómatas de la serie S-1500. Permite crear directamente el HIL, conectando el PLC y Simulink a través de un toolbox. Esta opción sería muy interesante puesto que es exactamente lo que tratamos de realizar en esta sección, pero quedó descartada debido a que los autómatas S-1500 del departamento han sido adquiridos muy recientemente, y aún están siendo puestos a punto antes de estar disponibles para investigación. Con todo, teniendo en cuenta que el objetivo principal de este TFM es explorar las posibilidades de los controladores MPC generados con SPCIES en PLC Siemens, y no necesariamente vinculados al Centro de Procesamiento de Datos, la decisión final es la elección de la Planta de los Cuatro Tanques para la implementación del Hardware-in-the-Loop. 5.2 Hardware-in-the-Loop La tecnología Hardware-in-the-Loop es comúnmente utilizada para el desarrollo y prueba de sistemas complejos; en una simulación de este tipo, una parte del sistema real o de su entorno es sustituida por un modelo numérico [11]. En nuestro caso, la parte correspondiente al control se va a llevar a cabo en el sistema real, el PLC S-1200 programado con el MPC generado a través de SPCIES. Sin embargo, la planta controlada (4T), es sustituida por su modelo dinámico completo, cuyas ecuaciones se desarrollaron en la sección 2.2. La implementación de la planta se realizará en un modelo de Simulink (Matlab R2013b), el cual mediante el software QUARC puede ser conectado a las tarjetas de adquisición de datos National Instruments, a su vez conectadas con el autómata y la tarjeta de I/O analógicas (ver Tabla 4-1 Hardware y software empleado) y también permite programar simulaciones en tiempo real. El esquema de montaje es el siguiente: Figura 5.3 Esquema del HIL Y el montaje real en el laboratorio se puede ver a continuación:
42 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Figura 5.4 Montaje del HIL en el laboratorio 5.3 MPC para la Planta de los Cuatro Tanques En la sección 2.2.2 se explicó el modelo de esta planta, y a continuación se muestran los parámetros establecidos para la generación del código del MPC: Parámetro Valor numCiclesFista 5 Tol 0.01 SampleTime 5 s maxTiempoFista 0.8 Tabla 5-1 Parámetros MPC 4T El tiempo de muestreo son 5 segundos, que es el tiempo usado en la discretización de la planta linealizada, y se ha aumentado el maxTiempoFista a 0.8 para que el porcentaje de tiempo de ciclo
Hardware-in-the-Loop 43 que la CPU dedica a este algoritmo sea mayor. Las matrices de control Q y R son las siguientes: 𝑄 = 50 ∙ 𝐼 𝑅 = 2 ∙ 𝐼 ( 32 ) Cabe mencionar que en este caso se va a controlar el sistema en variables absolutas, por mantener la coherencia con el modelo completo de la planta. En la configuración de SPCIES se han marcado algunas opciones distintas con respecto al código generado para el Centro de Procesamiento de Datos. En concreto se ha activado la opción de incluir el bloque SSTO en la generación del bloque MPC (ver Tabla 3-1). Por ello, el código generado será algo distinto y puede verse en el ANEXO D.1, aunque el funcionamiento es muy similar. La transcripción del código a STEP 7 se ha hecho con el método de la sección 4.1.2. 5.4 Conexionado La Planta de los Cuatro Tanques tiene un estado completo de orden cuatro, pero en realidad solo se controlan y miden dos de ellos, por lo que necesitaremos dos entradas y dos salidas analógicas. Las direcciones de memoria del PLC se muestran en la siguiente tabla, donde se han empleado las 2 entradas y 1 salida analógica de la CPU, y 1 salida analógica del módulo adicional I/O analog. Variable Señal Ubicación física Dirección 𝒚 𝟏 = 𝒉 𝟏 AI0 CPU, AI0 %IW64 𝒚 𝟐 = 𝒉 𝟐 AI1 CPU, AI1 %IW66 𝒖 𝟏 = 𝑸 𝒂 AQ0 CPU, AQ0 %QW80 𝒖 𝟐 = 𝑸 𝒃 AQ1 Tarjeta IO analog, AQ1 %QW98 Tabla 5-2 Conexionado de las I/O analógicas Las entradas analógicas del PLC corresponden a la medición de los estados de la planta (las alturas de los tanques 1 y 2), mientras que las salidas analógicas son las salidas del bloque MPC, la acción de control (caudales Qa y Qb). 5.5 Acondicionamiento de señales Al trabajar con señales reales se hace necesario un módulo de acondicionamento de señal, mediante el cual se convierte de señal eléctrica a valores numéricos y viceversa.
44 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. Las entradas analógicas tienen una codificación en voltaje de 0 a 10 V, que es convertido a un valor tipo INT, entre 0 y 27658. Las salidas analógicas tienen una codificación en voltaje entre -10 y 10 V, convertido desde un valor tipo INT entre -27648 y +27648. Para realizar las conversiones en el software TIA Portal, se emplean los módulos “NORM_X” y “SCALE_X”, que nos permiten normalizar y escalar valores a los tipos de variables y rangos adecuados. Figura 5.5 Módulos NORM y SCALE. Fuente: [12] Por cada señal física, se necesitan tres variables en el PLC, de forma que una de ellas corresponde al INT medido o escrito en el pin de I/O analógica, otra será el valor de tensión del cable, y la tercera será el valor numérico que se lee o escribe (el número útil en el programa del autómata). Variables de entrada Variables de salida 𝑯𝟏 EA0 Valor de EA0 en el pin de entrada analógica. 𝐼𝑁𝑇 ∈ [ 0 , 27648 ] UK[1] Variable numérica con el valor del caudal 1. 𝑅𝐸𝐴𝐿 ∈ [ − 10 , 10 ] 𝑸𝒂 EA0_escalado Valor de EA0 normalizado. 𝑅𝐸𝐴𝐿 ∈ [ 0 , 1 ] SA0_INT Valor de SA0 normalizado. 𝑅𝐸𝐴𝐿 ∈ [ 0 , 1 ] YK[1] Variable numérica con el valor de la altura 1. 𝑅𝐸𝐴𝐿 ∈ [ 0 , 10 ] SA0 Valor de SA0 escrito en el pin de salida. 𝐼𝑁𝑇 ∈ [ − 27648 , 27648 ] EA1 Valor de EA1 en el pin de UK[2] Variable numérica con el
Hardware-in-the-Loop 51 se sustituyen por dos entradas analógicas del módulo adicional Analog I/O (ver Tabla 4-1). Cambio de entradas analógicas Señal Dirección en PLC (antigua) Dirección en tarjeta A I/O (nueva) EA0 %IW64 %IW96 EA1 %IW66 %IW98 Tabla 5-4 Cambio de entradas analógicas Y tras este cambio repetimos el mismo experimento (Figura 5.10) de simulación de la Planta de los Cuatro Tanques en su versión lineal con Hardware-in-the-Loop: Figura 5.13 Simulación 4T-HIL (lineal) Finalmente, el error se da por resuelto y se comprueba que el estado queda completamente estabilizado en las referencias indicadas. Con esto, se ha demostrado la capacidad del código de MPC generado con SPCIES e implementado en un autómata Siemens para controlar un sistema externo, real y complejo (en este caso emulado con un equivalente virtual mediante HIL). 5.8.2 Simulación de la planta no lineal En las etapas finales de la realización de este trabajo se comenzaron a realizar algunas pruebas y simulaciones con el modelo del sistema no lineal de la planta, presentado en la sección 5.7.2. Sin embargo, por las restricciones de tiempo se decidió finalmente no abarcar este apartado en el alcance del proyecto.
53 6 CONCLUSIÓN 6.1 Síntesis Este trabajo comenzó con la elección de dos sistemas reales y multivariables para la realización del estudio. A continuación, se indagó en la formulación del control predictivo basado en modelos, así como en las posibilidades de implementación de estos problemas de optimización en sistemas embebidos a través de distintos algoritmos específicos. Utilizando la herramienta SPCIES, se generó el código de un controlador MPC para cada uno de los sistemas en lenguajes de programación de la IEC 61131-3, y se trabajó en la exportación de estos a STEP 7 para ser utilizados en TIA Portal para autómatas Siemens. Con ello, se realizaron simulaciones de laboratorio en contextos distintos: para el sistema “Centro de Procesamiento de Datos”, se realizó un experimento simulando el modelo del sistema sobre la propia CPU del autómata, mientras que para la “Planta de los Cuatro Tanques” se realizó el montaje de un Hardware-in-the-Loop, con el que se obtuvieron resultados más realistas al integrar el modelo completo no lineal en Simulink. El objetivo principal del TFM, que se ha conseguido alcanzar finalmente con las simulaciones anteriormente mencionadas, es la validación de la aptitud de los controladores predictivos basados en modelos generados a través de la herramienta SPCIES e implementados en PLC Siemens para el control de sistemas reales, en un contexto de simulaciones realistas mediante HIL. 6.2 Trabajo futuro Durante la realización de este TFM se han detectado oportunidades de mejora, así como nuevas líneas de trabajo con las que continuar el estudio. Se enumeran algunas de ellas a continuación: Explorar formulaciones distintas además del “Equality MPC”, que permitan soluciones subóptimas en el caso de que se disponga de menor capacidad de procesamiento. Explorar los resultados con otros algoritmos de resolución de problemas de optimización a parte del algoritmo FISTA. Simulación del Centro de Procesamiento de Datos con su modelo completo no lineal en un HIL, al igual que se ha hecho con la planta de los cuatro tanques, sorteando alguno de los obstáculos descritos en la sección 5.1, como, por ejemplo: o Utilización de los PLC S-1500 para la integración con Simulink directa a través del toolbox SIMATIC Target for 1500S.
54 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. o Creación y utilización de un servidor OPC hosteado en el propio PLC S1200 tras la actualización del firmware de la CPU a una versión más reciente. Prueba del MPC generado para el “Centro de Procesamiento de Datos” en el centro de servidores real, ya que el departamento mantiene relación con los responsables de este. 6.3 Conclusiones A la vista de los resultados obtenidos en este TFM, se puede concluir que la factibilidad del uso de la herramienta SPCIES para la generación de controladores MPC programables en autómatas Siemens es positiva. Sin duda los PLC Siemens están ampliamente extendidos en la industria, y sus usos son muy diversos, desde control de procesos de producción hasta la optimización de la temperatura en los servidores de un centro de procesamiento de datos. Se ha de trabajar en la automatización del proceso de obtención de código en STEP 7 desde SPCIES y no a través de una transcripción de un código intermedio; de hecho, la consecución de este objetivo por parte del grupo de investigación GEPOC es inminente. El empleo de herramientas derivadas de los gemelos digitales, como en este caso la emulación de la planta mediante su modelo matemático integrado en un Hardware-in-the-loop, ofrece muchos beneficios en las tareas de ingeniería [13]. Gracias a ello se pueden disponer en etapas iniciales del estudio modelos muy detallados y similares a la planta real, lo cual puede proporcionar resultados importantes que cambien el transcurso del proyecto desde su fase inicial.
55 REFERENCIAS [1] P. Krupa, D. Limon and T. Alamo, "Implementation of Model Predictive Control in Programmable Logic Controllers," in IEEE Transactions on Control Systems Technology, vol. 29, no. 3, pp. 1117-1130, May 2021, doi: 10.1109/TCST.2020.2992959. [2] T. A. Johansen, "Toward Dependable Embedded Model Predictive Control," in IEEE Systems Journal, vol. 11, no. 2, pp. 1208-1219, June 2017, doi: 10.1109/JSYST.2014.2368129. [3] D. Kouzoupis, A. Zanelli, H. Peyrl, and H. J. Ferreau, “Towards proper assessment of QP algorithms for embedded model predictive control,” in Proc. Eur. Control Conf. (ECC), Jul. 2015, pp. 2609–2616. [4] A. Beck and M. Teboulle, “A fast iterative shrinkage-thresholding algorithm for linear inverse problems,” SIAM J. Imag. Sci., vol. 2, no. 1, pp. 183–202, Jan. 2009. [5] Y. Nesterov, Introductory Lectures on Convex Optimization: A Basic Course, vol. 87. New York, NY, USA: Springer, 2013. [6] P. Krupa, “Desarrollo de una aplicación para la implementación de controladores predictivos en sistemas embebidos industriales”, Trabajo fin de máster, Dpto. Ingeniería de Sistemas y Automática, U.S. Sevilla, España, 2017. [7] Karl H. Johansson, “The quadruple-tank process”, IEEE Transactions on Control Systems Technology, vol 8, 2000. [8] SIEMENS. 2014, SIMATIC STEP 7 Basic V13 SP1 Manual de Sistema. [9] SIEMENS. (2022). OPC UA – Open Platform Communications Unified Architecture [Online]. Disponible: https://new.siemens.com/global/en/products/automation/industrialcommunication/opc-
56 Validación de controladores predictivos implementados en PLCs de Siemens mediante la herramienta SPCIES. Aplicación al control de un centro de procesos de datos. ua.html?acz=1&gclid=CjwKCAjwoMSWBhAdEiwAVJ2ndj5ZIwJi3mBEKFHX9wHSN0HoG d_a8z8pEmNa4WPbJsEwYvq9xTkmORoCC4QQAvD_BwE . [10] SIEMENS. (2022). Versión de firmware V4.4 liberada para el S7-1200 [Online]. Disponible: https://support.industry.siemens.com/cs/document/109771672/versi%C3%B3n-de- firmware-v4-4-liberada-para-el-s7-1200?dti=0&lc=es-ES [11] S. Piyaratna et al., "Digital RF processing system for Hardware-in-the-Loop simulation," 2013 International Conference on Radar, 2013, pp. 554-559, doi: 10.1109/RADAR.2013.6652048. [12] SIEMENS. (2022). SCALE_X (Scale) and NORM_X (Normalize) instructions [Online]. Disponible: https://support.industry.siemens.com/cs/mdm/91696622?c=59852219403&lc=en-AE [13] Orive, D., Iriondo, N., Marcos, M., Casquero, O. (2019). Hacia la puesta en marcha virtual de células robotizadas basada en gemelo digital. En XL Jornadas de Automática: libro de actas, Ferrol, 4-6 de septiembre de 2019 (pp. 147-154).
ANEXO A
1. M=20, L=6 2. 𝒔 = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 2.275 1.696 1.683 0.917 0.436 0.204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.656 0.842 1.833 2.177 2.234 2.188 2.438 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.793 1.152 1.521 2.304 2.688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.379 1.920 1.521 0.768 0.384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.565 0.494 0.424 0.353 0.283 0.212 0.071 0 0 0 0 0 0 0 0 0 0 0 0 0 0.565 0.636 0.706 0.777 0.847 0.918 1.059 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ 3. 𝑲𝒕= [96000,96000,72000,72000,72000,48000,60000,60000,60000,36000,48000, 12000,24000,24000,24000,48000,60000,12000,36000,48000] unit:J/K 4. 𝑞= 𝜌𝑆𝑉,,unit:kg/m3 𝒒𝒂= [0.836,0.836,0.627,0.313,0.331,0.209,0.232,0.697,0.813,0.470,0.581,0.145, 0.290,0.097,0.097,0.197,0.247,0.049,0.148,0.197] 5. 𝑃, =[4400,4400,3300,3300,3300,2200,2750,2750,2750,1650,2200,550,1100,1100,11 00,2200,2750,550,1650,2200], unit: W.
ANEXO B
ANEXO C
C.1 FUNCTION_BLOCK "MPC" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 VAR_INPUT XR : Array[1..6] of Real := 6(0.0); UR : Array[1..6] of Real := 6(0.0); UM : Array[1..6] of Real := 6(3.0); MANUAL : Bool := False; BOOLTM : Bool := True; TiempoFista : Time := T#0ms; XD : Array[1..6] of Real; END_VAR VAR_OUTPUT UK : Array[1..6] of Real := 6(0.0); END_VAR VAR A : Array[1..6, 1..6] of Real := 0.9573926, 6(0.0), 0.9573926, 6(0.0), 0.9435713, 6(0.0), 0.9344941, 6(0.0), 0.9799945, 6(0.0), 6(0.9799945); B : Array[1..6, 1..6] of Real := 0.03214297, 0.01243282, 4(0.0), 0.0296334, 0.01482309, 5(0.0), 0.05873662, 6(0.0), 0.01726736, 0.05179554, 6(0.0), 2(0.01009078), 4(0.0), 0.008822431, 0.01135913; C : Array[1..6, 1..6] of Real := 1.0, 6(0.0), 1.0, 6(0.0), 1.0, 6(0.0), 1.0, 6(0.0), 1.0, 6(0.0), 6(1.0); UF : Array[1..6] of Real := 6(0.0); XF : Array[1..20] of Real := 20(0.0); YF : Array[1..20] of Real := 20(0.0); LBX : Array[1..6] of Real := 6(-16.0); UBX : Array[1..6] of Real := 6(30.0); LBU : Array[1..6] of Real := 6(-20.0); UBU : Array[1..6] of Real := 6(20.0); HU : Array[1..6] of Real; QQ : Array[1..6] of Real := 6(10.0); RR : Array[1..6] of Real := 6(1.0); SampleTime : Time := T#1s; TOL : Real := 0.01; NumCiclesFista : Int := 5; maxTiempoFista : Real := 0.5; Alfa : Array[1..6, 1..6, 1..30] of Real := 0.3027541, -0.300972, -0.2994079, -0.2980975, -
0.2970388, -0.2962059, -0.2955625, -0.2950714, -0.2946993, -0.2944189, -0.294208, - 0.2940496, -0.2939307, -0.2938415, -0.2937745, -0.2937241, -0.2936862, -0.2936577, - 0.2936362, -0.29362, -0.2936077, -0.2935985, -0.2935915, -0.2935862, -0.2935821, -0.2935791, -0.2935768, -0.293575, -0.2935737, -0.2935727, 151(0.0), 0.003383001, 0.006302822, 0.008709069, 0.01062294, 0.01210727, 0.01323927, 0.01409347, 0.01473398, 0.0152126, 0.01556967, 0.01583592, 0.01603451, 0.01618273, 0.01629347, 0.01637629, 0.01643829, 0.01648478, 0.01651965, 0.01654586, 0.01656556, 0.01658038, 0.01659155, 0.01659996, 0.01660631, 0.0166111, 0.01661471, 0.01661744, 0.0166195, 0.01662106, 0.3027541, - 0.3011248, -0.299727, -0.2985837, -0.2976817, -0.2969883, -0.2964641, -0.2960719, - 0.2957801, -0.2955637, -0.2954034, -0.2952847, -0.2951966, -0.2951312, -0.2950827, - 0.2950465, -0.2950196, -0.2949995, -0.2949844, -0.2949732, -0.2949648, -0.2949584, - 0.2949537, -0.2949502, -0.2949475, -0.2949455, -0.294944, -0.2949429, -0.294942, -0.2949414, 121(0.0), 0.002119802, 0.003786078, 0.004963326, 0.005712734, 0.006136478, 0.006336979, 0.006397573, 0.006378256, 0.006318676, 0.006243248, 0.006165966, 0.006094132, 0.006030985, 0.005977421, 0.005933088, 0.005897036, 0.005868101, 0.005845108, 0.005826979, 0.005812772, 0.005801693, 0.005793087, 0.005786424, 0.005781278, 0.005777312, 0.005774261, 0.005771917, 0.005770119, 0.00576874, 0.0, 0.002539805, 0.004567052, 0.006040595, 0.007025073, 0.007631024, 0.007970698, 0.008136695, 0.008196866, 0.008197142, 0.008166796, 0.00812351, 0.008077361, 0.008033661, 0.007994856, 0.007961749, 0.007934257, 0.007911862, 0.007893879, 0.007879594, 0.007868343, 0.007859541, 0.007852693, 0.00784739, 0.007843297, 0.007840149, 0.007837733, 0.007835885, 0.007834473, 0.007833396, 0.2983834, -0.2933837, -0.2893164, - 0.2861912, -0.28389, -0.2822454, -0.2810926, -0.2802939, -0.2797437, -0.2793654, -0.2791051, -0.2789255, -0.2788011, -0.2787144, -0.2786538, -0.278611, -0.2785808, -0.2785592, - 0.2785437, -0.2785325, -0.2785244, -0.2785185, -0.2785142, -0.278511, -0.2785086, - 0.2785069, -0.2785056, -0.2785046, -0.2785039, -0.2785033, 180(0.0), 0.295513, -0.2912045, - 0.287695, -0.2849644, -0.282915, -0.281418, -0.2803461, -0.2795896, -0.279061, -0.2786943, - 0.2784411, -0.278267, -0.2781475, -0.2780655, -0.2780095, -0.2779711, -0.2779449, -0.277927, -0.2779148, -0.2779064, -0.2779007, -0.2778968, -0.2778941, -0.2778923, -0.2778911, - 0.2778902, -0.2778896, -0.2778893, -0.277889, -0.2778888, 180(0.0), 0.3099015, -0.3095864, - 0.3092859, -0.3090016, -0.3087346, -0.3084854, -0.3082546, -0.3080418, -0.307847, - 0.3076693, -0.3075081, -0.3073624, -0.3072312, -0.3071136, -0.3070083, -0.3069144, - 0.3068308, -0.3067565, -0.3066907, -0.3066324, -0.306581, -0.3065355, -0.3064954, - 0.3064601, -0.3064291, -0.3064017, -0.3063777, -0.3063566, -0.306338, -0.3063218, 151(0.0), 0.000629176, 0.001227366, 0.001791736, 0.002320342, 0.002812089, 0.003266655, 0.003684393, 0.004066218, 0.004413497, 0.004727936, 0.005011479, 0.005266218, 0.00549432, 0.005697958, 0.005879269, 0.006040314, 0.006183051, 0.006309318, 0.006420824, 0.006519144, 0.006605718, 0.006681855, 0.00674874, 0.006807437, 0.006858903, 0.00690399, 0.006943459, 0.006977986, 0.007008168, 0.3099015, -0.3095821, - 0.3092787, -0.3089927, -0.3087249, -0.308476, -0.3082461, -0.3080348, -0.3078417, - 0.3076661, -0.3075071, -0.3073637, -0.3072348, -0.3071193, -0.3070161, -0.3069242, - 0.3068425, -0.30677, -0.3067057, -0.3066489, -0.3065988, -0.3065545, -0.3065155, -0.3064811, -0.3064509, -0.3064243, -0.306401, -0.3063804, -0.3063624, -0.3063466; Beta : Array[1..6, 1..6, 1..31] of Real := 0.3162278, 0.3181002, 0.319762, 0.3211676, 0.3223123, 0.3232186, 0.3239223, 0.3244614, 0.324871, 0.3251805, 0.3254136, 0.3255889, 0.3257205, 0.3258195, 0.3258938, 0.3259497, 0.3259917, 0.3260234, 0.3260472, 0.3260652, 0.3260789, 0.3260891, 0.3260969, 0.3261028, 0.3261073, 0.3261106, 0.3261132, 0.3261152, 0.3261167, 0.3261178, 0.07970803, 0.0, 0.003573712, 0.006724128, 0.009367798, 0.0115019, 0.0131766, 0.01446548, 0.01544485, 0.01618311, 0.01673697, 0.01715139, 0.01746111, 0.01769251, 0.01786544, 0.01799475, 0.01809154, 0.01816404, 0.01821841, 0.01825923, 0.0182899, 0.01831296, 0.01833032, 0.01834339, 0.01835325, 0.01836068, 0.01836629, 0.01837053, 0.01837372, 0.01837614, 0.01837797, 0.07519753, 0.0, 0.002295698, 0.0042287, 0.005684372, 0.006672789, 0.007276964, 0.007601375, 0.007740643, 0.007767583, 0.007732747, 0.007668645, 0.007594807, 0.007522114, 0.007456008, 0.007398682, 0.0073505, 0.007310878, 0.007278811, 0.007253167, 0.007232846, 0.007216859, 0.007204352, 0.007194612, 0.007187055, 0.007181209, 0.007176698, 0.007173224, 0.007170552, 0.007168501, 0.007166927, 0.02931794, 124(0.0), 0.3162278, 0.3179388, 0.3194215, 0.3206447, 0.3216162, 0.3223671, 0.3229371, 0.3233649, 0.3236839, 0.3239209, 0.3240966, 0.324227, 0.3243237, 0.3243956, 0.324449, 0.3244887, 0.3245184, 0.3245405, 0.324557, 0.3245694, 0.3245786, 0.3245856, 0.3245908, 0.3245947, 0.3245977, 0.3245999, 0.3246015,
0.3246028, 0.3246037, 0.3246044, 0.007175705, 0.0, 0.002712642, 0.004969488, 0.006670098, 0.00784374, 0.008589962, 0.009025047, 0.009251497, 0.009347454, 0.009367278, 0.009346373, 0.009306562, 0.009260585, 0.009215386, 0.00917438, 0.00913891, 0.009109175, 0.009084787, 0.009065103, 0.009049407, 0.009037006, 0.009027282, 0.009019702, 0.009013822, 0.009009279, 0.00900578, 0.009003094, 0.009001036, 0.008999463, 0.008998263, 0.1181276, 155(0.0), 0.3162278, 0.3216168, 0.3261381, 0.3296996, 0.3323721, 0.3343088, 0.3356799, 0.3366365, 0.3372985, 0.3377553, 0.3380702, 0.3382879, 0.3384389, 0.3385441, 0.3386178, 0.3386697, 0.3387066, 0.3387328, 0.3387516, 0.3387652, 0.3387751, 0.3387823, 0.3387876, 0.3387914, 0.3387943, 0.3387964, 0.338798, 0.3387992, 0.3388, 0.3388007, 0.01024207, 186(0.0), 0.3162278, 0.3209064, 0.3248211, 0.3279336, 0.3303092, 0.3320662, 0.3333358, 0.3342378, 0.3348709, 0.3353115, 0.3356164, 0.3358264, 0.3359707, 0.3360697, 0.3361375, 0.3361838, 0.3362156, 0.3362373, 0.336252, 0.3362622, 0.3362691, 0.3362738, 0.336277, 0.3362792, 0.3362807, 0.3362817, 0.3362825, 0.3362829, 0.3362833, 0.3362835, 0.114397, 186(0.0), 0.3162278, 0.3165496, 0.3168571, 0.3171487, 0.317423, 0.3176793, 0.3179173, 0.3181368, 0.3183382, 0.318522, 0.318689, 0.3188401, 0.3189762, 0.3190984, 0.3192078, 0.3193055, 0.3193925, 0.3194698, 0.3195384, 0.3195991, 0.3196528, 0.3197002, 0.3197419, 0.3197788, 0.3198112, 0.3198397, 0.3198648, 0.3198869, 0.3199062, 0.3199232, 0.04858424, 0.0, 0.000643336, 0.001257441, 0.00183903, 0.002385716, 0.002895987, 0.003369147, 0.003805223, 0.004204864, 0.004569226, 0.004899859, 0.005198598, 0.005467475, 0.005708625, 0.005924226, 0.006116439, 0.006287367, 0.006439021, 0.006573301, 0.006691983, 0.006796709, 0.006888984, 0.006970184, 0.007041555, 0.00710422, 0.007159189, 0.007207365, 0.007249553, 0.007286472, 0.007318756, 0.04838146, 155(0.0), 0.3162278, 0.316554, 0.3168646, 0.3171579, 0.3174329, 0.317689, 0.317926, 0.3181441, 0.3183436, 0.3185253, 0.3186901, 0.3188387, 0.3189725, 0.3190925, 0.3191997, 0.3192953, 0.3193803, 0.3194558, 0.3195227, 0.3195819, 0.3196342, 0.3196803, 0.319721, 0.3197569, 0.3197884, 0.3198161, 0.3198406, 0.319862, 0.3198808, 0.3198973, 0.007536554; DD : Array[1..6, 1..6] of Real := 1.0, 6(0.0), 1.0, 6(0.0), 1.0, 6(0.0), 1.0, 6(0.0), 1.0, 6(0.0), 6(1.0); YK : Array[1..186] of Real; XK : Array[1..186] of Real; XKS : Array[1..186] of Real; T : Real := 0.0; T1 : Real := 0.0; NORM : Real := 0.0; Z : Array[1..360] of Real; VIG : Array[1..186] of Real; ContCiclosFista : Int := 0; BoolFistaEND : Bool := True; ObservadorHecho : Bool := False; END_VAR VAR_TEMP aux1 : Real; aux2 : Real; I : Int; J : Int; K : Int; END_VAR
BEGIN IF #MANUAL = TRUE THEN (* Manual Mode *) IF #BOOLTM THEN (* To do at start of sample time *) (* Update booleans *) #BoolFistaEND := TRUE; (* Apply UK *) FOR #J := 1 TO 6 DO #UK[#J] := #UM[#J]; END_FOR; (* Update HU vector *) FOR #J := 1 TO 6 DO #HU[#J] := #UK[#J] - #UF[#J]; END_FOR; END_IF; ELSE (* Automatic mode *) IF #BOOLTM THEN (* To do at start of sample time *) (* Update boolean variables *) #BoolFistaEND := FALSE; (* Reactivate Fista Algorithm *) #ObservadorHecho := FALSE; (* Reactivate State Observer *)
END_IF; (* End of to do at start of sample time *) IF NOT #BoolFistaEND THEN (* Start of Fista algorithm *) FOR #ContCiclosFista := 1 TO #NumCiclesFista DO //MIN(IN1:=_sint_in_, IN2:=_sint_in_) (* Calculate Z: initial restriction *) #Z[1] := - (- #XR[1] * #QQ[1] - (#YK[1] + #A[1, 1] * #YK[7] + #A[2, 1] * #YK[8] + #A[3, 1] * #YK[9] + #A[4, 1] * #YK[10] + #A[5, 1] * #YK[11] + #A[6, 1] * #YK[12])) / #QQ[1]; #Z[1] := MAX(IN1 := MIN(IN1 := #Z[1], IN2 := #UBX[1]), IN2 := #LBX[1]); #Z[2] := - (- #XR[2] * #QQ[2] - (#YK[2] + #A[1, 2] * #YK[7] + #A[2, 2] * #YK[8] + #A[3, 2] * #YK[9] + #A[4, 2] * #YK[10] + #A[5, 2] * #YK[11] + #A[6, 2] * #YK[12])) / #QQ[2]; #Z[2] := MAX(IN1 := MIN(IN1 := #Z[2], IN2 := #UBX[2]), IN2 := #LBX[2]); #Z[3] := - (- #XR[3] * #QQ[3] - (#YK[3] + #A[1, 3] * #YK[7] + #A[2, 3] * #YK[8] + #A[3, 3] * #YK[9] + #A[4, 3] * #YK[10] + #A[5, 3] * #YK[11] + #A[6, 3] * #YK[12])) / #QQ[3]; #Z[3] := MAX(IN1 := MIN(IN1 := #Z[3], IN2 := #UBX[3]), IN2 := #LBX[3]); #Z[4] := - (- #XR[4] * #QQ[4] - (#YK[4] + #A[1, 4] * #YK[7] + #A[2, 4] * #YK[8] + #A[3, 4] * #YK[9] + #A[4, 4] * #YK[10] + #A[5, 4] * #YK[11] + #A[6, 4] * #YK[12])) / #QQ[4]; #Z[4] := MAX(IN1 := MIN(IN1 := #Z[4], IN2 := #UBX[4]), IN2 := #LBX[4]); #Z[5] := - (- #XR[5] * #QQ[5] - (#YK[5] + #A[1, 5] * #YK[7] + #A[2, 5] * #YK[8] + #A[3, 5] * #YK[9] + #A[4, 5] * #YK[10] + #A[5, 5] * #YK[11] + #A[6, 5] * #YK[12])) / #QQ[5]; #Z[5] := MAX(IN1 := MIN(IN1 := #Z[5], IN2 := #UBX[5]), IN2 := #LBX[5]); #Z[6] := - (- #XR[6] * #QQ[6] - (#YK[6] + #A[1, 6] * #YK[7] + #A[2, 6] * #YK[8] + #A[3, 6] * #YK[9] + #A[4, 6] * #YK[10] + #A[5, 6] * #YK[11] + #A[6, 6] * #YK[12])) / #QQ[6]; #Z[6] := MAX(IN1 := MIN(IN1 := #Z[6], IN2 := #UBX[6]), IN2 := #LBX[6]); #Z[7] := - (- #UR[1] * #RR[1] - (#B[1, 1] * #YK[7] + #B[2, 1] * #YK[8] + #B[3, 1] * #YK[9] + #B[4, 1] * #YK[10] + #B[5, 1] * #YK[11] + #B[6, 1] * #YK[12])) / #RR[1]; #Z[7] := MAX(IN1 := MIN(IN1 := #Z[7], IN2 := #UBU[1]), IN2 := #LBU[1]);
#Z[8] := - (- #UR[2] * #RR[2] - (#B[1, 2] * #YK[7] + #B[2, 2] * #YK[8] + #B[3, 2] * #YK[9] + #B[4, 2] * #YK[10] + #B[5, 2] * #YK[11] + #B[6, 2] * #YK[12])) / #RR[2]; #Z[8] := MAX(IN1 := MIN(IN1 := #Z[8], IN2 := #UBU[2]), IN2 := #LBU[2]); #Z[9] := - (- #UR[3] * #RR[3] - (#B[1, 3] * #YK[7] + #B[2, 3] * #YK[8] + #B[3, 3] * #YK[9] + #B[4, 3] * #YK[10] + #B[5, 3] * #YK[11] + #B[6, 3] * #YK[12])) / #RR[3]; #Z[9] := MAX(IN1 := MIN(IN1 := #Z[9], IN2 := #UBU[3]), IN2 := #LBU[3]); #Z[10] := - (- #UR[4] * #RR[4] - (#B[1, 4] * #YK[7] + #B[2, 4] * #YK[8] + #B[3, 4] * #YK[9] + #B[4, 4] * #YK[10] + #B[5, 4] * #YK[11] + #B[6, 4] * #YK[12])) / #RR[4]; #Z[10] := MAX(IN1 := MIN(IN1 := #Z[10], IN2 := #UBU[4]), IN2 := #LBU[4]); #Z[11] := - (- #UR[5] * #RR[5] - (#B[1, 5] * #YK[7] + #B[2, 5] * #YK[8] + #B[3, 5] * #YK[9] + #B[4, 5] * #YK[10] + #B[5, 5] * #YK[11] + #B[6, 5] * #YK[12])) / #RR[5]; #Z[11] := MAX(IN1 := MIN(IN1 := #Z[11], IN2 := #UBU[5]), IN2 := #LBU[5]); #Z[12] := - (- #UR[6] * #RR[6] - (#B[1, 6] * #YK[7] + #B[2, 6] * #YK[8] + #B[3, 6] * #YK[9] + #B[4, 6] * #YK[10] + #B[5, 6] * #YK[11] + #B[6, 6] * #YK[12])) / #RR[6]; #Z[12] := MAX(IN1 := MIN(IN1 := #Z[12], IN2 := #UBU[6]), IN2 := #LBU[6]); (* Calculate Z: model restrictions *) #K := 6; FOR #J := 1 TO 29 DO #Z[#J * 12 + 1] := - (- #XR[1] * #QQ[1] - (- #YK[#K + 1] + #A[1, 1] * #YK[#K + 7] + #A[2, 1] * #YK[#K + 8] + #A[3, 1] * #YK[#K + 9] + #A[4, 1] * #YK[#K + 10] + #A[5, 1] * #YK[#K + 11] + #A[6, 1] * #YK[#K + 12])) / #QQ[1]; #Z[#J * 12 + 1] := MAX(IN1 := MIN(IN1 := #Z[#J * 12 + 1], IN2 := #UBX[1]), IN2 := #LBX[1]); #Z[#J * 12 + 2] := - (- #XR[2] * #QQ[2] - (- #YK[#K + 2] + #A[1, 2] * #YK[#K + 7] + #A[2, 2] * #YK[#K + 8] + #A[3, 2] * #YK[#K + 9] + #A[4, 2] * #YK[#K + 10] + #A[5, 2] * #YK[#K + 11] + #A[6, 2] * #YK[#K + 12])) / #QQ[2]; #Z[#J * 12 + 2] := MAX(IN1 := MIN(IN1 := #Z[#J * 12 + 2], IN2 := #UBX[2]), IN2 := #LBX[2]); #Z[#J * 12 + 3] := - (- #XR[3] * #QQ[3] - (- #YK[#K + 3] + #A[1, 3] * #YK[#K + 7] + #A[2, 3] * #YK[#K + 8] + #A[3, 3] * #YK[#K + 9] + #A[4, 3] * #YK[#K + 10] + #A[5, 3] * #YK[#K + 11] + #A[6, 3] * #YK[#K + 12])) / #QQ[3]; #Z[#J * 12 + 3] := MAX(IN1 := MIN(IN1 := #Z[#J * 12 + 3], IN2 := #UBX[3]), IN2 := #LBX[3]); #Z[#J * 12 + 4] := - (- #XR[4] * #QQ[4] - (- #YK[#K + 4] + #A[1, 4] * #YK[#K + 7] + #A[2, 4] *
FOR #J := 1 TO 6 DO #UK[#J] := #Z[6 + #J] + #UF[#J]; END_FOR; END_IF; (* Exit by excess time *) // IF ("TIME_TO_REAL"(#TiempoFista) > #maxTiempoFista *"TIME_TO_REAL"(#SampleTime)) THEN (*#aux1:= "TIME_TO_REAL"(tiempo:=#TiempoFista, tiempo_r=>#aux1); #aux2:= "TIME_TO_REAL"(tiempo:=#SampleTime, tiempo_r=>#aux2); IF #aux1 > (#maxTiempoFista * #aux2) THEN*) IF (DINT_TO_REAL(TIME_TO_DINT(#TiempoFista)) > #maxTiempoFista * DINT_TO_REAL(TIME_TO_DINT(#SampleTime))) THEN #BoolFistaEND := TRUE; #T := 1.0; #T1 := 1.0; FOR #J := 1 TO 186 DO #YK[#J] := 0.0; END_FOR; (* Obtain UK *) FOR #J := 1 TO 6 DO #UK[#J] := #Z[6 + #J];//+ UF[J]; (*Ojo con las variables incrementales*) END_FOR; END_IF; END_IF; (* End of Fista algorithm *)
(* Call State Observer once Fista algorithm has finished *) IF #BoolFistaEND AND NOT #ObservadorHecho THEN #ObservadorHecho := TRUE; (* Update HU vector *) FOR #J := 1 TO 6 DO #HU[#J] := #UK[#J] - #UF[#J]; END_FOR; END_IF; (* End state observer *) END_IF; (* End of automatic mode *) (* End of program *) END_FUNCTION_BLOCK C.2 FUNCTION_BLOCK "Modelo_datacenter" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 VAR_INPUT UK : Array[1..6] of Real := 6(0.0); XK : Array[1..6] of Real := 6(0.0); BoolTM : Bool := False; END_VAR VAR_OUTPUT Xpunto : Array[1..6] of Real := 6(0.0);
END_VAR VAR A : Array[1..6, 1..6] of Real := 0.9573926, 6(0.0), 0.9573926, 6(0.0), 0.9435713, 6(0.0), 0.9344941, 6(0.0), 0.9799945, 6(0.0), 6(0.9799945); B : Array[1..6, 1..6] of Real := 0.03214297, 0.01243282, 4(0.0), 0.0296334, 0.01482309, 5(0.0), 0.05873662, 6(0.0), 0.01726736, 0.05179554, 6(0.0), 2(0.01009078), 4(0.0), 0.008822431, 0.01135913; END_VAR VAR_TEMP I : Int; J : Int; END_VAR BEGIN (*Calcular la salida del sistema*) (*Xpunto:=A*XK+B*UK; (*Falta el termino de la potencia (perturbación)*)*) IF #BoolTM THEN //Ejecutar sólo cada Tm porque las matrices del modelo SS están discretizadas cada ese Tm FOR #I := 1 TO 6 BY 1 DO #Xpunto[#I] := 0.0; (*---------------REVISAR ESTO-----------*) END_FOR; FOR #I := 1 TO 6 BY 1 DO FOR #J := 1 TO 6 BY 1 DO #Xpunto[#I] := #Xpunto[#I] + #A[#I, #J] * #XK[#J] + #B[#I, #J] * #UK[#J]; END_FOR; END_FOR;
ELSE (* Si no es Tm mantener la salida anterior. En principio no hace falta especificarlo... *) FOR #I := 1 TO 6 BY 1 DO #Xpunto[#I] := #XK[#I]; END_FOR; END_IF; END_FUNCTION_BLOCK
ANEXO D
Totally Integrated Automation Portal MPC [FB1] MPC Propiedades General Nombre MPC Número 1Tipo FB Idioma SCL Numeración automática Información Título Autor Comentario Familia Versión 0.1 ID personalizada Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Input Ysys Array[1..2] of Real No remanente True True False Ysys[1] Real 0.7292 No remanente True True False Ysys[2] Real 0.8102 No remanente True True False YR Array[1..2] of Real No remanente True True False YR[1] Real 0.7292 No remanente True True False YR[2] Real 0.8102 No remanente True True False UM Array[1..2] of Real No remanente True True False UM[1] Real 1.948 No remanente True True False UM[2] Real 2.0 No remanente True True False MANUAL Bool TRUE No remanente True True False BOOLTM Bool TRUE No remanente True True False TiempoFista Time T#0ms No remanente True True False Output UK Array[1..2] of Real No remanente True True False UK[1] Real 1.948 No remanente True True False UK[2] Real 2.0 No remanente True True False InOut Static AArray[1..4, 1..4] of Real No remanente True True False A[1,1] Real 0.9433584 No remanente True True False A[1,2] Real 0.0 No remanente True True False A[1,3] Real 0.04212554 No remanente True True False A[1,4] Real 0.0 No remanente True True False A[2,1] Real 0.0 No remanente True True False A[2,2] Real 0.9381841 No remanente True True False A[2,3] Real 0.0 No remanente True True False A[2,4] Real 0.0335518 No remanente True True False A[3,1] Real 0.0 No remanente True True False A[3,2] Real 0.0 No remanente True True False A[3,3] Real 0.9578745 No remanente True True False A[3,4] Real 0.0 No remanente True True False A[4,1] Real 0.0 No remanente True True False A[4,2] Real 0.0 No remanente True True False A[4,3] Real 0.0 No remanente True True False A[4,4] Real 0.9664482 No remanente True True False BArray[1..4, 1..2] of Real No remanente True True False B[1,1] Real 0.01388889 No remanente True True False B[1,2] Real 0.0 No remanente True True False B[2,1] Real 0.0 No remanente True True False B[2,2] Real 0.01851852 No remanente True True False B[3,1] Real 0.0 No remanente True True False B[3,2] Real 0.02777778 No remanente True True False B[4,1] Real 0.03240741 No remanente True True False B[4,2] Real 0.0 No remanente True True False CArray[1..2, 1..4] of Real No remanente True True False C[1,1] Real 1.0 No remanente True True False C[1,2] Real 0.0 No remanente True True False C[1,3] Real 0.0 No remanente True True False C[1,4] Real 0.0 No remanente True True False C[2,1] Real 0.0 No remanente True True False C[2,2] Real 1.0 No remanente True True False C[2,3] Real 0.0 No remanente True True False C[2,4] Real 0.0 No remanente True True False XF Array[1..4] of Real No remanente True True False XF[1] Real 0.7292436 No remanente True True False XF[2] Real 0.8102013 No remanente True True False XF[3] Real 0.6594047 No remanente True True False XF[4] Real 0.9407786 No remanente True True False UF Array[1..2] of Real No remanente True True False UF[1] Real 1.948 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario UF[2] Real 2.0 No remanente True True False YF Array[1..2] of Real No remanente True True False YF[1] Real 0.7292436 No remanente True True False YF[2] Real 0.8102013 No remanente True True False LBX Array[1..4] of Real No remanente True True False LBX[1] Real -0.5292436 No remanente True True False LBX[2] Real -0.6102013 No remanente True True False LBX[3] Real -0.4594047 No remanente True True False LBX[4] Real -0.7407786 No remanente True True False UBX Array[1..4] of Real No remanente True True False UBX[1] Real 0.4707564 No remanente True True False UBX[2] Real 0.3897987 No remanente True True False UBX[3] Real 0.5405953 No remanente True True False UBX[4] Real 0.2592214 No remanente True True False LBU Array[1..2] of Real No remanente True True False LBU[1] Real -1.948 No remanente True True False LBU[2] Real -2.0 No remanente True True False UBU Array[1..2] of Real No remanente True True False UBU[1] Real 1.052 No remanente True True False UBU[2] Real 1.0 No remanente True True False HU Array[1..2] of Real No remanente True True False HU[1] Real 0.0 No remanente True True False HU[2] Real 0.0 No remanente True True False QQ Array[1..4] of Real No remanente True True False QQ[1] Real 50.0 No remanente True True False QQ[2] Real 50.0 No remanente True True False QQ[3] Real 50.0 No remanente True True False QQ[4] Real 50.0 No remanente True True False RR Array[1..2] of Real No remanente True True False RR[1] Real 2.0 No remanente True True False RR[2] Real 2.0 No remanente True True False SampleTime Time T#5S No remanente True True False TOL Real 0.01 No remanente True True False NumCiclesFista Int 5 No remanente True True False maxTiempoFista Real 0.8 No remanente True True False Alfa Array[1..4, 1..4, 1..30] of Real No remanente True True False Alfa[1,1,1] Real 0.133411 No remanente True True False Alfa[1,1,2] Real -0.1330905 No remanente True True False Alfa[1,1,3] Real -0.1328135 No remanente True True False Alfa[1,1,4] Real -0.1325837 No remanente True True False Alfa[1,1,5] Real -0.1323992 No remanente True True False Alfa[1,1,6] Real -0.1322541 No remanente True True False Alfa[1,1,7] Real -0.1321415 No remanente True True False Alfa[1,1,8] Real -0.132054 No remanente True True False Alfa[1,1,9] Real -0.1319856 No remanente True True False Alfa[1,1,10] Real -0.131931 No remanente True True False Alfa[1,1,11] Real -0.1318866 No remanente True True False Alfa[1,1,12] Real -0.1318496 No remanente True True False Alfa[1,1,13] Real -0.1318179 No remanente True True False Alfa[1,1,14] Real -0.1317903 No remanente True True False Alfa[1,1,15] Real -0.1317657 No remanente True True False Alfa[1,1,16] Real -0.1317436 No remanente True True False Alfa[1,1,17] Real -0.1317235 No remanente True True False Alfa[1,1,18] Real -0.1317052 No remanente True True False Alfa[1,1,19] Real -0.1316883 No remanente True True False Alfa[1,1,20] Real -0.1316729 No remanente True True False Alfa[1,1,21] Real -0.1316587 No remanente True True False Alfa[1,1,22] Real -0.1316456 No remanente True True False Alfa[1,1,23] Real -0.1316337 No remanente True True False Alfa[1,1,24] Real -0.1316227 No remanente True True False Alfa[1,1,25] Real -0.1316127 No remanente True True False Alfa[1,1,26] Real -0.1316036 No remanente True True False Alfa[1,1,27] Real -0.1315952 No remanente True True False Alfa[1,1,28] Real -0.1315877 No remanente True True False Alfa[1,1,29] Real -0.1315808 No remanente True True False Alfa[1,1,30] Real -0.1315745 No remanente True True False Alfa[1,2,1] Real 0.0 No remanente True True False Alfa[1,2,2] Real 0.0 No remanente True True False Alfa[1,2,3] Real 0.0 No remanente True True False Alfa[1,2,4] Real 0.0 No remanente True True False Alfa[1,2,5] Real 0.0 No remanente True True False Alfa[1,2,6] Real 0.0 No remanente True True False Alfa[1,2,7] Real 0.0 No remanente True True False Alfa[1,2,8] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Alfa[1,2,9] Real 0.0 No remanente True True False Alfa[1,2,10] Real 0.0 No remanente True True False Alfa[1,2,11] Real 0.0 No remanente True True False Alfa[1,2,12] Real 0.0 No remanente True True False Alfa[1,2,13] Real 0.0 No remanente True True False Alfa[1,2,14] Real 0.0 No remanente True True False Alfa[1,2,15] Real 0.0 No remanente True True False Alfa[1,2,16] Real 0.0 No remanente True True False Alfa[1,2,17] Real 0.0 No remanente True True False Alfa[1,2,18] Real 0.0 No remanente True True False Alfa[1,2,19] Real 0.0 No remanente True True False Alfa[1,2,20] Real 0.0 No remanente True True False Alfa[1,2,21] Real 0.0 No remanente True True False Alfa[1,2,22] Real 0.0 No remanente True True False Alfa[1,2,23] Real 0.0 No remanente True True False Alfa[1,2,24] Real 0.0 No remanente True True False Alfa[1,2,25] Real 0.0 No remanente True True False Alfa[1,2,26] Real 0.0 No remanente True True False Alfa[1,2,27] Real 0.0 No remanente True True False Alfa[1,2,28] Real 0.0 No remanente True True False Alfa[1,2,29] Real 0.0 No remanente True True False Alfa[1,2,30] Real 0.0 No remanente True True False Alfa[1,3,1] Real 0.0 No remanente True True False Alfa[1,3,2] Real 0.0 No remanente True True False Alfa[1,3,3] Real 0.0 No remanente True True False Alfa[1,3,4] Real 0.0 No remanente True True False Alfa[1,3,5] Real 0.0 No remanente True True False Alfa[1,3,6] Real 0.0 No remanente True True False Alfa[1,3,7] Real 0.0 No remanente True True False Alfa[1,3,8] Real 0.0 No remanente True True False Alfa[1,3,9] Real 0.0 No remanente True True False Alfa[1,3,10] Real 0.0 No remanente True True False Alfa[1,3,11] Real 0.0 No remanente True True False Alfa[1,3,12] Real 0.0 No remanente True True False Alfa[1,3,13] Real 0.0 No remanente True True False Alfa[1,3,14] Real 0.0 No remanente True True False Alfa[1,3,15] Real 0.0 No remanente True True False Alfa[1,3,16] Real 0.0 No remanente True True False Alfa[1,3,17] Real 0.0 No remanente True True False Alfa[1,3,18] Real 0.0 No remanente True True False Alfa[1,3,19] Real 0.0 No remanente True True False Alfa[1,3,20] Real 0.0 No remanente True True False Alfa[1,3,21] Real 0.0 No remanente True True False Alfa[1,3,22] Real 0.0 No remanente True True False Alfa[1,3,23] Real 0.0 No remanente True True False Alfa[1,3,24] Real 0.0 No remanente True True False Alfa[1,3,25] Real 0.0 No remanente True True False Alfa[1,3,26] Real 0.0 No remanente True True False Alfa[1,3,27] Real 0.0 No remanente True True False Alfa[1,3,28] Real 0.0 No remanente True True False Alfa[1,3,29] Real 0.0 No remanente True True False Alfa[1,3,30] Real 0.0 No remanente True True False Alfa[1,4,1] Real 0.0 No remanente True True False Alfa[1,4,2] Real 0.0 No remanente True True False Alfa[1,4,3] Real 0.0 No remanente True True False Alfa[1,4,4] Real 0.0 No remanente True True False Alfa[1,4,5] Real 0.0 No remanente True True False Alfa[1,4,6] Real 0.0 No remanente True True False Alfa[1,4,7] Real 0.0 No remanente True True False Alfa[1,4,8] Real 0.0 No remanente True True False Alfa[1,4,9] Real 0.0 No remanente True True False Alfa[1,4,10] Real 0.0 No remanente True True False Alfa[1,4,11] Real 0.0 No remanente True True False Alfa[1,4,12] Real 0.0 No remanente True True False Alfa[1,4,13] Real 0.0 No remanente True True False Alfa[1,4,14] Real 0.0 No remanente True True False Alfa[1,4,15] Real 0.0 No remanente True True False Alfa[1,4,16] Real 0.0 No remanente True True False Alfa[1,4,17] Real 0.0 No remanente True True False Alfa[1,4,18] Real 0.0 No remanente True True False Alfa[1,4,19] Real 0.0 No remanente True True False Alfa[1,4,20] Real 0.0 No remanente True True False Alfa[1,4,21] Real 0.0 No remanente True True False Alfa[1,4,22] Real 0.0 No remanente True True False Alfa[1,4,23] Real 0.0 No remanente True True False Alfa[1,4,24] Real 0.0 No remanente True True False Alfa[1,4,25] Real 0.0 No remanente True True False Alfa[1,4,26] Real 0.0 No remanente True True False Alfa[1,4,27] Real 0.0 No remanente True True False Alfa[1,4,28] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Alfa[1,4,29] Real 0.0 No remanente True True False Alfa[1,4,30] Real 0.0 No remanente True True False Alfa[2,1,1] Real 0.0 No remanente True True False Alfa[2,1,2] Real 0.0 No remanente True True False Alfa[2,1,3] Real 0.0001101752 No remanente True True False Alfa[2,1,4] Real 0.0002912908 No remanente True True False Alfa[2,1,5] Real 0.0005057609 No remanente True True False Alfa[2,1,6] Real 0.0007243527 No remanente True True False Alfa[2,1,7] Real 0.0009280452 No remanente True True False Alfa[2,1,8] Real 0.001106733 No remanente True True False Alfa[2,1,9] Real 0.001256744 No remanente True True False Alfa[2,1,10] Real 0.001378419 No remanente True True False Alfa[2,1,11] Real 0.001474267 No remanente True True False Alfa[2,1,12] Real 0.001547726 No remanente True True False Alfa[2,1,13] Real 0.001602437 No remanente True True False Alfa[2,1,14] Real 0.001641843 No remanente True True False Alfa[2,1,15] Real 0.001669006 No remanente True True False Alfa[2,1,16] Real 0.001686546 No remanente True True False Alfa[2,1,17] Real 0.001696648 No remanente True True False Alfa[2,1,18] Real 0.0017011 No remanente True True False Alfa[2,1,19] Real 0.001701342 No remanente True True False Alfa[2,1,20] Real 0.001698521 No remanente True True False Alfa[2,1,21] Real 0.001693539 No remanente True True False Alfa[2,1,22] Real 0.001687096 No remanente True True False Alfa[2,1,23] Real 0.001679734 No remanente True True False Alfa[2,1,24] Real 0.001671861 No remanente True True False Alfa[2,1,25] Real 0.001663786 No remanente True True False Alfa[2,1,26] Real 0.001655733 No remanente True True False Alfa[2,1,27] Real 0.001647865 No remanente True True False Alfa[2,1,28] Real 0.001640294 No remanente True True False Alfa[2,1,29] Real 0.001633095 No remanente True True False Alfa[2,1,30] Real 0.001626314 No remanente True True False Alfa[2,2,1] Real 0.1326793 No remanente True True False Alfa[2,2,2] Real -0.1321141 No remanente True True False Alfa[2,2,3] Real -0.1316341 No remanente True True False Alfa[2,2,4] Real -0.1312432 No remanente True True False Alfa[2,2,5] Real -0.130936 No remanente True True False Alfa[2,2,6] Real -0.1307011 No remanente True True False Alfa[2,2,7] Real -0.1305251 No remanente True True False Alfa[2,2,8] Real -0.1303951 No remanente True True False Alfa[2,2,9] Real -0.1302997 No remanente True True False Alfa[2,2,10] Real -0.1302297 No remanente True True False Alfa[2,2,11] Real -0.1301779 No remanente True True False Alfa[2,2,12] Real -0.1301393 No remanente True True False Alfa[2,2,13] Real -0.1301099 No remanente True True False Alfa[2,2,14] Real -0.130087 No remanente True True False Alfa[2,2,15] Real -0.1300688 No remanente True True False Alfa[2,2,16] Real -0.1300538 No remanente True True False Alfa[2,2,17] Real -0.1300413 No remanente True True False Alfa[2,2,18] Real -0.1300305 No remanente True True False Alfa[2,2,19] Real -0.1300211 No remanente True True False Alfa[2,2,20] Real -0.1300127 No remanente True True False Alfa[2,2,21] Real -0.1300052 No remanente True True False Alfa[2,2,22] Real -0.1299984 No remanente True True False Alfa[2,2,23] Real -0.1299923 No remanente True True False Alfa[2,2,24] Real -0.1299867 No remanente True True False Alfa[2,2,25] Real -0.1299816 No remanente True True False Alfa[2,2,26] Real -0.129977 No remanente True True False Alfa[2,2,27] Real -0.1299728 No remanente True True False Alfa[2,2,28] Real -0.1299689 No remanente True True False Alfa[2,2,29] Real -0.1299654 No remanente True True False Alfa[2,2,30] Real -0.1299623 No remanente True True False Alfa[2,3,1] Real 0.0 No remanente True True False Alfa[2,3,2] Real 0.0 No remanente True True False Alfa[2,3,3] Real 0.0 No remanente True True False Alfa[2,3,4] Real 0.0 No remanente True True False Alfa[2,3,5] Real 0.0 No remanente True True False Alfa[2,3,6] Real 0.0 No remanente True True False Alfa[2,3,7] Real 0.0 No remanente True True False Alfa[2,3,8] Real 0.0 No remanente True True False Alfa[2,3,9] Real 0.0 No remanente True True False Alfa[2,3,10] Real 0.0 No remanente True True False Alfa[2,3,11] Real 0.0 No remanente True True False Alfa[2,3,12] Real 0.0 No remanente True True False Alfa[2,3,13] Real 0.0 No remanente True True False Alfa[2,3,14] Real 0.0 No remanente True True False Alfa[2,3,15] Real 0.0 No remanente True True False Alfa[2,3,16] Real 0.0 No remanente True True False Alfa[2,3,17] Real 0.0 No remanente True True False Alfa[2,3,18] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Alfa[2,3,19] Real 0.0 No remanente True True False Alfa[2,3,20] Real 0.0 No remanente True True False Alfa[2,3,21] Real 0.0 No remanente True True False Alfa[2,3,22] Real 0.0 No remanente True True False Alfa[2,3,23] Real 0.0 No remanente True True False Alfa[2,3,24] Real 0.0 No remanente True True False Alfa[2,3,25] Real 0.0 No remanente True True False Alfa[2,3,26] Real 0.0 No remanente True True False Alfa[2,3,27] Real 0.0 No remanente True True False Alfa[2,3,28] Real 0.0 No remanente True True False Alfa[2,3,29] Real 0.0 No remanente True True False Alfa[2,3,30] Real 0.0 No remanente True True False Alfa[2,4,1] Real 0.0 No remanente True True False Alfa[2,4,2] Real 0.0 No remanente True True False Alfa[2,4,3] Real 0.0 No remanente True True False Alfa[2,4,4] Real 0.0 No remanente True True False Alfa[2,4,5] Real 0.0 No remanente True True False Alfa[2,4,6] Real 0.0 No remanente True True False Alfa[2,4,7] Real 0.0 No remanente True True False Alfa[2,4,8] Real 0.0 No remanente True True False Alfa[2,4,9] Real 0.0 No remanente True True False Alfa[2,4,10] Real 0.0 No remanente True True False Alfa[2,4,11] Real 0.0 No remanente True True False Alfa[2,4,12] Real 0.0 No remanente True True False Alfa[2,4,13] Real 0.0 No remanente True True False Alfa[2,4,14] Real 0.0 No remanente True True False Alfa[2,4,15] Real 0.0 No remanente True True False Alfa[2,4,16] Real 0.0 No remanente True True False Alfa[2,4,17] Real 0.0 No remanente True True False Alfa[2,4,18] Real 0.0 No remanente True True False Alfa[2,4,19] Real 0.0 No remanente True True False Alfa[2,4,20] Real 0.0 No remanente True True False Alfa[2,4,21] Real 0.0 No remanente True True False Alfa[2,4,22] Real 0.0 No remanente True True False Alfa[2,4,23] Real 0.0 No remanente True True False Alfa[2,4,24] Real 0.0 No remanente True True False Alfa[2,4,25] Real 0.0 No remanente True True False Alfa[2,4,26] Real 0.0 No remanente True True False Alfa[2,4,27] Real 0.0 No remanente True True False Alfa[2,4,28] Real 0.0 No remanente True True False Alfa[2,4,29] Real 0.0 No remanente True True False Alfa[2,4,30] Real 0.0 No remanente True True False Alfa[3,1,1] Real 0.005957451 No remanente True True False Alfa[3,1,2] Real -0.005901284 No remanente True True False Alfa[3,1,3] Real -0.00575742 No remanente True True False Alfa[3,1,4] Real -0.005561186 No remanente True True False Alfa[3,1,5] Real -0.005343842 No remanente True True False Alfa[3,1,6] Real -0.005128054 No remanente True True False Alfa[3,1,7] Real -0.004927553 No remanente True True False Alfa[3,1,8] Real -0.004748994 No remanente True True False Alfa[3,1,9] Real -0.004594311 No remanente True True False Alfa[3,1,10] Real -0.004462702 No remanente True True False Alfa[3,1,11] Real -0.004352007 No remanente True True False Alfa[3,1,12] Real -0.004259559 No remanente True True False Alfa[3,1,13] Real -0.00418266 No remanente True True False Alfa[3,1,14] Real -0.004118812 No remanente True True False Alfa[3,1,15] Real -0.004065814 No remanente True True False Alfa[3,1,16] Real -0.004021782 No remanente True True False Alfa[3,1,17] Real -0.003985135 No remanente True True False Alfa[3,1,18] Real -0.00395456 No remanente True True False Alfa[3,1,19] Real -0.003928977 No remanente True True False Alfa[3,1,20] Real -0.003907499 No remanente True True False Alfa[3,1,21] Real -0.003889402 No remanente True True False Alfa[3,1,22] Real -0.003874097 No remanente True True False Alfa[3,1,23] Real -0.003861102 No remanente True True False Alfa[3,1,24] Real -0.003850024 No remanente True True False Alfa[3,1,25] Real -0.003840544 No remanente True True False Alfa[3,1,26] Real -0.0038324 No remanente True True False Alfa[3,1,27] Real -0.003825376 No remanente True True False Alfa[3,1,28] Real -0.003819298 No remanente True True False Alfa[3,1,29] Real -0.003814018 No remanente True True False Alfa[3,1,30] Real -0.003809419 No remanente True True False Alfa[3,2,1] Real 0.0 No remanente True True False Alfa[3,2,2] Real 0.001675812 No remanente True True False Alfa[3,2,3] Real 0.003092708 No remanente True True False Alfa[3,2,4] Real 0.00423604 No remanente True True False Alfa[3,2,5] Real 0.005122564 No remanente True True False Alfa[3,2,6] Real 0.005787174 No remanente True True False Alfa[3,2,7] Real 0.00627128 No remanente True True False Alfa[3,2,8] Real 0.006615045 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Beta[3,1,30] Real 0.0 No remanente True True False Beta[3,1,31] Real 0.0 No remanente True True False Beta[3,2,1] Real 0.0 No remanente True True False Beta[3,2,2] Real 0.0 No remanente True True False Beta[3,2,3] Real 0.0 No remanente True True False Beta[3,2,4] Real 0.0 No remanente True True False Beta[3,2,5] Real 0.0 No remanente True True False Beta[3,2,6] Real 0.0 No remanente True True False Beta[3,2,7] Real 0.0 No remanente True True False Beta[3,2,8] Real 0.0 No remanente True True False Beta[3,2,9] Real 0.0 No remanente True True False Beta[3,2,10] Real 0.0 No remanente True True False Beta[3,2,11] Real 0.0 No remanente True True False Beta[3,2,12] Real 0.0 No remanente True True False Beta[3,2,13] Real 0.0 No remanente True True False Beta[3,2,14] Real 0.0 No remanente True True False Beta[3,2,15] Real 0.0 No remanente True True False Beta[3,2,16] Real 0.0 No remanente True True False Beta[3,2,17] Real 0.0 No remanente True True False Beta[3,2,18] Real 0.0 No remanente True True False Beta[3,2,19] Real 0.0 No remanente True True False Beta[3,2,20] Real 0.0 No remanente True True False Beta[3,2,21] Real 0.0 No remanente True True False Beta[3,2,22] Real 0.0 No remanente True True False Beta[3,2,23] Real 0.0 No remanente True True False Beta[3,2,24] Real 0.0 No remanente True True False Beta[3,2,25] Real 0.0 No remanente True True False Beta[3,2,26] Real 0.0 No remanente True True False Beta[3,2,27] Real 0.0 No remanente True True False Beta[3,2,28] Real 0.0 No remanente True True False Beta[3,2,29] Real 0.0 No remanente True True False Beta[3,2,30] Real 0.0 No remanente True True False Beta[3,2,31] Real 0.0 No remanente True True False Beta[3,3,1] Real 0.1414214 No remanente True True False Beta[3,3,2] Real 0.1427674 No remanente True True False Beta[3,3,3] Real 0.1439401 No remanente True True False Beta[3,3,4] Real 0.1449152 No remanente True True False Beta[3,3,5] Real 0.1456957 No remanente True True False Beta[3,3,6] Real 0.1463018 No remanente True True False Beta[3,3,7] Real 0.1467619 No remanente True True False Beta[3,3,8] Real 0.1471053 No remanente True True False Beta[3,3,9] Real 0.1473587 No remanente True True False Beta[3,3,10] Real 0.1475444 No remanente True True False Beta[3,3,11] Real 0.1476798 No remanente True True False Beta[3,3,12] Real 0.1477785 No remanente True True False Beta[3,3,13] Real 0.1478504 No remanente True True False Beta[3,3,14] Real 0.147903 No remanente True True False Beta[3,3,15] Real 0.1479416 No remanente True True False Beta[3,3,16] Real 0.1479702 No remanente True True False Beta[3,3,17] Real 0.1479915 No remanente True True False Beta[3,3,18] Real 0.1480074 No remanente True True False Beta[3,3,19] Real 0.1480196 No remanente True True False Beta[3,3,20] Real 0.1480289 No remanente True True False Beta[3,3,21] Real 0.1480362 No remanente True True False Beta[3,3,22] Real 0.1480419 No remanente True True False Beta[3,3,23] Real 0.1480465 No remanente True True False Beta[3,3,24] Real 0.1480502 No remanente True True False Beta[3,3,25] Real 0.1480533 No remanente True True False Beta[3,3,26] Real 0.1480558 No remanente True True False Beta[3,3,27] Real 0.1480579 No remanente True True False Beta[3,3,28] Real 0.1480597 No remanente True True False Beta[3,3,29] Real 0.1480612 No remanente True True False Beta[3,3,30] Real 0.1480625 No remanente True True False Beta[3,3,31] Real 0.01848987 No remanente True True False Beta[3,4,1] Real 0.0 No remanente True True False Beta[3,4,2] Real 0.0 No remanente True True False Beta[3,4,3] Real -4.8748E-6 No remanente True True False Beta[3,4,4] Real -2.20468E-5 No remanente True True False Beta[3,4,5] Real -5.61529E-5 No remanente True True False Beta[3,4,6] Real -0.0001071145 No remanente True True False Beta[3,4,7] Real -0.0001711539 No remanente True True False Beta[3,4,8] Real -0.0002428716 No remanente True True False Beta[3,4,9] Real -0.0003169854 No remanente True True False Beta[3,4,10] Real -0.0003892769 No remanente True True False Beta[3,4,11] Real -0.000456865 No remanente True True False Beta[3,4,12] Real -0.0005180908 No remanente True True False Beta[3,4,13] Real -0.0005722455 No remanente True True False Beta[3,4,14] Real -0.000619282 No remanente True True False Beta[3,4,15] Real -0.0006595683 No remanente True True False Beta[3,4,16] Real -0.0006937026 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Beta[3,4,17] Real -0.0007223845 No remanente True True False Beta[3,4,18] Real -0.0007463318 No remanente True True False Beta[3,4,19] Real -0.0007662305 No remanente True True False Beta[3,4,20] Real -0.0007827076 No remanente True True False Beta[3,4,21] Real -0.0007963189 No remanente True True False Beta[3,4,22] Real -0.0008075471 No remanente True True False Beta[3,4,23] Real -0.0008168042 No remanente True True False Beta[3,4,24] Real -0.0008244378 No remanente True True False Beta[3,4,25] Real -0.0008307383 No remanente True True False Beta[3,4,26] Real -0.0008359465 No remanente True True False Beta[3,4,27] Real -0.0008402609 No remanente True True False Beta[3,4,28] Real -0.0008438443 No remanente True True False Beta[3,4,29] Real -0.0008468298 No remanente True True False Beta[3,4,30] Real -0.000849326 No remanente True True False Beta[3,4,31] Real -0.02453372 No remanente True True False Beta[4,1,1] Real 0.0 No remanente True True False Beta[4,1,2] Real 0.0 No remanente True True False Beta[4,1,3] Real 0.0 No remanente True True False Beta[4,1,4] Real 0.0 No remanente True True False Beta[4,1,5] Real 0.0 No remanente True True False Beta[4,1,6] Real 0.0 No remanente True True False Beta[4,1,7] Real 0.0 No remanente True True False Beta[4,1,8] Real 0.0 No remanente True True False Beta[4,1,9] Real 0.0 No remanente True True False Beta[4,1,10] Real 0.0 No remanente True True False Beta[4,1,11] Real 0.0 No remanente True True False Beta[4,1,12] Real 0.0 No remanente True True False Beta[4,1,13] Real 0.0 No remanente True True False Beta[4,1,14] Real 0.0 No remanente True True False Beta[4,1,15] Real 0.0 No remanente True True False Beta[4,1,16] Real 0.0 No remanente True True False Beta[4,1,17] Real 0.0 No remanente True True False Beta[4,1,18] Real 0.0 No remanente True True False Beta[4,1,19] Real 0.0 No remanente True True False Beta[4,1,20] Real 0.0 No remanente True True False Beta[4,1,21] Real 0.0 No remanente True True False Beta[4,1,22] Real 0.0 No remanente True True False Beta[4,1,23] Real 0.0 No remanente True True False Beta[4,1,24] Real 0.0 No remanente True True False Beta[4,1,25] Real 0.0 No remanente True True False Beta[4,1,26] Real 0.0 No remanente True True False Beta[4,1,27] Real 0.0 No remanente True True False Beta[4,1,28] Real 0.0 No remanente True True False Beta[4,1,29] Real 0.0 No remanente True True False Beta[4,1,30] Real 0.0 No remanente True True False Beta[4,1,31] Real 0.0 No remanente True True False Beta[4,2,1] Real 0.0 No remanente True True False Beta[4,2,2] Real 0.0 No remanente True True False Beta[4,2,3] Real 0.0 No remanente True True False Beta[4,2,4] Real 0.0 No remanente True True False Beta[4,2,5] Real 0.0 No remanente True True False Beta[4,2,6] Real 0.0 No remanente True True False Beta[4,2,7] Real 0.0 No remanente True True False Beta[4,2,8] Real 0.0 No remanente True True False Beta[4,2,9] Real 0.0 No remanente True True False Beta[4,2,10] Real 0.0 No remanente True True False Beta[4,2,11] Real 0.0 No remanente True True False Beta[4,2,12] Real 0.0 No remanente True True False Beta[4,2,13] Real 0.0 No remanente True True False Beta[4,2,14] Real 0.0 No remanente True True False Beta[4,2,15] Real 0.0 No remanente True True False Beta[4,2,16] Real 0.0 No remanente True True False Beta[4,2,17] Real 0.0 No remanente True True False Beta[4,2,18] Real 0.0 No remanente True True False Beta[4,2,19] Real 0.0 No remanente True True False Beta[4,2,20] Real 0.0 No remanente True True False Beta[4,2,21] Real 0.0 No remanente True True False Beta[4,2,22] Real 0.0 No remanente True True False Beta[4,2,23] Real 0.0 No remanente True True False Beta[4,2,24] Real 0.0 No remanente True True False Beta[4,2,25] Real 0.0 No remanente True True False Beta[4,2,26] Real 0.0 No remanente True True False Beta[4,2,27] Real 0.0 No remanente True True False Beta[4,2,28] Real 0.0 No remanente True True False Beta[4,2,29] Real 0.0 No remanente True True False Beta[4,2,30] Real 0.0 No remanente True True False Beta[4,2,31] Real 0.0 No remanente True True False Beta[4,3,1] Real 0.0 No remanente True True False Beta[4,3,2] Real 0.0 No remanente True True False Beta[4,3,3] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Beta[4,3,4] Real 0.0 No remanente True True False Beta[4,3,5] Real 0.0 No remanente True True False Beta[4,3,6] Real 0.0 No remanente True True False Beta[4,3,7] Real 0.0 No remanente True True False Beta[4,3,8] Real 0.0 No remanente True True False Beta[4,3,9] Real 0.0 No remanente True True False Beta[4,3,10] Real 0.0 No remanente True True False Beta[4,3,11] Real 0.0 No remanente True True False Beta[4,3,12] Real 0.0 No remanente True True False Beta[4,3,13] Real 0.0 No remanente True True False Beta[4,3,14] Real 0.0 No remanente True True False Beta[4,3,15] Real 0.0 No remanente True True False Beta[4,3,16] Real 0.0 No remanente True True False Beta[4,3,17] Real 0.0 No remanente True True False Beta[4,3,18] Real 0.0 No remanente True True False Beta[4,3,19] Real 0.0 No remanente True True False Beta[4,3,20] Real 0.0 No remanente True True False Beta[4,3,21] Real 0.0 No remanente True True False Beta[4,3,22] Real 0.0 No remanente True True False Beta[4,3,23] Real 0.0 No remanente True True False Beta[4,3,24] Real 0.0 No remanente True True False Beta[4,3,25] Real 0.0 No remanente True True False Beta[4,3,26] Real 0.0 No remanente True True False Beta[4,3,27] Real 0.0 No remanente True True False Beta[4,3,28] Real 0.0 No remanente True True False Beta[4,3,29] Real 0.0 No remanente True True False Beta[4,3,30] Real 0.0 No remanente True True False Beta[4,3,31] Real 0.0 No remanente True True False Beta[4,4,1] Real 0.1414214 No remanente True True False Beta[4,4,2] Real 0.1432571 No remanente True True False Beta[4,4,3] Real 0.1448858 No remanente True True False Beta[4,4,4] Real 0.1462549 No remanente True True False Beta[4,4,5] Real 0.1473551 No remanente True True False Beta[4,4,6] Real 0.1482078 No remanente True True False Beta[4,4,7] Real 0.1488507 No remanente True True False Beta[4,4,8] Real 0.1493256 No remanente True True False Beta[4,4,9] Real 0.1496714 No remanente True True False Beta[4,4,10] Real 0.1499208 No remanente True True False Beta[4,4,11] Real 0.1500997 No remanente True True False Beta[4,4,12] Real 0.1502276 No remanente True True False Beta[4,4,13] Real 0.1503191 No remanente True True False Beta[4,4,14] Real 0.1503846 No remanente True True False Beta[4,4,15] Real 0.1504318 No remanente True True False Beta[4,4,16] Real 0.150466 No remanente True True False Beta[4,4,17] Real 0.150491 No remanente True True False Beta[4,4,18] Real 0.1505094 No remanente True True False Beta[4,4,19] Real 0.1505231 No remanente True True False Beta[4,4,20] Real 0.1505335 No remanente True True False Beta[4,4,21] Real 0.1505414 No remanente True True False Beta[4,4,22] Real 0.1505476 No remanente True True False Beta[4,4,23] Real 0.1505525 No remanente True True False Beta[4,4,24] Real 0.1505564 No remanente True True False Beta[4,4,25] Real 0.1505596 No remanente True True False Beta[4,4,26] Real 0.1505623 No remanente True True False Beta[4,4,27] Real 0.1505645 No remanente True True False Beta[4,4,28] Real 0.1505663 No remanente True True False Beta[4,4,29] Real 0.1505679 No remanente True True False Beta[4,4,30] Real 0.1505693 No remanente True True False Beta[4,4,31] Real 0.01681619 No remanente True True False Qref Array[1..4] of Real No remanente True True False Qref[1] Real 4.1 No remanente True True False Qref[2] Real 4.1 No remanente True True False Qref[3] Real 4.1 No remanente True True False Qref[4] Real 4.1 No remanente True True False Rref Array[1..2] of Real No remanente True True False Rref[1] Real 4.2 No remanente True True False Rref[2] Real 4.2 No remanente True True False Tref Array[1..2] of Real No remanente True True False Tref[1] Real 40.0 No remanente True True False Tref[2] Real 40.0 No remanente True True False EPS Real 0.8576959 No remanente True True False TOLref Real 0.001 No remanente True True False XR Array[1..4] of Real No remanente True True False XR[1] Real 0.0 No remanente True True False XR[2] Real 0.0 No remanente True True False XR[3] Real 0.0 No remanente True True False XR[4] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario UR Array[1..2] of Real No remanente True True False UR[1] Real 0.0 No remanente True True False UR[2] Real 0.0 No remanente True True False XRC Array[1..4] of Real No remanente True True False XRC[1] Real 0.0 No remanente True True False XRC[2] Real 0.0 No remanente True True False XRC[3] Real 0.0 No remanente True True False XRC[4] Real 0.0 No remanente True True False URC Array[1..2] of Real No remanente True True False URC[1] Real 0.0 No remanente True True False URC[2] Real 0.0 No remanente True True False YRF Array[1..2] of Real No remanente True True False YRF[1] Real 0.0 No remanente True True False YRF[2] Real 0.0 No remanente True True False Zref Array[1..8] of Real No remanente True True False Zref[1] Real 0.0 No remanente True True False Zref[2] Real 0.0 No remanente True True False Zref[3] Real 0.0 No remanente True True False Zref[4] Real 0.0 No remanente True True False Zref[5] Real 0.0 No remanente True True False Zref[6] Real 0.0 No remanente True True False Zref[7] Real 0.0 No remanente True True False Zref[8] Real 0.0 No remanente True True False Wref Array[1..6, 1..6] of Real No remanente True True False Wref[1,1] Real -6565.037 No remanente True True False Wref[1,2] Real 3393.56 No remanente True True False Wref[1,3] Real -5282.927 No remanente True True False Wref[1,4] Real 3117.121 No remanente True True False Wref[1,5] Real -337.2829 No remanente True True False Wref[1,6] Real 190.273 No remanente True True False Wref[2,1] Real 3393.56 No remanente True True False Wref[2,2] Real -5392.669 No remanente True True False Wref[2,3] Real 3453.618 No remanente True True False Wref[2,4] Real -3515.521 No remanente True True False Wref[2,5] Real 174.3463 No remanente True True False Wref[2,6] Real -302.3608 No remanente True True False Wref[3,1] Real -5282.927 No remanente True True False Wref[3,2] Real 3453.618 No remanente True True False Wref[3,3] Real -6016.759 No remanente True True False Wref[3,4] Real 2886.651 No remanente True True False Wref[3,5] Real -271.4137 No remanente True True False Wref[3,6] Real 193.6404 No remanente True True False Wref[4,1] Real 3117.121 No remanente True True False Wref[4,2] Real -3515.521 No remanente True True False Wref[4,3] Real 2886.651 No remanente True True False Wref[4,4] Real -4382.756 No remanente True True False Wref[4,5] Real 160.1441 No remanente True True False Wref[4,6] Real -197.1113 No remanente True True False Wref[5,1] Real -337.2829 No remanente True True False Wref[5,2] Real 174.3463 No remanente True True False Wref[5,3] Real -271.4137 No remanente True True False Wref[5,4] Real 160.1441 No remanente True True False Wref[5,5] Real -21.04695 No remanente True True False Wref[5,6] Real 9.775396 No remanente True True False Wref[6,1] Real 190.273 No remanente True True False Wref[6,2] Real -302.3608 No remanente True True False Wref[6,3] Real 193.6404 No remanente True True False Wref[6,4] Real -197.1113 No remanente True True False Wref[6,5] Real 9.775396 No remanente True True False Wref[6,6] Real -20.67185 No remanente True True False BoolSSTOEND Bool FALSE No remanente True True False BoolFistaRefEND Bool FALSE No remanente True True False YKR Array[1..6] of Real No remanente True True False YKR[1] Real 0.0 No remanente True True False YKR[2] Real 0.0 No remanente True True False YKR[3] Real 0.0 No remanente True True False YKR[4] Real 0.0 No remanente True True False YKR[5] Real 0.0 No remanente True True False YKR[6] Real 0.0 No remanente True True False XKR Array[1..6] of Real No remanente True True False XKR[1] Real 0.0 No remanente True True False XKR[2] Real 0.0 No remanente True True False XKR[3] Real 0.0 No remanente True True False XKR[4] Real 0.0 No remanente True True False XKR[5] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario XKR[6] Real 0.0 No remanente True True False XKRS Array[1..6] of Real No remanente True True False XKRS[1] Real 0.0 No remanente True True False XKRS[2] Real 0.0 No remanente True True False XKRS[3] Real 0.0 No remanente True True False XKRS[4] Real 0.0 No remanente True True False XKRS[5] Real 0.0 No remanente True True False XKRS[6] Real 0.0 No remanente True True False VIGR Array[1..6] of Real No remanente True True False VIGR[1] Real 0.0 No remanente True True False VIGR[2] Real 0.0 No remanente True True False VIGR[3] Real 0.0 No remanente True True False VIGR[4] Real 0.0 No remanente True True False VIGR[5] Real 0.0 No remanente True True False VIGR[6] Real 0.0 No remanente True True False TR Real 0.0 No remanente True True False TR1 Real 0.0 No remanente True True False XD Array[1..4] of Real No remanente True True False XD[1] Real 0.0 No remanente True True False XD[2] Real 0.0 No remanente True True False XD[3] Real 0.0 No remanente True True False XD[4] Real 0.0 No remanente True True False XD1 Array[1..4] of Real No remanente True True False XD1[1] Real 0.0 No remanente True True False XD1[2] Real 0.0 No remanente True True False XD1[3] Real 0.0 No remanente True True False XD1[4] Real 0.0 No remanente True True False DArray[1..2] of Real No remanente True True False D[1] Real 0.0 No remanente True True False D[2] Real 0.0 No remanente True True False D1 Array[1..2] of Real No remanente True True False D1[1] Real 0.0 No remanente True True False D1[2] Real 0.0 No remanente True True False BD Array[1..4, 1..2] of Real No remanente True True False BD[1,1] Real 0.0 No remanente True True False BD[1,2] Real 0.0 No remanente True True False BD[2,1] Real 0.0 No remanente True True False BD[2,2] Real 0.0 No remanente True True False BD[3,1] Real 0.0 No remanente True True False BD[3,2] Real 0.0 No remanente True True False BD[4,1] Real 0.0 No remanente True True False BD[4,2] Real 0.0 No remanente True True False DD Array[1..2, 1..2] of Real No remanente True True False DD[1,1] Real 1.0 No remanente True True False DD[1,2] Real 0.0 No remanente True True False DD[2,1] Real 0.0 No remanente True True False DD[2,2] Real 1.0 No remanente True True False LX Array[1..4, 1..2] of Real No remanente True True False LX[1,1] Real 0.2740003 No remanente True True False LX[1,2] Real 0.0 No remanente True True False LX[2,1] Real 0.0 No remanente True True False LX[2,2] Real 0.2706525 No remanente True True False LX[3,1] Real 0.111898 No remanente True True False LX[3,2] Real 0.0 No remanente True True False LX[4,1] Real 0.0 No remanente True True False LX[4,2] Real 0.09688859 No remanente True True False LDD Array[1..2, 1..2] of Real No remanente True True False LDD[1,1] Real 0.6698895 No remanente True True False LDD[1,2] Real 0.0 No remanente True True False LDD[2,1] Real 0.0 No remanente True True False LDD[2,2] Real 0.670185 No remanente True True False YK Array[1..124] of Real No remanente True True False YK[1] Real 0.0 No remanente True True False YK[2] Real 0.0 No remanente True True False YK[3] Real 0.0 No remanente True True False YK[4] Real 0.0 No remanente True True False YK[5] Real 0.0 No remanente True True False YK[6] Real 0.0 No remanente True True False YK[7] Real 0.0 No remanente True True False YK[8] Real 0.0 No remanente True True False YK[9] Real 0.0 No remanente True True False YK[10] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario YK[11] Real 0.0 No remanente True True False YK[12] Real 0.0 No remanente True True False YK[13] Real 0.0 No remanente True True False YK[14] Real 0.0 No remanente True True False YK[15] Real 0.0 No remanente True True False YK[16] Real 0.0 No remanente True True False YK[17] Real 0.0 No remanente True True False YK[18] Real 0.0 No remanente True True False YK[19] Real 0.0 No remanente True True False YK[20] Real 0.0 No remanente True True False YK[21] Real 0.0 No remanente True True False YK[22] Real 0.0 No remanente True True False YK[23] Real 0.0 No remanente True True False YK[24] Real 0.0 No remanente True True False YK[25] Real 0.0 No remanente True True False YK[26] Real 0.0 No remanente True True False YK[27] Real 0.0 No remanente True True False YK[28] Real 0.0 No remanente True True False YK[29] Real 0.0 No remanente True True False YK[30] Real 0.0 No remanente True True False YK[31] Real 0.0 No remanente True True False YK[32] Real 0.0 No remanente True True False YK[33] Real 0.0 No remanente True True False YK[34] Real 0.0 No remanente True True False YK[35] Real 0.0 No remanente True True False YK[36] Real 0.0 No remanente True True False YK[37] Real 0.0 No remanente True True False YK[38] Real 0.0 No remanente True True False YK[39] Real 0.0 No remanente True True False YK[40] Real 0.0 No remanente True True False YK[41] Real 0.0 No remanente True True False YK[42] Real 0.0 No remanente True True False YK[43] Real 0.0 No remanente True True False YK[44] Real 0.0 No remanente True True False YK[45] Real 0.0 No remanente True True False YK[46] Real 0.0 No remanente True True False YK[47] Real 0.0 No remanente True True False YK[48] Real 0.0 No remanente True True False YK[49] Real 0.0 No remanente True True False YK[50] Real 0.0 No remanente True True False YK[51] Real 0.0 No remanente True True False YK[52] Real 0.0 No remanente True True False YK[53] Real 0.0 No remanente True True False YK[54] Real 0.0 No remanente True True False YK[55] Real 0.0 No remanente True True False YK[56] Real 0.0 No remanente True True False YK[57] Real 0.0 No remanente True True False YK[58] Real 0.0 No remanente True True False YK[59] Real 0.0 No remanente True True False YK[60] Real 0.0 No remanente True True False YK[61] Real 0.0 No remanente True True False YK[62] Real 0.0 No remanente True True False YK[63] Real 0.0 No remanente True True False YK[64] Real 0.0 No remanente True True False YK[65] Real 0.0 No remanente True True False YK[66] Real 0.0 No remanente True True False YK[67] Real 0.0 No remanente True True False YK[68] Real 0.0 No remanente True True False YK[69] Real 0.0 No remanente True True False YK[70] Real 0.0 No remanente True True False YK[71] Real 0.0 No remanente True True False YK[72] Real 0.0 No remanente True True False YK[73] Real 0.0 No remanente True True False YK[74] Real 0.0 No remanente True True False YK[75] Real 0.0 No remanente True True False YK[76] Real 0.0 No remanente True True False YK[77] Real 0.0 No remanente True True False YK[78] Real 0.0 No remanente True True False YK[79] Real 0.0 No remanente True True False YK[80] Real 0.0 No remanente True True False YK[81] Real 0.0 No remanente True True False YK[82] Real 0.0 No remanente True True False YK[83] Real 0.0 No remanente True True False YK[84] Real 0.0 No remanente True True False YK[85] Real 0.0 No remanente True True False YK[86] Real 0.0 No remanente True True False YK[87] Real 0.0 No remanente True True False YK[88] Real 0.0 No remanente True True False YK[89] Real 0.0 No remanente True True False YK[90] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario YK[91] Real 0.0 No remanente True True False YK[92] Real 0.0 No remanente True True False YK[93] Real 0.0 No remanente True True False YK[94] Real 0.0 No remanente True True False YK[95] Real 0.0 No remanente True True False YK[96] Real 0.0 No remanente True True False YK[97] Real 0.0 No remanente True True False YK[98] Real 0.0 No remanente True True False YK[99] Real 0.0 No remanente True True False YK[100] Real 0.0 No remanente True True False YK[101] Real 0.0 No remanente True True False YK[102] Real 0.0 No remanente True True False YK[103] Real 0.0 No remanente True True False YK[104] Real 0.0 No remanente True True False YK[105] Real 0.0 No remanente True True False YK[106] Real 0.0 No remanente True True False YK[107] Real 0.0 No remanente True True False YK[108] Real 0.0 No remanente True True False YK[109] Real 0.0 No remanente True True False YK[110] Real 0.0 No remanente True True False YK[111] Real 0.0 No remanente True True False YK[112] Real 0.0 No remanente True True False YK[113] Real 0.0 No remanente True True False YK[114] Real 0.0 No remanente True True False YK[115] Real 0.0 No remanente True True False YK[116] Real 0.0 No remanente True True False YK[117] Real 0.0 No remanente True True False YK[118] Real 0.0 No remanente True True False YK[119] Real 0.0 No remanente True True False YK[120] Real 0.0 No remanente True True False YK[121] Real 0.0 No remanente True True False YK[122] Real 0.0 No remanente True True False YK[123] Real 0.0 No remanente True True False YK[124] Real 0.0 No remanente True True False XK Array[1..124] of Real No remanente True True False XK[1] Real 0.0 No remanente True True False XK[2] Real 0.0 No remanente True True False XK[3] Real 0.0 No remanente True True False XK[4] Real 0.0 No remanente True True False XK[5] Real 0.0 No remanente True True False XK[6] Real 0.0 No remanente True True False XK[7] Real 0.0 No remanente True True False XK[8] Real 0.0 No remanente True True False XK[9] Real 0.0 No remanente True True False XK[10] Real 0.0 No remanente True True False XK[11] Real 0.0 No remanente True True False XK[12] Real 0.0 No remanente True True False XK[13] Real 0.0 No remanente True True False XK[14] Real 0.0 No remanente True True False XK[15] Real 0.0 No remanente True True False XK[16] Real 0.0 No remanente True True False XK[17] Real 0.0 No remanente True True False XK[18] Real 0.0 No remanente True True False XK[19] Real 0.0 No remanente True True False XK[20] Real 0.0 No remanente True True False XK[21] Real 0.0 No remanente True True False XK[22] Real 0.0 No remanente True True False XK[23] Real 0.0 No remanente True True False XK[24] Real 0.0 No remanente True True False XK[25] Real 0.0 No remanente True True False XK[26] Real 0.0 No remanente True True False XK[27] Real 0.0 No remanente True True False XK[28] Real 0.0 No remanente True True False XK[29] Real 0.0 No remanente True True False XK[30] Real 0.0 No remanente True True False XK[31] Real 0.0 No remanente True True False XK[32] Real 0.0 No remanente True True False XK[33] Real 0.0 No remanente True True False XK[34] Real 0.0 No remanente True True False XK[35] Real 0.0 No remanente True True False XK[36] Real 0.0 No remanente True True False XK[37] Real 0.0 No remanente True True False XK[38] Real 0.0 No remanente True True False XK[39] Real 0.0 No remanente True True False XK[40] Real 0.0 No remanente True True False XK[41] Real 0.0 No remanente True True False XK[42] Real 0.0 No remanente True True False XK[43] Real 0.0 No remanente True True False XK[44] Real 0.0 No remanente True True False XK[45] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario XK[46] Real 0.0 No remanente True True False XK[47] Real 0.0 No remanente True True False XK[48] Real 0.0 No remanente True True False XK[49] Real 0.0 No remanente True True False XK[50] Real 0.0 No remanente True True False XK[51] Real 0.0 No remanente True True False XK[52] Real 0.0 No remanente True True False XK[53] Real 0.0 No remanente True True False XK[54] Real 0.0 No remanente True True False XK[55] Real 0.0 No remanente True True False XK[56] Real 0.0 No remanente True True False XK[57] Real 0.0 No remanente True True False XK[58] Real 0.0 No remanente True True False XK[59] Real 0.0 No remanente True True False XK[60] Real 0.0 No remanente True True False XK[61] Real 0.0 No remanente True True False XK[62] Real 0.0 No remanente True True False XK[63] Real 0.0 No remanente True True False XK[64] Real 0.0 No remanente True True False XK[65] Real 0.0 No remanente True True False XK[66] Real 0.0 No remanente True True False XK[67] Real 0.0 No remanente True True False XK[68] Real 0.0 No remanente True True False XK[69] Real 0.0 No remanente True True False XK[70] Real 0.0 No remanente True True False XK[71] Real 0.0 No remanente True True False XK[72] Real 0.0 No remanente True True False XK[73] Real 0.0 No remanente True True False XK[74] Real 0.0 No remanente True True False XK[75] Real 0.0 No remanente True True False XK[76] Real 0.0 No remanente True True False XK[77] Real 0.0 No remanente True True False XK[78] Real 0.0 No remanente True True False XK[79] Real 0.0 No remanente True True False XK[80] Real 0.0 No remanente True True False XK[81] Real 0.0 No remanente True True False XK[82] Real 0.0 No remanente True True False XK[83] Real 0.0 No remanente True True False XK[84] Real 0.0 No remanente True True False XK[85] Real 0.0 No remanente True True False XK[86] Real 0.0 No remanente True True False XK[87] Real 0.0 No remanente True True False XK[88] Real 0.0 No remanente True True False XK[89] Real 0.0 No remanente True True False XK[90] Real 0.0 No remanente True True False XK[91] Real 0.0 No remanente True True False XK[92] Real 0.0 No remanente True True False XK[93] Real 0.0 No remanente True True False XK[94] Real 0.0 No remanente True True False XK[95] Real 0.0 No remanente True True False XK[96] Real 0.0 No remanente True True False XK[97] Real 0.0 No remanente True True False XK[98] Real 0.0 No remanente True True False XK[99] Real 0.0 No remanente True True False XK[100] Real 0.0 No remanente True True False XK[101] Real 0.0 No remanente True True False XK[102] Real 0.0 No remanente True True False XK[103] Real 0.0 No remanente True True False XK[104] Real 0.0 No remanente True True False XK[105] Real 0.0 No remanente True True False XK[106] Real 0.0 No remanente True True False XK[107] Real 0.0 No remanente True True False XK[108] Real 0.0 No remanente True True False XK[109] Real 0.0 No remanente True True False XK[110] Real 0.0 No remanente True True False XK[111] Real 0.0 No remanente True True False XK[112] Real 0.0 No remanente True True False XK[113] Real 0.0 No remanente True True False XK[114] Real 0.0 No remanente True True False XK[115] Real 0.0 No remanente True True False XK[116] Real 0.0 No remanente True True False XK[117] Real 0.0 No remanente True True False XK[118] Real 0.0 No remanente True True False XK[119] Real 0.0 No remanente True True False XK[120] Real 0.0 No remanente True True False XK[121] Real 0.0 No remanente True True False XK[122] Real 0.0 No remanente True True False XK[123] Real 0.0 No remanente True True False XK[124] Real 0.0 No remanente True True False XKS Array[1..124] of Real No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario XKS[1] Real 0.0 No remanente True True False XKS[2] Real 0.0 No remanente True True False XKS[3] Real 0.0 No remanente True True False XKS[4] Real 0.0 No remanente True True False XKS[5] Real 0.0 No remanente True True False XKS[6] Real 0.0 No remanente True True False XKS[7] Real 0.0 No remanente True True False XKS[8] Real 0.0 No remanente True True False XKS[9] Real 0.0 No remanente True True False XKS[10] Real 0.0 No remanente True True False XKS[11] Real 0.0 No remanente True True False XKS[12] Real 0.0 No remanente True True False XKS[13] Real 0.0 No remanente True True False XKS[14] Real 0.0 No remanente True True False XKS[15] Real 0.0 No remanente True True False XKS[16] Real 0.0 No remanente True True False XKS[17] Real 0.0 No remanente True True False XKS[18] Real 0.0 No remanente True True False XKS[19] Real 0.0 No remanente True True False XKS[20] Real 0.0 No remanente True True False XKS[21] Real 0.0 No remanente True True False XKS[22] Real 0.0 No remanente True True False XKS[23] Real 0.0 No remanente True True False XKS[24] Real 0.0 No remanente True True False XKS[25] Real 0.0 No remanente True True False XKS[26] Real 0.0 No remanente True True False XKS[27] Real 0.0 No remanente True True False XKS[28] Real 0.0 No remanente True True False XKS[29] Real 0.0 No remanente True True False XKS[30] Real 0.0 No remanente True True False XKS[31] Real 0.0 No remanente True True False XKS[32] Real 0.0 No remanente True True False XKS[33] Real 0.0 No remanente True True False XKS[34] Real 0.0 No remanente True True False XKS[35] Real 0.0 No remanente True True False XKS[36] Real 0.0 No remanente True True False XKS[37] Real 0.0 No remanente True True False XKS[38] Real 0.0 No remanente True True False XKS[39] Real 0.0 No remanente True True False XKS[40] Real 0.0 No remanente True True False XKS[41] Real 0.0 No remanente True True False XKS[42] Real 0.0 No remanente True True False XKS[43] Real 0.0 No remanente True True False XKS[44] Real 0.0 No remanente True True False XKS[45] Real 0.0 No remanente True True False XKS[46] Real 0.0 No remanente True True False XKS[47] Real 0.0 No remanente True True False XKS[48] Real 0.0 No remanente True True False XKS[49] Real 0.0 No remanente True True False XKS[50] Real 0.0 No remanente True True False XKS[51] Real 0.0 No remanente True True False XKS[52] Real 0.0 No remanente True True False XKS[53] Real 0.0 No remanente True True False XKS[54] Real 0.0 No remanente True True False XKS[55] Real 0.0 No remanente True True False XKS[56] Real 0.0 No remanente True True False XKS[57] Real 0.0 No remanente True True False XKS[58] Real 0.0 No remanente True True False XKS[59] Real 0.0 No remanente True True False XKS[60] Real 0.0 No remanente True True False XKS[61] Real 0.0 No remanente True True False XKS[62] Real 0.0 No remanente True True False XKS[63] Real 0.0 No remanente True True False XKS[64] Real 0.0 No remanente True True False XKS[65] Real 0.0 No remanente True True False XKS[66] Real 0.0 No remanente True True False XKS[67] Real 0.0 No remanente True True False XKS[68] Real 0.0 No remanente True True False XKS[69] Real 0.0 No remanente True True False XKS[70] Real 0.0 No remanente True True False XKS[71] Real 0.0 No remanente True True False XKS[72] Real 0.0 No remanente True True False XKS[73] Real 0.0 No remanente True True False XKS[74] Real 0.0 No remanente True True False XKS[75] Real 0.0 No remanente True True False XKS[76] Real 0.0 No remanente True True False XKS[77] Real 0.0 No remanente True True False XKS[78] Real 0.0 No remanente True True False XKS[79] Real 0.0 No remanente True True False XKS[80] Real 0.0 No remanente True True False
Totally Integrated Automation Portal Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario XKS[81] Real 0.0 No remanente True True False XKS[82] Real 0.0 No remanente True True False XKS[83] Real 0.0 No remanente True True False XKS[84] Real 0.0 No remanente True True False XKS[85] Real 0.0 No remanente True True False XKS[86] Real 0.0 No remanente True True False XKS[87] Real 0.0 No remanente True True False XKS[88] Real 0.0 No remanente True True False XKS[89] Real 0.0 No remanente True True False XKS[90] Real 0.0 No remanente True True False XKS[91] Real 0.0 No remanente True True False XKS[92] Real 0.0 No remanente True True False XKS[93] Real 0.0 No remanente True True False XKS[94] Real 0.0 No remanente True True False XKS[95] Real 0.0 No remanente True True False XKS[96] Real 0.0 No remanente True True False XKS[97] Real 0.0 No remanente True True False XKS[98] Real 0.0 No remanente True True False XKS[99] Real 0.0 No remanente True True False XKS[100] Real 0.0 No remanente True True False XKS[101] Real 0.0 No remanente True True False XKS[102] Real 0.0 No remanente True True False XKS[103] Real 0.0 No remanente True True False XKS[104] Real 0.0 No remanente True True False XKS[105] Real 0.0 No remanente True True False XKS[106] Real 0.0 No remanente True True False XKS[107] Real 0.0 No remanente True True False XKS[108] Real 0.0 No remanente True True False XKS[109] Real 0.0 No remanente True True False XKS[110] Real 0.0 No remanente True True False XKS[111] Real 0.0 No remanente True True False XKS[112] Real 0.0 No remanente True True False XKS[113] Real 0.0 No remanente True True False XKS[114] Real 0.0 No remanente True True False XKS[115] Real 0.0 No remanente True True False XKS[116] Real 0.0 No remanente True True False XKS[117] Real 0.0 No remanente True True False XKS[118] Real 0.0 No remanente True True False XKS[119] Real 0.0 No remanente True True False XKS[120] Real 0.0 No remanente True True False XKS[121] Real 0.0 No remanente True True False XKS[122] Real 0.0 No remanente True True False XKS[123] Real 0.0 No remanente True True False XKS[124] Real 0.0 No remanente True True False TReal 0.0 No remanente True True False T1 Real 0.0 No remanente True True False NORM Real 0.0 No remanente True True False ZArray[1..180] of Real No remanente True True False Z[1] Real 0.0 No remanente True True False Z[2] Real 0.0 No remanente True True False Z[3] Real 0.0 No remanente True True False Z[4] Real 0.0 No remanente True True False Z[5] Real 0.0 No remanente True True False Z[6] Real 0.0 No remanente True True False Z[7] Real 0.0 No remanente True True False Z[8] Real 0.0 No remanente True True False Z[9] Real 0.0 No remanente True True False Z[10] Real 0.0 No remanente True True False Z[11] Real 0.0 No remanente True True False Z[12] Real 0.0 No remanente True True False Z[13] Real 0.0 No remanente True True False Z[14] Real 0.0 No remanente True True False Z[15] Real 0.0 No remanente True True False Z[16] Real 0.0 No remanente True True False Z[17] Real 0.0 No remanente True True False Z[18] Real 0.0 No remanente True True False Z[19] Real 0.0 No remanente True True False Z[20] Real 0.0 No remanente True True False Z[21] Real 0.0 No remanente True True False Z[22] Real 0.0 No remanente True True False Z[23] Real 0.0 No remanente True True False Z[24] Real 0.0 No remanente True True False Z[25] Real 0.0 No remanente True True False Z[26] Real 0.0 No remanente True True False Z[27] Real 0.0 No remanente True True False Z[28] Real 0.0 No remanente True True False Z[29] Real 0.0 No remanente True True False Z[30] Real 0.0 No remanente True True False Z[31] Real 0.0 No remanente True True False Z[32] Real 0.0 No remanente True True False
Totally Integrated Automation Portal 0185 #Z[#J * 6 + 1] := - (- #XR[1] * #QQ[1] - (- #YK[#K + 1] + #A[1, 1] * #YK[#K + 5] + #A[2, 1] * #YK[#K + 6] + #A[3, 1] * #YK[#K + 7] + #A[4, 1] * #YK[#K + 8])) / #QQ[1]; 0186 #Z[#J * 6 + 1] := MAX(IN1:=MIN(IN1:=#Z[#J * 6 + 1], IN2:=#UBX[1]), IN2:=#LBX[1]); 0187 #Z[#J * 6 + 2] := - (- #XR[2] * #QQ[2] - (- #YK[#K + 2] + #A[1, 2] * #YK[#K + 5] + #A[2, 2] * #YK[#K + 6] + #A[3, 2] * #YK[#K + 7] + #A[4, 2] * #YK[#K + 8])) / #QQ[2]; 0188 #Z[#J * 6 + 2] := MAX(IN1:=MIN(IN1:=#Z[#J * 6 + 2], IN2:=#UBX[2]), IN2:=#LBX[2]); 0189 #Z[#J * 6 + 3] := - (- #XR[3] * #QQ[3] - (- #YK[#K + 3] + #A[1, 3] * #YK[#K + 5] + #A[2, 3] * #YK[#K + 6] + #A[3, 3] * #YK[#K + 7] + #A[4, 3] * #YK[#K + 8])) / #QQ[3]; 0190 #Z[#J * 6 + 3] := MAX(IN1:=MIN(IN1:=#Z[#J * 6 + 3], IN2:=#UBX[3]), IN2:=#LBX[3]); 0191 #Z[#J * 6 + 4] := - (- #XR[4] * #QQ[4] - (- #YK[#K + 4] + #A[1, 4] * #YK[#K + 5] + #A[2, 4] * #YK[#K + 6] + #A[3, 4] * #YK[#K + 7] + #A[4, 4] * #YK[#K + 8])) / #QQ[4]; 0192 #Z[#J * 6 + 4] := MAX(IN1:=MIN(IN1:=#Z[#J * 6 + 4], IN2:=#UBX[4]), IN2:=#LBX[4]); 0193 #Z[#J * 6 + 5] := - (- #UR[1] * #RR[1] - (#B[1, 1] * #YK[#K + 5] + #B[2, 1] * #YK[#K + 6] + #B[3, 1] * #YK[#K + 7] + #B[4, 1] * #YK[#K + 8])) / #RR[1]; 0194 #Z[#J * 6 + 5] := MAX(IN1:=MIN(IN1:=#Z[#J * 6 + 5], IN2:=#UBU[1]), IN2:=#LBU[1]); 0195 #Z[#J * 6 + 6] := - (- #UR[2] * #RR[2] - (#B[1, 2] * #YK[#K + 5] + #B[2, 2] * #YK[#K + 6] + #B[3, 2] * #YK[#K + 7] + #B[4, 2] * #YK[#K + 8])) / #RR[2]; 0196 #Z[#J * 6 + 6] := MAX(IN1:=MIN(IN1:=#Z[#J * 6 + 6], IN2:=#UBU[2]), IN2:=#LBU[2]); 0197 #K := #K + 4; 0198 END_FOR; 0199 0200 (* Calculate VIG: initial restriction *) 0201 FOR #J := 1 TO 4 DO 0202 #VIG[#J] := #Z[#J] - #XD[#J]; 0203 END_FOR; 0204 (* Calculate VIG: model restrictions *) 0205 #K := 0; 0206 FOR #J := 1 TO 29 DO 0207 #VIG[#J * 4 + 1] := #A[1, 1] * #Z[#K + 1] + #A[1, 2] * #Z[#K + 2] + #A[1, 3] * #Z[#K + 3] + #A[1, 4] * #Z[#K + 4] + #B[1, 1] * #Z[#K + 5] + #B[1, 2] * #Z[#K + 6] - #Z[#K + 7]; 0208 #VIG[#J * 4 + 2] := #A[2, 1] * #Z[#K + 1] + #A[2, 2] * #Z[#K + 2] + #A[2, 3] * #Z[#K + 3] + #A[2, 4] * #Z[#K + 4] + #B[2, 1] * #Z[#K + 5] + #B[2, 2] * #Z[#K + 6] - #Z[#K + 8]; 0209 #VIG[#J * 4 + 3] := #A[3, 1] * #Z[#K + 1] + #A[3, 2] * #Z[#K + 2] + #A[3, 3] * #Z[#K + 3] + #A[3, 4] * #Z[#K + 4] + #B[3, 1] * #Z[#K + 5] + #B[3, 2] * #Z[#K + 6] - #Z[#K + 9]; 0210 #VIG[#J * 4 + 4] := #A[4, 1] * #Z[#K + 1] + #A[4, 2] * #Z[#K + 2] + #A[4, 3] * #Z[#K + 3] + #A[4, 4] * #Z[#K + 4] + #B[4, 1] * #Z[#K + 5] + #B[4, 2] * #Z[#K + 6] - #Z[#K + 10]; 0211 #K := #K + 6; 0212 END_FOR; 0213 (* Calculate VIG: final restriction *) 0214 #VIG[121] := #A[1, 1] * #Z[#K + 1] + #A[1, 2] * #Z[#K + 2] + #A[1, 3] * #Z[#K + 3] + #A[1, 4] * #Z[#K + 4] + #B[1, 1] * #Z[#K + 5] + #B[1, 2] * #Z[#K + 6] - #XR[1]; 0215 #VIG[122] := #A[2, 1] * #Z[#K + 1] + #A[2, 2] * #Z[#K + 2] + #A[2, 3] * #Z[#K + 3] + #A[2, 4] * #Z[#K + 4] + #B[2, 1] * #Z[#K + 5] + #B[2, 2] * #Z[#K + 6] - #XR[2]; 0216 #VIG[123] := #A[3, 1] * #Z[#K + 1] + #A[3, 2] * #Z[#K + 2] + #A[3, 3] * #Z[#K + 3] + #A[3, 4] * #Z[#K + 4] + #B[3, 1] * #Z[#K + 5] + #B[3, 2] * #Z[#K + 6] - #XR[3]; 0217 #VIG[124] := #A[4, 1] * #Z[#K + 1] + #A[4, 2] * #Z[#K + 2] + #A[4, 3] * #Z[#K + 3] + #A[4, 4] * #Z[#K + 4] + #B[4, 1] * #Z[#K + 5] + #B[4, 2] * #Z[#K + 6] - #XR[4]; 0218 0219 (* Calculate XK *) 0220 (* Calculate first step: Transposed Chol matrix *) 0221 FOR #J := 1 TO 4 DO (* Calculate first n elements *) 0222 #XK[#J] := - #VIG[#J] / #Beta[#J, #J, 1]; 0223 END_FOR; 0224 FOR #K := 1 TO 30 DO (* Calculate the rest of the elements *) 0225 FOR #J := 1 TO 4 DO 0226 #XK[#K * 4 + #J] := - #VIG[#K * 4 + #J]; 0227 (* Alpha elements *) 0228 FOR #I := 1 TO 4 DO 0229 #XK[#K * 4 + #J] := #XK[#K * 4 + #J] - #Alfa[#I, #J, #K] * #XK[(#K - 1) * 4 + #I]; 0230 END_FOR; 0231 (* Beta elements *) 0232 FOR #I := 1 TO (#J - 1) DO 0233 #XK[#K * 4 + #J] := #XK[#K * 4 + #J] - #Beta[#I, #J, #K + 1] * #XK[#K * 4 + #I]; 0234 END_FOR; 0235 (* Diagonal element *) 0236 #XK[#K * 4 + #J] := #XK[#K * 4 + #J] / #Beta[#J, #J, #K + 1]; 0237 END_FOR; 0238 END_FOR; 0239 (* Calculate second step: Chol matrix *) 0240 FOR #J := 4 TO 1 BY -1 DO (* Calculate last n elements *) 0241 FOR #I := 4 TO (#J + 1) BY -1 DO 0242 #XK[120 + #J] := #XK[120 + #J] - #Beta[#J, #I, 31] * #XK[120 + #I]; 0243 END_FOR; 0244 #XK[120 + #J] := #XK[120 + #J] / #Beta[#J, #J, 31]; 0245 END_FOR; 0246 FOR #K := 29 TO 0 BY -1 DO (* Calculate the rest of the elements *) 0247 FOR #J := 4 TO 1 BY -1 DO 0248 (* Alpha elements *) 0249 FOR #I := 1 TO 4 DO 0250 #XK[#K * 4 + #J] := #XK[#K * 4 + #J] - #Alfa[#J, #I, #K + 1] * #XK[(#K + 1) * 4 + #I]; 0251 END_FOR; 0252 (* Beta elements *) 0253 FOR #I := 4 TO (#J + 1) BY -1 DO 0254 #XK[#K * 4 + #J] := #XK[#K * 4 + #J] - #Beta[#J, #I, #K + 1] * #XK[#K * 4 + #I]; 0255 END_FOR; 0256 (* Diagonal element *) 0257 #XK[#K * 4 + #J] := #XK[#K * 4 + #J] / #Beta[#J, #J, #K + 1]; 0258 END_FOR; 0259 END_FOR; 0260 0261 (* Calculate XK: final step *)
Totally Integrated Automation Portal 0262 FOR #J := 1 TO 124 DO 0263 #XK[#J] := #XK[#J] + #YK[#J]; 0264 END_FOR; 0265 0266 (* Calculate T1 *) 0267 #T1 := 0.5 * (1.0 + SQRT(1.0 + 4.0 * (#T * #T))); 0268 0269 (* Calculate YK *) 0270 FOR #J := 1 TO 124 DO 0271 #YK[#J] := #XK[#J] + ((#T - 1.0) / #T1) * (#XK[#J] - #XKS[#J]); 0272 END_FOR; 0273 0274 (* Update XKS *) 0275 FOR #J := 1 TO 124 DO 0276 #XKS[#J] := #XK[#J]; 0277 END_FOR; 0278 0279 (* Update T *) 0280 #T := #T1; 0281 0282 END_FOR; (* End of Fista algorithm's main loop *) 0283 0284 (* Check exit conditions for Fista algorithm *) 0285 (* Calculate norm of VIG *) 0286 #NORM := 0.0; 0287 FOR #J := 1 TO 124 DO 0288 #NORM := #NORM + #VIG[#J] * #VIG[#J]; 0289 END_FOR; 0290 #NORM := SQRT(#NORM); 0291 0292 (* Exit by achieved tolerance *) 0293 IF #NORM < #TOL THEN 0294 #BoolFistaEND := TRUE; 0295 #T := 1.0; 0296 #T1 := 1.0; 0297 FOR #J := 1 TO 124 DO 0298 #YK[#J] := 0.0; 0299 END_FOR; 0300 (* Obtain UK *) 0301 FOR #J := 1 TO 2 DO 0302 #UK[#J] := #Z[4 + #J] + #UF[#J]; 0303 END_FOR; 0304 END_IF; 0305 0306 (* Exit by excess time *) 0307 IF (TIME_TO_INT(#TiempoFista) > #maxTiempoFista * TIME_TO_INT(#SampleTime)) THEN 0308 #BoolFistaEND := TRUE; 0309 #T := 1.0; 0310 #T1 := 1.0; 0311 FOR #J := 1 TO 124 DO 0312 #YK[#J] := 0.0; 0313 END_FOR; 0314 (* Obtain UK *) 0315 FOR #J := 1 TO 2 DO 0316 #UK[#J] := #Z[4 + #J] + #UF[#J]; 0317 END_FOR; 0318 END_IF; 0319 0320 END_IF; (* End of Fista algorithm *) 0321 0322 (* Call State Observer once Fista algorithm has finished *) 0323 IF #BoolFistaEND AND NOT #ObservadorHecho THEN 0324 #ObservadorHecho := TRUE; 0325 0326 (* Update HU vector *) 0327 FOR #J := 1 TO 2 DO 0328 #HU[#J] := #UK[#J] - #UF[#J]; 0329 END_FOR; 0330 (* State Observer and Perturbation Estimator *) 0331 #XD1[1] := #A[1, 1] * #XD[1] + #A[1, 2] * #XD[2] + #A[1, 3] * #XD[3] + #A[1, 4] * #XD[4] + #BD[1, 1] * #D[1] + #BD[1, 2] * #D[2] + #B[1, 1] * #HU[1] + #B[1, 2] * #HU[2] + #LX[1, 1] * (#Ysys[1] - #YF[1] - #C[1, 1] * #XD[1] - #C[1, 2] * #XD[2] - #C[1, 3] * #XD[3] - #C[1, 4] * #XD[4] - #DD[1, 1] * #D[1] - #DD[1, 2] * #D[2]) + #LX[1, 2] * (#Ysys[2] - #YF[2] - #C[2, 1] * #XD[1] - #C[2, 2] * #XD[2] - #C[2, 3] * #XD[3] - #C[2, 4] * #XD[4] - #DD[2, 1] * #D[1] - #DD[2, 2] * #D[2]); 0332 #XD1[2] := #A[2, 1] * #XD[1] + #A[2, 2] * #XD[2] + #A[2, 3] * #XD[3] + #A[2, 4] * #XD[4] + #BD[2, 1] * #D[1] + #BD[2, 2] * #D[2] + #B[2, 1] * #HU[1] + #B[2, 2] * #HU[2] + #LX[2, 1] * (#Ysys[1] - #YF[1] - #C[1, 1] * #XD[1] - #C[1, 2] * #XD[2] - #C[1, 3] * #XD[3] - #C[1, 4] * #XD[4] - #DD[1, 1] * #D[1] - #DD[1, 2] * #D[2]) + #LX[2, 2] * (#Ysys[2] - #YF[2] - #C[2, 1] * #XD[1] - #C[2, 2] * #XD[2] - #C[2, 3] * #XD[3] - #C[2, 4] * #XD[4] - #DD[2, 1] * #D[1] - #DD[2, 2] * #D[2]); 0333 #XD1[3] := #A[3, 1] * #XD[1] + #A[3, 2] * #XD[2] + #A[3, 3] * #XD[3] + #A[3, 4] * #XD[4] + #BD[3, 1] * #D[1] + #BD[3, 2] * #D[2] + #B[3, 1] * #HU[1] + #B[3, 2] * #HU[2] + #LX[3, 1] * (#Ysys[1] - #YF[1] - #C[1, 1] * #XD[1] - #C[1, 2] * #XD[2] - #C[1, 3] * #XD[3] - #C[1, 4] * #XD[4] - #DD[1, 1] * #D[1] - #DD[1, 2] * #D[2]) + #LX[3, 2] * (#Ysys[2] - #YF[2] - #C[2, 1] * #XD[1] - #C[2, 2] * #XD[2] - #C[2, 3] * #XD[3] - #C[2, 4] * #XD[4] - #DD[2, 1] * #D[1] - #DD[2, 2] * #D[2]); 0334 #XD1[4] := #A[4, 1] * #XD[1] + #A[4, 2] * #XD[2] + #A[4, 3] * #XD[3] + #A[4, 4] * #XD[4] + #BD[4, 1] * #D[1] + #BD[4, 2] * #D[2] + #B[4, 1] * #HU[1] + #B[4, 2] * #HU[2] + #LX[4, 1] * (#Ysys[1] - #YF[1] - #C[1, 1] * #XD[1] - #C[1, 2] * #XD[2] - #C[1, 3] * #XD[3] - #C[1, 4] * #XD[4] - #DD[1, 1] * #D[1] - #DD[1, 2] * #D[2]) + #LX[4, 2] * (#Ysys[2] - #YF[2] - #C[2, 1] * #XD[1] - #C[2, 2] * #XD[2] - #C[2, 3] * #XD[3] - #C[2, 4] * #XD[4] - #DD[2, 1] * #D[1] - #DD[2, 2] * #D[2]); 0335 #D1[1] := #D[1] + #LDD[1, 1] * (#Ysys[1] - #YF[1] - #C[1, 1] * #XD[1] - #C[1, 2] * #XD[2] - #C[1, 3] * #XD[3] - #C[1, 4] * #XD[4] - #DD[1, 1] * #D[1] - #DD[1, 2] * #D[2]) + #LDD[1, 2] * (#Ysys[2] - #YF[2] - #C[2,
Totally Integrated Automation Portal 1] * #XD[1] - #C[2, 2] * #XD[2] - #C[2, 3] * #XD[3] - #C[2, 4] * #XD[4] - #DD[2, 1] * #D[1] - #DD[2, 2] * #D[2]); 0336 #D1[2] := #D[2] + #LDD[2, 1] * (#Ysys[1] - #YF[1] - #C[1, 1] * #XD[1] - #C[1, 2] * #XD[2] - #C[1, 3] * #XD[3] - #C[1, 4] * #XD[4] - #DD[1, 1] * #D[1] - #DD[1, 2] * #D[2]) + #LDD[2, 2] * (#Ysys[2] - #YF[2] - #C[2, 1] * #XD[1] - #C[2, 2] * #XD[2] - #C[2, 3] * #XD[3] - #C[2, 4] * #XD[4] - #DD[2, 1] * #D[1] - #DD[2, 2] * #D[2]); 0337 0338 (* Update Observer Variables *) 0339 FOR #J := 1 TO 4 DO 0340 #XD[#J] := #XD1[#J]; 0341 END_FOR; 0342 FOR #J := 1 TO 2 DO 0343 #D[#J] := #D1[#J]; 0344 END_FOR; 0345 0346 END_IF; (* End state observer *) 0347 0348 END_IF; (* End of automatic mode *) 0349 0350 (* End of program *) 0351 Símbolo Dirección Tipo Comentario #A Array #Alfa Array #B Array #BD Array #Beta Array #BoolFistaEND Bool #BoolFistaRefEND Bool #BoolSSTOEND Bool #BOOLTM Bool #C Array #ContCiclosFista Int #D Array #D1 Array #DD Array #EPS Real #HU Array #I Int #J Int #K Int #LBU Array #LBX Array #LDD Array #LX Array #MANUAL Bool #maxTiempoFista Real #NORM Real #NumCiclesFista Int #ObservadorHecho Bool #QQ Array #Qref Array #RR Array #Rref Array #SampleTime Time #T Real #T1 Real #TiempoFista Time #TOL Real #TR Real #TR1 Real #Tref Array #UBU Array #UBX Array #UF Array #UK Array #UM Array #UR Array #URC Array #VIG Array #VIGR Array #Wref Array #XD Array #XD1 Array #XK Array #XKR Array #XKRS Array #XKS Array #XR Array #XRC Array #YF Array #YK Array #YKR Array #YR Array #YRF Array #Ysys Array #Z Array #Zref Array
Totally Integrated Automation Portal AnalogIO [FB3] AnalogIO Propiedades General Nombre AnalogIO Número 3Tipo FB Idioma KOP Numeración automática Información Título Autor Comentario Familia Versión 0.1 ID personalizada Nombre Tipo de datos Valor predet. Remanencia Accesible desde HMI Visible en HMI Valor de ajuste Comentario Input Output InOut Static Temp Constant Segmento 1: EA0 = y1 NORM_X toInt Real SCALE_X toReal Real 0 "EA0" %IW6 4 %IW6 4 2764 8 "EA0_escalado" %MD0%MD0 0.0 "EA0_escalado" %MD 0 %MD 0 10.0 "Main_DB".YK[1] EN MIN VALUE MAX ENO OUT toInt Real EN MIN VALUE MAX ENO OUT toReal Real Símbolo Dirección Tipo Comentario "EA0" %IW64 Int "EA0_escalado" %MD0 Real "Main_DB".YK[1] Real Segmento 2: EA1 =y2 NORM_X toInt Real SCALE_X toReal Real 0 "EA1" %IW6 6 %IW6 6 2764 8 "EA1_escalado" %MD8%MD8 0.0 "EA1_escalado" %MD 8 %MD 8 10.0 "Main_DB".YK[2] EN MIN VALUE MAX ENO OUT toInt Real EN MIN VALUE MAX ENO OUT toReal Real Símbolo Dirección Tipo Comentario "EA1" %IW66 Int "EA1_escalado" %MD8 Real "Main_DB".YK[2] Real Segmento 3: SA0 = U1 NORM_X toReal Real SCALE_X toReal Int -10.0 "Main_DB".UK[1] 10.0 "SA0_INT" %MD20%MD20 -2764 8 "SA0_INT" %MD2 0 %MD2 0 2764 8 "SA0" %QW80%QW80 EN MIN VALUE MAX ENO OUT toReal Real EN MIN VALUE MAX ENO OUT toReal Int Símbolo Dirección Tipo Comentario "Main_DB".UK[1] Real "SA0" %QW80 Int "SA0_INT" %MD20 Real Segmento 4: SA1 = U2 NORM_X toReal Real SCALE_X toReal Int -10.0 "Main_DB".UK[2] 10.0 "SA1_INT" %MD28%MD28 -2764 8 "SA1_INT" %MD2 8 %MD2 8 2764 8 "SA1" %QW98%QW98 EN MIN VALUE MAX ENO OUT toReal Real EN MIN VALUE MAX ENO OUT toReal Int Símbolo Dirección Tipo Comentario "Main_DB".UK[2] Real "SA1" %QW98 Int "SA1_INT" %MD28 Real
Totally Integrated Automation Portal Main [OB123] Main Propiedades General Nombre Main Número 123 Tipo OB Idioma FUP Numeración automática Información Título "Main Program Sweep (Cycle)" Autor Comentario Familia Versión 0.1 ID personalizada Nombre Tipo de datos Valor predet. Comentario Input Initial_Call Bool Initial call of this OB Remanence Bool =True, if remanent data are available Temp Constant Segmento 1: Leer y escribir I/O analogicas "AnalogIO" %FB3%FB3 "AnalogIO_DB" %DB5%DB5 "Global_vars" . gl_EN EN ENO Símbolo Dirección Tipo Comentario "Global_vars".gl_EN Bool Enable de los FB Segmento 2: Timer = TON Time "Main_DB".FlagTM "IEC_Timer_0_DB" %DB3%DB3 "Global_vars" . gl_T m "Main_DB". tiempoF "Main_DB".FlagTM IN PT ET Q Time Símbolo Dirección Tipo Comentario "Global_vars".gl_Tm Time "Main_DB".FlagTM Bool "Main_DB".tiempoF Time Segmento 3: MPC "MPC" %FB1%FB1 "MPC_DB" %DB4%DB4 "Main_DB".Y K "Main_DB".YR "Main_DB".UM "Global_vars" . gl_MAN "Main_DB".FlagTM "Main_DB" . tiempoF "Main_DB".UK "Global_vars" . gl_EN EN Ysys YR UM MANUAL BOOLTM TiempoFista U K ENO Símbolo Dirección Tipo Comentario "Global_vars".gl_EN Bool Enable de los FB "Global_vars".gl_MAN Bool "Main_DB".FlagTM Bool "Main_DB".tiempoF Time "Main_DB".UK Array "Main_DB".UM Array "Main_DB".YK Array "Main_DB".YR Array