While last year was all about games, let's keep this year going on the topic of 'industrial systems' and such.
People always want to implement an 'Elevator Management System', and we also saw a 'Traffic Light Simulator', both of these have one very common element: they're generally done in PLC-based systems.
Let's keep that theme going with the next subject:
Let's simulate an overhead crane!
For those who don't know, an overhead crane is a common piece of equipment found in many manufacturing plants, distribution centers, and so on. It's a device that is usually mounted on two very large rails on opposite sites of the area in which it works.
In the image above, the red beams on the left and right directly below the yellow one are the two rails that make up either the X
axis, or the Y
axis, depending on the model and installation. From there, the main crane hook can travel along the yellow beam to the left and right to make up the opposite axis. It then has a cable to lower and raise itself, to make up the Z
axis.
The goal of this community challenge is to simulate such a device graphically. You require eight input buttons:
- Left and Right: these should move the crane along one of the
X
or Y
axis, whichever you are using to represent the yellow beam pictured above;
- Forward and Backward: these should move the crane along the other
X
or Y
axis, whichever you are using to represent the red beams pictured above;
- Up and Down: these should move the crane hook up and down or along the
Z
axis;
- Emergency Stop: this button should disable all input from the crane;
- Emergency-Stop Reset: this button should 'reset' the emergency stop circuit and allow the crane to move again;
You may simulate the graphics any way you like, whether that be Text or GUI, and your eight input buttons should function as listed.
Bonus points:
- For extra-credit you may add a 'claw' feature on the hook that will open and close it, this should have two input buttons (Open and Close).
- You may also add a 'dead-man-switch', an additional input button that must be held by the user to perform any motion.