Vurdering av datamaskinbaserte verktøy for undervisninglab innen teknisk kybernetikkAv Finn Haugen, 1. amanuensis ved Høgskolen i Telemark Innhold:Black box-modellering av fysisk prosess PID-regulering av virkelig motor og simulert motor I/O mot fysisk prosessProsessenDC-motor (Faulhaber) med analogt +/-10V styresignal og analogt +/-10V målesignal fra tachometer:
Figur 1 I/O-utstyrFigur 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å OPCOPC-server og -klienterEtter 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):
Eksempel: LabVIEWFigur 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: MatlabMatlabs 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 %Show all servers: %Create an OPC Data Access Client Object %Connect client object to OPC server: %Create an OPC Data Access Group Object %Browse the Server Namespace %Add OPC Data Access Items to the group
named Group1 %Reading Data from an Item %To get the Value of the first (and here:
only) record of the structured array r: %Writing Data to an Item %Cleaning up after the session: Ovenstående kode er samlet i Matlab-skriptet matlabopc.m. I/O basert på dedikerte I/O-funksjonerMed 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. LabVIEWDedikerte 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 MatlabMatlabs 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 prosessSubspace-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. LabVIEWFigur 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 MatlabMatlab-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 motorFigur 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 reguleringssystemVi 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)
Kopling til PLSFigur 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 konklusjonVed 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:
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) |