You are on page 1of 27

ANADOLU UNIVERSITY

ENGINEERING AND ARCHITECTURE FACULTY


ELECTRICAL AND ELECTRONICS ENGINEERING
DEPARTMENT

( SPRING 2008 )

EEM494 Digital Control Systems Laboratory

MATLAB AND HARDWARE PROJECT REPORT


( 29/05/08 )
NAME OF INSTRUCTOR : Assist. Prof. Aydn AYBAR
NAME OF STUDENT : Deniz KERMOLU
STUDENT ID: 18880733086
NAME OF STUDENT : Enes DAYANGA
STUDENT ID: 13679160654

TABLE OF CONTENTS
Pages
Subject ....................................................................................................................................1
1. Introduction .......................................................................................................................1
2. Purpose of the Report
2.1 ADVANTECH PCI 1710 Daq Device............................................................................1
2.2 Fundamentals of Real-Time Toolbox in Matlab........................................................2
2.2.1 Real Time Windows Target (RTWT) Toolbox..................................................2
2.2.2 What does Real-Time mean?............................................................................3
2.2.3 Real Time Workshop Toolbox and Real-Time Kernel (OS) built in Matlab.3

2.3 How to interface ADVANTECH PCI 1710 Daq Device with Simulink.......................5
2.4 Difficulties to Use the PCI 1710 DAQs Connector .................................................11
2.4.1 Tools...................................................................................................................11
2.4.2 Making Our Own Printed Circuit.....................................................................11
2.4.3 Notes about the Mixture ..................................................................................12

2.5 DC Motor Speed Control via DAQ and MATLAB ......................................................13


2.6 Displaying Motors Speed (RPM) with Seven Segment...........................................17
2.7 Results: Comparison of the actual systems outputs and simulation outputs....20
2.8 Gray code......................................................................................................................23
3. Conclusion ....................................................................................................................24

SUBJECT: Interfacing MATLAB and ADVANTECH PCI 1710 Daq Device


1. INTRODUCTION
In our project for EEM494 lecture our basic purpose was to use ADVANTECH PCI
1710 Daq Device with Matlab and Simulink. By interfacing the Daq Device with Matlab or
Simulink we are able use all the functions supplied by Matlab or Simulink for our control
purposes and Matlab supplies us a real-time control of our real world plant by the Real Time
Windows Target Toolbox. Basically we have worked on 4 fundamental Simulink blocks which
are Analog Input(AI), Analog Output(AO), Digital Input(DI) and Digital Output(DO). We
have also written *.m file codes for AI, AO, DI, DO purposes for Daq Device.
2. PURPOSE OF THE REPORT
The purpose of this report is to explain the fundamental steps to use ADVANTECH
PCI 1710 Daq Device with Matlab and Simulink.
2.1. ADVANTECH PCI 1710 Daq Device

In our project we used Advantechs PCI 1710 Daq Device with the following
properties.

16 single-ended or 8 differential or a combination of analog inputs


12-bit A/D converter, with up to 100 kHz sampling rate
Programmable gain
Automatic channel/gain scanning
Onboard FIFO memory (4096 samples)
Two 12-bit analog output channels (PCI-1710/1710HG only)
16 digital inputs and 16 digital outputs
Onboard programmable counter
BoardID switch

2.2. Fundamentals of Real-Time Toolbox in Matlab

Before beginning the adjustment of configurations in Simulink for PCI 1710 we will
introduce the fundamental process and idea of how a PC (particularly Matlab) communicates
with a PCI Daq device over Windows Operating System in real-time and how Simulink
manages real-time application using Real Time Windows Target Toolbox under Windows
which is a non-real time Operating System. Then we will issue interfacing the PCI 1710 Daq
device with Simulink step by step.
2.2.1 Real Time Windows Target (RTWT) Toolbox

Real-Time Windows Target (RTWT) software is a built-in toolbox under Simulink


