Sychene
Cyclesi
A problem to solve during the design of a new production line is the evaluation and optimization of cycle time (the time between successive units as they are output from the process). Cyclesi goal is the simulation of a production line to study the cycle time.
Suppose we need to design a production line based on motorized pallet moving on rails with switches and shifter. The production line has many working stations and many paths are possible because of the switches and shifter. Pallets move bidirectionally, they can carry a configurable number of pieces and they can turn or lift pieces up/down. When a pallet arrives in front of a working station, it stops and the manufacturing process starts.
It is important to minimize the cycle time but also to minimize the number of pallets because of the pallet high price. For a certain range, increasing pallets number tends to reduce cycle time. Outside this range increasing the pallets number does not give any benefits and it can lead to pallets jamming and increasing cycle time. The distance between the working stations is also a critical point; sometimes simply moving the stations some centimeters far allows to avoid pallets jamming.
Configuration
Cyclesi configuration section, allows to build the line assembling different modules and specifying their properties. Usually user starts placing the rail basement and on top of that rails, switcher, shifter and working stations. Then he establishes how many pallets to use and their features (velocity, acceleration, number of pieces each pallet is able to carry etc.). In case of production line containing switcher and shifter and because the pallets are bidirectional, the possible paths can be pretty complex. A specific Cyclesi section permits to set their path.
When the simulation starts it is possible to see the moving pallets behavior, changing the configuration (number of pallets, velocity etc.) and see the effects of the new conditions on the simulation. Cyclesi goal is to offer a very time accurate simulation of the object movement. The 3D models used to represent the different object (machinery etc.) are not important for the simulation and they are represented using box (with scale drawing)
Simulation
The simulation program consists of two parts. First one is the mathematical simulation of the objects movement (to know the position of all the objects in a particular moment), the other one is the object rendering on the screen.
Mathematical Simulation
To correctly simulate the movement of a motorized pallet, Cyclesi calculates accurately the acceleration and deceleration curve of the pallet engine and it calculates also pallet collisions (when a pallet meets obstacles a pallet detection system brakes the pallet with a specific deceleration).
When a pallet stops in front of a working station, Cyclesi behavior depends on the station type and some configuration parameter that are station related. Furthermore there are situation where a pallet needs to make small movement in front of a working station. For this task Cyclesi provide a script language to describe the pallet behavior.
Finally Cyclesi allows to accelerate and decelerate time to see what happens after some hours of work.
3D Simulation
The graphical 3D simulation has been developed with DirectX library. Cyclesi has a 3D world containing many objects and the related mathematical model. Periodically Cyclesi renders the 3D model according to the mathematical model.
Ciclesy has been delevoped in C++ using the Visual Studio environment. Following code is an extract of the rendering routine:
D3DXMATRIX MatWorld;
D3DXMatrixIdentity( &MatWorld );
m_Device->SetTransform( D3DTS_WORLD, &MatWorld );
int RailCount = m_RailList.Count();
for( int i = 0; i < RailCount; ++i )
{
CModel* Rail = m_RailList.At( i );
Rail->Render( m_Device, &MatWorld );
}
The project is about 40.000 lines of code.