Model meat through a freezer

45 visualizaciones (últimos 30 días)
Jason
Jason el 7 de Nov. de 2025 a las 20:17
Comentada: Umar el 9 de Nov. de 2025 a las 16:29
Working on a project for school which entails modeling chicken as it goes through a freezer. Ive got the basic layout in place and have the freezing portion working like I want on a constant thermal mass. I am trying to figure out how to model the chicken as it woudl go through the freezer on a conveyor. I seet he conveyor block and maybe I can use that but dont knwo how to have the freezer act on it. Right now I have the thermnal mass block set to variable with the Mdot set to my pounds per hours and the Tin port set to the input temp of the chicken but it still acts like a constant mass.
  4 comentarios
Umar
Umar el 8 de Nov. de 2025 a las 15:01

Hi @Jason,

This should suffice. I looked at your model, the Variable Thermal Mass block isn't really meant for what you're trying to do here. According to the MathWorks docs, that Variable option is designed for systems where mass builds up and drains out in one spot, like filling a tank. The docs even say the Tin port doesn't work when mass is constant or decreasing. A conveyor is different because material is continuously flowing through, not accumulating.

That's why it's acting like a constant mass - the block doesn't know how to handle continuous throughput the way you've set it up.

Here's what I'd suggest: Switch your Thermal Mass block back to Constant instead of Variable. Then figure out how much chicken is actually sitting in the freezer at any given moment. If you're processing 7500 lbs/hr * and the chicken takes 10 minutes to go through, that's *7500 times (10/60) = 1250 lbs or about 567 kg sitting in there at once. Use that as your constant thermal mass value. Get rid of the Mdot and Tin ports since those only work with Variable type. Your PID should still be able to control the cooling just fine.

Also, I spotted an error in your initialization code on line 3. You've got chicken_mass = 7500/0.000125998 but that should be multiplication, not division. Your conversion factor is right,it should be chicken_mass = 7500 * 0.000125998 which gives 0.945 kg/s. That said, even with that fixed, you still can't feed a flow rate directly into Variable Thermal Mass for a conveyor system.

If you want to get fancier later, you could look into using the Thermal Liquid blocks in Simscape which are built for flowing material, or set up multiple zones to simulate batches moving through. But for getting your project working now, switching to Constant mass should do the trick.

Hope this helps!

Jason
Jason el 8 de Nov. de 2025 a las 15:27
Thank you for that.
Yeah i saw the division error and fixed it.
I was already able to get the constant mass to work. I used that to get the cooling to work properly.
trying to model the chcicken moving through the freezer. Ive seen about the batches moving through but i cnanot find anything on how to model that? I think it would work but dont know how.

Iniciar sesión para comentar.

Respuestas (1)

Umar
Umar el 8 de Nov. de 2025 a las 16:57

Hi @Jason,

It is finally good to see that you got the constant mass approach working. So about modeling the chicken actually moving through the freezer - using approach of the simplest solution would be using a Transport Delay block. This is built into standard Simulink and it's designed exactly for this - modeling material that takes time to move from inlet to outlet. You'd connect it to your temperature sensor output to show the temperature of chicken as it exits after spending time in the freezer. If your residence time is 10 minutes (600 seconds), set the Time delay parameter to 600. The block will buffer the temperature values and output what the temperature was 10 minutes ago, which represents the chicken exiting the freezer.

Documentation: https://www.mathworks.com/help/simulink/slref/transportdelay.html

Now, if you want to get more detailed with spatial zones: you can break the freezer into segments using multiple Pipe (TL) blocks connected in series. This is actually how MathWorks handles spatial resolution in thermal systems. The documentation on water hammer modeling shows this exact approach - they divide a pipe into 4 segments using Pipe (TL) blocks to capture how pressure waves propagate through the system. Breaking it into more segments increases accuracy but slows down simulation.

For your freezer, you could do something similar - maybe 5 zones representing different positions along the conveyor. Each zone would be a Constant Thermal Mass block (your 567 kg divided by 5 = ~113 kg per zone) with its own convection connection to the cooling air. Material enters zone 1, transfers to zone 2 after residence_time/5, and so on. You'd use Transport Delay blocks between zones to handle the transfer timing.

Example of segmented pipe modeling: https://www.mathworks.com/help/simscape/ref/pipetl.html

(see the water hammer example where they explicitly state "Breaking the pipe into more segments increases fidelity")

So,why Thermal Liquid blocks won't help here if you would ask, because those blocks are designed for flowing liquids like oil in pipelines or hydraulic fluid - things where the material itself is the thermal medium and you're tracking pressure, flow rates, and temperature changes along a flow path. Your chicken pieces are discrete solid objects on a conveyor, not a continuous flowing liquid. The Pipe (TL) block expects liquid properties and pressure boundaries that don't apply to solid food products on a belt.

Reference: https://www.mathworks.com/help/simscape/ug/thermal-liquid-modeling-workflow.html

My recommendation would be starting with the Transport Delay block approach. It's clean, simple, and gives you the exit temperature profile you need. Your PID controller already works with the constant mass model, so you're just adding the transport delay at the output to show when chicken exits. If you need to demonstrate spatial temperature gradients later (like showing chicken at different positions along the conveyor has different temps), then move to the multi-zone approach with 3-5 Constant Thermal Mass blocks in series.

For the multi-zone setup, you'd have the inlet temperature feeding into Zone 1's thermal mass block, which connects to cooling air through convection. After a transport delay, it feeds into Zone 2's thermal mass (also connected to cooling air), then another delay before Zone 3, and so on until you reach the exit temperature. Each zone gets the same cooling from your PID-controlled air temperature, but chicken temperature drops progressively as it moves through.

Let me know if this helps resolve your problem now.

  1 comentario
Umar
Umar el 9 de Nov. de 2025 a las 16:29

Hi @Jason,

Please let me know if you need further assistance.

Iniciar sesión para comentar.

Categorías

Más información sobre General Applications en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by