implementation of a real time simulator for - circle

80
IMPLEMENTATION OF A REAL TIME SIMULATOR FOR PROTECTIVE RELAY TESTING by JESUS CALVINO-FRAGA. Electronics Engineer, Simon Bolivar University, 1987 A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF APPLIED SCIENCE in THE FACULTY OF GRADUATE STUDIES DEPARTMENT OF ELECTRICAL ENGINEERING We accept this thesis as conforming /tojjie reaun^d standard The University of British Columbia June 1999 © Jesus Calvino-Fraga, 1999

Upload: others

Post on 11-Feb-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

IMPLEMENTATION OF A REAL TIME SIMULATOR

FOR PROTECTIVE RELAY TESTING

by

JESUS CALVINO-FRAGA.

Electronics Engineer, Simon Bolivar University, 1987

A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF

THE REQUIREMENTS FOR THE DEGREE OF

MASTER OF APPLIED SCIENCE

in

THE FACULTY OF GRADUATE STUDIES

DEPARTMENT OF ELECTRICAL ENGINEERING

We accept this thesis as conforming

/tojjie reaun^d standard

The University of British Columbia

June 1999

© Jesus Calvino-Fraga, 1999

Page 2: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

In presenting this thesis in partial fulfilment of the requirements for an advanced degree at the University of British Columbia, I agree that the Library shall make it freely available for reference and study. I further agree that permission for extensive copying of this thesis for scholarly purposes may be granted by the head of my department or by his or her representatives. It is understood that copying or publication of this thesis for financial gain shall not be allowed without my written permission.

Department of e^6CfR^/^C £AjCi/A/£tFKiflj G

The University of British Columbia Vancouver, Canada

Date ^ C i y 2 6

DE-6 mm

Page 3: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Abstract

Details on the implementation of the Real-Time simulator for

protective relay tester on an off-the-shelf hardware platform are

presented. This simulator is a particular implementation of the

OVNI simulator (Object Virtual Network Integrator) being

developed at the Power System Simulation Laboratory of the

University of British Columbia. This report includes the details

on the implementation of fast and accurate models for current

and coupling-capacitor voltage transformers. Also described are

the details on the implementation of accurate timing and other

operating system related issues. The user interface program, as

well as details on the hardware/software implementation of the

simulator are also presented.

i i

Page 4: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Contents

Abstract ii

Contents iii

List of Tables v

List of Figures vi

Acknowledgements vii

I. Introduction 1

II. Real-Time Relay Tester 8

1 Requirements 8

2 The Core Source Code 11

3 Hardware Configuration for the Real Time Relay Tester 12

4 Running Test Cases 13

5 The Configuration File 16

6 Inline Options 18

III. Interfacing the Real Time Simulator With External Devices 20

1 Switches and Digital Inputs 20

2 Reading and Processing External Switching Events 21

3 Analog Outputs 23

4 Preconditioning the Analog Outputs: Current and Voltage Transformers. 24 4.1 Current Transformers 25

4.2 Coupling-Capacitor Voltage Transformers 30

IV. Accurate Real Time 36

1 Using an Internal Counter as Time Reference 36 1.1 The Real Time Simulator and the CTC 37 1.2 Configuring and using CTC Counter 0 Under Phar Lap TNT 38 1.3 Measuring the Execution Time Using the CTC 42

2 Using an External Interrupt as the Source for the Time Reference 44 3 Using the Time Stamp Counter 45

iii

Page 5: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

3.1 Measuring the Execution Time Using the RDTSC Instruction 49

4 Comparison of the Different Methods Used to Generate the Time

Reference 50

V. The Monitoring Computer 53

1 Hardware requirements for the Monitoring Computer 53

2 The Monitoring Program 55

VI. Conclusions and Recommendations 58

VII. References 60

Appendix I. Test Case Files. 62

1 Circuit Schematic 63

2 Preprocessor Input File 63

3 The real-time simulator input file 65

Appendix II. Microtran Input File for the CT Simulation. 71

iv

Page 6: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

List of Tables

Table 1. Preprocessor File structure 15 Table 2. The "DACS" section was created for this version of the simulator 16 Table 3. The configuration file rtns.cnf 19 Table 4. Formulas used to calculate the values of the circuit in figure 12 28 Table 5. Formulas used to calculate the values of the circuit in figure 18 34

V

Page 7: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

List of Figures

Figure 1. Typical setup of a TNA for relay testing 3 Figure 2. Typical setup of a playback simulator for relay testing 4 Figure 3. Setup of a real time simulator for relay testing 5 Figure 4. Magnitude and Phase responses of the used integration rules 9 Figure 5. The Implemented real time relay tester 12 Figure 6. Steps to create and run a test case in the real-time relay tester 14 Figure 7. A simple test case 20 Figure 8. Transitions in the digital inputs are not instantaneous 22 Figure 9. The state machine used to debounce digital inputs 23 Figure 10. Equivalent circuit of a current transformer 25 Figure 11. Piece-wise representation of a nonlinear inductance 26 Figure 12. Discrete time representation of the circuit in figure 10 26 Figure 13. Resulting output current obtained using the implemented model and

the same circuit simulated using Microtran 29 Figure 14. Coupling-capacitor voltage transformer (CCVT) circuit 30 Figure 15. Equivalent circuit for the CCVT 31 Figure 16. Simplified version of the equivalent circuit for the CCVT 32 Figure 17. Discrete time representation of the circuit in figure 16 33 Figure 18. Frequency response of the detailed circuit of figure 15 as reported by

Hou and Roberts in [19] (dashed line) and for the simplified circuit of figure 16 (solid line) 35

Figure 19. Block diagram of the CTC present in x86 computers 37 Figure 20. Execution times per time step found using the CTC 44 Figure 21. Execution times per time step found using the RDTSC instruction 50 Figure 22. A snapshot of the monitoring program 57 Figure 23. Analog output 9 is used to signal switching events 57

vi

Page 8: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Acknowledgements

I would like to thank the following people for their contribution to this thesis:

Dr. Jose R. Marti for his supervision and financial support, and

To Roberto Rosales for all his help and guidance.

Jesus Calvino-Fraga

vii

Page 9: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

I. Introduction

Power system networks are protected by devices called Relays. In general

terms, a relay is a device originally used in telegraphy, that has a coil, which when

energized by a weak receiving current attracts an armature that closes a contact in

the line ahead, "giving a 'relayed' signal of renewed 'strength' " [5].. A similar

approach was used in the early days of power systems for the protection of its

components; although now, protective relays are quite more elaborate than just

coils, armatures and contacts.

According to Mason in [4], the function of a protective relay is to remove

from service any element from the power system when it suffers a short circuit, or

when it starts to operate in any abnormal manner. In this approach, the relay is

responsible for tripping (i.e., opening) the circuit breaker that disconnects the faulty

element from the system. The relay bases the decision of tripping the circuit

breaker on the information it gets from the faulty element such as currents,

voltages, power, etc.

Since their humble origin as simple electromechanical devices, protective

relays have grown in complexity and performance. Today relays are

microprocessor based, which makes them very flexible. This flexibility comes with

a price though. Since the relay is so dependent for its correct operation on a given

setup, its behavior cannot be guaranteed unless it is appropriately tested.

It is not practical to test a relay by means of directly connecting it to the

power system. Most times, it is very difficult to create the required conditions for a

1

Page 10: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

given test case, not to mention the loss of revenue caused by taking out of service

any portion of the power system, or the risk involved in such kind of tests. A better

approach is required for relay testing. More suitably, relay testing is performed by

means of using a driver to simulate the system the relay is intended to protect.

Electric power systems are usually very complex, making them difficult to simulate.

This is the main problem for relay testing: the availability of a suitable testing

device or driver. Currently, there are three kinds of drivers to perform relay testing:

Analog Scaled Network Simulators, Playback Digital simulators, and Real-Time

simulators.

Analog Scaled Network Simulators, also called Transient Network Analyzers

or TNAs, were the first, and up to the middle 1970s the only, network simulators

available for relay testing. They are basically a scaled representation of the

network they are intended to simulate [2][5]. The main advantage of this kind of

simulators is that they are capable of receiving feedback from the relay, so the

relay affects the behavior of the network. Their main disadvantage is their high

cost, bulky size, and the lack of flexibility to adapt to different network

configurations. Analog scaled simulators have also problems simulating some

network elements such as transmission lines, where most of the parameters

depend on the actual size and configuration of the line [6]. The overall error

associated with this kind of simulators is around ±2%, which corresponds to the

typical error of the components the simulator is made of [5].

The typical setup to perform relay testing using Analog Scaled Simulators is

shown in figure 1. The currents and voltages of the equivalent system are scaled

down, then they are amplified before being fed to the relay under test. The trip

2

Page 11: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

signals provided by the relay are used to control the breakers in the equivalent

system. Oscilloscopes or data acquisition computers are used to monitor the

relevant parameters of the test.

S e a 1 e d N e t u o r k S i m u l a t o r

S e a 1 e d N e t u o r k S i m u l a t o r

fimpl i - T i e n s

D a t a ftdaiuisiti o n C o m p u t e r

Figure 1. Typical setup of a TNA for relay testing

Play-back digital simulators use some form of recorded information which

corresponds to the system the relay is intended to protect. Initially, the recorded

information came from real electric systems, where similar conditions as those

required for the test had occurred. In the middle 1970s, the Electromagnetics

Transients Program EMTP [9] began displacing TNAs to simulate power system

transient conditions. The EMTP represented an important advance from analog

simulators in cost, size, and precision. It did not take long before the EMTP and

derived programs began to be used for testing relays. The typical setup for testing

relays using playback simulators is shown in figure 2 [2]. It consists of a pair of

computers, A/D converters and power amplifiers. One of the computers is used to

simulate the system the relay is intended to protect and to generate the data files

of currents and voltages required to test the relay. Then, those data files are fed

RELAY

3

Page 12: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

into a second computer called the play back computer. The play back computer

scales the currents and voltages, transforms them to analog signals using digital to

analog converters (D/As), and finally, feeds them to the power amplifiers. The

output of the power amplifiers is then fed to the relay under test.

S i m u l a t i o n Computer

P1ay—Back Computer

D / A Conven t e n s

Amp1 i f i e r s

RELAY

Figure 2. Typical setup of a playback simulator for relay testing

The trip signals provided by the relay, as well as other signals of interest,

are monitored by the play-back computer, although any other scheme of

monitoring, such as an additional computer, could be used [9]. It should be

noticed that in this scheme it is not possible for the relay under test to trip the

equivalent circuit breakers in the simulated circuit. That is why play-back digital

simulators are also known as "open loop relay testers" [8]. Testing times are

usually short, due to the finite storage capacity of the play-back computers.

Normal simulation times are around 5 minutes. The overall error associated with

playback simulators is basically the error introduced by the simulation of the

network: around ± 3 % .

4

Page 13: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Real time simulators are the most recent drivers used for relay testing.

They simulate the network and output the required currents and voltages in real

time, allowing the relay to interact with the simulation of the network they are

intended to protect. Up to the end of the 1980s, this type of simulators were not

feasible because of the high computational requirements of the simulation

algorithms [6][10]. Since then, improvements in both the simulation algorithms and

hardware platforms have made possible the implementation of some real-time

simulators. All the real-time simulators for relay testing in the market today are

based on improved EMTP-like algorithms. The typical configuration for relay

testing using a real-time simulator is shown in figure 3.

S i m u l a t i o n Computer

D / A Conven t ens

ftmpl i - F i e r s

RELAY

D a t a A c q u i s i t i o n Computer

Figure 3. Setup of a real time simulator for relay testing

Real-time simulators consist, basically, of a simulation computer, a

