Searched Projects

Tags: package

project.name
0 Stars     25 Views
User:

Conveyor Belt Manager

Conveyor Belt Manager

This circuit is meant to control a conveyor belt system that moves packages around a factory. A rough diagram of the system is below:

^   ^
^ ^
^ ^
\
^
^
^

The system has a branch in the belt so that packages moving from bottom to top (upward) can go either left or right. The above diagram is showing the branch currently in the left mode (packages will take the left branch).

The system can also reverse the direction of the belt, moving packages from top to bottom:

v   v
v v
v v
/
v
v
v

Note the opposite direction of the arrows pointing downward. Also note the branch is now in the right mode. In this configuration, packages from the right branch will move onto the central line. If the branch was still in left mode, it would instead move packages from the left branch onto the central line.

The belt can be in one of three states:

  • not moving
  • moving downward
  • moving upward

The branch switch can be in one of two states:

  • left
  • right

Input

As input, the system has three weight sensors that detect packages on different parts of the belt and provide input to the circuit:

  • B - the bottom part of the belt
  • L - the upper left branch of the belt
  • R - the upper right branch of the belt

These sensors will have a value of 1 if there is a package on that part of the belt, and 0 otherwise.

Output

As output, the system produces C (conveyor direction) and S (branch switch direction). Since the conveyor direction has three possible values (not moving, downward, and upward), C is composed of two bits: C1 and C0, representing the MSB and LSB, respectively, of the direction (00 = not moving, 01 = downward, 10 = upward).

The S output is 0 for left and 1 for right.

Logic:

Packages at the top positions (L or R) always want to move downward, and packages at the bottom (B) always want to move upward. Packages at the bottom have priority.

The system is governed by the following rules:

  • If there are packages at both the L and R positions at the same time, the system is jammed and a human operator must intervene. The conveyor (C) direction is set to 00 (not moving), and the switch direction (S) does not matter (S = don't care).
  • Packages on the B (bottom) line take precedence and will be moved upward if possible (C = 10).
    • If there is also a package on the L branch, the switch is set to the right position (S = 1), so that the bottom package can move around the other package.
    • If there is also a package on the R branch, the switch is set to the left position (S = 0), so that the bottom package can move around the other package.
    • If there are no packages on L or R, the switch value does not matter (S = don't care).
  • Packages on the L or R branch can move downward if there is nothing at B. In this case, C = 01.
    • If there is a package at L, the switch is in the left position (S = 0).
    • If there is a package at R, the switch is in the right position (S = 1).
  • If there are no packages at any location, the belt should not move (C = 00), and the switch direction does not matter (S = don't care).
  • Don't worry about the possibility of the sensors changing as soon as packages start moving. Assume the sensors are read once and then the belt moves for a long enough time to completely remove one package from the system, and only then are the sensors read again. In other words, only think of the system in terms of one instant in time - do not worry about the future.