Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Production Cell Assignment
[go: Go Back, main page]

Real-Time Systems

Production Cell Assignment

Introduction
The production cell case study is an attempt to define a realistic industrial application. It has previously been described in several formalisms, but most often without taking timing issues into consideration. In this assignment you are asked to study a version of the production cell, built in LEGO and controlled by two LEGO RCX bricks. An overview of the LEGO production cell is shown in Figure 1.

Figure 1: The LEGO Production Cell.


 


The purpose of the production cell is to take metal plates from the feed belt to the press, which will perform some (time consuming) treatment of the plate. The treated plate is then moved from the press to the deposit belt where it leaves the unit. Plates are moved from the feed belt to the press using arm A of the robot, and from the press to the deposit belt using arm B of the robot. The two arms are of fixed length and height, and are fixed to each other (i.e. 90 degrees).

A simplification in our version compared with the original description is that a crane moving plates from the end of the deposit belt to the start of the feed belt is not considered. Instead we will assume a stream of plates entering the system at the start of the feed belt. We will also assume that at any time, there is never more than one plate on the feed belt.

Another simplification is that we do not consider the so-called "elevating rotary table" positioned at the end of the feed belt in the original production cell. Instead we will assume that the program controlling the operation of the cell (i.e. running in the two RCX bricks) will sense the arrival of a plate using the sensor, positioned before the end of the feed belt, and stop the feed belt before the sensed plate falls of the belt.

We also assume a (much) simpler behaviour of the press than in the original description of the production cell. In fact, instead of the press we use a table where the plates have to reside for a specified (minimum) time delay.

Finally, the possible movements of the robot have also been reduced in our version of the production cell. We assume that it suffices to provide the two robot arms with power (using output port A and port B of RCX Brick 2) to get hold of (or drop) a LEGO brick given that the arm is accurately positioned (i.e. just over the brick).

Robot Positions

When not moving, the robot should be positioned in one of the following five positions: In any position, when not moving, the robot may attempt to pick up (or drop) a metal plate. The robot should reside in the "wait"-position whenever no brick is processed in the production cell.

Timing Parameters

All actions of the physical components in the LEGO production cell take time. The actual time values are given in seconds in Table 1 (estimated experimentally).
Device Action Time
Feed belt Move plate to sensor 4.5
Press Press plate 11
Deposit belt Move plate to end of belt 4.5
Robot Rotate 22.5 degrees (in any direction) 1
Robot Grip brick 1
Robot Drop brick 1

Table 1: Timing values of the LEGO production cell.


 


As shown in Figure 1, the distance between the two robot arms is 90 degrees, the distance between the feed belt and the press 180 degrees, and the distance between the press and the deposit belt 90 degrees. Thus, if the distance between the "wait" position and "arm A at feed" is X degrees, the distance between "arm B at press" and "wait" is 90-X degrees. Note also that accelleration and deaccelleration is ignored on all motions.

The Control Program

The program controlling the production cell is executed on two LEGO RCX bricks. Each RCX may have up to ten tasks executing in parallel, and the tasks have access to four timers on each RCX (the timers can be reset and tested upon). The tasks may communicate with other tasks on the same RCX using (up to 32) shared integer variables. Communication between tasks executing on different RCX bricks will not be necessary (it can be implemented using the infra red port). The RCX bricks are connected to the cell components as depicted in Figure 1.

RCX brick 1 is used to control the feed belt and the deposit belt. When the production cell is in operation, the deposit belt should always be moving (from right to left in Figure 1), the lamp should always be on, and the feed belt should be moving whenever there is no plate at the light sensor. When there is a plate at the light sensor, the feed belt should not be moving. The output port A and B are connected to two motors moving the deposit and the feed belt respectively. The output port C is connected to the lamp (it must be switched on to make the sensor readings more reliable). The input port 1 of RCX brick 1 is connected to the light sensor at the end of the feed belt.

RCX brick 2 is used to control the movements of the robot. The three output ports A, B, and C are connected to three motors controlling the rotation of the robot, arm A and arm B respectively (see Figure 1). Input port 1 is connected to the same light sensor as input port 1 of RCX brick 1, and input port 2 is connected to the rotation sensor used to measure the position of the robot arms.

The interfaces of the input and output ports of an RCX brick are as follows:

Input:

Output:

What You are Required to Do

  1. Design and model the production cell and the control program executing on the two RCX bricks. The executing tasks of your control program should use integer variables to communicate with the devices connected to the input and output ports of the RCX brick.

  2. A model of the task executing on RCX 1 (in Figure 1) controlling the feed belt can be found here: xta and ugi.
     

  3. Check that there is a maximum time delay from the moment a plate arrives at the sensor of the feed belt until it is eventually dropped on the deposit belt. Use a system with five plates and find the maximum time delay for each plate.

  4.  
  5. Check that plates do not overtake each other in the production cell model.

  6.  
  7. Find the maximum number of plates that can be treated simultaneously in the production cell. Count plates from the sensor position of the feed belt to the beginning of the deposit belt.

  8.  
  9. Investigate if the exact position of the wait position influences any of the above results.

  10.  
  11. Modify your model of the control program so that the deposit belt is eventually stoped when there are no metal plates beeing processed in the production cell (and started when needed).
Write a report to document your work. The report should include printouts of your (timed) automata model, the formal requirements you have checked that your model satisfies, and answers to the questions above. Also, please include a floppy disk (or a link to a web page) with the xta, ugi, and q files of your production cell model.

What You Also are Welcome to Do

  1. Transform your model of the production cell control program to the programming language Not Quite C (NQC) and execute the program in the physical LEGO plant.

  2.  
  3. Assume that the feed belt is equipped with another light sensor at the beginning of the belt, which is connected to input port 3 of RCX brick 2 (and an extra lamp conncted to output port C of RCX 1). This allows the control program of the robot to estimate when plates will become available at the end of the feed belt.

  4. Improve your model of the robot control task to preform motion planning based on the information from the added light sensor. In particular, try to improve (i.e. reduce) the maximum time delay of the metal plates in the production cell (item 2 above).

Useful Resources


Page created 2000-3-7. Last modified 2000-6-12.