which enables you to run Simulink and Stateflow models in real time on your computer. One
can create and control a real-time application through Simulink software. Real-Time Windows
Target includes I/O device drivers to support numerous numbers of I/O boards, enabling us to
interface to Daq devices, sensors, actuators, and other devices for experimentation,
development, and testing of real-time systems. So RTWT supports our ADVANETCH PCI
1710 Daq Device too.
Real-Time Windows Target includes a set of I/O blocks that provide connections
between the physical I/O board and the real-time model. One can run hardware-in-the-loop
simulations (HILS) and quickly observe how the Simulink model responds to real-world
behavior. The Block Library lets you connect I/O signals for operation with numerous I/O
boards. So RTWT supports our Daq device ADVANTECH PCI 1710 too.
Here we have mentioned about the hardware-in-the-loop simulations (HILS). HILS is a
device that fools your embedded system into thinking that it's operating with real-world inputs
and outputs, in real-time. So we simulate the system as if it is in a real-time environment.

Figure shows a simple block diagram of an embedded system being tested using HILS.

2.2.2 What does Real-Time mean?

We mentioned about running or simulating real-time applications. But what makes an


application a real-time one? And besides what is a real-time application first of all? The
answers to these questions are made easy once you have covered the exact meaning of realtime. The real-time application is an application that runs concurrently with the inputs
supplied and gives the output within a neglectable amount of delay, that is it must respond to
the given inputs in no time so that the application does not crash. Here are some real-time
applications that we face in our daily life:
Videoconference Applications
VoIP (Voice Over Internet Protocol)
Online Gaming
Pendulum-Cart System in the lab
The real-time applications, systems must be controlled, observed and simulated in realworld environment concurrently that they must not be faced with unpredictable delays. An
important question arises here: Is Windows a Real-Time Operating System (RTOS) that
applications under Windows run real-time? Consider the simple example below: You want to
listen to some music and you double clicked on your favorite song to be played with Winamp.
Even at fast computer you wait 1-2 seconds for the song to be opened and if you are running
some other applications besides Winamp this waiting period may be 3-4 seconds. So the
system faces with unpredictable delay. As clearly seen from this example Windows is not a
Real-Time Operating System (RTOS).
2.2.3 Real Time Workshop Toolbox and Real-Time Kernel (OS) built in Matlab

We are to run real-time applications in real-time with Matlab/Simulink under


Windows. But as we have mentioned above Windows can not run applications in real-time
because of the unpredictable delays. Matlab, particularly Real-Time Windows Target Toolbox
uses a small Real-Time Kernel (in the general meaning kernel means Operating System) to
ensure that the real-time application runs in real time. The kernel intercepts the interrupt from
the PC clock before the Windows operating system receives it. [You may need to revise the
lecture notes in Microprocessors I or II courses for the concept of interrupt]. The kernel then
uses the interrupt to trigger the execution of the Simulink model. As a result, the kernel is able
to give the real-time application the highest priority available.
The real-time kernel can use the CPUs resources directly without the permission of
Windows and uses the built-in PC clock as its primary source of time. Because of these
properties, applications under the Real-Time Kernel supplied with the Matlab can be run in
real-time.

You must install the real-time kernel once to use it. Installing the kernel configures it to
start running in the background each time you start your computer. To install the kernel:
In the MATLAB Command Window, type:
rtwintgt install
And precede the installation by pressing y.
Since we are to run Simulink models under the real-time kernel, Simulink needs to
convert the created models which consist of blocks into C code to generate an executable file
to be run under the real-time kernel. More precisely, we need to convert the Simulinks blocks
into C code to be used with the real-time kernel. Here the Real-Time Workshop Toolbox
comes into the consideration.
Real-Time Workshop generates and executes stand-alone C code for developing and
testing algorithms modeled in Simulink. The resulting code can be used for many real-time
and non-real-time applications. You can tune and monitor the generated code using Simulink
blocks and built-in analysis capabilities, or run and interact with the code outside the
MATLAB and Simulink environment.
Basically Real-Time Workshop provides the utilities to convert our Simulink model
into C code by the Real-Time Workshop Code Generation Software. Then it uses Open
Watcom C/C++ Compiler to compile and create a real-time executable file with .rwd extension
to be run with the real-time kernel. This compiler is supplied with the Real-Time Windows
Target software and no other compilers are needed or can be used.
Simulink External Mode Interface Module provides communication between Simulink
software and the real-time application. This module talks directly to the real-time kernel and is
used to start the real-time application, change the block parameters, and retrieve scope data.
So Simulink External Mode allows us to change parameters by editing the block diagram and
observe the effect of these changes while running a simulation in external mode, in real-time.
New parameter values are automatically transferred to real-time application while it is
running. That is the exact meaning of the word real-time. But note that not all parameter can
be changed in real-time. When some parameters have been changed the code needs to be
recompiled.
Parameters are changed from the Block Parameter Dialog Boxes. Opening a dialog box
for a source block causes Simulink to pause. While Simulink is paused, you can edit the
parameter values. You must close the dialog box to have the changes take effect and allow
Simulink to continue. Example parameters: amplitude of a gain, frequency of a sine wave.
Scope blocks can be used to visualize the signals in real-time applications to view the changes.

