Høgskolen i Buskerud: Fag SESM3400 Styring av mekatroniske systemer

Lab: PID-regulering med PLS

Hva laben handler om

I denne laboppgaven skal PLS'en Mitsubishi FX2n benyttes for PID-regulering av en likestrømsmotor. PLS'en har da tilkoplet en tilleggsmodul for analog I/O.

Utstyr

  • DC-motor
  • PLS'en FX2N med analog I/O-modulen FX0N-3A
  • GX IEC Developer

Informasjon om AI (analog inn) og AO (analog ut) med FX0N-3A i GX IEX Developer

 I denne brukerveiledningen står det at man skal bruke funksjonene RD3A_M (RD = read) for AI-operasjoner og WR3A_M (WR = write) for AI-operasjoner. Problemet er imidlertid at disse funksjonene ikke virker på alle FX2N-versjoner! Mitsubishi har imidlertid laget en funksjonsblokk kalt FX0N_3A som sikkert virker. Den er tilgjengelig som én av funksjonsblokkene i et User Library kalt AnalogFX, som er tilgjengelig som en selvutpakkende exe-fil med navn AnalogFX.exe. Dere kan laste ned filen fra http://www.beijer.no (søk der etter analogfx) og pakke den den ut på et passende sted. I den utpakkede filen fins også en hjelp-fil med filtypenavn analogfx.chm. Installering og bruk av et nedlastet (og utpakket) User Library (funksjonsblokker og hjelp-fil) er beskrevet i kap. 4.6 i Manual for GX IEC Developer.

Når du bruker FX0N_3A-funksjonen i en POU, må du først opprette en instans ("kopi") av funksjonen i POU'ens header. Dette gjøres ved å deklarere i headeren en lokal variabel med fritt valgt navn, f.eks. AI_AO_FX0N_3A med datatype (Type) FX0N_3A. Figur 1 viser headeren i et eksempel på en POU.  Datatypen velges ved å klikke seg fram til FX0N_3A-funksjonen via knappen med tre prikker i figur 1.

Figur 1 viser også hvordan funksjonen kan tas i bruk i en POU. D0, D1 og D2 dataceller (som brukeren fritt kan ta i bruk fritt). M0 er en boolsk datacelle, som her gir  staturinformasjon. I eksempelet skrives verdien 100 (integer = heltall) til enhetens AO-kanal, og det avleses verdier fra enhetens to AI-kanaler. Både AO og AI utføres her med én og samme funksjon. (Datacellene kan benyttes i tilknytninger til funksjoner andre steder i PLS-programmet.) Både AI- og AO-verdiene representeres som heltall i området 0 - 255, tilsvarende 0 - 10V (evt. 4 - 20mA for strømsignal). Du kan endre verdien av D0-cellen ved å dobbelklikke på D0 mens programmet kjører (du får da opp et vindu der du kan angi verdien, og deretter får du spørsmål om du vil overføre den nye verdien til PLS'en).

Figur 1

Det er nødvendig å definere minneceller el.l. til alle terminalene AnalogOutput, AnalogInputCh1 og AnalogInputCh2, selv om du faktisk ikke bruker alle disse terminalene i funksjonskallet.

Informasjon om PID-funksjonen PidFX i GX IEX Developer

Mitsubishi har laget en funksjonsblokk kalt PidFX, som er tilgjengelig i et User Library kalt PidFX, som er tilgjengelig som en selvutpakkende exe-fil med navn PidFx.exe. Dere kan laste ned exe-filen fra http://www.beijer.no. Den selvutpakkende filen inneholder også hjelp-filen PidFX.chm. Installering og bruk av et nedlastet (og utpakket) User Library (funksjonsblokker og hjelp-fil) er beskrevet i kap. 4.6 i Manual for GX IEC Developer.

Når du bruker PIDFx-funksjonen i en POU, må du først opprette en instans av funksjonen i POU'ens header. Dette gjøres helt tilsvarende som for FX0N_3A-funksjonen, jf. beskrivelsen ovenfor.

Praktiske opplysninger

Oppgaven utføres på rom C212/213. Veileder er Finn Haugen.

Forbedelser

  • Les om installering av User Library i kap. 4.6 i Manual for GX IEC Developer.
  • Installer funksjonsblokkene og hjelp-filene for AnalogFX og PiDFX.
  • Les i gjennom de delene av hjelp-filen AnalogFx.chm som gjelder FX0N_3A-funksjonen.
  • Les i gjennom de delene av hjelp-filen PidFX.chm som gjelder PidFX-funksjonen. Her er et utdrag av denne hjelp-filen: pidfx_extract_from_help_file.pdf.

Oppgaver

  1. Lag (og bruk) et PLS-program som tester AO- og AI-funksjonene på analog I/O-enheten. Programmet skal altså vise om funksjonene virker som forventet eller ikke. Bruk også voltmeter for å være sikker på at faktisk spenning er lik den spenningen dere kan regne dere fram til ut fra heltallsverdien av ut-spennngen fra FX0N_3A-enheten. Sørg for at programmets syklustid er 100ms (høyreklikk på programmets Task, velg deretter Properties, og sett Event til FALSE og Interval til T#100ms).

  2. Lag (og bruk) et PLS-program for PID-regulering av motorturtallet. Still inn en PI-regulator (for automatisk regulering). (Tips: Dere kan sette integraltiden lik prosessens tidskonstant, som her kan anslås til 0,3s.) Hvor stort blir det stasjonære reguleringsavviket ved konstant turtallsreferanse? Klarer regulatoren å kompensere stasjonært for en tilnærmet konstant prosessforstyrrelse (lastmoment)?
    Tips for programmeringen:

    • Programmet kan inneholde 2 nettverk: (1) FX0N_3A-funksjonen, som realiserer både AO og AI. (2): PidFX-funksjonen. Med denne løsningen vil AO-verdien fra regulatoren faktisk bli omsatt til et fysisk spenningssignal først i neste tidsskritt.

    • Bruk minneceller for settpunktinngangen (og ProcessValue-inngangen) og for hver av utgangene på PidFX-blokken. (Du trenger ikke bruke MOVE_M-funksjoner som i hjelp-filen for PidFX.) Minneceller med navn på formen Dn kan representere hvilken som helst datatype, mens minneceller med navn på formen Mn (dvs. M0, M1, ...) repesenterer boolsk data (dvs. en bit).


Oppdatert 15.11.05 av Finn Haugen, lærer. E-postadresse: finn@techteach.no.