monitoring computer, D/A converters, and power amplifiers [11]. In this scheme,

the simulation computer is responsible for running the simulation of the network,

scaling the resulting voltages and currents, and converting them to physical signals

by using D/A converters and power amplifiers. The amplified signals are then fed

5

Page 14: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

into the relay under test. The trip signals of the relay are fed back to the network

simulation computer, which uses that information to modify the configuration of the

equivalent network that is being simulated. That is the reason why real-time

simulators are also called feedback simulators. The output signals of the relay

under test, as well as all the voltages and currents of interest, are also fed to the

data acquisition computer, where the results of the test can be analyzed.

Simulation times can last as large as required; there is no inherent time limit at

which to stop the simulation, as there is with play-back simulators. Similarly to

play-back simulators, the overall error associated with real-time simulators is

basically the error introduced by the simulation of the network: around ±3%.

The work described in this thesis report is part of the OVNI project [22] to

develop a general-purpose real-time power system simulator based on personal

computers and standard off-the-shelf components. In particular, the work in this

thesis corresponds to the development of a software/hardware interface that

allows the application of OVNI to the real-time closed-loop testing of protective

relays. This implementation has been highly successful and simulation times as

low as 20 ps/step have been achieved for systems of about 24 nodes using four

analog outputs using a standard Pentium II 400 MHz computer. This system size

is normally adequate for testing of protective relays.

The power system simulation software used for the relay tester is the RTNS

code [12] written by Luis Linares. Additional software developed for the relay tester

include the user interface routines, models for current transformers and coupling-

capacitor voltage transformers, plus the low-level I/O interface routines.

6

Page 15: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

The achieved small simulation time greatly decreases the errors for the

higher frequencies response of the real time simulator. This increased frequency

response, however, poses a bigger demand for the implemented models of current

and voltage transformers. The models implemented in this thesis are accurate up

to 6 kHz, while it was still possible to keep the computational burden imposed on

the total simulation time to less than 0.5 us/step per simulated transformer. The

feed-back mechanism, I/O operations, and the use of an accurate time reference

are also described. The program used in the monitoring computer is described as

well. Finally some conclusions and recommendations are listed to improve future

versions of the OVNI simulator.

7

Page 16: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

II. Real-Time Relay Tester

1 Requirements

Most of the requirements for the real time simulator are listed in the

operational committee report of the IEEE Working Group F-8 of Relay Input

Sources [8]. Among the requirements are:

• Simulation step of 50 jus or less for an adequate output signal bandwidth. This

is, by far, the hardest requirement to achieve in any real time simulator for relay

testing. For instance, it has been suggested that a signal bandwidth of 2000 Hz,

in which the numerical error is 3% or less, must be achieved in order to properly

test relays [6]. The main integration rules used in OVNI are the trapezoidal rule

and the backward Euler rule. However, for the implementation of the model for

current transformers performed in this project, a new integration rule developed

by this author is used. Figure 4 shows the magnitude and phase response for

the trapezoidal rule and for Calvino's rule. The frequency at which the total

error of 3% begins is about 2 0 % of the Nyquist frequency (fN) for both rules.

Therefore, the maximum time step for the simulation (At) can be calculated

using the formula:

2000Hz = 0.2 -fN=>fN= 100007/z

1 1 / „ = ^ 1 0 0 0 0 / / z = =>At = 50us J N 2At 2At ^

8

Page 17: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Figure 4. Magnitude and Phase responses of the used integration rules

Feedback. Feedback is referred to as the ability of devices, external to the

simulation computer, to modify the network being simulated. These devices

could be either the monitoring computer or the relay under test. This feature is

achieved in this implementation by reading binary inputs from a digital input

board, and mapping them to switches in the network being simulated in the

simulation computer.

Long Simulation Times. This is one of the features of real time simulators for

relay testing that cannot be easily achieved using other kind of simulators. For

this implementation of OVNI there is not a designed maximum simulation time,

in fact the simulator has been let run for more than 200 straight hours with no

numerical stability problems.

Program monitoring. A suitable user interface has to be provided in order to

allow easy control and monitoring of the simulation computer. For this

implementation of the real time simulator a monitoring program was written

Page 18: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

using LabWindows/CVI from National Instruments, running under Windows

95/98/NT. The program allows the creation and downloading of test cases to

the simulation computer, simulation of faults, and capture and presentation of

the generated data.

Other important requirements developed in our group's work are the following:

• Time step accuracy. This important requirement is not listed in [8], but turned

out to be very important for the implementation of the real time simulator. For

example, consider a test case in which a time step of 21.789 u.s is required, but

a time step of 23 us is the one that can be generated. Then, the resulting

simulation will have an error of about 5.56%. This error appears as a frequency

shift in the analog outputs of the simulator. For instance, if a 60 Hz signal is

