Servomøtet 2004:

Vurdering av datamaskinbaserte verktøy for undervisninglab innen teknisk kybernetikk

Av Finn Haugen, 1. amanuensis ved Høgskolen i Telemark


Innhold:

I/O mot fysisk prosess

Black box-modellering av fysisk prosess

PID-regulering av virkelig motor og simulert motor

Analyse av reguleringssystem

Kopling til PLS

Diskusjon og konklusjon

I/O mot fysisk prosess

Prosessen

DC-motor (Faulhaber) med analogt +/-10V styresignal og analogt +/-10V målesignal fra tachometer:

Figur 1

I/O-utstyr

Figur 2 viser USB-basert I/O-enhet (NI DAQPad-6020E) med bl.a. 16 AI (+/-10V) og 2 AD (+/-10V):

Figur 2: USB-basert I/O-enhet (NI DAQPad-6020E)

Figur 3 viser terminalblokken for DAQPad'en.

Figur 3: Terminalblokk for DAQPad'en

Konfigurering og testing av kanaler i NI Measurement & Automation Explorer (MAX)

Figur 4 viser MAX-vinduet. I/O-enheten DAQPad-6020E er funnet. Kanalene analoginn0 og analogut0 er definert.

Figur 4: MAX-vinduet

Figur 5 viser konfigureringsvinduet for kanalen analogut0.

Figur 5: Konfigureringsvinduet for kanalen analogut0

Figur 6 viser testvinduet i MAX.

Figur 6: Testvinduet i MAX

I/O basert på OPC

OPC-server og -klienter

Etter at MAX er åpnet og lukket igjen, er OPC-serveren National Instruments.DaqOPC startet, med de definerte/konfigurerte kanalene (i MAX) som "items" eller OPC-variable.

LabVIEW og Matlab kan kjøre som OPC-klienter (som kan lese verdi av eller skrive verdi til OPC-variable):

  • LabVIEW er (standard) en OPC-klient.
  • Matlab kan kjøre som en OPC-klient dersom OPC Toolbox er installert.

Eksempel: LabVIEW

Figur 8 viser frontpanelet og figur 9 viser diagrammet i VI'en motor_opc.vi (VI = Virtual Instrument), dvs. et LabVIEW-program, som styrer DC-motoren og viser tachometermålingen vha. OPC. De små grønne rektanglene på frontpanelet indikerer kommunikasjon med OPC-serveren.

Figur 8: Frontpanelet for VI'en motor_opc.vi  for styring og måling av DC-motor

Figur 9: Diagrammet for VI'en motor_opc.vi for styring og måling av DC-motor

Hvordan foretas selve tilkoplingen til OPC-serveren? Det er flere måter å gjøre dette på, f.eks. ved å høyreklikke på den aktuelle variabelen eller terminalen i VI'ens blokkdiagram, deretter velge Data Operations / Data Socket Connection og så klikke seg fram til OPC-taggen. (Kommentar: DataSocket er en National Instruments-teknikk for å utveksle data over nett, og OPC tas i bruk som en DataSocket-teknikk.) Figur 10 viser dette. Der blir LabVIEW-variabelen eller -terminalen u koplet til OPC-taggen analogut0.

Figur 10. LabVIEW-variabelen u koples til OPC-taggen analogut0.

Eksempel: Matlab

Matlabs OPC Toolkit har et grafisk brukergrensesnitt som åpnes med kommandoen opctool. Alternativt kan en bruke funksjoner skrevet på kommandolinjen eller i et skript. Nedenfor er illustrative eksempler på slike kommandoer. I eksemplene er det forutsatt at OPC-serveren National Instruments.OPCFieldPoint er startet, men selvsagt kan en annen OPC-server benyttes, gitt at den har versjon 2.05 eller senere. (OPC-serveren National Instruments.DaqOpc fungerer dessverre ikke sammen med Matlabs OPC Toolkit, sannsynligvis fordi OPC-serveren er av versjon eldre enn 2.05.)

