Primera Version TwinCat Converter

This commit is contained in:
Miguel 2025-06-19 14:30:15 +02:00
parent 95eb1bc62f
commit c597eaa28f
192 changed files with 105859 additions and 589 deletions

View File

@ -311,18 +311,157 @@ def log_message(log_path, message):
print(f"Error al escribir en el log: {e}")
print(message)
def transform_io_address(address):
def get_io_address_format(address, data_type):
"""
Transform IO addresses according to the required format:
Determinar el formato correcto de dirección IO según el tipo de datos.
Args:
address: Dirección base (ej: "I0.0", "Q0.0", "PEW0", etc.)
data_type: Tipo de datos (Bool, Word, Real, etc.)
Returns:
str: Dirección formateada según el tipo de datos
"""
if not address or not isinstance(address, str):
return address
address = address.strip()
data_type_lower = data_type.lower() if data_type else ""
# Handle Profibus ranges (extract the first number before the range)
profibus_match = re.match(r'^(EW|AW)\s+(\d+)\.\..*$', address)
if profibus_match:
prefix, number = profibus_match.groups()
if prefix == 'EW':
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%ED{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%EB{number}"
else:
return f"%EW{number}" # Word por defecto
elif prefix == 'AW':
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%AD{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%AB{number}"
else:
return f"%AW{number}" # Word por defecto
# Handle simple AW/EW with space (without range)
simple_profibus_match = re.match(r'^(EW|AW)\s+(\d+)$', address)
if simple_profibus_match:
prefix, number = simple_profibus_match.groups()
if prefix == 'EW':
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%ED{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%EB{number}"
else:
return f"%EW{number}" # Word por defecto
elif prefix == 'AW':
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%AD{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%AB{number}"
else:
return f"%AW{number}" # Word por defecto
# Extraer números de las direcciones para determinar el formato según tipo de datos
# Patterns for boolean addresses (mantener formato de bit)
if re.match(r'^[IEQ](\d+)\.(\d+)$', address):
byte_num = re.match(r'^[IEQ](\d+)\.(\d+)$', address).group(1)
bit_num = re.match(r'^[IEQ](\d+)\.(\d+)$', address).group(2)
if address.startswith(('I', 'E')):
if data_type_lower == 'bool':
return f"%E{byte_num}.{bit_num}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%EB{byte_num}"
elif data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%ED{byte_num}"
else:
return f"%EW{byte_num}" # Word por defecto
elif address.startswith(('Q', 'A')):
if data_type_lower == 'bool':
return f"%A{byte_num}.{bit_num}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%AB{byte_num}"
elif data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%AD{byte_num}"
else:
return f"%AW{byte_num}" # Word por defecto
# Patterns for word addresses
elif re.match(r'^PEW(\d+)$', address):
number = re.match(r'^PEW(\d+)$', address).group(1)
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%ED{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%EB{number}"
else:
return f"%EW{number}" # Word por defecto
elif re.match(r'^PAW(\d+)$', address):
number = re.match(r'^PAW(\d+)$', address).group(1)
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%AD{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%AB{number}"
else:
return f"%AW{number}" # Word por defecto
# Handle addresses that already have % prefix but wrong data type format
elif re.match(r'^%[AE][BWDL](\d+)$', address):
match = re.match(r'^%([AE])([BWDL])(\d+)$', address)
if match:
prefix, current_type, number = match.groups()
if prefix == 'E': # Input
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%ED{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%EB{number}"
else:
return f"%EW{number}" # Word por defecto
elif prefix == 'A': # Output
if data_type_lower in ['dword', 'udint', 'dint', 'real']:
return f"%AD{number}"
elif data_type_lower in ['byte', 'usint', 'sint']:
return f"%AB{number}"
else:
return f"%AW{number}" # Word por defecto
# Si ya está en formato correcto o formato desconocido, devolver tal como está
return address
def transform_io_address(address, data_type=None):
"""
Transform IO addresses according to the required format, considering data type:
For Bool:
- Ixx.x %Exx.x
- Exx.x %Exx.x
- Qxx.x %Axx.x
- Axx.x %Axx.x
For Byte:
- Ixx.x %EBxx
- Qxx.x %ABxx
For Word:
- Ixx.x %EWxx
- Qxx.x %AWxx
- PEWxx %EWxx
- PAWxx %AWxx
- EW xx..xx %EWxx (ranges for Profibus)
- AW xx..xx %AWxx (ranges for Profibus)
For DWord/Real:
- Ixx.x %EDxx
- Qxx.x %ADxx
- PEWxx %EDxx
- PAWxx %ADxx
"""
if data_type:
return get_io_address_format(address, data_type)
# Fallback a la lógica anterior si no se proporciona data_type
if not address or not isinstance(address, str):
return address
@ -385,6 +524,62 @@ def is_bit_type(data_type):
"""Determinar si el tipo de dato es un bit (Bool)."""
return data_type.lower() == 'bool'
def get_memory_address_format(data_type, mem_byte, mem_bit=None):
"""
Determinar el formato de dirección de memoria y el incremento de bytes según el tipo de datos.
Returns:
tuple: (address_format, byte_increment, new_bit)
"""
data_type_lower = data_type.lower()
if data_type_lower == 'bool':
# Para Bool usar formato de bit
if mem_bit is None:
mem_bit = 0
address = f"%M{mem_byte}.{mem_bit}"
new_bit = mem_bit + 1
if new_bit > 7:
new_bit = 0
byte_increment = 1
else:
byte_increment = 0
return address, byte_increment, new_bit
elif data_type_lower in ['byte', 'usint', 'sint']:
# Para Byte usar %MB (1 byte)
address = f"%MB{mem_byte}"
return address, 1, None
elif data_type_lower in ['word', 'uint', 'int']:
# Para Word usar %MW (2 bytes)
address = f"%MW{mem_byte}"
return address, 2, None
elif data_type_lower in ['dword', 'udint', 'dint']:
# Para DWord usar %MD (4 bytes)
address = f"%MD{mem_byte}"
return address, 4, None
elif data_type_lower in ['real', 'lreal']:
# Para Real usar %MD (4 bytes), para LReal usar %ML (8 bytes)
if data_type_lower == 'lreal':
address = f"%ML{mem_byte}"
return address, 8, None
else:
address = f"%MD{mem_byte}"
return address, 4, None
elif data_type_lower in ['time', 'time_of_day', 's5time']:
# Para tipos de tiempo usar %MD (4 bytes)
address = f"%MD{mem_byte}"
return address, 4, None
else:
# Para tipos desconocidos, usar %MW por defecto (2 bytes)
address = f"%MW{mem_byte}"
return address, 2, None
def update_plc_tags(excel_path, md_path, output_path, log_path):
"""
Actualiza el archivo Excel con la información del archivo Markdown.
@ -443,14 +638,14 @@ def update_plc_tags(excel_path, md_path, output_path, log_path):
log_message(log_path, f"Columna IO: {io_col}")
log_message(log_path, f"Columna Master Tag: {master_tag_col}")
# Crear un diccionario de mapeo IO desde el Markdown
# Crear un diccionario de mapeo IO desde el Markdown (sin transformar aún)
io_mapping = {}
for _, row in md_df.iterrows():
master_tag = str(row[master_tag_col]).strip()
io_value = str(row[io_col]).strip()
if master_tag and io_value and master_tag != 'nan' and io_value != 'nan':
io_mapping[master_tag] = transform_io_address(io_value)
io_mapping[master_tag] = io_value # Guardar la dirección sin transformar
log_message(log_path, f"Tags mapeados en el archivo Markdown: {len(io_mapping)}")
@ -467,9 +662,20 @@ def update_plc_tags(excel_path, md_path, output_path, log_path):
# Inicializar contadores para direcciones de memoria
input_mem_byte = 3600
input_mem_bit = 0
output_mem_byte = 3800
output_mem_byte = 3900
output_mem_bit = 0
# Validar configuración inicial de memoria
if output_mem_byte <= input_mem_byte:
error_msg = (f"ERROR: Configuración de memoria inválida. "
f"output_mem_byte ({output_mem_byte}) debe ser mayor que input_mem_byte ({input_mem_byte}). "
f"Ajuste los valores iniciales de memoria.")
log_message(log_path, error_msg)
return False
log_message(log_path, f"Configuración de memoria: input_mem_byte={input_mem_byte}, output_mem_byte={output_mem_byte}")
log_message(log_path, f"Espacio disponible para inputs: {output_mem_byte - input_mem_byte} bytes")
# Estadísticas
total_tags = 0
updated_tags = 0
@ -532,7 +738,9 @@ def update_plc_tags(excel_path, md_path, output_path, log_path):
# Verificar si el tag está en el mapeo de IO
if tag_name in io_mapping:
old_address = logical_address_cell.value
new_address = io_mapping[tag_name]
io_raw_address = io_mapping[tag_name]
# Transformar la dirección considerando el tipo de datos
new_address = transform_io_address(io_raw_address, data_type)
logical_address_cell.value = new_address
# Determinar el nuevo path basado en la dirección asignada
@ -558,7 +766,7 @@ def update_plc_tags(excel_path, md_path, output_path, log_path):
relocated_tags[new_path] = relocated_tags.get(new_path, 0) + 1
updated_tags += 1
log_message(log_path, f"Actualizado: {tag_name} | Viejo valor: {old_address} | Nuevo valor: {new_address} | Path: {path_cell.value}")
log_message(log_path, f"Actualizado: {tag_name} | Tipo: {data_type} | Viejo valor: {old_address} | Nuevo valor: {new_address} | Path: {path_cell.value}")
# Si no está en el mapeo, asignar dirección de memoria según configuración
else:
@ -577,34 +785,40 @@ def update_plc_tags(excel_path, md_path, output_path, log_path):
# Asignar dirección de memoria según el tipo (Input/Output)
if path_type == "Input" or (is_input and not is_output):
# Asignar dirección de memoria para entradas
# Verificar que no se exceda el límite de memoria de entrada
new_address, byte_increment, new_bit = get_memory_address_format(
data_type, input_mem_byte, input_mem_bit
)
# Verificar límites antes de asignar
new_input_mem_byte = input_mem_byte + byte_increment
if new_input_mem_byte >= output_mem_byte:
error_msg = (f"ERROR: input_mem_byte ({new_input_mem_byte}) excedería output_mem_byte ({output_mem_byte}). "
f"La memoria de entrada está demasiado cerca de la memoria de salida. "
f"Tag problemático: {tag_name}. "
f"Considere aumentar output_mem_byte o reducir el número de tags de entrada.")
log_message(log_path, error_msg)
return False
if is_bit_type(data_type):
new_address = f"%M{input_mem_byte}.{input_mem_bit}"
input_mem_bit += 1
if input_mem_bit > 7:
input_mem_bit = 0
input_mem_byte += 1
else:
new_address = f"%MW{input_mem_byte}"
input_mem_byte += 2
input_mem_bit = new_bit
input_mem_byte = new_input_mem_byte
else: # Tipo Output o no determinado
# Asignar dirección de memoria para salidas
new_address, byte_increment, new_bit = get_memory_address_format(
data_type, output_mem_byte, output_mem_bit
)
if is_bit_type(data_type):
new_address = f"%M{output_mem_byte}.{output_mem_bit}"
output_mem_bit += 1
if output_mem_bit > 7:
output_mem_bit = 0
output_mem_byte += 1
else:
new_address = f"%MW{output_mem_byte}"
output_mem_byte += 2
output_mem_bit = new_bit
output_mem_byte += byte_increment
relocated_tags[no_used_path] = relocated_tags.get(no_used_path, 0) + 1
old_address = logical_address_cell.value
logical_address_cell.value = new_address
assigned_memory_addresses += 1
log_message(log_path, f"Asignación memoria: {tag_name} | Viejo valor: {old_address} | Nuevo valor: {new_address} | Path: {path_cell.value}")
log_message(log_path, f"Asignación memoria: {tag_name} | Tipo: {data_type} | Viejo valor: {old_address} | Nuevo valor: {new_address} | Path: {path_cell.value}")
# Guardar el archivo actualizado
try:
@ -623,6 +837,17 @@ def update_plc_tags(excel_path, md_path, output_path, log_path):
log_message(log_path, f"Tags relocalizados a {path}: {count}")
log_message(log_path, f"Tags con direcciones de memoria asignadas: {assigned_memory_addresses}")
# Mostrar uso final de memoria
log_message(log_path, "\n" + "=" * 25 + " USO DE MEMORIA " + "=" * 25)
log_message(log_path, f"Memoria de entrada final: {input_mem_byte} (inicio: 3600)")
log_message(log_path, f"Memoria de salida final: {output_mem_byte} (inicio: 3900)")
log_message(log_path, f"Bytes usados para entradas: {input_mem_byte - 3600}")
log_message(log_path, f"Bytes usados para salidas: {output_mem_byte - 3900}")
log_message(log_path, f"Espacio restante entre memorias: {3900 - input_mem_byte} bytes")
if input_mem_byte > 3600 or output_mem_byte > 3900:
log_message(log_path, f"✅ Proceso completado exitosamente sin conflictos de memoria")
return True
def main():

View File

@ -0,0 +1,297 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK ADSVARREAD
VAR_INPUT
NETID : STRING(21);
PORT : UINT;
VARNAME : STRING(101);
DESTLEN : UDINT;
DESTADDR : DWORD;
CONNECT : BOOL;
READ : BOOL;
TMOUT : TIME;
END_VAR
VAR_OUTPUT
CONNECTED: BOOL;
BUSY : BOOL;
ERR : BOOL;
ERRID : UDINT;
END_VAR
VAR
i_NETID : STRING(21);
i_PORT : UINT;
i_VARNAME : STRING(101);
i_DESTLEN : UDINT;
i_DESTADDR : DWORD;
i_TMOUT : TIME;
i_IdxOffset : UDINT;
fbRTrigCon : R_TRIG;
fbRWCon : ADSRDWRT;
fbWDiscon : ADSWRITE;
fbAdsRead : ADSREAD;
fbBlockTimer : TOF;
tBlockTime : TIME;
iState : INT;
END_VAR
(* @END_DECLARATION := '0' *)
fbRTrigCon(CLK:= CONNECT);
tBlockTime := T#60s;
fbBlockTimer(IN:=FALSE, PT:=tBlockTime);
CASE iState OF
0: (*
Awaiting CONNECT
*)
ERR:=FALSE;
CONNECTED:=FALSE;
IF READ THEN
BUSY:=TRUE; (* go error state, but create signals ... *)
ERRID:=0;
iState:=-1;
ELSIF CONNECT THEN
(* rising edge at CONNECT input, save input vars *)
i_NETID:=NETID;
i_PORT:=PORT;
i_VARNAME:=VARNAME;
i_DESTLEN:=DESTLEN;
i_DESTADDR:=DESTADDR;
i_TMOUT:=TMOUT;
(* go active ... *)
BUSY:=TRUE;
ERRID:=0;
IF fbBlockTimer.Q THEN
iState:=-2; (* still blocked out, go error state, but create signals ... *)
ELSE
fbRWCon(WRTRD:=FALSE);
iState:=10; (* start varconnect ... *)
END_IF
ELSE
BUSY:=FALSE; (* still waiting ... *)
END_IF
-1: (*
Tried to start without connect
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFF;
IF NOT READ THEN
iState:=0; (* go idle *)
END_IF
-2: (*
Tried to connect while still blocked out
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFE;
IF NOT CONNECT THEN
iState:=0; (* go idle *)
END_IF
(* ########################################################## *)
10: (*
Sending var connect request
*)
fbRWCon.NETID:=i_NETID;
fbRWCon.PORT:=i_PORT;
fbRWCon.IDXGRP:=ADS_IDXGRP_GETVARHANDLEBYNAME;
fbRWCon.IDXOFFS:=16#0;
fbRWCon.WRITELEN:= LEN(i_VARNAME);
fbRWCon.READLEN:=SIZEOF(i_IdxOffset);
fbRWCon.SRCADDR:=ADR(i_VARNAME);
fbRWCon.DESTADDR:=ADR(i_IdxOffset);
fbRWCon.TMOUT:=i_TMOUT;
fbRWCon.WRTRD:=TRUE;
fbRWCon();
iState:=11; (* go ahead *)
11: (*
Sending var connect request
*)
fbRWCon();
IF NOT fbRWCon.BUSY THEN
BUSY:=FALSE;
IF fbRWCon.ERR THEN
ERR:=TRUE;
ERRID:=fbRWCon.ERRID;
fbBlockTimer(IN:=(fbRWCon.ERRID=16#745) AND (PORT<>uiS7ADS_PORTNO));
iState:=-11; (* go error state *)
ELSE
(* Succeded *)
CONNECTED:=TRUE;
(* Prepare for Reading *)
fbAdsRead.READ:=FALSE;
fbAdsRead();
iState:=20; (* go ahead *)
END_IF
fbRWCon.WRTRD:=FALSE;
fbRWCon();
END_IF
-11: (*
wasn't able to connect
*)
IF NOT CONNECT THEN
iState:=0; (* go idle *)
END_IF
(* ########################################################## *)
20: (*
awaiting DISCONNECT or READ
*)
ERR:=FALSE;
IF READ THEN
BUSY:=TRUE; (* go ahead ... *)
ERRID:=0;
IF fbBlockTimer.Q THEN
iState:=-40; (* still blocked out, go error state, but create signals ... *)
ELSE
iState:=40;
fbAdsRead(READ:=FALSE);
END_IF
ELSIF NOT CONNECT THEN
BUSY:=TRUE;
ERRID:=0;
(* Prepare for Disconnect *)
IF fbBlockTimer.Q THEN
iState:=-30; (* still blocked out, go error state, but create signals ... *)
ELSE
fbWDiscon(WRITE:=FALSE);
iState:=30; (* go ahead *)
END_IF
ELSE
BUSY:=FALSE; (* still waiting ... *)
END_IF
30: (*
Sending var disconnect request
*)
fbWDiscon.NETID:=i_NETID;
fbWDiscon.PORT:=i_PORT;
fbWDiscon.IDXGRP:=ADS_IDXGRP_RELEASEVARHANDLE;
fbWDiscon.IDXOFFS:=i_IdxOffset;
fbWDiscon.LEN:= SIZEOF(i_IdxOffset);
fbWDiscon.SRCADDR:=ADR(i_IdxOffset);
fbWDiscon.TMOUT:=i_TMOUT;
fbWDiscon.WRITE:= TRUE;
fbWDiscon();
iState:=31; (* go ahead *)
31: (*
Sending var disconnect request
*)
fbWDiscon();
IF NOT fbWDiscon.BUSY THEN
BUSY:=FALSE;
IF fbWDiscon.ERR THEN
ERR:=TRUE;
ERRID:=fbRWCon.ERRID;
fbBlockTimer(IN:=(fbRWCon.ERRID=16#745) AND (PORT<>uiS7ADS_PORTNO));
iState:=-31; (* go error state *)
ELSE
(* Succeded *)
CONNECTED:=FALSE;
iState:=0; (* go idle *)
END_IF
fbWDiscon.WRITE:= FALSE;
fbWDiscon();
END_IF
-30: (*
tried to DISCONNECT while still blocked out
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFD;
IF CONNECT THEN
iState:=20; (* go back *)
END_IF
-31: (*
wasn't able to DISCONNECT
*)
IF CONNECT THEN
iState:=20; (* go back *)
END_IF
(* ########################################################## *)
40: (*
Sending read request
*)
fbAdsRead.NETID:=i_NETID;
fbAdsRead.PORT:=i_PORT;
fbAdsRead.IDXGRP:=ADS_IDXGRP_READVARBYHANDLE;
fbAdsRead.IDXOFFS:=i_IdxOffset;
fbAdsRead.LEN:=i_DESTLEN;
fbAdsRead.DESTADDR:=i_DESTADDR;
fbAdsRead.TMOUT:=i_TMOUT;
fbAdsRead.READ:=TRUE;
fbAdsRead();
iState:=41; (* go ahead *)
41: (*
Sending read request
*)
fbAdsRead();
IF NOT fbAdsRead.BUSY THEN
BUSY:=FALSE;
IF fbAdsRead.ERR THEN
ERR:=TRUE;
ERRID:=fbAdsRead.ERRID;
fbBlockTimer(IN:=(fbAdsRead.ERRID=16#745) AND (PORT<>uiS7ADS_PORTNO));
iState:=-41; (* go error state *)
ELSE
iState:=42; (* go ahead *)
END_IF
fbAdsRead.READ:=FALSE;
fbAdsRead();
END_IF
42: (*
Sending read request
*)
IF NOT READ THEN
iState:=20; (* go idle *)
END_IF
-40: (*
tried to READ while still blocked out
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFC;
IF NOT READ THEN
iState:=20; (* go back *)
END_IF
-41: (*
wasn't able to READ
*)
IF NOT READ THEN
iState:=20; (* go back *)
END_IF
(* ########################################################## *)
ELSE
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFF00;
IF NOT CONNECT AND NOT READ THEN
iState:=0; (* go idle *)
END_IF
END_CASE
END_FUNCTION_BLOCK

View File

@ -0,0 +1,143 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK ADSVARTRANSLATE
VAR_INPUT
FORMAT : STRING(255);
SOURCELEN : UDINT;
SOURCEADDR : DWORD;
DESTADDR : DWORD;
START : BOOL;
END_VAR
VAR_OUTPUT
READY : BOOL;
ERR : BOOL;
END_VAR
VAR
baName : ARRAY [1..255] OF BYTE;
nStrMaxIdx : INT;
nStrIdx : INT;
baData : ARRAY [1..255] OF BYTE;
nDataMaxIdx : INT;
nDataIdx : INT;
nCount : INT;
bTemp : BYTE;
fbRTrig : R_TRIG;
END_VAR
(* @END_DECLARATION := '0' *)
fbRTrig(CLK:= START);
IF fbRTrig.Q THEN
ERR := FALSE;
nStrMaxIdx := MIN(LEN(FORMAT),255);
MEMCPY(ADR(baName),ADR(FORMAT),nStrMaxIdx);
nDataMaxIdx := UDINT_TO_INT(MIN(SOURCELEN,255));
MEMCPY(ADR(baData),SOURCEADDR,nDataMaxIdx);
nStrIdx := 1;
nDataIdx := 1;
WHILE(nStrIdx<=nStrMaxIdx) DO
nCount := 1;
IF(baName[nStrIdx] >= 48 AND baName[nStrIdx] <= 57) THEN
nCount := baName[nStrIdx] - 48;
nStrIdx := nStrIdx+1;
IF(nStrIdx>nStrMaxIdx) THEN
ERR := TRUE;
EXIT;
END_IF
IF(baName[nStrIdx] >= 48 AND baName[nStrIdx] <= 57) THEN
nCount := 10 * nCount + baName[nStrIdx] - 48;
nStrIdx := nStrIdx+1;
IF(nStrIdx>nStrMaxIdx) THEN
ERR := TRUE;
EXIT;
END_IF
END_IF
END_IF
IF(baName[nStrIdx] = 68 OR baName[nStrIdx] = 100) THEN
(*
dword data: revert bytes
*)
WHILE(nCount > 0)DO
IF((nDataIdx+3) > nDataMaxIdx) THEN
ERR := TRUE;
EXIT;
END_IF
bTemp := baData[nDataIdx];
baData[nDataIdx] := baData[nDataIdx+3];
baData[nDataIdx+3] := bTemp;
bTemp := baData[nDataIdx+1];
baData[nDataIdx+1] := baData[nDataIdx+2];
baData[nDataIdx+2] := bTemp;
nDataIdx := nDataIdx + 4;
nCount := nCount - 1;
END_WHILE;
nStrIdx := nStrIdx+1;
ELSIF(baName[nStrIdx] = 82 OR baName[nStrIdx] = 114) THEN
(*
real data: revert bytes
*)
WHILE(nCount > 0)DO
IF((nDataIdx+3) > nDataMaxIdx) THEN
ERR := TRUE;
EXIT;
END_IF
bTemp := baData[nDataIdx];
baData[nDataIdx] := baData[nDataIdx+3];
baData[nDataIdx+3] := bTemp;
bTemp := baData[nDataIdx+1];
baData[nDataIdx+1] := baData[nDataIdx+2];
baData[nDataIdx+2] := bTemp;
nDataIdx := nDataIdx + 4;
nCount := nCount - 1;
END_WHILE;
nStrIdx := nStrIdx+1;
ELSIF(baName[nStrIdx] = 87 OR baName[nStrIdx] = 119) THEN
(*
word data: swap high / low byte
*)
WHILE(nCount > 0)DO
IF((nDataIdx+1) > nDataMaxIdx) THEN
ERR := TRUE;
EXIT;
END_IF
bTemp := baData[nDataIdx];
baData[nDataIdx] := baData[nDataIdx+1];
baData[nDataIdx+1] := bTemp;
nDataIdx := nDataIdx + 2;
nCount := nCount - 1;
END_WHILE;
nStrIdx := nStrIdx+1;
ELSIF(baName[nStrIdx] = 66 OR baName[nStrIdx] = 98) THEN
(*
byte data: skip byte
*)
WHILE(nCount > 0)DO
IF(nDataIdx > nDataMaxIdx) THEN
ERR := TRUE;
EXIT;
END_IF
nDataIdx := nDataIdx + 1;
nCount := nCount - 1;
END_WHILE;
nStrIdx := nStrIdx+1;
ELSE
ERR := TRUE;
EXIT;
END_IF
END_WHILE;
MEMCPY(DESTADDR,ADR(baData),nDataMaxIdx);
END_IF
READY := START;
END_FUNCTION_BLOCK

View File

@ -0,0 +1,297 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK ADSVARWRITE
VAR_INPUT
NETID : STRING(21);
PORT : UINT;
VARNAME : STRING(101);
SRCLEN : UDINT;
SRCADDR : DWORD;
CONNECT : BOOL;
WRITE : BOOL;
TMOUT : TIME;
END_VAR
VAR_OUTPUT
CONNECTED: BOOL;
BUSY : BOOL;
ERR : BOOL;
ERRID : UDINT;
END_VAR
VAR
i_NETID : STRING(21);
i_PORT : UINT;
i_VARNAME : STRING(101);
i_SRCLEN : UDINT;
i_SRCADDR : DWORD;
i_TMOUT : TIME;
i_IdxOffset : UDINT;
fbRTrigCon : R_TRIG;
fbRWCon : ADSRDWRT;
fbWDiscon : ADSWRITE;
fbAdsWrite : ADSWRITE;
fbBlockTimer : TOF;
tBlockTime : TIME;
iState : INT;
END_VAR
(* @END_DECLARATION := '0' *)
fbRTrigCon(CLK:= CONNECT);
tBlockTime := T#60s;
fbBlockTimer(IN:=FALSE , PT:=tBlockTime );
CASE iState OF
0: (*
Awaiting CONNECT
*)
ERR:=FALSE;
CONNECTED:=FALSE;
IF WRITE THEN
BUSY:=TRUE; (* go error state, but create signals ... *)
ERRID:=0;
iState:=-1;
ELSIF CONNECT THEN
(* rising edge at CONNECT input, save input vars *)
i_NETID:=NETID;
i_PORT:=PORT;
i_VARNAME:=VARNAME;
i_SRCLEN:=SRCLEN;
i_SRCADDR:=SRCADDR;
i_TMOUT:=TMOUT;
(* go active ... *)
BUSY:=TRUE;
ERRID:=0;
IF fbBlockTimer.Q THEN
iState:=-2; (* still blocked out, go error state, but create signals ... *)
ELSE
fbRWCon(WRTRD:=FALSE);
iState:=10; (* start varconnect ... *)
END_IF
ELSE
BUSY:=FALSE; (* still waiting ... *)
END_IF
-1: (*
Tried to start without connect
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFF;
IF NOT WRITE THEN
iState:=0; (* go idle *)
END_IF
-2: (*
Tried to connect while still blocked out
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFE;
IF NOT CONNECT THEN
iState:=0; (* go idle *)
END_IF
(* ########################################################## *)
10: (*
Sending var connect request
*)
fbRWCon.NETID:=i_NETID;
fbRWCon.PORT:=i_PORT;
fbRWCon.IDXGRP:=ADS_IDXGRP_GETVARHANDLEBYNAME;
fbRWCon.IDXOFFS:=16#0;
fbRWCon.WRITELEN:= LEN(i_VARNAME);
fbRWCon.READLEN:=SIZEOF(i_IdxOffset);
fbRWCon.SRCADDR:=ADR(i_VARNAME);
fbRWCon.DESTADDR:=ADR(i_IdxOffset);
fbRWCon.TMOUT:=i_TMOUT;
fbRWCon.WRTRD:=TRUE;
fbRWCon();
iState:=11; (* go ahead *)
11: (*
Sending var connect request
*)
fbRWCon();
IF NOT fbRWCon.BUSY THEN
BUSY:=FALSE;
IF fbRWCon.ERR THEN
ERR:=TRUE;
ERRID:=fbRWCon.ERRID;
fbBlockTimer(IN:=(fbRWCon.ERRID=16#745) AND (PORT<>uiS7ADS_PORTNO));
iState:=-11; (* go error state *)
ELSE
(* Succeded *)
CONNECTED:=TRUE;
(* Prepare for writing *)
fbAdsWrite.WRITE:=FALSE;
fbAdsWrite();
iState:=20; (* go ahead *)
END_IF
fbRWCon.WRTRD:=FALSE;
fbRWCon();
END_IF
-11: (*
wasn't able to connect
*)
IF NOT CONNECT THEN
iState:=0; (* go idle *)
END_IF
(* ########################################################## *)
20: (*
awaiting DISCONNECT or WRITE
*)
ERR:=FALSE;
IF WRITE THEN
BUSY:=TRUE; (* go ahead ... *)
ERRID:=0;
IF fbBlockTimer.Q THEN
iState:=-40; (* still blocked out, go error state, but create signals ... *)
ELSE
iState:=40;
fbAdsWrite(WRITE:=FALSE);
END_IF
ELSIF NOT CONNECT THEN
BUSY:=TRUE;
ERRID:=0;
(* Prepare for Disconnect *)
IF fbBlockTimer.Q THEN
iState:=-30; (* still blocked out, go error state, but create signals ... *)
ELSE
fbWDiscon(WRITE:=FALSE);
iState:=30; (* go ahead *)
END_IF
ELSE
BUSY:=FALSE; (* still waiting ... *)
END_IF
30: (*
Sending var disconnect request
*)
fbWDiscon.NETID:=i_NETID;
fbWDiscon.PORT:=i_PORT;
fbWDiscon.IDXGRP:=ADS_IDXGRP_RELEASEVARHANDLE;
fbWDiscon.IDXOFFS:=i_IdxOffset;
fbWDiscon.LEN:= SIZEOF(i_IdxOffset);
fbWDiscon.SRCADDR:=ADR(i_IdxOffset);
fbWDiscon.TMOUT:=i_TMOUT;
fbWDiscon.WRITE:= TRUE;
fbWDiscon();
iState:=31; (* go ahead *)
31: (*
Sending var disconnect request
*)
fbWDiscon();
IF NOT fbWDiscon.BUSY THEN
BUSY:=FALSE;
IF fbWDiscon.ERR THEN
ERR:=TRUE;
ERRID:=fbRWCon.ERRID;
fbBlockTimer(IN:=(fbRWCon.ERRID=16#745) AND (PORT<>uiS7ADS_PORTNO));
iState:=-31; (* go error state *)
ELSE
(* Succeded *)
CONNECTED:=FALSE;
iState:=0; (* go idle *)
END_IF
fbWDiscon.WRITE:= FALSE;
fbWDiscon();
END_IF
-30: (*
tried to DISCONNECT while still blocked out
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFD;
IF CONNECT THEN
iState:=20; (* go back *)
END_IF
-31: (*
wasn't able to DISCONNECT
*)
IF CONNECT THEN
iState:=20; (* go back *)
END_IF
(* ########################################################## *)
40: (*
Sending read request
*)
fbAdsWrite.NETID:=i_NETID;
fbAdsWrite.PORT:=i_PORT;
fbAdsWrite.IDXGRP:=ADS_IDXGRP_READVARBYHANDLE;
fbAdsWrite.IDXOFFS:=i_IdxOffset;
fbAdsWrite.LEN:=i_SRCLEN;
fbAdsWrite.SRCADDR:=i_SRCADDR;
fbAdsWrite.TMOUT:=i_TMOUT;
fbAdsWrite.WRITE:=TRUE;
fbAdsWrite();
iState:=41; (* go ahead *)
41: (*
Sending read request
*)
fbAdsWrite();
IF NOT fbAdsWrite.BUSY THEN
BUSY:=FALSE;
IF fbAdsWrite.ERR THEN
ERR:=TRUE;
ERRID:=fbAdsWrite.ERRID;
fbBlockTimer(IN:=(fbAdsWrite.ERRID=16#745) AND (PORT<>uiS7ADS_PORTNO));
iState:=-41; (* go error state *)
ELSE
iState:=42; (* go ahead *)
END_IF
fbAdsWrite.WRITE:=FALSE;
fbAdsWrite();
END_IF
42: (*
Sending read request
*)
IF NOT WRITE THEN
iState:=20; (* go idle *)
END_IF
-40: (*
tried to WRITE while still blocked out
*)
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFFFC;
IF NOT WRITE THEN
iState:=20; (* go back *)
END_IF
-41: (*
wasn't able to WRITE
*)
IF NOT WRITE THEN
iState:=20; (* go back *)
END_IF
(* ########################################################## *)
ELSE
BUSY:=FALSE;
ERR:=TRUE;
ERRID:=16#FFFFFF00;
IF NOT CONNECT AND NOT WRITE THEN
iState:=0; (* go idle *)
END_IF
END_CASE
END_FUNCTION_BLOCK

View File

@ -0,0 +1,611 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *)
(* @SYMFILEFLAGS := '0' *)
PROGRAM AmmoniaCtrl
VAR
mAmmoniaCtrlDelay : TOF;
mFirstProdColdReqDly : TON ;
mCompressorDelay : TON;
mCompressorRS_Prod : RS;
mCompressorRS_CIP : RS;
mCompressorCIPRun : TON;
mAmmoniaRunOutRS : RS;
mCompressorRun_CIP : BOOL;
mCompressorRun_Prod : BOOL;
mNH3CompressorFault : TON;
mCompressorStart : R_TRIG;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 10
_NETWORK
_COMMENT
Enables NH3 evaporation
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderStartPumps
_EXPRESSION
_POSITIV
_LD_CONTACT
gEnableRecircPHE
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gAuxVoltageOk
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOutAmmoniaWaterColdControl
_NETWORK
_COMMENT
Enables NH3 evaporation
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gOutAmmoniaCompressorRun
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_ColdRinseRun
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderStartPumps
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAmmoniaCtrlDelay
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#15s
_EXPRESSION
_POSITIV
tof
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gAuxVoltageOk
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOutAmmoniaProductColdControl
_NETWORK
_COMMENT
Enables NH3 liquid inlet
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 4
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_LD_CONTACT
gCarboWaterLine_Running
_EXPRESSION
_POSITIV
_LD_CONTACT
gEnableRecircPHE
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_ColdRinseRun
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderStartPumps
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gAuxVoltageOk
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOutAmmoniaWaterColdRequest
_NETWORK
_COMMENT
During First Production the pipe from Water MOD. valve through the prod heat exchanger TO the product tank
is empty, so 30 S are needed TO wait that the pipe fills OF product.
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_ColdRinseRun
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderStartPumps
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mFirstProdColdReqDly
_BOX_EXPR : 2
_EMPTY
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_POSITIV
gFirstProdLatched
_OPERAND
_EXPRESSION
_POSITIV
t#0s
_OPERAND
_EXPRESSION
_POSITIV
t#30s
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
ton
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_LD_CONTACT
gAuxVoltageOk
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOutAmmoniaProductColdRequest
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gOutAmmoniaCompressorRun
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderProdMode
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_ColdRinseRun
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderStartPumps
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_ColdRinseRun
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
DO_AmmoniaProductColdControl
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOutAmmonia_ByPassHotGas
_NETWORK
_COMMENT
Ammonia compressors NOT running
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gOutAmmoniaProductColdControl
_EXPRESSION
_POSITIV
_LD_CONTACT
gInAmmoniaCompressorReady
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mNH3CompressorFault
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#10s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_LD_CONTACT
gWorkshopTest
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gAmmoniaCompressor_Fault
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mCompressorRS_Prod
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gBlenderRinse_Running
_OPERAND
_EXPRESSION
_POSITIV
gBlenderBlending
_EXPRESSION
_POSITIV
OR
_OPERATOR
_BOX_EXPR : 5
_OPERAND
_EXPRESSION
_POSITIV
gProdTankRunOut_Latch
_OPERAND
_EXPRESSION
_NEGATIV
gGencoldChillerEn
_OPERAND
_EXPRESSION
_POSITIV
gH_WarmRinseRun
_OPERAND
_EXPRESSION
_POSITIV
gBlenderCIPMode
_OPERAND
_EXPRESSION
_NEGATIV
gCoolerEnabled
_EXPRESSION
_POSITIV
OR
_EXPRESSION
_POSITIV
rs
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mCompressorRun_Prod
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mCompressorRS_CIP
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gBlenderStartPumps
_OPERAND
_EXPRESSION
_NEGATIV
gAmmoniaRunOut_Done
_EXPRESSION
_POSITIV
AND
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gAmmoniaRunOut_Done
_OPERAND
_EXPRESSION
_POSITIV
gBlenderProdMode
_EXPRESSION
_POSITIV
OR
_EXPRESSION
_POSITIV
rs
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mCompressorRun_CIP
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
mCompressorRun_Prod
_EXPRESSION
_POSITIV
_LD_CONTACT
mCompressorRun_CIP
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOutAmmoniaCompressorRun
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mAmmoniaRunOutRS
_BOX_EXPR : 2
_ENABLED
_FUNCTIONBLOCK
mCompressorCIPRun
_BOX_EXPR : 2
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
mCompressorRun_CIP
_OPERAND
_EXPRESSION
_POSITIV
gInAmmoniaCompressorReady
_EXPRESSION
_POSITIV
AND
_OPERAND
_EXPRESSION
_POSITIV
t#30m
_EXPRESSION
_POSITIV
ton
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
gBlenderProdMode
_EXPRESSION
_POSITIV
rs
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gAmmoniaRunOut_Done
ENABLELIST_END
_OUTPUTS : 0
END_PROGRAM

View File

@ -0,0 +1,29 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION ArrayToReal : REAL
VAR_INPUT
mIn_Value : POINTER TO BYTE;
END_VAR
VAR
i : INT;
p : UDINT;
p1 : UDINT;
mPoint : POINTER TO BYTE;
mPoint1 : POINTER TO BYTE;
mTemp : REAL;
END_VAR
(* @END_DECLARATION := '0' *)
mPoint := ADR(mTemp);
FOR i := 3 TO 0 BY -1
DO
p1 := mIn_Value;
mPoint1 := p1 + i;
mPoint^ := mPoint1^;
p := mPoint ;
p := p + 1 ;
mPoint := p ;
END_FOR
ArrayToReal := mTemp;
END_FUNCTION

View File

@ -0,0 +1,209 @@
(* @GLOBAL_VARIABLE_LIST := BlenderProcedure_Variables *)
(* @PATH := '\/Blending_Variables' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(************************************************************************************)
(* START UP VARIABLES *)
(************************************************************************************)
gDeairStartUp_Qualifier : BOOL ; (* *)
gDeairStartUp_Request : BOOL ; (* *)
gDeairStartUp_Reset : BOOL ; (* *)
gDeairStartUp_Latch : BOOL ; (* *)
gDeairStartUp_Running : BOOL ; (* *)
gDeairStartUp_Wait : BOOL ; (* *)
gDeairStatUpH2OFilter_OK : BOOL ; (* *)
gCarboWaterLine_Qualifier : BOOL ; (* *)
gCarboWaterLine_Request : BOOL ; (* *)
gCarboWaterLine_Reset : BOOL ; (* *)
gCarboWaterLine_Latch : BOOL ; (* *)
gCarboWaterLine_Running : BOOL ; (* *)
gCarboWaterLine_Wait : BOOL ; (* *)
gSyrLineMFMPrep_Qualifier : BOOL ; (* *)
gSyrLineMFMPrep_Request : BOOL ; (* *)
gSyrLineMFMPrep_Reset : BOOL ; (* *)
gSyrLineMFMPrep_Latch : BOOL ; (* *)
gSyrLineMFMPrep_Running : BOOL ; (* *)
gSyrLineMFMPrep_Wait : BOOL ; (* *)
gSyrMFMStartUp_Qualifier : BOOL ; (* *)
gSyrMFMStartUp_Request : BOOL ; (* *)
gSyrMFMStartUp_Reset : BOOL ; (* *)
gSyrMFMStartUp_Latch : BOOL ; (* *)
gSyrMFMStartUp_Running : BOOL ; (* *)
gSyrMFMStartUp_Wait : BOOL ; (* *)
gDensimeterCal_Qualifier : BOOL ; (* *)
gDensimeterCal_Request : BOOL ; (* *)
gDensimeterCal_Reset : BOOL ; (* *)
gDensimeterCal_Latch : BOOL ; (* *)
gDensimeterCal_Running : BOOL ; (* *)
gDensimeterCal_Wait : BOOL ; (* *)
gProdBrixRecovery_Qualifier : BOOL ; (* *)
gProdBrixRecovery_Request : BOOL ; (* *)
gProdBrixRecovery_Reset : BOOL ; (* *)
gProdBrixRecovery_Latch : BOOL ; (* *)
gProdBrixRecovery_Running : BOOL ; (* *)
gProdBrixRecovery_Wait : BOOL ; (* *)
gProdBrixRecovery_Done : BOOL ; (* *)
END_VAR
VAR_GLOBAL PERSISTENT
gDeairStartUp_Done : BOOL ; (* *)
gCarboWaterLine_Done : BOOL ; (* *)
gSyrLineMFMPrep_Done : BOOL ; (* *)
gDensimeterCal_Done : BOOL ; (* *)
gSyrRunOut_Done : BOOL ; (* *)
gFirstProd_Request : BOOL ; (* Must be Persistent in order to remember the request *)
gFirstProd_Done : BOOL ;
gProdTankRunOut_Done : BOOL ; (* *)
gProdTankDrain_Done : BOOL ; (* *)
gBlendFillStartUp_Done : BOOL ; (* *)
gAmmoniaRunOut_Done : BOOL ;
END_VAR
VAR_GLOBAL
(************************************************************************************)
(* BLENDER RUN CONTROL VARIABLES *)
(************************************************************************************)
gBlenderRun_Qualifier : BOOL ; (* *)
gBlenderRun_Request : BOOL ; (* *)
gBlenderRun_Reset : BOOL ; (* *)
gBlenderRun_Latch : BOOL ; (* *)
gBlenderRun_Running : BOOL ; (* *)
gBlenderRun_Wait : BOOL ; (* *)
gBlenderRun_Done : BOOL ; (* *)
(************************************************************************************)
(* BLENDER STOP CONTROL VARIABLES *)
(************************************************************************************)
gBlenderStop_Request : BOOL ; (* *)
gBlenderStop_Latch : BOOL ; (* *)
gBlenderStop_Running : BOOL ; (* *)
gBlenderStop_Done : BOOL ; (* *)
(************************************************************************************)
(* BLENDER RINSE VARIABLES *)
(************************************************************************************)
gBlenderRinse_Qualifier : BOOL ; (* *)
gBlenderRinse_Request : BOOL ; (* *)
gBlenderRinse_Reset : BOOL ; (* *)
gBlenderRinse_Latch : BOOL ; (* *)
gBlenderRinse_Running : BOOL ; (* *)
gBlenderRinse_Wait : BOOL ; (* *)
gBlenderRinse_Done : BOOL ; (* *)
gBlenderRinse_DoneONS : BOOL ; (* *)
(************************************************************************************)
(* FILLER SPEED CALCOLUS VARIABLES *)
(************************************************************************************)
gFillerSpeed_Qualifier : BOOL ; (* *)
gFillerSpeed_Request : BOOL ; (* *)
gFillerSpeed_Latch : BOOL ; (* *)
gFillerSpeed_Running : BOOL ; (* *)
gFillerSpeed_Done : BOOL ; (* *)
(************************************************************************************)
(* FIRST PRODUCTION VARIABLES *)
(************************************************************************************)
gFirstProd_Qualifier : BOOL ; (* *)
gFirstProd_Reset : BOOL ; (* *)
gFirstProd_Latch : BOOL ; (* *)
gFirstProd_Running : BOOL ; (* *)
gFirstProd_Wait : BOOL ; (* *)
(************************************************************************************)
(* PRESSURE CONTROL VARIABLES *)
(************************************************************************************)
gProdTankPress_Qualifier : BOOL ; (* *)
gProdTankPress_Request : BOOL ; (* *)
gProdTankPress_Reset : BOOL ; (* *)
gProdTankPress_Latch : BOOL ; (* *)
gProdTankPress_Running : BOOL ; (* *)
gProdTankPress_Wait : BOOL ; (* *)
gProdTankPress_Done : BOOL ; (* *)
(************************************************************************************)
(* SYRUP RUNOUT VARIABLES *)
(************************************************************************************)
gSyrRunOut_Qualifier : BOOL ; (* *)
gSyrRunOut_Request : BOOL ; (* *)
gSyrRunOut_Reset : BOOL ; (* *)
gSyrRunOut_Latch : BOOL ; (* *)
gSyrRunOut_Running : BOOL ; (* *)
gSyrRunOut_Wait : BOOL ; (* *)
(************************************************************************************)
(* PRODUCT TANK RUNOUT VARIABLES *)
(************************************************************************************)
gProdTankRunOut_Qualifier : BOOL ; (* *)
gProdTankRunOut_Request : BOOL ; (* *)
gProdTankRunOut_Reset : BOOL ; (* *)
gProdTankRunOut_Latch : BOOL ; (* *)
gProdTankRunOut_Running : BOOL ; (* *)
gProdTankRunOut_Wait : BOOL ; (* *)
(************************************************************************************)
(* PRODUCT TANK DRAIN VARIABLES *)
(************************************************************************************)
gProdTankDrain_Qualifier : BOOL ; (* *)
gProdTankDrain_Request : BOOL ; (* *)
gProdTankDrain_Reset : BOOL ; (* *)
gProdTankDrain_Latch : BOOL ; (* *)
gProdTankDrain_Running : BOOL ; (* *)
gProdTankDrain_Wait : BOOL ; (* *)
(************************************************************************************)
(* SYRUP BRIX AUTOCORRECTION VARIABLES *)
(************************************************************************************)
gSyrAutoCorr_Qualifier : BOOL ; (* *)
gSyrAutoCorr_Request : BOOL ; (* *)
gSyrAutoCorr_Reset : BOOL ; (* *)
gSyrAutoCorr_Latch : BOOL ; (* *)
gSyrAutoCorr_Running : BOOL ; (* *)
gSyrAutoCorr_Wait : BOOL ; (* *)
gSyrAutoCorr_Done : BOOL ; (* *)
(************************************************************************************)
(* BRIX TRACKING VARIABLES *)
(************************************************************************************)
gProdBrixTrack_Qualifier : BOOL ; (* *)
gProdBrixTrack_Request : BOOL ; (* *)
gProdBrixTrack_Reset : BOOL ; (* *)
gProdBrixTrack_Latch : BOOL ; (* *)
gProdBrixTrack_Running : BOOL ; (* *)
gProdBrixTrack_Wait : BOOL ; (* *)
gProdBrixTrack_Done : BOOL ; (* *)
(************************************************************************************)
(* FILLER TANK INTEGRATED VARIABLES *)
(************************************************************************************)
gBlendFillStartUp_Qualifier : BOOL ; (* *)
gBlendFillStartUp_Request : BOOL ; (* *)
gBlendFillStartUp_Wait : BOOL ; (* *)
gBlendFillStartUp_Reset : BOOL ; (* *)
gBlendFillStartUp_Latch : BOOL ; (* *)
gBlendFillStartUp_Running : BOOL ; (* *)
gBlendFillStartUp_EnBlend : BOOL ; (* *)
(************************************************************************************)
(* UV LAMP VARIABLES *)
(************************************************************************************)
gUV_Lamp_Qualifier : BOOL ; (* *)
gUV_Lamp_Request : BOOL ; (* *)
gUV_Lamp_Drain : BOOL ; (* *)
gUV_Lamp_Latch : BOOL ; (* *)
END_VAR
(* @OBJECT_END := BlenderProcedure_Variables *)
(* @CONNECTIONS := BlenderProcedure_Variables
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,970 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM BlenderRinse
VAR
mWarmReq : BOOL ;
mColdReq : BOOL ;
mWarmReqONS : R_TRIG ;
mColdReqONS : R_TRIG ;
mDoneONS : R_TRIG ;
mAuxONS : R_TRIG ;
mColdDoneONS : F_TRIG ;
mWarmDoneONS : F_TRIG ;
mColdRinseSR : SR ;
mWarmRinseSR : SR ;
mColdRinseSelected : BOOL ;
mWarmRinseSelected : BOOL ;
mColdStop : BOOL ;
mWarmStop : BOOL ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 20
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gH_Blender_Prod_CIP
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderSuppliesOk
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Qualifier
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CMD_ColdRinseReq
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderAlarm
_EXPRESSION
_NEGATIV
_LD_CONTACT
gCoolerEnabled
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mColdReqONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_LD_CONTACT
gBlenderRinse_Qualifier
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mColdReq
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CMD_WarmRinseReq
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderAlarm
_EXPRESSION
_NEGATIV
_LD_CONTACT
gCoolerEnabled
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mWarmReqONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_LD_CONTACT
gBlenderRinse_Qualifier
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mWarmReq
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
mWarmRinseSelected
_EXPRESSION
_POSITIV
_LD_CONTACT
mColdRinseSelected
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Qualifier
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Request
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
mColdRinseSelected
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mColdDoneONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
F_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mColdStop
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
mWarmRinseSelected
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mWarmDoneONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
F_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mWarmStop
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
mColdRinseSelected
_EXPRESSION
_NEGATIV
_LD_CONTACT
mColdReq
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mColdRinseSR
_BOX_EXPR : 2
_EMPTY
_OPERATOR
_BOX_EXPR : 5
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_POSITIV
mColdRinseSelected
_OPERAND
_EXPRESSION
_POSITIV
mColdReq
_OPERAND
_EXPRESSION
_NEGATIV
gFastChangeOverActivated
_EXPRESSION
_POSITIV
AND
_OPERAND
_EXPRESSION
_POSITIV
mWarmRinseSelected
_OPERAND
_EXPRESSION
_POSITIV
gBlenderCIPMode
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gFastChangeOverActivated
_OPERAND
_EXPRESSION
_POSITIV
gFastRinse_Done
_EXPRESSION
_POSITIV
AND
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_POSITIV
gBlenderRinse_Done
_OPERAND
_EXPRESSION
_NEGATIV
gFastChangeOverActivated
_OPERAND
_EXPRESSION
_POSITIV
mColdRinseSelected
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
OR
_EXPRESSION
_POSITIV
SR
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mColdRinseSelected
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
mWarmRinseSelected
_EXPRESSION
_NEGATIV
_LD_CONTACT
mWarmReq
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mWarmRinseSR
_BOX_EXPR : 2
_EMPTY
_OPERATOR
_BOX_EXPR : 5
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_POSITIV
mWarmRinseSelected
_OPERAND
_EXPRESSION
_POSITIV
mWarmReq
_OPERAND
_EXPRESSION
_NEGATIV
gFastChangeOverActivated
_EXPRESSION
_POSITIV
AND
_OPERAND
_EXPRESSION
_POSITIV
mColdRinseSelected
_OPERAND
_EXPRESSION
_POSITIV
gBlenderCIPMode
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gFastChangeOverActivated
_OPERAND
_EXPRESSION
_POSITIV
gFastRinse_Done
_EXPRESSION
_POSITIV
AND
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_POSITIV
gBlenderRinse_Done
_OPERAND
_EXPRESSION
_NEGATIV
gFastChangeOverActivated
_OPERAND
_EXPRESSION
_POSITIV
mWarmRinseSelected
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
OR
_EXPRESSION
_POSITIV
SR
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mWarmRinseSelected
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 6
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_Blender_OPT_Deaireation
_EXPRESSION
_POSITIV
_LD_CONTACT
gDeairStartUp_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRun_Latch
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdTankDrain_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Qualifier
_EXPRESSION
_NEGATIV
_LD_CONTACT
gCIPStopLevel
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerRinse_CompletedLatch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Wait
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Reset
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderRinse_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Done
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRinse_Reset
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Latch
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gBlenderRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
18
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_BlenderStateNum
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinseMode
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderRinse_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Wait
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Running
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
mWarmRinseSelected
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
gH_Status014
_OUTPUT
_POSITIV
_NO_SET
gH_WarmRinseRun
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
mColdRinseSelected
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
gH_Status015
_OUTPUT
_POSITIV
_NO_SET
gH_ColdRinseRun
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gProdTankDrain_Running
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
gH_Status026
_OUTPUT
_POSITIV
_NO_SET
gRinseDrainRunning
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gIn_Flr_FastRinseCompleted
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gFillerRinse_CompletedLatch
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 4
_LD_CONTACT
mColdStop
_EXPRESSION
_POSITIV
_LD_CONTACT
mWarmStop
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdTankDrain_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_CompletedLatch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 2
_OUTPUT
_NEGATIV
_SET
gFillerRinse_CompletedLatch
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_Done
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderRinse_Done
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mDoneONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gBlenderRinse_DoneONS
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gBlenderRinse_DoneONS
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
BlenderRinse.RinseDone
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
END_PROGRAM
ACTION RinseDone:
_Blender_PID_Main._PID_Reset_Integral ;
_Blender_Ctrl_Main.InitErrors() ;
END_ACTION

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,406 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Procedure' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM Blender_ProcedureCall
VAR
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 13
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
System_Run_Out
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
Deaireator_StartUp
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
CarboWaterLine
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
Syrup_Line_MFM_Prep
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
Syrup_MFM_StartUp
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
Syrup_RunOut
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
ProdTank_RunOut
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
ProdTank_Drain
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
SyrBrix_Autocorrection
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
BrixTracking
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
ProdBrixRecovery
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
BlendFillSystem_StartUp
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
Densimeter_Calibration
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
END_PROGRAM

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,431 @@
(* @GLOBAL_VARIABLE_LIST := Blender_Variables *)
(* @PATH := '\/Blending_Variables' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(**********************************************************************************************************************)
(* INPUTS AUXILIARY VARIABLES *)
(**********************************************************************************************************************)
gAuxVoltageOk : BOOL ; (* *)
gInResetHorn : BOOL ; (* *)
gInResetBtn : BOOL ; (* *)
gInStopBtn : BOOL ; (* *)
gInStartBtn : BOOL ; (* *)
gInLinePressCO2Ok : BOOL ; (* *)
gInLinePressAirOk : BOOL ; (* *)
gDeairTankMinLvlAux : BOOL ;
gDeairTank2MinLvlAux : BOOL ;
gSyrupTankMinLvlAux : BOOL ;
gSyrupLineDrainValveAux : BOOL ;
gWaterManualDrainValveAux : BOOL ;
gBlenderDeairVacuum_Ok : BOOL ; (* *)
gInWaterValveClosed : BOOL ; (* *)
gInSyrupValveClosed : BOOL ; (* *)
gInCarboCO2ValveClosed : BOOL ; (* *)
gInManifoldNotReadyForProd : BOOL ;
gInManifoldNotReadyForCIP : BOOL ;
gIn_ProdPumpFCReady : BOOL ;
gIn_ProdTankNotEmpty : BOOL ; (* *)
gIn_FlowSwitch : BOOL ; (* *)
gIn_DeaireatorPressure : REAL ;
gIn_DeairFlow_PV : REAL ;
gIn_C1_Conductivity_Caustic : REAL ;
gIn_C2_Conductivity_Water : REAL ;
gInSyrRoomOk : BOOL ; (* From Syrup Room Syrup ready *)
gInFillerProductReq : BOOL ; (* From Filler Product request *)
gInFillerProdReady : BOOL ; (* From Filler Ready to Production *)
gInFillerCIPRequest : BOOL ; (* From Filler Ready to CIP *)
gInFillerCIPDrainCompleted : BOOL ; (* From Filler Drain Completed *)
gInFillerCIPCycleEnded : BOOL ; (* From Filler Spare *)
gInFillerCIPChangeReady : BOOL ; (* From Filler Spare *)
gInFillerEV62Enable : BOOL ;
gInFillerEV46Enable : BOOL ;
gInFillerEndTankFilling : BOOL ;
gInFillerBottleFilling : BOOL ;
gInFillerEndFlushing : BOOL ;
gInFillerCIPModeSelected : BOOL ; (* From Filler CIP Mode Selected *)
gInFillerCIPDrainSelecteted : BOOL ; (* From Filler Drain Selecteted *)
gInFillerCIPOpenEV13 : BOOL ;
gInFillerStopCIPReturnPump : BOOL ;
gInCIP_DrainRequest : BOOL ; (* From CIP Room Drain Request *)
gInCIP_TankFilling : BOOL ; (* From CIP Room Flood Request *)
gInCIP_RinseMode : BOOL ; (* From CIP Room Flood Request *)
gInCIP_CIPRunning : BOOL ; (* From CIP Room CIP running *)
gInCIP_ChangeSanitize : BOOL ; (* From CIP Room CIP change sanitize *)
gInCIP_CIPCompleted : BOOL ; (* From CIP Room CIP completed *)
gInCIP_CIPMode : BOOL ; (* From CIP Room CIP Mode *)
gInCIP_CausticSanitizeRunning : BOOL ; (* From CIP Room CIP change sanitize *)
gInCIP_Fault : BOOL ; (* From CIP Room CIP Fault *)
gInAmmoniaLowPressure : BOOL ; (* From Chiller Ammonia Low Pressure *)
gInAmmoniaHighLevel : BOOL ; (* From Chiller Ammonia High Level *)
gInAmmoniaCompressorReady : BOOL ; (* From Chiller Ammonia Compressors not running *)
gInUVLampReady : BOOL ;
gInUVLampAlarm : BOOL ;
END_VAR
VAR_GLOBAL
(**********************************************************************************************************************)
(* OUTPUTS AUXILIARY VARIABLES *)
(**********************************************************************************************************************)
gOut_WaterPumpRun : BOOL ; (* P1 Water Pump Run *)
gOut_WaterPump2Run : BOOL ; (* P5 Water Pump Run *)
gOut_SyrupPumpRun : BOOL ; (* P2 Syrup Pump Run *)
gOut_ProductPumpRun : BOOL ; (* P3 Product Pump Run *)
gOut_VacuumPumpRun : BOOL ; (* P4 Vacuum Pump Run *)
gOut_RecircPumpRun : BOOL ; (* P6 ByPass Pump Run *)
gOut_SyrupRoomPumpRun : BOOL ; (* Syrup Room Pump Run *)
gOut_SyrupRoomWaterReq : BOOL ; (* Syrup Room Water Request *)
gOut_WaterPumpVFCRun : BOOL ; (* Water Pump VFC Run *)
gOut_FillerProduction : BOOL ; (* To Filler Production *)
gOut_FillerMinimumLevel : BOOL ; (* To Filler Product under minimum level *)
gOut_FillerProductAvailable : BOOL ; (* To Filler Product sending available *)
gOut_FillerRinseMode : BOOL ; (* To Filler Rinse Request *)
gOut_FillerCIPMode : BOOL ; (* To Filler CIP Request *)
gOut_FillerCIPRunning : BOOL ; (* To Filler CIP Running *)
gOut_FillerCIPChangeSanitize : BOOL ; (* To Filler CIP *)
gOut_FillerCIPDrainRequest : BOOL ; (* To Filler CIP Drain *)
gOut_FillerCIPCompleted : BOOL ; (* To Filler CIP Completed *)
gOut_FillerCIPCausticSanitizeRunning : BOOL ; (* To Filler CIP *)
(* gOut_CIPRequest : BOOL; (* To CIP Room *)
(* gOut_CIPDrainCompleted : BOOL ; (* To CIP Room *)
(* gOut_CIPCycleEnded : BOOL ; (* To CIP Room *)
gOut_CIPChangeReady : BOOL ; (* To CIP Room *)
(* gOut_CIPWaterPipe_Ready : BOOL; (* To CIP Room *)
gOutAmmoniaCompressorRun : BOOL ; (* To Chiller : Ammonia Compressors Run *)
gOutAmmoniaWaterColdRequest : BOOL; (* To Chiller : Enables NH3 liquid inlet *)
gOutAmmoniaProductColdRequest : BOOL; (* To Chiller : Enables NH3 liquid inlet *)
gOutAmmoniaWaterColdControl : BOOL; (* To Chiller : Enables NH3 evaporation *)
gOutAmmoniaProductColdControl : BOOL; (* To Chiller : Enables NH3 evaporation *)
gOutAmmonia_ByPassHotGas : BOOL; (* To Chiller : *)
gOutDeaireationValve : REAL ;
gOutUVLamp_ONOFF : BOOL ; (* Switch UV Lamp ON / OFF *)
END_VAR
VAR_GLOBAL
gtemphigh :BOOL;
gpherecirculation :BOOL;
gDelayS7Call : BOOL ;
gAlwaysOff : BOOL ; (* *)
gHighPriorityAlarm : BOOL ; (* *)
gLowPriorityAlarm : BOOL ; (* *)
gBlenderAlarm : BOOL ; (* *)
gAlarmHorn : BOOL ; (* *)
gWarningHorn : BOOL ; (* *)
gProductionONS : BOOL ;
gCIPONS : BOOL ;
gRinseONS : BOOL ;
gGencoldChillerEn : BOOL ;
gProductChillerEn : BOOL ;
gProductDoubleStadiumChillerEn : BOOL ;
gWaterChillerEn : BOOL ;
gEnableRecircPHE : BOOL;
gSyrupRoomEn : BOOL ;
gStillWaterByPassEn : BOOL ;
gEmergencyPressed : BOOL ;
gVacuumAcheaved : BOOL ; (* In case of vacuum pump, still product signal from vacuum probe *)
gWorkshopTest : BOOL ; (* Use during Workshop test - BF - *)
gWaterSpeedToStop : BOOL ;
gStopBlendCarboError : BOOL ; (* Water Speed to stop Blend error and Carbo error *)
gEnRampDownToStop : BOOL ;
gBlenderFillerRunning : BOOL ; (* Both Blender and Filler are running *)
gEnToStopBlender : BOOL ; (* Next Filler stop, stop blender *)
gFlowToFiller : BOOL ; (* Product is Flowing to Filler *)
gBlendRecircActive : BOOL ;
gCriticalBlending : BOOL ;
gProdAvailable : BOOL ;
gDisableProdAvailable : BOOL ;
gTrackFillerSpeed : BOOL ;
gDeairTankLoading : BOOL ;
gSyrupTankLoading : BOOL ;
gSyrupTankMinLevel : BOOL ;
gBlenderStableFlow : BOOL ; (* *)
gBlenderEnToRamp : BOOL ; (* *)
gBlenderStartPumps : BOOL ; (* *)
gBlenderStartPumpsONS : BOOL ; (* *)
gBlenderBlending : BOOL ; (* *)
gBlenderStopping : BOOL ; (* *)
gBlenderOperatorStop : BOOL ;
gModValveRiseTimeCalcEn : BOOL ; (* *)
gBlenderFlowFltEn : BOOL ; (* *)
gBlenderStopLevel : BOOL ; (* Product Tank Maximum Level Acheaved *)
gBlenderStartLevel : BOOL ; (* Product Tank Pump Start Level Acheaved *)
gBlenderLevelOk : BOOL ; (* Product Tank Recipe Minimum Level Acheaved *)
gBlenderLevelTarget : BOOL ; (* Product Tank Target Level Acheaved *)
gBlenderMinLevel : BOOL ; (* Product Tank 5% Level Acheaved *)
gProdTankEmpty : BOOL ; (* Product Tank Empty *)
gBlenderEmpty : BOOL ;
gFirstProdStop : BOOL ; (* Stop Blender when First Production Done *)
gProdTankStopLvl : REAL ; (* Product Tank Max Level *)
gProdTankTargetLvl : REAL ; (* Product Tank Target Level *)
gProdTankStartLvl : REAL ; (* Product Tank Start Level below Stop Level to Start *)
gCIPStopLevel : BOOL ; (* *)
gCIPMaxLevel : BOOL ; (* 100% Product Tank Level during CIP *)
gCIPPrdTankFlood : BOOL ;
gCIP_BlenderDrainDone : BOOL ;
gCIPDeairTankFlood : BOOL ;
gCIPSyrupTankFlood : BOOL ;
gCIPSyrupStopLevel : BOOL ;
gCIPPrdTankPressLow : BOOL ;
gRinseCloseVM1 : BOOL ;
gRinseCloseVM2 : BOOL ;
gRinseDrainRunning : BOOL ;
gBlenderTankPress_Ok : BOOL ; (* *)
gTankPress_HighLimit : BOOL ; (* *)
gTankPress_LowLimit : BOOL ; (* *)
gTankPress_OkToBlend : BOOL ; (* *)
gWaitLevelToHold_TankPress : BOOL ; (* *)
gEqPressSelected : BOOL ;
gFinalPressureOk : BOOL ; (* Final Pressure acheaved during First Production *)
gEqPressOk : BOOL ; (* Equilibrium pressure acheaved during First Production *)
gFirstProdPressHold : BOOL ; (* Pressure control enable during first production *)
gDeairVacuumOk : BOOL ; (* Deaireator vacuum pressure acheaved *)
gCloseMainCO2Valve : BOOL ;
gPV_SyrBrixOk : BOOL ; (* Syrup Brix value not Zero *)
gPV_SyrDensOk : BOOL ; (* Syrup Density value not zero *)
gBlenderSuppliesOk : BOOL ; (* *)
gFreezeSyrupMeter : BOOL ; (* Hold Signal To Syrup Densimeter *)
gFreezeProductMeter : BOOL ; (* Hold Signal To Product Meter *)
gProdMeterTransferRecipe : BOOL ; (* Signal to the Product Meter Recipe Transfer *)
gDisableAlarmDuringCalibration : BOOL ;
gMinRatio : BOOL ; (* Maximum Syrup Brix Autocorr Acheaved - minimum ratio - *)
gMaxSyrAutoCorrDone : BOOL ; (* Maximum Syrup Brix Autocorr Acheaved maximum autocorr perc *)
gLineCO2LowPressure : BOOL ; (* Low pressure infeed CO2 line from CO2 density & temperature Calculation *)
gWaterPIDCtrlOk : BOOL ; (* Water PID Controlling Ok *)
gSyrupPIDCtrlOk : BOOL ; (* Syrup PID Controlling Ok *)
gCarboCO2PIDCtrlOk : BOOL ; (* CO2 PID Controlling Ok *)
gSyrLevPIDCtrlOk : BOOL ; (* Syrup Level PID Controlling Ok *)
gBlendResetTotalizer : BOOL ;
gMaxBlendErrorAfterFault : BOOL ;
gMaxCarboErrorAfterFault : BOOL ;
gProductConductivity : REAL ;
gSyrupMFMBrixSlope : REAL ;
gH2O_Flow_Meas : REAL ;
gSYR_Flow_Meas : REAL ;
gSYR_Vol_Flow_Meas : REAL ;
gCO2_Flow_Meas : REAL ;
gProd_Flow_Meas : REAL ;
gCO2Solubility : REAL ;
gDeairCO2Vol : REAL ;
gFillerCO2Loss : REAL ;
gCO2EqPressure : REAL ;
gCO2InjPressureCalc : REAL ;
gCO2InjPressure : REAL ;
gCO2InjPressureSP : REAL ;
gCO2PressNotOk : BOOL ;
gProductTotalizerLt : Integral ;
gProductLiters : REAL ;
gProductTemperature : REAL ;
gWaterTemperature : REAL ;
gBlendErrorInt : Integral ;
gCarboCO2ErrorInt : Integral ;
gBlendError : REAL ;
gCarboCO2Error : REAL;
gK_RecBlendError : REAL;
gK_RecCarboCO2Error : REAL;
gMaxCarboCO2_V : REAL;
gWaterFlowSlewValve : REAL ;
gWaterFlowSlewMFM : REAL ;
gBlenderProdMode : BOOL ; (* *)
gBlenderRinseMode : BOOL ; (* *)
gBlenderCIPMode : BOOL ; (* *)
gWaterVFMResetTot : BOOL ;
gSyrupMFMResetTot : BOOL ;
gCO2MFMResetTot : BOOL ;
gProductMFMResetTot : BOOL ;
gDeairWaterTemp : REAL ; (* *)
gDeairCO2Comp : REAL ; (* *)
gDeairFlow_SP : REAL ;
gWaterO2 : REAL ;
gDeairWaterO2 : REAL := 1.0 ;
gSyrupO2 : REAL ;
gProductO2 : REAL ;
gProductDensity : REAL ;
gProdDensFromMeter : REAL ;
gTankProdAmount : REAL ;
gProductTankLevel : REAL ;
gSyrupTankLevel : REAL;
gProductTankPress : REAL ;
gWaterLinePress : REAL ;
gPrdTankPressError : REAL ;
gH2OValveRiseUpTime : INT ;
gSyrValveRiseUpTime : INT ;
gCO2ValveRiseUpTime : INT ;
gFillerProductFlow : REAL ;
gWaterVFM_DN : UINT ;
gWaterPipe_DN : UINT ;
gSyrupMFM_DN : UINT ;
gCarboCO2MFM_DN : UINT ;
gWaterVFMMeasError : REAL ;
gWaterVFMRepeatibility : REAL ;
gWaterVFMCalcError : REAL ;
gSyrupMFMMeasError : REAL ;
gSyrupMFMRepeatibility : REAL ;
gSyrupMFMZeroStab : REAL ;
gSyrupMFMCalcError : REAL ;
gCO2MFMMeasError : REAL ;
gCO2MFMRepeatibility : REAL ;
gCO2MFMZeroStab : REAL ;
gCO2MFMCalcError : REAL ;
gFirstProdExtraBrix : REAL ; (*0.03Start up *)
gFirstProdDietExtraSyr : REAL ; (*0.0014Start up *)
gFirstProdExtraCO2Fact : REAL ; (*0.97Start up *)
gUVLamp_ONOFF : BOOL ;
gUVLampHighTemperature : BOOL ; (*UVLampTemperatureOk *)
(******************* MFM Pressure Loss *****************************************)
d : REAL ; (* m *)
K : REAL ;
K1 : REAL ;
K2 : REAL ;
Re : REAL ;
ni : REAL ;
ro : REAL ;
gBlenderBlendMaxError : REAL ;
gWaterVFM_Area : REAL ; (* Water Flowmeter section Area - dm2 - *)
gWaterVFM_Vel : REAL ; (* Water Velocity in Water FlowMeter - m/s - *)
gWaterPipe_Area : REAL ; (* Water Pipe Section Area in in - dm2 - *)
gWaterPipe_Vel : REAL ; (* Water Velocity in serpentine - m/s - *)
gWaterSpeedToStopError : REAL ; (* Water Speed to stop Blend error and Carbo error *)
gProdTankVolume : REAL ; (* Product Tank Total Volume *)
gProdTankBottomVol : REAL ; (* Product Tank Bottom Volume Below level Probe *)
gDeairTankVolume : REAL ; (* Deaireator Tank Volume *)
gBlenderNomSpeed : REAL ; (* Blender Nominal Production Rate - L/min - *)
gBlenderProdSlewMax : REAL ; (* Blender Maximum Production SlewRate - (L/min)/sec - *)
gBlenderSpeedUp : BOOL ; (* Production rate rampUp *)
gBlenderSpeedDown : BOOL ; (* Production rate rampDown *)
gProductLitTank : REAL ; (* Liters of Product In Porduct Tank *)
gProductO2Conc : REAL ;
gBlenderFillerDeltaV : REAL ; (* Blender Filler Production Rate difference - L/min - *)
gSP_ProdTrackFiller : REAL ; (* Set Point Production to track Filler Speed - L/min - *)
gEstimateFillerSpeed : REAL ; (* Filler Production Rate - L/min - *)
gFlowTronic : REAL ;
gFlowTronicFullScale : REAL ;
END_VAR
VAR_GLOBAL
gWaterStat_MeanValue : REAL ;
gWaterStat_Variance : REAL ;
gWaterStat_DevStd : REAL ;
gSyrupStat_MeanValue : REAL ;
gSyrupStat_Variance : REAL ;
gSyrupStat_DevStd : REAL ;
gCarboCO2Stat_MeanValue : REAL ;
gCarboCO2Stat_Variance : REAL ;
gCarboCO2Stat_DevStd : REAL ;
gSyrLevStat_MeanValue : REAL ;
gSyrLevStat_Variance : REAL ;
gSyrLevStat_DevStd : REAL ;
gProdBxStat_MeanValue : REAL ;
gProdBxStat_Variance : REAL ;
gProdBxStat_DevStd : REAL ;
gProductMeterOk : BOOL ;
END_VAR
VAR_GLOBAL PERSISTENT
gBlenderStarted : BOOL ;
gWaterRecipe : BOOL ;
gSugarBeverage : BOOL ;
gCarboStillProduct : BOOL ;
gCarboStillRecipe : BOOL ;
gSkipDeaireation : BOOL;
gCoolerEnabled : BOOL ;
gWaterTotal : REAL ; (* Water Totalizer *)
gSyrupTotal : REAL ; (* Syrup Totalizer *)
gCO2Total : REAL ; (* CO2 Totalizer *)
gProductVFMTotal : REAL ; (* From Product VFM Totalizer *)
gWaterTempTot : REAL ;
gSyrupTempTot : REAL ;
gCO2TempTot : REAL ;
gProductVFMTempTot : REAL ;
gSyrRunOutCountInit : REAL ;
gSyrLineTankPrepCountInit : REAL ;
gSyrupRoomTankLiter : ARRAY[1..15] OF REAL ;
gProdSec : UINT ;
gProdMin : UINT ;
gProdHour : UINT ;
gBlendingMaintHour : UINT ;
gRunningSeconds : UINT ;
gRunningMinutes : UINT ;
gRunningMaintHour : UINT ;
gSLIM_Sec : UINT ;
gSLIM_Min : UINT ;
gSLIM_Hour : UINT ;
gFillerRinse_CompletedLatch : BOOL ;
gFirstProdLatched : BOOL ;
END_VAR
VAR_GLOBAL
(**********************************************************************************************************************)
(* WORKING RECIPE PARAMETERS *)
(**********************************************************************************************************************)
gProdTankBrix : REAL ;
gFlowProdBrix : REAL ; (* Product Brix Calculated from Flows *)
gBrixTrackingCorr : REAL ; (* Delta Correction Due To Brix Tracking in °Brix *)
gProdRunSyrFact : REAL ; (* Syrup Factor calculated during production *)
gProdRunSyrMFMFact : REAL ; (* Syrup MFM Factor calculated during production *)
gActualSyrupDens : REAL ; (* Syrup Density value to calculate SYR_SP *)
gActualSyrupBrix : REAL ; (* Syrup Brix *)
gActualSyrupPerc : REAL ; (* Syrup Actual Percentage *)
gActualWaterPerc : REAL ; (* Water Actual Percentage *)
gSyrupVolFlow_PV : REAL ;
gProductRecipeNum : INT ; (* From Product Meter Recipe Number *)
gProductBrix : REAL ; (* From Product Meter Product Brix Value *)
gProductDens : REAL ; (* From Product Meter Product Density Value *)
gProductCO2 : REAL ; (* From Product Meter Product CO2 Vols Value *)
gProductTemp : REAL ; (* From Product Meter Product Temperature *)
gProductLinePress : LREAL ; (* From Product Meter Product CO2 Press Value *)
gMeterSyrBrix : REAL ; (* Measured Syrup Brix from Meter *)
gMeterSyrDens : REAL ; (* Measured Syrup Density from Meter *)
gMeterSyrTemp : REAL ; (* Measured Syrup Temperature from Meter *)
gSP_H2O : REAL ;
gSP_SYR : REAL ;
gSP_CO2 : REAL ;
gActual_Prod_SP : REAL ; (* Actual Product Target With Slew Limitation *)
gActual_SP_CO2 : REAL ;
gActual_Prod_Flow : REAL ;
gActual_Ratio : REAL ;
gActual_RatioM : REAL ;
gActual_CO2_Vol : REAL ;
END_VAR
(* @OBJECT_END := Blender_Variables *)
(* @CONNECTIONS := Blender_Variables
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,71 @@
(* @PATH := '\/Signals Inteface' *)
TYPE BlendFillRecStruct :
STRUCT
Spare_W0 : INT ;
Filler_Speed : DINT ;
Spare_W4 : INT ;
Spare_W6 : INT ;
ProductTemp : INT ;
Valve1_Pressure : INT ;
RunOutBottleCount : INT ;
Spare_W16 : WORD ;
Spare_W18 : WORD ;
Gen_EV62_Enable : BOOL ;
Gen_EV46_Enable : BOOL ;
Gen_Spare02 : BOOL ;
Gen_Spare03 : BOOL ;
Gen_Spare04 : BOOL ;
Gen_Spare05 : BOOL ;
Gen_Spare06 : BOOL ;
Gen_Spare07 : BOOL ;
Gen_Spare10 : BOOL ;
Gen_Spare11 : BOOL ;
Gen_Spare12 : BOOL ;
Gen_Spare13 : BOOL ;
Gen_Spare14 : BOOL ;
Gen_Spare15 : BOOL ;
Gen_Spare16 : BOOL ;
Gen_ConnAlive : BOOL ;
Prod_Selected : BOOL ;
Prod_End_Tank_Filling : BOOL ;
Prod_Spare02 : BOOL ;
Prod_Last_Bottle : BOOL ;
Prod_BottleFilling : BOOL ;
Prod_EndFlushing : BOOL ;
Prod_Spare06 : BOOL ;
Prod_Spare07 : BOOL ;
CIP_Selected : BOOL ;
CIP_Sanitize_Request : BOOL ;
CIP_End_Cycle : BOOL ;
CIP_Change_Ready : BOOL ;
CIP_Drain_Completed : BOOL ;
CIP_OpenEV13 : BOOL ;
CIP_StopCIPReturnPump : BOOL ;
CIP_Spare07 : BOOL ;
Rinse_Selected : BOOL ;
Rinse_Ended : BOOL ;
Rinse_Spare02 : BOOL ;
Rinse_Spare03 : BOOL ;
Rinse_Spare04 : BOOL ;
Rinse_Spare05 : BOOL ;
Rinse_Spare06 : BOOL ;
Rinse_Spare07 : BOOL ;
Drain_Selected : BOOL ;
Drain_Spare01 : BOOL ;
Drain_Spare02 : BOOL ;
Drain_Spare03 : BOOL ;
Drain_Spare04 : BOOL ;
Drain_Spare05 : BOOL ;
Drain_Spare06 : BOOL ;
Drain_Spare07 : BOOL ;
Spare_W_26 : WORD ;
Spare_W_28 : WORD ;
Spare_W_30 : WORD ;
Spare_W_32 : WORD ;
Spare_W_34 : WORD ;
Spare_W_36 : WORD ;
Spare_W_38 : WORD ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,64 @@
(* @PATH := '\/Signals Inteface' *)
TYPE BlendFillSendStruct :
STRUCT
Pressure_SP : INT ; (* Filling Valve Head Pressure SP: 0 - 1000 mBar (x10) *)
Pressure_PV : INT ; (* Filling Valve Head Pressure PV: 0 - 1000 mBar (x10) *)
Tank_Level : INT ; (* Buffer Tank Level: 0.0 - 100.0 % (x10) *)
Spare_W_06 : INT ; (* Filler Actual Flow: 0 - 1050 L/min (x10) *)
Pump_Freq : INT ; (* OverPressure Pump P3 Frequency: 0 - 60 Hz (x10) *)
Recipe_Number : INT ; (* Filler Recipe Number *)
ProdTankPress : INT ; (* Buffer Tank Pressure: 0.0 - 10.0 Bar (x10) *)
PressDiffPEW : WORD ;
ProdTotalAvailable : INT ;
Spare_W_18 : WORD ;
Gen_EV62_Status : BOOL ;
Gen_EV46_Status : BOOL ;
Gen_Spare02 : BOOL ;
Gen_EV15_Status : BOOL ;
Gen_EV13_Status : BOOL ;
Gen_P3_Status : BOOL ;
Gen_P6_Status : BOOL ;
Gen_Spare07 : BOOL ;
Gen_Spare10 : BOOL ;
Gen_Spare11 : BOOL ;
Gen_Spare12 : BOOL ;
Gen_Spare13 : BOOL ;
Gen_Spare14 : BOOL ;
Gen_Spare15 : BOOL ;
Gen_Spare16 : BOOL ;
Gen_ConnAlive : BOOL ;
Prod_Mode : BOOL ;
Prod_PressRunning : BOOL ;
Prod_ProdLoad : BOOL ;
Prod_ProdSend : BOOL ;
Prod_ProdRunOut : BOOL ;
Prod_ProdLoad2 : BOOL ;
Prod_ProdCompleted : BOOL ;
Prod_FastRinseRequest : BOOL ;
CIP_Mode : BOOL ;
CIP_Running : BOOL ;
CIP_Change_Sanitize : BOOL ;
CIP_Drain_Request : BOOL ;
CIP_Completed : BOOL ;
CIP_Caustic_Running : BOOL ;
CIP_Spare06 : BOOL ;
CIP_Spare07 : BOOL ;
Rinse_Mode : BOOL ;
Rinse_Running : BOOL ;
Rinse_Spare02 : BOOL ;
Rinse_Spare03 : BOOL ;
Rinse_Spare04 : BOOL ;
Rinse_Spare05 : BOOL ;
Rinse_Spare06 : BOOL ;
Rinse_Spare07 : BOOL ;
Spare_W_26 : WORD ;
Spare_W_28 : WORD ;
Spare_W_30 : WORD ;
Spare_W_32 : WORD ;
Spare_W_34 : WORD ;
Spare_W_36 : WORD ;
Spare_W_38 : WORD ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,826 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Procedure' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM BrixTracking
VAR
mLocalProdLevel : REAL ;
mProdQualityGood : BOOL ;
mAuxONS : R_TRIG ;
mAuxONS1 : R_TRIG ;
mLatchONS : BOOL ;
mDummy : BOOL ;
mProdBrixStat : StatisticalAnalisys ;
mProdBrixSample : INT := 35 ;
mWaitCycleToSample : INT ;
mCycleCount : INT ;
mTotalCount : INT ;
mProdRefresh : REAL ; (* Time in min to refresh all product in product tank *)
mProdRefreshS : REAL ; (* Time in sec to refresh all product in product tank *)
mAuxProdBrixCorr : REAL ;
mAuxProdBrixCorrInit : REAL ;
mStart : BOOL ;
mTakeSample : BOOL ;
mTakeProdSample : BOOL ;
mProdInit : REAL ;
mAllSamples : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 18
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 5
_LD_CONTACT
gBlenderProdMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gProductMeterOk
_EXPRESSION
_POSITIV
_LD_CONTACT
gSugarBeverage
_EXPRESSION
_POSITIV
_LD_CONTACT
gWaterRecipe
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Qualifier
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_CMD_PrdBrixTrackingReq
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Request
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gProdBrixTrack_Qualifier
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Reset
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gProdBxStat_DevStd
_OPERAND
_EXPRESSION
_POSITIV
8E-3
_EXPRESSION
_POSITIV
LT
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProdQualityGood
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 4
_LD_CONTACT
mProdQualityGood
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFlowToFiller
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFreezeProductMeter
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderEnToRamp
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Wait
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gProdBrixTrack_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdBrixTrack_Reset
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdBrixTrack_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Latch
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxONS1
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mLatchONS
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdBrixTrack_Wait
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Running
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdBrixTrack_Wait
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_Status009
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_PrdBrixTrackingRun
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gProductTankLevel>50
_OPERAND
_EXPRESSION
_POSITIV
gProductTankLevel
_OPERAND
_EXPRESSION
_POSITIV
60
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mLocalProdLevel
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTION
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mLocalProdLevel
_EXPRESSION
_POSITIV
ProductLiterInTank
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductLitTank
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
BrixTracking.ProdSamples
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
BrixTracking.SampleTimeCalc
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
mAuxProdBrixCorr
_OUTPUT
_POSITIV
_NO_SET
gBrixTrackingCorr
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gProdBrixTrack_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_Status010
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 3
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gProdBrixTrack_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
mLatchONS
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdBrixTrack_Request
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBrixTrack_Done
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
BrixTracking.ProductQualityMonitor
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
END_PROGRAM
ACTION ProdSamples:
(* Calculates the product liters during blending. Every 60 Liters of product take a sample for the statistical analisys
in order to correct the product brix *)
IF gBlenderBlending THEN
gProductTotalizerLt.i_NewValue :=gActual_Prod_Flow ;
gProductTotalizerLt.i_IntCycle := gTask02CycleTime ;
gProductTotalizerLt(Out_Integral:=gProductLiters) ;
END_IF
IF gBlenderRinseMode OR gBlenderCIPMode THEN
gProductLiters := 0.0 ;
gProductTotalizerLt(Out_Integral:=gProductLiters) ;
END_IF
IF (gProductLiters-mProdInit)>60 THEN
mTakeProdSample := TRUE ;
mProdInit := gProductLiters ;
END_IF
(*mAuxProdBrixCorr := (gActualRecipe_Beverage_Brix - gProdBxStat_MeanValue) / 2 ;*)
END_ACTION
ACTION ProductQualityMonitor:
_LD_BODY
_NETWORKS : 3
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
mTakeSample
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gAlwaysOff
_EXPRESSION
_POSITIV
_LD_CONTACT
mTakeProdSample
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mProdBrixStat
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gProductBrix
_OPERAND
_EXPRESSION
_POSITIV
mProdBrixSample
_OPERAND
_EXPRESSION
_POSITIV
1
_EXPRESSION
_POSITIV
StatisticalAnalisys
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
gProdBxStat_Variance
_OUTPUT
_POSITIV
_NO_SET
gProdBxStat_DevStd
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProdBxStat_MeanValue
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
mTakeSample
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
mTakeSample
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
mTakeProdSample
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
mTakeProdSample
END_ACTION
ACTION SampleTimeCalc:
IF gActual_Prod_SP<>0 THEN
mProdRefresh := gProductLitTank / gActual_Prod_SP ;
ELSE
mProdRefresh := 0 ;
END_IF
mProdRefreshS := mProdRefresh * 1.6 * 60 ;
IF gTask02CycleTime<>0 AND mProdBrixSample<>0 THEN
mWaitCycleToSample := REAL_TO_INT(mProdRefreshS / mProdBrixSample / gTask02CycleTime) ;
END_IF
IF mWaitCycleToSample<1 THEN
mWaitCycleToSample := 1 ;
END_IF
IF gProdBrixTrack_Latch AND NOT gFreezeProductMeter THEN
IF mCycleCount<=mWaitCycleToSample THEN
mCycleCount := mCycleCount + 1 ;
ELSE
mTakeSample := TRUE ;
mCycleCount := 0 ;
END_IF
ELSE
mTakeSample := FALSE ;
(* mCycleCount := 0 ;*)
END_IF
IF mTakeSample THEN
mTotalCount := mTotalCount + 1 ;
END_IF
IF mTotalCount>=mProdBrixSample THEN
IF gProdBrixTrack_Running THEN
IF NOT mStart THEN
mStart := TRUE ;
mAuxProdBrixCorrInit := gActualRecipe_Beverage_Brix - gProdBxStat_MeanValue ;
IF mAuxProdBrixCorr=0 THEN
mAuxProdBrixCorr := (gActualRecipe_Beverage_Brix - gProdBxStat_MeanValue) / 3 ;
END_IF
ELSE
mStart := FALSE ;
(* IF ABS(gActualRecipe_Beverage_Brix - gProdBxStat_MeanValue)<=mAuxProdBrixCorrInit THEN*)
mAuxProdBrixCorr := mAuxProdBrixCorr + (gActualRecipe_Beverage_Brix - gProdBxStat_MeanValue) / 10 ;
(* END_IF*)
END_IF
END_IF
mAllSamples := TRUE ;
mTotalCount := 0 ;
ELSE
mAllSamples := FALSE ;
END_IF
(* Check the limit boundaries to act the product tracking *)
IF gProdBrixTrack_Running THEN
IF NOT (ABS(mAuxProdBrixCorr)<gBrixTrackingMinCorr OR ABS(mAuxProdBrixCorr)>gBrixTrackingMaxCorr) THEN
gBrixTrackingCorr := mAuxProdBrixCorr ;
END_IF
END_IF
END_ACTION

View File

@ -0,0 +1,21 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION Bytes_To_Dword : DWORD
VAR_IN_OUT
i_Byte_0 : BYTE ;
END_VAR
VAR
i : INT ;
mPtr : POINTER TO BYTE ;
END_VAR
(* @END_DECLARATION := '0' *)
mPtr := ADR(i_Byte_0) ;
Bytes_To_Dword := BYTE_TO_WORD(i_Byte_0) ;
FOR i:=1 TO 3 DO
mPtr := mPtr + 1 ;
Bytes_To_Dword := SHL(Bytes_To_Dword, 8 ) OR BYTE_TO_WORD(mPtr^) ;
END_FOR
END_FUNCTION

View File

@ -0,0 +1,17 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION Bytes_To_Word : WORD
VAR_IN_OUT
i_Byte_0 : BYTE ;
END_VAR
VAR
i : INT ;
mPtr : POINTER TO BYTE ;
END_VAR
(* @END_DECLARATION := '0' *)
mPtr := ADR(i_Byte_0) +1;
Bytes_To_Word := BYTE_TO_WORD(i_Byte_0) ;
Bytes_To_Word := SHL(Bytes_To_Word, 8 ) OR BYTE_TO_WORD(mPtr^) ;
END_FUNCTION

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION Calc_InjPress : REAL
VAR_INPUT
i_GasTemperature : REAL;
i_GasMW : REAL;
i_GasDensity : REAL;
END_VAR
VAR
mMW_Gas : REAL;
mTa_Gas : REAL;
m_R : REAL;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_GasTemperature<gZeroAbsolute THEN
mTa_Gas := i_GasTemperature + gZeroAbsolute;
ELSE
mTa_Gas := i_GasTemperature;
END_IF
m_R := g_R0 / i_GasMW;
Calc_InjPress := i_GasDensity * 1000 * 1000 * m_R * mTa_Gas;
Calc_InjPress := (Calc_InjPress / 100000) - 1.01325;
END_FUNCTION

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,253 @@
(* @PATH := '\/TASK2_ControlMain\/CIP' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM CentralCIP_Ctrl
VAR
mReadCIP_Block : ADSREAD ;
mReadCIP_Busy : BOOL ;
mReadCIP_Read : BOOL ;
mReadCIP_Error : BOOL ;
mReadCIP_ErrorCode : UDINT ;
mDummy : BOOL ;
mCIPCommFault : TON;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 4
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCIPSendData.AliveBit
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
gCIPReceiveData.AliveBit
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
SignalsInterchange
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gH_Blender_OPT_CIPSignalExchange
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gCIPReceiveData.AliveBit
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mCIPCommFault
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
ton
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCIPCommFault
END_PROGRAM
ACTION SignalsInterchange:
_LD_BODY
_NETWORKS : 2
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
mReadCIP_Read
_EXPRESSION
_NEGATIV
_LD_CONTACT
mReadCIP_Busy
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mReadCIP_Read
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mReadCIP_Block
_BOX_EXPR : 8
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gAutosanAMS_NET_ID
_OPERAND
_EXPRESSION
_POSITIV
821
_OPERAND
_EXPRESSION
_POSITIV
16#00004020
_OPERAND
_EXPRESSION
_POSITIV
16#00001388
_OPERATOR
_BOX_EXPR : 1
_OPERAND
_EXPRESSION
_POSITIV
gCIPReceiveData
_EXPRESSION
_POSITIV
SIZEOF
_OPERATOR
_BOX_EXPR : 1
_OPERAND
_EXPRESSION
_POSITIV
gCIPReceiveData
_EXPRESSION
_POSITIV
ADR
_OPERAND
_EXPRESSION
_POSITIV
mReadCIP_Read
_OPERAND
_EXPRESSION
_POSITIV
t#3s
_EXPRESSION
_POSITIV
ADSREAD
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
mReadCIP_Error
_OUTPUT
_POSITIV
_NO_SET
mReadCIP_ErrorCode
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mReadCIP_Busy
ENABLELIST_END
_OUTPUTS : 0
END_ACTION

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION Cetrifugal_Head : REAL
VAR_INPUT
i_Diameter : REAL ; (* Carousel Diameter [mm]*)
i_NumValve : REAL ; (* Filling Valve Number *)
i_Speed : REAL ; (* Speed [BpH] *)
END_VAR
VAR
Omega : REAL ;
Radius : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
(* Filler Centrifugal Head [mm]*)
(* Head [m] = 1/2 *( Omega^2 * R^2) / g *)
IF i_NumValve<>0 THEN
Omega := ( i_Speed / i_NumValve / 3600 ) * 2 * gP_Greek ;
END_IF
Radius := i_Diameter / 2 / 1000 ;
(*Cetrifugal_Head := (( 0.5 * Omega*Omega * Radius * Radius ) / 9.8 ) * 100 ;*)
Cetrifugal_Head := (( 0.5 * Omega*Omega * Radius * Radius ) / 9.8 ) * 1000 ;
END_FUNCTION

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Signals Inteface' *)
TYPE CIPReceiveStruct : (* 10 Byte *)
STRUCT
CIP_Request : BOOL ;
CIP_Running : BOOL ;
CIP_Completed : BOOL ;
CIP_DrainRequest : BOOL ;
CIP_ChangeSanitize : BOOL ;
CIP_CausticSanitizeRunning : BOOL ;
Spare0_6 : BOOL ;
Spare0_7 : BOOL ;
Spare1_0 : BOOL ;
Spare1_1 : BOOL ;
Spare1_2 : BOOL ;
Spare1_3 : BOOL ;
Spare1_4 : BOOL ;
Spare1_5 : BOOL ;
Spare1_6 : BOOL ;
AliveBit : BOOL ;
HeatingTemperature : INT ;
Spare_Word1 : WORD ;
Spare_Word2 : WORD ;
Spare_Word3 : WORD ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Signals Inteface' *)
TYPE CIPSendStruct: (* 10Byte *)
STRUCT
Line_Ready : BOOL ;
CIP_DrainCompleted : BOOL ;
CIP_CycleEnded : BOOL ;
CIP_ChangeReady : BOOL ;
Spare0_4 : BOOL ;
Spare0_5 : BOOL ;
Spare0_6 : BOOL ;
Spare0_7 : BOOL ;
Spare1_0 : BOOL ;
Spare1_1 : BOOL ;
Spare1_2 : BOOL ;
Spare1_3 : BOOL ;
Spare1_4 : BOOL ;
Spare1_5 : BOOL ;
Spare1_6 : BOOL ;
AliveBit : BOOL ;
Spare_Word0 : WORD ;
Spare_Word1 : WORD ;
Spare_Word2 : WORD ;
Spare_Word3 : WORD ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,22 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION CIP_CVQ : REAL
VAR_INPUT
i_TempIn : REAL ;
i_TempOut : REAL ;
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
IF i_TempOut<= 0.5 THEN
CIP_CVQ := 50.0 ;
ELSIF i_TempIn-i_TempOut<=1 THEN
CIP_CVQ := 100.0 ;
ELSIF (i_TempIn-i_TempOut>1) AND (i_TempIn-i_TempOut<=5) THEN
CIP_CVQ := (i_TempOut - i_TempIn) * 12.5 + 87.5 ;
ELSIF i_TempIn-i_TempOut>5 THEN
CIP_CVQ := 50.0 ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,10 @@
(* @PATH := '\/CIP Structure' *)
TYPE CIP_Link_Type :
STRUCT
CIP_LinkName : STRING [20] ;
CIP_Simple_Prog : ARRAY [1..30] OF INT ;
CIP_Link_Changed : BOOL ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,10 @@
(* @PATH := '\/CIP Structure' *)
TYPE CIP_List_Element :
STRUCT
CIP_Prog_Block : CIP_Simple_Type ; (* *)
Prev_CIP_List_Elem : POINTER TO CIP_Simple_Type ; (* Pointer to the previous element in the list *)
Next_CIP_List_Elem : POINTER TO CIP_Simple_Type ; (* Pointer to the next element in the list *)
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
(* @GLOBAL_VARIABLE_LIST := CIP_Program_Variables *)
(* @PATH := '\/CIP' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
gCIP_Run_Qualifier : BOOL ; (* *)
gCIP_Run_Request : BOOL ; (* *)
gCIP_Run_Reset : BOOL ; (* *)
gCIP_Run_Latch : BOOL ; (* *)
gCIP_Run_Wait : BOOL ; (* *)
gCIP_Run_Done : BOOL ; (* *)
gCIP_Run_Running : BOOL ; (* CIP Running Signal *)
gCIPMaxStepNum : UINT := 16 ;
gCIPMaxSimpleNum : UINT := 32 ;
gCIP_WaitEventStatus AT %MB10000 : CIP_WaitEvent_Type ; (* memory Used from 10000 to 10032 *)
gCIP_WaitEventStatus_Array AT %MB10000 : ARRAY [0..31] OF BOOL ;
gCIP_WaitEventReq AT %MB10033 : CIP_WaitEvent_Type ; (* memory Used from 10033 to 10065 *)
gCIP_WaitEventReq_Array AT %MB10033 : ARRAY [0..31] OF BOOL ;
gWaitFillerReadyToCIP : BOOL ;
gCIPHeaterTemp_PV : REAL ;
gCIPReturnTemp_PV : REAL ;
gCIPOpenEV33_35Valve : BOOL ;
gCIP_WaitAnyCond : BOOL ; (* CIP Waiting a Condition *)
gCIP_SPHigh_Cond : REAL ; (* High Conductivity Set Point *)
gCIP_SPLow_Cond : REAL ; (* Low Conductivity Set Point *)
gCIP_SPTemperature : REAL ; (* CIP Temperature Set Point *)
gCIPBlenderDrainDone : BOOL ;
gCIPBlenderDrainRunning : BOOL ;
gCIPBlenderEmpty : BOOL ;
END_VAR
VAR_GLOBAL PERSISTENT
gCIPTotalElapsedTime : DINT ;
gCIPTotalTime : UDINT ;
gActualSimpleNum : UINT ;
gActualStepNum : UINT ;
gStepActualTime : UINT ;
gCIP_Run_Prog : ARRAY [1..32] OF CIP_Simple_Type ; (* Running Link Complete Program *)
gActualCIP_LinkProgram : ARRAY [1..32] OF CIP_Simple_Type ; (* Running Link Complete Program *)
gActual_LinkProgName : STRING[32] ;
gActual_ArrSimpleProgName : ARRAY [1..40] OF STRING[32] ;
gCIP_ProgramLoaded : BOOL ;
gCIP_Started : BOOL ;
gCIPCausticRecoveryRun : BOOL ;
gCIP_Simple_Exec : CIP_Simple_Type ; (* Actual Simple Program Running *)
gCIP_Inizialized : BOOL ; (* CIP Inizialized Signal *)
gCIP_Completed : BOOL ; (* CIP Completed Signal *)
END_VAR
(* @OBJECT_END := CIP_Program_Variables *)
(* @CONNECTIONS := CIP_Program_Variables
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,13 @@
(* @PATH := '\/CIP Structure' *)
TYPE CIP_Simple_Type:
STRUCT
CIP_SimpleArray : ARRAY [1..16] OF CIP_Step_Type ;
CIP_SetPoint_Temp : REAL ; (* Temperature set Point *)
CIP_SetPoint_LowCond : REAL ; (* Low Conductivity set Point *)
CIP_SetPoint_HighCond : REAL ; (* High Conductivity set Point *)
CIP_SimpleCode : INT ;
Dummy : INT ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,16 @@
(* @PATH := '\/CIP Structure' *)
TYPE CIP_Step_Type :
STRUCT
CIP_StepTime : UINT ; (* Step Time Length *)
(* Dummy : INT ;*)
CIP_OutWord_0 : UINT ; (* Output Word 0 to Valves *)
CIP_OutWord_1 : UINT ; (* Output Word 1 to Valves *)
CIP_OutWord_2 : UINT ; (* Output Word 2 to Valves *)
CIP_OutWord_3 : UINT ; (* Output Word 3 to Valves *)
CIP_ControlWord0 : UINT ; (* Conditions Word 0 *)
CIP_ControlWord1 : UINT ; (* Conditions Word 1 *)
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,40 @@
(* @PATH := '\/CIP Structure' *)
TYPE CIP_WaitEvent_Type :
STRUCT
Temperature_Ok : BOOL ; (* Local CIP: Wait "Temperature Achieved Condition" *)
HighConductivity : BOOL ; (* Local CIP: Wait "High Conductivity Achieved" *)
LowConductivity : BOOL ; (* Local CIP: Wait "Low Conductivity Achieved" *)
ProdTankMaxLev : BOOL ; (* Local CIP: Wait "Product Tank 100% Level Achieved" *)
ReadyForCIP : BOOL ; (* Local CIP: Wait "Ready For CIP" *)
DrainCompleted : BOOL ; (* Local CIP: Wait "Drain Completed" *)
CIPCycleEnded : BOOL ; (* *)
CIPChangeReady : BOOL ; (* From Filler CIP Change Ready *)
SpareWord0_Bit_8 : BOOL ; (* *)
SpareWord0_Bit_9 : BOOL ; (* *)
SpareWord0_Bit_10 : BOOL ; (* *)
SpareWord0_Bit_11 : BOOL ; (* *)
SpareWord0_Bit_12 : BOOL ; (* *)
SpareWord0_Bit_13 : BOOL ; (* *)
SpareWord0_Bit_14 : BOOL ; (* *)
SpareWord0_Bit_15 : BOOL ; (* *)
SpareWord1_Bit_0 : BOOL ;
SpareWord1_Bit_1 : BOOL ;
SpareWord1_Bit_2 : BOOL ;
SpareWord1_Bit_3 : BOOL ;
SpareWord1_Bit_4 : BOOL ;
SpareWord1_Bit_5 : BOOL ;
SpareWord1_Bit_6 : BOOL ;
SpareWord1_Bit_7 : BOOL ;
SpareWord1_Bit_8 : BOOL ;
SpareWord1_Bit_9 : BOOL ;
SpareWord1_Bit_10 : BOOL ;
SpareWord1_Bit_11 : BOOL ;
SpareWord1_Bit_12 : BOOL ;
SpareWord1_Bit_13 : BOOL ;
SpareWord1_Bit_14 : BOOL ;
SpareWord1_Bit_15 : BOOL ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,24 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION CleanBoolArray : BOOL
VAR_INPUT
i_ArrayPtr : DWORD ;
i_UpBound : INT ;
END_VAR
VAR
i : INT ;
mArrayPointer : POINTER TO BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_UpBound>0 AND i_UpBound<=191 THEN
FOR i:=0 TO i_UpBound DO
mArrayPointer := i_ArrayPtr + i ;
mArrayPointer^ :=FALSE ;
END_FOR;
CleanBoolArray := TRUE ;
ELSE
CleanBoolArray := FALSE ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,83 @@
(* @PATH := '\/TASK0_VOID' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM Clock_Signal
VAR
mSec_100 : INT;
mSec_10 : INT;
mClock_1s : BOOL ;
mONS : R_TRIG ;
mTemp : BOOL ;
mInc : INT ;
END_VAR
(* @END_DECLARATION := '0' *)
gCPU_Counts ;
gSystem_Time;
mSec_100 := TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000) MOD 100;
(*Sec_10 := TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/1000000) MOD 10;*)
gMinInSeconds := TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/10000000) MOD 60;
gTime_sec := UINT_TO_REAL (gMinInSeconds) + INT_TO_REAL (mSec_100) / 100;
IF mSec_100 < 50 THEN
gClock_1s := TRUE ;
ELSE
gClock_1s := FALSE ;
END_IF
IF TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000) MOD 5 < 3 THEN
gClock_50ms := TRUE ;
ELSE
gClock_50ms := FALSE ;
END_IF
gClock_60ms := INT_TO_BOOL (TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000) MOD 6) ;
IF TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000) MOD 10 < 5 THEN
gClock_100ms := TRUE ;
ELSE
gClock_100ms := FALSE ;
END_IF
gClock_200ms := INT_TO_BOOL (TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/1000000) MOD 2) ;
IF TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000) MOD 50 < 25 THEN
gClock_500ms := TRUE ;
ELSE
gClock_500ms := FALSE ;
END_IF
(*IF TRUNC (UDINT_TO_REAL (gCPU_Counts.cpuCntLoDW) / 1000000) MOD 10 < 5 THEN
gClock_1s := TRUE ;
ELSE
gClock_1s := FALSE ;
END_IF
*)
gClock_2s := INT_TO_BOOL (TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/10000000) MOD 2) ;
IF TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/10000000) MOD 10 < 5 THEN
gClock_10s := TRUE ;
ELSE
gClock_10s := FALSE ;
END_IF
gClock_20s := INT_TO_BOOL (TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000000) MOD 2) ;
IF TRUNC (UDINT_TO_REAL (gSystem_Time.timeLoDW)/100000000) MOD 6 < 3 THEN
gClock_60s := TRUE ;
ELSE
gClock_60s := FALSE ;
END_IF
mONS(CLK:=gClock_60s) ;
IF mONS.Q THEN
mInc := mInc + 1 ;
IF mInc>3 AND mInc<6 THEN
gClock_120s := TRUE ;
ELSIF mInc>6 THEN
gClock_120s := FALSE ;
mInc := 0 ;
END_IF
END_IF
END_PROGRAM

View File

@ -0,0 +1,29 @@
(* @GLOBAL_VARIABLE_LIST := Clock_Variables *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
gClock_20ms : BOOL;
gClock_40ms : BOOL;
gClock_50ms : BOOL;
gClock_60ms : BOOL;
gClock_100ms : BOOL;
gClock_200ms : BOOL;
gClock_500ms : BOOL;
gClock_1s : BOOL;
gClock_2s : BOOL;
gClock_10s : BOOL;
gClock_20s : BOOL;
gClock_60s : BOOL;
gClock_120s : BOOL;
gMinInSeconds : UINT ;
gTime_sec : REAL;
END_VAR
(* @OBJECT_END := Clock_Variables *)
(* @CONNECTIONS := Clock_Variables
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,24 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION CO2EqPress : REAL
VAR_INPUT
i_CO2Vol : REAL ;
i_Temp : REAL ;
END_VAR
VAR
mAbsTemp : REAL ;
mAux : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
(***************************************************************************************************************************)
(* The following Formula is supplied by Coca Cola Company, used in QC Labs *)
(***************************************************************************************************************************)
mAbsTemp := i_Temp + 273.16 ;
IF (0.03275 * mAbsTemp - 7.9567)<>0 AND (0.000261 * mAbsTemp + mAux)<>0 THEN
mAux :=(0.01898 - 0.0000476 * mAbsTemp) / (0.03275 * mAbsTemp - 7.9567) * mAbsTemp ;
CO2EqPress := (i_CO2Vol - mAux) * 1.0332 / (0.000261 * mAbsTemp + mAux) ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,16 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION CO2InjPressure : REAL
VAR_INPUT
i_Temp : REAL ;
i_Dens : REAL ;
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
(*CO2InjPressure := 488.5966 * i_Dens - 0.00765 * i_Temp ;*)
CO2InjPressure := 5191.739 * i_Dens * i_Dens + 231.0227 * i_Dens + 0.146326 * i_Temp ;
END_FUNCTION

View File

@ -0,0 +1,21 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION CO2_Solubility : REAL
VAR_INPUT
i_Temp : REAL ;
END_VAR
VAR
mT_Cub : REAL ;
mT_Quad : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
(* This function calculates the CO2 absorption for a complete saturation *)
mT_Cub := EXPT(i_Temp, 3) ;
mT_Quad := EXPT(i_Temp, 2) ;
IF gCO2_Density<>0 THEN
CO2_Solubility := (-1.41118E-06 * mT_Cub + 0.000202893 * mT_Quad -0.011685848 * i_Temp + 0.331474668) / gCO2_Density * 10 ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,28 @@
(* @PATH := '\/TASK0_VOID' *)
(* @SYMFILEFLAGS := '4096' *)
FUNCTION ConvertReal : MFM_Real_Struct
VAR_INPUT
mIn_ValueFromMFM : ARRAY[0..4] OF BYTE;
END_VAR
VAR
i : INT;
p : UDINT;
mPoint : POINTER TO BYTE;
mTemp : REAL;
mTempReal : MFM_Real_Struct ;
END_VAR
(* @END_DECLARATION := '0' *)
mPoint := ADR(mTemp);
FOR i := 3 TO 0 BY -1
DO
mPoint^ := mIn_ValueFromMFM[i] ;
p := mPoint ;
p := p + 1 ;
mPoint := p ;
END_FOR
ConvertReal.Analog_Value := mTemp;
ConvertReal.Value_State := mIn_ValueFromMFM[4] ;
END_FUNCTION

View File

@ -0,0 +1,24 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
aFUNCTION CVQ_0_6_Perc : REAL
VAR_INPUT
i_Temp : REAL ;
END_VAR
VAR
a : REAL ;
b : REAL ;
c : REAL ;
d : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
(* CVQ Valve in 0 - 6 bar range. Min Actuator Temperature 91°C; max Actuator temperature 110°C *)
(* 110 - 91 = 19°C *)
a := 0.000429997 ;
b := -0.014260836 ;
c := 1.362579549 ;
d := 93.71557018 ;
CVQ_0_6_Perc := LIMIT(0, ((EXPT(i_Temp,3) * a + EXPT(i_Temp,2) * b + i_Temp * c + d) - 91) / 19 * 100.0, 100) ;
END_PROGRAM

View File

@ -0,0 +1,24 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION CVQ_1p7_8_Perc : REAL
VAR_INPUT
i_Temp : REAL ;
END_VAR
VAR
a : REAL ;
b : REAL ;
c : REAL ;
d : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
(* CVQ Valve in 1.7 - 8 bar range. Min Actuator Temperature 83°C; max Actuator temperature 110°C *)
(* 110 - 83 = 27°C *)
a := 0.000176883 ;
b := -0.000322 ;
c := 1.4005362 ;
d := 80.987085 ;
CVQ_1p7_8_Perc := LIMIT(0, ((EXPT(i_Temp,3) * a + EXPT(i_Temp,2) * b + i_Temp * c + d) - 83) / 27 * 100.0, 100) ;
END_FUNCTION

View File

@ -0,0 +1,25 @@
(* @GLOBAL_VARIABLE_LIST := Data_from_CIP *)
(* @PATH := '\/CIP_SYSTEM' *)
(* @SYMFILEFLAGS := '0' *)
VAR_GLOBAL
gPB_IN_PRG_CIP_MODE AT%IX256.0:BOOL;
gPB_IN_PRG_CIP_RUNNING AT%IX256.1:BOOL;
gPB_IN_PRG_CIP_COMPLETED AT%IX256.2:BOOL;
gPB_IN_PRG_CIP_DRAIN AT%IX256.3:BOOL;
gPB_IN_PRG_CIP_RINSE AT%IX256.4:BOOL;
gPB_IN_COM_TST_MASTER AT%IX257.7:BOOL;
gPB_IN_PRG_SYRUP_OK AT%IX260.0:BOOL;
gPB_IN_PRG_WATER_OK AT%IX260.1:BOOL;
END_VAR
(* @OBJECT_END := Data_from_CIP *)
(* @CONNECTIONS := Data_from_CIP
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,23 @@
(* @GLOBAL_VARIABLE_LIST := Data_to_CIP *)
(* @PATH := '\/CIP_SYSTEM' *)
(* @SYMFILEFLAGS := '0' *)
VAR_GLOBAL
gPB_OUT_PRG_CIP_REQUEST AT%QX256.0:BOOL;
gPB_OUT_PRG_CIP_RINSE_DRAIN_END AT%QX256.1:BOOL;
gPB_OUT_PRG_CIP_RINSE_CYCLE_ENDED AT%QX256.2:BOOL;
gPB_OUT_COM_TST_MASTER AT%QX257.7:BOOL;
gPB_OUT_PRG_SYRUP_REQ AT%QX260.0:BOOL;
gPB_OUT_PRG_WATER_REQ AT%QX260.1:BOOL;
END_VAR
(* @OBJECT_END := Data_to_CIP *)
(* @CONNECTIONS := Data_to_CIP
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,14 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION DeairCO2TempComp : REAL
VAR_INPUT
i_Temp : REAL ;
i_CO2Off : REAL ;
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
DeairCO2TempComp := (15.0 - i_Temp ) * 0.01 + i_CO2Off ;
END_FUNCTION

View File

@ -0,0 +1,21 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION DeaireationValve : REAL
VAR_INPUT
in_DeaireationFlow : REAL ;
in_InletPressure : REAL ;
in_FlowCoefficient : REAL ;
END_VAR
VAR
mAux : REAL;
END_VAR
(* @END_DECLARATION := '0' *)
(* Regime Sonico P2 < P1/2 *)
(* OV = Flow / 14.3 * kv * P1 *)
mAux := in_FlowCoefficient * 14.3 * (in_InletPressure + 1.0) ;
IF mAux <> 0 THEN
DeaireationValve := LIMIT(gDeaireationValveOV_Min, in_DeaireationFlow / mAux, 100.0) ; (* La valvola è stata tarata per cominciare ad aprire al 5% *)
END_IF
END_FUNCTION

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK Delay
VAR_INPUT
i_Value : REAL ;
i_Sample : UINT ;
END_VAR
VAR_OUTPUT
i_out : REAL ;
END_VAR
VAR
mVarArray : ARRAY[0..5] OF REAL ;
i : INT ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Sample<=5 THEN
FOR i:=i_Sample TO 1BY -1 DO
mVarArray[i] := mVarArray[i - 1] ;
END_FOR
mVarArray[0] := i_Value ;
END_IF
i_out := mVarArray[i_Sample] ;
END_FUNCTION_BLOCK

View File

@ -0,0 +1,17 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION DeltaP : REAL
VAR_INPUT
i_Flow : REAL ;
i_K : REAL ;
i_Valve : REAL ;
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Valve<>0 THEN
DeltaP := i_Flow * i_K * i_Flow * i_K / i_Valve / i_Valve ;
END_IF
END_FUNCTION

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK Derive
VAR_INPUT
i_Signal : REAL ;
i_Gain : REAL ;
i_Cycle : REAL ;
END_VAR
VAR_OUTPUT
o_Derive : REAL ;
END_VAR
VAR
mSaveValue : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Cycle<>0 THEN
o_Derive := i_Gain * (i_Signal - mSaveValue) / i_Cycle ;
END_IF
mSaveValue := i_Signal ;
END_FUNCTION_BLOCK

View File

@ -0,0 +1,16 @@
(* @GLOBAL_VARIABLE_LIST := DeviceNet_Variables *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '0' *)
VAR_GLOBAL
gDeviceNetBlendFillRecArr AT%IW4100 : ARRAY[0..19]OF WORD;
gDeviceNetBlendFillSendArr AT%QW4100 : ARRAY[0..19]OF WORD;
END_VAR
(* @OBJECT_END := DeviceNet_Variables *)
(* @CONNECTIONS := DeviceNet_Variables
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,25 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM Dword_To_Bytes
VAR_INPUT
i_Dword : DWORD ;
END_VAR
VAR_OUTPUT
o_Bytes_0 : BYTE ;
o_Bytes_1 : BYTE ;
o_Bytes_2 : BYTE ;
o_Bytes_3 : BYTE ;
END_VAR
VAR
mAuxShl : DWORD ;
END_VAR
(* @END_DECLARATION := '0' *)
mAuxShl := i_Dword ;
o_Bytes_0 := DWORD_TO_BYTE(i_Dword) ;
o_Bytes_1 := DWORD_TO_BYTE(SHL(mAuxShl, 8)) ;
o_Bytes_2 := DWORD_TO_BYTE(SHL(mAuxShl, 8)) ;
o_Bytes_3 := DWORD_TO_BYTE(SHL(mAuxShl, 8)) ;
END_PROGRAM

View File

@ -0,0 +1,558 @@
(* @PATH := '\/TASK2_ControlMain\/CIP' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM Exec_Simple_CIP
VAR_INPUT
Start : BOOL ;
Hold : BOOL ;
StepUp : BOOL ;
StepDown : BOOL ;
Inizialize : BOOL ;
Clock : BOOL ;
END_VAR
VAR
mSteppingUp : BOOL ;
mSteppingDown : BOOL ;
mStepTimeValue : UINT ;
mWordOut0 : ARRAY [0..15] OF BOOL ; (* Temporary Word Out0 To Valves *)
mWordOut1 : ARRAY [0..15] OF BOOL ; (* Temporary Word Out1 To Valves *)
mWordOut2 : ARRAY [0..15] OF BOOL ; (* Temporary Word Out2 To Valves *)
mWordOut3 : ARRAY [0..15] OF BOOL ; (* Temporary Word Out3 To Valves *)
mWaitEventReqWordTemp : WORD ; (* *)
mWaitEventReqDWord : DWORD ; (* Waiting Conditions Word From Simple Program - Request - *)
mWaitEventStatusDWord : DWORD ; (* Waiting Conditions Word From Simple Program *)
mWaitAnyCond : BOOL ; (* WOR of the 2 Conditions Word *)
mClock_ONS : R_TRIG ;
mStepUp_ONS : R_TRIG ;
mStepDown_ONS : R_TRIG ;
mInizialize_ONS : R_TRIG ;
mCycleCount : UINT ;
mMemCopyResult : UDINT ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
mInizialize_ONS(CLK:=Inizialize) ;
mStepUp_ONS(CLK:=StepUp AND NOT gCIP_Completed) ;
mStepDown_ONS(CLK:=StepDown AND NOT gCIP_Inizialized) ;
mClock_ONS(CLK:=Clock) ;
IF gCIP_ProgramLoaded THEN
Exec_Simple_CIP.CopyCIPProgram ;
END_IF
IF mInizialize_ONS.Q THEN
Exec_Simple_CIP.CIP_Prog_Inizialize ;
ELSE
IF gActualSimpleNum = 0 THEN
gActualSimpleNum := 1 ;
END_IF
IF gActualSimpleNum>gCIPMaxSimpleNum THEN
gActualSimpleNum := gCIPMaxSimpleNum ;
END_IF
IF gActualStepNum = 0 THEN
gActualStepNum := 1 ;
END_IF
IF mStepUp_ONS.Q THEN
Exec_Simple_CIP.CIP_Prog_StepUp ;
END_IF
IF mStepDown_ONS.Q THEN
Exec_Simple_CIP.CIP_Prog_StepDown ;
END_IF
mStepTimeValue := gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_StepTime ;
mCycleCount := 0 ;
WHILE mStepTimeValue = 0 AND NOT gCIP_Completed AND NOT gCIP_Inizialized AND gActualStepNum<=gCIPMaxStepNum AND NOT (mCycleCount>gCIPMaxSimpleNum*gCIPMaxStepNum) DO
mCycleCount := mCycleCount + 1 ;
IF mStepUp_ONS.Q OR (gCIP_Run_Running AND mStepTimeValue = 0) THEN
mSteppingUp := TRUE ;
END_IF
IF mStepDown_ONS.Q THEN
mSteppingDown := TRUE ;
END_IF
IF mSteppingUp THEN
Exec_Simple_CIP.CIP_Prog_StepUp ;
ELSIF NOT (mSteppingUp OR mSteppingDown) THEN
EXIT ;
END_IF
IF mSteppingDown THEN
Exec_Simple_CIP.CIP_Prog_StepDown ;
ELSIF NOT (mSteppingUp OR mSteppingDown) THEN
EXIT ;
END_IF
mStepTimeValue := gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_StepTime ;
END_WHILE
mSteppingUp := FALSE ;
mSteppingDown := FALSE ;
IF mStepDown_ONS.Q THEN
IF gStepActualTime=0 THEN
gCIPTotalElapsedTime := gCIPTotalElapsedTime - mStepTimeValue ;
ELSE
gCIPTotalElapsedTime := gCIPTotalElapsedTime - gStepActualTime ;
END_IF
gStepActualTime := 0 ;
END_IF
IF Start THEN
Exec_Simple_CIP.Exec_Step ;
END_IF
END_IF
gH_Blender_CIP_LinkName := gActual_LinkProgName ;
IF gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleCode>0 THEN
gH_Blender_CIP_SimpleName := gActual_ArrSimpleProgName[gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleCode] ;
END_IF
gH_Blender_CIP_StepTime := LIMIT(0, ABS(mStepTimeValue - gStepActualTime), mStepTimeValue) ;
gH_Blender_CIP_TotalTime := LIMIT(0, ABS(gCIPTotalTime - gCIPTotalElapsedTime), gCIPTotalTime) ;
gH_Blender_CIP_StepNum := gActualStepNum ;
IF gCIPTotalTime>0 THEN
gH_Blender_CIP_LinkProgPerc := UDINT_TO_REAL(gCIPTotalElapsedTime) / UDINT_TO_REAL(gCIPTotalTime) * 100 ;
END_IF
IF mStepTimeValue>0 THEN
gH_Blender_CIP_SimpleProgPerc := UINT_TO_REAL(gStepActualTime) / UINT_TO_REAL(mStepTimeValue) * 100 ;
END_IF
gH_Blender_CIP_PV_HighCond := gIn_C1_Conductivity_Caustic ;
gH_Blender_CIP_PV_LowCond := gIn_C2_Conductivity_Water ;
gH_Blender_CIPHeaterTempPV := gCIPHeaterTemp_PV ;
gH_Blender_CIPReturnTempPV := gCIPReturnTemp_PV ;
END_PROGRAM
ACTION CIP_Prog_Completed:
gCIP_Completed := TRUE ;
mWaitAnyCond := FALSE ;
mWordOut0 := _Word_To_BoolArray(0) ;
mWordOut1 := mWordOut0 ;
mWordOut2 := mWordOut0 ;
mWordOut3 := mWordOut0 ;
mWaitEventReqDWord := 0 ;
mWaitEventStatusDWord := 0 ;
END_ACTION
ACTION CIP_Prog_Inizialize:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 7
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
1
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gActualSimpleNum
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
1
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gActualStepNum
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
FALSE
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCIP_Completed
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
FALSE
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCIP_WaitAnyCond
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gStepActualTime
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCIP_Inizialized
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCIPTotalElapsedTime
ENABLELIST_END
_OUTPUTS : 0
END_ACTION
ACTION CIP_Prog_StepDown:
IF gActualSimpleNum >= 1 THEN
IF gActualStepNum > 1 THEN
IF gStepActualTime<=0 THEN
gActualStepNum := gActualStepNum - 1 ;
END_IF
ELSIF gActualSimpleNum>1 THEN
gActualSimpleNum := gActualSimpleNum - 1 ;
gActualStepNum := gCIPMaxStepNum ;
END_IF
END_IF
IF gActualSimpleNum=1 AND gActualStepNum=1 THEN
gCIP_Inizialized := TRUE ;
ELSE
gCIP_Inizialized := FALSE ;
END_IF
IF gCIP_Completed THEN
gCIP_Completed := FALSE ;
END_IF
END_ACTION
ACTION CIP_Prog_StepUp:
IF gActualSimpleNum<gCIPMaxSimpleNum THEN
IF gActualStepNum<gCIPMaxStepNum THEN
gActualStepNum := gActualStepNum + 1 ;
ELSIF gActualStepNum = gCIPMaxStepNum THEN
gActualSimpleNum := gActualSimpleNum + 1 ;
gActualStepNum := 1 ;
END_IF
ELSIF gActualSimpleNum=gCIPMaxSimpleNum THEN
IF gActualStepNum<gCIPMaxStepNum THEN
gActualStepNum := gActualStepNum + 1 ;
ELSIF gActualStepNum = gCIPMaxStepNum THEN
IF mStepTimeValue=0 OR (mStepTimeValue<=gStepActualTime) THEN
Exec_Simple_CIP.CIP_Prog_Completed ;
END_IF
END_IF
END_IF
IF gCIP_Inizialized THEN
gCIP_Inizialized := FALSE ;
END_IF
IF mStepTimeValue>0 AND gH_Blender_CIP_ProgStepUp THEN
gCIPTotalElapsedTime := gCIPTotalElapsedTime + LIMIT(0, (mStepTimeValue - gStepActualTime), mStepTimeValue) ;
END_IF
gStepActualTime := 0 ;
END_ACTION
ACTION CopyCIPProgram:
_LD_BODY
_NETWORKS : 3
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTION
_BOX_EXPR : 3
_ENABLED
_OPERATOR
_BOX_EXPR : 1
_OPERAND
_EXPRESSION
_POSITIV
gCIP_Run_Prog
_EXPRESSION
_POSITIV
ADR
_OPERATOR
_BOX_EXPR : 1
_OPERAND
_EXPRESSION
_POSITIV
gActualCIP_LinkProgram
_EXPRESSION
_POSITIV
ADR
_OPERATOR
_BOX_EXPR : 1
_OPERAND
_EXPRESSION
_POSITIV
gActualCIP_LinkProgram
_EXPRESSION
_POSITIV
SIZEOF
_EXPRESSION
_POSITIV
MEMCPY
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mMemCopyResult
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gCIP_ProgramLoaded
_EXPRESSION
_POSITIV
_LD_CONTACT
gCIP_Completed
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
gCIP_Completed
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gCIP_ProgramLoaded
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
gCIP_ProgramLoaded
END_ACTION
ACTION Exec_Step:
IF mClock_ONS.Q THEN (* One Second Clock *)
IF mStepTimeValue>gStepActualTime THEN
gCIP_Simple_Exec := gCIP_Run_Prog[gActualSimpleNum] ;
mWordOut0 := _Word_To_BoolArray(gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_OutWord_0) ;
mWordOut1 := _Word_To_BoolArray(gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_OutWord_1) ;
mWordOut2 := _Word_To_BoolArray(gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_OutWord_2) ;
mWordOut3 := _Word_To_BoolArray(gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_OutWord_3) ;
mWaitEventReqWordTemp:= gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_ControlWord1 ;
mWaitEventReqDWord := mWaitEventReqDWord AND mWaitEventReqWordTemp ;
mWaitEventReqDWord := SHL(mWaitEventReqDWord,16) ;
mWaitEventReqWordTemp := gCIP_Run_Prog[gActualSimpleNum].CIP_SimpleArray[gActualStepNum].CIP_ControlWord0 ;
mWaitEventReqDWord := mWaitEventReqDWord OR mWaitEventReqWordTemp ;
gCIP_WaitEventReq_Array := _DWord_To_BoolArray(mWaitEventReqDWord) ;
mWaitEventStatusDWord := _BoolArray_To_DWord(gCIP_WaitEventStatus_Array) ;
(* mWaitEventStateWord1 := _BoolArray_To_Word(gCIP_WaitEventState_Array1) ;*)
IF (mWaitEventReqDWord<>0) AND (mWaitEventReqDWord XOR mWaitEventStatusDWord)<>0 THEN
gCIP_WaitAnyCond := TRUE ;
ELSE
gCIP_WaitAnyCond := FALSE ;
END_IF
gCIP_SPHigh_Cond := gCIP_Run_Prog[gActualSimpleNum].CIP_SetPoint_HighCond ;
gCIP_SPLow_Cond := gCIP_Run_Prog[gActualSimpleNum].CIP_SetPoint_LowCond ;
gCIP_SPTemperature := gCIP_Run_Prog[gActualSimpleNum].CIP_SetPoint_Temp ;
IF NOT Hold AND NOT gCIP_Completed THEN
gStepActualTime := gStepActualTime + 1 ;
gCIPTotalElapsedTime := gCIPTotalElapsedTime + 1 ;
END_IF
ELSE
gStepActualTime := 1 ;
CIP_Prog_StepUp ;
END_IF
END_IF
(***********************************************************************************************************)
(* Transfer the X in the Simple program i-th Step to the Sp Sustain Memory *)
(***********************************************************************************************************)
gSp_CIP_Temp_En := mWordOut0[0] ; (* CIP Enable PID Control Temperature *)
gSp_EV01 := mWordOut0[1] ; (* EV01 Deair Tank Water Level Control Valve *)
gSp_EV02 := mWordOut0[2] ; (* EV02 Deair Tank Water Manual Valve *)
gSp_EV03 := mWordOut0[3] ; (* EV03 Syrup Tank Syrup Level Control Valve *)
gSp_EV04 := mWordOut0[4] ; (* EV04 Syrup Tank Syrup Manual Valve *)
gSp_CIP_CO2_Inj := mWordOut0[5] ; (* Enable CO2 Injection Uring CIP *)
gSp_EV14 := mWordOut0[6] ; (* EV14 Deair Tank Drain Valve *)
gSp_EV15 := mWordOut0[7] ; (* EV15 Product Tank Drain Valve *)
gSp_EV16 := mWordOut0[8] ; (* EV16 Syrup Tank Drain Valve *)
(*gSp_EV17 := NOT mWordOut0[9] ; (* EV17 Deair + Product Tank SprayBall Valve *)
(*gSp_EV61 := NOT mWordOut0[10] ; (* EV61 Syrup Tank SprayBall Valve *)
gSp_EV23 := mWordOut0[11] ; (* EV23 Serpentine Drain Valve *)
gSp_EV24 := NOT mWordOut0[12] ; (* EV24 Syrup Tank Recirc Valve *)
gSp_EV31 := mWordOut0[13] ; (* EV31 Venturi Suction Valve *)
gSp_EV32 := mWordOut0[14] ; (* EV32 Venturi Washing Valve *)
gSp_EV33 := mWordOut0[15] ; (* EV33 Sanitizier Inlet Valve 1 - Caustic - *)
gSp_EV34 := mWordOut1[0] ; (* EV34 Sanitizier Inlet Valve 2 *)
gSp_EV35 := mWordOut1[1] ; (* EV35 Sanitizier Inlet Valve 3 *)
gSp_EV36 := mWordOut1[2] ; (* EV36 Plant Recirc Valve *)
gSp_EV37 := mWordOut1[3] ; (* EV37 Plant Drain Valve *)
gSp_EV38 := mWordOut1[4] ; (* EV38 Plant Caustic Recovery Valve *)
gSp_CIPRunning := mWordOut1[5] ;
gSp_CIPDrainRequest := mWordOut1[6] ;
gSp_CIPHotPhase := mWordOut1[7] ;
mWordOut1[8] ;
mWordOut1[9] ;
gSp_P1 := mWordOut1[10] ; (* P1 Water Pump Run In CIP to get Prod Tank 100% level *)
gSp_SyrRoomPump := mWordOut1[11] ; (* Syrup Room Pump Run In CIP *)
mWordOut1[12] ;
mWordOut1[13] ;
mWordOut1[14] ;
mWordOut1[15] ;
mWordOut2[0] ;
mWordOut2[1] ;
mWordOut2[2] ;
mWordOut2[3] ;
mWordOut2[4] ;
mWordOut2[5] ;
mWordOut2[6] ;
mWordOut2[7] ;
mWordOut2[8] ;
mWordOut2[9] ;
mWordOut2[10] ;
mWordOut2[11] ;
mWordOut2[12] ;
mWordOut2[13] ;
mWordOut2[14] ;
mWordOut2[15] ;
mWordOut3[0] ;
mWordOut3[1] ;
mWordOut3[2] ;
mWordOut3[3] ;
mWordOut3[4] ;
mWordOut3[5] ;
mWordOut3[6] ;
mWordOut3[7] ;
mWordOut3[8] ;
mWordOut3[9] ;
mWordOut3[10] ;
mWordOut3[11] ;
mWordOut3[12] ;
mWordOut3[13] ;
mWordOut3[14] ;
mWordOut3[15] ;
END_ACTION

View File

@ -0,0 +1,773 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Procedure\/System Run Out' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM FastRinse
VAR
mFastRinseTP : TP ;
mAuxONS : R_TRIG ;
mStepNum : INT ;
mFastRinseMove : _StepMove ;
mAuxStep : INT ;
mTimer : TIME ;
mProcSelected : BOOL ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 11
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gSyrRunOut_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFastRinse_Qualifier
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 5
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderAlarm
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFastRinseTP
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
TP
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_LD_CONTACT
gFastRinse_Done
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFastRinse_Qualifier
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFastRinse_Request
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 4
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastRinse_Qualifier
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastRinse_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gEmergencyPressed
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_Blender_OPT_FastChangeOverEnabled
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 3
_LD_CONTACT
gSystemRunOut_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gSystemRunOutInit
_EXPRESSION
_POSITIV
_LD_CONTACT
gSystemRunOut_Reset
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFastRinse_Reset
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderRinse_Running
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_SystemRunOutEnabled
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFastRinse_Wait
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFastRinse_Reset
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FastRinse._FastRinseReset
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gH_FastChangeSequenceNum
_OPERAND
_EXPRESSION
_POSITIV
9
_EXPRESSION
_POSITIV
EQ
_OPERAND
_EXPRESSION
_POSITIV
gFastRinse_Latch
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProcSelected
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 2
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProcSelected
_OPERAND
_EXPRESSION
_POSITIV
gH_FastChangeProcValue
_OPERATOR
_BOX_EXPR : 2
_OPERATOR
_BOX_EXPR : 1
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gFastRinseStep0Time
_OPERAND
_EXPRESSION
_POSITIV
mTimer
_EXPRESSION
_POSITIV
SUB
_EXPRESSION
_POSITIV
TIME_TO_REAL
_OPERAND
_EXPRESSION
_POSITIV
1000
_EXPRESSION
_POSITIV
DIV
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FastChangeProcValue
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProcSelected
_OPERAND
_EXPRESSION
_POSITIV
gH_FastChangeWait1
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FastChangeWait1
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gFastRinse_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Reset
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFastRinse_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFastRinse_Latch
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastRinse_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Wait
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFastRinse_Running
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFastRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FastRinse._FastRinseSequencer
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFastRinse_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FastRinseDone
END_PROGRAM
ACTION _FastRinseReset:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
mAuxStep
_OUTPUT
_POSITIV
_NO_SET
mStepNum
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
gFastRinse_Done
END_ACTION
ACTION _FastRinseSequencer:
CASE mStepNum OF
0: FastRinse_Step_0 ;
1: FastRinse_Step_1 ;
2: FastRinse_Step_2 ;
ELSE
;
END_CASE
END_ACTION
ACTION FastRinse_Step_0:
_LD_BODY
_NETWORKS : 2
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gSp_EV15
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mFastRinseMove
_BOX_EXPR : 6
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mStepNum
_OPERAND
_EXPRESSION
_POSITIV
1
_OPERAND
_EXPRESSION
_POSITIV
gFastRinseStep0Time
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_OPERAND
_EXPRESSION
_POSITIV
gFastRinse_Wait
_EXPRESSION
_POSITIV
_StepMove
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mTimer
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mStepNum
ENABLELIST_END
_OUTPUTS : 0
END_ACTION
ACTION FastRinse_Step_1:
_LD_BODY
_NETWORKS : 2
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gRinseCloseVM1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mFastRinseMove
_BOX_EXPR : 6
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mStepNum
_OPERAND
_EXPRESSION
_POSITIV
2
_OPERAND
_EXPRESSION
_POSITIV
t#3s
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_OPERAND
_EXPRESSION
_POSITIV
gFastRinse_Wait
_EXPRESSION
_POSITIV
_StepMove
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mTimer
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mStepNum
ENABLELIST_END
_OUTPUTS : 0
END_ACTION
ACTION FastRinse_Step_2:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 2
_OUTPUT
_NEGATIV
_SET
gRinseCloseVM1
_OUTPUT
_POSITIV
_SET
gFastRinse_Done
END_ACTION

View File

@ -0,0 +1,137 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '4096' *)
FUNCTION_BLOCK FB41_PIDController
VAR_INPUT
in_SP : REAL; (* SP *)
in_PV : REAL; (* PV *)
MAN : REAL;
GAIN : REAL;
TI : REAL;
TD : REAL;
DEADB_W : REAL ;
LMN_HLM : REAL;
LMN_LLM : REAL;
LMN_FAC : REAL;
LMN_OFF : REAL;
CYCLE : REAL ;
I_ITLVAL : REAL;
DISV : REAL;
MAN_ON : BOOL;
I_SEL : BOOL;
P_SEL : BOOL;
D_SEL : BOOL;
INT_HOLD : BOOL;
I_ITL_ON : BOOL;
END_VAR
VAR_OUTPUT
LMN : REAL;
LMN_P : REAL;
LMN_I : REAL;
LMN_D : REAL;
High_Limit : BOOL;
Low_Limit : BOOL;
END_VAR
VAR
mIntegral : Integral ; (* FB Integral Instance *)
mIntegralOut : REAL; (* Integral Value *)
mOld_error : REAL ;
Error : REAL ;
mProportional : REAL ;
mDerivative : REAL ;
Gain_error : REAL; (*Error Value * Gain*)
Total_result : REAL; (*Total result of PID Block*)
INT_Block : BOOL;
LMN_alarm : BOOL ; (*Limit output alarm *)
mAuxONS : R_TRIG ;
mManEn : BOOL ;
mManONS : F_TRIG ;
END_VAR
(* @END_DECLARATION := '0' *)
(* SP - PV *)
Error := in_SP - in_PV ;
(* Multiply GAIN *)
IF ABS(Error) >= DEADB_W THEN (* Dead Band Implementation *)
Gain_error := Error * GAIN ;
ELSE
Gain_error := 0.0 ;
END_IF
(* Freeze Integral Calculation *)
INT_Block := INT_HOLD OR MAN_ON OR LMN_alarm ;
(* Integral calculation *)
IF I_SEL AND TI>0 THEN
IF I_ITL_ON THEN
mIntegralOut := I_ITLVAL;
ELSE
IF NOT INT_Block THEN
IF (( Gain_error>=0 ) AND NOT High_Limit) OR (( Gain_error<=0 ) AND NOT Low_Limit) THEN
(*mIntegral := mIntegral + Gain_error * CYCLE / TI;*)
mIntegral.i_NewValue := Gain_error / TI ;
mIntegral.i_IntCycle := CYCLE ;
mIntegral(Out_Integral:=mIntegralOut) ;
END_IF
END_IF
END_IF
ELSE
mIntegralOut := 0.0 ;
END_IF
LMN_I := mIntegralOut ;
(* Derivative calculation *)
IF ( D_SEL AND TD >0 ) THEN
mDerivative := ( Gain_error - mOld_error ) * TD / 10 ;
ELSE
mDerivative := 0.0 ;
END_IF
mOld_error := Gain_error ;
LMN_D := mDerivative ;
(* Proportional contribute *)
IF P_SEL THEN
mProportional := Gain_error ;
ELSE
mProportional := 0 ;
END_IF
LMN_P := mProportional ;
(* Total result P + I + D + DISV *)
Total_result := mProportional + mIntegralOut + mDerivative + DISV ;
mManONS(CLK:=MAN_ON) ;
(* Manual control *)
IF MAN_ON THEN
Total_result := MAN ;
IF NOT I_ITL_ON AND mManONS.Q THEN
mIntegralOut := LMN - LMN_P - DISV ; (* - Bumpless - Inizilize the Integral Component when the PID is setted in auto again *)
mIntegral(Out_Integral:=mIntegralOut) ;
mDerivative := 0.0 ;
END_IF
END_IF
(* High Low limit for total result *)
High_Limit := FALSE ;
Low_Limit := FALSE ;
IF Total_result > LMN_HLM THEN
High_Limit := TRUE ;
Total_result := LMN_HLM;
END_IF
IF Total_result < LMN_LLM THEN
Low_Limit := TRUE ;
Total_result := LMN_LLM;
END_IF
LMN := ( Total_result * LMN_FAC ) + LMN_OFF;
END_FUNCTION_BLOCK

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Danfoss FC' *)
TYPE FC_Control_Word
STRUCT
B00_RefValue_LSB : BOOL ; (* Choose between the four reference values, which are pre-programmed in par.3-10 *)
B01_RefValue_MSB : BOOL ;
B02_Brake : BOOL ; (* Bit 02 = 0 leads to DC braking and stop.
Bit 02 = 1 leads to ramping. *)
B03_Coast : BOOL ; (* Bit 03 = 0 causes the frequency converter to immediately "let go" of the motor, so that it coasts to a standstill.
Bit 03 = 1 enables the frequency converter to start the motor if the other starting conditions have been fulfilled. *)
B04_QuickStop : BOOL ; (* Bit 04 = 0 causes a stop, in which the motor speed is ramped down to stop via par. 3-81. *)
B05_HoldOutputFrequency : BOOL ; (* Bit 05 = 0 causes the present output frequency (in Hz) to freeze. *)
B06_RampStop : BOOL ; (* Bit 06 = 0 causes a stop, in which the motor speed is ramped down to stop via the selected ramp down parameter.
Bit 06 = 1 permits the frequency converter to start the motor, if the other starting conditions have been fulfilled. *)
B07_Reset : BOOL ; (* Reset of a trip is activated on the signals leading edge, i.e. when changing from logic "0" to logic "1". *)
B08_Jog : BOOL ; (* Bit 08 = 1 causes the output frequency to be determined by par. 3-19. *)
B09_RampSelection : BOOL ; (* Bit 09 = 0 means that ramp 1 is active (parameters 3-40 to 3-47).
Bit 09 = 1 means that ramp 2 (par. 3-50 to 3-57) is active.*)
B10_DataValid : BOOL ; (* Bit 10 = 0 causes the control word to be ignored,
Bit 10 = 1 causes the control word to be used. *)
B11_Relay01Active : BOOL ; (* Bit 11 = 1 Relay 01 activated, provided Control word bit 11 has been chosen in par. 5-40.*)
B12_Relay04Active : BOOL ; (* Bit 12 = 1 Relay 04 activated, provided Control word bit 12 has been chosen in par. 5-40.*)
B13_SetUp_LSB : BOOL ; (* Choose between the four menu set-ups, only possible when Multi-Set-ups is selected in par. 0-10. *)
B14_SetUp_MSB : BOOL ;
B15_Reverse : BOOL ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,26 @@
(* @PATH := '\/Danfoss FC' *)
TYPE FC_Status_Word :
STRUCT
B00_ControlReady : BOOL ; (* Bit 00 =0 The frequency converter as tripped *)
B01_DriveReady : BOOL ; (* Bit 01 =1 The frequency converter is ready for operation, but there is an active coasting command via the digital inputs or via serial communication *)
B02_Coasting : BOOL ; (* Bit 02 =1 The frequency converter can start the motor when a start command is given *)
B03_Trip : BOOL ; (* Bit 03 =1 The frequency converter is tripped and that a reset signal is required to re-establish operation *)
B04_Error : BOOL ; (* Bit 04 = 1 there is a frequency converter error but no trip *)
B05_Reserved : BOOL ; (* *)
B06_Triplock : BOOL ; (* Bit 06 = 1 The frequency converter is tripped, and locked *)
B07_Warning : BOOL ; (* Bit 07 = 1 a warning has occurred *)
B08_Speed_OK : BOOL ; (* Bit 08 = 0 The motor is running, but that the present speed is different from the preset speed reference.
It might, for example, be the case while the speed is being ramped up/down during start/stop *)
B09_BusControl : BOOL ; (* Bit 09 = 1 means that it is possible to control the frequency converter via the fieldbus/ serial communication *)
B10_FrequencyLimit_OK : BOOL ; (* Bit 10 = 0 if the output frequency has reached the value in par. 4-11 Motor speed low limit or par.4-13 Motor speed high limit
Bit 10 = 1 means that the output frequency is within the defined limits *)
B11_InOperation : BOOL ; (* Bit 11 = 1 The frequency converter has a start signal or that the output frequency is greater than 0 Hz *)
B12_Drive_OK : BOOL ; (* Bit 12 = 1 The inverter has stopped because of over temperature, but that the unit has not tripped and will resume operation once the over temperature stops *)
B13_Voltage_OK : BOOL ; (* Bit 13 = 1 The DC voltage in the frequency converters intermediate circuit is too low or too high *)
B14_Torque_OK : BOOL ; (* Bit 14 = 0 The motor current is lower than the torque limit selected in par. 4-16 Torque limit motor mode or par. 4-17 Torque limit generator mode.
Bit 14 = 1 The torque limit in par. 4-16 and 4-17 has been exceeded *)
B15_Timer_OK : BOOL ; (* Bit 15 = 0 The timers for motor thermal protection and VLT thermal protection, respectively, have not exceeded 100%.
Bit 15 = 1 One of the timers has exceeded 100% *)
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,19 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION FeedForward : REAL (* If Function returns -1 means Error *)
VAR_INPUT
i_Flow : REAL ; (* Liquid Flow in l/min *)
i_KFF : REAL ; (* Adjusting parameter *)
i_Delta_P : REAL ; (* Delta Pressure: Friction Losses Across the Valve *)
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Delta_P >0 THEN
FeedForward := LIMIT(0, i_Flow * i_KFF / SQRT(i_Delta_P), 100) ;
ELSE
FeedForward := -1 ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,56 @@
(* @GLOBAL_VARIABLE_LIST := FillerHead *)
(* @PATH := '\/Filler_Head_PID_Data' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
gHead_PID_Cycle : REAL ;
gFillingValveHead_PV : REAL ; (* Filling Valve Head Set Point [mmH2O] *)
gSensor_Head_PV : REAL ; (* Differential Pressure Process Value [mmH2O] *)
gProd_Tank_Height : REAL ; (* Product Tank Liquid Height from Soil [mm] *)
gDiffSensor_Height : REAL ; (* Sensor Height from Soil [mm] *)
gPID_Head_Max_Value : REAL ; (* Max Head [mm] *)
gHead_PID_Max_Freq : REAL ; (* Max Filling Head PID Max Freq [Hz] *)
gHead_PID_Manual_Value : REAL ;
gFillerCentrifugalHead : REAL ; (* Centrifugal Head [mm] *)
gTotalPressLoss : REAL ; (* P3 Pump + Pipe + Filler Collector + Filling Pipes Pressure Loss [mm] *)
gHeadDinamicComp : REAL ;
gStartFillingExtraHead : REAL ; (* Head Pressure variation due to start filling *)
gStopFillingExtraHead : REAL ; (* Head Pressure variation due to stop filling *)
gFiller_Speed : REAL ; (* Filler Speed [Bott/h] *)
gFiller_Temperature : REAL ; (* Filler Temperature [°C] *)
gProd_Flow : REAL ; (* Product Flow in l/min*)
gProd_FlowEstimated : REAL ; (* Estimated Product Flow in l/min*)
gProd_FlowEstimatedSlw : REAL ; (* Estimated Product Flow in l/min*)
gFillingTime : REAL ;
g_MAN_Head : BOOL ; (* 1 = Manual 0 = Automatic *)
g_Head_PID_Enable : BOOL ; (* 1 = Enable Filling Valve Head PID *)
g_Head_CIP_Rinse : BOOL ; (* 1 = CIP or Rinse *)
g_Head_Drain : BOOL ; (* 1 = Drain *)
gOut_Freq_Head_PID : REAL ; (* uscita PID in frequenza ( 0 .. 100 Hz ) *)
g_Max_Head : BOOL ; (* 1 = massimo Battente superatoo *)
g_Min_Head : BOOL ; (* 1= Battente sotto il minimo *)
g_Head_OK : BOOL ; (* 1= Battente serbatoio OK *)
gP3_Frequency : REAL ;
gHeadFillStat_MeanValue : REAL ;
gHeadFillStat_Variance : REAL ;
gHeadFilStat_DevStd : REAL ;
gHeadPIDCtrlOk : BOOL ;
END_VAR
VAR_GLOBAL CONSTANT
gEstimatedFlowEnable : BOOL := TRUE ;
gProd_HeadPIDMax_Freq : REAL := 50.0 ; (* Head Filling PID Max Frequency during regulation in production *)
gMax_P3_Freq : REAL := 60.0 ; (* Head Filling PID Max Frequency in Manual *)
gMin_Head_Value : REAL := 0.0 ; (* Min Head [mm] *)
gDiffSensor_MaxValue : REAL := 5000.0 ;
END_VAR
(* @OBJECT_END := FillerHead *)
(* @CONNECTIONS := FillerHead
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,30 @@
(* @PATH := '\/Signals Inteface' *)
TYPE FillerReceiveStruct :
STRUCT
CIP_Request : BOOL ;
CIP_DrainCompleted : BOOL ;
ProductionRequest : BOOL ;
ProductRequest : BOOL ;
LastContainerFilled : BOOL ;
CIP_CycleEnded : BOOL ;
CIP_ChangeReady : BOOL ;
FastRinseReady : BOOL ;
OpenProductDrainPipe : BOOL ;
FastRinseWaterRequest : BOOL ;
SpareBit1_2 : BOOL ;
SpareBit1_3 : BOOL ;
SpareBit1_4 : BOOL ;
SpareBit1_5 : BOOL ;
SpareBit1_6 : BOOL ;
Rinse_Ended : BOOL ;
SpareByte2 : BYTE ;
SpareByte3 : BYTE ;
SpareByte4 : BYTE ;
SpareByte5 : BYTE ;
SpareByte6 : BYTE ;
SpareByte7 : BYTE ;
SpareByte8 : BYTE ;
SpareByte9 : BYTE ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,684 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Procedure\/System Run Out' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM FillerRinse
VAR
mFillerRinseTP : TP ;
mAuxONS : R_TRIG ;
mStepNum : INT ;
mFillerRinseMove : _StepMove ;
mAuxStep : INT ;
mTimer : TIME ;
mProcSelected : BOOL ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 12
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinse_Qualifier
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 5
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderAlarm
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFillerRinseTP
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
TP
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_LD_CONTACT
gFillerRinse_Done
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerRinse_Qualifier
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinse_Request
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 4
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFillerRinse_Qualifier
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gEmergencyPressed
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_Blender_OPT_FastChangeOverEnabled
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 3
_LD_CONTACT
gSystemRunOut_Reset
_EXPRESSION
_POSITIV
_LD_CONTACT
gSystemRunOutInit
_EXPRESSION
_POSITIV
_LD_CONTACT
gSystemRunOut_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinse_Reset
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gIn_Flr_WaterRinseRequest
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFromFillerFastRinseCompleted
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinse_Wait
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFillerRinse_Reset
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FillerRinse._FillerRinseReset
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gH_FastChangeSequenceNum
_OPERAND
_EXPRESSION
_POSITIV
14
_EXPRESSION
_POSITIV
EQ
_OPERAND
_EXPRESSION
_POSITIV
gFillerRinse_Latch
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProcSelected
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 2
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProcSelected
_OPERAND
_EXPRESSION
_POSITIV
gH_FastChangeProcValue
_OPERATOR
_BOX_EXPR : 2
_OPERATOR
_BOX_EXPR : 1
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gFillerRinseStep0Time
_OPERAND
_EXPRESSION
_POSITIV
mTimer
_EXPRESSION
_POSITIV
SUB
_EXPRESSION
_POSITIV
TIME_TO_REAL
_OPERAND
_EXPRESSION
_POSITIV
1000
_EXPRESSION
_POSITIV
DIV
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FastChangeProcValue
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProcSelected
_OPERAND
_EXPRESSION
_POSITIV
gH_FastChangeWait1
_OPERAND
_EXPRESSION
_POSITIV
gIn_Flr_FastRinseCompleted
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FastChangeWait1
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gFillerRinse_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_Reset
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerRinse_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinse_Latch
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_Wait
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinse_Running
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
gH_FillerRinseRun
_OUTPUT
_POSITIV
_NO_SET
gH_Status048
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FillerRinse._FillerRinseSequencer
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFillerRinse_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FillerRinseDone
END_PROGRAM
ACTION _FillerRinseReset:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 2
_OUTPUT
_POSITIV
_NO_SET
mAuxStep
_OUTPUT
_POSITIV
_NO_SET
mStepNum
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
gFillerRinse_Done
END_ACTION
ACTION _FillerRinseSequencer:
CASE mStepNum OF
0: FillerRinse_Step_0 ;
1: FillerRinse_Step_1 ;
ELSE
;
END_CASE
END_ACTION
ACTION FillerRinse_Step_0:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mFillerRinseMove
_BOX_EXPR : 6
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mStepNum
_OPERAND
_EXPRESSION
_POSITIV
1
_OPERAND
_EXPRESSION
_POSITIV
gFillerRinseStep0Time
_OPERAND
_EXPRESSION
_POSITIV
gFromFillerFastRinseCompleted
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_OPERAND
_EXPRESSION
_POSITIV
gFillerRinse_Wait
_EXPRESSION
_POSITIV
_StepMove
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mTimer
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mStepNum
ENABLELIST_END
_OUTPUTS : 0
END_ACTION
ACTION FillerRinse_Step_1:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gFillerRinse_Done
END_ACTION

View File

@ -0,0 +1,713 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM FillerRinseTank_Ctrl
VAR
mFillerTankRinseLoadedSR : SR ;
mDrainFillerRinseTankTime : TOF ;
mEmptyFillerRinseTankTON : TON ;
mWaitToRunPumpTON : TON ;
mWaitToRunPump : BOOL ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 12
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gIn_FillerRinseTankMaxLevel
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FillerRinseTankMaxLvl
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gIn_FillerRinseTankMinLevel
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FillerRinseTankMinLvl
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gIn_FillerRinseTankMinLevel
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mWaitToRunPumpTON
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#30s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mWaitToRunPump
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gIn_FillerRinseTankMinLevel
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mEmptyFillerRinseTankTON
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#40s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinseTankEmpty
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mFillerTankRinseLoadedSR
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gH_SystemRunOutEnabled
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gIn_FillerRinseTankMinLevel
_OPERAND
_EXPRESSION
_POSITIV
gIn_FillerRinseTankMaxLevel
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
AND
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_POSITIV
gOut_OpenEV72RinseTankDrain
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_NEGATIV
gIn_FillerRinseTankMaxLevel
_OPERAND
_EXPRESSION
_NEGATIV
gIn_FillerRinseTankMinLevel
_EXPRESSION
_POSITIV
AND
_OPERATOR
_BOX_EXPR : 3
_OPERAND
_EXPRESSION
_NEGATIV
gH_EV72_Auto
_OPERAND
_EXPRESSION
_POSITIV
gH_EV72_Manual
_OPERAND
_EXPRESSION
_NEGATIV
gIn_FillerRinseTankMaxLevel
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
OR
_EXPRESSION
_POSITIV
SR
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerTankRinseLoaded
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 8
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gIn_FillerRinseTankMinLevel
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_SystemRunOutEnabled
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerTankRinseLoaded
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRinse_Running
_EXPRESSION
_NEGATIV
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderProdMode
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mDrainFillerRinseTankTime
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#40s
_EXPRESSION
_POSITIV
TOF
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_LD_CONTACT
gOut_StartRinseTankPump
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFillerRinseTankDrain
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 4
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gAlwaysOff
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gAlwaysOff
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gIn_Flr_OpenEV69ProdPipeDrain
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_CIP_BlenderDrainRun
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOut_OpenEV69ProdPipeDrain2
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 6
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_Blender_OPT_FillerRinseTank
_EXPRESSION
_POSITIV
_LD_CONTACT
mWaitToRunPump
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinseTankEmpty
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerRinseTankDrain
_EXPRESSION
_NEGATIV
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gIn_Flr_WaterRinseRequest
_EXPRESSION
_POSITIV
_LD_CONTACT
gOut_Flr_WaterRinseReady
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOut_OpenEV66FlrTankOut
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gH_SystemRunOutEnabled
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gIn_FillerRinseTankMaxLevel
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gIn_FillerRinseTankMinLevel
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFillerRinse_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOut_OpenEV68InletWater
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gH_CIP_ProdTankFloodRun
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CIP_DeairTankFloodRun
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CIP_SyrTankFloodRun
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_CIP_BlenderDrainRun
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gIn_FillerRinseTankMaxLevel
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRinse_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOut_OpenEV71RinseTankSprayBall
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 3
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinse_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gFillerRinseTankDrain
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_CIP_BlenderDrainRun
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOut_OpenEV72RinseTankDrain
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 5
_LD_CONTACT
gH_Blender_OPT_FastChangeOverEnabled
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_Blender_OPT_FillerRinseTank
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_Blender_OPT_Simulation
_EXPRESSION
_NEGATIV
_LD_OR
_LD_OPERATOR : 4
_LD_CONTACT
gSp_P5
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gOut_OpenEV66FlrTankOut
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gOut_OpenEV66FlrTankOut
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gOut_OpenEV66FlrTankOut
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinse_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gIn_FillerRinseTankMinLevel
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gOut_StartRinseTankPump
END_PROGRAM

View File

@ -0,0 +1,29 @@
(* @PATH := '\/Signals Inteface' *)
TYPE FillerSendStruct :
STRUCT
CIP_Mode : BOOL ;
CIP_Running : BOOL ;
CIP_Completed : BOOL ;
CIP_DrainRequest : BOOL ;
Rinse_Mode : BOOL ;
Production_Mode : BOOL ;
ProductAvailable : BOOL ;
FillerRunOut : BOOL ;
ProductCompleted : BOOL ;
ChangeSanitize : BOOL ;
FastRinseRequest : BOOL ;
WaterRinseReady : BOOL ;
CausticSanitizeRunning : BOOL ;
MinimumProductLevel : BOOL ;
SpareBit1_6 : BOOL ;
AliveBit : BOOL ;
FillerRunOutAmount : INT ;
FillerNextRecipe : BYTE ;
SpareByte5 : BYTE ;
SpareByte6 : BYTE ;
SpareByte7 : BYTE ;
SpareByte8 : BYTE ;
SpareByte9 : BYTE ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION FillingTime : REAL
VAR_INPUT
i_FillingValveHead : REAL ; (* in mmH2O *)
i_BottleSize : REAL ;
END_VAR
VAR
a : REAL ;
b : REAL ;
c : REAL ;
d : REAL ;
mFillingSpeed : REAL ; (* in mL/sec *)
END_VAR
(* @END_DECLARATION := '0' *)
a := 1.2522E-7 ;
b := -3.8E-4 ;
c := 4.4505E-1 ;
d := 0.0 ;
mFillingSpeed := a * EXPT(i_FillingValveHead, 3) + b * EXPT(i_FillingValveHead, 2) + c * i_FillingValveHead +d ;
IF mFillingSpeed<>0 THEN
FillingTime := i_BottleSize / (mFillingSpeed/1000) ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,971 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Procedure' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM FirstProduction
VAR
mFirstProdONS : R_TRIG ;
mFirstProdTP : TP ;
mFirstProdTP1 : TP ;
mAuxONS : R_TRIG ;
mAuxTP : TP ;
mTimeDone : TON ;
mSwitchLevel : REAL ;
mSyrupCount : REAL ;
mSyrupCountInit : REAL ;
mFirstProdSR : SR ;
mFirstProdCountDone : BOOL ;
mInitialSyrupOk : BOOL ;
mDelaySyrOk : TON ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 17
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderProdMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_NEGATIV
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderSuppliesOk
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Qualifier
_NETWORK
_COMMENT
Exceptionally the Request Bit is Latched in order TO save it FOR the next Production switching.
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 4
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_OR
_LD_OPERATOR : 3
_LD_CONTACT
gFirstProd_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gProdPipeRunOut_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 5
_LD_CONTACT
gH_CMD_FirstProduction
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Latch
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFirstProdTP
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
TP
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_POSITIV
_LD_CONTACT
gFastRinse_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderAlarm
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFirstProdTP1
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
TP
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Request
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 3
_LD_CONTACT
gFirstProd_Qualifier
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRinse_DoneONS
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gFastChangeOverActivated
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFirstProd_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mFirstProdONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
R_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Reset
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFirstProd_Reset
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FirstProduction.Reset
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
Waits UNTIL Production is Selected
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 5
_LD_CONTACT
gBlenderProdMode
_EXPRESSION
_NEGATIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderProdMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gAirLowPress_Fault
_EXPRESSION
_POSITIV
_LD_CONTACT
gCO2LowPress_Fault
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Wait
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Running
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mFirstProdSR
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
gFirstProd_Done
_EXPRESSION
_POSITIV
SR
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProdLatched
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Running
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gFirstProdStop
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProdStop
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderLevelTarget
_EXPRESSION
_NEGATIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gH_Blender_OPT_Simulation
_EXPRESSION
_NEGATIV
_LD_CONTACT
gWorkshopTest
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_NEGATIV
_SET
gFirstProdStop
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gSyrLineMFMPrep_Done
_EXPRESSION
_POSITIV
_LD_CONTACT
gPV_SyrDensOk
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProdLatched
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gH_SyrupTotalizerLt
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mSyrupCountInit
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
During Fisrt Production the SyrupRunOutLiters Parameters is multiplied BY 1.3 (30% more syrup) AND used
TO state when all the Low Brix Syrup is ran Out.
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gPV_SyrDensOk
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProdLatched
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gSyrupTotal
_OPERAND
_EXPRESSION
_POSITIV
gActualSyrupDens
_EXPRESSION
_POSITIV
DIV
_OPERAND
_EXPRESSION
_POSITIV
mSyrupCountInit
_EXPRESSION
_POSITIV
SUB
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gH_ProcessSetup_SyrupRunOutLiters
_OPERAND
_EXPRESSION
_POSITIV
1.0
_EXPRESSION
_POSITIV
MUL
_EXPRESSION
_POSITIV
GT
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mFirstProdCountDone
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Request
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Latch
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Reset
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 3
_OUTPUT
_POSITIV
_NO_SET
gH_FirstProdRun
_OUTPUT
_POSITIV
_NO_SET
gH_Status006
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Latch
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Latch
_EXPRESSION
_POSITIV
_LD_CONTACT
gFirstProd_Wait
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Running
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Running
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxTP
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
TP
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
???
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FirstProduction.ResetTotalizers
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mDummy
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gAlwaysOff
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_FUNCTIONBLOCK
_FBD_PROGRAM
_BOX_EXPR : 0
_ENABLED
_EXPRESSION
_POSITIV
FirstProduction.SwitchLevel
_OUTPUTS : 0
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTIONBLOCK
mDelaySyrOk
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERATOR
_BOX_EXPR : 1
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gActualRecipe_Syrup_Brix
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gMeterSyrBrix
_OPERAND
_EXPRESSION
_POSITIV
gActualRecipe_Syrup_Brix_Fact
_EXPRESSION
_POSITIV
MUL
_EXPRESSION
_POSITIV
SUB
_EXPRESSION
_POSITIV
ABS
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gActualRecipe_SP_MaxDeltaBrix
_OPERAND
_EXPRESSION
_POSITIV
0.8
_EXPRESSION
_POSITIV
MUL
_EXPRESSION
_POSITIV
LT
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mInitialSyrupOk
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
First production stops when product tank level gets MAX Lvel (80%) OR when the Syrup Brix Error is minimum.
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Latch
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderStopLevel
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gBlenderLevelTarget
_EXPRESSION
_POSITIV
_LD_CONTACT
mInitialSyrupOk
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gSyrupRoomEn
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mTimeDone
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#10s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gFirstProd_Reset
_EXPRESSION
_NEGATIV
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gFirstProd_Done
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gFirstProd_Done
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gH_FirstProductionDone
END_PROGRAM
ACTION Reset:
mFirstProdCountDone := FALSE ;
gFirstProdLatched := FALSE ;
gFirstProd_Done := FALSE ;
END_ACTION
ACTION ResetTotalizers:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 4
_OUTPUT
_POSITIV
_NO_SET
gWaterVFMResetTot
_OUTPUT
_POSITIV
_NO_SET
gSyrupMFMResetTot
_OUTPUT
_POSITIV
_NO_SET
gCO2MFMResetTot
_OUTPUT
_POSITIV
_NO_SET
gProductMFMResetTot
END_ACTION
ACTION SwitchLevel:
IF gActualRecipe_SP_Tank_Press>0 THEN
mSwitchLevel :=(1 - gCO2EqPressure / gActualRecipe_SP_Tank_Press) * 100 ;
END_IF
END_ACTION

View File

@ -0,0 +1,28 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION Flow_To_Press_Loss : REAL
VAR_INPUT
i_Flow : REAL ; (* Product Flow in l/min *)
i_K_Loss : REAL ; (* Pressure Loss Constant: pump + pipe + filler collector *)
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
(* Pressure Loss along Pipe in mmH2O
Head [ mmH2O] = i_Flow ^ 2 i_K_Loss
SAE131==> i_K_Loss = 9.420000e-003
*)
(******* Pompa INOXPA Modello ______ Motore 4 Poli 1450 RPM ********* *)
(*KP_Carico :=0.158;*)
Flow_To_Press_Loss := EXPT(i_Flow, 2) * i_K_Loss ;
END_FUNCTION

View File

@ -0,0 +1,14 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION Freq_To_mmH2O : REAL
VAR_INPUT
i_Freq : REAL ;
i_K_freq : REAL ;
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
Freq_To_mmH2O := EXPT(i_Freq, 2) * i_K_freq ;
END_FUNCTION

View File

@ -0,0 +1,16 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION FrictionLoss : REAL (* Return the Friction Losses for a concetrate cause *)
VAR_INPUT
i_Flow : REAL ;
i_K : REAL ;
i_Dens : REAL ;
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
(*FrictionLoss := EXPT(i_Flow * i_K*i_Dens, 2) ;*)
FrictionLoss := (i_Flow * i_K * i_Flow * i_K )* i_Dens ;
END_FUNCTION

View File

@ -0,0 +1,350 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM GetProdBrixCO2_FromAnalogInput
VAR
mEnabled : BOOL ;
mProdBrix : Peripherial ;
mProdCO2 : Peripherial ;
mProdTemp : Peripherial ;
mError : BOOL ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 6
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gH_Blender_OPT_BrixMeter
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gH_Blender_OPT_MeterType
_OPERAND
_EXPRESSION
_POSITIV
3
_EXPRESSION
_POSITIV
EQ
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mEnabled
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTION
_BOX_EXPR : 5
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
AI_ProductBrix
_OPERAND
_EXPRESSION
_POSITIV
20.0
_OPERAND
_EXPRESSION
_POSITIV
-0.04
_OPERAND
_EXPRESSION
_POSITIV
0
_OPERAND
_EXPRESSION
_POSITIV
gAnalogMaxValue
_EXPRESSION
_POSITIV
ReadAnalogIn
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProdBrix
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTION
_BOX_EXPR : 5
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
AI_ProductCO2
_OPERAND
_EXPRESSION
_POSITIV
10.0
_OPERAND
_EXPRESSION
_POSITIV
-0.02
_OPERAND
_EXPRESSION
_POSITIV
0
_OPERAND
_EXPRESSION
_POSITIV
gAnalogMaxValue
_EXPRESSION
_POSITIV
ReadAnalogIn
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProdCO2
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_FUNCTION
_BOX_EXPR : 5
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
AI_PoductTemp
_OPERAND
_EXPRESSION
_POSITIV
100.0
_OPERAND
_EXPRESSION
_POSITIV
0.0
_OPERAND
_EXPRESSION
_POSITIV
0
_OPERAND
_EXPRESSION
_POSITIV
gAnalogMaxValue
_EXPRESSION
_POSITIV
ReadAnalogIn
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProdTemp
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
mEnabled
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 3
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProdBrix.Error
_OPERAND
_EXPRESSION
_POSITIV
mProdBrix.Value
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductBrix
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProdCO2.Error
_OPERAND
_EXPRESSION
_POSITIV
mProdCO2.Value
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductCO2
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProdTemp.Error
_OPERAND
_EXPRESSION
_POSITIV
mProdTemp.Value
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
SEL
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductTemp
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mEnabled
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
mProdBrix.Value
_OPERAND
_EXPRESSION
_POSITIV
8
_EXPRESSION
_POSITIV
GT
_OPERAND
_EXPRESSION
_NEGATIV
mProdBrix.Error
_EXPRESSION
_POSITIV
AND
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gProductMeterOk
ENABLELIST_END
_OUTPUTS : 0
END_PROGRAM

View File

@ -0,0 +1,133 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM GetProdO2_FromAnalogInput
VAR
mProdO2 : Peripherial ;
mProdO2Flted : LowPassFilter ;
mInError : BOOL ;
mDummy : BOOL ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 2
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gH_Blender_OPT_Simulation
_EXPRESSION
_NEGATIV
_EXPRESSION
_POSITIV
ENABLELIST : 2
_ASSIGN
_FUNCTION
_BOX_EXPR : 5
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
AI_ProductO2
_OPERAND
_EXPRESSION
_POSITIV
12.0
_OPERAND
_EXPRESSION
_POSITIV
0
_OPERAND
_EXPRESSION
_POSITIV
0
_OPERAND
_EXPRESSION
_POSITIV
gAnalogMaxValue
_EXPRESSION
_POSITIV
ReadAnalogIn
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mProdO2
_ASSIGN
_FUNCTIONBLOCK
mProdO2Flted
_BOX_EXPR : 3
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProdO2.Value
_OPERAND
_EXPRESSION
_POSITIV
5
_OPERAND
_EXPRESSION
_POSITIV
TRUE
_EXPRESSION
_POSITIV
LowPassFilter
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductO2Conc
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_EMPTY
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
mProdO2.Error
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mInError
ENABLELIST_END
_OUTPUTS : 0
END_PROGRAM

View File

@ -0,0 +1,99 @@
(* @GLOBAL_VARIABLE_LIST := Global_Alarms *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(****************************************************************************************************************************)
(* FAULT ALARM *)
(****************************************************************************************************************************)
gWaterPump_P1_Fault : BOOL ;
gWaterPump_P5_Fault : BOOL ;
gSyrupPump_P2_Fault : BOOL ;
gProductPump_P3_Fault : BOOL ;
gVacuumPump_P4_Fault : BOOL ;
gRinseTankPump_P5_Fault : BOOL ;
gRecircPump_P6_Fault : BOOL ;
gWaterVFM_EPD : BOOL ; (* Water Flowmeter Empty *)
gSyrupMFM_EPD : BOOL ; (* Syrup Flowmeter Empty *)
gCO2MFM_EPD : BOOL ; (* CO2 Flowmeter Empty *)
gProductVFM_EPD : BOOL ; (* Water Flowmeter Empty *)
gWaterVFM_Fault : BOOL ; (* Water Flowmeter Fault *)
gSyrupMFM_Fault : BOOL ; (* Syrup Flowmeter Fault *)
gCO2MFM_Fault : BOOL ; (* CO2 Flowmeter Fault *)
gProductVFM_Fault : BOOL ; (* Water Flowmeter Fault *)
gWaterValvePos_Fault : BOOL ; (* Water Modulating Valve Position Fault *)
gSyrupValvePos_Fault : BOOL ; (* Syrup Modulating Valve Position Fault *)
gCarboCO2ValvePos_Fault : BOOL ; (* CO2 Modulating Valve Position Fault *)
gProdTankPressure_Fault : BOOL ; (* Product Tank Pressurization TimeOut Fault *)
gVacuumTimeOut_Fault : BOOL ; (* Vacuum TimeOut Fault *)
gNotARecipe_Fault : BOOL ; (* Invalid Recipe Type Selection *)
gWaterFlowTooLow : BOOL ; (* Water Flow Too Low *)
gWaterSpeedTooLow : BOOL ; (* Water Speed in Serpentine Critical < 1m/s *)
gBlendErrorHighSyr_Fault : BOOL ;
gBlendErrorLowSyr_Fault : BOOL ;
gCarboCO2Error_HighCO2_Fault : BOOL ;
gCarboCO2Error_LowCO2_Fault : BOOL ;
gProductBrixTooHigh : BOOL ;
gProductBrixTooLow : BOOL ;
gProductCO2TooHigh : BOOL ;
gProductCO2TooLow : BOOL ;
gProductCondTooHigh : BOOL ;
gProductCondTooLow : BOOL ;
gDensimeterCalError : BOOL ;
gCIPTransferProgTimeOut_Fault : BOOL ;
gmPDS1000_Error_Fault : BOOL ;
gmPDS1000_NoOscillation : BOOL ;
gmPDS2000_Error_Fault : BOOL ;
gMaselli_Error_Fault : BOOL ;
gMaselliUC05_Error_Fault : BOOL ;
gMaselliUC05_Communication_Fault : BOOL ;
gMaselliUR22_Error_Fault : BOOL ;
gMaselliUR22_Communication_Fault : BOOL ;
gCIPRecircFlowMissing_Fault : BOOL ;
gCIPCommFault : BOOL ;
gFillerCommFault : BOOL ;
gFlrCO2ValveEV46Pos_Fault : BOOL ;
gProdValveEV62Pos_Fault : BOOL ;
gWaterInletValveEV73Pos_Fault : BOOL ;
gCIPInletValveEV74Pos_Fault : BOOL ;
gDiffSensor_Analog_Fault : BOOL ;
gProdTankPressureValveFault : BOOL ;
gDeaireationValveFault : BOOL ;
gSyrTankHighLvl_Fault : BOOL ;
(****************************************************************************************************************************)
(* SUPPLIES ALARM *)
(****************************************************************************************************************************)
gAirLowPress_Fault : BOOL ;
gCO2LowPress_Fault : BOOL ;
gDeairTankLowLvl_Fault : BOOL ;
gSyrTankLowLvl_Fault : BOOL ;
gSyrRoomPump_Fault : BOOL ;
gSyrBrixOutSpec_Fault : BOOL ; (* Syrup Brix Out Of Specification *)
gSyrupDensityOutSpec_Fault : BOOL ; (* Syrup Density Out Of Specification *)
gWaterTempTooHigh : BOOL ;
gProdTempTooHigh : BOOL ;
gSyrRoomWaterPump_Fault : BOOL ;
gAmmoniaCompressor_Fault : BOOL;
gInjectionPressAI_Fault : BOOL;
(****************************************************************************************************************************)
(* EXTERNAL ALARM *)
(****************************************************************************************************************************)
(**********************************************************************************************************************)
(* OPERATOR ALARMS *)
(**********************************************************************************************************************)
gManualSyrupDrainValve : BOOL ;
gManualWaterDrainValve : BOOL ;
gSyrupLineNotSelected : BOOL ;
END_VAR
(* @OBJECT_END := Global_Alarms *)
(* @CONNECTIONS := Global_Alarms
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,354 @@
(* @GLOBAL_VARIABLE_LIST := Global_Variables_IN_OUT *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************)
(* DIGITAL INPUT *)
(*************************************************************************)
DI_AuxVoltage_On AT %IX0.0 : BOOL; (* N10_I00_154U12 *)
DI_Reset_Horn_Btn AT %IX0.1 : BOOL; (* N10_I01_154U12 *)
DI_Filler_Emergency (* AT %IX0.1 *) : BOOL;
DI_Reset_Btn AT %IX0.2 : BOOL; (* N10_I02_154U12 *)
DI_Blender_Stop_Btn AT %IX0.3 : BOOL; (* N10_I03_154U12 *)
DI_Blender_Start_Btn AT %IX0.4 : BOOL; (* N10_I04_154U12 *)
DI_PowerSuppliesOk AT %IX0.5 : BOOL; (* N10_I05_154U12 *)
DI_Min_Deair_Level AT %IX0.6 : BOOL; (* N10_I06_154U12 *)
DI_Min_Syrup_Level (* AT %IX0.7 *) : BOOL; (* N10_I07_154U12 *)
DI_LinkByte0 AT %IB0 : BYTE ;
DI_ProdTankEmpty AT %IX1.0 : BOOL; (* N10_I30_154U12 *)
DI_Max_Temperature_Alarm (* AT %IX1.0 *) : BOOL ;
DI_DeairVacuumOk (* AT %IX1.1 *) : BOOL; (* N10_I10_154U12 *)
DI_Min_Deair2_Level (* AT %IX1.2 *) : BOOL; (* N10_I06_154U12 *)
DI_Water_Pump2_Ovrld (* AT %IX1.3 *) : BOOL; (* N10_I20_154U12 *)
DI_Water_Pump2_Contactor (* AT %IX1.4 *) : BOOL; (* N10_I20_154U12 *)
DI_FillerRinseTankMaxLevel (* AT %IX1.0 *) : BOOL; (* N10_I10_154U12 *)
DI_FillerRinseTankMinLevel (* AT %IX1.1 *) : BOOL; (* N10_I10_154U12 *)
DI_FillerRinseTank_Pump_Ovrld (* AT %IX1.3 *) : BOOL; (* N10_I10_154U12 *)
DI_FillerRinseTank_Pump_Contactor (* AT %IX1.4 *) : BOOL; (* N10_I10_154U12 *)
DI_Water_Pump_SoftStart_Ovrld AT %IX1.3 : BOOL; (* N10_I20_154U12 *)
DI_Emergency_Pressed (* AT %IX1.3 *) : BOOL;
DI_Aux_Protection (* AT %IX1.4 *) : BOOL;
DI_BatteryNotReady AT %IX1.4 : BOOL ;
DI_VM1_Water_Valve_Closed AT %IX1.5 : BOOL; (* N10_I13_154U12 *)
DI_VM2_Syrup_Valve_Closed AT %IX1.6 : BOOL; (* N10_I16_154U12 *)
DI_VM3_CO2_Valve_Closed AT %IX1.7 : BOOL; (* N10_I17_154U12 *)
DI_LinkByte1 AT %IB1 : BYTE ;
DI_Water_Pump_Ovrld AT %IX2.0 : BOOL; (* N10_I20_154U12 *)
DI_Water_Pump_Contactor AT %IX2.1 : BOOL; (* N10_I20_154U12 *)
DI_Syrup_Pump_Ovrld AT %IX2.2 : BOOL; (* N10_I20_154U12 *)
DI_Syrup_Pump_Contactor AT %IX2.3 : BOOL; (* N10_I20_154U12 *)
DI_Product_Pump_Ovrld AT %IX2.4 : BOOL; (* N10_I20_154U12 *)
DI_Product_Pump_Contactor AT %IX2.5 : BOOL; (* N10_I20_154U12 *)
DI_Product_Pump_VFC_Ready (* AT %IX2.6 *) : BOOL; (* N10_I20_154U12 *)
DI_LinkByte2 AT %IB2 : BYTE ;
DI_CIP_Sensor_1 (* AT %IX3.0 *) : BOOL; (* N10_I30_154U12 *)
DI_CIP_Sensor_2 (* AT %IX3.1 *) : BOOL; (* N10_I30_154U12 *)
DI_WaterPipeCIP_Sensor (* AT %IX3.2 *) : BOOL; (* N10_I30_154U12 *)
DI_Prod_Sensor_1 (* AT %IX3.3 *) : BOOL; (* N10_I30_154U12 *)
DI_Prod_Sensor_2 (* AT %IX3.4 *) : BOOL; (* N10_I30_154U12 *)
DI_EV62_ProductOutlet_Open (* AT %IX3.0 *) : BOOL;
DI_EV62_ProductOutlet_Close (* AT %IX3.1 *) : BOOL;
DI_EV46_FillerCO2Valve_Open (* AT %IX3.2 *) : BOOL;
DI_EV46_FillerCO2Valve_Close (* AT %IX3.3 *) : BOOL;
DI_Recycle_Pump_Ovrld (* AT %IX3.4 *) : BOOL; (* N10_I30_154U12 *)
DI_Recycle_Pump_Contactor (* AT %IX3.5 *) : BOOL; (* N10_I30_154U12 *)
DI_Vacuum_Pump_Ovrld (* AT %IX2.6 *) : BOOL; (* N10_I20_154U12 *)
DI_Vacuum_Pump_Contactor (* AT %IX2.7 *) : BOOL; (* N10_I20_154U12 *)
DI_LinkByte3 AT %IB3 : BYTE ;
DI_Flr_FastRinseReady (* AT %IX5.5 *) : BOOL; (* N10_I90_154U32 *)
DI_Flr_OpenProductDrainEV69 (* AT %IX5.6 *) : BOOL; (* N10_I91_154U32 *)
DI_Flr_FastChangeWaterRequest (* AT %IX6.0 *) : BOOL; (* N10_I93_154U32 *)
DI_Flr_Spare36 (* AT %IX4.3 *) : BOOL; (* N10_I43_154U22 *)
DI_Flr_Spare37 (* AT %IX4.4 *) : BOOL; (* N10_I44_154U22 *)
DI_SyrRoom_WaterPump_Ready (* AT %IX4.5 *) : BOOL := TRUE; (* N10_I45_154U22 *)
DI_SyrRoom_SelectLine1 (* AT %IX4.6 *) : BOOL; (* N10_I46_154U22 *)
DI_SyrRoom_SelectLine2 (* AT %IX4.7 *) : BOOL; (* N10_I47_154U22 *)
DI_EV74_CIPInlet_Open (* AT %IX4.4 *) : BOOL;
DI_EV74_CIPInlet_Close (* AT %IX4.5 *) : BOOL;
DI_EV73_WaterInlet_Open (* AT %IX4.6 *) : BOOL;
DI_EV73_WaterInlet_Close (* AT %IX4.7 *) : BOOL;
DI_LinkByte4 AT %IB4 : BYTE ;
DI_UV_Lamp_Ready (* AT %IX5.2 *) : BOOL;
DI_UV_Lamp_TempHigh (* AT %IX5.3 *) : BOOL;
DI_SyrRoom_Pump_Ready AT %IX5.0 : BOOL; (* N10_I50_154U22 *)
DI_Ammonia_CompressorReady (* AT %IX5.4 *) : BOOL := TRUE; (* N10_I50_154U22 *)
DI_Flr_Product_Request (* AT %IX5.1 *) : BOOL; (* N10_I51_154U22 *)
DI_Flr_Ready_to_Production (* AT %IX5.2 *) : BOOL; (* N10_I52_154U22 *)
DI_Flr_Ready_to_CIP (* AT %IX5.3 *) : BOOL; (* N10_I53_154U22 *)
DI_Flr_Start_ReturnPump (* AT %IX5.4 *) : BOOL; (* N10_I53_154U22 *)
DI_Flr_CIP_RinseDrainCompleted (* AT %IX5.4 *) : BOOL; (* N10_I54_154U22 *)
DI_AmmoniaHighLevel_Water (* AT %IX6.4 *) : BOOL; (* N10_I50_154U22 *)
DI_Flr_FastChangeLastContainerFilled (* AT %IX6.1 *) : BOOL; (* N10_I94_154U32 *)
DI_AmmoniaHighLevel_Product (* AT %IX6.5 *) : BOOL; (* N10_I50_154U22 *)
DI_Flr_CIP_RinseCycleEnded (* AT %IX5.7 *) : BOOL; (* N10_I53_154U22 *)
DI_AmmoniaLowPressure_Water (* AT %IX6.6 *) : BOOL; (* N10_I50_154U22 *)
DI_Flr_CIP_ChangeReady (* AT %IX5.7 *) : BOOL; (* N10_I53_154U22 *)
DI_AmmoniaLowPressure_Product (* AT %IX6.7 *) : BOOL; (* N10_I50_154U22 *)
DI_LinkByte5 AT %IB5 : BYTE ;
DI_CIP_DrainRequest AT %IX6.2 : BOOL; (* N10_I60_154U22 *)
DI_CIP_TankFilling (* AT %IX6.1 *) : BOOL; (* N10_I60_154U22 *)
DI_CIP_RinseMode AT %IX6.1 : BOOL; (* N10_I60_154U22 *)
DI_CIP_CIPFault (* AT %IX5.7 *) : BOOL; (* N10_I60_154U22 *)
DI_CIP_Running (* AT %IX6.1 *) : BOOL; (* N10_I60_154U22 *)
DI_CIP_ChangeSanitize (* AT %IX6.2 *) : BOOL; (* N10_I64_154U22 *)
DI_CIP_CIPCompleted AT %IX6.3 : BOOL; (* N10_I65_154U22 *)
DI_CIP_CIPMode AT %IX6.0 : BOOL; (* N10_I66_154U22 *)
DI_CIP_CausticSanitizeRunning (* AT %IX6.5 *) : BOOL; (* N10_I60_154U22 *)
DI_LinkByte6 AT %IB6 : BYTE ;
DI_CO2_InletPress_OK (* AT %IX7.0 *) : BOOL := TRUE ; (* N10_I70_154U22 *)
DI_Air_InletPress_OK AT %IX7.1 : BOOL; (* N10_I70_154U22 *)
DI_Syrup_Line_Drain_Sensor AT %IX7.2 : BOOL; (* N10_I70_154U22 *)
DI_CIP_ReturnFlowOk (* AT %IX7.3 *) : BOOL; (* N10_I70_154U22 *)
DI_O2TransdClean (* AT %IX7.4 *) : BOOL; (* N10_I70_154U22 *)
DI_Water_Manual_Valve_Open (* AT %IX7.5 *) : BOOL := TRUE ; (* N10_I70_154U22 *)
DI_LinkByte7 AT %IB7 : BYTE ;
DI_PowerCoupler1Power (* AT %IX300.0 *) : BOOL; (* N10_I500_154U10/1 *)
DI_PowerCoupler1Short (* AT %IX300.1 *) : BOOL; (* N10_I501_154U10/1 *)
DI_PowerCoupler2Power (* AT %IX300.2 *) : BOOL; (* N10_I502_154U10/1 *)
DI_PowerCoupler2Short (* AT %IX300.3 *) : BOOL; (* N10_I503_154U10/1 *)
(*************************************************************************)
(* DIGITAL OUTPUT *)
(*************************************************************************)
DO_UVLamp_Enable (* AT %QX0.1 *) : BOOL;
DO_SyrupInletValve_Enable AT %QX0.0 : BOOL; (* N10_O03_154U32 *)
DO_RecyclePumpRun (* AT %QX6.7 *) : BOOL; (* N10_O01_154U32 *)
DO_Vacuum_Pump_Run (* AT %QX3.7 *) : BOOL; (* N10_O77_154U42 *)
DO_Water_Pump2_Run (* AT %QX0.1 *) : BOOL; (* N10_O01_154U32 *)
DO_RecorderON (* AT %QX1.7 *) : BOOL; (* N10_O02_154U32 *)
DO_HoldBrixMeter AT %QX0.3 : BOOL; (* N10_O03_154U32 *)
DO_BrixMeterON (* AT %QX0.4 *) : BOOL; (* N10_O03_154U32 *)
DO_HoldO2Meter (* AT %QX0.2 *) : BOOL; (* N10_O03_154U32 *)
DO_EV03_Syrup_Lvl_Ctrl_Valve (* AT %QX19.6 *) : BOOL; (* N10_O05_154U32 *)
DO_EV04_Syrup_FillUp_Valve (* AT %QX19.7 *) : BOOL; (* N10_O04_154U32 *)
DO_LinkByte0 AT %QB0 : BYTE ;
DO_SyrupRoomPump_Run AT %QX1.0 : BOOL; (* N10_O10_154U32 *)
DO_SyrupRoomWaterReq AT %QX1.1 : BOOL; (* N10_O12_154U32 *)
DO_CIP_CIPRequest AT %QX2.0 : BOOL; (* N10_O13_154U32 *)
DO_CIP_DrainCompleted AT %QX2.1 : BOOL ;
DO_CIP_CycleEnded (* AT %QX2.1 *) : BOOL ;
DO_CIP_ChangeReady (* AT %QX2.2 *) : BOOL; (* N10_O13_154U32 *)
DO_CIP_WaterPipe_Ready (* AT %QX1.6 *) : BOOL ;
DO_AmmoniaWaterColdRequest (* AT %QX1.4 *) : BOOL; (* N10_O150_154U34 *)
DO_AmmoniaProductColdRequest (* AT %QX1.5 *) : BOOL; (* N10_O151_154U34 *)
DO_AmmoniaWaterColdControl (* AT %QX1.6 *) : BOOL; (* N10_O142_154U32 *)
DO_AmmoniaProductColdControl (* AT %QX1.7 *) : BOOL; (* N10_O143_154U32 *)
DO_Ammonia_ByPassHotGas (* AT %QX1.5 *) : BOOL; (* N10_O151_154U34 *)
DO_Ammonia_CompressorRun (* AT %QX1.6 *) : BOOL; (* N10_O151_154U34 *)
DO_UV_Lamp_ONOFF (* AT %QX1.6 *) : BOOL;
DO_LinkByte1 AT %QB1 : BYTE ;
DO_Flr_ProductionMode (* AT %QX4.0 *) : BOOL; (* N10_O12_154U32 *)
DO_Flr_ProductAvailable (* AT %QX4.1 *) : BOOL; (* N10_O13_154U32 *)
DO_Flr_CIP_Mode (* AT %QX4.2 *) : BOOL; (* N10_O14_154U32 *)
DO_Flr_CIP_StartReturnPump (* AT %QX2.3 *) : BOOL; (* N10_O14_154U32 *)
DO_Flr_CIP_Run (* AT %QX1.3 *) : BOOL; (* N10_O14_154U32 *)
DO_Flr_CIP_Cmpltd (* AT %QX4.5 *) : BOOL; (* N10_O17_154U32 *)
DO_Flr_CIP_Drain (* AT %QX4.4 *) : BOOL; (* N10_O15_154U32 *)
DO_Flr_RinseReq (* AT %QX4.3 *) : BOOL; (* N10_O14_154U32 *)
DO_Flr_FillerRunOutRequest (* AT %QX5.2 *) : BOOL; (* N10_O217_154U47 *)
DO_LinkByte2 AT %QB2 : BYTE;
DO_ToBrixMeter_CIP (* AT %QX3.0 *) : BOOL; (* N10_O30_154U32 *)
DO_Flr_ProductCompleted (* AT %QX5.1 *) : BOOL; (* N10_O216_154U47 *)
DO_Flr_ChangeSanitize (* AT %QX3.1 *) : BOOL; (* N10_O216_154U47 *)
DO_Flr_FastRinseRequest (* AT %QX4.7 *) : BOOL; (* N10_O214_154U47 *)
DO_Flr_WaterRinseReady (* AT %QX5.0 *) : BOOL; (* N10_O215_154U47 *)
DO_Flr_BottleStop (* AT %QX4.6 *) : BOOL; (* N10_O20_154U32 *)
DO_LinkByte3 AT %QB3 : BYTE;
DO_LinkByte4 AT %QB4 : BYTE ;
DO_LinkByte5 AT %QB5 : BYTE ;
DO_EV31_CIPVenturi_Valve (* AT %QX17.7 *) : BOOL; (* N10_O200_154U42 *)
DO_EV32_CIPWashVenturi_Valve (* AT %QX18.0 *) : BOOL; (* N10_O201_154U42 *)
DO_EV33_CIPCaustic_Valve (* AT %QX18.1 *) : BOOL; (* N10_O202_154U42 *)
DO_EV34_CIPAcid_Valve (* AT %QX18.2 *) : BOOL; (* N10_O200_154U42 *)
DO_EV35_CIPDet_Valve (* AT %QX18.3 *) : BOOL; (* N10_O201_154U42 *)
DO_EV36_CIPRecirc_Valve (* AT %QX18.4 *) : BOOL; (* N10_O202_154U42 *)
DO_EV37_CIPDrain_Valve (* AT %QX18.5 *) : BOOL; (* N10_O203_154U42 *)
DO_EV38_CIPHeater_Valve (* AT %QX6.7 *) : BOOL; (* N10_O204_154U42 *)
DO_LinkByte6 AT %QB6 : BYTE ;
DO_EV39_FlatWaterByPass_Valve (* AT %QX8.4 *) : BOOL; (* N10_O204_154U42 *)
DO_EV40_FlatWaterByPass_Valve (* AT %QX8.5 *) : BOOL; (* N10_O204_154U42 *)
DO_EV44_ProductPipeDrain2 (* AT %QX5.3 *) : BOOL; (* N10_O203_154U42 *)
DO_EV45_ProductChillerDrain AT %QX17.7 : BOOL; (* N10_O204_154U42 *)
DO_Horn AT %QX3.0 : BOOL; (* N10_O70_154U42 *)
DO_Blender_Run_Lamp AT %QX3.1 : BOOL; (* N10_O71_154U42 *)
DO_Alarm_Lamp AT %QX3.2 : BOOL; (* N10_O72_154U42 *)
DO_RotorAlarm_Lamp AT %QX3.3 : BOOL; (* N10_O73_154U42 *)
DO_Water_Pump_Run AT %QX3.4 : BOOL; (* N10_O74_154U42 *)
DO_Syrup_Pump_Run AT %QX3.5 : BOOL; (* N10_O75_154U42 *)
DO_Product_Pump_Run AT %QX3.6 : BOOL; (* N10_O76_154U42 *)
DO_Product_Pump_VFC_Run (* AT %QX7.7*) : BOOL; (* N10_O77_154U42 *)
DO_LinkByte7 AT %QB7 : BYTE ;
DO_FillerRinsePump (* AT %QX7.0 *) : BOOL; (* N10_O143_154U46 *)
DO_EV48_Deair_Inlet_Valve (* AT %QX8.0 *) : BOOL;
DO_EV49_Deair_Bypass_Valve (* AT %QX8.1 *) : BOOL;
DO_EV50_Deair_Bypass_Valve (* AT %QX8.2 *) : BOOL;
DO_FillerNextRecipe_0 (* AT %QX2.0 *) : BOOL; (* N10_O225_154U47/2 *)
DO_FillerNextRecipe_1 (* AT %QX2.1 *) : BOOL; (* N10_O226_154U47/2 *)
DO_FillerNextRecipe_2 (* AT %QX2.2 *) : BOOL; (* N10_O227_154U47/2 *)
DO_FillerNextRecipe_3 (* AT %QX2.3 *) : BOOL; (* N10_O228_154U47/2 *)
DO_FillerNextRecipe_4 (* AT %QX2.4 *) : BOOL; (* N10_O230_154U47/3 *)
DO_FillerNextRecipe_5 (* AT %QX2.5 *) : BOOL; (* N10_O231_154U47/3 *)
DO_FillerNextRecipe_6 (* AT %QX2.6 *) : BOOL; (* N10_O232_154U47/3 *)
DO_FillerNextRecipe_7 (* AT %QX2.7 *) : BOOL; (* N10_O233_154U47/3 *)
DO_LinkByte8 AT %QB8 : BYTE ;
DO_EV51_ByPassPolpe (* AT %QX9.1 *) : BOOL; (* N10_O150_154U36 *)
DO_EV52_ByPassPolpe (* AT %QX9.0 *) : BOOL; (* N10_O150_154U36 *)
DO_EV63_SyrupLineInletWater (* AT %QX9.4 *) : BOOL; (* N10_O190_154U30 *)
DO_EV64_SyrupLineInletSyrup1 (* AT %QX9.5 *) : BOOL; (* N10_O190_154U30 *)
DO_EV65_SyrupLineInletSyrup2 (* AT %QX9.6 *) : BOOL; (* N10_O190_154U30 *)
DO_EV66_FillerRinseWater (* AT %QX9.7 *) : BOOL; (* N10_O152_154U36 *)
DO_LinkByte9 AT %QB9 : BYTE ;
DO_HoldSyrupMeter (* AT %QX10.0 *) : BOOL; (* N10_O170_154U38 *)
DO_EV67_SyrupLineDrain (* AT %QX10.0 *) : BOOL; (* N10_O153_154U36 *)
DO_EV68_FillerRinseTankInletWater (* AT %QX2.4 *) : BOOL; (* N10_O154_154U37 *)
DO_EV71_Filler_ProductPipeDrain (* AT %QX10.2 *) : BOOL; (* N10_O156_154U37 *)
DO_EV71_FillerRinseTankSprayBall (* AT %QX2.6 *) : BOOL; (* N10_O156_154U37 *)
DO_EV72_FillerRinseTankDrain (* AT %QX2.7 *) : BOOL; (* N10_O157_154U37 *)
DO_LinkByte10 AT %QB10 : BYTE ;
DO_Yellow_Lamp (* AT %QX6.2 *) : BOOL; (* N10_O140_154U32 *)
DO_Green_Lamp (* AT %QX6.3 *) : BOOL; (* N10_O141_154U32 *)
DO_Red_Lamp (* AT %QX6.1 *) : BOOL; (* N10_O142_154U32 *)
DO_Blu_Lamp (* AT %QX6.4 *) : BOOL; (* N10_O142_154U32 *)
DO_White_Lamp (* AT %QX6.5 *) : BOOL; (* N10_O142_154U32 *)
DO_Thermic_Protection (* AT %QX6.6 *) : BOOL; (* N10_O142_154U32 *)
DO_EV02_Deair2_FillUp_Valve (* AT %QX11.4 *) : BOOL; (* N10_O06_154U32 *)
DO_EV01_Deair2_Lvl_Ctrl_Valve (* AT %QX11.5 *) : BOOL; (* N10_O07_154U32 *)
DO_LinkByte11 AT %QB11 : BYTE ;
DO_EV01_Deair_Lvl_Ctrl_Valve AT %QX19.0 : BOOL; (* N10_O07_154U32 *)
DO_EV02_Deair_FillUp_Valve AT %QX19.1 : BOOL; (* N10_O06_154U32 *)
DO_EV11_BlowOff_Valve AT %QX16.0 : BOOL; (* N10_O180_154U38 *)
DO_EV12_Deair_Reflux_Valve (* AT %QX16.1 *) : BOOL; (* N10_O181_154U38 *)
DO_EV13_Prod_Recirc_Valve AT %QX16.1 : BOOL; (* N10_O182_154U38 *)
DO_EV14_DeairDrain_Valve AT %QX16.2 : BOOL; (* N10_O183_154U38 *)
DO_EV14_P1_DeairDrain_Valve (* AT %QX4.4 *) : BOOL; (* N10_O183_154U38 *)
DO_EV15_ProductTank_Drain_Valve AT %QX16.3 : BOOL; (* N10_O184_154U39 *)
DO_EV16_SyrupTank_Drain_Valve AT %QX16.4 : BOOL; (* N10_O185_154U39 *)
DO_EV17_BufferTankSprayBall_Valve AT %QX16.5 : BOOL; (* N10_O186_154U39 *)
DO_EV18_DeairOverfill_Valve AT %QX16.6 : BOOL; (* N10_O187_154U39 *)
DO_EV16_P1_SyrupTank_Drain_Valve (* AT %QX4.7*) : BOOL; (* N10_O185_154U39 *)
DO_EV21_ProdTankOverfill_Valve AT %QX16.7 : BOOL; (* N10_O190_154U42 *)
DO_EV17_P1_Syrup_Valve (* AT %QX5.1*) : BOOL; (* N10_O186_154U39 *)
DO_EV22_WaterPumpPrime_Valve AT %QX17.0 : BOOL; (* N10_O191_154U42 *)
DO_EV23_SerpentineDrain_valve AT %QX17.1 : BOOL; (* N10_O192_154U42 *)
DO_EV24_SyrupRecirc_Valve AT %QX17.2 : BOOL; (* N10_O193_154U42 *)
DO_EV25_VaccumPumpWater_Valve (* AT %QX17.3 *) : BOOL; (* N10_O194_154U42 *)
DO_EV26_CO2InjShutOff_Valve AT %QX17.3 : BOOL; (* N10_O195_154U42 *)
DO_EV27_DeairSprayBall_Valve AT %QX17.4 : BOOL; (* N10_O196_154U42 *)
DO_EV23_P1_DeairConnection_valve (* AT %QX5.6 *) : BOOL; (* N10_O192_154U42 *)
DO_EV28_DeairStartCO2Inj_Valve AT %QX17.5 : BOOL; (* N10_O197_154U42 *)
DO_EV41_CO2Inlet_Valve (* AT %QX18.6 *) : BOOL; (* N10_O200_154U42 *)
DO_EV42_N2Inlet_Valve (* AT %QX18.7 *) : BOOL; (* N10_O201_154U42 *)
DO_EV43_DeairVacu_Valve (* AT %QX18.2 *) : BOOL; (* N10_O202_154U42 *)
DO_EV44_SyrupLineDrain AT %QX17.6 : BOOL; (* N10_O193_154U42 *)
DO_EV46_FillerCO2Valve (* AT %QX17.4 *) : BOOL; (* N10_O151_154U36 *)
DO_EV61_SyrupTankSprayBall AT %QX18.0 : BOOL; (* N10_O150_154U36 *)
DO_EV62_ProductOutlet AT %QX18.1 : BOOL; (* N10_O151_154U36 *)
DO_EV69_Blender_ProductPipeDrain AT %QX18.2 : BOOL; (* N10_O155_154U37 *)
DO_EV73_WaterInlet_Valve (* AT %QX18.7 *) : BOOL; (* N10_O200_154U42 *)
DO_EV74_CIPInlet_Valve (* AT %QX19.0 *) : BOOL; (* N10_O201_154U42 *)
DO_EV75_SyrupInlet_Valve (* AT %QX19.1 *) : BOOL; (* N10_O201_154U42 *)
DO_EV76_SyrupBypass_Valve (* AT %QX19.2 *) : BOOL; (* N10_O201_154U42 *)
DO_EV77_SyrupBypass_Valve (* AT %QX19.3 *) : BOOL; (* N10_O201_154U42 *)
DO_EV78_ProductShutOff_Valve (* AT %QX19.4 *) : BOOL; (* N10_O201_154U42 *)
DO_EV80_Prod_Recirc_WoChiller_Valve (* AT %QX19.4 *) : BOOL; (* N10_O201_154U42 *)
DO_EV81_Prod_Recirc_Chiller_Valve AT %QX18.3 : BOOL; (* N10_O201_154U42 *)
DO_LinkByte16 AT %QB16 : BYTE ;
DO_LinkByte17 AT %QB17 : BYTE ;
DO_LinkByte18 AT %QB18 : BYTE ;
DO_LinkByte19 AT %QB19 : BYTE ;
DO_LinkByte20 AT %QB20 : BYTE ;
DO_LinkByte21 AT %QB21 : BYTE ;
(*************************************************************************)
(* ANALOG INPUT *)
(*************************************************************************)
AI_ProductTankLevel AT %IW100 : WORD; (* N10_IW100_154U52 *)
AI_ProductTankPressure AT %IW102 : WORD; (* N10_IW102_154U52 *)
AI_CIPHeaterTemperature (* AT %IW110 *) : WORD; (* N10_IW104_154U52 *)
AI_CIPReturnTemperature (* AT %IW116 *) : WORD; (* N10_IW126_154U52 *)
AI_ProductTemperature AT %IW108 : WORD; (* N10_IW116_154U52 *)
AI_ProductConductivity (* AT %IW108 *) : WORD; (* N10_IW108_154U52 *)
AI_CIPWaterCond (* AT %IW108 *) : WORD; (* N10_IW108_154U52 *)
AI_ProductO2 (* AT %IW110 *) : WORD; (* N10_IW112_154U52 *)
AI_CIPCausticCond (* AT %IW110 *) : WORD; (* N10_IW104_154U52 *)
AI_DeairWaterTemperature AT %IW112 : WORD; (* N10_IW110_154U52 *)
AI_DeaireatorPressure (* AT %IW116 *) : WORD; (* N10_IW116_154U52 *)
AI_WaterTemperature (* AT %IW106 *) : WORD; (* N10_IW106_154U52 *)
AI_Spare7 (* AT %IW118 *) : WORD; (* N10_IW118_154U52 *)
AI_FillerLevel (* AT %IW120 *) : WORD; (* N10_IW120_154U52 *)
AI_Spare11 (* AT %IW122 *) : WORD; (* N10_IW122_154U52 *)
AI_P3_PVFreq (* AT %IW104 *) : WORD ;
AI_DifferentialTransducer (* AT %IW108 *) : INT ;
AI_SyrupTankLevel AT %IW110 : WORD; (* N10_IW116_154U52 *)
AI_InjectionPressure AT %IW114 : WORD ;
AI_ProdTankPressureValve_VEP1 AT %IW106 : INT; (* N10_IW116_154U52 *)
AI_DeaireationValve_VEP4 AT %IW104 : INT ;
(*************************************************************************)
(* ANALOG INPUT *)
(*************************************************************************)
AI_ProductBrix (* AT %IW360 *) : WORD; (* N10_IW360_154U52 *)
AI_ProductCO2 (* AT %IW362 *) : WORD; (* N10_IW362_154U52 *)
AI_PoductTemp (* AT %IW364 *) : WORD; (* N10_IW364_154U52 *)
AI_PrecSpare3 (* AT %IW366 *) : WORD; (* N10_IW366_154U52 *)
AI_PrecSpare4 (* AT %IW368 *) : WORD; (* N10_IW368_154U52 *)
AI_PrecSpare5 (* AT %IW370 *) : WORD; (* N10_IW370_154U52 *)
AI_PrecSpare6 (* AT %IW372 *) : WORD; (* N10_IW372_154U52 *)
AI_PrecSpare7 (* AT %IW374 *) : WORD; (* N10_IW374_154U52 *)
(*************************************************************************)
(* ANALOG OUTPUT *)
(*************************************************************************)
AO_WaterCtrlValve_VM1 AT %QW100 : WORD ; (* N10_OW100_154U62 *)
AO_SyrupCtrlValve_VM2 AT %QW102 : WORD ; (* N10_OW102_154U62 *)
AO_CarboCO2CtrlValve_VM3 AT %QW104 : WORD ; (* N10_OW104_154U62 *)
AO_ProdTankPressureValve_VEP1 AT %QW106 : WORD ; (* N10_OW106_154U62 *)
AO_SyrupInletValve_VEP3 AT %QW112 : WORD ; (* N10_OW102_154U62 *)
AO_ProductRunOutAmount (* AT %QW108 *) : WORD ; (* N10_OW108_154U72 *)
AO_WaterTempCtrlValve (* AT %QW116 *) : WORD ; (* N10_OW108_154U72 *)
AO_ProdPumpFreq (* AT %QW110 *) : WORD ; (* N10_OW110_154U72 *)
AO_ProdTempCtrlValve AT %QW110 : WORD ; (* N10_OW110_154U72 *)
AO_CIPTempCtrlValve (* AT %QW110 *) : WORD ; (* N10_OW112_154U72 *)
AO_ToFillerEqPress (* AT %QW114 *) : WORD ; (* N10_OW114_154U72 *)
AO_InjectionPressure AT %QW114 : WORD ;
AO_DeaireationValve_VEP4 AT %QW108 : WORD ;
AO_CIPWaterCond (* AT %QW116 *) : WORD; (* N10_IW108_154U52 *)
AO_CIPCausticCond (* AT %QW120 *) : WORD; (* N10_IW104_154U52 *)
AO_CIPReturnTemperature (* AT %QW118 *) : WORD; (* N10_IW126_154U52 *)
AO_Spare8 (* AT %QW116 *) : WORD ; (* N10_OW116_154U82 *)
AO_Spare9 (* AT %QW118 *) : WORD ; (* N10_OW118_154U82 *)
END_VAR
(* @OBJECT_END := Global_Variables_IN_OUT *)
(* @CONNECTIONS := Global_Variables_IN_OUT
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,322 @@
(* @GLOBAL_VARIABLE_LIST := HMI_Alarms *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(**********************************************************************************************************************)
(* FAULT ALARMS *)
(**********************************************************************************************************************)
gH_Alarm001 :BOOL; (* Auxiliary Not Engaged *)
gH_Alarm002 :BOOL; (* Not a Recipe: invalid Recipe Type Selection *)
gH_Alarm003 :BOOL; (* Error during Densimeter Calibration *)
gH_Alarm004 :BOOL; (* Filler Communication Fault *)
gH_Alarm005 :BOOL; (* *)
gH_Alarm006 :BOOL; (* CIP Communication Fault *)
gH_Alarm007 :BOOL; (* Differential Pressure Transducer Fault *)
gH_Alarm008 :BOOL; (* Syrup tank flooded *)
gH_Alarm009 :BOOL; (* *)
gH_Alarm010 :BOOL; (* Profibus Valves Base Node12 Fault *)
gH_Alarm011 :BOOL; (* Profibus Valves Base Node13 Fault *)
gH_Alarm012 :BOOL; (* Profibus Low Conductimeter Node 15 Fault *)
gH_Alarm013 :BOOL; (* Profibus High Conductimeter Node 16 Fault *)
gH_Alarm014 :BOOL; (* Pressure Control Valve Position Fault *)
gH_Alarm015 :BOOL; (* Deareation Control Valve Position Fault *)
gH_Alarm016 :BOOL; (* Water Inlet Valve EV73 Position Fault *)
gH_Alarm017 :BOOL; (* CIP Inlet Valve EV74 Position Fault *)
gH_Alarm018 :BOOL; (* Product Outlet Valve EV62 Position Fault *)
gH_Alarm019 :BOOL; (* Filler Pressure Valve EV46 Position Fault *)
gH_Alarm020 :BOOL; (* Product Brix Too High *)
gH_Alarm021 :BOOL; (* Product Brix Too Low *)
gH_Alarm022 :BOOL; (* Product CO2 Too High *)
gH_Alarm023 :BOOL; (* Product CO2 Too Low *)
gH_Alarm024 :BOOL; (* *)
gH_Alarm025 :BOOL; (* Product Pump P3 VFC Fault - Fault Alarm *)
gH_Alarm026 :BOOL; (* ByPass Pump P6 Fault - Fault Alarm *)
gH_Alarm027 :BOOL; (* mPDS1000 Error Fault *)
gH_Alarm028 :BOOL; (* Densimeter Tubes Not Oscillating *)
gH_Alarm029 :BOOL; (* Water Pump P5 Fault - Fault Alarm - *)
gH_Alarm030 :BOOL; (* Water Pump P1 Fault - Fault Alarm - *)
gH_Alarm031 :BOOL; (* Syrup Pump P2 Fault - Fault Alarm - *)
gH_Alarm032 :BOOL; (* Product Pump P3 Fault - Fault Alarm - *)
gH_Alarm033 :BOOL; (* Vacuum Pump P4 Fault - Fault Alarm - *)
gH_Alarm034 :BOOL; (* Tank Rinse Pump P5 Fault - Fault Alarm - *)
gH_Alarm035 :BOOL; (* Water FlowMeter General Fault - Fault Alarm - *)
gH_Alarm036 :BOOL; (* Syrup FlowMeter General Fault - Fault Alarm - *)
gH_Alarm037 :BOOL; (* Carbo CO2 FlowMeter Fault - Fault Alarm - *)
gH_Alarm038 :BOOL; (* Water Control Valve Position Fault - Fault Alarm - *)
gH_Alarm039 :BOOL; (* Syrup Control Valve Position Fault - Fault Alarm - *)
gH_Alarm040 :BOOL; (* Carbo CO2 Control Valve Position Fault - Fault Alarm - *)
gH_Alarm041 :BOOL; (* Product Tank Pressure Fault - Fault Alarm - *)
gH_Alarm042 :BOOL; (* Blend Error Fault: High Syrup - Fault Alarm - *)
gH_Alarm043 :BOOL; (* Blend Error Fault: Low Syrup - Fault Alarm - *)
gH_Alarm044 :BOOL; (* CarboCO2 Error Fault: Low CO2 - Fault Alarm - *)
gH_Alarm045 :BOOL; (* CarboCO2 Error Fault: High CO2 - Fault Alarm - *)
gH_Alarm046 :BOOL; (* Vacuum TimeOut - Fault Alarm - *)
gH_Alarm047 :BOOL; (* CIP Transfer Time Out - Fault Alarm - *)
gH_Alarm048 :BOOL; (* CIP No Recirculation Flow - Fault Alarm - *)
gH_Alarm049 :BOOL; (* *)
gH_Alarm050 :BOOL; (* Profibus Master Node 1 Crash *)
gH_Alarm051 :BOOL; (* Profibus ET200 Node 10 Fault *)
gH_Alarm052 :BOOL; (* Profibus Water MFM Node 20 Fault *)
gH_Alarm053 :BOOL; (* Profibus Syrup MFM Node 21 Fault *)
gH_Alarm054 :BOOL; (* Profibus CO2 MFM Node 22 Fault *)
gH_Alarm055 :BOOL; (* Profibus Product Pump VFC Node Fault *)
gH_Alarm056 :BOOL; (* *)
gH_Alarm057 :BOOL; (* UPS Battery not ready - NON FERMA LA MACHINA *)
gH_Alarm058 :BOOL; (* Profibus Adapter mPDS Error Fault *)
gH_Alarm059 :BOOL; (* mPDS2000 Error Fault *)
(*********************************************************************************************************************)
(* SUPPLIES ALARMS *)
(*********************************************************************************************************************)
gH_Alarm060 :BOOL; (* Low Infeed Air Pressure Fault - Supplies Alarm - *)
gH_Alarm061 :BOOL; (* Low Infeed CO2 Pressure Fault - Supplies Alarm - *)
gH_Alarm062 :BOOL; (* Deaireator Water Low Level - Supplies Alarm - *)
gH_Alarm063 :BOOL; (* Syrup Tank Low Level - Supplies Alarm - *)
gH_Alarm064 :BOOL; (* Syrup Room Pump Fault - Supplies Alarm - *)
gH_Alarm065 :BOOL; (* Syrup Brix Out Of Standard - Supplies Alarm - *)
gH_Alarm066 :BOOL; (* Chiller Ammonia Pressure Too Low - Supplies Alarm - *)
gH_Alarm067 :BOOL; (* Water Temperature Too High *)
gH_Alarm068 :BOOL; (* Product Temperature Too High *)
gH_Alarm069 :BOOL; (* Syrup Room Water Pump Fault - Supplie Alarm - *)
gH_Alarm070 :BOOL; (* Syrup Density Out Of Standard - Supplies Alarm - *)
gH_Alarm071 :BOOL; (* *)
gH_Alarm072 :BOOL; (* Ammonia compressors not running - Supplies Alarm *)
gH_Alarm073 :BOOL; (* *)
gH_Alarm074 :BOOL; (* *)
gH_Alarm075 :BOOL; (* *)
gH_Alarm076 :BOOL; (* *)
gH_Alarm077 :BOOL; (* *)
gH_Alarm078 :BOOL; (* *)
gH_Alarm079 :BOOL; (* *)
gH_Alarm080 :BOOL; (* *)
gH_Alarm081 :BOOL; (* *)
gH_Alarm082 :BOOL; (* *)
gH_Alarm083 :BOOL; (* *)
gH_Alarm084 :BOOL; (* *)
gH_Alarm085 :BOOL; (* *)
gH_Alarm086 :BOOL; (* *)
gH_Alarm087 :BOOL; (* *)
gH_Alarm088 :BOOL; (* *)
gH_Alarm089 :BOOL; (* *)
(**********************************************************************************************************************)
(* EXTERNAL ALARMS *)
(**********************************************************************************************************************)
gH_Alarm090 :BOOL; (* CIP Fault *)
gH_Alarm091 :BOOL; (* *)
gH_Alarm092 :BOOL; (* *)
gH_Alarm093 :BOOL; (* *)
gH_Alarm094 :BOOL; (* *)
gH_Alarm095 :BOOL; (* *)
gH_Alarm096 :BOOL; (* *)
gH_Alarm097 :BOOL; (* *)
gH_Alarm098 :BOOL; (* *)
gH_Alarm099 :BOOL; (* *)
gH_Alarm100 :BOOL; (* *)
gH_Alarm101 :BOOL; (* *)
gH_Alarm102 :BOOL; (* *)
gH_Alarm103 :BOOL; (* *)
gH_Alarm104 :BOOL; (* *)
gH_Alarm105 :BOOL; (* *)
gH_Alarm106 :BOOL; (* *)
gH_Alarm107 :BOOL; (* *)
gH_Alarm108 :BOOL; (* *)
gH_Alarm109 :BOOL; (* *)
gH_Alarm110 :BOOL; (* *)
gH_Alarm111 :BOOL; (* *)
gH_Alarm112 :BOOL; (* *)
gH_Alarm113 :BOOL; (* *)
gH_Alarm114 :BOOL; (* *)
gH_Alarm115 :BOOL; (* *)
gH_Alarm116 :BOOL; (* *)
gH_Alarm117 :BOOL; (* *)
gH_Alarm118 :BOOL; (* *)
gH_Alarm119 :BOOL; (* *)
(**********************************************************************************************************************)
(* OPERATOR ALARMS *)
(**********************************************************************************************************************)
gH_Alarm120 :BOOL; (* Water Manual Valve Open *)
gH_Alarm121 :BOOL; (* Syrup Line Manual Drain Valve Open *)
gH_Alarm122 :BOOL; (* Syrup Line Not Selected *)
gH_Alarm123 :BOOL; (* *)
gH_Alarm124 :BOOL; (* *)
gH_Alarm125 :BOOL; (* *)
gH_Alarm126 :BOOL; (* *)
gH_Alarm127 :BOOL; (* *)
gH_Alarm128 :BOOL; (* *)
gH_Alarm129 :BOOL; (* *)
gH_Alarm130 :BOOL; (* Manifold not ready for Prod *)
gH_Alarm131 :BOOL; (* Manifold not ready for CIP *)
gH_Alarm132 :BOOL; (* *)
gH_Alarm133 :BOOL; (* *)
gH_Alarm134 :BOOL; (* *)
gH_Alarm135 :BOOL; (* *)
gH_Alarm136 :BOOL; (* *)
gH_Alarm137 :BOOL; (* *)
gH_Alarm138 :BOOL; (* *)
gH_Alarm139 :BOOL; (* *)
gH_Alarm140 :BOOL; (* *)
gH_Alarm141 :BOOL; (* *)
gH_Alarm142 :BOOL; (* *)
gH_Alarm143 :BOOL; (* *)
gH_Alarm144 :BOOL; (* *)
gH_Alarm145 :BOOL; (* *)
gH_Alarm146 :BOOL; (* *)
gH_Alarm147 :BOOL; (* *)
gH_Alarm148 :BOOL; (* *)
gH_Alarm149 :BOOL; (* *)
gH_Alarm150 :BOOL; (* *)
END_VAR
VAR_GLOBAL
gH_Message000 AT%MB300:BOOL; (* *)
gH_Message001 AT%MB301:BOOL; (* *)
gH_Message002 AT%MB302:BOOL; (* *)
gH_Message003 AT%MB303:BOOL; (* Manual Activated *)
gH_Message004 AT%MB304:BOOL; (* *)
gH_Message005 AT%MB305:BOOL; (* *)
gH_Message006 AT%MB306:BOOL; (* *)
gH_Message007 AT%MB307:BOOL; (* *)
gH_Message008 AT%MB308:BOOL; (* Opeartor Run Syrup Prep *)
gH_Message009 AT%MB309:BOOL; (* Operator Start Deaireator *)
gH_Message010 AT%MB310:BOOL; (* *)
gH_Message011 AT%MB311:BOOL; (* *)
gH_Message012 AT%MB312:BOOL; (* Water Flow Too Low *)
gH_Message013 AT%MB313:BOOL; (* Water Stream Critical Speed *)
gH_Message014 AT%MB314:BOOL; (* *)
gH_Message015 AT%MB315:BOOL; (* *)
gH_Message016 AT%MB316:BOOL; (* *)
gH_Message017 AT%MB317:BOOL; (* CO2 inlet line pressure not stable *)
gH_Message018 AT%MB318:BOOL; (* Product Brix Low *)
gH_Message019 AT%MB319:BOOL; (* Product Brix High *)
gH_Message020 AT%MB320:BOOL; (* Product CO2 Vol Low *)
gH_Message021 AT%MB321:BOOL; (* Product CO2 Vol High *)
gH_Message022 AT%MB322:BOOL; (* *)
gH_Message023 AT%MB323:BOOL; (* *)
gH_Message024 AT%MB324:BOOL; (* *)
gH_Message025 AT%MB325:BOOL; (* *)
gH_Message026 AT%MB326:BOOL; (* *)
gH_Message027 AT%MB327:BOOL; (* Start Maselli pump *)
gH_Message028 AT%MB328:BOOL; (* Maselli Lamp Failure *)
gH_Message029 AT%MB329:BOOL; (* *)
gH_Message030 AT%MB330:BOOL; (* Wait Filler CIP Signal *)
gH_Message031 AT%MB331:BOOL; (* Wait Filler Product Request Signal *)
gH_Message032 AT%MB332:BOOL; (* Wait Filler Rinse Completed Signal *)
gH_Message033 AT%MB333:BOOL; (* Local CIP Wait Temperature *)
gH_Message034 AT%MB334:BOOL; (* Local CIP Wait High Conductivity *)
gH_Message035 AT%MB335:BOOL; (* Local CIP Wait Low Conductivity *)
gH_Message036 AT%MB336:BOOL; (* Local CIP Wait Drain Completed *)
gH_Message037 AT%MB337:BOOL; (* Local CIP Wait CIP cycle ended *)
gH_Message038 AT%MB338:BOOL; (* Local CIP Wait Change ready *)
gH_Message039 AT%MB339:BOOL; (* *)
gH_Message040 AT%MB340:BOOL; (* *)
gH_Message041 AT%MB341:BOOL; (* *)
gH_Message042 AT%MB342:BOOL; (* *)
gH_Message043 AT%MB343:BOOL; (* *)
gH_Message044 AT%MB344:BOOL; (* *)
gH_Message045 AT%MB345:BOOL; (* *)
gH_Message046 AT%MB346:BOOL; (* *)
gH_Message047 AT%MB347:BOOL; (* *)
gH_Message048 AT%MB348:BOOL; (* *)
gH_Message049 AT%MB349:BOOL; (* *)
gH_Message050 AT%MB350:BOOL; (* Chiler Ammonia level too high *)
gH_Message051 AT%MB351:BOOL; (* Product near to freezing temperature *)
gH_Message052 AT%MB352:BOOL; (* Product temperature too high *)
gH_Message053 AT%MB353:BOOL; (* Water near to freezing temperature *)
gH_Message054 AT%MB354:BOOL; (* Water temperature to high *)
gH_Message055 AT%MB355:BOOL; (* Check Oil in Modulating Valve *)
gH_Message056 AT%MB356:BOOL; (* Check Oil in water pump motor *)
gH_Message057 AT%MB357:BOOL; (* Profibus Product PH Node 18 Fault *)
gH_Message058 AT%MB358:BOOL; (* Profibus Product ConductiveMeter Node 19 Fault *)
gH_Message059 AT%MB359:BOOL; (* Product High Conductivity *)
gH_Message060 AT%MB360:BOOL; (* Product Low Conductivity *)
gH_Message061 AT%MB361:BOOL; (* Blend Fill System Start Up To Do *)
gH_Message062 AT%MB362:BOOL; (* Wait filler ready to start up *)
gH_Message063 AT%MB363:BOOL; (* Wait filler flushing completed *)
gH_Message064 AT%MB364:BOOL; (* Wait filler loading completed *)
gH_Message065 AT%MB365:BOOL; (* Profibus Product VFM Node 17 Fault *)
gH_Message066 AT%MB366:BOOL; (* *)
gH_Message067 AT%MB367:BOOL; (* *)
gH_Message068 AT%MB368:BOOL; (* *)
gH_Message069 AT%MB369:BOOL; (* *)
gH_Message070 AT%MB370:BOOL; (* *)
gH_Status000 AT%MB600:BOOL; (* *)
gH_Status001 AT%MB601:BOOL; (* Waiting Product Tank Pressure *)
gH_Status002 AT%MB602:BOOL; (* Start Up Deaireator Running *)
gH_Status003 AT%MB603:BOOL; (* Syrup Prep Running *)
gH_Status004 AT%MB604:BOOL; (* Syrup Autocorrection Running *)
gH_Status005 AT%MB605:BOOL; (* Syrup Run Out Running *)
gH_Status006 AT%MB606:BOOL; (* First Product Running *)
gH_Status007 AT%MB607:BOOL; (* Waiting Vacuum *)
gH_Status008 AT%MB608:BOOL; (* Max Syrup Brix Autocorrection Acheaved - NOT USED*)
gH_Status009 AT%MB609:BOOL; (* Product Brix Tracking Hold *)
gH_Status010 AT%MB610:BOOL; (* Product Brix Tracking *)
gH_Status011 AT%MB611:BOOL; (* Product CO2 Tracking *)
gH_Status012 AT%MB600:BOOL; (* *)
gH_Status013 AT%MB600:BOOL; (* *)
gH_Status014 AT%MB614:BOOL; (* Warm Rinse Running *)
gH_Status015 AT%MB615:BOOL; (* Cold Rinse Running *)
gH_Status016 AT%MB616:BOOL; (* *)
gH_Status017 AT%MB617:BOOL; (* *)
gH_Status018 AT%MB618:BOOL; (* *)
gH_Status019 AT%MB619:BOOL; (* *)
gH_Status020 AT%MB620:BOOL; (* *)
gH_Status021 AT%MB621:BOOL; (* *)
gH_Status022 AT%MB622:BOOL; (* CIP Drain Activated *)
gH_Status023 AT%MB623:BOOL; (* Water Line Carbonating Running *)
gH_Status024 AT%MB624:BOOL; (* *)
gH_Status025 AT%MB625:BOOL; (* Product Tank Drain Active *)
gH_Status026 AT%MB626:BOOL; (* Rinse Drain Active *)
gH_Status027 AT%MB627:BOOL; (* *)
gH_Status028 AT%MB628:BOOL; (* *)
gH_Status029 AT%MB629:BOOL; (* *)
gH_Status030 AT%MB630:BOOL; (* *)
gH_Status031 AT%MB631:BOOL; (* *)
gH_Status032 AT%MB632:BOOL; (* *)
gH_Status033 AT%MB633:BOOL; (* *)
gH_Status034 AT%MB634:BOOL; (* *)
gH_Status035 AT%MB635:BOOL; (* *)
gH_Status036 AT%MB636:BOOL; (* *)
gH_Status037 AT%MB637:BOOL; (* Local CIP Hold *)
gH_Status038 AT%MB638:BOOL; (* Local CIP Completed *)
gH_Status039 AT%MB639:BOOL; (* System Run Out Running *)
gH_Status040 AT%MB640:BOOL; (* *)
gH_Status041 AT%MB641:BOOL; (* *)
gH_Status042 AT%MB642:BOOL; (* *)
gH_Status043 AT%MB643:BOOL; (* *)
gH_Status044 AT%MB644:BOOL; (* Product Tank Run Out Running *)
gH_Status045 AT%MB645:BOOL; (* Product Pipe Run Out Running *)
gH_Status046 AT%MB646:BOOL; (* *)
gH_Status047 AT%MB647:BOOL; (* Product Pipe Draining *)
gH_Status048 AT%MB648:BOOL; (* Filler Rinse Running *)
gH_Status049 AT%MB649:BOOL; (* *)
gH_Status050 AT%MB650:BOOL; (* *)
gH_Status051 AT%MB651:BOOL; (* *)
gH_Status052 AT%MB652:BOOL; (* *)
gH_Status053 AT%MB653:BOOL; (* *)
gH_Status054 AT%MB654:BOOL; (* *)
gH_Status055 AT%MB655:BOOL; (* *)
gH_Status056 AT%MB656:BOOL; (* *)
gH_Status057 AT%MB657:BOOL; (* *)
gH_Status058 AT%MB658:BOOL; (* *)
gH_Status059 AT%MB659:BOOL; (* *)
gH_Status060 AT%MB660:BOOL; (* *)
gH_Status061 AT%MB661:BOOL; (* Blend Fill System Buffer Tank Loading *)
gH_Status062 AT%MB662:BOOL; (* Blend Fill System Pressurization Running *)
gH_Status063 AT%MB663:BOOL; (* Blend Fill System Product Filler Load *)
gH_Status064 AT%MB664:BOOL; (* Blend Fill System Product Filler Send *)
END_VAR
VAR_GLOBAL
gH_Message AT %MB300 : ARRAY [0..70] OF BOOL;
gH_Message_code :INT;
gH_Status AT %MB600 : ARRAY [0..70] OF BOOL;
gH_Status_code : INT ;
END_VAR
(* @OBJECT_END := HMI_Alarms *)
(* @CONNECTIONS := HMI_Alarms
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,269 @@
(* @GLOBAL_VARIABLE_LIST := HMI_Blender_Parameters *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL PERSISTENT
(*************************************************************************)
(* PROCESSOR OPTIONS *)
(*************************************************************************)
gH_Blender_OPT_ModelNum : UINT ; (* *)
gH_Blender_OPT_CO2_Offset : REAL ; (* *)
gH_Blender_OPT_MaxSyrDeltaBrix : REAL ; (* *)
gH_Blender_OPT_BrixMeter : BOOL ; (* *)
gH_Blender_OPT_MeterType : UINT ; (* 1: Maselli 2: AntoonPaar 3: 4-20mA 4: UC05 UR22 *)
gH_Blender_OPT_MeterReceiveOnly : BOOL ; (* *)
gH_Blender_OPT_SyrBrixMeter : BOOL ; (* *)
gH_Blender_OPT_SyrupLevel : BOOL ; (* 0: Digital 1: Analogical *)
gH_Blender_OPT_FastChangeOverEnabled : BOOL ; (* *)
gH_Blender_OPT_FillerRinseTank : BOOL ; (* *)
gH_Blender_OPT_BlendFillSystem : BOOL ; (* *)
gH_Blender_OPT_TrackFillerSpeed : BOOL ; (* *)
gH_Blender_OPT_SignalExchange : UINT ; (* 0: Hardware 1: Ethernet 2: DeviceNet *)
gH_Blender_OPT_CoolerPresent : BOOL ; (* *)
gH_Blender_OPT_CoolerControl : UINT ; (* 0: External 1: Only Water 2: Only Product 3: Water+Product -Separated Control- 4: Water+Product -Single Control- *)
gH_Blender_OPT_CoolerType : UINT ; (* 0: Glycol 1: Ammonia *)
gH_Blender_OPT_LocalCIP : BOOL ; (* *)
gH_Blender_OPT_Conductimeter : BOOL ; (* *)
gH_Blender_OPT_Conductimeter_Profibus : BOOL ; (* *)
gH_Blender_OPT_CIPSignalExchange : BOOL ; (* *)
gH_Blender_OPT_RemoteInjection : BOOL ; (* *)
gH_Blender_OPT_CarboPresent : BOOL ;
gH_Blender_OPT_InjectionPress_Ctrl : BOOL ; (* 0: Manual 1: Automatic ----- Injection pressure control and deareation valve *)
gH_Blender_OPT_VacuumPump : BOOL ; (* *)
gH_Blender_OPT_DoubleDeair : BOOL ; (* *)
gH_Blender_OPT_ByPassDeair : BOOL ; (* EV48 EV49 EV50 *)
gH_Blender_OPT_Deaireation : BOOL ; (* 0: SAG 1:SAE/SAF *)
gH_Blender_OPT_StillWaterByPass : BOOL ; (* EV39 EV40 *)
gH_Blender_OPT_Flowtronic : BOOL ; (* 0: Not Present 1: Present *)
gH_Blender_OPT_Inverter : BOOL ; (* *)
gH_Blender_OPT_DivertPanel : UINT ; (* *)
gH_Blender_OPT_Promass : UINT ; (* *)
gH_Blender_OPT_WaterPromass : BOOL ; (* *)
gH_Blender_OPT_ProductConductimeter : BOOL ; (* *)
gH_Blender_OPT_ProductPulp : BOOL ; (* *)
gH_Blender_OPT_PLCDataAcq : BOOL ; (* *)
gH_Blender_OPT_CO2_N2_Injection : BOOL ; (* *)
gH_Blender_OPT_UPS_Siemens : BOOL ; (* *)
gH_Blender_OPT_UVLamp : BOOL ; (* *)
gH_Blender_OPT_RunOut_Water : BOOL ; (* 0: Water Not Present - 1: Water Present *)
gH_Blender_OPT_Simulation : BOOL ; (* *)
(*************************************************************************)
(* ACTUAL RECIPE PARAMETERS *)
(*************************************************************************)
gH_A_Recipe_Name : STRING ;
gH_A_Recipe_SyrupBrix : REAL ; (* *)
gH_A_Recipe_SyrupDensity : REAL ; (* *)
gH_A_Recipe_SyrupFactor : REAL ; (* *)
gH_A_Recipe_ProductBrix : REAL ; (* *)
gH_A_Recipe_ProductionRate : REAL ; (* *)
gH_A_Recipe_Ratio : REAL ; (* *)
gH_A_Recipe_ProdBrixOffset : REAL ; (* *)
gH_A_Recipe_CO2Vols : REAL ; (* *)
gH_A_Recipe_CO2Fact : REAL ; (* *)
gH_A_Recipe_CO2 : BOOL ; (* *)
gH_A_Recipe_ProdTankPress : REAL ; (* *)
gH_A_Recipe_SP_ProdTemp : REAL ; (* *)
gH_A_Recipe_EnProdTemp : BOOL ; (* *)
gH_A_Recipe_PrdTankMinLevel : REAL ; (* *)
gH_A_Recipe_Type : INT ; (* *)
gH_A_Recipe_WaterValveSave : REAL ; (* *)
gH_A_Recipe_SyrupValveSave : REAL ; (* *)
gH_A_Recipe_CarboCO2ValveSave : REAL ; (* *)
gH_A_Recipe_ProdMeterRecipeNum : INT ; (* *)
gH_A_Recipe_ProdMeterHighBrix : REAL ; (* *)
gH_A_Recipe_ProdMeterLowBrix : REAL ; (* *)
gH_A_Recipe_ProdMeterHighCO2 : REAL ; (* *)
gH_A_Recipe_ProdMeterLowCO2 : REAL ; (* *)
gH_A_Recipe_ProdMeter_ZeroCO2 : REAL;
gH_A_Recipe_ProdMeter_ZeroBrix : REAL;
gH_A_Recipe_ProdHighCond : REAL ; (* *)
gH_A_Recipe_ProdLowCond : REAL ; (* *)
gH_A_Recipe_WaterSelection : BYTE ; (* *)
gH_A_Recipe_EnDeaireation : BOOL ; (* *)
gH_A_Recipe_FillerNextRecipeNum : BYTE ; (* *)
gH_A_Recipe_BottleSize : REAL; (* *)
gH_A_Recipe_BottleShape : SINT ; (* *)
gH_A_Recipe_FillingValveHead_SP : REAL ;
gH_A_Recipe_Transfer : BOOL ;
gH_mPDS1000_SyrupFactor : REAL ; (* *)
(*************************************************************************)
(* NEXT RECIPE PARAMETERS *)
(*************************************************************************)
gH_N_Recipe_Name : STRING ;
gH_N_Recipe_SyrupBrix : REAL ; (* *)
gH_N_Recipe_SyrupDensity : REAL ; (* *)
gH_N_Recipe_SyrupFactor : REAL ; (* *)
gH_N_Recipe_ProductBrix : REAL ; (* *)
gH_N_Recipe_ProductionRate : REAL ; (* *)
gH_N_Recipe_Ratio : REAL ; (* *)
gH_N_Recipe_ProdBrixOffset : REAL ; (* *)
gH_N_Recipe_CO2Vols : REAL ; (* *)
gH_N_Recipe_CO2Fact : REAL ; (* *)
gH_N_Recipe_CO2 : BOOL ; (* *)
gH_N_Recipe_ProdTankPress : REAL ; (* *)
gH_N_Recipe_SP_ProdTemp : REAL ; (* *)
gH_N_Recipe_EnProdTemp : BOOL ; (* *)
gH_N_Recipe_PrdTankMinLevel : REAL ; (* *)
gH_N_Recipe_Type : INT ; (* *)
gH_N_Recipe_WaterValveSave : REAL ; (* *)
gH_N_Recipe_SyrupValveSave : REAL ; (* *)
gH_N_Recipe_CarboCO2ValveSave : REAL ; (* *)
gH_N_Recipe_ProdMeterRecipeNum : INT ; (* *)
gH_N_Recipe_ProdMeterHighBrix : REAL ; (* *)
gH_N_Recipe_ProdMeterLowBrix : REAL ; (* *)
gH_N_Recipe_ProdMeterHighCO2 : REAL ; (* *)
gH_N_Recipe_ProdMeterLowCO2 : REAL ; (* *)
gH_N_Recipe_ProdMeter_ZeroCO2 : REAL;
gH_N_Recipe_ProdMeter_ZeroBrix : REAL;
gH_N_Recipe_ProdHighCond : REAL ; (* *)
gH_N_Recipe_ProdLowCond : REAL ; (* *)
gH_N_Recipe_WaterSelection : BYTE ; (* *)
gH_N_Recipe_EnDeaireation : BOOL ; (* *)
gH_N_Recipe_FillerNextRecipeNum : BYTE ; (* *)
gH_N_Recipe_BottleSize : REAL; (* *)
gH_N_Recipe_BottleShape : SINT ; (* *)
gH_N_Recipe_FillingValveHead_SP : REAL ;
gH_N_Recipe_Transfer : BOOL ;
(*************************************************************************)
(* ANALOG VALUES - READ/WRITE *)
(*************************************************************************)
gH_ProcessSetup_WaterPumpPressure : REAL ; (* Water Pump Maximum Pressure *)
gH_ProcessSetup_SyrupPumpPressure : REAL ; (* Syrup Pump Maximum Pressure *)
gH_ProcessSetup_KWaterLoss : REAL ; (* Friction Loss Constant in Serpentine *)
gH_ProcessSetup_KSyrupLoss : REAL ; (* Friction Loss Constant in Syrup Pipe *)
gH_ProcessSetup_KProdLoss : REAL ; (* Pressure Loss Factor *)
gH_ProcessSetup_KProdPump : REAL ; (* Frequency Overpressure Pump P3 Constant [Hz/mm] *)
gH_ProcessSetup_MinProduction : REAL ; (* Minimum Production Set Point - L/min - *)
gH_ProcessSetup_SyrupLinePressure : REAL ; (* Syrup Line pressure at VEP2 valve *)
gH_ProcessSetup_CIPWaterValveOV : REAL ; (* Water Valve Opening During CIP *)
gH_ProcessSetup_CIPSyrupValveOV : REAL ; (* Syrup Valve Opening During CIP *)
gH_ProcessSetup_CIPProdTankMinLevel : REAL ; (* Product Tank Minimum Level In CIP *)
gH_ProcessSetup_CIPProdTankMaxLevel : REAL ; (* Product Tank Maximum Level In CIP *)
gH_ProcessSetup_CIPProdPumpFreq : REAL ; (* CIP frequency Value [Hz] *)
gH_ProcessSetup_CIPSyrTankMinLevel : REAL ; (* Syrup Tank Minimum Level In CIP *)
gH_ProcessSetup_CIPSyrTankMaxLevel : REAL ; (* Syrup Tank Maximum Level In CIP *)
gH_ProcessSetup_RinseWaterValveOV : REAL ; (* Water Valve Opening During Rinse *)
gH_ProcessSetup_RinseSyrupValveOV : REAL ; (* Syrup Valve Opening During Rinse *)
gH_ProcessSetup_RinseProdTankPress : REAL ; (* Product Tank Pressure In Rinse *)
gH_ProcessSetup_RinseProdPumpFreq : REAL ; (* Rinse frequency Value [Hz] *)
gH_ProcessSetup_KRecBlendError : REAL ; (* Blend Error Recovery CONSTANT *)
gH_ProcessSetup_KRecCarboCO2Error : REAL ; (* Carbonation Error Recovery Constant *)
gH_ProcessSetup_MaxBlendError : REAL ; (* Blend Error Maximum Value *)
gH_ProcessSetup_MaxCarboCO2Error : REAL ; (* Carbonation Error Maximum Value *)
gH_ProcessSetup_StartUpBrixExtraWater : REAL ; (* *)
gH_ProcessSetup_StartUpCO2ExtraWater : REAL ; (* *)
gH_ProcessSetup_StartUpProdPumpFreq : REAL ; (* Start Up frequency Value [Hz] *)
gH_ProcessSetup_SyrupRoomTank : INT ;
gH_ProcessSetup_SyrupRunOutLiters : REAL ; (* *)
gH_ProcessSetup_BPWaterPID : REAL ; (* *)
gH_ProcessSetup_TIWaterPID : REAL ; (* *)
gH_ProcessSetup_TDWaterPID : REAL ; (* *)
gH_ProcessSetup_FFWaterPID : REAL ; (* *)
gH_ProcessSetup_BPSyrupPID : REAL ; (* *)
gH_ProcessSetup_TISyrupPID : REAL ; (* *)
gH_ProcessSetup_TDSyrupPID : REAL ; (* *)
gH_ProcessSetup_FFSyrupPID : REAL ; (* *)
gH_ProcessSetup_BPCarboCO2PID : REAL ; (* *)
gH_ProcessSetup_TICarboCO2PID : REAL ; (* *)
gH_ProcessSetup_TDCarboCO2PID : REAL ; (* *)
gH_ProcessSetup_FFCarboCO2PID : REAL ; (* *)
gH_ProcessSetup_BPCIPTempPID : REAL ; (* *)
gH_ProcessSetup_TICIPTempPID : REAL ; (* *)
gH_ProcessSetup_TDCIPTempPID : REAL ; (* *)
gH_ProcessSetup_FFCIPTempPID : REAL ; (* *)
gH_ProcessSetup_BPProdTempPID : REAL ; (* *)
gH_ProcessSetup_TIProdTempPID : REAL ; (* *)
gH_ProcessSetup_TDProdTempPID : REAL ; (* *)
gH_ProcessSetup_FFProdTempPID : REAL ; (* *)
gH_ProcessSetup_BPWaterTempPID : REAL ; (* *)
gH_ProcessSetup_TIWaterTempPID : REAL ; (* *)
gH_ProcessSetup_TDWaterTempPID : REAL ; (* *)
gH_ProcessSetup_FFWaterTempPID : REAL ; (* *)
gH_ProcessSetup_BPSyrupLevelPID : REAL ; (* *)
gH_ProcessSetup_TISyrupLevelPID : REAL ; (* *)
gH_ProcessSetup_TDSyrupLevelPID : REAL ; (* *)
gH_ProcessSetup_FFSyrupLevelPID : REAL ; (* *)
gH_ProcessSetup_KpCO2PressPID : REAL ; (* *)
gH_ProcessSetup_DeadBandCO2PressPID : REAL ; (* *)
gH_ProcessSetup_InjCO2Press_Offset : REAL ; (* *)
gH_ProcessSetup_InjCO2Press_MinFlow : UINT ; (* *)
gH_ProcessSetup_InjCO2Press_MaxFlow : UINT ; (* *)
gH_ProcessSetup_CarboCO2Pressure : REAL ; (* CO2 Pressure Infeed Line *)
gH_ProcessSetup_N2MinPressure : REAL ; (* N2 Minimum Pressure Infeed Line *)
gH_ProcessSetup_BPFillingValvePID : REAL ; (* *)
gH_ProcessSetup_TIFillingValvePID : REAL ; (* *)
gH_ProcessSetup_TDFillingValvePID : REAL ; (* *)
gH_ProcessSetup_FFFillingValvePID : REAL ; (* Not USED *)
gH_ProcessSetup_DiffSensor_Height : REAL := 1035.0 ; (* Sensor Height from Soil [mm] *)
gH_ProcessSetup_DiffSensor_DeltaHeight : REAL := 0.0 ; (* Sensor Plates Height Difference [mm] *)
gH_ProcessSetup_DiffSensor_Offset : REAL := 27.0 ; (* Sensor Offset Read with zero pressure (all valves open) in [mm] *)
gH_ProcessSetup_FillingValveHeight : REAL := 1540.0 ; (* Filling Valve Height from soil [mm] *)
gH_ProcessSetup_FillerDiameter : REAL := 4960.0 ; (* Filler Carousel Diameter [mm] *)
gH_ProcessSetup_FillingValveNum : INT := 130 ; (* Filling Valves Number *)
gH_ProcessSetup_FillerProdPipeDN : REAL := 100.0 ;
gH_ProcessSetup_FillerProdPipeMass : REAL := 190 ;
gH_ProcessSetup_FillingTime : REAL ;
gH_ProcessSetup_ProdTankHeight_0 : REAL := 990.0 ; (* Level at 0% Tank Level Height in mm *)
gH_ProcessSetup_ProdTankLevelPerc_2 : REAL := 53.88 ; (* Second level percentage *)
gH_ProcessSetup_ProdTankHeight_2 : REAL := 1995.0 ; (* Second level Height in mm *)
gH_ProcessSetup_DeaireationFactor : REAL := 0.75 ; (* DeareationFlow/WaterFlow *)
gH_ProcessSetup_DeaireationKVValve : REAL := 0.3 ; (* DeareationFlow/(DeareationValveOpening*14.3*P1) *)
gH_FirstProdExtraBrix : REAL ; (*Start up *)
gH_FirstProdDietExtraSyr : REAL ; (*Start up *)
gH_FirstProdExtraCO2Fact : REAL ; (*Start up *)
gH_ProdTankDrainStep0Time : TIME ; (* Step 0 Product Tank Drain Time *)
gH_ProdTankDrainStep1Time : TIME ; (* Step 1 Product Tank Drain Time *)
gH_ProdPipeRunOutStep0Time : TIME ; (* Step 0 Product Pipe Run Out Time *)
gH_H2OOpenInProdPipeRunOut : REAL ;
gH_SyrupValveProdPipeRunOut : REAL ;
gH_ProdPipeRunOutProdAmount : REAL ; (* Water amount used to push product through product pipe + serpentine - in Liters *)
gH_ProdTankRunOutChillerAmount : REAL ; (* Water amount used to push product through product chiller - in Liters *)
gH_SwitchOff_DensityOk : BOOL;
END_VAR
(* @OBJECT_END := HMI_Blender_Parameters *)
(* @CONNECTIONS := HMI_Blender_Parameters
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,97 @@
(* @GLOBAL_VARIABLE_LIST := HMI_IO_Showing *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************)
(* FILLER I/O SIGNALS - PRODUCTION *)
(*************************************************************************)
gH_Filler_Production_DI0 : BOOL; (* *)
gH_Filler_Production_DI1 : BOOL; (* *)
gH_Filler_Production_DI2 : BOOL; (* *)
gH_Filler_Production_DI3 : BOOL; (* *)
gH_Filler_Production_DI4 : BOOL; (* *)
gH_Filler_Production_DI5 : BOOL; (* *)
gH_Filler_Production_DI6 : BOOL; (* *)
gH_Filler_Production_DI7 : BOOL; (* *)
gH_Filler_Production_DO0 : BOOL; (* *)
gH_Filler_Production_DO1 : BOOL; (* *)
gH_Filler_Production_DO2 : BOOL; (* *)
gH_Filler_Production_DO3 : BOOL; (* *)
gH_Filler_Production_DO4 : BOOL; (* *)
gH_Filler_Production_DO5 : BOOL; (* *)
gH_Filler_Production_DO6 : BOOL; (* *)
gH_Filler_Production_DO7 : BOOL; (* *)
(*************************************************************************)
(* FILLER I/O SIGNALS - CIP *)
(*************************************************************************)
gH_Filler_CIP_DI0 : BOOL; (* *)
gH_Filler_CIP_DI1 : BOOL; (* *)
gH_Filler_CIP_DI2 : BOOL; (* *)
gH_Filler_CIP_DI3 : BOOL; (* *)
gH_Filler_CIP_DI4 : BOOL; (* *)
gH_Filler_CIP_DI5 : BOOL; (* *)
gH_Filler_CIP_DI6 : BOOL; (* *)
gH_Filler_CIP_DI7 : BOOL; (* *)
gH_Filler_CIP_DO0 : BOOL; (* *)
gH_Filler_CIP_DO1 : BOOL; (* *)
gH_Filler_CIP_DO2 : BOOL; (* *)
gH_Filler_CIP_DO3 : BOOL; (* *)
gH_Filler_CIP_DO4 : BOOL; (* *)
gH_Filler_CIP_DO5 : BOOL; (* *)
gH_Filler_CIP_DO6 : BOOL; (* *)
gH_Filler_CIP_DO7 : BOOL; (* *)
(*************************************************************************)
(* Syrup Room I/O SIGNALS *)
(*************************************************************************)
gH_Syrup_Room_DI0 : BOOL; (* *)
gH_Syrup_Room_DI1 : BOOL; (* *)
gH_Syrup_Room_DI2 : BOOL; (* *)
gH_Syrup_Room_DI3 : BOOL; (* *)
gH_Syrup_Room_DI4 : BOOL; (* *)
gH_Syrup_Room_DI5 : BOOL; (* *)
gH_Syrup_Room_DI6 : BOOL; (* *)
gH_Syrup_Room_DI7 : BOOL; (* *)
gH_Syrup_Room_DO0 : BOOL; (* *)
gH_Syrup_Room_DO1 : BOOL; (* *)
gH_Syrup_Room_DO2 : BOOL; (* *)
gH_Syrup_Room_DO3 : BOOL; (* *)
gH_Syrup_Room_DO4 : BOOL; (* *)
gH_Syrup_Room_DO5 : BOOL; (* *)
gH_Syrup_Room_DO6 : BOOL; (* *)
gH_Syrup_Room_DO7 : BOOL; (* *)
(*************************************************************************)
(* CIP Room I/O SIGNALS *)
(*************************************************************************)
gH_CIP_Room_DI0 : BOOL; (* *)
gH_CIP_Room_DI1 : BOOL; (* *)
gH_CIP_Room_DI2 : BOOL; (* *)
gH_CIP_Room_DI3 : BOOL; (* *)
gH_CIP_Room_DI4 : BOOL; (* *)
gH_CIP_Room_DI5 : BOOL; (* *)
gH_CIP_Room_DI6 : BOOL; (* *)
gH_CIP_Room_DI7 : BOOL; (* *)
gH_CIP_Room_DO0 : BOOL; (* *)
gH_CIP_Room_DO1 : BOOL; (* *)
gH_CIP_Room_DO2 : BOOL; (* *)
gH_CIP_Room_DO3 : BOOL; (* *)
gH_CIP_Room_DO4 : BOOL; (* *)
gH_CIP_Room_DO5 : BOOL; (* *)
gH_CIP_Room_DO6 : BOOL; (* *)
gH_CIP_Room_DO7 : BOOL; (* *)
END_VAR
(* @OBJECT_END := HMI_IO_Showing *)
(* @CONNECTIONS := HMI_IO_Showing
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,44 @@
(* @GLOBAL_VARIABLE_LIST := HMI_Local_CIP_Variables *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************)
(* CIP COMMANDS *)
(*************************************************************************)
gH_Blender_CIP_ProgStart : BOOL ; (* *)
gH_Blender_CIP_ProgStop : BOOL ; (* *)
gH_Blender_CIP_ProgPause : BOOL ; (* *)
gH_Blender_CIP_ProgStepUp : BOOL ; (* *)
gH_Blender_CIP_ProgStepDown : BOOL ; (* *)
gH_Blender_CIP_ProgInizialize : BOOL ; (* *)
gH_Blender_CIP_Running : BOOL ; (* *)
gH_Blender_CIP_RunPause : BOOL ; (* *)
(*************************************************************************)
(* CIP WORDS *)
(*************************************************************************)
gH_Blender_CIP_LinkName : STRING(32) ;(* From HMI Link Program Name *)
gH_Blender_CIP_SimpleName : STRING(32) ;(* To/From HMI Actual Running Simple Program *)
gH_Blender_CIP_StepTime : UINT ;
gH_Blender_CIP_StepNum : UINT ;
gH_Blender_CIP_TotalTime : UDINT ;
gH_Blender_CIP_LinkProgPerc : REAL ; (* *)
gH_Blender_CIP_SimpleProgPerc : REAL ; (* *)
gH_Blender_CIP_PV_HighCond : REAL ; (* From HMI CIP Target High Conductivity *)
gH_Blender_CIP_PV_LowCond : REAL ; (* From HMI CIP Low Conductivity Threshold *)
gH_Blender_CIPHeaterTempPV : REAL ;
gH_Blender_CIPReturnTempPV : REAL ;
gH_Blender_CIP_SP_Temp : REAL ; (* From HMI CIP Target Temperature *)
gH_Blender_CIP_SP_HighCond : REAL ; (* From HMI CIP Target High Conductivity *)
gH_Blender_CIP_SP_LowCond : REAL ; (* From HMI CIP Low Conductivity Threshold *)
END_VAR
(* @OBJECT_END := HMI_Local_CIP_Variables *)
(* @CONNECTIONS := HMI_Local_CIP_Variables
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,65 @@
(* @GLOBAL_VARIABLE_LIST := HMI_Service *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************)
(* SERVICE STATUS *)
(*************************************************************************)
gH_WaterPipeSpeed : REAL ;
gH_WaterVFMSpeed : REAL ;
gH_EstimateDeairCO2 : REAL ;
gH_EstimateFillerCO2Loss : REAL ;
gH_InletWaterO2 : REAL ;
gH_DeairWaterO2 : REAL := 1.0 ;
gH_DeairNominalCO2Flow : REAL ;
gH_InletSyrupO2 : REAL ;
gH_EstimateProductO2 : REAL ;
gH_PIDH2OPropOut : REAL ;
gH_PIDH2OIntOut : REAL ;
gH_PIDH2ODerOut : REAL ;
gH_PIDSyrPropOut : REAL ;
gH_PIDSyrIntOut : REAL ;
gH_PIDSyrDerOut : REAL ;
gH_PIDCarboCO2PropOut : REAL ;
gH_PIDCarboCO2IntOut : REAL ;
gH_PIDCarboCO2DerOut : REAL ;
gH_EstimateFillerFlow : REAL ;
gH_SyrupProductAvailable : REAL ;
gH_PrdTankProductAvailable : REAL ;
gH_PrdPipeProductAvailable : REAL ;
gH_FillerProductAvailable : REAL ;
gH_TotalProductAvailable : REAL ;
gH_FillerStopContainer : BOOL ;
gH_DepallStop : BOOL ;
(*************************************************************************)
(* WORKSHOP TEST *)
(*************************************************************************)
gH_WorkshopTest : BOOL ;
gH_SIMCipMode : BOOL ;
gH_SIMCipRunning : BOOL ;
gH_SIMCipChangeSanitize : BOOL ;
gH_SIMCipDrainRequest : BOOL ;
gH_SIMCipCompleted : BOOL ;
gH_SIMCipCausticSanitizeRun : BOOL ;
gH_SIMFillerEV46Enable : BOOL ;
gH_SIMFillerEV62Enable : BOOL ;
gH_SIMFillerProdReady : BOOL ;
END_VAR
VAR_GLOBAL PERSISTENT
gH_TotalEmptyContainer : REAL ;
END_VAR
(* @OBJECT_END := HMI_Service *)
(* @CONNECTIONS := HMI_Service
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,291 @@
(* @GLOBAL_VARIABLE_LIST := HMI_Variables_Cmd *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************)
(* COMMANDS FROM HMI *)
(*************************************************************************)
gH_CMD_SyrupMFM_Prep : BOOL ; (* Syrup Tank & MFM StartUp Sequence Request *)
gH_CMD_SyrupTank_Prep : BOOL ; (* Syrup Line & Tank & MFM StartUp Sequence Request *)
gH_CMD_Deair_StartUp : BOOL ; (* Deairator StartUp Sequence Request *)
gH_CMD_FirstProduction : BOOL ; (* First Production Request *)
gH_CMD_PrdBrixTrackingReq : BOOL ; (* Product Brix Tracking Request *)
gH_CMD_SyrAutoReq : BOOL ; (* Syrup Autocorrection Request *)
gH_CMD_SyrDensimeterCal : BOOL ; (* Syrup Densimeter Calibration *)
gH_CMD_SyrRunOutReq : BOOL ; (* Syrup Run Out Request *)
gH_CMD_ProdTankDrainReq : BOOL ; (* Product Tank Drain Request *)
gH_CMD_ProdTankRunOutReq : BOOL ; (* Product Tank Run Out Request *)
gH_CMD_ProdTankPressReq : BOOL ; (* Product Tank Pressure Request *)
gH_CMD_ColdRinseReq : BOOL ; (* Blender Cold Rinse Request *)
gH_CMD_WarmRinseReq : BOOL ; (* Blender Warm Rinse Request *)
gH_CMD_BlenderMaintenance : BOOL ; (* Blender in Manteinance to configure mod valve *)
gH_CMD_ProdBrixRecoveryReq : BOOL ;
gH_CMD_CIP_TotalDrainReq : BOOL ;
gH_CMD_CIP_PrdTankFloodReq : BOOL ;
gH_CMD_CIP_DeairTankFloodReq : BOOL ;
gH_CMD_CIP_SyrTankFloodReq : BOOL ;
(*************************************************************************)
(* System Run Out *)
(*************************************************************************)
gH_CMD_SystemRunOutEnable : BOOL ;
gH_CMD_StartSystemRunOut : BOOL ;
gH_CMD_SyrLinePrepReq : BOOL ;
gH_CMD_SyrLineRinseReq : BOOL ;
gH_CMD_ProdPipeRunOutReq : BOOL ;
gH_CMD_ProdPipeDrainReq : BOOL ;
gH_CMD_ProdPipeRinseReq : BOOL ;
gH_CMD_SyrTankDrainReq : BOOL ;
gH_CMD_SyrTankRinseReq : BOOL ;
gH_FastChangeSequenceNum : INT ;
END_VAR
VAR_GLOBAL PERSISTENT
gH_CMD_Filler1Slctd : BOOL ;
gH_CMD_Filler2Slctd : BOOL ;
gH_CMD_SwapSyrupLine : BOOL ;
gH_CMD_SyrLine1Slctd : BOOL ;
gH_CMD_SyrLine2Slctd : BOOL ;
gH_CMD_EnableNextRecipe : BOOL ;
(*************************************************************************)
(* RECIPE UPDATES *)
(*************************************************************************)
gH_SyrFactUpdate : BOOL ;
gH_ValvesUpdate : BOOL ;
(*************************************************************************)
(* ON - OFF VALVES *)
(*************************************************************************)
gH_EV01_Auto : BOOL; (* *)
gH_EV02_Auto : BOOL; (* *)
gH_EV01_1_Auto : BOOL; (* *)
gH_EV02_1_Auto : BOOL; (* *)
gH_EV03_Auto : BOOL; (* *)
gH_EV04_Auto : BOOL; (* *)
gH_EV01_Manual : BOOL; (* *)
gH_EV02_Manual : BOOL; (* *)
gH_EV01_1_Manual : BOOL; (* *)
gH_EV02_1_Manual : BOOL; (* *)
gH_EV03_Manual : BOOL; (* *)
gH_EV04_Manual : BOOL; (* *)
gH_EV11_Auto : BOOL; (* *)
gH_EV12_Auto : BOOL; (* *)
gH_EV13_Auto : BOOL; (* *)
gH_EV14_Auto : BOOL; (* *)
gH_EV14_1_Auto : BOOL; (* *)
gH_EV15_Auto : BOOL; (* *)
gH_EV16_Auto : BOOL; (* *)
gH_EV16_1_Auto : BOOL; (* *)
gH_EV17_Auto : BOOL; (* *)
gH_EV18_Auto : BOOL; (* *)
gH_EV11_Manual : BOOL; (* *)
gH_EV12_Manual : BOOL; (* *)
gH_EV13_Manual : BOOL; (* *)
gH_EV14_Manual : BOOL; (* *)
gH_EV14_1_Manual : BOOL; (* *)
gH_EV15_Manual : BOOL; (* *)
gH_EV16_Manual : BOOL; (* *)
gH_EV16_1_Manual : BOOL; (* *)
gH_EV17_Manual : BOOL; (* *)
gH_EV18_Manual : BOOL; (* *)
gH_EV21_Auto : BOOL; (* *)
gH_EV22_Auto : BOOL; (* *)
gH_EV23_Auto : BOOL; (* *)
gH_EV23_1_Auto : BOOL; (* *)
gH_EV24_Auto : BOOL; (* *)
gH_EV25_Auto : BOOL; (* *)
gH_EV26_Auto : BOOL; (* *)
gH_EV27_Auto : BOOL; (* *)
gH_EV28_Auto : BOOL; (* *)
gH_EV21_Manual : BOOL; (* *)
gH_EV22_Manual : BOOL; (* *)
gH_EV23_Manual : BOOL; (* *)
gH_EV23_1_Manual : BOOL; (* *)
gH_EV24_Manual : BOOL; (* *)
gH_EV25_Manual : BOOL; (* *)
gH_EV26_Manual : BOOL; (* *)
gH_EV27_Manual : BOOL; (* *)
gH_EV28_Manual : BOOL; (* *)
gH_EV31_Auto : BOOL; (* *)
gH_EV32_Auto : BOOL; (* *)
gH_EV33_Auto : BOOL; (* *)
gH_EV34_Auto : BOOL; (* *)
gH_EV35_Auto : BOOL; (* *)
gH_EV36_Auto : BOOL; (* *)
gH_EV37_Auto : BOOL; (* *)
gH_EV38_Auto : BOOL; (* *)
gH_EV39_Auto : BOOL; (* *)
gH_EV31_Manual : BOOL; (* *)
gH_EV32_Manual : BOOL; (* *)
gH_EV33_Manual : BOOL; (* *)
gH_EV34_Manual : BOOL; (* *)
gH_EV35_Manual : BOOL; (* *)
gH_EV36_Manual : BOOL; (* *)
gH_EV37_Manual : BOOL; (* *)
gH_EV38_Manual : BOOL; (* *)
gH_EV39_Manual : BOOL; (* *)
gH_EV40_Auto : BOOL; (* *)
gH_EV41_Auto : BOOL; (* *)
gH_EV42_Auto : BOOL; (* *)
gH_EV43_Auto : BOOL; (* *)
gH_EV44_Auto : BOOL; (* *)
gH_EV45_Auto : BOOL; (* *)
gH_EV46_Auto : BOOL; (* *)
gH_EV47_Auto : BOOL; (* *)
gH_EV48_Auto : BOOL; (* *)
gH_EV49_Auto : BOOL; (* *)
gH_EV40_Manual : BOOL; (* *)
gH_EV41_Manual : BOOL; (* *)
gH_EV42_Manual : BOOL; (* *)
gH_EV43_Manual : BOOL; (* *)
gH_EV44_Manual : BOOL; (* *)
gH_EV45_Manual : BOOL; (* *)
gH_EV46_Manual : BOOL; (* *)
gH_EV47_Manual : BOOL; (* *)
gH_EV48_Manual : BOOL; (* *)
gH_EV49_Manual : BOOL; (* *)
gH_EV50_Auto : BOOL; (* *)
gH_EV51_Auto : BOOL; (* *)
gH_EV52_Auto : BOOL; (* *)
gH_EV53_Auto : BOOL; (* *)
gH_EV54_Auto : BOOL; (* *)
gH_EV55_Auto : BOOL; (* *)
gH_EV56_Auto : BOOL; (* *)
gH_EV57_Auto : BOOL; (* *)
gH_EV58_Auto : BOOL; (* *)
gH_EV59_Auto : BOOL; (* *)
gH_EV50_Manual : BOOL; (* *)
gH_EV51_Manual : BOOL; (* *)
gH_EV52_Manual : BOOL; (* *)
gH_EV53_Manual : BOOL; (* *)
gH_EV54_Manual : BOOL; (* *)
gH_EV55_Manual : BOOL; (* *)
gH_EV56_Manual : BOOL; (* *)
gH_EV57_Manual : BOOL; (* *)
gH_EV58_Manual : BOOL; (* *)
gH_EV59_Manual : BOOL; (* *)
gH_EV61_Auto : BOOL; (* *)
gH_EV62_Auto : BOOL; (* *)
gH_EV63_Auto : BOOL; (* *)
gH_EV64_Auto : BOOL; (* *)
gH_EV65_Auto : BOOL; (* *)
gH_EV66_Auto : BOOL; (* *)
gH_EV67_Auto : BOOL; (* *)
gH_EV68_Auto : BOOL; (* *)
gH_EV69_Auto : BOOL; (* *)
gH_EV61_Manual : BOOL; (* *)
gH_EV62_Manual : BOOL; (* *)
gH_EV63_Manual : BOOL; (* *)
gH_EV64_Manual : BOOL; (* *)
gH_EV65_Manual : BOOL; (* *)
gH_EV66_Manual : BOOL; (* *)
gH_EV67_Manual : BOOL; (* *)
gH_EV68_Manual : BOOL; (* *)
gH_EV69_Manual : BOOL; (* *)
gH_EV71_Auto : BOOL; (* *)
gH_EV72_Auto : BOOL; (* *)
gH_EV73_Auto : BOOL; (* *)
gH_EV74_Auto : BOOL; (* *)
gH_EV75_Auto : BOOL; (* *)
gH_EV76_Auto : BOOL; (* *)
gH_EV77_Auto : BOOL; (* *)
gH_EV78_Auto : BOOL; (* *)
gH_EV79_Auto : BOOL; (* *)
gH_EV80_Auto : BOOL; (* *)
gH_EV81_Auto : BOOL; (* *)
gH_EV83_Auto : BOOL; (* *)
gH_EV84_Auto : BOOL; (* *)
gH_EV89_Auto : BOOL; (* *)
gH_EV71_Manual : BOOL; (* *)
gH_EV72_Manual : BOOL; (* *)
gH_EV73_Manual : BOOL; (* *)
gH_EV74_Manual : BOOL; (* *)
gH_EV75_Manual : BOOL; (* *)
gH_EV76_Manual : BOOL; (* *)
gH_EV77_Manual : BOOL; (* *)
gH_EV78_Manual : BOOL; (* *)
gH_EV79_Manual : BOOL; (* *)
gH_EV80_Manual : BOOL; (* *)
gH_EV81_Manual : BOOL; (* *)
gH_EV83_Manual : BOOL; (* *)
gH_EV84_Manual : BOOL; (* *)
gH_EV89_Manual : BOOL; (* *)
(*************************************************************************)
(* MODULATING VALVES *)
(*************************************************************************)
gH_WaterValve_Auto : BOOL ; (* *)
gH_WaterValve_Manual : REAL ; (* *)
gH_SyrupValve_Auto : BOOL ; (* *)
gH_SyrupValve_Manual : REAL ; (* *)
gH_CO2CarboValve_Auto : BOOL ; (* *)
gH_CO2CarboValve_Manual : REAL ; (* *)
gH_CO2PressValve_Auto : BOOL ; (* *)
gH_CO2PressValve_Manual : REAL ; (* *)
gH_SyrupLevelValve_Auto : BOOL ; (* *)
gH_SyrupLevelValve_Manual : REAL ; (* *)
gH_VEP_DeaireationValve_Auto : BOOL ; (* *)
gH_VEP_DeaireationValve_Manual : REAL ; (* *)
gH_WaterTempValve_Man_Out_ON : BOOL ; (* Manual OUT Active *)
gH_WaterTempValve_Man_SP_ON : BOOL ; (* Manual SP Active *)
gH_WaterTempValve_Out_Man_Value : REAL ; (* Manual OUT control Value *)
gH_WaterTempValve_SP_Man_Value : REAL ; (* Manual SP control Value *)
gH_ProdTempValve_Man_Out_ON : BOOL ; (* Manual OUT Active *)
gH_ProdTempValve_Man_SP_ON : BOOL ; (* Manual SP Active *)
gH_ProdTempValve_Out_Man_Value : REAL ; (* Manual OUT control Value *)
gH_ProdTempValve_SP_Man_Value : REAL ; (* Manual SP control Value *)
gH_CIPTempValve_Man_Out_ON : BOOL ; (* Manual OUT Active *)
gH_CIPTempValve_Man_SP_ON : BOOL ; (* Manual SP Active *)
gH_CIPTempValve_Out_Man_Value : REAL ; (* Manual OUT control Value *)
gH_CIPTempValve_SP_Man_Value : REAL ; (* Manual SP control Value *)
(*************************************************************************)
(* PUMPS *)
(*************************************************************************)
gH_P1_WaterPump_Auto : BOOL ; (* *)
gH_P2_SyrupPump_Auto : BOOL ; (* *)
gH_P3_ProductPump_Auto : BOOL ; (* *)
gH_P4_VacuumPump_Auto : BOOL ; (* *)
gH_P5_WaterPump_Auto : BOOL ; (* *)
gH_P5_RinseTankPump_Auto : BOOL ; (* *)
gH_P6_RecircPump_Auto : BOOL ; (* *)
gH_P5_WaterPump_Manual : BOOL ; (* *)
gH_P1_WaterPump_Manual : BOOL ; (* *)
gH_P2_SyrupPump_Manual : BOOL ; (* *)
gH_P3_ProductPump_Manual : BOOL ; (* *)
gH_P3_ProductPumpFC_Manual : REAL ; (* *)
gH_P4_VacuumPump_Manual : BOOL ; (* *)
gH_P5_RinseTankPump_Manual : BOOL ; (* *)
gH_P6_RecircPump_Manual : BOOL ; (* *)
gH_SyrupRoomPump_Auto : BOOL ; (* *)
gH_SyrupRoomPump_Manual : BOOL ; (* *)
END_VAR
(* @OBJECT_END := HMI_Variables_Cmd *)
(* @CONNECTIONS := HMI_Variables_Cmd
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,353 @@
(* @GLOBAL_VARIABLE_LIST := HMI_Variables_Status *)
(* @PATH := '\/HMI_Variable' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************)
(* ON - OFF VALVES *)
(*************************************************************************)
gH_EV01_Status : BOOL; (* *)
gH_EV02_Status : BOOL; (* *)
gH_EV01_1_Status : BOOL; (* *)
gH_EV02_1_Status : BOOL; (* *)
gH_EV03_Status : BOOL; (* *)
gH_EV04_Status : BOOL; (* *)
gH_EV11_Status : BOOL; (* *)
gH_EV12_Status : BOOL; (* *)
gH_EV13_Status : BOOL; (* *)
gH_EV14_Status : BOOL; (* *)
gH_EV14_1_Status : BOOL; (* *)
gH_EV15_Status : BOOL; (* *)
gH_EV16_Status : BOOL; (* *)
gH_EV16_1_Status : BOOL; (* *)
gH_EV17_Status : BOOL; (* *)
gH_EV18_Status : BOOL; (* *)
gH_EV21_Status : BOOL; (* *)
gH_EV22_Status : BOOL; (* *)
gH_EV23_Status : BOOL; (* *)
gH_EV23_1_Status : BOOL; (* *)
gH_EV24_Status : BOOL; (* *)
gH_EV25_Status : BOOL; (* *)
gH_EV26_Status : BOOL; (* *)
gH_EV27_Status : BOOL; (* *)
gH_EV28_Status : BOOL; (* *)
gH_EV31_Status : BOOL; (* *)
gH_EV32_Status : BOOL; (* *)
gH_EV33_Status : BOOL; (* *)
gH_EV34_Status : BOOL; (* *)
gH_EV35_Status : BOOL; (* *)
gH_EV36_Status : BOOL; (* *)
gH_EV37_Status : BOOL; (* *)
gH_EV38_Status : BOOL; (* *)
gH_EV39_Status : BOOL; (* *)
gH_EV40_Status : BOOL; (* *)
gH_EV41_Status : BOOL; (* *)
gH_EV42_Status : BOOL; (* *)
gH_EV43_Status : BOOL; (* *)
gH_EV44_Status : BOOL; (* *)
gH_EV45_Status : BOOL; (* *)
gH_EV46_Status : BOOL; (* *)
gH_EV47_Status : BOOL; (* *)
gH_EV48_Status : BOOL; (* *)
gH_EV49_Status : BOOL; (* *)
gH_EV50_Status : BOOL; (* *)
gH_EV51_Status : BOOL; (* *)
gH_EV52_Status : BOOL; (* *)
gH_EV53_Status : BOOL; (* *)
gH_EV54_Status : BOOL; (* *)
gH_EV55_Status : BOOL; (* *)
gH_EV56_Status : BOOL; (* *)
gH_EV57_Status : BOOL; (* *)
gH_EV58_Status : BOOL; (* *)
gH_EV59_Status : BOOL; (* *)
gH_EV61_Status : BOOL; (* *)
gH_EV62_Status : BOOL; (* *)
gH_EV63_Status : BOOL; (* *)
gH_EV64_Status : BOOL; (* *)
gH_EV65_Status : BOOL; (* *)
gH_EV66_Status : BOOL; (* *)
gH_EV67_Status : BOOL; (* *)
gH_EV68_Status : BOOL; (* *)
gH_EV69_Status : BOOL; (* *)
gH_EV71_Status : BOOL; (* *)
gH_EV72_Status : BOOL; (* *)
gH_EV73_Status : BOOL; (* *)
gH_EV74_Status : BOOL; (* *)
gH_EV75_Status : BOOL; (* *)
gH_EV76_Status : BOOL; (* *)
gH_EV77_Status : BOOL; (* *)
gH_EV78_Status : BOOL; (* *)
gH_EV79_Status : BOOL; (* *)
gH_EV80_Status : BOOL; (* *)
gH_EV81_Status : BOOL; (* *)
gH_EV83_Status : BOOL; (* *)
gH_EV84_Status : BOOL; (* *)
gH_EV89_Status : BOOL; (* *)
gH_ManualActive : BOOL ; (* Something is in manual *)
(*************************************************************************)
(* PROCEDURES *)
(*************************************************************************)
gH_DeairStartUpRun : BOOL ; (* Deaerator StartUp Running *)
gH_SyrTankPrepRun : BOOL ; (* Syrup Tank Prep Running *)
gH_SyrMFMPrepRun : BOOL ; (* Syrup Tank Prep Running *)
gH_FirstProdRun : BOOL ; (* First Production Running *)
gH_SyrBrixAutoRun : BOOL ; (* Syrup Brix Autocorrection Running *)
gH_SyrDensimeterCalRun : BOOL ; (* Syrup densimeter Calibration Running *)
gH_SyrDensimeterCalShow : BOOL ; (* Syrup densimeter Calibration Show *)
gH_SyrRunOutRun : BOOL ; (* Syrup Run Out Running *)
gH_ProdTankRunOutRun : BOOL ; (* Product Tank Run Out Running *)
gH_PrdBrixTrackingRun : BOOL ; (* Product Brix Tracking procedure Running *)
gH_PrdTankDrainRun : BOOL ; (* Product Tank Drain Running *)
gH_PrdTankPressRun : BOOL ; (* Product Tank Pressure Running *)
gH_ColdRinseRun : BOOL ; (* Blender Cold Rinse Running *)
gH_WarmRinseRun : BOOL ; (* Blender Warm Rinse Running *)
gH_CIP_BlenderDrainRun : BOOL ; (* Blender total Drain In CIP Running *)
gH_CIP_ProdTankFloodRun : BOOL ; (* CIP Product Tank Flood Running *)
gH_CIP_DeairTankFloodRun : BOOL ; (* CIP Deaerator Tank Flood Running *)
gH_CIP_SyrTankFloodRun : BOOL ; (* CIP Syrup Tank Flood Running *)
gH_ProdBrixRecoveryRun : BOOL ;
gH_BlenderStateNum : INT ; (* 3 Syrup MFM preparation
5 Deaireator start up
7 Carbo water line
8 Product tank run out
9 Blend Fill System start up
10 Product tank drain
12 Product pipe run out
16 Syrup line preparation
18 Rinse
19 CIP *)
gH_BlendFillSysStartUpRun : BOOL ;
gH_BlendFillSysPressRun : BOOL ;
gH_BlendFillSysProdLoadRun : BOOL ;
gH_BlendFillSysProdSendRun : BOOL ;
(*************************************************************************)
(* METERS *)
(*************************************************************************)
gH_WaterFlowmeter_Fault : BOOL ; (* *)
gH_SyrupFlowmeter_Fault : BOOL ; (* *)
gH_CO2Flowmeter_Fault : BOOL ; (* *)
gH_mPDS1000_Fault : BOOL ;
gH_ProductMeter_Fault : BOOL ;
gH_mPDS1000_Run : BOOL ;
gH_ProductMeter_Run : BOOL ;
(*************************************************************************)
(* System Run Out *)
(*************************************************************************)
gH_SystemRunOutAsk : BOOL ;
gH_SystemRunOutEnabled : BOOL ;
gH_SystemRunOutRunning : BOOL ;
gH_CarboWaterLineRun : BOOL ;
gH_ProductPipeRunOutRun : BOOL ;
gH_ProductPipeDrainRun : BOOL ;
gH_SyrupTankPrepDone : BOOL ;
gH_CarboWaterLineDone : BOOL ;
gH_SyrupRunOutDone : BOOL ;
gH_ProductTankRunOutDone : BOOL ;
gH_ProductPipeRunOutDone : BOOL ;
gH_ProductPipeDrainDone : BOOL ;
gH_FastRinseDone : BOOL ;
gH_FillerRinseDone : BOOL ;
gH_FirstProductionDone : BOOL ;
gH_StopDepall : BOOL ;
gH_FillerBottleBlock : BOOL ;
gH_FillerRinseRun : BOOL ;
gH_FillerRinseTankMinLvl : BOOL ;
gH_FillerRinseTankMaxLvl : BOOL ;
gH_ProductTankMinLvl : BOOL ;
gH_FastChangeWait1 : BOOL ;
gH_FastChangeWait2 : BOOL ;
gH_FastChangeProcValue : REAL ;
(*************************************************************************)
(* SYSTEM *)
(*************************************************************************)
gH_HMIShutdownRequest : BOOL ; (* *)
gH_Blender_Running : BOOL ; (* *)
gH_Blender_Powered : BOOL ; (* *)
gH_CIPReturnFlowOk : BOOL ;
gH_ProdTankMinLevel : BOOL ;
gH_ProdTankLevelOk : BOOL ; (* Product Tank Minimum Recipe Level Acheaved *)
gH_ProdTankMaxLevel : BOOL ; (* Product Tank Maximum Level Acheaved *)
gH_DeairTankMinLevel : BOOL ; (* *)
gH_DeairTank2MinLevel : BOOL ; (* *)
gH_SyrupTankMinLevel : BOOL ; (* *)
gH_Blender_All_Auto : BOOL ; (* Everything in Auto *)
gH_BlendingMaintHour : UINT ;
(*************************************************************************)
(* PUMPS *)
(*************************************************************************)
gH_P1_WaterPump_Status : BOOL ; (* *)
gH_P5_WaterPump_Status : BOOL ; (* *)
gH_P2_SyrupPump_Status : BOOL ; (* *)
gH_P3_ProductPump_Status : BOOL ; (* *)
gH_P4_VacuumPump_Status : BOOL ; (* *)
gH_P5_RinseTankPump_Status : BOOL ; (* *)
gH_P6_RecircPump_Status : BOOL ; (* *)
gH_SyrupRoomPump_Status : BOOL ; (* *)
gH_SyrupRoomWaterPump_Status : BOOL ; (* *)
(*************************************************************************)
(* PROFIBUS *)
(*************************************************************************)
gH_FC3102_DP_Error : BOOL ; (* *)
gH_FC3102_DP_State : INT ; (* *)
gH_ProductPumpVFC_DP_Error : BOOL ; (* *)
gH_ProductPumpVFC_DP_State : INT ; (* *)
gH_ET200_DP_Error : BOOL ; (* *)
gH_ET200_DP_State : INT ; (* *)
gH_ProdPH_DP_Error : BOOL ; (* *)
gH_ProdPH_DP_State : INT ; (* *)
gH_ProdCond_DP_Error : BOOL ; (* *)
gH_ProdCond_DP_State : INT ; (* *)
gH_Water_VFM_DP_Error : BOOL ; (* *)
gH_Water_VFM_DP_State : INT ; (* *)
gH_Syrup_MFM_DP_Error : BOOL ; (* *)
gH_Syrup_MFM_DP_State : INT ; (* *)
gH_CarboCO2_MFM_DP_Error : BOOL ; (* *)
gH_CarboCO2_MFM_DP_State : INT ; (* *)
gH_ValvesBase_Node12_DP_Error : BOOL ; (* *)
gH_ValvesBase_Node12_DP_State : INT ; (* *)
gH_ValvesBase_Node13_DP_Error : BOOL ; (* *)
gH_ValvesBase_Node13_DP_State : INT ; (* *)
gH_Product_VFM_DP_Error : BOOL ; (* *)
gH_Product_VFM_DP_State : INT ; (* *)
gH_LowCond_DP_Node15_Error : BOOL ; (* *)
gH_LowCond_DP_Node15_State : INT ; (* *)
gH_HighCond_DP_Node16_Error : BOOL ; (* *)
gH_HighCond_DP_Node16_State : INT ; (* *)
gH_PAmPDS_DP_Error : BOOL ; (* *)
gH_PAmPDS_DP_State : INT ; (* *)
(*************************************************************************)
(* ANALOG VALUES - READ *)
(*************************************************************************)
gH_WaterDeairTemperature : REAL ; (* *)
gH_ProductTankPressurePV : REAL ; (* Product Tank Pressure Process Value *)
gH_ProductTankPressureSP : REAL ; (* Product Tank Pressure Set Point *)
gH_ProductTankLevel : REAL ; (* *)
gH_SyrupTankLevel : REAL ; (* *)
gH_ProductBrix : REAL ; (* *)
gH_ProductCO2 : REAL ; (* *)
gH_ProductO2Conc : REAL ; (* *)
gH_ProductConductivity : REAL ; (* *)
gH_BrixMeterRecipeNum : INT ;
gH_ProductTemperature : REAL ; (* *)
gH_ProductTemperaturePt100 : REAL ; (* *)
gH_WaterLineTemperature : REAL ; (* *)
gH_WaterTarget : REAL ; (* *)
gH_SyrupTarget : REAL ; (* *)
gH_CO2Target : REAL ; (* *)
gH_WaterFlowRate : REAL ; (* *)
gH_SyrupFlowRate : REAL ; (* *)
gH_CO2FlowRate : REAL ; (* *)
gH_BlenderProd : REAL ; (* Blender Production L/min *)
gH_EstFillerProd : REAL ; (* Estimated Filler Production L/min *)
gH_WaterTotalizer : REAL ; (* *)
gH_SyrupBrix : REAL ; (* *)
gH_SyrupDensity : REAL ; (* *)
gH_SyrupTemperature : REAL ; (* *)
gH_SyrupTotalizerKg : REAL ; (* *)
gH_SyrupTotalizerLt : REAL ; (* *)
gH_CO2Temperature : REAL ; (* *)
gH_CO2Density : REAL ; (* *)
gH_CO2Totalizer : REAL ; (* *)
gH_ActualCO2 : REAL ; (* *)
gH_CO2InjPressure : REAL ; (* *)
gH_CO2InjPressureSP : REAL ;
gH_ProductTotalizer : REAL ; (* *)
gH_DeairPressure : REAL ; (* *)
gH_mPDS1000_Brix : REAL ;
gH_mPDS1000_Dens : REAL ;
gH_mPDS1000_Temp : REAL ;
gH_ActualSyrupBrix : REAL ;
gH_ActualSyrupDens : REAL ;
gH_ActualSyrupTemp : REAL ;
gH_WaterPercentage : REAL ;
gH_SyrupPercentage : REAL ;
gH_ActualRatio : REAL ;
gH_SyrupBrixCorrection : REAL ;
gH_ProductBrixCorrection : REAL ;
gH_BlendError : REAL ; (* *)
gH_CarboError : REAL ; (* *)
gH_MaxBlendError : REAL ;
gH_MaxCarboCO2Error : REAL ;
gH_ProductFlow : REAL ;
gH_ProductTankHeight : REAL ;
gH_P3_Frequency : REAL ;
gH_P3_FrequencyFFOut : REAL ;
gH_FillingValveHead : REAL ;
gH_DiffSensorPressure : REAL ;
gH_FillingValve1Pressure : REAL ;
(*************************************************************************)
(* MODULATING VALVES *)
(*************************************************************************)
gH_WaterValveOV : REAL; (* *)
gH_WaterValveFFOut : REAL ; (* *)
gH_SyrupValveOV : REAL ; (* *)
gH_SyrupValveFFOut : REAL ; (* *)
gH_CO2CarboValveOV : REAL ; (* *)
gH_CarboCO2ValveFFOut : REAL ; (* *)
gH_SyrupLevelValveOV : REAL ; (* *)
gH_SyrupLevelValveFFOut : REAL ; (* *)
gH_CO2PressValveOV : REAL ; (* *)
gH_WaterTempValve_OV : REAL ;
gH_WaterTempValve_SP : REAL ; (* *)
gH_WaterTempValve_PV : REAL ; (* *)
gH_ProdTempValve_OV : REAL ; (* *)
gH_ProdTempValve_SP : REAL ; (* *)
gH_ProdTempValve_PV : REAL ; (* *)
gH_CIPTempValve_OV : REAL ; (* *)
gH_CIPTempValve_SP : REAL ; (* *)
gH_CIPTempValve_PV : REAL ; (* *)
gH_VEP_DeaireationValveOV : REAL ; (* *)
gH_VEP_DeairFlowPV : REAL ; (* *)
END_VAR
VAR_GLOBAL PERSISTENT
(*************************************************************************)
(* PROCESSOR STATES *)
(*************************************************************************)
gH_Blender_Prod_CIP : BOOL ; (* 1 = production, 0 = CIP *)
gH_Blender_Rinse : BOOL ; (* *)
gH_SyrupRunOutCount : REAL ;
END_VAR
(* @OBJECT_END := HMI_Variables_Status *)
(* @CONNECTIONS := HMI_Variables_Status
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
(* @PATH := '\/CIP Structure' *)
TYPE Input_CIP_Signals :
STRUCT
CIP_Ready : BOOL ;
Drain_Request : BOOL ;
Rinse_Request : BOOL ;
CIP_Completed : BOOL ;
Spare4 : BOOL ;
Spare5 : BOOL ;
Spare6 : BOOL ;
Spare7 : BOOL ;
Spare8 : BOOL ;
Spare9 : BOOL ;
Spare10 : BOOL ;
Spare11 : BOOL ;
Spare12 : BOOL ;
Spare13 : BOOL ;
Spare14 : BOOL ;
Spare15 : BOOL ;
Spare16 : BOOL ;
Spare17 : BOOL ;
Spare18 : BOOL ;
Spare19 : BOOL ;
Spare20 : BOOL ;
Spare21 : BOOL ;
Spare22 : BOOL ;
Spare23 : BOOL ;
Spare24 : BOOL ;
Spare25 : BOOL ;
Spare26 : BOOL ;
Spare27 : BOOL ;
Spare28 : BOOL ;
Spare29 : BOOL ;
Spare30 : BOOL ;
Spare31 : BOOL ;
Spare_Word0 : WORD ;
Spare_Word1 : WORD ;
Spare_Word2 : WORD ;
Spare_Word3 : WORD ;
Spare_Real0 : REAL ;
Spare_Real1 : REAL ;
Spare_Real2 : REAL ;
Spare_Real3 : REAL ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,15 @@
(* @GLOBAL_VARIABLE_LIST := Input_Signal *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
Omegat : REAL;
Ramp_Sgn : REAL;
END_VAR
(* @OBJECT_END := Input_Signal *)
(* @CONNECTIONS := Input_Signal
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,20 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '4096' *)
FUNCTION_BLOCK Integral
VAR_INPUT
i_NewValue : REAL;
i_IntCycle : REAL ;
END_VAR
VAR_IN_OUT
Out_Integral : REAL;
END_VAR
VAR
mOldValue : REAL;
END_VAR
(* @END_DECLARATION := '0' *)
(* Trapezoidal Integral Method *)
Out_Integral := Out_Integral + ( mOldValue + (i_NewValue - mOldValue ) * 0.5 ) * i_IntCycle;
mOldValue := i_NewValue;
END_FUNCTION_BLOCK

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK LowPassFilter
VAR_INPUT
i_Value : REAL ; (* Istant Value to Filter *)
i_Num : UINT ; (* Number of sample to Average - 0 = No filter - *)
i_Enable : BOOL ; (* Enable the filter *)
END_VAR
VAR_OUTPUT
FilterOut : REAL ;
END_VAR
VAR
mDataArray : ARRAY [0..49] OF REAL ;
i : INT ;
j : INT ;
mArrayPtr : INT ; (* Actual array index during array charge *)
mTemp : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Enable THEN
IF i_Num >0 THEN
IF i_Num > 49 THEN
i_Num := 49 ; (* Limit the number of samples *)
END_IF
IF mArrayPtr <= i_Num THEN (* Charging the Array *)
FOR j:=mArrayPtr TO 1 BY -1 DO
mDataArray[j] := mDataArray[j - 1] ; (* Right Shifting *)
END_FOR
mDataArray[0] := i_Value ;
mTemp := 0.0 ;
FOR i:=0 TO mArrayPtr DO
mTemp := mTemp + mDataArray[i] ; (* Dinamic Averaging *)
END_FOR
IF (mArrayPtr + 1)<>0 THEN
FilterOut := mTemp / (mArrayPtr + 1) ;
END_IF
mArrayPtr := mArrayPtr + 1 ;
IF mArrayPtr > i_Num THEN
mArrayPtr := i_Num ;
END_IF
END_IF
ELSE
FilterOut := i_Value ;
END_IF
ELSE
FOR i:=0 TO mArrayPtr DO
mDataArray[i] := 0 ; (* Right Shifting *)
END_FOR
mArrayPtr := 0 ;
FilterOut := i_Value ;
END_IF
END_FUNCTION_BLOCK

View File

@ -0,0 +1,66 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK LowPassFilterOpt
VAR_INPUT
i_Value : REAL ; (* Istant Value to Filter *)
i_Num : UINT ; (* Number of sample to Average - 0 = No filter - *)
i_Enable : BOOL ; (* Enable the filter *)
END_VAR
VAR_OUTPUT
FilterOut : REAL ;
END_VAR
VAR
mDataArray : ARRAY [0..49] OF REAL ;
mArrayLoaded : BOOL ;
mArrayCleaned : BOOL ;
i : UINT ;
mArrayPtr : UINT ; (* Actual array index during array charge *)
mLastValue : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Enable THEN
IF i_Num>0 THEN
mArrayCleaned := FALSE ;
IF i_Num > 49 THEN
i_Num := 49 ; (* Limit the number of samples *)
END_IF
IF NOT mArrayLoaded THEN
IF mArrayPtr < i_Num THEN (* Charging the Array *)
mDataArray[mArrayPtr] := i_Value ;
FilterOut := (FilterOut * mArrayPtr + i_Value) / (mArrayPtr + 1) ;
mArrayPtr := mArrayPtr + 1 ;
ELSE
mArrayLoaded := TRUE ;
mArrayPtr := i_Num - 1 ;
END_IF
END_IF
IF mArrayLoaded THEN
mLastValue := mDataArray[mArrayPtr] ;
mDataArray[mArrayPtr] := i_Value ;
IF mArrayPtr=0 THEN
mArrayPtr := i_Num - 1 ;
ELSE
mArrayPtr := mArrayPtr - 1 ;
END_IF
(* Mean Value Calculation *)
FilterOut := FilterOut + ((i_Value - mLastValue) / i_Num) ;
END_IF
ELSE
mArrayLoaded := FALSE ;
FilterOut := i_Value ;
mArrayPtr := 0 ;
END_IF
ELSE
IF NOT mArrayCleaned THEN
FOR i:=0 TO 49 DO
mDataArray[i] := 0 ;
mArrayCleaned := TRUE ;
END_FOR
END_IF
mArrayLoaded := FALSE ;
FilterOut := i_Value ;
mArrayPtr := 0 ;
END_IF
END_FUNCTION_BLOCK

View File

@ -0,0 +1,61 @@
(* @GLOBAL_VARIABLE_LIST := Maselli *)
(* @PATH := '\/Product_Syrup_Meters' *)
(* @SYMFILEFLAGS := '59392' *)
VAR_GLOBAL
(*************************************************************************************)
(* OUTPUT TO Maselli *)
(*************************************************************************************)
gMaselliOptoEnabled AT%MB2010 : BOOL ;
gMaselliReset AT%MB2011 : BOOL ;
gMaselliSetNewRec AT%MB2012 : BOOL ;
gMaselliNumRecipe AT%MB2013 : INT ;
gMaselliUC05_Enabled AT%MB2015 : BOOL ;
gMaselliUC05_ZeroCO2 AT%MB2016 : REAL;
gMaselliUR22_Enabled AT%MB2020 : BOOL ;
gMaselliUR22_RecipeType AT%MB2021 : REAL; (* 0: Regular, 2: Diet - per ora non usato*)
gMaselliUR22_ZeroBrix AT%MB2025 : REAL;
(*************************************************************************************)
(* INPUT FROM Maselli Opto *)
(*************************************************************************************)
gMaselli_Block : MaselliOpto_Type ;
gMaselliStatus : WORD ;
gMaselliStatusArray AT%MB500 : ARRAY[0..15] OF BOOL ;
gMaselliProdFlag2 AT%MB500 : BOOL ;
gMaselliProdFlag1 AT%MB501 : BOOL ;
gMaselliDerivativeAction AT%MB502 : BOOL ;
gMaselliIntegralAction AT%MB503 : BOOL ;
gMaselliCO2Regulation AT%MB504 : BOOL ;
gMaselliCO2CntrFunct AT%MB505 : BOOL ;
gMaselliLineStopped AT%MB506 : BOOL ;
gMaselliTempRegulation AT%MB507 : BOOL ;
gMaselliBrixRegulation AT%MB508 : BOOL ;
gMaselliWinding AT%MB509 : BOOL ;
gMaselliBxCntrFunct AT%MB510 : BOOL ;
gMaselliLampFailure AT%MB511 : BOOL ;
gMaselliCO2Alarm AT%MB512 : BOOL ;
gMaselliBrixAlarm AT%MB513 : BOOL ;
gMaselliCO2CycleRun AT%MB514 : BOOL ;
gMaselliPumpOn AT%MB515 : BOOL ;
gMaselliError : BOOL ;
gMaselliErrorCode : DWORD ;
(*************************************************************************************)
(* INPUT FROM Maselli UC05 *)
(*************************************************************************************)
gMaselliUC05_Block : MaselliUC05_Type ;
(*************************************************************************************)
(* INPUT FROM Maselli UR22 *)
(*************************************************************************************)
gMaselliUR22_Block : MaselliUR22_Type ;
END_VAR
(* @OBJECT_END := Maselli *)
(* @CONNECTIONS := Maselli
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

View File

@ -0,0 +1,31 @@
(* @PATH := '\/Product Syrup Meters' *)
TYPE MaselliOpto_Type :
STRUCT
(************** Next Structure Length is 72 Bytes**************************)
DataBusy : BOOL ;
CmdExec : BOOL ;
ComError : BOOL ;
Dummy : BOOL ;
ErrorCode : DWORD ;
Status : WORD ;
ProdRecipeNum : INT ;
ProdBrix : REAL ;
ProdTemp : REAL ;
ProdBrix_Tg : REAL ;
ProdBrix_LowAlrm : REAL ;
ProdBrix_HighAlrm: REAL ;
ProdCO2 : REAL ;
CO2Press : REAL ;
CO2Temp : REAL ;
ProdCO2_Tg : REAL ;
ProdCO2_LowAlrm: REAL ;
ProdCO2_HighAlrm: REAL ;
ProdBrix_Comp : REAL ;
ProdBrix_NoComp: REAL ;
LinePress : REAL ;
LineTemp : REAL ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,25 @@
(* @PATH := '\/Product Syrup Meters' *)
TYPE MaselliUC05_Type :
STRUCT
DataBusy : BOOL ; (* Set whenever the driver has sended the ? Command - Reset When Ready *)
CmdExec : BOOL ; (* Notifies that the driver is executing a specific command *)
ComError : BOOL ; (* Driver Error *)
Dummy : BOOL ;
ErrorCode : DWORD ; (* Error Code *)
CO2_Value : REAL ;
CO2_Zero : REAL ;
CO2_Span : REAL ;
CO2_Damping : REAL ;
CO2_NumCurve : REAL ;
CO2_Temp : REAL ;
CO2_LineTemp : REAL ;
CO2_Press : REAL ;
CO2_LinePress : REAL ;
CO2_BitCW : WORD ;
CO2_CicleTime : REAL ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,28 @@
(* @PATH := '\/Product Syrup Meters' *)
TYPE MaselliUR22_Type :
STRUCT
DataBusy : BOOL ; (* Set whenever the driver has sended the ? Command - Reset When Ready *)
CmdExec : BOOL ; (* Notifies that the driver is executing a specific command *)
ComError : BOOL ; (* Driver Error *)
Dummy : BOOL ;
ErrorCode : DWORD ; (* Error Code *)
Brix_Value : REAL ;
Brix_Zero : REAL ;
Brix_Span : REAL ;
Brix_Damping : REAL ;
Brix_STD_Value : REAL ;
Brix_STD_PV : REAL ;
Brix_STD_Range : REAL ;
Brix_STD_Factor : REAL ;
Brix_Temp : REAL ;
Brix_Press : REAL ;
Prisma_Temp : REAL ;
Derivative : REAL ;
Humidity : REAL ;
BitCW : WORD ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION MaxCarboCO2_Vol : REAL
VAR_INPUT
i_Temp : REAL ;
i_Press : REAL ;
END_VAR
VAR
mAbsTemp : REAL ;
mAux : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_Temp<=0 THEN i_Temp:= 12.0 ; END_IF
mAbsTemp := i_Temp + gZeroAbsolute ;
IF (0.03275 * mAbsTemp - 7.9567)<>0 AND i_Press <>0 AND (0.000261 + mAux * (1 + 1.0332 / i_Press))<>0 THEN
mAux := (0.01898 - 0.0000476 * mAbsTemp) / (0.03275 * mAbsTemp - 7.9567) ;
MaxCarboCO2_Vol := i_Press * mAbsTemp / 1.0332 * (0.000261 + mAux * (1 + 1.0332 / i_Press)) ;
ELSE
MaxCarboCO2_Vol := -1 ;
END_IF
END_FUNCTION

View File

@ -0,0 +1,44 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION_BLOCK MessageScroll
VAR_INPUT
msg_array : ARRAY [0..70] OF BOOL;
scroll_sec : INT;
END_VAR
VAR_OUTPUT
msg_code: INT;
END_VAR
VAR
mONS: R_TRIG ;
msg_ptr: POINTER TO BYTE;
i_sec: INT;
i_msg: INT;
msg_active: BOOL;
END_VAR
(* @END_DECLARATION := '0' *)
mONS(CLK:=gClock_1s) ;
IF i_msg < SIZEOF(msg_array) THEN
msg_ptr := ADR (msg_array[i_msg]) ;
IF msg_ptr^ = 1 THEN
msg_active := TRUE;
msg_code := i_msg ;
IF mONS.Q THEN
IF i_sec <= scroll_sec THEN
i_sec := i_sec + 1;
ELSE
i_sec := 0;
i_msg := i_msg + 1;
END_IF
END_IF
ELSE
i_msg := i_msg + 1;
i_sec := 0;
END_IF
ELSE
i_msg := 0 ;
msg_active := FALSE;
msg_code := i_msg ;
END_IF
END_FUNCTION_BLOCK

View File

@ -0,0 +1,7 @@
(* @PATH := '' *)
TYPE Message_Scroll :
STRUCT
gH_Message : ARRAY [0..70] OF BOOL;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,663 @@
(* @PATH := '\/TASK0_VOID' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM MFMAnalog_Values
VAR
mCarboCO2DeltaPSim : REAL ;
mTemp : MFM_Real_Struct ;
mAuxONS : F_TRIG ;
mBlendStopONS : BOOL ;
mBlendStopDly : TOF ;
mAuxTP : TP ;
mH2OValveSlew : SlewLimit ;
mH2OFlowFlted : LowPassFilter ;
mSyrValveSlew : SlewLimit ;
mSyrFlowFlted : LowPassFilter ;
mCarboCO2ValveSlew : SlewLimit ;
mCarboCO2FlowFlted : LowPassFilter ;
mWaterFlowTmp : REAL ;
mSyrupFlowTmp : REAL ;
mCarboCO2FlowTmp : REAL ;
mCO2InjPressure : REAL ;
mWaterFlowDld : Delay ;
mSyrupFlowDld : Delay ;
mCarboCO2FlowDld : Delay ;
mWaterVFMError : LREAL ;
mWaterDRand : FW_DRand ;
mCO2WaterEffectDRand : FW_DRand ;
mCO2WaterCoupling : REAL ;
mSyrupMFMError : LREAL ;
mSyrupDRand : FW_DRand ;
mCO2MFMError : LREAL ;
mCO2DRand : FW_DRand ;
mH2OTotFlted : LowPassFilter ;
mSyrupTotFlted : LowPassFilter ;
mSyrupDensFlted : LowPassFilter ;
mSyrupBrixFlted : LowPassFilter ;
mSyrupTempFlted : LowPassFilter ;
mCarboCO2TotFlted : LowPassFilter ;
mCarboCO2TempFlted : LowPassFilter ;
mCarboCO2DensFlted : LowPassFilter ;
mCO2InjPressFlted : LowPassFilter ;
mProdFlowFlt : LowPassFilter ;
mCO2DensSim : REAL ;
mDummy : BOOL ;
mProdFlowFlted : LowPassFilter;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF NOT gH_Blender_OPT_Simulation THEN
IF gH_Blender_OPT_Conductimeter_Profibus THEN
mTemp := ConvertReal(gLowCond_Node15 ) ;
gLowCond_Conductivity := mTemp.Analog_Value ;
gLowCond_Conductivity_State := mTemp.Value_State ;
gIn_C2_Conductivity_Water := 1000*gLowCond_Conductivity;
mTemp := ConvertReal(gLowCondTemp_Node15 ) ;
gLowCond_Temperature := mTemp.Analog_Value ;
gLowCond_Temperature_State := mTemp.Value_State ;
gCIPReturnTemp_PV:=gLowCond_Temperature;
mTemp := ConvertReal(gHighCond_Node16 ) ;
gHighCond_Conductivity := mTemp.Analog_Value ;
gHighCond_Conductivity_State := mTemp.Value_State ;
gIn_C1_Conductivity_Caustic := 1*gHighCond_Conductivity;
mTemp := ConvertReal(gHighCondTemp_Node16 ) ;
gHighCond_Temperature := mTemp.Analog_Value ;
gHighCond_Temperature_State := mTemp.Value_State ;
gCIPHeaterTemp_PV:=gHighCond_Temperature;
END_IF
mTemp := ConvertReal( gProductFlow_Node17 ) ;
gVFM_ProductFlow := mTemp.Analog_Value ; (* Product Flowrate Reading From FM Node17 *)
gVFM_ProductFlow_State := mTemp.Value_State ; (* Product Flowrate Error Code *)
mTemp := ConvertReal( gProductTotalizer1_Node17 ) ;
gVFM_ProductTotalizer := mTemp.Analog_Value ; (* Product Totalizer Reading From FM Node17 *)
gVFM_ProductTotalizer_State := mTemp.Value_State ; (* Product Totalizer Error Code *)
mTemp := ConvertReal(gProdPH_Node18 ) ;
gProdPH_PHValue := mTemp.Analog_Value ;
gProdPH_PHValue_State := mTemp.Value_State ;
mTemp := ConvertReal(gTempProdPH_Node18 ) ;
gProdPH_Temperature := mTemp.Analog_Value ;
gProdPH_Temperature_State := mTemp.Value_State ;
mTemp := ConvertReal(gProdCond_Node19 ) ;
gProdCond_Conductivity := mTemp.Analog_Value ;
gProdCond_Conductivity_State := mTemp.Value_State ;
gProductConductivity := 1000*gProdCond_Conductivity;
mTemp := ConvertReal(gTempProdCond_Node19 ) ;
gProdCond_Temperature := mTemp.Analog_Value ;
gProdCond_Temperature_State := mTemp.Value_State ;
mTemp := ConvertReal( gWaterFlow_Node20 ) ;
gMFM_WaterFlow := mTemp.Analog_Value ; (* Water Flowrate Reading From VFM Node20 *)
gMFM_WaterFlow_State := mTemp.Value_State ; (* Water Flowrate Error Code *)
mTemp := ConvertReal( gWaterTotalizer1_Node20 ) ;
gMFM_WaterTotalizer := mTemp.Analog_Value ; (* Water Totalizer Reading From VFM Node20 *)
gMFM_WaterTotalizer_State := mTemp.Value_State ; (* Water Totalizer Error Code *)
mTemp := ConvertReal( gSyrMassFlow_Node21 ) ;
gMFM_Syrup1Flow := mTemp.Analog_Value ; (* Syrup Flowrate Reading From MFM Node21 *)
gMFM_Syrup1Flow_State := mTemp.Value_State ; (* Syrup Flowrate Error Code *)
mTemp := ConvertReal( gSyrTemperature_Node21 ) ;
gMFM_TemperatureSyrup1 := mTemp.Analog_Value ; (* Syrup Temperature Reading From MFM Node21 *)
IF gMFM_TemperatureSyrup1>200 THEN
gMFM_TemperatureSyrup1 := gMFM_TemperatureSyrup1 - gZeroAbsolute ;
END_IF
gMFM_TemperatureSyrup1_State := mTemp.Value_State ;(* Syrup Temperature Error Code *)
mTemp := ConvertReal(gSyrTotalizer1_Node21 ) ;
gMFM_Syrup1Totalizer := mTemp.Analog_Value ;
gMFM_Syrup1Totalizer_State := mTemp.Value_State ;
mTemp := ConvertReal( gSyrDensity_Node21 ) ;
gMFM_Syrup1Density := mTemp.Analog_Value + gH2O_Density_Off ;
gMFM_Syrup1Density_State := mTemp.Value_State ;
mTemp := ConvertReal( gSyrBrix_Node21 ) ;
IF gWorkshopTest THEN
gMFM_Syrup1Brix := gTestSyrBrix ;
ELSE
gMFM_Syrup1Brix := mTemp.Analog_Value ;
END_IF
gMFM_Syrup1Brix_State := mTemp.Value_State ;
mTemp := ConvertReal( gCO2MassFlow_Node22 ) ;
gMFM_CO2Flow := mTemp.Analog_Value ;
gMFM_CO2Flow_State := mTemp.Value_State ;
mTemp := ConvertReal( gCO2Temperature_Node22 ) ;
gMFM_CO2Temperature := mTemp.Analog_Value ;
IF gMFM_CO2Temperature>200 THEN
gMFM_CO2Temperature := gMFM_CO2Temperature - gZeroAbsolute ;
END_IF
gMFM_CO2Temperature_State := mTemp.Value_State ;
mTemp := ConvertReal( gCO2Density_Node22 ) ;
gMFM_CO2Density := mTemp.Analog_Value ;
gMFM_CO2Density_State := mTemp.Value_State ;
mTemp := ConvertReal( gCO2Totalizer1_Node22 ) ;
gMFM_CO2Totalizer := mTemp.Analog_Value ;
gMFM_CO2Totalizer_State := mTemp.Value_State ;
mCO2InjPressure := CO2InjPressure(i_Temp:=gMFM_CO2Temperature ,i_Dens:=gMFM_CO2Density) ;
ELSE (* Simulation *)
IF gBlenderProdMode THEN
(* Calculates the flow across the water valve *)
mH2OValveSlew(i_InValue:=gR_Out_H2O_PID, i_SlewMax:=15,i_Cycle:=gTask0Cycle_Time, out:=gH2OValveSlewOut) ;
IF (gCarboWaterLine_Running OR gDeairStartUp_Running) AND gH_EV22_Status THEN
gH2OValveSlewOut := 4 ;
END_IF
mCarboCO2DeltaPSim := DeltaP(i_Flow:=gCarboCO2FlowSim, i_K:= gCarboCO2ValveCv, i_Valve:=gCarboCO2ValveSlewOut) ;
mWaterFlowTmp := ValveFlow(i_DeltaP:=gWaterValveDeltaP-0.02*mCarboCO2DeltaPSim ,i_ValveOp:=gH2OValveSlewOut ,i_KFF:=0.055, i_Dens:=gH2O_Density ) + mWaterVFMError + mCO2WaterCoupling ;
mH2OFlowFlted(i_Value:=mWaterFlowTmp,i_Num:=10 ,i_Enable:=TRUE) ;
mWaterFlowDld(i_Value:=mH2OFlowFlted.FilterOut ,i_Sample:=2 ) ;
mCO2WaterEffectDRand(nSeed:=0) ;
IF (gCarboStillProduct OR gH_Blender_OPT_DoubleDeair) AND gWaterPipe_Vel>0 AND gBlenderStableFlow AND gAlwaysOff THEN
mCO2WaterCoupling := mCO2WaterEffectDRand.fRndNum * (1 / EXPT(gWaterPipe_Vel,3)) * mWaterFlowDld.i_out * 0.02 ;
ELSE
mCO2WaterCoupling := 0.0 ;
END_IF
mWaterDRand(nSeed:=0) ;
mWaterVFMError := mWaterDRand.fRndNum * gWaterVFMCalcError ;
gWaterFlowSim := mWaterFlowDld.i_out ;
mSyrValveSlew(i_InValue:=gR_Out_SYR_PID, i_SlewMax:=20,i_Cycle:=gTask0Cycle_Time, out:=gSyrValveSlewOut) ;
mSyrupFlowTmp := ValveFlow(i_DeltaP:=gSyrupValveDeltaP ,i_ValveOp:=gSyrValveSlewOut ,i_KFF:=0.35, i_Dens:=gActualRecipe_SyrDens) + mSyrupMFMError ;
mSyrFlowFlted(i_Value:=mSyrupFlowTmp,i_Num:=10 ,i_Enable:=TRUE) ;
mSyrupFlowDld(i_Value:=mSyrFlowFlted.FilterOut ,i_Sample:=5) ;
mSyrupDRand(nSeed:=0) ;
mSyrupMFMError := mSyrupDRand.fRndNum * gSyrupMFMCalcError ;
gSyrupFlowSim := mSyrupFlowDld.i_out ;
mCarboCO2ValveSlew(i_InValue:=gR_Out_CO2_PID, i_SlewMax:=20,i_Cycle:=gTask0Cycle_Time, out:=gCarboCO2ValveSlewOut) ;
mCarboCO2FlowTmp := ValveFlow(i_DeltaP:=gCarboCO2ValveDeltaP ,i_ValveOp:=gCarboCO2ValveSlewOut ,i_KFF:=0.34, i_Dens:=gCO2_Density / 1000) + mCO2MFMError ;
mCarboCO2FlowFlted(i_Value:=mCarboCO2FlowTmp ,i_Num:=10 ,i_Enable:=TRUE) ;
mCarboCO2FlowDld(i_Value:=mCarboCO2FlowFlted.FilterOut ,i_Sample:=3) ;
mCO2DRand(nSeed:=0) ;
mCO2MFMError := mCO2DRand.fRndNum * gCO2MFMCalcError ;
gCarboCO2FlowSim := mCarboCO2FlowDld.i_out ;
gMFM_WaterFlow := gWaterFlowSim ;
gMFM_Syrup1Flow := gSyrupFlowSim ;
gMFM_CO2Flow := gCarboCO2FlowSim ;
mCO2DensSim := 0.028 + 0.0015 * SIN(Omegat) ;
mCO2InjPressure := CO2InjPressure(i_Temp:=20 ,i_Dens:=mCO2DensSim) ;
gMFM_Syrup1Brix := gTestSyrBrix ;
gMFM_Syrup1Density := SyrupDensity(i_SyrupBrix:=gTestSyrBrix) ;
END_IF
END_IF
mCO2InjPressFlted(i_Value:=mCO2InjPressure,i_Num:=8 ,i_Enable:=TRUE) ;
gCO2InjPressureCalc := LIMIT(10, mCO2InjPressFlted.FilterOut, 20) * 1.0 ;
mProdFlowFlted(i_Value:=gVFM_ProductFlow,i_Num:=8 ,i_Enable:=TRUE) ;
gProd_Flow_Meas := mProdFlowFlted.FilterOut ;
IF gBlenderProdMode THEN
mH2OFlowFlted(i_Value:=gMFM_WaterFlow,i_Num:=6 ,i_Enable:=gBlenderFlowFltEn) ;
gH2O_Flow_Meas := mH2OFlowFlted.FilterOut ;
mSyrFlowFlted(i_Value:=gMFM_Syrup1Flow,i_Num:=6 ,i_Enable:=gBlenderFlowFltEn) ;
gSYR_Flow_Meas := mSyrFlowFlted.FilterOut ;
mCarboCO2FlowFlted(i_Value:=gMFM_CO2Flow,i_Num:=6 ,i_Enable:=gBlenderFlowFltEn) ;
MFMAnalog_Values.Totalizers ;
ELSE
mH2OFlowFlted(i_Value:=gMFM_WaterFlow,i_Num:=10 ,i_Enable:=gBlenderFlowFltEn) ;
gH2O_Flow_Meas := mH2OFlowFlted.FilterOut ;
mSyrFlowFlted(i_Value:=gMFM_Syrup1Flow,i_Num:=0 ,i_Enable:=gBlenderFlowFltEn) ;
gSYR_Flow_Meas := mSyrFlowFlted.FilterOut ;
mCarboCO2FlowFlted(i_Value:=gMFM_CO2Flow,i_Num:=0 ,i_Enable:=gBlenderFlowFltEn) ;
END_IF
IF gCO2_Density<>0 THEN
gCO2_Flow_Meas := mCarboCO2FlowFlted.FilterOut / gCO2_Density ;
END_IF
IF gActualSyrupDens > 0 THEN
gSYR_Vol_Flow_Meas := gSYR_Flow_Meas / gActualSyrupDens ;
ELSE
gSYR_Vol_Flow_Meas := gSYR_Flow_Meas ;
END_IF
mProdFlowFlt(i_Value:=gH2O_Flow_Meas + gSYR_Vol_Flow_Meas,i_Num:=18, i_Enable:=gBlenderFlowFltEn) ;
gActual_Prod_Flow := mProdFlowFlt.FilterOut ;
MFMAnalog_Values.ResetTotalizers();
END_PROGRAM
ACTION ResetTotalizers:
_LD_BODY
_NETWORKS : 1
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_POSITIV
_LD_CONTACT
gSLIMResetCounter
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 1
_ASSIGN
_OPERATOR
_BOX_EXPR : 1
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
0
_EXPRESSION
_POSITIV
MOVE
_EXPRESSION
_POSITIV
_OUTPUTS : 8
_OUTPUT
_POSITIV
_NO_SET
gWaterTotal
_OUTPUT
_POSITIV
_NO_SET
gSyrupTotal
_OUTPUT
_POSITIV
_NO_SET
gCO2Total
_OUTPUT
_POSITIV
_NO_SET
gProductVFMTotal
_OUTPUT
_POSITIV
_NO_SET
gCO2TempTot
_OUTPUT
_POSITIV
_NO_SET
gSyrupTempTot
_OUTPUT
_POSITIV
_NO_SET
gWaterTempTot
_OUTPUT
_POSITIV
_NO_SET
gProductVFMTempTot
ENABLELIST_END
_OUTPUTS : 0
END_ACTION
ACTION Totalizers:
_LD_BODY
_NETWORKS : 4
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mBlendStopDly
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#2s
_EXPRESSION
_POSITIV
TOF
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_FUNCTIONBLOCK
mAuxONS
_BOX_EXPR : 1
_EMPTY
_EXPRESSION
_POSITIV
F_TRIG
_OUTPUTS : 0
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
mBlendStopONS
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
mBlendStopONS
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 4
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gMFM_WaterTotalizer
_OPERAND
_EXPRESSION
_POSITIV
gWaterTempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gWaterTempTot
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gMFM_Syrup1Totalizer
_OPERAND
_EXPRESSION
_POSITIV
gSyrupTempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gSyrupTempTot
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gMFM_CO2Totalizer
_OPERAND
_EXPRESSION
_POSITIV
1000
_EXPRESSION
_POSITIV
DIV
_OPERAND
_EXPRESSION
_POSITIV
gCO2TempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCO2TempTot
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gVFM_ProductTotalizer
_OPERAND
_EXPRESSION
_POSITIV
gProductVFMTempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductVFMTempTot
ENABLELIST_END
_OUTPUTS : 0
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_AND
_LD_OPERATOR : 2
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 2
_LD_CONTACT
gAlwaysOff
_EXPRESSION
_POSITIV
_LD_CONTACT
mBlendStopONS
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRun_Running
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mAuxTP
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#1s
_EXPRESSION
_POSITIV
tp
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_SET
gBlendResetTotalizer
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 4
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gMFM_WaterTotalizer
_OPERAND
_EXPRESSION
_POSITIV
gWaterTempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gWaterTotal
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gMFM_Syrup1Totalizer
_OPERAND
_EXPRESSION
_POSITIV
gSyrupTempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gSyrupTotal
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERATOR
_BOX_EXPR : 2
_OPERAND
_EXPRESSION
_POSITIV
gMFM_CO2Totalizer
_OPERAND
_EXPRESSION
_POSITIV
1000
_EXPRESSION
_POSITIV
DIV
_OPERAND
_EXPRESSION
_POSITIV
gCO2TempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCO2Total
_ASSIGN
_OPERATOR
_BOX_EXPR : 2
_ENABLED
_OPERAND
_EXPRESSION
_POSITIV
gVFM_ProductTotalizer
_OPERAND
_EXPRESSION
_POSITIV
gProductVFMTempTot
_EXPRESSION
_POSITIV
ADD
_EXPRESSION
_POSITIV
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gProductVFMTotal
ENABLELIST_END
_OUTPUTS : 0
END_ACTION

View File

@ -0,0 +1,8 @@
(* @PATH := '\/MFM Value' *)
TYPE MFM_Real_Struct :
STRUCT
Analog_Value : REAL ;
Value_State : BYTE ;
END_STRUCT
END_TYPE
(* @END_DECLARATION := '0' *)

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Functions_Collection\/FillingHead' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION mmH2O_TO_Freq : REAL
VAR_INPUT
i_Head : REAL ; (* Request Head in mmH2O *)
i_K_Pump : REAL ; (* Freq to Head Pump Factor *)
END_VAR
VAR
END_VAR
(* @END_DECLARATION := '0' *)
(* Calculates the pump frequency to get an input head
Freq = Pump Frequency [Hz]
K_mBar = Freq to Head Pump Constant
(* Head [ mBar] = Freq^2 * K_Pump *)
(******* Pompa INOXPA Modello ______ Motore 4 Poli 960 RPM ********* *)
IF i_K_Pump<>0 THEN
mmH2O_TO_Freq := SQRT ( i_Head / i_K_Pump );
END_IF
mmH2O_TO_Freq := LIMIT(0, mmH2O_TO_Freq, 100.0) ;
END_FUNCTION

View File

@ -0,0 +1,358 @@
(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *)
(* @SYMFILEFLAGS := '59392' *)
PROGRAM ModValveFault
VAR
mFaultOpenVM1Tmr : TON ;
mFaultOpenVM2Tmr : TON ;
mFaultOpenVM3Tmr : TON ;
mFaultCloseVM1Tmr : TON ;
mFaultCloseVM2Tmr : TON ;
mFaultCloseVM3Tmr : TON ;
END_VAR
VAR_OUTPUT
EN_Out : BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
_LD_BODY
_NETWORKS : 3
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 3
_LD_CONTACT
gInWaterValveClosed
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_FUNCTIONBLOCK
mFaultOpenVM1Tmr
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 9
_LD_CONTACT
gInWaterValveClosed
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CMD_BlenderMaintenance
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_Blender_OPT_Simulation
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdTankRunOut_Latch
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdPipeRunOut_Latch
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFaultCloseVM1Tmr
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gWaterValvePos_Fault
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 4
_LD_CONTACT
gInSyrupValveClosed
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_LD_CONTACT
gWaterRecipe
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFaultOpenVM2Tmr
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 10
_LD_CONTACT
gInSyrupValveClosed
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_NEGATIV
_LD_CONTACT
gWaterRecipe
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CMD_BlenderMaintenance
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_Blender_OPT_Simulation
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdTankRunOut_Latch
_EXPRESSION
_NEGATIV
_LD_CONTACT
gProdPipeRunOut_Latch
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFaultCloseVM2Tmr
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gSyrupValvePos_Fault
_NETWORK
_COMMENT
_END_COMMENT
_LD_ASSIGN
_LD_OR
_LD_OPERATOR : 2
_LD_AND
_LD_OPERATOR : 5
_LD_CONTACT
gInCarboCO2ValveClosed
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_POSITIV
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gCarboStillProduct
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_Blender_OPT_DoubleDeair
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gWorkshopTest
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFaultOpenVM3Tmr
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_LD_AND
_LD_OPERATOR : 9
_LD_CONTACT
gInCarboCO2ValveClosed
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderBlending
_EXPRESSION
_NEGATIV
_LD_OR
_LD_OPERATOR : 2
_LD_CONTACT
gCarboStillProduct
_EXPRESSION
_POSITIV
_LD_CONTACT
gH_Blender_OPT_DoubleDeair
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_LD_CONTACT
gBlenderRinseMode
_EXPRESSION
_NEGATIV
_LD_CONTACT
gBlenderCIPMode
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_CMD_BlenderMaintenance
_EXPRESSION
_NEGATIV
_LD_CONTACT
gCarboWaterLine_Latch
_EXPRESSION
_NEGATIV
_LD_CONTACT
gH_Blender_OPT_Simulation
_EXPRESSION
_NEGATIV
_FUNCTIONBLOCK
mFaultCloseVM3Tmr
_BOX_EXPR : 2
_EMPTY
_OPERAND
_EXPRESSION
_POSITIV
t#5s
_EXPRESSION
_POSITIV
TON
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
_EMPTY
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
_EXPRESSION
_POSITIV
ENABLELIST : 0
ENABLELIST_END
_OUTPUTS : 1
_OUTPUT
_POSITIV
_NO_SET
gCarboCO2ValvePos_Fault
END_PROGRAM

View File

@ -0,0 +1,27 @@
(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION MoveArray : BOOL
VAR_INPUT
i_InArrayPtr : DWORD ;
i_OutArrayPtr : DWORD ;
i_UpBound : INT ;
END_VAR
VAR
i : INT ;
mInArrayPointer : POINTER TO BOOL ;
mOutArrayPointer : POINTER TO BOOL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_UpBound>0 AND i_UpBound<=191 THEN
FOR i:=0 TO i_UpBound DO
mInArrayPointer := i_InArrayPtr + i ;
mOutArrayPointer := i_OutArrayPtr + i ;
mOutArrayPointer^ := mInArrayPointer^ ;
END_FOR;
MoveArray := TRUE ;
ELSE
MoveArray := FALSE ;
END_IF
END_FUNCTION

Some files were not shown because too many files have changed in this diff Show More