Here is the basic procedure of how a real-time application is run and configured:
We create a real-time application in the same way as we create any other Simulink model by
using the standard Simulink Blocks. The Real-Time Workshop code generation software
creates C code from our Simulink model. Then the Open Watcom C/C++ Compiler compiles
the C code to an executable that runs with the real-time kernel. When running our models in
real-time , RTWT software captures the sampled data from one or more input channels, uses
the data as input to our block diagram model, immediately processes the data and sends it back
to the outside world through an output channel on our I/O board.
2.3. How to interface ADVANTECH PCI 1710 Daq Device with Simulink

Creating a Model
You need to create a Simulink model before you can run a simulation
or create a real-time application.[1]. Here is the Simulink Model, let name it
deneme.mdl

Configuring a Model
After you create a Simulink model, you can enter configuration and
simulation parameters for use by Real-Time Workshop code generation software for
creating C code and building a real-time application.. These parameters control many
properties of the model for simulation and code generation. This section
contains the essential information you need when setting configuration
parameters for a Real-Time Windows Target application. After you create a
Simulink model, you can use the rtwinconfigset function to specify a default Real-Time
Windows Target configuration set for the model.[1]. But for the sake of understanding the
procedure we will follow the configuration manually.
Entering Configuration and Simulation Parameters Manually
The configuration parameters give information to Simulink software for running a
simulation in real-time.
1 In the Simulink window, and from the Simulation menu, click Configuration Parameters.
In the Configuration Parameters dialog box, click the Solver tab. The Solver pane opens.
2 In the Start time field, enter 0.0. In the Stop time field, enter the amount of time you want
your model to run. For example, enter 10.0 seconds.

3 From the Type list, choose Fixed-step. Real-Time Workshop code generation software does
not support variable step solvers.
4 From the Solver list, choose a solver. For example, choose the general purpose solver ode5.
5 In the Fixed step size field, enter a sample time. For example, enter 0.001 seconds for a
sample rate of 1000 samples/second.
6 From the Tasking Mode list, choose SingleTasking. (For models with blocks that have
different sample times, choose MultiTasking.)
Your Solver pane looks similar to the next figure.

7 Click the Hardware Implementation node.


8 From the Device type list, choose 32-bit Real-Time Windows Target.
9 Under Emulation hardware, select None.
10 Click the Real-Time Workshop node. The Real-Time Workshop pane opens.
11 In the Target selection section, click the Browse button at the RTW system target file list.
The System Target File Browser opens.

12 Select the system target file for building a Real-Time Windows Target application, and
click OK.

The system target file rtwin.tlc, the template makefile rtwin.tmf, and the make
command make_rtw are automatically entered into the Real-Time Workshop pane.
Your Real-Time Workshop pane looks similar to the figure.

13 Click Apply to apply the changes to your model and OK for closing the pane.[1]
Creating a Real-Time Application
After you enter parameters into the Configuration Parameters dialog box for use by the
Real-Time Workshop code generation software, you can build a real-time application.
1 In the Simulink window, from the Tools menu, point to Real-Time Workshop, and then
click Build Model. (ctrl+B). The build process does the following:
The Real-Time Workshop code generation software creates the C code source files deneme.c
and deneme.h.

