Storage station


The final station in the flow line is the storage station. Here, the incoming products from the process station are stored in one of three possible storage tubes. Each tube can hold a limited number of finished products. Transportation within the storage station is done with an XY(Z) transport system. The Z-movement (down/up) is performed by a pneumatic cylinder which has a suction disk attached to it.

The electrically controlled manipulator can move in two linear (X, Y) directions. A DC motor is used to move each of the slides along the path of its corresponding spindle. The discrete positions in the working area of the electrically controlled manipulator are detected with sensors and limit switches. The X and Y axes each have four sensors:


Two limit switches (ls0 and ls1) are used to detect the opposite edges of the working area, and two intermediate sensors (s0 and s1) detect positions that are within the working area. The limit switches act as a safety measure to protect the system: activation of a limit switch will result in making the electromotor powerless. After this happens, it will only be possible to move away from the activated limit switch, by activating the electromotor. Only once the limit switch is deactivated, will it again become possible to move towards that limit switch. The following figure shows the workspace of the manipulator in the X-Y plane:


The left and lower edges of the figure show the sensors that are involved: four sensors along the X axis, and four sensors along the Y axis. Under normal circumstances, the manipulator will move within the working area cornered by A, B, C, and D, constrained by the position sensors. The area cornered by 1, 2, 3, and 4 is the maximum allowable area, constrained by the limit switches.

Incoming products are placed in the product holder, which corresponds to the exit position of the process station, and are detected by a sensor. The suction disk, mounted on the pneumatic cylinder that creates the Z-movement, can be activated to pick up the current product.

Sensors and actuators

This following table lists all the sensors of the workstation:

Index Label Type Initial state Event names Remark
0 SenYSlideIn Digital off YSlideSensors.u_in_on, YSlideSensors.u_in_off  
1 SenYSlideOut Digital on YSlideSensors.u_out_on, YSlideSensors.u_out_off  
2 PushButton1 Digital off (released) Button1.u_pushed, Button1.u_released  
3 PushButton2 Digital off (released) Button2.u_pushed, Button2.u_released  
4 PushButton3 Digital off (released) Button3.u_pushed, Button3.u_released  
5 Switch Digital off Switch.u_on, Switch.u_off Bi-stable
6 EmergencyStop Digital on n/a NC contact
8 SenCylinderIn Digital on CylinderSensors.u_in_on, CylinderSensors.u_in_off  
9 SenCylinderOut Digital off CylinderSensors.u_out_on, CylinderSensors.u_out_off  
10 SenVacuum Digital off VacuumSensor.u_on, VacuumSensor.u_off  
11 SenProdAvail Digital off InputProductSensor.u_on, InputProductSensor.u_off  
14 SenXSlideIn Digital on XSlideSensors.u_in_on, XSlideSensors.u_in_off  
15 SenXSlideOut Digital off XSlideSensors.u_out_on, XSlideSensors.u_out_off  
16 SenXAtMaxPos Digital off n/a Limit switch
17 SenXAtMinPos Digital off n/a Limit switch
18 SenYAtMaxPos Digital off n/a Limit switch
19 SenYAtMinPos Digital off n/a Limit switch

This following table lists all the actuators of the workstation:

Index Label Type Initial state Event names
0 CylinderOut Digital off Cylinder.c_out_on, Cylinder.c_out_off
1 CylinderIn Digital on Cylinder.c_in_on, Cylinder.c_in_off
2 Vacuum Digital off Vacuum.c_on, Vacuum.c_off
3 Lamp1 Digital off Lamp1.c_on, Lamp1.c_off
4 Lamp2 Digital off Lamp2.c_on, Lamp2.c_off
5 Lamp3 Digital off Lamp3.c_on, Lamp3.c_off
8 YSlide Digital off YSlide.c_on, YSlide.c_off
9 YDirection Digital to out YSlide.c_to_in, YSlide.c_to_out
10 XSlide Digital off XSlide.c_on, XSlide.c_off
11 XDirection Digital to in XSlide.c_to_in, XSlide.c_to_out

Furthermore, multiple timers are available, as software implementations (virtual hardware):

Name Event names (mandatory) Event names (optional)
Timer1 Timer1.c_start, Timer1.u_timeout Timer1.c_cancel, Timer1.c_pause, Timer1.c_resume
Timer2 Timer2.c_start, Timer2.u_timeout Timer2.c_cancel, Timer2.c_pause, Timer2.c_resume
Timer3 Timer3.c_start, Timer3.u_timeout Timer3.c_cancel, Timer3.c_pause, Timer3.c_resume

For more information on timers, their mandatory and optional events, and how to model them, see the Timers page.

Simulation and visualization

The following is a screenshot of the visualization provided for this workstation, as part of the 4K420 course files:


The current simulation time is shown in the upper left corner. On the right, you’ll find the user interface. The buttons, lamps, and switch are all present. The vacuum actuator and sensor are also shown here. The buttons and switch can be turned on or off by clicking on them. Clicking once pushes the button or turns on the switch. Clicking once more releases the button or turns off the switch. Clicking on the product, also on the right side, will add a new product to the system, at the input position (position 0).

The main part of the visualization shows the actual system. There are two views: a top view at the left, and frontal views at the right. The top view mainly shows the X and Y movements. The frontal views show the contents of the input position and the various tubes. It also shows the cylinder. The cylinder at the right is always shown, and indicates whether the cylinder holds a product or not, as well as the vertical (Z) position of the cylinder. If the cylinder is physically above one of the tubes or the input position, it is shown in the corresponding frontal view as well, allowing seeing the effect of picking up a product from the input position or dropping a product into one of the tubes. Clicking on any of the tubes in the frontal views, clears that tube. Various sensors are visualized, as are the actuators (visualized as arrows).

Three timers are provided. There status is shown using rectangles. For more information on the visualization of timers, see the Timers page.


The durations of the three timers that are provided, can be configured. That is, you can decide the durations of the each of the timers. To change the durations, open the config.cif file, and change the values of the appropriate constants. Make sure the read the comments that explain the allowed values. For more information on timers, see the Timers page.

If you change the configuration, the changes will automatically be applied to subsequent simulations, as well as for the next PLC code generation.