Litt info om FieldPoint: FP er et modulært distribuert I/O-system levert av National Instruments, se figur 11. FieldPoints OPC-server starter når konfigureringsverktøyet FieldPoint Explorer er startet.

Figur 11: FieldPoint - et distribuert, modulært I/O-system

Tilbake til OPC... Nedenfor er illustrative eksempler på OPC-kommandoer. FieldPoint-utstyret er benyttet til I/O mot DC-motoren.

%Locate Your OPC Server
hostInfo = opcserverinfo('localhost')

%Show all servers:
allServers = hostInfo.ServerID'

%Create an OPC Data Access Client Object
da = opcda('localhost', 'National Instruments.OPCFieldPoint')

%Connect client object to OPC server:
connect(da)

%Create an OPC Data Access Group Object
Group1 = addgroup(da)

%Browse the Server Namespace
opcitems = serveritems(da, '**')

%Add OPC Data Access Items to the group named Group1
aninn0 = additem(Group1, 'FP Res\FP-TB-10 @1\Tacho_kanal0')
anut0 = additem(Group1, 'FP Res\FP-TB-10 @1\Styresignal_kanal4');

%Reading Data from an Item
r=read(aninn0)

%To get the Value of the first (and here: only) record of the structured array r:
r(1).Value

%Writing Data to an Item
write(anut0, 5)

%Cleaning up after the session:
disconnect(da)
delete(da)

Ovenstående kode er samlet i Matlab-skriptet matlabopc.m.

I/O basert på dedikerte I/O-funksjoner

Med dedikerte I/O-funksjoner mener her funksjoner som er dedikert den foreliggende I/O-enheten. Dedikerte I/O-funksjoner gir gjerne (mye) større I/O-hastighet enn bruk av OPC.

LabVIEW

Dedikerte I/O-funksjoner for National Instruments' egne I/O-kort fins på funksjonspaletten NI Measurements / Data Acquisition / Analog Input hhv. Analog Output. Figur 12 viser frontpanelet og figur 13 viser diagrammet for VI'en io_dedikert_ai_ao_fun.vi som benytter slike I/O-funksjoner.

Figur 12: Frontpanelet for VI'en io_dedikert_ai_ao_fun.vi

Figur 13: Diagrammet for VI'en io_dedikert_ai_ao_fun.vi

Matlab

Matlabs DAQ Toolkit har I/O-funksjoner for bl.a. mange av National Instruments' I/O-kort, men dette vil ikke bli demonstrert her.


Black box-modellering av fysisk prosess

Subspace-metoder er hensiktsmessige for black box- eller inn/ut-modellering med resulterende tidsdiskret tilstandsrommodell eller transferfunksjon. En subspace-funksjon fins i både LabVIEW System Identification Toolkit (funksjonens navn er Estimate State-Space Model) og i Matlabs System Identification Toolbox (funksjonen er n4sid), og dessuten har kollega David diRuscio ved HiT har laget sin egen toolbox kalt DSR som implementerer hans effektive subspace-algoritme. Løsning i både LabVIEW og Matlab vises nedenfor.

LabVIEW

Figur 14 viser frontpanelet og figur 15 viser blokkdiagrammet for sysid_subspace_labview.vi som utfører modellering av DC-motoren.

Figur 14: Frontpanelet for sysid_subspace_labview.vi

Figur 15: Blokkdiagrammet for sysid_subspace_labview.vi

Matlab

Matlab-funksjoner kan benyttes via Matlab-noden i LabVIEW. Figur 16 viser frontpanelet og figur 17 viser blokkdiagrammet for sysid_subspace_matlab.vi der n4sid-funksjonen (for subspace-estimering) brukes for estimering av en tidsdiskret tilstandsrommodell på basis av arrays (tidsserier) av styresignal u og måling y.

Figur 16: Frontpanelet sysid_subspace_matlab.vi