The make utility make_rtw.exe creates the makefile deneme.mk from the template makefile
rtwin.tmf.
The make utility make_rtw.exe builds the real-time application deneme.rwd using the
makefile deneme.mk created above. The file rtwin_model.rwd is a binary file that we refer to
as your real-time application. You can run the real-time application with the Real-Time
Windows Target kernel.
2 Connect your Simulink model to your real-time application.
Entering Additional Scope Parameters for Signal Tracing
Simulink external mode connects your Simulink model to your real-time application.
This connection allows you to use the Simulink block diagram as a graphical user interface to
your real-time application.
After you have created a real-time application, you can enter scope parameters for
signal tracing with Simulink external mode:
1 In the Simulation window, from the Simulation menu, click Configuration Parameters.
2 Select the Real-Time Windows Target node.The Real-Time Windows Target pane opens.
3 Select the External mode check box. The Real-Time Windows Target pane should appear
as follows.

4 Click OK.
5 In the Simulation window, and from the Tools menu, click External Mode Control Panel.
The External Mode Control Panel dialog box opens.
6 Click the Signal & Triggering button. The External Signal & Triggering dialog box opens.
7 Select the Select all check box. From the Source list, choose manual. From the Mode list,
choose normal.
8 In the Duration field, enter the number of sample points in a data buffer. For example, to
specify a sample rate of 1000 samples/second and a stop time of 10 seconds, enter 10000
9 Select the Arm when connecting to target check box.
The External Signal & Triggering dialog box looks like this:

10 Click Apply to apply the changes to your model and close to close the pane.

Running a Real-Time Application


You run your real-time application to observe the behavior of your model in real time
with the generated code. The process of connecting consists of:
Establishing a connection between your Simulink model and the kernel to allow exchange of
commands, parameters, and logged data.
Running the application in real time.
After you build the real-time application, you can run your model in real time.
1 From the Simulation menu:
Select External mode simulation.
Choose Connect To Target.
The MATLAB Command Window displays the message Model rtwin_model loaded
2 From the Simulation menu, choose Start Real-Time Code.
The Simulink software runs the execution and plots the signal data in the Scope
window. In this example, the Scope window displays 1000 samples in 1 second, increases the
time offset, and then displays the samples for the next 1 second.

3 One may perform the followings:


Let the execution run until it reaches the stop time.
From the Simulation menu, click Stop Real-time Code. The real-time application stops.

4 In the Simulation window, and from the Simulation menu, click Disconnect From Target.
2.4. Difficulties to Use the PCI 1710 DAQs Connector

68-Pin SCSI Female

The PCI DAQ card has 68-pin connector, shown above, which includes; analog ,digital
inputs and outputs, grounds and timer/counter pins.
Firstly, we had a problem to test it because in order to connect a cable to this connector i.e.
a digital meters cables were connected to it directly to measure the analog outputs. While
doing this, we were trying to be careful to get rid of short-circuit.
In short-circuit case between any pins , it will cause to get out of usage of the DAQ card.
Furthermore, like that, we cannot connect on it more than two cables. In electronics shopping
center in Turkey, an appropriate connectors are not sold. In short, we could not connect the
cables to the DAQ card efficiently and we have decided to make a circuit interface connector.
2.4.1. Tools
a) 34 double connectors ( klemens )
b) 68-Pin Shielded cable
c) A computer
d) A laser Printer
e) Enough size Copper board
d) A clothes Iron
e) 300ml Etchant (Hydrogen Peroxide H2O2)
f) 900ml Hydrochloric Acid (Tuz ruhu)
g) A plastic cup
i ) Any pcb program( we used Ares Professional program)
j) A clean A4 photo paper
2.4.2. Making Our Own Printed Circuit
We must indicate that it seems easy to implement and not to take long time. But, really it is a
hard work.
First of all, we bought the connectors and we guessed how long distance is there between
connectors pins. Using Ares program, which is together Proteus, we designed the ways for PCB boards
and put enough bigger dot to make a hole there.
As a second step, we printed it any paper to check whether it suits to our connector and our
copper board. After trying a few times, it suited and this was what we wanted and then we cleaned the
copper board and the photo paper. All in all, we printed it on the cleaned photo paper. Please note that,