expected for the time step of 21.789 (is, then the resulting frequency will be

63.34 Hz for the 23 us time step. This difference could be very important for the

correct operation of some relays which require a 60 Hz input frequency to

perform computations accurately [7][13]. The methods used to achieve an

accurate time step in OVNI are described in chapter IV of this thesis report.

• Off-the-shelf components. From its beginning [6], it has been a basic premise of

the OVNI project that the simulator should be built using only off-the-shelf

hardware components, and that the software should be written using a standard

high-level compiler, with easily available development tools. At present, the

hardware solution is built around Intel Pentiums PC's while the C/C++

programming language is used for software development.

10

Page 19: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

2 The Core Source Code

This implementation of OVNI is based on the code written by Luis Linares in

1993 and reported in [12]. This code is written in standard ANSI C. As reported

in [12], great importance was given to the fact of making the code compatible with

any computer platform with a standard ANSI C compiler. However, some

relaxation of this requirement has been necessary for some instructions which are

hardware related, such as I/O operations. The original code included the following

network elements:

• Lumped elements: resistances, inductances, and capacitances. Both

inductances and capacitances are implemented using the trapezoidal

rule of integration.

• Lossless transmission lines.

• Voltage sources.

• Metal-Oxide varistors, MOV.

• Switches.

For this relay-testing implementation, the following elements were added and are

described with more detail in chapter III of this report:

• Current transformers.

• Coupling-capacitor voltage transformers.

The following elements were modified to properly interface with the hardware:

• Current and voltage outputs

• Switches

These changes are also described in chapter III of this report.

11

Page 20: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

3 Hardware Configuration for the Real Time Relay Tester

The basic hardware configuration presented in figure 3 was used for the

implementation of the real time simulator (figure 5). It consists of two" computers:

one of them is a high performance computer, used to run the core software for the

real time simulator. The other is used to generate test cases and to monitor and

control the simulation computer. The real time relay tester uses the TNT

Embedded ToolSuite operating system from Phar Lap Software Inc. running in the

core computer, and Windows 95 running in the monitoring computer with software

developed using LabWindows/CVI from National Instruments (figure 5).

A/D

DO

\ \ Simulation I , , ,

I I I ; ; Computer D/A | 1—|

^ 1̂ I 'RTS-TNT^'^M-DDH-

Power Amp.

LabWindovus/CVI Pentium ll-200MHz

PJS-TNT8.5 Pentium II-400MHz

1

Relay Under Test

Figure 5. The Implemented real time relay tester

Under this scheme, the simulation computer, while running the core

software, reads the digital input port attached to it, and maps each bit to an

equivalent switch in the system being simulated. The digital inputs can either

represent faults or breakers. If they are used as faults, they are connected directly

to the monitoring computer through one of its digital output ports. Otherwise, they

are connected to the relay under test, which should be able to trip the simulated

12

Page 21: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

circuit from the system conditions created by the faults introduced using the

monitoring computer. The voltages and currents required by the relay under test

are generated using a digital to analog converter (DAC) board installed in the

simulation computer. These signals, once properly amplified, are fed to the relay

under test. In order for the monitoring computer to have feedback of what is

happening during the simulation, an analog to digital converter (ADC) board is

used to capture the outputs of the simulation computer and present them to the

user.

4 Running Test Cases

The process of creating and running a test case using the OVNI simulator

for relay testing was kept basically the same as in the original code of RTNS [12].

As shown in figure 6a , the process of creating a case with RTNS is as follows:

1. Using a text editor, a test case file with extension RTP describing the

circuit required in the simulation is created.

2. The RTP file is converted into a file suitable for the real time simulator

core program, by means of a pre-processor. The resulting file has

extension RTI.

3. The RTI file is passed to the real time simulation program which

generates an output file with the desired currents and voltages for each

time step in a file with extension OUT.

The differences in the process for the generation of a test case for the real­

time relay tester (figure 6b) are in the third step, where instead of storing the

13

Page 22: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

desired voltages and currents in a file, they are converted to physical voltages

using digital to analog converters.

Text Text Editor: Editor

. RTP , RTP

.RTI

Pre Pre Proccessor Proccessor

.RTI

Simulator

,OUT

(a)

*

Simulator

D/A Converters

Figure 6. Steps to create and run a test case in the real-time relay tester

The format of the preprocessor input file RTP, as well as the preprocessor

itself are described in [12]. The data file is divided into sections. Each section

begins with the keyword .BEGIN, followed by an identifying label, and ends with

the keyword END, followed by the same identifying label. The original format was

created with six different sections: GENERAL-DATA, LUMPED, LINES,

SOURCES , SWITCHES, and OUTPUT (table 1).

14

Page 23: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

. B E G I N F I L E . B E G I N GENERAL-DATA

(. . .) .END GENERAL-DATA . B E G I N LUMPED

(. . .) .END LUMPED . B E G I N L I N E S

. B E G I N L I N E - 0 (. . .) '

.END L I N E - 0

. B E G I N L I N E - 1 ( . . . )

.END L I N E - 1

. B E G I N L I N E - 2 ( . . . )

. END L I N E - 2 .END L I N E S . B E G I N SOURCES

( . . . ) .END SOURCES . B E G I N SWITCHES

(...) .END SWITCHES . B E G I N OUTPUT

( . . . ) .END OUTPUT . B E G I N DACS

. B E G I N TO ( . . . )

. END TO . B E G I N T l

(...) .END T l

.END DACS .END F I L E

Table 1. Preprocessor File structure

An additional section, DACS, was added to the preprocessor input file, since

the implementation of the relay tester required models for current and voltage

transformers. This section tells the preprocessor about the number of analog

outputs the simulation is going to handle, as well as the type and component

values of each transformer (table 2). Three types of output devices can be

specified by means of using the appropriate keyword: CCVTfor coupling-capacitor

voltage transformers, CT for current transformers, or NONE when just a scaled

value of the desired voltage or current is desired. Detailed information regarding

15

Page 24: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

the design of the CTs and CCVTs is presented in chapter III. Table 2 shows

examples of the three types of output devices. TO corresponds to a CCVT whose

output has to be generated using logical DAC 0. The actual I/O address for DAC

0 is specified using the configuration file rtns.cnf, to be explained later. A similar

example is presented for a CT labeled T1 and a direct output labeled T 2 .

.BEGIN DACS t o t a l : 2 .BEGIN TO

type: CCVT por t : 0 CI: 9.97E-08 C2: 3.00E-10 Cc: 1.30E-10 Lc: 0.708 Rc: 628 Rf: 37.5 Lf: 0.73 Cf: 9.6E-06 R: 100 r a t i o a : 5000 r a t i o b : 110

.END TO

.BEGIN T l type: CT por t : 1 L f [ 0 ] : 1.0E-02 L f [ 1 ] : 1.0E-03 Lf [2] : 1.OE-04 I f [ 0 ] : 4.5E+00 I f [ 1 ] : 6.5E+00 I f [2] : 8.0E+00 Rf: 1.0E+03 Ls: 5.0E-04 Rs: 5.0E-01 Lb: 5.0E-04 Rb: 1.25 r a t i o : 120

.END T l

.BEGIN T2 type: NONE por t : 2 s c a l i n g : 1000

.END T2 .END DACS

Table 2. The "DACS" section was created for this version of the simulator

5 The Configuration File

Since the simulator has to be able to work with different commercially

available analog output boards, a configuration file, rtns.cnf, is used to map the

individual I/O addresses of each digital to analog converter to a logical output port.

The configuration file also specifies both the initialization and the shutdown

sequences for the analog output board. The following keywords are used:

DAC_enable: - Marks the beginning of the instructions to set up and enable

the analog output board.

16

Page 25: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

DAC_disable: - Marks the beginning of the instructions to disable and/or

shut down the analog output board.

base: word - Set the base address for the DAC board. All I/O operations

are done adding the corresponding number to the base. For example, if

base is set to 0x280, an input operation to address 0x281 looks like iw: 0x1.

If absolute addresses are preferred, base must be set to 0. There could be

as many base statements as required in the configuration file. This allows

the use of more than one analog output board at the same time in the real

time simulator.

end: - Marks the end, either of the DAC_enable or DAC_disable sections.

iw: port - Reads a word (16 bits) from the given port.

ib: port - Reads a byte (8 bits) from the given port

ow: port value - Writes a word (16 bits) to the given port.

ob: port value - Writes a byte (8 bits) to the given port.

di: port - Sets the address for the digital input port.

dac: logic physical - Assigns a physical DAC output address to a logical

address.

Any other words, as well as indentation, are ignored. Table 3 shows the

configuration file used for the AT-AO-10 DAC board from National Instruments.

This file was constructed using the configuration guidelines suggested in the AT-

AO-10 DAC board manual [15].

17

Page 26: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

6 Inline Options

A useful set of command input options was also added to the real time

simulator. These options are of great importance for test case time measurement,

as well as for the control of the simulation. These options are:

t - Instructs the simulator to find the execution time per time step for a given

case. The average, minimum, and maximum execution time, for 2000 time

steps are reported. These times depend on the particular test case, as well

as the speed of the computer being used. The simulator will not run any

case whose maximum time step execution time is larger than the required

integration time step, unless option n is specified.

n - Instructs the simulator to run the case even if the required execution

time per integration time step is smaller than the maximum physical time

step. This option is useful for debugging purposes only,

p - Produces the file 'rtimes.m' which lists the execution times per time

step. This file can be plotted using Matlab. The plots of figures 22 and 23

were generated using this option.

d - Display all information messages. This option is useful for debugging

purposes only.

e - Ignore Start/Stop signal. A dedicated digital input pin is used to either

start or stop the simulation in the core computer. If the real time simulator

senses this signal in logical zero before starting a test case, it waits until the

signal goes to logical one before proceeding. By using this option the real

18

Page 27: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

time simulator starts the simulation without waiting for the external signal to

go to logical one.

RTNS Hardware c o n f i g u r a t i o n f i l e f o r N a t i o n a l Instruments ATAO10 DAC_enable:

base: OxlCO /*Maps the l o g i c a l DAC to the P h y s i c a l DAC */ dac: 0 OxOC dac: 1 OxOE dac: 2 0x10 dac: 3 0x12 dac: 4 0x14 dac: 5 0x16 dac: 6 0x18 dac: 7 OxlA dac: 8 OxlC dac: 9 OxlE / ^ I n i t i a l i z e AT-AO-10 as recommended i n the manual*/ ow: 0x0a 0x0000 ob: 0x09 0x18 ob: 0x06 0x03 ow: 0x09 0x0058 ow: 0x02 0x0000 ow: 0x04 0x0000 iw: OxOC ow: OxOA 0x0089 /*No d i g i t a l outputs, only i n p u t s * / ow: 0x02 0x0000 ow: 0x04 0x0000 ow: 0x00 0x0000 /*S e l e c t a l l DACS f o r e x t e r n a l update using counter 1*/ ow: 0x02 0x00f8 / * I n i t a l i z e a l l outputs to 0 v o l t s * / ow: OxOC 0 ow: OxOE 0 ow: 0x10 0 ow: 0x12 0 ow: 0x14 0 ow: 0x16 0 ow: 0x18 0 ow: OxlA 0 ow: OxlC 0 ow: OxlE 0x3ff /*Map the d i g i t a l i n p u t s * / d i : 0x00

end:

DAC_disable: base: OxlCO ow: OxOA 0x0009 ow: 0x02 0x00f8

end:

Table 3. The configuration file rtns.cnf

19

Page 28: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

III. Interfacing the Real Time Simulator With External Devices

The process of interfacing the real time simulator with external devices,

either the relay under test or the monitoring computer, is achieved by using digital

inputs to control the simulated circuit breakers (switches), and digital to analog

converters to output the current and voltages from the system's solution to the

equipment under test.

1 Switches and Digital Inputs

The code of RTNS was modified to add dynamic "on-the-fly" switching

events while the simulator is running. For instance, suppose that the circuit of

figure 7 has to be simulated. The output of the simulation, to be connected to the

relay under test, would be the current ' i ' flowing through the inductance. For this

particular case, two switching events can change the topological configuration of

the circuit: One is the circuit breaker, which when open, causes the current to go to

0. The other, is the fault that, when closed, causes the current to increase by a

large value.

Figure 7. A simple test case

20

Page 29: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Under normal conditions, the circuit has the breaker closed and the fault

open. In the real-time relay tester the breaker operation is commanded by an

external device: the relay under test. To achieve this task, both switches are

logically mapped as bits in a digital port, which is read periodically. Based on the

read in information, the logical switches are set or reset to reflect the condition

present in the digital port.

Two important factors have to be taken into account when logical switches

are mapped to a digital input port. One is that switching events are, by nature,

random (that is, they can occur at any moment). The other is that the number of

events is not fixed for each test case, instead, they can increase or decrease

dynamically. To handle these conditions, two important changes were made to the

original simulator code:

• Switching events were converted from a dynamically allocated linked list, to a

statically allocated stack of events. This change is very important, since

allocating memory space for new events in the linked list method proved to be

very slow: about 10 \xs (minimum) per event in a Pentium Pro 200.

• Switching events can be added dynamically to the stack. Therefore, these

random events can be conveniently handled by the real time simulator.

2 Reading and Processing External Switching Events

Reading external switching events in the real time simulator is quite simple.

Only one instruction is required: "din = inp (BinlnPort);" were BinlnPort is specified

in the configuration file rtns.cnf using the keyword "din:". Since in this

implementation of the simulator, an analog output board with eight built in digital

21

Page 30: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

inputs was used (AT-AO-10 from National Instruments), a maximum of eight

switches can be set and used. One of these switches is being used for another

function though. Since in the real time simulator timing is critical, it is not possible

to run cases in real time and at the same time make calls to the operating system

in order to check the computer standard I/O devices (serial ports, keyboard, etc.) .

This implies that once the simulator is started, an external signal has to be used in

order to stop the simulation and go back to the operating system. This signal is

one out of the eight available digital inputs.

Once the digital inputs are read, a "debounce state machine" is run in order

to get rid of spurious or noisy inputs. This is very important, especially if the digital

inputs are connected to mechanical or electromechanical contacts. Figure 8

shows how a "bouncing" digital input looks like. After the state is changed (in this

case, from logical zero to logical one), the signal does not stabilize itself into logical

one until some time has passed. This time is usually in the range of 5 to 50 ms,

with multiple transitions in between. Since the real time simulator is operating in a

50 us or less time frame, these multiple transitions could be interpreted as multiple

switching operations. A debounce algorithm was implemented to prevent this

situation.

i State changes

5 to 50 ms

Figure 8. Transitions in the digital inputs are not instantaneous

22

Page 31: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Figure 9 shows the diagram for the implemented debounce state machine.

As it can be seen in the diagram, the code of the state machine does not lock up

the computer while waiting for the debounce time to pass. Instead, it executes

each state only once per simulation time step.

Figure 9. The state machine used to debounce digital inputs

3 Analog Outputs

It is through analog outputs that the results of the simulation are put into the

real world. This information, after properly conditioned using power amplifiers, is

fed to the relay under test. By nature, all the simulation results of the real time

simulator are digital. These digital values are converted using digital to analog

converters. There are numerous commercially available off-the-shelf boards that

can perform this function. For this implementation, a DAC board from National

Instruments was used: the AT-AO-10. This board provides up to ten digital to

analog converters, and eight digital inputs. The analog outputs have a resolution

23

Page 32: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

of 12 bits (11 bits + sign), with a range of ±10V. One of the main advantages of

using this board is that each port can be set with a single I/O operation. This is

very important since the drivers provided by the manufacturer are quite slow (about

600 us to set each individual output!), and completely inadequate for this

implementation of the simulator.

Although using direct I/O access to set the analog outputs is relatively fast, it

still takes an important amount of time. For instance, it was found experimentally

that each I/O instruction takes between 1.7 to 2.2 us, depending on the computer

being used. Therefore, for very fast computers, as in the case of a Pentium II 400,

the specified number of outputs for a particular test case has a big impact on the

simulation time step. For example, for a particular test case in which three output

currents and three output voltages are required, the simulation time is about 25 us.

The total number of I/O operations is seven (six for the analog outputs, one for

digital input), for a total of about 12 us. This represents almost 50% of the

simulation time!

Unfortunately, commercially available analog output boards have to fulfill the

standard computer expansion bus specifications, which have set the timing for I/O

accesses for the above indicated values since the early members of the X 8 6 family

of computers. It should be expected, as computers become even faster, that new

I/O standards will be created, and faster digital to analog boards will be developed.

4 Preconditioning the Analog Outputs: Current and Voltage Transformers.

Although the real time simulator can feed the relay under test with directly

scaled voltages and currents, it is usually desired to simulate, as closely as

24

Page 33: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

possible, the signals the relay is going to see when installed in the field. Normally,

the relay gets the required currents and voltages from the power system through

instrument transformers. These transformers have an important effect on the

signals provided to the relay. Therefore they have to be accurately implemented in

the real time simulator.

4.1 Current Transformers

The equivalent circuit used to simulate current transformers (CT) is the one

proposed by Marti, Linares, and Dommel in [16] as well as Lucas and McLaren in

[17], shown in figure 10. It consists of a core loss resistance Rf, a magnetizing

branch in the form of a non-linear inductance L, a secondary side branch

composed of Rl and LI, and the burden branch composed of Lb and Rb.

The non-linear inductance of the equivalent circuit can be represented as a

piece-wise inductance as shown in figure 11. Up to three segments are suggested

in [16] to define the corresponding inductances as well as the range of currents for

which those inductances have to be applied. Figure 12 shows the discrete time

representation of the circuit of figure 10. Components Rl and LI as well as Lb and

Rl LI

Figure 10. Equivalent circuit of a current transformer

25

Page 34: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Rb are collapsed into two sets of discrete time elements: gl and hi for Rl and LI; gb

and hb for Lb and Rb. Since the trapezoidal rule of integration can have

difficulties in the solution of circuits with discontinuities [18], the following rule is

proposed here:

dx_fr s 1.6966 • x(t) - 2.6598 • x(t - At) +1.2298 • x(t - 2At) - 0.2666 • x(t - 3 At)

dt At

Flux

1 1 1 2 Current

Figure 11. Piece-wise representation of a nonlinear inductance

V1

"(X) S f 5 h Q J 3

X

V2

T

Figure 12. Discrete time representation of the circuit in figure 10

26

Page 35: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Although this rule has more terms to evaluate than the trapezoidal rule, it

has the advantage that it is immune to the effect of inductance zone changes for

non-linear inductors, greatly reducing the amount of computations required. Using

this rule, the formulas for the representation of the elements in the discrete time

circuit of figure 12 are listed in table 4. Some of the formulas in the current

transformer model are evaluated only once, while others are evaluated at run time,

as indicated in the table.

The circuit of figure 12 can then be solved using nodal analysis. The

resulting equations are:

a) Evaluated only once

gaa = gl + g + gf

gbb = gl + gb

kd = gaa • gbb - gl • gl

gaa kaa =

kbb

kd

gbb

kd

, , gl kab = —

kd

b) Evaluated at run time

h = L - h - h l

h b = hi - hb

v l = ha • kbb + hb • kab

v2 = ha • kab + hb • kaa

27

Page 36: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

It should be noticed that, since g is obtained from a piece-wise inductance,

it consists of an array of values. This implies that constants kaa, kbb, and kab are

arrays as well, and their values actually depend in which zone of operation the

piece-wise inductance is located.

ForL For Rl and LI For Lb and Rb Evaluated only

once En At

" k 0 L n

0.2666

gl = At

AtRl + k n L l gb =

At AtRb + k n Lb

kl = k n L l

•1.2298

K = 2.6598

AtRl + k n L l

k a , =k l -k a

k b l - kl • k b

k c l = k l - k c

kb = k 0 L b

AtRb + k n Lb k a b = kb • k a

k b b = kb • k b

k c b = kb • k c

Evaluated Every time step

h = k a i L ( t -3At) + k b i L ( t -2At) + k c i L ( t - A t )

hl = k a l i L 1 (t-3At) + k b l i L 1 ( t -2At) + k c l i L 1 ( t -At)

hb = k a b i L b (t-3At) + k b b i L b ( t -2At) + k c b i L b ( t -At )

Table 4. Formulas used to calculate the values of the circuit in figure 12

In figure 13, the result of this implementation of the model is compared

against the same circuit simulated using Microtran (the UBC version of the EMTP).

In both cases, the secondary current is plotted. The results of both simulations are

identical, so it appears to be only one plot in the figure. The Microtran input data

file used to simulate the CT equivalent circuit is included in the appendices.

28

Page 37: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

100

0.06 Time s

0.12

Figure 13. Resulting output current obtained using the implemented model and the same circuit simulated using Microtran

29

Page 38: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

4.2 Coupl ing-Capaci tor Voltage Transformers

The model used to simulate coupling-capacitor voltage transformers is the one

suggested by Hou and Roberts in [19]. It consists of coupling capacitors,

compensating reactor, step down transformer, and a ferroresonance suppression

circuit (figure 14).

line voltage

C1 step-down transformer

ferroresonance supresion

circuit

C 2

compensating reactor relay voltage

Figure 14. Coupling-capacitor voltage transformer (CCVT) circuit

Hou and Roberts [19] replaced the compensating reactor, step-down

transformer, and ferrorresonance suppression circuit in figure 14 with their

equivalent circuit. The resulting circuit is shown in figure 15. It consists of the

following components:

Vm: intermediate voltage level Ce: equivalent CCVT capacitance (C1+C2) Cc: stray capacitance of the compensating reactor Lc: inductance of the compensating reactor Rc: copper resistance of the compensating reactor Cp: stray capacitance of the transformer Lp: leakage inductance of the transformer Rp: copper resistance of the transformer Cf: capacitance of the suppressing circuit Lf: inductance of the suppressing circuit Rf: loading resistance of the suppressing circuit mLf: middle tap of the suppressing inductor

30

Page 39: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Figure 15. Equivalent circuit for the CCVT

This equivalent circuit has been shown to be appropriate to simulate the

CCVT for a wide bandwidth of about 10 kHz [19]. On the other hand, due to the

high number of nodes and lumped elements, the circuit is too complex to be

economically simulated in real-time. In order to achieve a fast real-time model,

some of the bandwidth of the circuit can be sacrificed in favor of speed.

Particularly the components related to the step-down transformer (Lp, Rp, Cp) are

considerably smaller than the other components of the equivalent circuit. For

instance, if Cp is neglected, and the values of Rp and Lp are added to Rc and Lc,

three lumped elements are saved, as well as a node.

The ferroresonance suppression circuit can also be simplified. If

inductances Lf and Lfm are represented as an air core inductance instead of an

autotransformer, one additional node and one additional lumped element are

saved. Kezunovic and Nilsson in [20] are not much in favor of this simplification

31

Page 40: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

since the equivalent circuit of the ferrorresonance suppression circuit has a quality

factor Q considerably smaller than the real circuit. This condition can be easily

solved by forcing the circuit to have a larger Q just by multiplying Cf and dividing Lf

by a fixed factor. The simplified version of the circuit is shown in figure 16.

Cc

Ce

Vi

Lc+Lp

Cf J - 1 Lf R l

Rf

Figure 16. Simplified version of the equivalent circuit for the CCVT

The discrete time version of the circuit in figure 17 is presented in figure 18. Notice

that the components Rc+Rp and Lc+Lp are collapsed into one single discrete

element represented by g3 and h3. In the same way, Cf, Lf and Rf are also

collapsed into one single discrete element represented by gt and ht.

32

Page 41: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

h2

e

Figure 17. Discrete time representation of the circuit in figure 16

The formulas for the discrete time representation of the circuit in figure 17 were

derived using the trapezoidal rule of integration. Some of the formulas are

evaluated only once, while others are evaluated at run time (table 5). The circuit

can be solved for voltages V1 and V2 using the formulas:

Evaluated only once:

gaa = g l + g2 + g3

gbb = g2 + g3 + gt

gab = g2 + g3

kd = (gaa * gbb) - gab 2

kaa = Z % kbb = k a b ^

Evaluated every time step:

ha = h 2 - h l - h 3 + g l * V i

hb = h 3 - h 2 + ht

V, =ha*kbb + hb*kab

33

Page 42: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

V 2 = hb * kaa + ha * kab

Where V2 is the voltage we are interested in.

For the capacitance Ce

For the capacitance Cc

For the components Rc+Rp and

Lc+Lp

For the ferroresonance

suppression circuit:

Evaluated only once gi ='

2Ce

At

2Cc

At

At 6 3 2Lc + RcAt

2 L c - R c A t k =

1 2Lc + RcAt

k 2 =(k, + l ) g 3

R L f -2 L f

At

g Lf R Lf At

R c f " 2 C f

g C f = R

R pf

Cf R C f R L f

R C f + R L f 1

^ ' R P f + R f

k 3 = R P f g .

k 4 = 1 - R f g ,

Evaluated every time step

h2=2g2(V2-Vl)-h2 h3 = kfy +

k2(v;-v2) Va = k 4 V 2 + R f h t

h L = 2 g L f V a + h L

h c = 2 gc f v a - h 'c

h t = ( h c - h L ) k 3

Table 5. Formulas used to calculate the values of the circuit in figure 18

Figure 18 compares the transfer function of the simplified circuit in figure 16

against the detailed circuit of figure 15 as reported by Hou and Roberts in [19].

The results show that the simplified circuit is accurate enough for the ranges of

frequencies of 10 to 6000 Hz.

34

Page 43: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

35

Page 44: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

IV. Accurate Real Time

Achieving real time with the real time simulator is done by means of using

an accurate time reference. Since the real time relay tester implemented here is

intended to work in the range of tens of (is, a time reference with a resolution of 1

LIS or better is desired. Another important requirement of the time reference is that

it has to be adjustable, in order to achieve an appropriate range of possible time

steps. In a PC computer, whose microprocessor belongs to the x86 family, the

time reference could be obtained from one of the internal counters, an external

source through an interrupt, or in some processors, such as the Pentium family of

Intel CPUs, by using the CPU time stamp counter.

1 Using an Internal Counter as Time Reference

A convenient time reference source for personal computers based on the

x86 microprocessors can be obtained from one of its three available counters.

Since the first IBM PC based in the 8088 microprocessor appeared, and up to

today's high performance Pentium based PCs, these counters have been available

and basically unchanged. These three counters are bonded together in a single

counter timer chip (CTC). This chip used to be the Intel 8253 for the earlier PCs,

but was later replaced by an improved and backward compatible CTC, the Intel

8254.

Figure 19 shows a diagram of the CTC. The input frequency for each

counter is 1.193181667 MHz; a value inherited from the first IBM PC that operates

with a crystal frequency of approximately 4.77 MHz, that is, 1.193 MHz * 4. As

36

Page 45: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

shown in figure 19, counter 0 is normally used to keep the operating system tick

clock. To achieve this task efficiently, the output of counter 0 is connected to

external interrupt 0 and mapped as vector interrupt 8. In computers running DOS,

this counter is set to produce a tick clock period of approximately 55 ms. Other

operating systems, such as Windows and Linux, set this counter to a different time

tick. Counter 1 is used to refresh the dynamic memory. Since memory refreshing

is a task that has to be performed continuously, this counter cannot be used to

perform general timing tasks. Finally, counter 2 is used as a tone generator for the

computer speaker. The output of this counter is ANDed to an enable signal before

it is fed to the speaker driver. Therefore it is possible to inhibit the speaker output

and use counter 2 for general timing applications.

1.19318166 MHz

8254 CTC

Counter 0

Counter 1

Counter 2

Counter 2 Gate

Speaker Enable

S y s t e m Tick . IRQ o > Int 8

Memory — • Refresh

Logic

Figure 19. Block diagram of the CTC present in x86 computers

1.1 The Real Time Simulator and the C T C

A version of the real time simulator for relay testing was implemented using

the CTC counter 0 as reference timer. This timer, as well as timers 1 and 2, has a

resolution of 16 bits, that is, one in 65536 multiples of the input frequency period.

37

Page 46: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Since the timer is driven by a reference frequency of 1.193181667 MHz, the

achievable resolution of this timer is:

5 = — = 0.8380953442859 /is 1.193181667MHz

This implies that the actual simulation time step must be an integer value of 5.

To achieve the maximum possible performance, the computer must be

operated in 32 bits mode. For current x86 computer architectures, this implies the

use of a 32 bit compiler. Since the output of counter 0 is connected to the

microprocessor interrupt 0, this imposes an important limitation on the possible

operating system to be used. For instance, Win32 operating systems (which

include Microsoft Windows 95/98/NT) are very restrictive regarding the use and

configuration of counter 0, I/O ports, and interrupts. Fortunately there are other

commercially available 32 bits operating systems that offer more flexibility for these

types of requirements. One such operating system is TNT Embedded ToolSuite

from Phar Lap Software Inc. TNT is a 32 bit real time operating system. It

supports most commercially available C compilers, such as Microsoft Visual C++,

Borland C/C++, and Watcom C++. It provides libraries to access I/O ports and to

set and use interrupts.

1.2 Configuring and using C T C Counter 0 Under Phar Lap T N T

Counter 0 of CTC is configured by writing and reading from the appropriate

I/O ports. There are four I/O ports available to configure the CTC. One of them is

the control word [21] while the other three are used to set and read the values of

38

Page 47: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

each individual counter. In x86 based computers, these I/O ports are mapped as 8

bit ports as follows:

Register I/O port Counter 0 0x40 Counter 1 0x41 Counter 2 0x42 Control Word Register 0x43

The control word register is used to set the particular mode of operation of each

counter. The format of this register is:

D 7 D 6 D 5 D 4 D 3 D 2 D i D o

SC1 SCO RW1 RW0 M2 M1 M0 BCD

Bits 7 and 6 of the control word register are used to select the particular

counter to be configured. In order to select counter 0, SC1 and SCO have to be

set to 0. Bits 5 and 4 indicate the mode in which the counter is going to accept or

report data. For 16 bits operation, RW1 and RW0 have to be set to 1. Bits 3 to 1

set the mode of the counter. The CTC supports up to six modes of operation.

One of them, mode 2, is designed to operate as Real Time Clock interrupt. In

this mode of operation the counter works as a divide-by-N counter. When the

count is completed, the counter generates a low pulse, it reloads the set value for

the counter, and the process is repeated indefinitely. In order to set the counter to

mode 2, the values of M2 and M0 have to be set to 0, while M1 has to be set to 1.

Finally, bit 0 defines the numeric format in which the counter is going to be loaded.

If BCD is set to 0, the counter counts in binary mode, and a maximum resolution of

16 bits can be achieved, that is 1 in 65536 counts can be set. If BCD is set to 1,

the counter counts in decimal mode, and only a load value between 1 and 10000

39

Page 48: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

can be set. For programming convenience, the binary mode is preferred, then

BCD is set to 0.

Once the mode of operation of counter 0 is selected, the actual value of the

counter can be set. This value depends on the desired simulation time step. To

calculate the value to be set in the counter the following formula is used:

*= * 0.8380953442859 jus

where the time step At is given in LIS. Since N is an integer, the result is rounded

off. This could produce some error in the resulting simulation, if the value of At is

not an integer multiplier of 8. This error is not very high, though. For example, if

the required time step is about 24.65 LIS, the expected error would be 1.4%. Below

is listed the C code used in the real time simulator to set counter 0 as the time

reference. Function outp is provided with the Phar Lap TNT libraries.

/ * S e t u p t h e ' h a r d w a r e ' d e l t a t * / t i m e r _ v a l u e = ( i n t ) ( d e l t a T * C L K I N ) ; t i m e r _ l o w = ( u n s i g n e d c h a r ) t i m e r _ v a l u e % 0 x l 0 0 ; t i m e r _ h i g h = ( u n s i g n e d c h a r ) t i m e r _ v a l u e / 0 x l 0 0 ;

/ * S e t c o m p u t e r t i m e r t o d e l t a T * / o u t p ( T I M E R 0 , t i m e r _ l o w ) ; / * L o a d h i g h a n d l o w c o u n t s * / o u t p ( T I M E R 0 , t i m e r h i g h ) ;

Once the timer is set, the computer has an interrupt source with the desired

time step. Now it is necessary to tell Phar Lap TNT which routine (handler) is

going to run every time the interruption is generated. Phar Lap provides two

functions to achieve this task:

• EtsSavelnterruptHandler, which saves the current interrupt handler

pointer. This has to be done, since the interrupt must be restored to its

original pointer once the program finishes.

40

Page 49: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

• EtsSetlnterruptHandler, which sets a new interrupt handler.

The code below shows the interrupt handler for the real time simulator under Phar

Lap TNT.

v o i d S T K C A L L T i m e r l n t H a n d l e r ( E T S I N T R E G S * p R e g s ) {

S i m u l a t i o n ( ) ; s t e p + + ; / * D o n e p r o c e s s i n g t h e t i m e r i n t e r r u p t . I s s u e a n E O I t o t h e 8 2 5 9 . * / o u t p ( P I C 1 _ B A S E + P I C _ C M D , P I C _ N S E O I ) ; r e t u r n ;

}

41

Page 50: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

1.3 Measur ing the Execution Time Using the C T C

Using one of the timers on the CTC, it is possible to measure how much

time it would take to run a specific test case. This is important in the real time

simulator because the real time execution of a particular case has to be

guaranteed. To perform this task, either counter 0 or 2 can be used. The code

below shows the routines used to measure the run time in the real time simulator.

v o i d t i m e r _ s t a r t ( v o i d ) {

u n s i g n e d c h a r d a t a _ i n ; _ d i s a b l e ( ) ; / * U s e s T I M E R 2 t o c o u n t t h e e l a p s e d t i m e * / d a t a _ i n = i n p ( P C _ C S ) ; / ^ D i s a b l e s T I M E R 2 * / d a t a _ i n &= O x f e ; o u t p ( P C _ C S , d a t a _ i n ) ;

o u t p ( C 8 2 5 4 , T 2 0 S ) ; / * C o n f i g u r e s T I M E R 2 a s " o n e - s h o t " * / o u t p ( T I M E R 2 , 0 ) ; / * L o a d h i g h a n d l o w c o u n t s * / o u t p ( T I M E R 2 , 0 ) ;

d a t a _ i n = i n p ( P C _ C S ) ; / * E n a b l e T I M E R 2 * / d a t a _ i n |= 1; o u t p ( P C _ C S , d a t a _ i n ) ; / * H e r e s t a r t s c o u n t i n g ! ! ! * /

}

u n s i g n e d i n t t i m e r _ e n d ( v o i d ) {

u n s i g n e d c h a r d a t a _ i n ; u n s i g n e d c h a r c o u n t _ h i g h , c o u n t _ l o w ;

o u t p ( C 8 2 5 4 , T 2 L ) ; / * L a t c h T I M E R 2 * /

c o u n t _ l o w = i n p ( T I M E R 2 ) ; / * R e a d T I M E R 2 * / c o u n t _ h i g h = i n p ( T I M E R 2 ) ;

d a t a _ i n = i n p ( P C _ C S ) ; / * D i s a b l e s T I M E R 2 * / d a t a _ i n &= O x f e ; o u t p ( P C _ C S , d a t a _ i n ) ;

o u t p ( C 8 2 5 4 , T 2 S W ) ; / * R e c o n f i g u r e s T I M E R 2 o f 8 2 5 4 t o i t s d e f a u l t * / _ e n a b l e () ; r e t u r n ( 0 x 1 0 0 0 0 - ( ( c o u n t _ h i g h * 0 x l 0 0 ) + c o u n t _ l o w ) ) ;

In this implementation, counter 2 is used. The first routine, timer_start,

initializes and starts the counter. This routine runs with interrupts disabled. Since

Phar Lap TNT uses counter 2 for some internal timing tasks, the counter may not

42

Page 51: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

report the correct time unless interrupts are disabled. This introduces some error

because latency time of interrupts as well as the load of the operating system are

not taken into account. On the other hand, for fast CPUs, such as Pentium Pro

200 and up, those times are very small, and their effect in the final result is not

relevant.

Since the resolution of the counter is 0.8381 us, the maximum measurable

time using this technique is 54.9 ms. The second routine, called timer_end,

reports the elapsed time, resets counter 2 to its default mode of operation, and

enables interrupts. Since the counters in the CTC are down counters, the final

result is obtained by subtracting 65536 from the obtained value. The final result,

when multiplied by 0.8381 us, yields the execution time of a particular case in

microseconds. The real time simulator can save this values into a Matlab

compatible file, that can be plotted later. Figure 2 shows the execution time plot

for the case listed in the appendix, run in a Pentium II 400 computer. Observe that

the execution time could be different from time step to time step. For this

particular case, the time step of the simulation must be set to a value larger than

about 22.5 us, which is the maximum execution time per time step shown in figure

20.

43

Page 52: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

1.8-

1.7-

1.6-

-| c l I I 1 1 1 1

50 100 150 200 250 300 Time Step

Figure 20. Execution times per time step found using the CTC

2 Using an External Interrupt as the Source for the Time Reference

The method for using an external interrupt to obtain the time reference for

the real time simulator is identical to that used with counter 0 and interrupt 0. A

suitable device, capable of generating the required interrupt pace, could be

connected to an available interrupt. In this case, the method to set the interrupt

timing would be different, as well as the I/O ports assigned for such operation. For

example, one of the I/O boards manufactured by National Instruments and used in

the real time simulator, the AT-AO-10 [15], provides three counters in a single

8253 CTC, each one clocked at a frequency of 1 MHz. Two of these counters,

counters 0 and 1, are connected to external interrupts. Since the I/O ports

44

Page 53: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

addresses, as well as the interrupt request number for that particular board depend

on user selection, that information must be known beforehand. Also the input

frequency for the particular board or device being used must be known in order to

calculate the appropriate constants needed to set the hardware time step. By

using this approach, better time step resolutions than those provided by the

internal counter 0 can be achieved. Notice nevertheless, that the resolution

provided by the counters of the AT-AO-10 board (1.0 LIS) is not as good as the

one provided by the PC's internal counter 0 (0.8381 us).

3 Using the Time Stamp Counter

Starting with the Pentium family of microprocessors, Intel added an

instruction for performance monitoring. That instruction, called RDTSC (Read

Time Stamp Counter), reports the number of clock cycles the CPU has been

running since start up or reset [14]. Although not recommended for general

profiling, it can be conveniently applied to achieve accurate timing with the

simulator. Before using this instruction to implement real time though, two factors

have to be taken into account. First, the instruction RDTSC is not available in

most compilers or assemblers, so it has to be defined or used through its opcodes.

Second, the clock frequency of the CPU has to be known.

The first factor can be easily solved by including in-line assembly in the

corresponding C program. In Borland C++, the implementation of this instruction

looks like:

45

Page 54: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

{ db OxOF db 0x31 mov t i m e low, eax mov t i m e h i g h , edx

}

where OxOF and 0x31 are the opcodes of RDTSC. The instruction returns a 64-bit

number in the extended registers eax and edx. If the CPU clock frequency is

known, the time the computer has been running since power up, or since a

hardware reset, can be calculated using:

# cycles

CPU _ Frequency

If the CPU clock frequency is given in MHz, the resulting time is in microseconds.

The second factor, the CPU clock frequency, can be either input as a

parameter or found using an appropriate algorithm. This task is very easy to

achieve if a second source of timing is available. Fortunately, one good source of

timing is already implemented in the real time simulator using Phar Lap TNT:

counter 2. The idea now is to measure the execution time of a given piece of

code, both using counter 2 and the RDTCS instruction. Since both times have to

be approximately equal, the CPU clock frequency can be calculated:

46

Page 55: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

( c l i d b O x O F d b 0 x 3 1 m o v t i m e _ l o w , e a x m o v t i m e _ h i g h , e d x

} t i m e r _ s t a r t ( ) ; f o r ( i = 0 ; K 2 0 0 0 0 ; i++) i n p ( 0 x 6 1 ) ; t i m e = t i m e r _ e n d ( ) ; a s m {

d b O x O F d b 0 x 3 1 s u b e a x , t i m e _ l o w s u b e d x , t i m e _ h i g h d i v t i m e m o v c y c l e s , e a x s t i

}

c l o c k = c y c l e s * C L K I N ; / * C L K I N = 1 . 1 9 3 M H z * /

Notice that the routine is measuring how much time it will take to perform

20000 input operations to port 0x61. Since I/O operations are very slow (in the

order of 1 to 2 LIS) and take more or less the same time for all the processors of

the x86 family, the loop should take between 20 ms to 40 ms to execute. Those

times are small enough not to overflow counter 2, whose maximum counting

capability is about 55 ms.

Once the CPU clock frequency is known, a time polling scheme can be

implemented to achieve the desired physical time step. First, it is necessary to

calculate how many CPU cycles are required to implement the time step. This can

be done using the formula:

# cycles = At • CPU_ Frequency

Where #cycles is an integer. The polling scheme is implemented by constantly

reading the time stamp counter and comparing the elapsed time with the number

of CPU cycles needed to achieve the desired time step. The code below shows

47

Page 56: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

the implementation of the polling scheme in one of the versions of the real time

simulator.

w h i l e ( g e t _ o u t = = 6 ) {

S i m u l a t i o n ( ) ; step++;

do { /*Waste t h e remanding t i m e i n t h i s d e l t a T * / asm {

db OxOF db 0x31 mov EndL, eax

} } w h i l e ( ( E n d L - S t a r t L ) < = c y c l e s ) ; S t a r t L = E n d L ;

}

Since the simulation of a given case must take less time than the required

time step, some time has to be wasted. Once that time is consumed, the cycle is

repeated until the simulation is stopped.

48

Page 57: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

3.1 Measuring the Execution Time Using the RDTSC Instruction

The RDTSC instruction can be used to measure the execution time of a

given test case with a very high resolution. Notice that the resolution of the time

stamp counter depends on the CPU clock. For instance, for a 400 MHz Intel

Pentium II computer, the resolution of the counter is 2.5 ns; considerably better

than the 0.8381 us of internal counter 2. The process of measuring time using the

RDTSC is quite simple when the CPU clock is known. The code below shows how

this was implemented in the real time simulator.

a s m { c l i } f o r ( s t e p = 0 ; s t e p < M A X B U F F ; s t e p + + ) {

a s m { d b O x O F d b 0 x 3 1 m o v S t a r t L , e a x

} S i m u l a t i o n ( ) ; a s m {

d b O x O F d b 0 x 3 1 m o v E n d L , e a x

} t i m e s _ b u f f e r [ s t e p ] = ( E n d L - S t a r t L ) / C P U _ c l o c k ;

) a s m ( s t i )

Again, the code is run with interrupts disabled, and the resulting times per

simulation step are stored in an array of double precision numbers. This array can

be saved and plotted using Matlab. Figure 21 shows the execution time plot for a

particular simulation case when it was run in a Pentium II 400. The results are

similar to those presented in figure 20, with the exception of a higher resolution in

the time (vertical) axis.

49

Page 58: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

2.4-

2.3-

2.2-

1.8-

1.7-

1.6-

H c l I I 1 1 1 1

50 100 150 200 250 300 Time Step

Figure 21. Execution times per time step found using the RDTSC instruction

4 Comparison of the Different Methods Used to Generate the Time

Reference

The described methods used to achieve accurate real time have

advantages and disadvantages. The main advantage of using the internal

counters is that they are ever present; that is, they are part of the computer design,

and likely to be present in new computer models for many years to come. Their

main disadvantage is their limited resolution of 0.8381 us, which limits somewhat

the allowable time steps in which the error is very small. Jitter is another important

disadvantage associated with interrupts, especially when the times involved are

50

Page 59: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

very small, as is the case in this implementation of OVNI. Jitter is a condition that

appears due to small differences between the service time of two consecutive

interrupts [1]. Jitter must not be confused with latency, which is the delay between

the time in which the interruption is generated and the time it is serviced by the

CPU . In fact, if latency were constant, there would be no jitter. In this

implementation of the real time simulator for relay testing, when using counter 0 as

time reference, jitter can be up to 0.5 [is. Jitter can manifest itself as a high

frequency in the analog outputs but it is not likely to produce any problems in the

relay under test. Since jitter appears every time the interrupts are used, the

problem is present when an external time reference and an interrupt are used.

The main advantage of using an external time reference is that it allows the

implementation of multiprocessor systems sharing the same external time

reference. Also, if an external time reference with a better resolution than 0.8131

|j,s is available, it will be advantageous to use it.

There are more advantages than disadvantages to using the CPU time

stamp counter as implemented here rather than an external clock. The main

advantage of using the CPU time stamp counter is its very high resolution, which

can be as fine as 2 ns in a Pentium III 500 CPU . Since the use of the time stamp

counter does not involve interrupts, jitter is practically eliminated. This

independence also makes the code very easy to port to Win32 and DOS 32-bit-

DPMI environments, in which the use of the CTC could be restricted and the use

of 32 bit interrupt handlers is not a straight forward task. The main disadvantage is

that it may not be present in some processors. It is not present, for example, in

51

Page 60: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

some Cyrix high performance CPUs, but It is available in all AMD K6 CPUs as well

as in all Intel Pentium models, and it is available even in some late 486 CPUs

models [14].

52

Page 61: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

V. The Monitoring Computer

As mentioned in the previous chapters, the monitoring computer allows the

user of the real time simulator to control and monitor the simulation computer.

The following are the functions the monitoring computer is able to provide:

• Creation of test cases.

• Simulation computer initialization and shutdown.

• Test case downloading.

• On-line triggering of faults and other switching events.

• Simulation computer monitoring and data gathering.

• Data analysis.

1 Hardware requirements for the Monitoring Computer

In addition to all the required hardware to properly run Windows 95/98/NT,

the monitoring computer should be able to interface with the simulation computer.

This interface is required for two main tasks: to interact with the TNT Embedded

operating system from Phar Lap Inc. running in the simulation computer, and to

interact with the core of the real time simulator. The communication with Phar Lap

is required in order to provide access to local files in the monitoring computer, such

as test cases and configuration files from the simulation computer.

Phar Lap provides with their operating system a communication cable and a

driver program that can be run under Windows: runemb.exe. This cable, once

attached to the parallel ports of both computers, creates the required file sharing

environment. By using runemb.exe, test cases can be directly started from the

53

Page 62: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

monitoring computer. Once the simulation program is running, it restrains itself

from using Pharlap standard I/O routines since they are very slow. A more basic

way of communication is then established with the monitoring computer: direct

access to I/O ports and to the analog outputs.

In order to access the analog outputs and digital inputs of the simulation

computer, the monitoring computer requires the appropriate data acquisition

hardware. The selected hardware is a multi I/O board from National Instruments,

the AT-MIO-16. This board provides 16 analog inputs with a resolution of 12 bits

(11 bits + sign), eight digital I/O pins, and two analog outputs with a resolution of

12 bits (11 bits + sign). The drivers provided by National Instruments are used to

access the AT-MIO-16. This board is connected to the board installed in the

simulation computer, the AT-AO-10, as follows:

AT-MIO-16 AT-AO-10 Digital out 0 Digital in 0

Digital out 7 Digital in 7 Analog Input 0 Analog Output 0

Analog Input 9 Analog Output 9

Since analog inputs 10 to 15 and the two analog outputs in the AT-MIO-16 are not

used, they are left unconnected. Digital outputs 0 to 6 are used as external

switches that can be used to simulate faults or any other kind of switching

operations in the simulation computer. Digital output 7 is used to synchronize the

54

Page 63: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

execution of the simulation program, or to stop a simulation that is already running.

Analog input 9 is being used to indicate the exact moment at which a switching

operation occurs in the simulation computer. This signal is generated by the

simulation computer throughout analog output 9. The simulation computer keeps

this signal either at +5V or -5V, until a switching operation is executed. At that

particular time step, the simulation computer inverts the polarity of analog output 9.

By using this technique, the monitoring computer can use the voltage generated

with analog output 9 as a trigger event to store waveforms or to perform any other

required actions.

2 The Monitoring Program

The monitoring program was created using LabWindows/CVI from National

Instruments, and runs under Windows 95/98/NT. This development tool offers

important advantages for the creation of the monitoring program:

• A graphical user interface development tool that accelerates and simplifies the

creation and programming of standard Windows graphical programs.

• Compatible ANSI C software. Since the core software of the simulation

computer was developed using also ANSI C, the programming language was

kept uniform in the entire real time simulator.

• Direct support for National Instruments data acquisition boards, in particular for

the AT-MIO-16 analog to digital converter, used in the monitoring computer.

Figure 22 shows a snapshot of the user interface program. The program can

perform the following monitoring functions:

55

Page 64: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Communication with the simulation computer using the program runemb.exe

provided with the ETS TNT real time operating system form Pharlap Inc.

Generation of switching events.

Capture and display of the output waveforms generated by the simulation

computer. Only the inputs selected by the user are currently captured and

displayed.

Storage and printing of the captured waveforms. By using the signal provided

by the simulation computer through analog output 9, the monitoring computer

can freeze the waveforms captured from the other analog ports in order to

display the transient waveform at the exact moment of commutation (figure 23).

56

Page 65: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

E 3 Real Time Simulator for Relay Testinii i File Simulation

0.0E+0 -9.9E-3 19.9E-3 29.SE-3-; ,.39.8E-3 4S.8E-3 - 5&8E-3," 83;?£-'3- 73.7E-3 " S3 BE-3 - 93.6E-3|

$5.00000

Upper Limit (V)

17 Channel 1

R Channel 2

Channel 3

f~ Channel 4

P Channel 5

I - Channel G

f~ Channel 7

l~* Channel 8

r~ Channel 3

fl? Channel 10

Lower Limit (V)

P0 P1 P2 P3 P4 P5 PG

Off ™ *

On

„ , „ , Required deltaT -25.14 juS Read Mode '

E3 Consecutive Actual deltaT _25jU _J uS

On H Latest Error in deltaT X iO.OOOO

Number of Scans Scan Rate (Hz)

^j25iT""j ^J25G0M' '^" j p~2,~9

Execution time 21.79

£Mn.0M.§JF.[nfl]

uS

Figure 22. A snapshot of the monitoring program

T ' ' 1 1 1

' / V I / ' V I / Y ' V / Y V

i : / / \ i / A \ / A i / A: \ \ J t ^ | K \ r f | \ l / \ \ f J l \ / / \

l.| / 1 1 / • / \ i / /* 1 \ / l 'i ly J i v I i v / • \ \f

«—r-Analog output 9 i 1 1 1

0 0.02 0.04 0.06 Time

0.08 0.1

Figure 23. Analog output 9 is used to signal switching events

57

Page 66: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

VI. Conclusions and Recommendations

The implementation of the real time simulator for relay testing was

successfully completed using only off-the-shelf equipment. The resulting

simulator, built around standard, readily available computers and operating

systems, has shown a performance that surpasses even multiprocessor

computers. The fact that personal computers become faster year after year,

makes the development of this real time simulator for relay testing a very

promising one, both in performance and price. For example, the first working tests

of the simulator were performed using a Pentium Pro 200 MHz as core computer,

with a simulation time step of about 49 u.s per step. After some time, a Pentium II

400 MHz computer was made available. The process of updating the simulator to

use this new computer took less than an hour, and the same test case now runs in

about 23 (is per step. An improvement of more than 100%! By the time this report

had been written, a Pentium III 500 MHz was already commercially available.

Currently, it is in the digital to analog converters where the bottle neck is.

The converter used in the simulator, the AT-AO-10 from National Instruments is a

EISA bus expansion card. By design, EISA expansion boards can perform an I/O

operation in about 2 p.s. This can be improved either by using a digital to analog

converter board for a different bus specification, such as PCI, in which these times

can be as less as 1/3 the time required by EISA; or by using digital to analog

converters in which the ports are mapped as memory, since EISA memory access

takes only 1 (is.

58

Page 67: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Since the simulator is now so fast, more detailed component models can be

represented with higher detail while staying within the 50 LIS time step. In

particular, models for full frequency dependent transmission lines, coupled

inductances, and more detailed models for coupling-capacitor voltage transformers

can be implemented.

59

Page 68: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

VII. References

[I] Heidenstrom, K (No date). FAQ / Application notes: Timing on the PC family

under DOS. Available ftp://ftp.simtel.net/pub/simtelnet/msdos/info/pctim003.zip [2] M. G. Adamiak and S. G. Saldanha, "Digital Simulators Expedite Relay Performance Evaluation" IEEE Computer Applications in Power, pp. 18-22, April 1996. [3] A. G. Phadke and J . S. Thorp, "Computer Relaying for Power Systems," John Wiley & Sons, New York, 1993, pp.1-8. [4] C. Russell, "The Art and Science of Protective Relays," John Wiley & Sons, New York, 1956, pp.1-14, 70-84. [5] The Electric Council, "Power system protection," Macdonald & Co. (Publishers) Ltd, London, 1969, Vol. 1, pp. 202-205. [6] J . R. Marti and L. R. Linares, "Real-Time EMTP-Based Transients Simulation", IEEE PES summer Meeting, Paper No. 93SM 511-6-PWRS, Vancouver, B.C., July 1993 [7] G E C Alsthom T&D Protection & Control Limited, "Type LFZR High-Speed Numerical Distance Relays", Publication R-4117B, England, 1996. [8] IEEE Working Group F-8 of Relay Input Sources, "Digital Simulator Performance Requirements for Relay Testing", IEEE Transactions on Power

Delivery, Vol. 13, No. 1,pp 78-84, January 1998. [9] M. Agrasar, J . R. Hernandez, F. Uriondo, J . Amategui, J . M. Gallastegui, and J . L. Martinez "Optimized Relay Testing Systems", IEEE Computer Applications in

Power, Vol. 10, No. 4, October 1997, pp. 55-59. [10] M. Kezunovic, J . Domaszewicz, V. Skendzic, M. Aganagic, J . K. Bladow, S. M. McKenna and D. M. Hamai, "Design, Implementation and Validation of Real-Time Digital Simulator for Protection Relay Testing," IEEE Transactions on Power

Delivery, Vol. 11, No. 1, January 1996, pp. 158-164. [II] J . White, "Advanced Relay Testing," IEE Colloquium on Instrumentation in the

Electrical Supply Industry, London, 1993, pp. 12/1-12/6

60

Page 69: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

[12] Linares, Luis, "A real Time Simulator for Power Electric Networks", Thesis Report, The University of British Columbia, 1993. [13] Johns, A. T, Salman S.K. Digital Protection for Power Systems. London : P. Peregrinus on behalf of the Institution of Electrical Engineers, 1995. [14] Intel, 1997. Using the RDTSC Instruction for Performance Monitoring

Available: http://developer.intel.com/drg/pentiumll/appnotes/RDTSCPM1.HTM [15] National Instruments. AT-AO-6/10 User Manual. September 1994. [16] Marti, J . R. Linares, L. R. Dommel, H. W. Current transformers and coupling-

capacitor voltage transformers in real-time simulations. IEEE Transactions on

Power Delivery , 12, January '97, 164-8 [17] Lucas, J . R. and McLaren P. G. Improved Simulation Models for Current and

Voltage Transformers in Relay Studies. Transactions on Power Delivery, Vol. 7 No.1 January 1992, pp. 152-159. [18] Marti, Jose R. Lin, Jiming: Suppression of numerical oscillations in the EMTP

IEEE Transactions on Power Systems , 4, My '89, 739-45. [19] Hou, D. Roberts, J . (1995) Capacitive Voltage Transformers: Transient

Overreach Concerns and Solutions for Distance Relaying. Available:

http://www.selinc.com/techpprs/6005.pdf [20] Lj. Kojovic, M. Kezunovic, S.L. Nilsson. Computer Simulation of a Ferroresonance Suppression Circuit for Digital Modeling of Coupling Capacitor

Voltage Transformers, ISMM Conference on Computer Applications in Design, Simulation and Analysis, Orlando, March 1992. [21] Intel, 1999. 82C54 CHMOS Programmable Interval Timer. Available:

ftp://download.intel.com/design/periphrl/datashts/23124406.pdf [22] J . R. Marti, L. R. Linares, J . Calvino, H. W. Dommel, OVNI: An object

approach to real-time power system simulators, Proceedings of the 1998 International Conference on Power System Technology, Powercon'98, Beijing, China, April 18-21, 1998, pp. 977-981.

61

Page 70: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Appendix I. Test Case Files.

62

Page 71: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

1 Circuit Schematic

2 Preprocessor Input File + + I Input f i l e f o r the Real Time Preprocessor I I (Format: RT-PREP V.3.02) I I Generated Automatical;/ by Suso's Schematics I I Copyright (c) Jesus Calvino-Fraga 1996-1998 I + + .BEGIN FILE

.BEGIN GENERAL-DATA deltaT: 23.47E-6 totalTime: 30000 numLumped: 12 numLines: 3 numSources: 6 numOutNodes: 3

.END GENERAL-DATA BEGIN LUMPED

L 1 739 nOa n l a c a l c C u r r : yes MOV: no L 1 739 nOb nib c a l c C u r r : no MOV: no L 1 739 nOc n l c c a l c C u r r : no MOV: no L 3 685 n3a n4a c a l c C u r r : no MOV: no L 3 685 n3b n4b c a l c C u r r : no MOV: no L 3 685 n3c n4c c a l c C u r r : no MOV: no R 2 n l a n2a c a l c C u r r : no MOV no R 2 nib n2b c a l c C u r r : no MOV no R 2 n l c n2c c a l c C u r r : no MOV no R 3 n4a n5a c a l c C u r r : no MOV no R 3 n4b n5b c a l c C u r r : no MOV no R 3 n4c n5c c a l c C u r r : no MOV no

END LUMPED .BEGIN LINES

.BEGIN LINE-0 phases: 3 Zc: 621.9 275.3 290.9 delay: 0.4710e-3 0.3416e-3 0.3399e-3 nodes: nOa no n6a no nOb no n6b no nOc no n6c no q-matrix:

0.58702696 -0.40302458 0.70710678 0.55427582 0.82086139 0.00000000. 0.58702696 -0.40302458 -0.70710678

.END LINE-0

.BEGIN LINE-1 phases: 3 Zc: 621.9 275.3 290.9 delay: 0.4710e-3 0.3416e-3 0.3399e-3

63

Page 72: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

nodes: n6a no n9a no n6b no n9b no n6c no n9c no q-matrix:

0.58702696 -0.40302458 0.70710678 0.55427582 0.82086139 0.00000000 0.58702696 -0.40302458 -0.70710678

.END LINE-1

.BEGIN LINE-2 phases: 3 Zc: 621.9 275.3 290.9 delay: 0.4710e-3 0.3416e-3 0.3399e-3 nodes: n7a no n3a no n7b no n3b no n7c no n3c no q-matrix:

0.58702696 -0.40302458 0.70710678 0.55427582 0.82086139 0.00000000 0.58702696 -0.40302458 -0.70710678

.END LINE-2 .END LINES .BEGIN SOURCES

408000 0 n2a 408000 120 n2b 408000 -120 n2c 408000 0 n5a 408000 120 n5b 408000 -120 n5c

.END SOURCES

.BEGIN SWITCHES t o t a l : 6 GROUNDa n7a c l o s e : 1 open: 1

c l o s e : 0 open: 0

GROUNDb n7b c l o s e : 1 open: 1 c l o s e : 0 open: 0

GROUNDc n7c c l o s e : 1 open: 1 c l o s e : 0 open: 0

n9a n7a c l o s e : 1 open: 1 c l o s e : 1 open: 3600

n9b n7b c l o s e : 1 open: 1 c l o s e : 1 open: 3600

n9c n7c c l o s e : c l o s e : 1 open: 3600

.END SWITCHES

.BEGIN OUTPUT n7a n7b n7c

.END OUTPUT

.BEGIN DACS t o t a l : 4 .BEGIN TO

type: CCVT por t : 0

1 open: 1

CI Cc Rf R:

9.97E-08 1.30E-10 37.5

100 r a t i o a : 5000

.END tO

.BEGIN T l type: CCVT po r t : 0 CI: 9.97E-08 Cc: 1.30E-10 Rf: 37.5 R: 100 r a t i o a : 5000

.END t l

.BEGIN T2 type: CCVT po r t : 0

C2: Lc: Lf:

3.00E-10 0.708 Rc: 0.73 Cf:

628 9.6E-06

r a t i o b : 110

C2: 3.00E-10 Lc: 0.708 Rc: 628 Lf : 0.73 Cf: 9.6E-06

r a t i o b : 110

64

Page 73: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

I,

CI Cc Rf R:

9.97E-1.30E-37.5

100

08 10

C2 Lc Lf

r a t i o a .END t2 .BEGIN T3

type: CT por t : Lf [0] I f [0]

5000

1.

Rf Ls Lb r a t i o

.END t3 .END DACS

. END FILE

3.00E-10 0.708 Rc: 0.73 Cf:

628 9.6E-06

r a t i o b : 110

OE-02 4.5E+00 OE+03 0E-04 0E-04 120

Lf [1] I f [1]

1.0E-03 6.5E+00

Rs : Rb:

5.0E-1.25

01

Lf [2] I f [2]

1.0E-04 8 . 0E+00

3 The real-time simulator input file

.BEGIN FILE .BEGIN GENERAL-DATA

i n i t C o n d i t i o n s : no totalTime: 3 . 000000000e+04 deltaT: 2 . 344116268e-05 lumped: 12 l i n e s : 3 3ph-blocks: 3 6ph-blocks: 2 9ph-blocks: 0 12ph-blocks: 0 sources: 6

.END GENERAL-DATA

.BEGIN NODES 1 n2a 2 n2b 3 n2c 4 n5a 5 n5b 6 n5c 7 nOa 8 n6a 9 nOb 10 n6b 11 nOc 12 n6c 13 n9a 14 n9b 15 n9c 16 n7a 17 n3a 18 n7b 19 n3b 20 n7c 21 n3c 22 n l a 23 nib 24 n l c 25 n4a 26 n4b 27 n4c

.END NODES

.BEGIN BLOCKS .BEGIN BLOCK-30

s i z e : 3 sources: no nodes: 8 n6a 10 n6b 12 n6c

numSwStatus: 1 in i t S w S t a t u s : 0 A: switchStatus: 0

1.99292884026491777e+02 5.83883972222633432e+01 1.96913298072615248e+02 5. 38428835383524174e+01 5.83883972222633361e+01 1.99292884026491748e+02

.END BLOCK-30

.BEGIN BLOCK-31 s i z e : 3 sources: no nodes: 13 n9a 14 n9b 15 n9c

numSwStatus: 8 in i t S w S t a t u s : 0 A: switchStatus: 0

3.98585768052983553e+02 1.16776794444526686e+02 3.93826596145230496e+02 1.07685767076704835e+02 1.16776794444526672e+02 3.98585768052983497e+02

switchStatus: 1 0.00000000000000000e+00 0.00000000000000000e+00 3.59613584006456620e+02 0.00000000000000000e+00 8.52272518004302384e+01 3.69492344854398993e+02

65

Page 74: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

switchStatus: 2 3.63959310992398400e+02 0.00000000000000000e+00 0.00000000000000000e+00 7.30593100161196816e+01 0.00000000000000000e+00 3.63959310992398343e+02

switchStatus: 3 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 0 . 00000000000000000e+00 3.49293762897262638e+02

switchStatus: 4 3.694 9234 4 854 398937e+02 8.52272518004302384e+01 3.59613584006456620e+02 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00

switchStatus: 5 0.000000O0000000000e+OO 0.00000000000000000e+00 3.39955032075384167e+02 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00

switchStatus: 6 3.49293762897262638e+02 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00

switchStatus: 7 9.99999999999999945e-21 0.00000000000000000e+00 9.99999999999999945e-21 0.00000000000000000e+00 0.00000000000000000e+00 9.99999999999999945e-21

END BLOCK-31 BEGIN BLOCK-32

s i z e : 3 sources: no nodes: 16 n7a 18 n7b 20 n7c

numSwStatus: 8 i n i t S w S t a t u s : 4 h: switchStatus: 0

3.98585768052983553e+02 1.16776794444526686e+02 3.93826596145230496e+02 1.07685767076704835e+02 1.1677679444 4526672e+02 3.98585768052983497e+02

switchStatus: 1 0.00000000000000000e+00 0.00000000000000000e+00 3.59613584006456620e+02 0.00000000000000000e+00 8.52272518004302384e+01 3.69492344854398993e+02

switchStatus: 2 3.63959310992398400e+02 0.00000000000000000e+00 0 .00000000000000000e+00 7.30593100161196816e+01 0 . 00000000000000000e+00 3.63959310992398343e+02

switchStatus: 3 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3.492937 628972 62 638e+02

switchStatus: 4 3.694 92344854398937e+02 8 .52272518004302384e+01 3.59613584006456620e+02 0 .00000000000000000e+00 0 . 00000000000000000e+00 0.00000000000000000e+00

switchStatus: 5 0.00000000000000000e+00 0.00000000000000000e+00 3.39955032075384167e+02 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00

switchStatus: 6 3.4 92 937 628972 62 638e+02 0.00000000000000000e+00 0 . 00000000000000000e+00 0.00000000000000000e+00 0 . 00000000000000000e+00 0.00000000000000000e+00

switchStatus: 7 9.99999999999999945e-21

66

Page 75: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

0.00000000000000000e+00 9.99999999999999945e-21 0.00000000000000000e+00 0.00000000000000000e+00 9.99999999999999945e-21

. END BLOCK-32

. BEGIN BLOCK-60 s i z e : 6 sources: yes nodes: 22 n l a 7 nOa 9 1 n2a 2 n2b 3

shots: 711 numSwStatus: 1 i n i t S w S t a t u s : 0 A: switchStatus: 0

1.99217017430485721e+00 1. 41130876103967151e+00 1. 0 6400989979774610e-01 9 .28460299667946964e-02 1. 41517513799524464e-03

1.23488882289107880e-03 1.41130876103967151e+00

nOb n2c

11 nOc 23 nib 24 n l c

1.06110293567250892e+02 7.99983716836193892e+00 6. 98069746911563538e+00 1.06400989979774596e-01 1.06400989979774596e-01 9.28460299667946964e-02 1.41517513799524464e-03

1.05387909216378958e+02 7.99983716836193803e+00 1. 06110293567250878e+02 1.40170076421910528e+00 1.99204238415714352e+00 1.06400989979774596e-01 1.99217017430485743e+00

Gab: -5.00000e-01 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00

0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00

-5.00000e-01 0.00000e+00

0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00

-5.00000e-01

sources: 4.08000e+05 0. 4.08000e+05 120. 4.08000e+05 -120.

.END BLOCK-60

.BEGIN BLOCK-61 s i z e : 6 sources: yes nodes: 25 n4a 17 n3a 19 4 n5a 5 n5b 6

shots: 711 numSwStatus: 1 i n i t S w S t a t u s : 0 A: switchStatus: 0

2.98687230023942618e+00 1. 61107098655156422e+00 1. 99080392248369792e-01 1.76426935880495905e-01 1.88164232466082534e-03

1.66752931322738571e-03 1. 61107098655156422e+00

00 n2a 00 n2b 00 n2c

n3b 21 n3c 26 n4b 27 n4c n5c

1.70453565876536658e+02 2.10629842124266773e+01 1.86662168138667006e+01 1.99080392248369875e-01 1.99080392248369820e-01 1.7 6426935880495989e-01 1.88164232466082534e-03

1.68838133533455448e+02 2.10629842124266737e+01 1.70453565876536658e+02 1.59580245189057468e+00 2.98672798707664189e+00 1.99080392248369847e-01 2.98 687230023942618e+00

Gab: -3.33333e-01 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00

0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00

-3.33333e-01 0.00000e+00

0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00

-3.33333e-01

sources: 4.08000e+05 0.00 n5a 4.08000e+05 120.00 n5b 4.08000e+05 -120.00 n5c

.END BLOCK-61 END BLOCKS BEGIN OUTPUT

numOutNodes: 3 n7a n7b n7c

67

Page 76: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

recordEveryOther: 1 END OUTPUT BEGIN LUMPED

L 1 73900e+00 nOa n l a current: yes MOV: no L 1 73900e+00 nOb nib current: no MOV no L 1 73900e+00 nOc n l c current: no MOV no L 3 68500e+00 n3a n4a current: no MOV no L 3 68500e+00 n3b n4b current: no MOV no L 3 68500e+00 n3c n4c current: no MOV no R 2 00000e+00 n l a n2a current: no MOV no R 2 00000e+00 nib n2b current: no MOV no R 2 00000e+00 n l c n2c current: no MOV no R 3 00000e+00 n4a n5a current: no MOV no R 3 00000e+00 n4b n5b current: no MOV no R 3 00000e+00 n4c n5c current: no MOV no

END LUMPED BEGIN LINES

.BEGIN LINE-0 phases: 3 delay: 4.7100e-04 Zc: 621.90 Q:

5.8702696e-01 -4 5.5427582e-01 8 5.8702696e-01 -4

3.4160e-04 275.30

3.3990e-04 290.90

0302458e-01 7.0710678e-01 2086139e-01 0.0000000e+00 0302458e-01 -7.0710678e-01

2 .8629197e-03 -6.7850268e-04 -5.7468770e-04

2.9415655e-03 -6.7850268e-04 2.8629197e-03

c a l c C u r r : no no no no no no

nodes: nOa n6a nOb n6b .END LINE-0 .BEGIN LINE-1

phases: 3 delay: 4.7100e-04

nOc n6c

Zc: Q:

5. 5. 5.

621.90

8702696e-5427582e-8702696e-

01 01 01

3.4160e-275.30

04

.0302458e-01

.2086139e-01

.0302458e-01

3.3990e-04 290.90

7.0710678e-01 0.0000000e+00 -7 .0710678e-01

2.8629197e-03 -6. 7850268e-04 -5.7468770e-04

2.9415655e-03 -6.7850268e-04 2.8629197e-03

c a l c C u r r : no no no no no no

nodes: n6a n9a n6b n9b n6c n9c . END LINE-1 .BEGIN LINE-2

phases: 3 delay: 4.7100e-04 3.4160e-04 Zc: 621.90 275.30 Q:

5 . 8702696e-01 -4.0302458e-01 5.5427582e-01 8.2086139e-01 5.8702696e-01 -4.0302458e-01

3.3990e-04 290.90

7.0710678e-01 0.0000000e+00 -7.0710678e-01

2.8629197e-03 -6.7850268e-04 -5.7468770e-04

2.9415655e-03 -6.7850268e-04 2.8629197e-03

c a l c C u r r : no no no no no no

nodes: n7a n3a n7b n3b n7c n3c .END LINE-2

END LINES BEGIN SWITCHES

t o t a l : 6 switch: 0 GROUNDan7a n7a

i n i t i a l l y C l o s e d : yes b l k : 2 pos: 0 numGaLink

68

Page 77: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

gaLink: 24 add: no switch: 1 GROUNDbn7b n7b

i n i t i a l l y C l o s e d : yes gaLink: 26 add: no

switch: 2 GROUNDcn7c n7c i n i t i a l l y C l o s e d : yes gaLink: 28 add: no

switch: 3 n9a n7a i n i t i a l l y C l o s e d : gaLink: 19 add:

switch: 4 n9b n7b i n i t i a l l y C l o s e d : gaLink: 21 add:

switch: 5 n9c n7c i n i t i a l l y C l o s e d : no

bl k : 2 pos: 1 numGaLink

bl k : pos:

no no

no no

bl k : 1 pos:

b l k : 1 pos:

numGaLink

numGaLink

numGaLink

b l k : 1 pos: 2 numGaLink gaLink:

events: 6 23 add: no

t 1 00e+00 sw: 3 openOperation: no t 1 00e+00 sw: 4 openOperation: no t 1 00e+00 sw: 5 openOperation: no t 3 60e+03 sw: 3 openOperation: yes t 3 60e+03 sw: 5 openOperation: yes t 3 60e+03 sw: 4 openOperation: yes

END SWITCHES BEGIN DACS

t o t a l : 4 .BEGIN TO

type: CCVT po r t : 0 CI C2 Cc Lc Rc Rf Lf

9.970000e-08 3.000000e-10 1.300000e-10 7.080000e-01 6.280000e+02 3.750000e+01 7.300000e-01

Cf: 9.600000e-06 R: 1.000000e+02 r a t i o a : 5.000000e+03 r a t i o b : 1.100000e+02

. END TO

.BEGIN T l type: CCVT por t : 0 CI C2 Cc Lc Rc Rf Lf Cf R: r a t i o a : r a t i o b :

.END T l

.BEGIN T2 type: CCVT por t : 0

9.970000e-08 3.000000e-10 1.300000e-10 7.080000e-01 6.280000e+02 3.750000e+01 7.300000e-01 9.600000e-06 1.000000e+02

5.000000e+03 1.100000e+02

CI C2 Cc Lc Rc Rf Lf Cf R: r a t i o a r a t i o b

.END T2

.BEGIN T3 type: p o r t : Lf[0] : L f [ 1 ] :

970000e-08 000000e-10 300000e-10 080000e-01 280000e+02 750000e+01 300000e-01 600000e-06 000000e+02

000000e+03 100000e+02

CT 3 1.000000e-02 1.000000e-03

69

Page 78: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Lf[2] : 1 000000e-04 I f [0] : 4 500000e+00 I f [ 1 ] : 6 500000e+00 I f [2] : 8 000000e+00 Rf: 1 000000e+03 Ls : 5 000000e-04 Rs : 5 000000e-01 Lb: 5 000000e-04 Rb: 1 250000e+00 r a t i o : 1 200000e+02

.END T3 .END DACS

.END FILE

Page 79: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

Appendix II. Microtran Input File for the CT Simulation.

71

Page 80: IMPLEMENTATION OF A REAL TIME SIMULATOR FOR - cIRcle

+ + I I n p u t f i l e f o r M i c r o t r a n I I G e n e r a t e d A u t o m a t i c a l y b y S u s o ' s S c h e m a t i c s I I C o p y r i g h t ( c ) J e s u s C a l v i n o - F r a g a 1 9 9 6 - 1 9 9 8 I

* . . . . . . . C a s e i d e n t i f i c a t i o n c a r d

* F i l e i n f o r m a t i o n :

* D a t a f i l e n a m e : c : \ M T \ c t . d a t * S c h e m a t i c f i l e n a m e : c : \ M T \ c t . s c h * D a t e o f c r e a t i o n o f D a t a f i l e : 0 7 - 2 1 - 1 9 9 9 ; t i m e : 1 6 : 4 2 : 2 5 *

E q u i v a l e n t c i r c u i t o f a c u r r e n t t r a n f o r m e r *

* . . . . . . . T i m e c a r d 2 3 . 0 E - 6 0 . 1 2

* . . . . . . . L u m p e d R L C b r a n c h m a i n 1 0 0 0 m a i n N 0 0 1 0 . 5 N 0 0 1 N 0 0 2 0 . 5

s e e m e 1 . 2 5 N 0 0 2 s e e m e 0 . 5

$ = = E n d o f l e v e l 1 : L i n e a r a n d n o n l i n e a r e l e m e n t s = = = = = = = = * * . . . . . . . S w i t c h e s a n d p i e c e w i s e l i n e a r e l e m e n t s 9 3 m a i n 1 0 . 0 5 0 . 3 9 3 m a i n 1 0 e 2 0 1 . 2 5 . 0 . 3 2 5 $ = = = E n d o f l e v e l 2 : S w i t c h e s a n d p i e c e w i s e l i n e a r e l e m e n t s = = = * * . . . . . . . V o l t a g e o r c u r r e n t s o u r c e s 1 4 m a i n - 1 1 0 0 60 - 9 0 . 0 0 . 0 $ = = = E n d o f l e v e l 3 : S o u r c e s = = = = = = = = = = = = = = = = = =

* . . . . . . . . V o l t a g e - o u t p u t n o d e s 1

$ = = = L e v e l 5 : E n d o f d a t a c a s e = = = = = = = = = = = = = = = = =

72