Figur 17: Blokkdiagrammet for sysid_subspace_matlab.vi


PID-regulering av virkelig motor og simulert motor

Figur 18 viser frontpanelet og figur 19 viser blokkdiagrammet for pid_control_system.vi som regulerer enten den virkelige motoren eller den simulerte motoren utfører modellering av DC-motoren (valgt av brukeren).

Figur 18: Frontpanelet for pid_control_system.vi

Figur 19: Blokkdiagrammet for pid_control_system.vi


Analyse av reguleringssystem

Vi ser på bruk av funksjoner i LabVIEWs Control Design Toolkit. control_analysis_design.vi.

Figur 20 viser frontpanelet, og figur 21 viser blokkdiagrammet. (Fase-frekvensresponsen er litt merkelig...vet ikke sikkert hvorfor ennå...)

Figur 20: Fronpanelet for control_analysis_design.vi

Figur 21: Blokkdiagrammet for control_analysis_design.vi


Tekstbasert programmering (i f.eks. beregninger)

  • Matlab er bra! Matlab + LabVIEW er mulig med bl.a. Matlab-node i LabVIEW.
  • Gratis-alternativ: Octave, som er et SourceForge-prosjekt (dugnadsprosjekt) med stort sett samme syntaks som Matlab og med utmerket funksjonsstøtte innen bl.a. reguleringsteknikk, signalbehandling og med samme muligheter for utvikling av skript  og funksjoner som Matlab. Nyttige Octave-lenker er samlet på http://techteach.no/octave.
  • Formula Node i LabVIEW. C-syntaks. Støtte for enkle, skalare beregninger.
  • Matrixx brukt via XMath-noden i LabVIEW. (Til erstatning for HiQ.) Jeg har ennå ikke testet ut Matrixx.

Kopling til PLS

Figur 22 viser som eksempel PLS'en Mitsubishi FX2N, som benyttes i et fag jeg underviser ved Høgksolen i Buskerud.

Figur 22: PLS'en Mitsubishi FX2N

Kopling mellom LabVIEW og PLS (Mitsubishi FX2N) kan foretas via Beijer Electronics' OPC-server. Dermed kan LabVIEW eller Matlab som prosessimulator som styres av PLS'en! LabVIEW, men neppe Matlab i samme grad, gir dessuten mulighet til å lage HMI for styresystemet.


Diskusjon og konklusjon

Ved Høgskolen i Telemark sier studenter at de foretrekker å bruke ett eller færrest mulig antall verktøy på lab'en siden det gir dem større mulighet til å fokusere på løsning av selve oppgaven. (Jeg - lærer'n - er enig i det, men synes også det er et poeng at studentene blir kjent med forskjellige verktøy.)

I mine fag i både BSc- og MSc-utdanningen går det i retning av at jeg velger LabVIEW som hovedverktøy for labarbeid der teoretiske metoder skal implementeres. Det begrunnes som følger:

  • LabVIEWs nylig lanserte toolkits for simulering, modellering og regulering er funksjonsmessig på høyde med tilsvarende verktøy i Matlab/Simulink.
  • Mulighetene for å lage gode brukergrensesnitt enkelt er bedre i LabVIEW
  • National Instruments i Norge har hatt en liberal holdning til å gi studenter fri tilgang til LabVIEW etc.
  • I/O-funksjoner er innebygd i LabVIEW, men krever ekstra toolkits i Matlab.
  • Programutvikling i LabVIEW er mer moro enn i Matlab pga. den grafiske programmeringen.

Studentene skal, for andre formål enn praktisk labarbeid, lære et tekstbasert numerisk verktøy også, og da ligger nok Octave godt an sammenliknet med Matlab siden Octave er gratis (viktig for studenter uten særlig inntekt) og har tilfredsstillende funksjonalitet. Dessuten gir opplæring i Octave automatisk en opplæring i Matlab siden syntaksene er så å si identiske.


20. oktober 2004. Finn Haugen (finn.haugen@hit.no)