just laser printed is worked for it because of its special chemical, we mean that any other printer will
not work for PCB.
As a next step, we carefully tape to hold the printed photo paper on the cleaned copper board in
one position without any movement. After this step, using a very hot iron, for a long time, we put the
Iron on our copper board because we waited to make the track pattern to transfer from the paper to the
copper board. Actually, we succeed this part at a second time. At first trying, we did not make it
enough hot and put the Iron on it for long, and without waiting it gets cool after transferring the track
to it, we made the copper board and the printed paper left each other. Fortunately, at the second time,
we put the Iron on them for long time, and then, we put it in water, then we observed that in water, the
copper left the paper easily.
Then, we put it in the mixture of 300ml- Hydrogen Peroxide and 900-Hydrochloric Acid

using a enough large plastic cup. Therefore, the tracks are appeared.
Finally, we cleaned and dry the board without damaging the tracks. In addition, we made a hole
on the dot where we put the Clemens and connect to the cable. After making holes on it, we found out
the cables sort to solid it and then we solid it and Clemens on it and tested them whether there is a short
circuit or not. In conclusion, there was no problem and we succeed it and its picture is below;

2.4.3. Notes about the Mixture:


a) Even though Hydrochloric Acid can be bought at everywhere, Hydrogen Peroxide is
just sold in DETSAN company in Eskisehir due to the fact that it is in the group of dangerous
chemical.
b) Their rate should be 1/3.
c) When we put a copper board in this mixture. A chemical reaction starts.
This reaction is;

Cu + H2O2 + 2HCl -- > CuCl2 + 2H2O


That is, after the reaction, water and copper clorid occurs. Copper klorid, CuCl 2 is a dangerous
gas. Therefore, while doing this step, this gas must be breathed.

2.5 DC Motor Speed Control via DAQ and MATLAB

In this part of our project, we control the speed of the DC motor as rpm (root per
minute) with PI control.
The motor features;
R=3.6; which is the total of winding Ra and Terminal Rk, ohm
L=5.6*10^-3; which is the inductance, henry
J=.055*10^-3; which is the armature inertia,
beta=.021; which is the static friction loss
K1=.105; which is a constant
The motor state-space according to the above values:
A=[-R/L 0 -K1/L ; 0 0 1 ; K1/J 0 -beta/J]
B=[1/L ; 0 ;0]
C=[0 0 1]
D=[0]
P1=tf(ss(A,B,C,D))
A=
1.0e+003 *
-0.6429
0
1.9091

0
0
0

B=
178.5714
0
0
C=
0

D=
0
Transfer function:
3.409e005

-0.0187
0.0010
-0.3818

-----------------------s^2 + 1025 s + 2.813e005


Proportional-Integrator coefficients:
First of all, the coefficients of PI are found without any connections to real motor like
the above print-screen picture.

P Control - - Increase the transient response - - u P ( k ) K P e( k )


I Control - - Zero steady - state error - - u I (k ) u I ( k 1) K I e( k )

Our coefficients are;


Kp = 1
Ki = 2/ .3
If we select the step inputs features;
Step Time: 1e-3
Initial value: 0
Final Value: 1
In this case, the plots of outpust and errors are;

Output

Error

This table, which is above, may help to find the Kp and Ki coefficients.
Designing Simulink model for the real time speed control application:
In this part of our studying, we follow this steps;
1-Put the analog output instead of state-space
State-space substitute our DC motor
2- Connect the analog input as negative feedback with conversions
-Tachometer gives us the speed of the motor as voltage
-If its output is 14V, this means it is rotating at 1000rpm
-Using this information, we multiply tacho output with 1000/14
-If we want to show the speed as rad/second, then we multiply it again with 1/60
If one wishes, the one does not have to convert rpm to rad/sec, but this time the one should not
divide reference rpm with 60.
2.

