32 lines
1.4 KiB
Plaintext
Executable File
32 lines
1.4 KiB
Plaintext
Executable File
Lift Controller
|
|
===============
|
|
|
|
This is a port of Martin Schoeberl's Lift Controller [1] to C. The orignal
|
|
version is an embedded Java program that controls a lift in a factory in Turkey.
|
|
Benedikt Huber has ported the controller to C and Lucid [3]. It has been used in
|
|
various research projects, including T-CREST[3] and the F-Shell test generator
|
|
[4].
|
|
|
|
Overview
|
|
--------
|
|
|
|
The sensors of the system consist of several buttons, a load sensor (to detect
|
|
if the lift is positioned at the load), sensors to detect bottom and top
|
|
position, and an index sensor for the motor. The motor is controlled using two
|
|
digital outputs, one for its direction and one to turn it off or on.
|
|
|
|
The controller itself consists of an initialization routine ctrl_init(), the
|
|
controller step ctrl_loop(), which should be invoked every 10ms. Outside a test
|
|
environment, ctrl_get_vals() should be called to read sensors before the
|
|
controller runs, and ctrl_set_vals() should be called to set actuators after the
|
|
controller ran.
|
|
|
|
The digital IO interface (9 digital inputs, 2 digital outputs and 14 LEDs are
|
|
used) is realized as global volatile variables (simio_in, simio_out, simio_led),
|
|
that can be modified and read by test drivers or by the runtime environment.
|
|
|
|
[1] http://www.jopdesign.com/doc/jembench.pdf
|
|
[2] https://github.com/visq/99lifts
|
|
[3] http://www.t-crest.org
|
|
[4] http://forsyte.at/software/fshell/
|