overshoot_temp / app.py
Shivraj8615's picture
Update app.py
5fc6466 verified
raw
history blame contribute delete
3.76 kB
import streamlit as st
import pandas as pd
# Fixed latent heat values for given pressures (in kcal/kg)
LATENT_HEAT_VALUES = {
5: 486,
6: 480,
7: 475
}
def main():
st.title("Dyeing Machine Temperature Overshoot Calculator")
# Step 1: User Inputs
num_machines = st.number_input("Enter the number of machines:", min_value=1, step=1)
machine_type = st.selectbox("Select Dyeing Machine Type:", ["SoftFlow", "Yarn Dyeing", "Jet Dyeing"]) # Modify as needed
# Step 2: Single input for control system (applies to all machines)
control_system = st.selectbox(
"Select Current Control System:",
["ON/OFF Valve", "PID Control Valve", "Manual"]
)
# Assign fixed latent heat based on machine type
steam = 0
if machine_type == "SoftFlow":
enthalpy = LATENT_HEAT_VALUES[6] # 6 Kg/cm²g pressure
mlr = 6
elif machine_type == "Yarn Dyeing":
enthalpy = LATENT_HEAT_VALUES[7] # 7 Kg/cm²g pressure
mlr = 4
elif machine_type == "Jet Dyeing":
enthalpy = LATENT_HEAT_VALUES[5] # 5 Kg/cm²g pressure
mlr = 10
# Specific heat values
specific_heat_water = 1.0 # kcal/kg°C
specific_heat_cloth = 0.4 # kcal/kg°C
# Step 3: Creating input table dynamically
machines_data = []
for i in range(1, num_machines + 1):
st.subheader(f"Machine {i}")
machine_name = f"{machine_type}_Machine_{i}"
quantity = st.number_input(f"{machine_name} - Quantity (kg)", min_value=0.0, step=0.1, key=f"qty_{i}")
set_temp = st.number_input(f"{machine_name} - Set Temperature (°C)", min_value=0.0, step=0.1, key=f"set_temp_{i}")
actual_temp = st.number_input(f"{machine_name} - Actual Temperature (°C)", min_value=0.0, step=0.1, key=f"act_temp_{i}")
overshoot = actual_temp - set_temp
q_water = mlr * quantity * specific_heat_water * overshoot
q_cloth = quantity * specific_heat_cloth * overshoot
steam_consumption = (q_water + q_cloth) / enthalpy
steam += steam_consumption
machines_data.append({
"Machine Name": machine_name,
"Selected Machine Quantity (kg)": quantity,
"Set Temperature (°C)": set_temp,
"Actual Temperature (°C)": actual_temp,
"Overshoot (°C)": overshoot
})
# Step 4: Display Data & Calculate Range
if machines_data:
df = pd.DataFrame(machines_data)
st.write("### Machines Data")
st.dataframe(df)
overshoot_values = df["Overshoot (°C)"].tolist()
min_overshoot = min(overshoot_values) if overshoot_values else 0
max_overshoot = max(overshoot_values) if overshoot_values else 0
# Step 5: Recommendation Logic
if control_system != "PID Control Valve":
recommendation_text = f"- **Recommended:** Use PID Control Valve instead of {control_system} for better control and reduced steam consumption."
else:
recommendation_text = "**No additional recommendations.**"
# Step 6: Editable Text Output
default_text = (
f"Currently, there is temperature overshoot observed (from {min_overshoot}°C to {max_overshoot}°C) in heating, holding cycle in {machine_type} machine. "
f"Due to overshoot, there is unnecessary heating. This leads to an increase in steam consumption. Estimated Steam Saving is {steam:.2f} Kg/day.\n\n"
f"{recommendation_text}"
)
user_text = st.text_area("Editable Report:", value=default_text, height=200)
st.write("### Final Report")
st.write(user_text)
if __name__ == "__main__":
main()