WinMotor: MS Windows PC + C30 DSP



Motivation

Our group is involved in control algorithm design and implementation. The tools available for implementing a complex nonlinear control were DSP board based, with DOS interfaces only. DOS is limited to executing only one program at a time, and in only limited graphical display modes, which vary with each particular video adapter. In addition there was no easy interface to analytical design tools such as Matlab.

It was decided to port the C30 interface library to MS Windows, and to create a graphical user interface (GUI) front end which would be used to edit, compile, download, and execute the control programs, and to log data and plot logged variables in real time as the control executes. The GUI would also interface to Matlab to take advantage of more advanced plotting and analysis tools available.



Implementation

The C30 interface library was ported to Windows using Borland C. The graphical user interface (GUI) was written as a native Windows application, which performed all communication with the C30 board for downloading and executing control programs, as well as logging and plotting data in real time.

The control algorithm is actually executed by the TMS 320C30 digital signal processor board.

The user edits his C30 control program under MS Windows. The program is then compiled using the Texas Instruments C30 C compiler, in a DOS shell started by the GUI. The user then downloads his program to the C30 from the GUI, and then executes the control, logs data, and plots log variables in real time, all from within the GUI.

Control and synchronization is done through DSP board registers and Dual Port Memory. Control data is logged through a double buffer scheme set up between the GUI and the C30 board using the C30 board's Dual Port RAM. Busy waiting is used for all synchronaization.


Results

The mechatronic workstation was the result of this effort. It has been successfully used in virtually all of our control experiments.

Below is a screen shot of the WinMotor GUI.