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

Semesteroppgave:

PLS-programmering

Hva oppgaven handler om

I denne oppgaven skal PLS'en Mitsubishi FX2N benyttes for PID-regulering av en likestrømsmotor. PLS'en har da tilkoplet en tilleggsmodul for analog I/O. PLS'en skal også brukes til å starte og stoppe motoren.

Utstyr

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

Informasjon om AI- og AO-funksjoner og om PID-funksjonen

Dere må lese igjennom denne informasjonen før dere begynner å arbeide med oppgavene nedenfor.

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 f.eks. "analog fx", og den aktuelle treffteksten er
"Analog FX: Programexempel (GX IEC Developer, funktionsblock) för hantering av analogmoduler till MELSEC FX", el.l.) 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: FX0N_3A-funksjonen

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 (søk etter f.eks. "pid fx2n"). 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.

Hjelp-filen PidFX.chm gir informasjon om hvilke verdier som kan angis på de enkelte inngangene på PidFX-blokken, men for å komme litt raskere i mål, gjengir jeg her konfigurering av blokken slik en studentgruppe ved HiBu gjorde det i en laboppgave høsten 2005:

Figur 2: PidFX-funksjonen

Oppgaver

  1. Installer funksjonsblokkene og hjelp-filene for AnalogFX og PiDFX.
  2. Les i gjennom de delene av hjelp-filen AnalogFx.chm som gjelder FX0N_3A-funksjonen.
  3. Les i gjennom de delene av hjelp-filen PidFX.chm som gjelder PidFX-funksjonen. Du kan lese dette utdraget av hjelp-filen: pidfx_extract_from_help_file.pdf.
  4. 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).

  5. 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).

  6. Utvid PLS-programmet slik at en bryter tilkoplet PLS'en stopper/starter motoren. Motoren kan starte dersom Start-kontakten på motorbrettet er koplet til jord, ellers stopper den.


Framdriftsplanen


Oppdatert 23.10.06 av Finn Haugen, faglærer. E-postadresse: finn@techteach.no).