Multiply also analog input with 10 and almost 6.

Analog inputs give us a value between 0 and 1, if we multiply with 10, we get the
correct decimal value.
This correct decimal value is multiplied by 6. Because, our taco out is normally
maximum 30V, and our DAQ analog input should be in 5V. By using op-amp, we divide
it with 6. In short, to get the this correct value again, as software, we multiply it with 6.
This circuit is used as voltage divider which is shown below. For instance, if the
input is 24, the output is 4. The first op-amp output is -4V and then the second output is
4V. We have to use the second op-amp to make it positive due to the fact that DAQs
GNDs are short circuits.

So, final our .mdl file is shown below, and it is all mentioned above.

2.6 Displaying Motors speed(rpm) with seven segment.


In this we have intended to display the speed of the motor on a 4 digit 7 segment display.
We have implemented the program using the Simulink Blocks in the below figure. We have
also placed the simout block to see the actual systems error, cotroller output, tachometer
outputs and simulative error, cotroller output, tachometer outputs:

Here we have implemented the seven segments block diagrams in the Seven Segment
Block Diagram. We have taken the modulus of the time with respect to 0.1s. Then we have
divided the time into 4 equal time periods (0.025 0.050 0.075 0.100). If we are in the period of
0.000 - 0.025 seconds we choose the first seven segment and print the least significant decimal
value, then in the second period we choose the second seven segment and print the second
least significant value. This is called the scanning and we perform this process in the
simulation time interval. We have implemented this scanning process in the so called
Subsystem Blocks.

Here is the subsystem block that does the scanning process.

2.7 Results: Comparison of the actual systems outputs and simulation output
These values are taken at 500,1000 and 1500rpm respectively.

2.8. Gray code:


We build our own simulink model which converts gray code to decimal value. It is a 12 bits
binary values and it is got from DAQ digital inputs ; DI 5 - DI 16.
This gray code can be used to convert the gray code value from the motor position and convert
it to control its position.
In order to this, we put the DAQ Digital Input blocks, and we ex or each bit in a algorithm, it is
shown the below print-screen pictures. And there is subsystem which check the bit after ex or. If the bit
is 1, the output of the bit is one , otherwise, it is zero. Also the subsystem is shown after the next
picture.

3.

CONCLUSION

Digital Control Systems Laboratory challenged us to improve our hardware and software
implementation abilities. There were lots of handicaps that we faced and overcame.
In the first place we have dealt with the software implementations of Advantech PCI
1710 Daq Device with Matlab. We have firstly tried to use the Daq device with Matlab *.m
files but then we have seen that using Simulinks Block Diagrams gave us more flexibility
about interfacing the Daq device and Matlab. Here the Real-Time Windows Target ToolBox
under Simulink supplies us Analog Input, Analog Output, Digital Input, Digital Output Blocks
to directly use the Daq device.
Matlab interacts with the
Advantech 1710 Daq device according
to the left side figure. This interaction is
basically supplied with the Simulinks
Real-Time Windows Target Blocks. In
the application we have done, our sensor
is Tachometer which gives us the speed
as voltage. Our actuator is Current
Driver which drives the motor.

After we have learnt about Matlabs abilities we then discovered that lots of real-time
applications can be implemented with Matlab and Simulink. Matlab includes lots of tools such
as RTW, RTWT, xPC, and many. Such tools connect the applications to the real world easily
via Daq device. Actually, these connections can be done with C, but with much more effort.
In the next step, that is after we were able to use the Simulinks I/O blocks we have dealt
with the speed control of a DC Motor with the PI control. The simulations and the actual
results concerning the systems error and tachometer output have fitted in the acceptable
range. Then we have implemented the software and hardware setup to show the motors speed
in rpm at 4 digit seven segment display.
Referances:
[1]RTWT User Guide
[2]http://www.biltek.tubitak.gov.tr/merak_ettikleriniz/index.php?kategori_id=6&soru_id=3705
[3]http://homepage.eircom.net/~ei9gq/pcb.html
[4]University of Virginia, Course Lectures

You might also like