Rapport – Entank Prosjekt i emnet «Styresystemer og reguleringsteknikk» Gruppe 01 Høgskolen i Sør-Trøndelag 2015 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Sammendrag (Skrevet av TM) Entank-prosjektet er en del av et større prosjekt som går i vårsemesteret i emnet «Reguleringsteknikk og styresystemer» for 2EA. Formålet med oppgaven er å regulere nivået i en tank etter gitte kriterier og ved hjelp av det utstyret vi har blitt tildelt fra skolen. Rapporten beskriver detaljert hvordan vi har programmert regulatorer i PLS, kommunikasjonen mellom de forskjellige enhetene, og flere løsninger på brukergrensesnitt. I tillegg til rapporten kommer et simuleringsnotat som vedlegg, hvor modellering, simulering og uthenting av regulatorparametere er beskrevet. Hovedresultatet har blitt en tank med en velfungerende nivåregulering med et innsvingningsforløp av typen «minimum forstyrrelse». Vi har fungerende og oversiktlige brukergrensesnitt, og i tillegg en webserver man kan lese og skrive noen verdier fra. Parameterne fra simuleringsnotatet ga et innsvingningsforløp på riggen som gjenspeilte resultatene fra simuleringen. Erfaringer vi har gjort oss er viktigheten av rekkefølgen av aksjonene i PLS-programmet, regulering med heltallsaritmetikk, og at man må være påpasselig med å ha god oversikt over adresser som blir brukt og oppdaterer disse forløpende. I PLS har kan vi velge om vi skal regulere med P-, eller PI-regulator. I tillegg har vi konstruert P-, D- og PD-foroverkobling. Best resultat oppnådde vi med PI-serieregulator med PD-foroverkobling. De beste innstillingene vi kom frem til er: PI-reg: P: 5.5 I-tid: 4.2 sekunder PD-foroverkobling: P: 0.7 D-tid: 0.3 Kravet gitt i oppgaveteksten var et innsvingningsforløp av typen minimum areal. Vårt innsvingningsforløp er av typen «minimum forstyrrelse». Vi har prøvd hardt å oppnå «minimum areal», men har konkludert med at dynamikken til selve utstyret er et hinder til å oppnå dette. Forord (Skrevet av TM) Denne prosjektrapporten representerer «Entank»-delen i prosjektet som holdes hver vår i emnet «Reguleringsteknikk og styresystemer» for 2EA. Vi i gruppe 1 retter vår takk til de ansatte og våre medstudenter ved HiST AFT - Program for elektrofag. Gjennomføringen av prosjektet har vært lærerikt og utfordrende, vi har alle fått kjent på mestringsfølelsen. Det har vært lærerikt fordi vi har fått konkretisert mye av det vi hadde i forelesninger tidligere i år. Man kan si at prosjektet har gitt oss flere knagger å henge klærne på. Det har vært utfordrende fordi mye av programvaren har vært ny for oss, og fordi vi ikke har lagd et PLSprogram som har vært så omfattende tidligere i utdanning. Vi vil rette en spesiell takk til vår veileder På Gisvold for den hjelpen vi har fått. Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Innholdsfortegnelse 1.0 Innledning .................................................................................................................................... 2 1.1 Bakgrunn ....................................................................................................................................... 2 1.2 Utstyr, programvare, definisjoner og forkortelser ........................................................................ 2 1.2.1 Forkortelser ............................................................................................................................ 2 1.2.2 Definisjoner ............................................................................................................................ 3 1.2.3 Utstyr ...................................................................................................................................... 4 1.2.4 Software ................................................................................................................................. 4 1.3 Hjemmeside................................................................................................................................... 5 2.0 Teknisk del ......................................................................................................................................... 7 2.1 Problemstilling ............................................................................................................................... 7 2.2 Prosessbeskrivelse ......................................................................................................................... 8 2.2.1 Flytskjema............................................................................................................................... 8 2.2.2 Bilder av systemet .................................................................................................................. 9 2.2.3 Kommunikasjon .................................................................................................................... 11 2.3 Antialiasing filter.......................................................................................................................... 12 2.4 Regulatoralgoritmer .................................................................................................................... 16 2.5 PLS programmering (EB) .............................................................................................................. 20 2.5.1 Master-PLS............................................................................................................................ 22 2.5.2 Slave-PLS ............................................................................................................................... 27 2.5.3 Serieregulator ....................................................................................................................... 31 2.5.4 Foroverkobling...................................................................................................................... 35 2.5.5 Alarmhåndtering .................................................................................................................. 39 2.6 HMI programmering .................................................................................................................... 43 2.6.1 OPC-server og tagger............................................................................................................ 43 2.6.2 Design InTouch ..................................................................................................................... 45 2.6.3 Design iX-panel ..................................................................................................................... 49 2.6.4 Alarmhåndtering InTouch..................................................................................................... 54 2.6.5 Alarmhåndtering iX-panel .................................................................................................... 57 2.6.6 Operatørnivåer og rettigheter.............................................................................................. 58 2.6.7 Web-grensesnitt for iX panel................................................................................................ 62 2.7 Simulering .................................................................................................................................... 64 2.7.1 Serieregulering ..................................................................................................................... 64 2.7.2 Foroverkobling...................................................................................................................... 66 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 3.0 Innregulering ................................................................................................................................... 68 3.1 Krav til reguleringen .................................................................................................................... 68 3.2 Manuelle innjusteringsmetoder .................................................................................................. 68 3.3 Serieregulering ............................................................................................................................ 69 3.4 Foroverkobling............................................................................................................................. 70 3.5 Parametere fra simulering........................................................................................................... 71 4.0 Testskjema ....................................................................................................................................... 72 4.1 Operatørpanel ............................................................................................................................. 72 4.2 InTouch ........................................................................................................................................ 72 4.3 PLS ............................................................................................................................................... 73 5.0 Prosjektgjennomføring, erfaringer og konklusjon .......................................................................... 74 5.1 Prosjektgjennomføring ................................................................................................................ 74 5.2 Erfaringer og forslag til forbedringer........................................................................................... 74 5.3 Konklusjon ................................................................................................................................... 75 6.0 Vedlegg .............................................................................................................................................. 1 6.1 PLS program Master ...................................................................................................................... 1 6.2 PLS program Slave ......................................................................................................................... 1 6.3 Simuleringsnotat ........................................................................................................................... 1 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur liste Figur 1 Eksempel kildekode hjemmeside ................................................................................................ 5 Figur 2 Eksempel CSS hjemmeside .......................................................................................................... 5 Figur 3 Eksempel formattering hjemmeside ........................................................................................... 5 Figur 4 Hjemmeside................................................................................................................................. 6 Figur 5 Flytskjema.................................................................................................................................... 8 Bilde 1 PLS-rigg ........................................................................................................................................ 9 Bilde 2 Tankrigg ..................................................................................................................................... 10 Bilde 3 Tankrigg bakside ........................................................................................................................ 10 Figur 6 Kommunikasjon ......................................................................................................................... 11 Figur 7 Kretsskjema antialiasing filter ................................................................................................... 12 Figur 8 Bode diagram filter .................................................................................................................... 13 Figur 9 Kobling MultiSim filter ............................................................................................................... 14 Figur 10 Sprang 1 til 5 volt filter MultiSim............................................................................................. 14 Figur 11 Ferdig filter .............................................................................................................................. 15 Figur 12 Karakteristikk AD/DA omformer ............................................................................................. 17 Figur 13 Prinsipp P-reg foroverkobling .................................................................................................. 18 Figur 14 Prinsipp D-reg foroverkobling ................................................................................................. 18 Figur 15 Prinsipp PD-reg foroverkobling ............................................................................................... 19 Figur 16 MOV blokk ............................................................................................................................... 20 Figur 17 TO blokk ................................................................................................................................... 20 Figur 18 FROM blokk ............................................................................................................................. 20 Figur 19 LD blokk ................................................................................................................................... 21 Figur 20 PLS / PLF blokk ......................................................................................................................... 21 Figur 21 Kontakt positiv flanke .............................................................................................................. 21 Figur 22 PLS initiering status ................................................................................................................. 22 Figur 23 PLS Flytte fra data til enkelte bit ............................................................................................. 22 Figur 24 PLS enkelt Bit til Data .............................................................................................................. 23 Figur 25 PLS Flytte til batterimatede minneceller ................................................................................. 23 Figur 26 PLS Flytte parametre til Profibus ............................................................................................. 23 Figur 27 PLS Start/Stopp pumpe ........................................................................................................... 24 Figur 28 PLS Auto/Manuell .................................................................................................................... 24 Figur 29 Velge P/PI regulator ................................................................................................................ 25 Figur 30 PLS valg av foroverkobling ....................................................................................................... 25 Figur 31 PLS Valg av utløp / Magnetventiler ......................................................................................... 26 Figur 32 PLS Status magnetventiler....................................................................................................... 27 Figur 33 PLS Slave struktur .................................................................................................................... 27 Figur 34 PLS Slave til/fra Master ........................................................................................................... 28 Figur 35 PLS Status bit sendes via Dataregister..................................................................................... 29 Figur 36 PLS Aksjoner mottatt fra Master ............................................................................................. 29 Figur 37 PLS Styring utganger Slave ...................................................................................................... 30 Figur 38 PLS Skriv/les AD/DA slave ........................................................................................................ 30 Figur 39 PLS P-regulator ........................................................................................................................ 31 Figur 40 PLS P-regulator algoritme - mellomregning ............................................................................ 31 Figur 41 PLS Grensesjekk og pådrag ...................................................................................................... 32 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur 42 PLS Av/På P-regulator.............................................................................................................. 32 Figur 43 PLS PI-regulator ....................................................................................................................... 33 Figur 44 PLS PI mellomregning 1 ........................................................................................................... 33 Figur 45 PLS PI mellomregning 2 ........................................................................................................... 33 Figur 46 PLS PI grensesjekk og pådrag .................................................................................................. 34 Figur 47 PLS PI-reg pådrag ..................................................................................................................... 34 Figur 48 PLS Foroverkobling .................................................................................................................. 35 Figur 49 PLS Foroverkobling P-Reg pådrag............................................................................................ 35 Figur 50 PLS Foroverkobling D-Reg endring av Kp til 1 ......................................................................... 36 Figur 51 PLS Foroverkobling D-Reg ....................................................................................................... 36 Figur 52 PLS Foroverkobling pådrag D-del ............................................................................................ 36 Figur 53 PLS Foroverkobling PD-Reg ..................................................................................................... 37 Figur 54 PLS Pådrag til DA-omformer .................................................................................................... 37 Figur 55 PLS Manuelt pådrag................................................................................................................. 38 Figur 56 PLS Rykkfrie overganger .......................................................................................................... 38 Figur 57 PLS Samplingstid ...................................................................................................................... 38 Figur 58 PLS Revers/Direkte regulering ................................................................................................. 39 Figur 59 PLS Status Profibus .................................................................................................................. 39 Figur 60 PLS funksjonsblokk Alarmer .................................................................................................... 40 Figur 61 PLS Alarm 25% under ref. ........................................................................................................ 40 Figur 62 PLS Alarm Kritisk lavt nivå ....................................................................................................... 40 Figur 63 PLS Alarmer tidsbegresning ..................................................................................................... 41 Figur 64 PLS Alarmer Tidsforsinkelse .................................................................................................... 41 Figur 65 PLS Alarmer Kvittering ............................................................................................................. 41 Figur 66 PLS Alarmlampe blink .............................................................................................................. 42 Figur 67 PLS Alarmlampe....................................................................................................................... 42 Figur 68 PLS Alarmer kvittering ............................................................................................................. 42 Figur 69 OPC Tag liste ............................................................................................................................ 43 Figur 70 OPC Tag eksempel skalering .................................................................................................... 44 Figur 71 InTouch Nivå tag ...................................................................................................................... 45 Figur 72 InTouch Plassering av referanse .............................................................................................. 46 Figur 73 InTouch Reguleringsventil ....................................................................................................... 46 Figur 74 InTouch Pumpe........................................................................................................................ 46 Figur 75 InTouch Animering pumpe ...................................................................................................... 47 Figur 76 InTouch Animering rør/ventil .................................................................................................. 47 Figur 77 InTouch display av verdier....................................................................................................... 47 Figur 78 InTouch Regulator parametere ............................................................................................... 48 Figur 79 InTouch Knapper utløpsventiler .............................................................................................. 48 Figur 80 InTouch Knapper ..................................................................................................................... 48 Figur 81 InTouch Trender ...................................................................................................................... 49 Figur 82 iX-panel Navigasjonsmuligheter .............................................................................................. 50 Figur 83 iX-panel Nivåindikator ............................................................................................................. 51 Figur 84 iX-panel Actions til knapper .................................................................................................... 51 Figur 85 iX-panel Trendvindu ................................................................................................................ 52 Figur 86 iX-panel Trendkurver oppsett ................................................................................................. 52 Figur 87 iX-panel Skjermbilde Instillinger .............................................................................................. 53 Figur 88 iX-panel Indikatorfarger .......................................................................................................... 53 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur 89 InTouch Alarmtag .................................................................................................................... 54 Figur 90 InTouch Alarmvindu ................................................................................................................ 54 Figur 91 InTouch Kvitterings script ........................................................................................................ 55 Figur 92 InTouch Alarmknapp animering .............................................................................................. 55 Figur 93 InTouch Oppsett blinking alarm .............................................................................................. 56 Figur 94 InTouch Alarm indikatorer ...................................................................................................... 56 Figur 95 iX-panel Alarmvindu ................................................................................................................ 57 Figur 96 iX-panel Alarmserver ............................................................................................................... 57 Figur 97 iX-panel innlogging .................................................................................................................. 61 Figur 98 iX-panel operatørnivåer .......................................................................................................... 61 Figur 99 iX-panel Webgrensesnitt ......................................................................................................... 62 Figur 100 iX-panel HTML kode eksempel .............................................................................................. 62 Figur 101 Simulering Serieregulering .................................................................................................... 64 Figur 102 Simulering Ziegler-Nichols ..................................................................................................... 64 Figur 103 Simulering Etterjustering....................................................................................................... 65 Figur 104 Simulering Etterjustering....................................................................................................... 65 Figur 105 Simulering Forenklet foroverkobling ..................................................................................... 66 Figur 106 Simulering Modell for foroverkobling ................................................................................... 66 Figur 107 Simulering Innsvingningsforløp med PD-foroverkobling ...................................................... 67 Figur 108 Manuell selvjustering ............................................................................................................ 69 Figur 109 Serieregulering ...................................................................................................................... 69 Figur 110 Foroverkobling ...................................................................................................................... 70 Figur 111 Test av parametere ............................................................................................................... 71 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Gruppedeltakere Prosjektgruppen består av følgende medlemmer Eyvind E. Bjørsland Allmenn 90915799 [email protected] Anders Aabakken Elektriker 95992849 [email protected] Magnus K. Bergsbakk Fagbrev sveiser 99026094 [email protected] Øyvind Eklo Automatiker 92894293 [email protected] Torbjørn Morken Prosesstekniker 45272224 [email protected] Veileder Pål Gisvold er veileder for prosjektgruppen Han jobber som Høgskolelektor ved avdeling for teknologi ved HiST, ved program for elektro- og datateknikk. Mail: [email protected] Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 1.0 Innledning 1.1 Bakgrunn (Skrevet av ØE) Det har blitt en tradisjon at studenter i 4. semester ved Elektro- og datateknikk, med valgt spesialisering automatisering, kjører et prosjekt i emnet «Styresystemer og reguleringsteknikk». I dette prosjektet skal vi prøve ut teorien vi har lært tidligere i semesteret i praksis. «Entank» er hoveddelen av prosjektet. Prosjektet omhandler alle de tre hoveddelene i emnet, reguleringsteknikk, sanntids datateknikk og PLS-/HMI-programmering. Prosjektet teller 40% av karakteren i emnet «Styresystemer og reguleringsteknikk». Klassen er delt inn i seks prosjektgrupper, som igjen består av fem eller seks studenter. 1.2 Utstyr, programvare, definisjoner og forkortelser 1.2.1 Forkortelser (Skrevet av MB) HiST OPC PC PLS HMI PID AD DA mA V Kp Ti Td HTML WAN Høgskolen i Sør-Trøndelag Object Linking and Embedding for Process Control. Personal computer Programmerbar logisk styring Human-Machine-Interface Proporsjonal-, Integral- og Derivat-regulator Analog til digital Digital til analog Milliampere Volt Forsterkning Integrasjonstid Derivasjonstid HyperText Markup Language Wide Area Network – Skolens nettverk i vårt tilfelle Side 2 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 1.2.2 Definisjoner (Skrevet av MB og ØE) HMI BUS Profibus-DP InTouch IEC HTML CSS PID-regulator Brukergrensesnitt for skriving og lesing til prosessen. Kommunikasjonssystem for overføring av data. Feltbuss kommunikasjonsstandard brukt innen automatikk Verktøy for programmering av HMI. International standards and conformity. Programmeringsspråk som kan brukes for å kode hjemmesider. «Cascading Sheet Styles» formateringsspråk til HTML P-regulator: Sørger for å endre pådraget proporsjonalt med avviket. PI-regulator: I-delen (integratordelen) har i oppgave å gjøre det stasjonære avviket lik null. PD-Regulator: D-delen (derivatdelen) har i oppgave å redusere det dynamiske avviket. Den gir ingen bidrag til stasjonært avvik. Stasjonært avvik Dynamisk avvik Innsvingningsforløp Forskjellen mellom referanse og måling ved stabilt system. Det største avviket fra referansen i et innsvingningsforløp. Karakteristikk på prosessverdiens forløp før systemet er stabilt. Vi opererer hovedsakelig med tre typer innsvingningsforløp: Minimum forstyrrelse, minimum areal eller minimum amplitude. Innsvingningsforløp med 4-6 halvperioder. Innsvingningsforløp med 10-15 halvperioder. Innsvingningsforløp med 1-2 halvperioder. Reguleringsstrategi for å motvirke forstyrrelser i prosessregulering. Signal der 4 mA representerer 0% og 20 mA representerer 100%. Signal der 1 V representerer 0% og 5 V representerer 100%. Minimum areal Minimum amplitude Minimum forstyrrelse Foroverkobling 4-20 mA 1-5 V Side 3 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 1.2.3 Utstyr (Skrevet av ØE og MB) Utstyr på PLS riggen: Mitsubishi FX1N PLS Mitsubishi Q00CPU Mitsubishi Q61P-A2 Powersupply modul Mitsubishi QJ71PB92D Ethernet modul Mitsubishi QJ71E71-100 Profibus modul DLink AirPlus G+ Router Mitsubishi FX0N-3A AD/DA modul Mitsubishi FX0N-32NT-DP Profibus modul Beijer iX Panel TA100 Beijer OPC server PC med InTouch software Antall: 2 stk. 1 stk. 1 stk. 1 stk. 1 stk. 1 stk. 2 stk. 2 stk. 1 stk. 1 stk. 1 stk. Utstyr brukt under prosjektet: Agilent Technologies Oscilloscope m/USB tilkobling 1 stk. 1.2.4 Software (Skrevet av ØE) Software navn: Wonderware InTouch GX Works 2 Beijer OPC server iX Developer 2.10 GX Configurator-DP GX IEC Developer MatLab m/ Simulink NI MultiSim Notepad++ WinSCP Benyttet til: HMI interface PLS programmering OPC link mellom PLS og HMI iX touchpanel programmering Oppsett Profibus-DP Oppsett Ethernet PLS Simulering og filter design Simulering av filteret Hjemmeside programmering Opplasting av hjemmeside Hjemmeside: http://www.invensys.com http://www.beijer.no http://www.beijer.no http://www.beijer.no http://www.beijer.no http://www.beijer.no http://www.mathworks.com http://www.ni.com http://notepad-plus-plus.org/ http://www.winscp.net Side 4 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 1.3 Hjemmeside (Skrevet og kodet av ØE) Prosjektet har egen hjemmeside som publiserer alle rapportene, arbeidsnotatene og tidsskriftartikkelen. Her har vi også lagt ut kort hva prosjektoppgaven går ut på og hvem som er med i prosjekt gruppen. Hjemmesiden finner du på: http://www.hekta.org/~p2ea1 Til koden har vi benyttes oss av programmet notepad++, og språket som er benyttet er HTML 4.01. Figur 1 Eksempel kildekode hjemmeside Formatering av sidene er gjort ved hjelp av «Cascading Style Sheets», eller CSS 3.0. Det vil si at vi henter inn ferdige *.css filer i <head> i hver html fil. På den måten slipper vi å skrive formateringskoden for hver gang vi lager en ny html fil. Vi har laget to CSS filer, samt hentet en med font type fra Google. Vi ser i figuren over hvordan disse blir hentet inn i selve HTML filen, på linje 6, 7 og 8. Koden på linje 9 og 10 forteller web-browseren hvilket tegnsett som skal brukes, og hvilket språk siden er på. Dette må være med slik at vi få nordiske bokstaver som æ, ø og å. Koden som står i <style> taggen gir oss muligheten til å formatere hver enkelt HTML side med ting som kun gjelder denne siden. Figur 2 Eksempel CSS hjemmeside Her ser vi et eksempel på hvordan elementet «overskrift» er formatert under <style>. Høyde, bredde, plassering fra toppen og fra venstre. Her settes også bakgrunnsfargen, som her er representert med RGB tall, til grå. Ved å velge class=«overskrift» i <div> elementet, velger vi formattering for hele. Vi bruker <div> til å plassere alt av tekst, bilder og linker. Figur 3 Eksempel formattering hjemmeside Side 5 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Hovedsiden er laget slik at menyer og overskrift kun lastes inn første gang. Innholdsdelen er laget ved hjelp av et <iframe> element, som henter opp og viser HTML sider. Det er laget en HTML side for hver side i menyen. Dette gjør at det blir enkelt å navigere i menyen, siden den ikke lastes hver gang. Størrelsen på siden er også prosent basert slik at den tilpasses skjermstørrelsen på hver PC som laster den. Koden for HTML og CSS er sjekket for kompabilitet mot gjeldende standarder på http://www.w3.org Dette gjør at vi kan benytte oss av logoer som viser at vi har utført denne sjekken av koden. Denne måten å lage hjemmesider på er veldig forskjellig fra den måten vi lærte i emnet Datateknikk. Vi har derfor måtte bruke mye tid på å lese oss opp på hvordan hjemmesider kodes til dagens HTML standard. Bruken av CSS var helt ny for oss, slik at vi begynte fra «scratch». Webgrensesnitt HMI I forbindelse med HMI-delen skulle det settes opp et web-grensesnitt mot touchpanelet. Dette bygger på en innebygget Java del i panelet. Det er satt opp en link fra hjemmesiden til Java serveren i panelet, men denne vil kun være operativ når vår del er lastet inn. Java delen i panelet er av en eldre, usikker type, som blir blokkert av nyere versjoner av Java. For å få denne funksjonen til å fungere må det derfor være installert en Java versjon som er versjon 7.0 eller eldre. Istedenfor er det kodet et webgrensesnitt som viser nivå, pådragsverdi og referanse. Referanse og manuelt pådrag kan også endres. Vi har prøvd å laget knapper som styrer utløpet, pumpe og kvitterer alarmer, men vi har ikke funnet koden som skal til for å styre enkelte bit-verdier. Dette grensesnittet fungerer kun når man er koblet til routeren lokalt. Grensesnittet finnes på http://192.168.1.104 Figur 4 Hjemmeside Side 6 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.0 Teknisk del 2.1 Problemstilling (Skrevet av ØE) Nivået i en tank skal reguleres med referanse 60%. Pådraget til tanken styres av en reguleringsventil. Det er 3 magnetventiler i utløpet som gir forstyrrelser til systemet. Prosjektgruppen skal programmere en regulator i PLSen, og utvikle brukergrensesnitt for prosessen i InTouch, samt et touch brukerpanel montert på riggen. Det skal prøves ut regulatorparametere fra simuleringsnotatet som ble ferdigstilt tidligere. Det er gitte krav til funksjoner og tilgangsnivåer til InTouch og touchpanelet i oppgaveteksten. Reguleringsmetodene som kan benyttes er følgende: Serieregulering: P-Regulator med nominelt pådrag. PI-Regulator. Foroverkobling: P-regulator med P-regulator foroverkobling. PI-regulator med P-regulator foroverkobling. P-regulator med D-regulator foroverkobling. PI-regulator med D-regulator foroverkobling. P-regulator med PD-regulator foroverkobling. PI-regulator med PD-regulator foroverkobling. Kravene til reguleringen er: Intet stasjonært avvik. Innsvingningsforløp av typen «minimum areal». Kjappest mulig innsvingning til ±2% av måleområdet når referansen er 60%. Det skal utarbeides en rapport på 60-80 sider for delprosjektet, samt publiseres på egen hjemmeside. Det praktiske arbeidet skal vises frem til faglærere Tirsdag 28.04.2015 Side 7 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.2 Prosessbeskrivelse 2.2.1 Flytskjema (Laget av AA) Figur 5 Flytskjema Side 8 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.2.2 Bilder av systemet (Tatt av EB) Bilde 1 PLS-rigg Side 9 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Bilde 2 Tankrigg Bilde 3 Tankrigg bakside Side 10 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.2.3 Kommunikasjon (Skrevet av AA) Kommunikasjon mellom de forskjellige nodene i nettverket foregår på forskjellige måter. Vi bruker Ethernet mellom master PLS, operatørpanel og PC med InTouch. Mellom master PLS og slave PLS bruker vi ProfiBus DP. Masteren vil da fungere som en «tolk» mellom operatørpanel, PC med InTouch og slave PLS. Dette er primæroppgaven til master PLS i dette prosjektet. Ofte må man bruke slike «overganger» mellom forskjellige typer kommunikasjonsprotokoller. Dette kommer ofte av at de forskjellige produsentene ikke støtter andre leverandørers protokoller. Da blir det mye mer komplisert, og ikke minst fordyrende. Det kan også være nødvendig å bytte bus type dersom det er store krav til hastighet mellom noen av nodene. Alle bus typer har også en klar begrensning i rekkevidde. Her kan det være veldig kostbare noder som kommuniserer over store avstander, mens rimeligere noder brukes lokalt i de forskjellige avdelingene. Ett eksempel på dette kan være en fabrikk som har flere produksjonslokaler på ett industriområde. I hvert lokale kan det være flere mindre maskiner som har sine egne PLSer. Lokalt på hver enkelt maskin kan det være for eksempel ASI BUS som henter inn signal fra de forskjellige sensorene inn til PLSen. Deretter knyttes de forskjellige maskinene sammen med ProfiBus DP. Til slutt bruker man kanskje Ethernet IP for å sende data fra hver avdeling inn til hovedkontoret som ønsker å se driftsstatus, tilstander og produksjonsstatistikk. For å gjøre dette er man avhengig av noder som kommuniserer på minimum 2 nett samtidig, akkurat slik som vår master PLS gjør. Figur 6 Kommunikasjon Side 11 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.3 Antialiasing filter (Skrevet av ØE) Spesifikasjon AD omformer 8bit 4-20 mA 0-250 oppløsning 250 Ohm motstand inngang til filter 100 ms i samplingstid i PLS (valgt av oss) 2. ordens Butterworth filter Tar utgangspunkt i ukjent støy, og designer filteret ut i fra at alt over halve samplingsfrekvensen skal dempes med 20 dB per dekade. Inngangssignalet på 4-20 mA gjøres om til 1-5V ved hjelp av en 250 Ω motstand i parallell med inngangssignalet. Figur 7 Kretsskjema antialiasing filter 1𝐿𝑆𝐵 = 𝜔𝑠 2 5−1𝑉 250 2𝜋 𝜋 = 0.016 𝑉 = 2ℎ = 0.1 = 31.4 1 𝐿𝑆𝐵 2 𝑟𝑎𝑑 𝑠 𝜔0 = 0.11/2 ∗ 31.4 = 0.316 ∗ 31.4 = 9.93 = 0.016𝑉 2 = 0.008 𝑉 10−20/20 = 0.1 𝑟𝑎𝑑 𝑟𝑎𝑑 ≈ 10 = 1.6 𝐻𝑧 𝑠 2 Side 12 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Vi velger kondensatorer først, for så å bestemme verdiene til motstandene. 𝑉𝑒𝑙𝑔𝑒𝑟 𝐶1 = 𝐶2 = 1 𝜇𝐹 𝑅1 = 1 √2𝜔0 𝐶1 𝑅2 = ℎ𝑖𝑛𝑛 = 𝑢𝑡 = 1 ≈ 70𝑘Ω 𝑟𝑎𝑑 √2 ∗ 10 𝑠 ∗ 1 𝜇𝐹 √2 √2 = ≈ 140 𝑘Ω 𝜔0 𝐶2 10 𝑟𝑎𝑑 ∗ 1 𝜇𝐹 𝑠 𝑅1 𝑅2 𝐶12 𝑠 2 1 1 = 2 + 𝑅2 𝐶2 𝑠 + 1 0.0098𝑠 + 0.14𝑠 + 1 Dette blir ideelle verdier for motstandene. Vi må velge fra reelle verdier som ligger nærmest disse. Vi velger da: 𝑅1 = 68 𝑘Ω, 𝑅2 = 150 𝑘Ω Bode diagram Bode Diagram Antialiasing filter 0 -10 Magnitude (dB) -20 -30 -40 -50 -60 -70 -80 0 Phase (deg) -45 -90 -135 -180 -1 10 10 0 1 10 Frequency (rad/s) 10 2 10 3 Figur 8 Bode diagram filter Side 13 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Test av filteret i MultiSim MultiSim simulering av filteret med inngangssignal 1-5V og 50Hz støy med 2V amplitude. Vi valgte først kondensatorer på 47 𝜇𝐹, men ble anbefalt av Stein-Olav Lund, Labingeniør ved HiST, å velge kondensatorer mellom 1 𝑜𝑔 2.2 𝜇𝐹. Disse hadde mindre lekkasjestrømmer, og filteret ble bedre. Vi har simulert det opprinnelige filteret i MultiSim, og siden dette har samme karakteristikk som det vi skal lage, har vi valgt å ta med figur av simuleringen Figur 9 Kobling MultiSim filter Figur 10 Sprang 1 til 5 volt filter MultiSim Rødkurve = inngangssignal, Blåkurve = utgangssignal, Sprang fra 1 til 5 V Scope innstillinger for kurven over. Side 14 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Filteret i praksis Figur 11 Ferdig filter Systemet er generelt plaget med mye støy, både nettstøy og fra frekvensomformeren. Denne støyen forplantet seg til AD/DA omformeren, slik at den oppfattet at signalet inn endret verdi, selv om nivået var stasjonært. Vi så en klar forbedring når vi koblet til filteret. Støyen ble fjernet, og inngangssignalet ble uforandret når vi hadde stasjonært nivå i tanken. Systemet er fortsatt plaget med støy når spolene til utløpsventilene slår inn. Vi får da en «peak» som tolkes som verdien 250 i AD omformeren. Side 15 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.4 Regulatoralgoritmer (Skrevet av ØE) Vi velger å bruke bakoverdifferans for numerisk integrasjon. 𝑠= 1 − 𝑍 −1 ℎ Det skal være mulig å kjøre hovedregulatoren i både direkte og revers Vi har følgende kombinasjoner for regulatorene: Serieregulering: P-Regulator med nominelt pådrag PI-Regulator (uten nom. Pådrag) Foroverkobling: P-regulator med P-regulator foroverkobling PI-regulator med P-regulator foroverkobling P-regulator med D-regulator foroverkobling med nom. pådrag PI-regulator med D-regulator foroverkobling P-regulator med PD-regulator foroverkobling PI-regulator med PD-regulator foroverkobling Regulator parametere Grenseverdier for Kp, Ti og samplingstid h 𝐾𝑝 = 0.1 𝑡𝑖𝑙 100 𝑇𝑖 = 0.1 𝑡𝑖𝑙 100 𝑠𝑒𝑘 ℎ𝑠𝑎𝑚𝑝𝑙𝑖𝑛𝑔 = 0.1 𝑠𝑒𝑘 Ved heltallsaritmetikk multipliseres disse verdiene opp, slik at vi får kun heltall: 𝐾𝑝10 = 𝐾𝑝 ∗ 10 = 1 𝑡𝑖𝑙 1000 𝑇𝑖10 = 𝑇𝑖 ∗ 10 = 1 𝑡𝑖𝑙 1000 𝑠𝑒𝑘 ℎ = ℎ𝑠𝑎𝑚𝑝𝑙𝑖𝑛𝑔 ∗ 10 = 1 𝑠𝑒𝑘 Vi vil få det samme for foroverkoblingsregulatorens parametere, 𝐾𝑝𝑓𝑓 , 𝑇𝑑𝑓𝑓 , 𝐾𝑝𝑓𝑓10 , 𝑇𝑑𝑓𝑓10. 𝑇𝑑𝑓𝑓 = 0.1 𝑡𝑖𝑙 100 𝑠𝑒𝑘 𝑇𝑑𝑓𝑓10 = 𝑇𝑑𝑓𝑓 ∗ 10 = 1 𝑡𝑖𝑙 1000 𝑠𝑒𝑘 Side 16 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Avvik Det dynamiske avviket regnes ut på følgende måte Reversert: 𝑒 =𝑟−𝑦 konstant r: pådraget økes når y reduseres Direkte: 𝑒 =𝑦−𝑟 konstant r: pådraget økes når y økes Hvor r = referansen og y = måltverdi Inn- og utgangsverdier på AD/DA omformer 4-20 mA gjøres om til 0-250 i digitale verdier for AD. 0-250 i digitale verdier gjøres om til 4-20 mA i DA. Figur 12 Karakteristikk AD/DA omformer Serieregulator (Hovedregulator) P-regulator med nominelt pådrag Desimaltallalgoritme: 𝑢(𝑘) = 𝐾𝑝 ∗ 𝑒(𝑘) + 𝑢0 Heltallsalgoritme: 𝑢= 𝐾𝑝10 ∗ 𝑒(𝑘) + 𝑢0 10 PI-regulator Desimaltallalgoritme: 𝑢(𝑘) = 𝑢(𝑘 − 1) + 𝐾𝑝 ∗ ((1 + ℎ ) ∗ 𝑒(𝑘) − 𝑒(𝑘 − 1)) 𝑇𝑖 Heltallsalgoritme: 𝐻𝑗𝑒𝑙𝑝𝑒𝑣𝑎𝑟𝑖𝑎𝑏𝑒𝑙: 𝑋 = 𝑢(𝑘) = 𝑢(𝑘 − 1) + 𝑇𝑖10 ℎ (𝐾𝑝10 ∗ (𝑒(𝑘) − 𝑒(𝑘 − 1)) + 𝐾𝑝10 ∗ 𝑒(𝑘) ) 𝑋 10 Side 17 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Foroverkobling P-regulator Desimalalgoritme: 𝑢𝑃𝑓𝑓 (𝑘) = 𝐾𝑝𝑓𝑓 ∗ (𝑣(𝑘) − 𝑣(𝑘 − 1)) Heltallsalgoritme: 𝑢𝑃𝑓𝑓 (𝑘) = 𝐾𝑝𝑓𝑓10 ∗ (𝑣(𝑘) − 𝑣(𝑘 − 1)) 10 Figur 13 Prinsipp P-reg foroverkobling D-regulator Heltallalgoritme: 𝑢𝐷𝑓𝑓 (𝑘) = 𝑇𝑑𝑓𝑓10 ∗ 𝑢𝐷𝑓𝑓 (𝑘 − 1) 𝐾𝑝𝑓𝑓10 ∗ 𝑇𝑑𝑓𝑓10 (𝑣(𝑘) − 𝑣(𝑘 − 1)) + 𝑇𝑑𝑓𝑓 10 ∗ 𝑁 10 ∗ 10 ∗ (ℎ + 𝑁 ) 𝐾𝑝𝑓𝑓 settes til 1 ved ren D Figur 14 Prinsipp D-reg foroverkobling Side 18 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank PD-regulator 𝑢𝑃𝐷 (𝑘) = 𝑢𝐷 (𝑘) + 𝑢𝑃 (𝑘) Kun 𝑢𝑃 (𝑘) grensetestes i forbindelse med wind-up kontrollen. Figur 15 Prinsipp PD-reg foroverkobling Side 19 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.5 PLS programmering (EB) Slave-PLSen er den enheten hvor all regulering foregår. Den mottar datainput fra en maste-PLS virker som et bindeledd mellom slaven, InTouch og operatørpanelet. Videre vil vi først forklare noen grunnleggende instruksjoner i programmeringen for å enkelt kunne forstå hva som skjer. Deretter viser vi hva master gjør og deretter slave-PLSen. Detaljert beskrivelse av programkoden inne i funksjonsblokkene er gitt etter en generell beskrivelse av blokka. MOV-blokka Figur 16 MOV blokk MOV-blokka brukes til å kopiere data fra en plass til en annen. Den kan for eksempel kopiere data fra et dataregister over til et sett med minneceller. Da skrives dataregisteret på s-inngangen til blokka. På utgangen d kan man for eksempel skrive «K4M100». Da legges de 16-bits dataene fra dataregisteret over i 16 minneceller fra og med M100-M115. K4 betyr 4 kvartiler. I tilfellet i figur # kopierer den verdien 250 over i et dataregister som er kalt «Pådrag_u». TO- og FROM-blokkene Figur 17 TO blokk TO-blokka brukes for å skrive data til et bufferminne på Profibus. «s» angir hvilke data som skal sendes, n1 forteller hvilket slotnummer enheten som skal motta dataene har, n2 forteller hvilket bufferminne (BFM#) dataene skal sendes på og n3 forteller hvor mange 16-bits ord som skal sendes. Figur 18 FROM blokk FROM-blokka brukes til å lese data fra et bufferminne på Profibus. n1 angir slotnummeret for enheten dataene skal leses fra, n2 angir BFM# og n3 forteller hvor mange 16-bits ord som skal leses. Utgangen d angir hvor dataene skal leses til, for eksempel et dataregister eller et sett minneceller. Side 20 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank LD – sammenligningsblokker LD-blokkene er et sett med blokker som sammenligner to verdier. Om påstanden til blokka er sann, vil de etterfølgende instruksjonene bli utført. Denne funksjonen bruker vi for å grensesjekke verdier så de holder seg innenfor tillatte grenser. F.eks. kan ikke pådraget ut på DA-omformeren overskride 250 eller være mindre enn 0. Da må pådraget grensesjekkes etter utregning slik at det holder seg innenfor 0 og 250. Figur 19 LD blokk I figur # sjekkes «Pådrag_u» om verdien er over 250. Hvis den er det, kopieres verdien 250 til pådraget, slik at det ikke blir større. Dette er også en del av anti-windup-funksjonen til regulatoren, slik at integratoren ikke fortsetter å integrere opp når pådraget når sine grenser. PLS og PLF Mye av aksjonene og utregningene skal skje på et bestemt tidspunkt, og ikke kontinuerlig. Dette gjelder set/reset av minneceller som styrer aksjoner, utregning av pådrag fra regulatoren, oppdatering av gamle verdier etc. PLS-blokka går høy i et scan på positiv flanke når noe trigger den. PLF-blokka går høy et scan på negativ flanke. En kan se for seg en knapp som trykkes på. PLS-blokka går høy et scan når knappen trykkes inn (den forblir ikke høy selv om knappen holdes inne), og den PLF-blokka går høy et scan når knappen slippes. Figur 20 PLS / PLF blokk Det er også mulig å sette at en overgang skal trigge på positiv eller negativ flanke, at etterfølgende aksjoner bare trigges et scan på den respektive flanken. Pilen, vist i figur 21, indikerer om den trigger på positiv flanke (pil opp) eller negativ flanke (pil ned). Figur 21 Kontakt positiv flanke Side 21 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.5.1 Master-PLS Initiering og backup Først i programmet i master ligger en del som resetter alle statuser ved oppstart og henter tilstanden for aksjoner fra batterimatede minneceller. Oppgaven sier at regulering av tanken skal skje direkte etter strøminnkopling ved strømbrudd. Det medfører at vi må ta vare på regulatorparametere og aksjoner i batterimatede dataregistre og minneceller. Dataregistrene som er batterimatede er av typen R#, og minnecellene av typen L#. Disse beholder sine verdier selv om strømmen er borte, via et batteri i strømforsyningsenheten til master. Figur 22 PLS initiering status Statuser I master har vi satt av et sett med minneceller til indikering av statuser fra slave-PLSen. Master mottar et dataregister, D130, hvor verdiene kopieres over i minneceller for å lese av hvert enkelt bit. K4L16 betyr 4 kvartetter (4x4 bit) fra minnecelle L16 tom. L31. Ved oppstart/strøminnkopling nullstilles alle statuser med spesialminnecelle SM402, som kun er høy første scan etter oppstart. I figur 23 er programbiten for statushåndtering vist. Figur 23 PLS Flytte fra data til enkelte bit Status for kommunikasjon med Profibus er programmert på samme måte som i miniprosjektet. Side 22 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Aksjoner Aksjoner som skal styres settes via batterimatede minneceller samles i et dataregister og sendes ut på Profibus til slave. Dette er aksjoner som «start/stopp pumpe», «åpne en ventil» etc., hvor vi bruker bitverdier til å sette/resette utganger på slaven. Dette er vist i figur 24. Figur 24 PLS enkelt Bit til Data Sende regulatorparametere Det er master som sender ned alle parametere satt i InTouch eller operatørpanel ned til slave, og som mottar alle statuser sendt opp fra slaven og videreformidler disse til Intouch og operatørpanel. Da de batterimatede dataregistrene ikke automatisk sendes ut på ProfiBus, bruker vi en MOV-blokk for å kontinuerlig kopiere parameterne over i dataregistre som sendes ut på ProfiBus. Vi har laget en funksjonsblokk som flytter alle parameterne over i dataregister som går ut på ProfiBusen. Funksjonsblokka har ingen innganger eller utganger, da alle dataregistre fra D100-D115 automatisk sendes ut på ProfiBus. Hensikten med å samle koden i en blokk er å gjøre programmet kompakt og oversiktlig. Figur 25 PLS Flytte til batterimatede minneceller Figur 26 PLS Flytte parametre til Profibus Side 23 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Starte og stoppe pumpa Pumpa skal startes både fra Intouch og operatørpanel. Vi har brukt et batterimatet dataregister som vi har kalt «PUMPE_data» som enten har verdien 0 eller 1 ettersom pumpa skal starte (1) elle stoppe (0). Ved strømbrudd beholder dataregisteret sin verdi slik at pumpa beholder samme status etter som før strømbruddet. Figur 27 PLS Start/Stopp pumpe Å få pumpa til å starte etter strømbrudd var et problem vi jobbet en stund, da de batterimatede minnecellene vi satte ble resatt etter strøminnkopling av ukjent grunn. Derfor endte vi opp med å la verdien på et dataregister bestemme om minnecellene skulle være satt eller ikke. Pumpa stoppes automatisk ved kritisk lavt eller høyt nivå (over 90% eller under 10%). Denne programbiten er presentert i alarmdelen for slaven. Auto/manuell regulering Det er gitt i oppgaven at regulatoren, i tillegg til automatisk regulering, også skal kunne styres manuelt. Dette gjøres ved å sette den i manuell modus hvor pådraget blir gitt av operatør som «manuelt pådrag». Denne funksjonen må også ha en set/reset-funksjon av samme grunn som pumpa. Vi har programmert regulatoren til å være i auto så lenge «AUTO_MAN_IN» er resatt (lav). InTouch og operatørpanelet kommuniserer med «Aktiver_manuell» og «Stopp_manuell», se figur 28. Figur 28 PLS Auto/Manuell Side 24 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Regulatormoduser Regulatoren skal kunne fungere både som P- og PI-regulator, og begge enten uten eller med P-, D-, eller PD-foroverkobling. I Intouch har vi brukt «radio buttons», som ikke kunne gi diskrete, men bare analoge verdier, 1, 2, 3 osv. Dermed har vi måtte lage en programdel som legger verdiene fra knappene i Intouch over i dataregistre, for så å sammenligne disse med bestemte verdier for å sette eller resette bitverdiene som angir regulatormodus. Valg av regulatormodus settes bare i Intouch, ikke i operatørpanel. Valg av P- og PI-regulator er vist i figur 29. Figur 29 Velge P/PI regulator «Radio»-Knappene i Intouch har verdiene 1 og 2 når det er to knapper som står sammen, som her styrer P- og PI-modus. Det samme er tilfellet med aktivering/deaktivering av foroverkoblingen, som vist i figur 30, mens for valg av type foroverkobling gir knappene verdiene 1, 2 eller 3, da det er tre valg. Dette har resultert i at vi bruker verdien i gitte dataregistre for å bestemme hvilken regulatormodus som skal være satt. Programdelen for valg av foroverkoblingsmodus er vist i figur 30. Her er det programmert slik at hvis D- og PD-foroverkobling er resatt, er P-foroverkoblingsmodus satt. Hvordan dette settes i slaven er vist under avsnitt 2.5.3 Foroverkoblinsregulator. Figur 30 PLS valg av foroverkobling Side 25 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Styring magnetventiler Riggen har tre magnetventiler som vi kan styre via Intouch eller operatørpanelet. Vi har laget programmet slik at vi kan sette utløp til 0% (alle lukket), 33% (en ventil åpen), 66% (to ventiler åpne) eller 100% (alle ventiler åpne), se figur #. Dette settes både i Intouch og i operatørpanelet. For at statusen for ventilene skulle holde seg etter strømbrudd, måtte vi også bruke dataregistre for indikasjon på hvor mange ventiler som skulle åpnes. Hvis vi brukte direkte set/reset-funksjon uten dataregistre, beholdt de bare statusen sin en kort stund (ca. et scan) før de ble resatt. Dette problemet var gjengående for alle aksjoner som skulle starte etter strømstans. Under, i figur 31 vises programkoden som lukker alle ventilene, og her vises også koden som åpner to ventiler. Den samme koden gjelder for alle utløp, null, en, to og tre ventiler åpne. Verdien i «VENTIL_data» gjenspeiler antall åpne ventiler. Figur 31 PLS Valg av utløp / Magnetventiler Side 26 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank En egen programdel gir status på hvor mange ventiler som er åpne til Intouch og operatørpanelet. Dette er vist i figur 32 under. Figur 32 PLS Status magnetventiler 2.5.2 Slave-PLS For å holde oversikt over hva som skjer i de forskjellige programdelene og for lett å kunne feilsøke, har vi delt inn programmet i flere deler med hver sin oppgave. Dette er også viktig for å styre rekkefølgen oppgaver utføres i. F.eks. må avleste verdier som vi tar vare på for videre beregninger, oppdateres til slutt i programsekvensen, etter at pådraget ut fra regulatoren er sendt ut på DAomformeren. For å styre denne rekkefølgen legges programdelene i «Task 1», «Task 2» osv etter hvilken rekkefølge de skal utføres i. Dette er vist i figur 33. Figur 33 PLS Slave struktur I Task 1 ligger programdelene for skriving og henting av data til og fra master, styring av pumpe og ventiler, regulatorene og alarmhåndteringen. I Task 2 ligger programdelen som skriver og leser til og fra AD/DA-omformeren. Det er viktig at denne oppgaven ikke gjøres samtidig som utregningene fra regulatoren, men etter pådraget er regnet ut. I Task 3 oppdateres «forrige verdier». Dette må skje til slutt etter at pådraget er sendt ut på DA og dataene er lest av. Side 27 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Til/Fra Profibus «Til_Fra_Bus» inneholder programkoden som sender og henter all data til og fra Profibus/masterPLS. Vi har laget funksjonsblokker som bruker TO- og FROM-blokker til å sende og hente data. Når vi samler alle disse blokkene i egne funksjonsblokker blir programmet mer oversiktlig og lettere å lese under monitorering når vi kjører reguleringen. Da kan vi enkelt lese av hvilke verdier som sendes og hentes til og fra master. Figur 34 PLS Slave til/fra Master De ledige utgangene fra funksjonsblokkene er utganger fra bufferminner som ikke brukes. Vi har mulighet til å hente og sende data fra og til totalt 15 bufferminner fra ProfiBus. Ved å lage en funksjonsblokk som leser/skriver fra/til alle og tildeler hvert bufferminne et dataregister, kan vi enkelt delegere hvilke verdier som skal hvor i slaven. Da har vi også oversikt over hva som er i bruk og hva som er ledig av bufferminner og dataregistre. Programdelen i funksjonsblokkene i figur # og # er vist i vedlegg #. Side 28 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Statuser fra slave I slaven har vi satt av 16 minneceller for statusindikasjoner som samles i et dataregister og sendes opp til master. Statusene brukes som bekreftelser på at de aksjoner og innstillinger vi har satt fra pc eller operatørpanel er utført/satt. Statuser som sendes opp er status for: Pumpe (Start eller stopp) Magnetventiler (åpen eller lukket) Alarmer (avvik fra referanse og kritisk høyt eller lavt nivå) MOV-blokka kopierer 16 minneceller fra M500-M515 over i dataregister D130 som sendes ut på Profibus opp til master. K4 bety fire kvartetter som er lik 16 minneceller. Figur 35 PLS Status bit sendes via Dataregister Aksjoner fra master Slaven mottar også et sett med minneceller «pakket» inn i et dataregister fra master på samme måte som statuser fra slaven blir sendt. Dataregisteret kopieres over til et sett med minneceller med ei MOV-blokk. Hvert enkelt bit setter hver sin funksjon, som er kommentert i figur 36. Figur 36 PLS Aksjoner mottatt fra Master Styring av pumpe og magnetventiler, slave Pumpa på riggen startes ved å sette utgang Y4 på slaven høy. Det er et krav i oppgaven at den skal stoppe om nivået når kritisk lavt (under 10%) eller høyt (over 90%) nivå, og tilstanden varer i over fem sekunder. Om enten «LowLevelAlarm» eller «HighLevelAlarm» aktiveres, stopper pumpa. Pumpa må også kunne overstyre i manuell modus, slik at man kan komme seg opp fra et kritisk lavt nivå, eller ved en oppstartsfase av tanken. Magnetventilene på riggen styres av utgangene Y10, Y11 og Y12. Status på utgangene sendes opp til master. Side 29 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur 37 PLS Styring utganger Slave Avlesning av nivå, utstrømning og skriving av pådrag I miniprosjektet laget vi en funksjonsblokk som skrev pådrag ut på DA-omformeren og leste av nivå og utstrømning (flow) fra AD-omformeren. Denne funksjonsblokka har vi brukt videre i entankprosjektet, men vi gjentar ikke innholdet inne i funksjonsblokka. Figur 38 PLS Skriv/les AD/DA slave Side 30 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.5.3 Serieregulator P-regulator Funksjonsblokka for P-regulatoren er vist over i figur #. Inn i blokka sendes Kp-verdien (Kp10), nominelt pådrag (NomineltPadrag_u0), referanse (Referanse_r), avvik, aktivering av P-regulator (RegModus) og indikasjon for manuell eller automatisk modus (ManAuto). Kp- og Ti-verdiene er multiplisert med 10 før de blir sendt til slaven pga. heltallalgoritmen. Dette gjelder også for PIregulatoren og foroverkoblingen (Kpff og Tdff). Ut fra blokka sendes pådraget, som videre legges sammen med et eventuelt pådrag fra foroverkoblingen og det grensesjekkes og sendes ut på DAomformeren. Figur 39 PLS P-regulator Funksjonsblokken inneholder heltallsalgoritmen for P-regulator hentet fra avsnitt 2.4: 𝑢= 𝐾𝑝10 ∗𝑒(𝑘) 10 + 𝑢0 . Når P-foroverkobling er valg skal ikke det nominelle pådraget skrives til pådraget fra P-regulatoren. Dette er det satt opp en sperre for i programmet. Figur 40 PLS P-regulator algoritme - mellomregning Side 31 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank «Mellomverdi» er pådraget fra P-regulatoren før det er grensesjekket. Pådraget skal skrives som en 8-bits verdi fra 0-250. Hvis utregningen blir negativ, settes pådraget til null, og hvis det blir over 250, settes det til 250 før det kopieres over i den endelige variabelen for pådraget, «P_Pådrag», som går ut av funksjonsblokka. Grensesjekken er vist i figur 41. Det er lagt inn sperrer for skriving til pådraget hvis PI-regulator eller manuell modus er aktivert. Figur 41 PLS Grensesjekk og pådrag Under, i figur 42, er programbiten som kopierer 0 over til pådraget fra P-regulatoren om PIregulatoren er aktivert. Når «Regmod» er høy, betyr det at PI-regulator er aktivert. Figur 42 PLS Av/På P-regulator Side 32 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank PI-regulator Figur 43 PLS PI-regulator PI-regulatoren er også programmert som en egen funksjonsblokk. Parameterne som sendes inn i blokka er referanse (Referanse_r), avvik, Kp (Kp10), integrasjonstid Ti (Ti10), forrige pådrag (Um1), forrige avvik (em1), aktivering av PI-regulatoren (RegModus), indikasjon på manuell eller automatisk modus (ManAuto) og samplingstiden (h_sampling). Ut fra blokka sendes pådraget, «Pådrag_PI», som videre legges sammen med et eventuelt pådrag fra foroverkoblingen og deretter grensesjekkes før det sendes ut på DA-omformeren. Algoritmen som er brukt i regulatoren er hentet fra boka «Sanntidsdatateknikk. Per Hveem, 2014». Først innfører vi hjelpevariabelen 𝑇𝑖ℎ = 𝑇𝑖 ℎ Del 1 av mellomregningene vist under: 𝛥𝑈𝑖𝑘 = 𝐾𝑝10 ∗𝑒𝑘 +𝛥𝐼𝑅𝑒𝑠𝑡𝑘−1 𝑇𝑖ℎ∗10 Figur 44 PLS PI mellomregning 1 Del 2 av mellomregningene vist under: Δ𝑈𝑖𝑟𝑒𝑠𝑡𝑘 = (𝐾𝑝10 ∗ 𝑒𝑘 + Δ𝑖𝑅𝑒𝑠𝑡𝑘−1 )%(𝑇𝑖ℎ ∗ 10) Uttrykket er det samme som i del 1, med en modulofunksjon, %, er brukt for å tar vare på resten av heltallsdivisjonen som senere legges til. Den er representert av MOD_E-blokka. Figur 45 PLS PI mellomregning 2 Side 33 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Til slutt regnes det endelige pådraget ut, som så grensesjekkes før det sendes ut av funksjonsblokka. 𝑈𝑘 = 𝑈𝑘−1 + Δ𝑈𝑖𝑘 + 𝐾𝑝10 ∗ (𝑒𝑘 − 𝑒𝑘−1 ) 10 Figur 46 PLS PI grensesjekk og pådrag Resten av hjelpevariabelen Δ𝑖𝑅𝑒𝑠𝑡𝑘 oppdateres på negativ flanke, når samplingstimeren går lav. Det gis bare bidrag fra «PI_Pådrag» om «Regmodus», altså PI-regulatoren, er aktivert og den ikke står i manuell modus. Pådraget skrives på positiv flanke når samplingstimeren går høy. Figur 47 PLS PI-reg pådrag Side 34 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.5.4 Foroverkobling Foroverkoblingen er et tillegg til hovedregulatoren og gir ekstra pådrag på bakgrunn av utstrømningen. Flowmåleren måler utstrømningen, som reagerer raskere enn målingen av nivået i tanken. Ved å gi et pådrag på bakgrunn av utstrømningen kan man raskere regulere inn nivået ved åpningen av ventilene. Foroverkoblingen skal fungere enten som P-, D-, eller PD-foroverkobling som skal styres fra PC. Vi har laget en funksjonsblokk som inneholder mulighet for alle typene foroverkobling. Figur 48 PLS Foroverkobling P-foroverkobling Algoritmen i sin helhet er vist i avsnitt 2.4. PLS-programmet for heltallsalgoritmen som regner ut pådraget er vist i figur #: 𝑢𝑃𝑓𝑓 (𝑘) = 𝐾𝑝𝑓𝑓10 ∗ (𝑣(𝑘) − 𝑣(𝑘 − 1)) 10 Pådraget skal regnes ut enten når P-foroverkobling eller PD-foroverkobling er aktivert. Differansen mellom nåværende og forrige utstrømning multipliseres med en K-forsterkning og divideres til slutt på 10. Jo større differanse det er mellom dem i nåværende utstrømnings favør, jo større blir pådraget. Figur 49 PLS Foroverkobling P-Reg pådrag Pådraget fra P-foroverkoblingen grensesjekkes før det legges til pådraget fra serieregulatoren og sendes ut på DA. Side 35 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank D-foroverkobling Foroverkoblingen skal også ha en ren D-foroverkobling. Derivatordelen registrerer hvor hurtig endringer skjer, i vårt tilfelle hvor hurtig utstrømningen endres. Den gir så pådrag etter hvor hurtig endringene skjer. Når ren D-foroverkobling er aktivert settes 𝐾𝑝𝑓𝑓 = 1 → 𝐾𝑝𝑓𝑓10 = 10. Dette skjer utenom funksjonsblokka, under POUen «Parametere». Figur 50 PLS Foroverkobling D-Reg endring av Kp til 1 Heltallsalgoritme for D-foroverkobling: 𝑢𝐷𝑓𝑓 (𝑘) = 𝑇𝑑𝑓𝑓10 ∗ 𝑢𝐷𝑓𝑓 (𝑘 − 1) 𝐾𝑝𝑓𝑓10 ∗ 𝑇𝑑𝑓𝑓10 (𝑣(𝑘) − 𝑣(𝑘 − 1)) + 𝑇𝑑𝑓𝑓 10 ∗ 𝑁 10 ∗ 10 ∗ (ℎ + ) 𝑁 Figur 51 PLS Foroverkobling D-Reg De tre øverste blokkene, i figur 51 over, representerer den første brøken i uttrykket. Den nedre halvdel, bestående av sju blokker representerer den andre brøken. Disse brøkene adderes til slutt. Ddelen av foroverkoblingen skal være utenfor anti-windup (grensesjekk), så det sendes rett ut av funksjonsblokka og adderes til pådraget fra serieregulatoren. Figur 52 PLS Foroverkobling pådrag D-del Side 36 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank PD-foroverkobling PD-foroverkoblingen summerer pådragene fra P- og D-delen. P-delen grensesjekkes, og deretter legges bidraget fra D-delen til. Etter de er summert sendes de ut av funksjonsblokka. Figur 53 PLS Foroverkobling PD-Reg Pådrag ut på DA-omformer Når pådraget fra serieregulatoren og foroverkoblingen er regnet ut, legges de sammen etter hvilken regulatortype som er valgt i pc eller operatørpanel. «Pådrag_u» grensesjekkes så, før det kopieres over i «Pådrag_ut», som skrives til DA-omformeren. Figur 54 PLS Pådrag til DA-omformer Side 37 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Manuelt pådrag Når manuelt pådrag er valgt, er skriving fra regulatorpådraget deaktivert. Figur 55 PLS Manuelt pådrag Rykkfrie overganger Rykkfrie overganger (Bumpless Transfer) vil si at endring av regulatortype eller fra manuell til auto og motsatt ikke skaper rykk/hopp i prosessen eller pådraget. Oppgaven vår setter rykkfrie overganger som et krav. Vi har sørget for at overgangen mellom P og PI går rykkfritt ved at begge pådragene regnes ut kontinuerlig, og at vi bestemmer hvem som skal skrive til det endelige pådraget ut på DAomformeren. Pådraget mellom manuell og auto har vi satt slik at om manuell settes, blir pådraget som er skrevet inn i Intouch eller operatørpanel, satt. Det forutsetter at manuelt pådrag er satt lik det automatiske pådraget for at pådraget skal ligge urørt etter overgang. Figur 56 PLS Rykkfrie overganger Sampling Vi har laget en timer som bestemmer når verdier skal skrives, leses og oppdateres under reguleringen. Samplingstiden til regulatoren kan settes i Intouch, og bestemmer hvor ofte regulatoren skal avlese nivå og utstrømning og skrive pådrag. Standard samplingstid for regulatoren vår er 0.1 sekund. Timeren er laget slik at den resettes seg selv. Figur 57 PLS Samplingstid Side 38 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Revers og direkte modus Oppgaven er det gitt at det skal være mulig å velge revers eller direkte modus for regulatoren. Forskjellen er måten avviket regnes ut på. Det var ikke videre gitt at regulatorens skulle fungere i begge moduser, så regulatoren er bare skikkelig fungerende i reversert modus, hvor avviket er lik referansen minus nivået. Ved direkte modus er avviket lik nivået minus referansen. Figur 58 PLS Revers/Direkte regulering 2.5.5 Alarmhåndtering (Skrevet av MB) Programmeringen av alarmer på nivå og referanse ble gjort i slaven ettersom alle verdiene vi trenger ligger der, samt utgangen til alarmlampen er i slaven. Alarm for kommunikasjon ble programmert i master. Statusen for ProfiBus-kommunikasjonen ligger i bufferminne nr. 21. Dersom kommunikasjonen mellom master og slave ikke fungerer går bit 12 i BFM#21 høy. Vi henter ut denne biten med en FROM-blokk. Dersom statusen er lik 1 settes ett flagg som indikerer at Profibus-kommunikasjonen er nede. Figur 59 PLS Status Profibus Side 39 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Vi laget en egen funksjonsblokk for alarmhåndteringen i slaven slik at alt som går inn og ut av programbiten blir oversiktlig framstilt. Vi trengte kun nivået i tanken og referansen på inngangene til funksjonsblokken for å regne ut alarmtilstandene. I tillegg måtte kvitteringen av alarmer fra brukergrensesnittene inn på blokka. Ut fra blokka kommer alle alarmtilstandene pluss utgangen til alarmlampen. Figur 60 PLS funksjonsblokk Alarmer Hvis nivået avviker mer enn 25% fra referansen skal det gå vanlig alarm. Det ble delvis utført på måten vist i bildet under. I neste bilde regner vi ut om nivået er 25% under referansen. Referansen blir trukket fra verdien 62 som er 25% av det totale nivået i tanken uttrykt i bit verdi. Dette blir gjort med SUB-blokken vist i bildet nedenfor. Så blir verdien fra subtraksjonen sendt videre til sammenligningsblokken LD<. Her blir verdien sammenlignet med nivået i tanken. Hvis nivået er mindre enn verdien sendt fra SUB-blokka, settes et flagg for at avviket mellom nivå og referanse er for stort. En lik programkode ble skrevet for avvik over referansen. SUB-blokka ble da byttet ut med en ADD-blokk med de samme verdiene. Verdien blir sendt videre til en blokk som sammenligner om nivået er større enn denne verdien. Figur 61 PLS Alarm 25% under ref. Kritisk alarm skal aktiveres om nivået går over 90% av tanken eller under 10%. I bildet under regner vi ut om nivået er mindre enn verdien 25, som er 10% av det absolutte nivået i tanken. Når verdien i Nivå er mindre enn 25 settes ett flagg for kritisk lavt nivå i tanken. For å regne ut kritisk alarm når nivået er over 90% brukte vi en «større enn»-blokk som regner ut om nivået er større enn verdien 225 som er 90% av det absolutte nivået i tanken uttrykt i bitverdi. Når den kritiske alarmen går skal pumpa automatisk stoppes. Figur 62 PLS Alarm Kritisk lavt nivå Side 40 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Ett av kravene til alarmene var at en alarmtilstand som ikke varte lenger enn 5 sekunder ikke skulle utløse noen alarm. Det ble realisert på følgende måte, som også er vist i bildet under. Alarmflaggene som blir satt etter utregningene får sine egne «timere». Så lenge ett av flaggene er satt vil den respektive blokka OUT_T begynne å telle opp til verdien som er satt i inngangen «TValue». Verdien er oppgitt i tidels sekund. Når blokka har telt opp til 5 settes en individuell bit for hver blokk. Figur 63 PLS Alarmer tidsbegresning For blokka «TC1» heter den individuelle bit’en «TS1». Når denne blir satt høy 5 sekunder etter at alarmtilstanden ble satt, får vi varsel om alarmtilstanden. Varselet sendes på utgangen til funksjonsblokka ved at utgangen settes høy. Figur 64 PLS Alarmer Tidsforsinkelse Alarmen kan kun resettes dersom tanken går ut av alarmtilstand, som igjen setter TS1 lav, i tillegg til at det fysisk må kvitteres fra ett av brukergrensesnittene som er koblet til systemet. Figur 65 PLS Alarmer Kvittering I tillegg til at alarmer skal vises i brukergrensesnittene skal en lampe på selve riggen indikere om en alarm er kritisk, vanlig, eller kvittert. Ved vanlig alarm skal lampen blinke på og av med 0,5 sekunders intervaller. Ved kritisk alarm skal lampen blinke med 0,2 sekunders intervaller. Når en alarm er kvittert men det fortsatt er alarmtilstand skal lampen lyse konstant. Når det ikke lenger er alarmtilstand og den er kvittert slukkes lampen. Neste bilde viser hvordan vi realiserte den kritiske alarm frekvensen ved hjelp av en timer og en holdekrets. En timer sender ut en puls hvert 2. tidels sekund ved at timeren resetter seg selv ett scan etter at den er ferdig å telle. For hver puls på TS5 vil M1 bytte status mellom høy og lav. For vanlig alarm på 0,5 sekunds intervaller ble en identisk programkode laget med en endret «TValue» på 5. For vanlig alarm brukte vi minnecelle M0 i holdekretsen. Side 41 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur 66 PLS Alarmlampe blink Neste bilde viser programbiten for alarmlampen. Vi ser at når vi har vanlig alarm men ikke kritisk alarm, i tillegg til at vi ikke har fått noen kvittering fra operatøren, vil M0 gjøre at alarmlampen blinker med frekvens på 0,5 sekund på og 0,5 sekund av. Skulle en kritisk alarm bli utløst derimot, vil minnecelle M1 gjøre at lampen blinker med frekvens 0,2 sekund. Dersom vi har kvittert alarmen men fortsatt har alarmtilstand vil lampen lyse konstant. Figur 67 PLS Alarmlampe For å sørge for at alle alarmer må kvitteres blir kvitteringen satt og resatt. Kvitteringen blir satt av operatør på ett av brukergrensesnittene. Kvitteringen resettes hver gang en alarm går. På denne måten vil alle nye alarmer resette kvitteringen, som sørger for at operatøren fysisk må kvittere for alle alarmer som går. Figur 68 PLS Alarmer kvittering Side 42 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.6 HMI programmering 2.6.1 OPC-server og tagger (Skrevet av MB) OPC gjør kommunikasjonen mellom produkter fra forskjellige produsenter mulig. En OPC server ble derfor satt opp for å muliggjøre kommunikasjon mellom Mitsubishi master-PLS og brukergrensesnittet som ble laget i Wonderware Intouch. Det er viktig at PLS-programmet er overført til PLSen, og at GX Works er lukket før man setter opp OPC serveren første gang. Det første vi gjør etter vi har åpnet OPC serveren er å konfigurere den for vår master-PLS som er en Mitsubishi Q-E71. Vi velger merke og serie og skriver inn PLSen sin IPadresse. Nå vet OPC serveren hvilken adresse den skal kommunisere med på Ethernettet. I master-PLSen brukes bit- og ordadresser for å overføre informasjon til og fra både slaven og brukergrensesnittene. I OPC serveren definerer vi alle de brukte adressene som tagger. Vi spesifiserer også hva slags type adresse den skal prate med enten det er en bitadresse, for eksempel en minnecelle, eller en ordadresse, eller et dataregister. Nå vet serveren hvilke adresser den skal kommunisere med i selve PLSen. Taggene får samme verdi i OPC som i PLSen, og disse endres ettersom verdiene endres i PLS. Når vi er ferdig med å opprette alle taggene vi trenger startes OPC serveren. Den har nå forbindelse til PLSen og vi kan monitorere verdiene til alle adressene som vi har definert i serveren. Vi kan også monitorere statusen på forbindelsen mellom server og PLS. Så lenge serveren er oppe og går kan vi ikke endre de taggene vi allerede har opprettet, men vi kan opprette nye tagger og grupper. OPC serveren er nå oppe og går, og klar til bruk. Vinduet må ikke lukkes så lenge vi skal ha kommunikasjon mellom utstyret. Figur 69 OPC Tag liste I tillegg til en OPC server trenger vi en OPC klient som er forbindelse fra utstyret inn til serveren. Klienten som oversetter data inn fra/ut til PLSen er innebygd i OPC serveren. OPC klienten som forbinder OPC server og Intouch heter Wonderware OPC Link og følger med Intouch. Når man åpner OPC Link må man opprette en konfigurasjonsfil hvor de satte innstillingene lagres. Dette fordi Intouch skal kunne åpne OPC Link automatisk når man åpner prosjektet. Etter man har opprettet filen definerer man hva OPC serveren heter som Intouch skal ha forbindelse med. I vårt tilfelle Beijer.Electronics.OPC.Server. I tillegg definerer vi hva PLSen heter. Dette gjøres fordi man i Intouch gjerne styrer mange forskjellige PLSer. Vi har nå kommunikasjon mellom Intouch og server, og videre til master-PLS. Side 43 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Det første vi gjorde i Intouch var å opprette tagger for de adressene som brukes i PLSen. Taggene kan man si er et duplikat av adressene i PLSen, og vi kan aktivere disse for å styre adressene i PLSen. Vi vil at taggene som brukes skal referere til de taggene vi har opprettet i OPC serveren og må derfor bruke en modul i Intouch som heter OPC TagCreator. Etter at vi har koblet OPC serveren opp mot Intouch med OPC Link finner vi nå de samme taggene som vi opprettet i serveren igjen i TagCreator. Først velger vi den topicen vi ønsker fra OPC Link. Her finner vi igjen navnet på PLSen. Så lager vi et accessname for de taggene vi skal opprette. Vi laget bare ett accessname kalt ”master”, men om man har flere PLSer og massevis av tagger er det viktig å organisere taggene med flere accessnames. Så oppretter vi en og en tag som deretter dukker opp i en liste i et eget vindu nederst på skjermen. Vi importerer taggene til Intouch. Vi kan se at TagCreator har importert gruppene vi laget i OPC serveren og taggene som ligger i hver gruppe. Når vi markerer en tag kan åpnes muligheten for å trykke ”Create Tag”. Hvis vi trykker på denne vises den nye taggen i en liste. En liste over alle tagger finner vi under Tag Directory. Her kan man også redigere navnet på taggene, hva slags type tag det skal være og andre detaljer. Noe vi fikk mye bruk for i dette prosjektet var skaleringen av taggene. Dette betyr at verdien endres i Intouch før den sendes ut på OP serveren. Som vi ser på figur 70 skriver vi inn en verdi mellom 0 og 100 i Intouch. Verdien blir skalert til en verdi mellom 0 0g 250 og denne verdien sendes ut til OPC serveren Figur 70 OPC Tag eksempel skalering Side 44 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.6.2 Design InTouch (Skrevet av MB) Det første som ble laget i Intouch var det hele prosjektet egentlig handler om, nemlig tanken. Det var viktig at designet av tankgrafikken var enkel, lett gjenkjennelig, samtidig som den skal passe inn i et større system av grafikk med ventiler, pumpe og andre komponenter. Hovedpoenget med designet av tanken var allikevel å vise nivået i tanken på en måte som gjør at man umiddelbart får en ide om hvor høyt vannstanden ligger. Vanntanken ble designet meget enkelt som en gjennomsiktig tank med sorte kantlinjer, blått fyll og en anelse lysere bakgrunn enn resten av skjermbildet. På denne måten skjønner operatøren umiddelbart hva dette er, samtidig som framstillingen er enkel og grafikken blir «ren» og ryddig. Tanken ble plassert midt i hovedprosessbildet for videre å tydeliggjøre at dette er hva hele programmet handler om. Fyllet i tanken ble koblet til taggen for nivået i tanken i menyen Animation Links->Vertical Fill. Man kommer seg til denne menyen ved å dobbeltklikke på grafikken man vil endre animasjonsinnstillingene på. Her skriver man også inn hva verdien på taggen man bruker er ved maksimum fyll og minimum fyll. Figur 71 InTouch Nivå tag Neste steg ble å legge inn referansen som en stripe på tankgrafikken. Vi valgte å bruke en fargen gul for å framheve at dette ikke er nivået i tanken. Vi unngår å bruke fargen rød da denne fargen brukes utelukkende på alarmer for å unngå forvirring. Vi vil at denne referanse-stripen skal flyttes opp og ned etter hva vi setter referansen til. Vi går derfor inn i Animation Links->Vertical Location hvor vi kobler denne til referanse-taggen. Ved denne innstillingen kan vi få referanse-stripen til å bevege seg vertikalt etter hva verdien på referanse-taggen er. Måten vi gjorde dette på var ved å plassere stripen der hvor 100 % av referansen ville være, og brukte koordinatene på windows-pilen som ligger nede til høyre i InTouch vinduet til å finne koordinatene til det som ville være 0 % av referansen. Verdiene ble skrevet inn i Vertical Location-vinduet som vist i figur 72. Side 45 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur 72 InTouch Plassering av referanse Etter vi følte oss ferdig med tanken kom designet og animasjon av resten av riggen. Vi begynte med reguleringsventilen. Vi ville fortsette med det enkle, rene designet som vi begynte med på tanken og bestemte oss for å lage en ventil som viser pådraget som fyll. Dette gir operatøren raskt en anelse om hvor stort pådraget er i forhold til maksimum pådrag. Symbolet for reguleringsventilen ble bygget opp av flere andre symboler, noe som gjør at muligheten til å lage celler i Intouch kommer godt til nytte. Denne funksjonen gjør at vi kan sette flere symbol sammen til én celle, noe som gjør alt mye lettere i Intouch om man for eksempel skal flytte om på grafikk man har laget. Vi kan lett se for oss forskjellen på figur 73 under. Figur 73 InTouch Reguleringsventil Utløpsventilene på selve tankriggen er magnetventiler så de måtte designes på en annen måte enn reguleringsventilen. Ventilene er enten åpen eller lukket så fargen på fyllet ble satt til enten fullt eller tomt. Det var viktig å få fram statusen på pumpen på tankriggen på en tydelig måte. Vi valgte å fortsette trenden med grønt fyll når ting i systemet var åpent, eller på. Dette gjorde vi også for pumpa, men i tillegg ville vi endre posisjon på symbolet for å tydeliggjøre om pumpa var på eller av. Vi ville derfor vri symbolet 90 grader når pumpa var slått av. Figur 74 InTouch Pumpe Side 46 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Dette gjøres ganske enkelt i Animation Links->Orientation. Man skriver inn hva verdien på taggen er i posisjonene maksimum moturs og maksimum medurs, i tillegg til hvor mange grader man vil at symbolet skal vris og i hvilken retning i forhold til startposisjon. Figur 75 InTouch Animering pumpe Til slutt lagde vi rørene mellom de forskjellige komponentene på riggen. Vi valgte å animere rørene for å tydeliggjøre hvor det faktisk renner vann i rørsystemet. Fyllet endrer dermed farge i forhold til hvilke komponenter som er åpen eller lukket. På denne måten kan enhver person oppfatte hva som skjer i prosessbildet. Dette vil i tillegg få fram statusen på de forskjellige komponentene på en bedre måte enn om rørene hadde en konstant farge. Vi valgte selvfølgelig blå farge når det renner vann i rørene, mens vi valgte en mørkgrå tone når rørene er tomme. Grunnen til dette var for å skille rørene fra bakgrunnen og i tillegg få en kontrast til tanken i tom tilstand. Figur 76 InTouch Animering rør/ventil Vi valgte å legge til små vinduer med de forskjellige målte verdiene slik at man i tillegg til å se på de grafiske modellene, kan lese av en eksakt verdi for målingene. Figur 77 InTouch display av verdier Side 47 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Vi valgte å plassere prosessbildet i midten av fanen for å framheve at dette er midtpunktet i hele programmet. Til venstre begynte vi å plassere små ruter for de forskjellige parameterne på regulatoren og foroverkoblingen. Vi skiller mellom de forskjellige gruppene parametere ved å ramme de inn slik som vist på figur 78. Vi valgte radioknapper for å bytte mellom P og PI for regulatoren, og P, D og PD for foroverkoblingen. Disse ble valgt på grunn av det enkle designet, samt at man lett ser hva slags innstilling man står i. Figur 78 InTouch Regulator parametere Vi valgte å se på de tre utløpsventilene som en ventil når vi setter den fra Intouch. Vi laget derfor fire knapper som setter utløpet i prosent. Statusen på ventilene vises fortsatt som tre individuelle ventiler på prosessbildet. Vi valgte å gjøre det på denne måten for å gjøre presentasjonen så enkel som mulig. Da kan man enkelt hoppe fra én åpen ventil til tre åpne ventiler i ett klikk. Figur 79 InTouch Knapper utløpsventiler For innstillingene av pumpa og det manuelle pådraget valgte vi trykknapper som vist i figur 80. Grunnen til dette var at disse funksjonene skal kunne styres både fra Intouch og iX Panelet, noe som gjør at sett og reset-knapper er mest hensiktsmessig. Da kan begge funksjonene styres og endres samtidig av både Intouch og iX panelet. Det vil si at om pumpa startes i Intouch vises dette i iX panelet. Figur 80 InTouch Knapper Side 48 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Sanntidstrender er viktig for å vise utviklingen av en prosess den siste tiden. En egen sanntidsfane ble laget med to forskjellige trender. Den ene viser nivået med referansen og pådraget. Den andre viser pådrag og flow i forhold til hverandre. Begge viser trenden de siste 5 minuttene. I tillegg til dette ønsket vi å ha en trend i hovedfanen slik at man lett kan se hva som har skjedd i prosessen uten å bytte fane. Dette er hjelpsomt om man er borte fra arbeidsstasjonen i en stund eller opptatt med noe annet i et øyeblikk. I figur 81 vises innstillingene for et sanntidstrendvindu. Vi ser hvordan trenden blir med disse innstillingene også. Figur 81 InTouch Trender En historisk trend ble også laget slik at man kan søke seg tilbake flere timer eller dager for å se hvordan utviklingen av prosessen har vært over lengre tid. Dette kan være viktig om man ser at prosessen ikke er som den skal og man vil finne ut når dette skjedde, og hva som skjedde med de andre målte verdiene. 2.6.3 Design iX-panel (Skrevet av AA) For En-tank prosjektet ligger det klare føringer i oppgaveteksten for hvilke betjeningsmuligheter man skal ha på operatørpanelet. Dette operatørpanelet vil ikke ha brukerkontroll i form av innlogging eller andre sperrer. Dermed er det hensiktsmessig å ikke legge for mange innstillingsrettigheter på operatørpanelet. Derfor er det hos oss kun mulig å bytte mellom manuell og automatisk regulator. Man må også ha muligheten for å sette manuelt pådrag for regulatoren i manuell modus. Man kan også sette referanse fra operatørpanelet. Da operatørpanelet kun er ett alternativ til InTouch, må man lage skjermbildene slik at de ikke overstyrer og blokkerer for hverandre. Dette løser man med å velge variabler/tagger som har muligheten til både å lese og skrive. Disse «Read/Write» variablene velger man i starten av prosjektet under opprettelsen av tagger. Disse kommuniserer mot ett dataregister eller ett bit i master-PLSen. Her leser det stadig av verdien, slik at panelet vil vise riktig verdi dersom verdien endres fra ett annet sted enn operatørpanelet. Dette er viktig for å unngå forvirring. Side 49 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Dersom kommunikasjonen mellom operatørpanelet og controlleren faller ut, vil man få feilmeldingen «comm err station 1». Da fungerer selvfølgelig ikke panelet på noen som helst måte. Operatørpanelet har vi designet slik at det skal være enkelt å finne den informasjonen du er ute etter. Det skal ikke ha for mange momenter som tiltrekker seg din oppmerksomhet uten å være viktig. Derfor bruker vi grå og rolige farger. Ved grafisk illustrering bør man holde grafikken på ett fornuftig nivå. Her kan det fort bli for mye unødvendige illustrasjoner. Vi har valgt å kun animere tanken for å vise nivået. Alle de andre komponenter i systemet har vi laget lamper og brytere til. Dette fordi vi mener at alle rør og detaljerte tegninger over prosessen hører hjemme på InTouch, og kun vil virke forstyrrende på operatørpanelet. Operatøren kjenner likevel prosessen, slik at vi trenger ikke vise hvor pumpen henter vannet, og hvor den leverer det. Ventilene er også åpenbart i bunnen. Slike animasjoner og grafikk virker ofte mot sin hensikt. Det viser seg at analoge animerte verdier oppfattes raskere og enklere av mennesker enn digitale verdier. Dette er grunnen til at vi animerer tankverdien. Informasjonen på operatørpanelet bør deles inn i ulike grupper ut ifra hvor i prosessen de forskjellige komponentene befinner seg. Man kan også dele opp i forskjellige komponentkategorier og funksjoner i egne «rammer» på skjermen. Dette gjør at man enklere finner riktig komponent. Vi har total fem vinduer å velge mellom i operatørpanelet Oversiksvindu 2 x trendvinduer Vindu for Innstillinger Alarmvindu Navigasjonen mellom vinduene gjøres ved hjelp av knapper plassert i bunnen av skjermbildene. Vinduet som heter Oversikt er utgangsvinduet vårt som man kan navigere frem og tilbake fra. Figur 82 iX-panel Navigasjonsmuligheter Side 50 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Oversiktsbilde Det første vinduet om kommer opp er et oversiktsbilde hvor nødvendig informasjon vises og man kan bestemme utløpet man vil ha. Hver knapp og indikator er knyttet opp mot en tag som gjør kommunikasjonen mellom panelet og PLS mulig. Helt til høyre i panelet står det en indikator som leser nivået i tanken, det er også en rute som viser nivået i prosent. Figur 83 iX-panel Nivåindikator I bildet over vises hvordan indikatoren er knyttet til tag Niva_tank_1, mer om tagger er beskrevet senere i dette avsnittet. En utfordring med knappene i panelet var å få de til å gi pulser i stedet for å sette en verdi høy hele tiden. Eksempelvis hvis det ønskes 33% utløp, og det trykkes på knappen for 33% utløp vil den sette en minnecelle høy i PLS, og den vil derfor være «oppbrukt». Dette løste vi med en innebygd funksjon i iX Developer som lar oss sette og resette taggene ved forskjellige handlinger. Vi har valg at taggen settes når knappen blir trykt ned, og resatt når den slippes opp. Figur 84 iX-panel Actions til knapper Side 51 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Trend Vi ønsker å kunne vise historisk trend på operatørpanelet. Dette for at operatøren ute i felt ønsker å raskt kunne se om prosessen tilfredsstiller kravene som stilles. Dette trenger ikke å være avansert, med god oppløsning, kun en rask visning av hvordan ting utvikler seg. iXpanelet har muligheten til å vise flere grafer i samme vindu. Dette er greit når dataen som skal vises er innenfor omtrent samme område. Dersom det er store sprik i størrelsene på verdiene bør man bruke flere trendvinduer. Dette for at vi skal få en grei oppløsning på Yaksen. Hos oss ønsker vi å vise settpunkt, nivå og pådrag. Alle disse verdiene er i prosent, og kan da vises i ett vindu med grei skalering av Y-aksen. Figur 85 iX-panel Trendvindu Figur 86 iX-panel Trendkurver oppsett Man velger selv hvor lang tid man ønsker å vise i trendvinduet. Dersom prosessen er rask, bør man velge ett kort tids-intervall for å få ei grei oppløsning i grafen. Hvis prosessen har en form for svingninger kan det være lurt å ha ett mye lenger tidsvindu enn periodetiden på svingningene. Da spiller ikke oppløsningen på kurven noen stor rolle, men derimot muligheten til å se flere svingninger på samme bilde. Dette gjør at man kan danne seg ett bilde av om svingningene tiltar eller avtar i amplitude. Her bør man ha muligheten til å se mange svingninger for å se hvordan de forskjellige innsvingningsforløpene ser ut med forskjellige innstillinger. Når man arbeider med å trimme inn en prosess, kan det noen ganger være ønskelig å stanse loggingen for å se nøyere på en spesiell tidsperiode. Dette kan man enkelt gjøre i iX-panelet. Man oppretter bare en knapp som man tildeler de riktige egenskapene i forhold til trendviseren. Dersom man under logging opplever kommunikasjonsproblemer mellom operatørpanelet og controlleren den er tilkoblet vil man se på kurvene at tegningen stanser i den perioden kommunikasjonen er nede. Kurvetegning starter igjen automatisk når kommunikasjon på nytt er etablert. Vi har to trendvinduer i panelet, et med en oppløsning på ett minutt og et med oppløsning på en time. Side 52 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Innstillinger På en arbeidsplass med hvor de ansatte har varierende kunnskap om utstyret kan det lønne seg å sortere hvem som skal få gjøre kritiske forandringer på systemet. Det er kritisk at regulatorparameterne blir forandret av en som vet hva han driver med. Vinduet for innstillinger er derfor brukerbegrenset. Figur 87 iX-panel Skjermbilde Instillinger Her kan regulatorparameterene leses og skrives, og man kan bytte fra Auto til Manuell og fra P til PI. Lampene indikerer hva som er av og hva som er på ved grå og grønn farge. Dette er gjort ved å knytte de til statusminneceller. Byttet mellom P og PI gjøres ved at en minnecelle settes høy ved PIregulering og resettes ved P-regulering. Vi har valgt å ha med indikatoren for nivået i tanken her slik at man hele tiden har god oversikt over prosessen. Figur 88 iX-panel Indikatorfarger Side 53 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.6.4 Alarmhåndtering InTouch (Skrevet av MB) Det første vi måtte gjøre var å la Intouch få vite hvilke tagger som skal gi alarm. Dette gjøres i Tagname Dictionary. I figur 2.6.4.1 under kan man se dette vinduet. Hvis vi klikker på alarmer kan vi velge om det skal gå alarm når taggen går høy under Alarm state. Siden alle våre alarmer er diskrete er dette det eneste vi trenger å gjøre for at en tag skal gi alarm. I tillegg kan vi velge hvilken prioritet alarmen skal ha under Priority. Prioriteten på alarmene går fra 1-249 for kritisk prioritet, 250-499 for høy prioritet, 500-749 for liten prioritet og 750-999 for de som kun er til informasjon. I tillegg kan vi legge inn en kommentar som skal vises i alarmvinduet når en eventuell alarm går. Figur 89 InTouch Alarmtag Alarmhåndteringen i Intouch blir utført fra et eget vindu kalt «alarmer». Knappen for å komme til denne siden ligger på menylinjen øverst i programbildet. Her skal vi kunne lese alarmer som har gått, kvittere alarmer, og lese alarmer som er kvittert. Vi valgte å legge inn et vindu som lister alle alarmer som går. Dette vinduet ligger forhåndslaget i InTouch. Her får vi oppgitt massse info om alarmen blant annet tidspunkt for alarmen, hvilket prioritet alarmen har og operatøren som var innlogget ved alarmtidspunktet. Figur 90 InTouch Alarmvindu Side 54 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Vi trengte også en måte å kvittere alarmene på. Dette kan gjøres ved å høyreklikke på det forhåndslagde alarmvinduet og kvittere derfra, men vi ville ha en enklere måte å gjøre dette på. I tillegg til å kvittere alarmene i InTouch måtte vi også sende en kvittering til PLS for å kunne starte pumpe og slukke alarmlampe på riggen. Dette ble kombinert ved å lage en knapp som kvitterer alarmene både i Intouch og i PLSen. I menyen Animation Links->Touch Pushbuttons->Action kan vi skrive et skript som utfører flere aksjoner i Intouch ved forskjellige steg i utførelsen av selve trykket på knappen. I figur 91 ser vi hvordan vi kvitterer for alarmene i Intouch samtidig som vi setter taggen som kvitterer alarmer i PLSen høy når venstre museknapp trykkes ned. For å resette taggen som kvitterer i PLS velger vi at når venstre museknapp slippes skal kvitteringstaggen settes lav igjen. På denne måten sender vi kun en puls ned til PLS. Dette fordi kvitteringen i PLSen skjer på puls. Figur 91 InTouch Kvitterings script Det som nå gjensto var å finne en måte å alarmere operatøren på, på en enkel men effektiv måte. Vi ble enig om at hvis knappen som åpner alarmvinduet blinker rødt ved alarm ville dette være hensiktsmessig på flere måter. Først og fremst fordi knappen er ganske stor i seg selv så hvis det blinker rødt rundt den ville dette vises veldig godt i programvinduet. I tillegg viser det med en gang hvor operatøren skal klikke for å finne ut alle detaljer om hva det er som har skjedd. Dette ble gjennomført ved delvis å gjemme en rød rute bak alarmknappen som kun vises og blinker ved alarmtilstand. Figur 92 InTouch Alarmknapp animering Under Animation Links->Miscellaneous->Blink gjøres dette ganske lett ved å velge en tagg som skal bestemme når den røde ruten skal blinke. Vi krysser av for at den skal «Blink Invisible». Så går vi under Visibility og velger at når taggen som gjør at ruten blinker går lav, skal ruten ikke vises i det hele tatt. Dette er vist i figur 93. Side 55 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Figur 93 InTouch Oppsett blinking alarm For å gi operatøren en viss anelse om hvilken alarm det er som har gått laget vi tre lamper for de tre alarmkategoriene vi har på dette prosjektet. Vi laget en for kommunikasjonen mellom master- og slave-PLS, en for kritisk alarm som gjelder nivået i tanken, og en for vanlig alarm som gjelder for store avvik fra referansen. Figur 94 InTouch Alarm indikatorer Side 56 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.6.5 Alarmhåndtering iX-panel (Skrevet av AA) Ix Developer programmet har en egen alarmkontroller. I denne kontrolleren kan man legge til tagger som skal gi alarm på panelet. Man har muligheter til å lage alle betingelsene for alarm lokalt i operatørpanelet. Dette kan eksempelvis være: «Nivå>65». Dette vil gi en alarm når verdien for taggen «nivå» overstiger 65. Man kan også lage digitale alarmer ved å gi betingelsen >0. Normalt bør man holde opprettelsen av alarmer til PLSen. Dette på grunn av at alarmer bør opprettes på ett sted for å ha et godt system i alarmene. Figur 95 iX-panel Alarmvindu Det å få Ack’et alarmene på panelet og videre i PLS viste seg å bli et problem når vi brukte standardoppsettet i iX-developer. I standardoppsettet ligger det en Ack-knapp ved clearknappen i bildet over. Problemet var at vi ikke fikk resatt minnecellen vi heftet til knappen. Løsningen ble å lage «Ack all alarms»knappen som setter og resetter minnecellen ved trykk som nevnt tidligere. I alarmserveren lager man en tekst som vil bli den teksten som vises på skjermen i det alarmen trigges. Dette bør være kort, men beskrivende for hvilken tilstand som har oppstått. Dette for å raskt kunne få forståelse for hva som har skjedd. Figur 96 iX-panel Alarmserver Side 57 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Man bør gi en alarm for den første feilen som oppstår. Feil som oppstår som en følge av den første feilen bør ikke gi alarm, da de som regel er «følgefeil», og ikke relevant. Hvordan dette skal presenteres velger man blant mange alternativ i menyen. Dersom man har flere operatørpanel eller skjermsystemer bør man velge en metode som avstiller og resetter alarmene på alle steder samtidig. Dette gjøres ved å velge «Remote Acknowledge» i innstillingene. Dette vil være et bit som kommer fra controlleren, men kan settes hvor som helst blant operatørpanelene. Dersom man kun har ett operatørpanel trenger man ikke å bruke denne funksjonen, da alarmviseren har en innebygget knapp for resetting av alarmer. 2.6.6 Operatørnivåer og rettigheter (Skrevet av AA) Både i InTouch og på operatørpanelet har vi laget forskjellige nivåer av rettigheter. Her vil vi tildele forskjellige muligheter til de ulike nivåene av kompetanse brukerne sitter med. Det laveste nivået 1 vil ha muligheter til å lese av driftsstatus på deler av prosessen, samt noen alarmer. Denne brukeren vil ha sterk begrensede muligheter for å skrive inn ny data til prosessen. Nivå 2 vil være den typiske operatøren som kjenner prosessen godt, og som vet hva han/hun holder på med. Dette vil tillate endring av settpunkt, samt kvittering av alarmer. Dette vil være nok rettigheter til å kjøre prosessen i en normal driftssituasjon. Nivå 3 vil være «superbrukeren». Dette er personell som har dyptgående kompetanse, og har ofte vært deltagende i designet av anlegget. Disse kan endre på måten prosessen kjøres på. Dette vil være endring av regulatortype og regulatorparameter. Her vil man som regel være svært restriktiv i å tildele personell tilgang, da disse innstillingene ofte er ett resultat av erfaringene fra lang tids drift av anlegget. Side 58 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Rettigheter for tilgangsnivåer i InTouch Variabel Operatør 1 Leses Operatør 2 Operatør 3 Operatør 1 Skrives Operatør 2 Operatør 3 X X Referanse X X X Nivå I tank Kp til regulator X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Ti til regulator U0 til regulator Valg mellom P- og PI-regulator KpFF til regulator TdFF til regulator NFF til regulator Valg av forroverkoblingstype. Ingen, P, D, eller PD Magnetventiler utløp Utstrømming fra gjennomstrømningsmåler Start/stopp tilstand til pumpe Auto/manuell tilstand Pådrag Melding om alarmer Kvittering av alarmer Samplingstid tank X X X X X X X X X X X Side 59 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Rettigheter for tilgangsnivåer i iX-panelet Variabel Alle Skrive Lese Referanse X X Operatør 3 Skrive Lese X X Ekstra Manuelt pådrag X X X X Modus: Auto / Manuell X X X X Pådrag - X - X Nivå i tank - X - X Melding om alarmer - X - X X X X X Kp til regulator X X * Ti til regulator X X * Samplingstid X X * KpFF til foroverkobling X X * TdFF til foroverkobling X X * NFF til foroverkobling X X * Valg av modus serieregulator, P/PI Åpning utløp, magnetventiler X X * X X * Kvittering alarm Start/stopp pumpe X X X X Vi har valgt å legge til noen ekstra funksjoner til iX-panelet, utover de som er beskrevet i oppgaveteksten. Alle disse krever at brukeren logger inn med tilgangsnivå «Operatør 3». Side 60 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Innlogging iX panel Vi har i utgangspunktet ikke laget noen innlogging for bruk av operatørpanelet. Dette for at det skal være raskt og enkelt å bruke. På siden for innstillinger har vi likevel valgt å legge noen restriksjoner. Vi har laget knappen som sender deg til bildet «Innstillinger» på en slik måte at den kun er synlig når man har logget seg inn med brukeren «Operatør3» som i InTouch har alle rettigheter. Dette vil forhindre at en uautorisert bruker roter til innstillingene i prosessen. Figur 97 iX-panel innlogging Man kan også gjøre det nødvendig å logge seg inn for i det hele tatt å bruke panelet. Dette vi være aktuelt i områder der ikke-kyndige ferdes, og i offentlige rom. Da er det også lurt å benytte seg av muligheten for at panelet automatisk logger ut brukeren dersom denne er inaktiv i noen minutter. Dersom det er påkrevd kan man lage flere nivåer i rettighetene. Dette kan gjøres for å la noen personer endre standard verdier som settpunkt, modus, pådrag etc. Andre derimot kan ha tilgang til å endre regulatorinnstillinger, alarmgrenser, slette loggfiler eller andre kritiske håndgrep. Figur 98 iX-panel operatørnivåer Side 61 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.6.7 Web-grensesnitt for iX panel (Skrevet av ØE) iX TA-100 panelet har mulighet til å settes opp med webgrensesnitt, for fjernstyring av prosessen. Det er flere måter å gjøre dette på. Panelet har en innebygget webserver, som viser en hjemmeside som ligger lagret i panelet, denne er kommuniserer. Panelet kan også settes opp slik at man koblet til via en Java® Server, som viser skjermbildene fra panelet i webleseren. Via hjemmesiden (http://www.hekta.org/~p2ea1) er det lagt ut link til begge funksjonene. Webgrensesnitt Figur 99 iX-panel Webgrensesnitt For å lese ut og sette verdier benyttes det et innebygget Java Script i panelet. Vi hadde kun dokumentasjon på hvordan vi leste/skrev til dataregistre, og ikke til bit. Derfor fungerer ikke funksjonene som styrer pumpen, utløpet og kvittering av alarmer fra webgrensesnittet. Webgrensesnittet er kodet helt fra bunnen av, og formattert som selve hjemmesiden. Se kapittel 1.3 Hjemmesidefor mer informasjon om hvordan hjemmesiden er bygget opp. Figur 100 iX-panel HTML kode eksempel I figuren over ser vi eksempel på koden for å lese og endre referansen til systemet. Denne skriver til selve taggen i iX panelet. For å komme inn på webgrensesnittet må du logge inn. Brukernavn: Op3 Passord: gruppe1 Side 62 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Javagrensesnitt Når du logger inn ved hjelp av Java Serveren vil du få opp samme bilde som vises på skjermen til panelet, bare via webleseren. Link til å logge på finner du på hjemmesiden (http://www.hekta.org/~p2ea1). I panelet ligger det en eldre versjon av Java, versjon 7.0. Denne har flere sikkerhetshull, og sider som kjører denne versjonen blir automatisk blokkert av nyere versjoner av Java. Derfor må vi nedgradere versjonen av Java til en eldre, for å få denne funksjonen til å fungere. Dette medfører en sikkerhetsrisiko som vi ikke anbefaler. En bedre løsning vil være å fjernstyre PCen med InTouch på. Enten via RemoteDesktop i Windows eller programvare, som for eksempel TeamViewer. På den måten vil vi få samme muligheter til å betjene systemet som i InTouch. Side 63 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.7 Simulering Her kommer utdrag fra simuleringsnotatet som ble utformet tidligere i prosjektet. Hele Simuleringsnotatet finner du som vedlegg til denne rapporten, eller på hjemmesiden (http://www.hekta.org/~p2ea1). I simuleringsnotatet er det gjort en feil i modellen for utløpet, hvor maksimal utstrømning i FT01 er beregnet feil. Feilen ligger i at det er lagt til «offset» på +4mA to ganger. 2.7.1 Serieregulering (Skrevet av ØE) Figur 101 Simulering Serieregulering Ved bruk av serieregulering, regulerer vi på avviket mellom referansen og den målte verdien. Ziegler-Nichols metode For å komme frem til passende regulatorparametere har vi benyttet Ziegler-Nichols metode. Der har vi koblet vekk integrator delen av regulatoren, og skrudd opp Kp til vi har fått stående svingninger. Denne verdien for Kp blir den Ziegler Nicholls - Stående svingninger kritiske verdien, Kk. I vårt tilfelle var Kk = 20. Vi måler så periodetiden, som blir den kritiske periodetiden. Tk = 4.9 sekunder. PI-regulator: 𝐾𝑝 = 0.45 ∗ 𝐾𝑘 = 9.0 Tid i sekunder Figur 102 Simulering Ziegler-Nichols 𝑇𝑖 = 0.85 ∗ 𝑇𝑘 = 4.165 𝑠𝑒𝑘 P-regulator: 𝐾𝑝 = 0.5 ∗ 𝐾𝑘 = 10 Side 64 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Etterjustering Vi ser av grafene i 3.1.2 at vi har et innsvingningsforløp som er mer likt «minimum amplitude», hvor vi har rundt 10 svingninger før det blir stasjonært. Vi ønsker «minimum areal», hvor vi kun har ca. 4-6 svingninger. For å få til dette må vi etterjustere. Ser på faseforskyvningen mellom den målte verdien og pådraget fra regulatoren. Blå kurve: Målt verdi,y. Rød kurve: Pådrag, u Pådraget og den målte verdien ligger ca. 180 ° forskjøvet i forhold til hverandre. Dette tyder på at vi har P-svingninger, som vi må etterjustere for. [Kilde: Reguleringsteknikk Grunnkurs: Bjørvik og Hveem, s. 55] Tid i sekunder Figur 103 Simulering Etterjustering Blå kurve: Ziegler-Nichols Rød kurve: Etterjustert Vi forsøker å senke P-forsterkningen. Da vil vi få en langsommere og roligere prosess. Vi ender opp med en Pforsterkning på 5.5, med I-tid på 4.165 som vi fikk fra 3.1.1 Tid i sekunder Figur 104 Simulering Etterjustering Side 65 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 2.7.2 Foroverkobling (Skrevet av TM) I tillegg til en serieregulering av tanken, skulle vi dimensjonere en foroverkobling i reguleringssløyfen. En foroverkobling er enkelt forklart en ekstra regulator som leser direkte på forstyrrelsen, og kompenserer ved endringer. Figur 105 Simulering Forenklet foroverkobling Styrken til en foroverkobling er at man får kompensert for forstyrrelsen før den rekker å påvirke systemet i stor grad. I vårt tilfelle vil det si at foroverkoblingen registrerer økt flow ut av tanken hvis vi lukker to ventiler, og den vil kompensere ved å bidra til økt pådrag. Dette er mye raskere enn at vi skal få et avvik som registreres av nivåmåleren. Figur 106 Simulering Modell for foroverkobling Illustrasjonen viser hvordan vi har modellert foroverkoblingen i simulink. Side 66 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Vi fikk best resultat ved å bruke PI-regulator som hovedregulator, og PD-regulator til foroverkoblingen. Vi brukte følgende innstillinger: PI-reg: P: 5.5 I-tid: 4.165 sekunder PD-foroverkobling: P: 0.75 D-tid: 0.25 Vi fikk da følgende innsvingningsforløp: Innsvingningsforløp med PI-reg, og PD-foroverkobling Dette ga det minste dynamiske avviket og den korteste innsvingningstiden. Vi har også rundt 4 halvperioder i innsvingningene, slik vi skal ha i «minimum areal». Tid i sekunder Figur 107 Simulering Innsvingningsforløp med PD-foroverkobling Side 67 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 3.0 Innregulering (Skrevet av ØE og MB) 3.1 Krav til reguleringen Reguleringsmetodene som kan benyttes er følgende: Serieregulering: P-Regulator med nominelt pådrag. PI-Regulator (uten nom. pådrag). Foroverkobling: P-regulator med P-regulator foroverkobling PI-regulator med P-regulator foroverkobling. P-regulator med D-regulator foroverkobling. PI-regulator med D-regulator foroverkobling. P-regulator med PD-regulator foroverkobling. PI-regulator med PD-regulator foroverkobling. Kravene til reguleringen er: Intet stasjonært avvik. Innsvingningsforløp av typen «minimum areal». Kjappest mulig innsvingning til ±2% av måleområdet når referansen er 60%. For å klare kravet om intet stasjonært avvik må hovedregulatoren være av typen PI. 3.2 Manuelle innjusteringsmetoder Ziegler-Nichols For å finne regulatorparametere som fungere til prosessen prøvde vi først Ziegler-Nichols metode. Den går ut på å bruke kun P-regulator, for så å justere opp forsterkningen til vi får stående svingninger i prosessen. På denne måten finner vi kritisk forsterkning, Kk, til systemet. Periodetiden til svingningene utgjør den kritiske periodetiden, Tk. Vi hadde store problemer med å få stående svingninger i systemet. Vi prøvde helt opp til Kk = 60, noe som ville gitt en usannsynlig høy Kp i systemet. Vi måtte derfor gå over til en annen strategi for å finne parameterne. Side 68 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Manuell selvjustering Manuell selvjustering går ut på å bruke en P-regulator med maksimal P-forsterkning, som en Av/Påregulator. Ved å lese av grafen, og benytte formelen for Kk og Tk, finner vi forslag til parameterne. Figur 108 Manuell selvjustering 𝐾𝑘 = 𝑇𝑜𝑝𝑝 − 𝑡𝑖𝑙 − 𝑏𝑢𝑛𝑛 − 𝑝å𝑑𝑟𝑎𝑔 100 ∗ 1.27 = ∗ 1.27 = 15.875 𝑇𝑜𝑝𝑝 − 𝑡𝑖𝑙 − 𝑏𝑢𝑛𝑛 − 𝑝𝑟𝑜𝑠𝑒𝑠𝑠𝑣𝑒𝑟𝑑𝑖 8 𝑇𝑘 = 𝑝𝑒𝑟𝑖𝑜𝑑𝑒𝑡𝑖𝑑 𝑓𝑜𝑟 𝑒𝑛 𝑠𝑣𝑖𝑛𝑔𝑛𝑖𝑛𝑔 = 14 𝑠𝑒𝑘 Bruker tabellen for Ziegler-Nichols for å finne Kp og Ti for PI-reg: 𝐾𝑝 = 0.45 ∗ 𝐾𝑘 = 7.14 𝑇𝑖 = 0.85 ∗ 𝑇𝑘 = 11.9 𝑠𝑒𝑘 3.3 Serieregulering Her har vi benyttet parameterne vi fant i 3.2. Sprang i utløpet, fra 1 til 3 ventiler åpne. Vi ser at innsvingningsforløpet er innenfor kravet om ±2% av referansen innen ca. 3 sekunder. Vi har heller ikke innsvingningsforløp som er av typen «minimum areal». Vi har 1-2 halvperioder, noe som gir oss «minimum forstyrrelse». Figur 109 Serieregulering Side 69 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Vi har prøvd å senke P-forsterkningen for å komme nærmere et innsvingningsforløp av typen «minimum areal», men siden dynamikken til systemet er så hurtig, får vi sjeldent oversving i innsvingningsforløpet. Ved å kun benytte de tre magnetventilene i utløpet får vi ikke store utslag i det dynamiske avviket. 3.4 Foroverkobling Siden systemet i utgangspunktet er ganske hurtig, vil det være tilstrekkelig med å kun bruke serieregulering. Foroverkoblingen vil gjøre innsvingningen enda kjappere, når det kommer forstyrrelser i utløpet. Forskjellen er at vi nå får et oversving med i innsvingningsforløpet. Vi har prøvd med PD-foroverkobling, hvor vi har valgt KpFF = 0.7 og TdFF = 0.3 Vi ser at det dynamiske avviket ikke går utover grensen på ±2% av referansen. Figur 110 Foroverkobling Side 70 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 3.5 Parametere fra simulering Fra simuleringsnotatet fikk vi følgende parametere: PI-reg: P: 5.5 I-tid: 4.165 sekunder PD-foroverkobling: P: 0.75 D-tid: 0.25 Også her får vi et dynamisk avvik som ligger innenfor ±2% av referansen. Vi får ikke et oversving som vi hadde i simuleringen, men vi fikk to undersving, jf. Figur #. Generelt sett fungerer parameterne godt, og vi føler at dynamikken er forholdsvis lik som i modellene som er laget. Figur 111 Test av parametere Side 71 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 4.0 Testskjema 4.1 Operatørpanel Funksjon: Start/stopp pumpe Lukke alle magnetventiler Åpne/lukke 1 magnetventil (33% utløp) Åpne/lukke 2 magnetventiler (66% utløp) Åpne/lukke 3 magnetventiler (100% utløp) Nivåmåler % Flowmåler % Alarmtilstand: 25% under referanse Alarmtilstand: 25% over referanse Alarmtilstand: Nivå over 90% Alarmtilstand: Nivå under 10% Alarmtilstand < 5 sek. gir ingen alarm Ok/Not Ok: OK OK OK OK OK OK OK OK OK OK OK OK Alarmlampe fast lys OK Velge P-regulator Velge PI-regulator Sette manuelt pådrag Kvittering alarm Rykkfri overganger Regulatorparametere serieregulator Regulatorparametere foroverkobling Beholder verdier etter strømbrudd Avlesning pådrag OK OK OK OK Not OK OK OK OK OK Aksjon/Kommentar Starter/Stopper pumpe Lukker alle ventiler Åpner 1 ventil Åpner 2 ventiler Åpner 3 ventiler Måler nivået i prosent Måler utløpet i prosent 0.5 sek blink 0.5 sek blink 0.2 sek blink, pumpestopp 0.2 sek blink, pumpestopp Alarm utløses kun ved alarmtilstand over 5 sekunder Lampa lyser fast om alarmtilstand og det er kvittert Manuell/Auto-overgang fungerer ikke Får ikke satt desimaltall Får ikke satt desimaltall 4.2 InTouch Funksjon: Start/stopp pumpe Lukke alle magnetventiler Åpne/lukke 1 magnetventil (33% utløp) Åpne/lukke 2 magnetventiler (66% utløp) Åpne/lukke 3 magnetventiler (100% utløp) Nivåmåler % Flowmåler % Alarmtilstand: 25% under referanse Alarmtilstand: 25% over referanse Alarmtilstand: Nivå over 90% Alarmtilstand: Nivå under 10% Alarmtilstand < 5 sek. gir ingen alarm Ok/Not Ok: OK OK OK OK OK OK OK OK OK OK OK OK Alarmlampe fast lys OK P-regulator P-reg. med P-foroverkobling OK OK Aksjon/Kommentar Starter/Stopper pumpe Lukker alle ventiler Åpner 1 ventil Åpner 2 ventiler Åpner 3 ventiler Måler nivået i prosent Måler utløpet i prosent 0.5 sek blink 0.5 sek blink 0.2 sek blink, pumpestopp 0.2 sek blink, pumpestopp Alarm utløses kun ved alarmtilstand over 5 sekunder Lampa lyser fast om alarmtilstand og det er kvittert Side 72 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank P-reg. med D-foroverkobling P-reg. med PD-foroverkobling PI-regulator PI-reg. med P-foroverkobling PI-reg. med D-foroverkobling PI-reg. med PD-foroverkobling Sette manuelt pådrag Kvittering alarm Rykkfri overganger Regulatorparametere serieregulator Regulatorparametere foroverkobling Beholder verdier etter strømbrudd Avlesning pådrag OK OK OK OK OK OK OK OK Not OK OK OK OK OK Lite bidrag fra D-delen Lite bidrag fra D-delen Funksjon: Start/stopp pumpe Lukke alle magnetventiler Åpne/lukke 1 magnetventil (33% utløp) Åpne/lukke 2 magnetventiler (66% utløp) Åpne/lukke 3 magnetventiler (100% utløp) Nivåmåler % Flowmåler % Alarmtilstand: 25% under referanse Alarmtilstand: 25% over referanse Alarmtilstand: Nivå over 90% Alarmtilstand: Nivå under 10% Alarmtilstand < 5 sek. gir ingen alarm Ok/Not Ok: OK OK OK OK OK OK OK OK OK OK OK OK Alarmlampe fast lys OK Aksjoner/kommentar Starter/Stopper pumpe Lukker alle ventiler Åpner 1 ventil Åpner 2 ventiler Åpner 3 ventiler Måler nivået i prosent Måler utløpet i prosent 0.5 sek blink 0.5 sek blink 0.2 sek blink, pumpestopp 0.2 sek blink, pumpestopp Alarm utløses kun ved alarmtilstand over 5 sekunder Lampa lyser fast om alarmtilstand og det er kvittert P-regulator P-reg. med P-foroverkobling P-reg. med D-foroverkobling P-reg. med PD-foroverkobling PI-regulator PI-reg. med P-foroverkobling PI-reg. med D-foroverkobling PI-reg. med PD-foroverkobling Sette manuelt pådrag Kvittering alarm Rykkfri overganger Regulatorparametere serieregulator Regulatorparametere foroverkobling Beholder verdier etter strømbrudd Avlesning pådrag OK OK OK OK OK OK OK OK OK OK Not OK OK OK OK OK Lite bidrag fra D-delen Lite bidrag fra D-delen Manuell/Auto-overgang fungerer ikke 4.3 PLS Lite bidrag fra D-delen Lite bidrag fra D-delen Lite bidrag fra D-delen Lite bidrag fra D-delen Manuell/Auto-overgang fungerer ikke Side 73 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 5.0 Prosjektgjennomføring, erfaringer og konklusjon 5.1 Prosjektgjennomføring (Skrevet av ØE) Gruppa har jobbet jevnt og trutt igjennom hele prosjektperioden, unntatt i påsken, hvor vi alle hadde ferie. Alt arbeid har i utgangspunktet foregått på dagtid. I periodene før innlevering av rapportene har vi lagt ned noe «overtid», med jobbing til ca. 19-20 og 2 helger med jobbing. Vi har ikke klart å bli ferdige med «Entank» delen i god tid før fristen som vi hadde planlagt. Noen uforutsette problemer har oppstått, og det har vært mye prøving og feiling med programmeringen. Vi har i utgangspunktet latt de prosjektdeltakerne med minst PLS og HMI erfaring få ansvaret for akkurat disse delene, og alle har hatt godt utbytte av erfaringen de nå har fått. Igjennom hele prosjektperioden har det også vært tilfeller hvor prosjektmedlemmene har hatt forpliktelser på privat hold. Vi har derfor mistet ca. 25 arbeidsdager totalt i gruppen. Dette har vært legitime fravær som for eksempel militærøvelse, syke barn, jobb eller reise. Tross dette har vi klart å følge de tidsfristene som har vært gitt. 5.2 Erfaringer og forslag til forbedringer (Skrevet av AA) Denne riggen er laget som en teststasjon for studentoppgaver. Den er derfor ikke laget optimalt. Dette har medført noen ekstra utfordringer for oss. Noen av disse kunne vært unngått med små endringer. Ett eksempel på dette er røret som går fra pumpen til tanken. Innløpet i tanken er avsluttet i toppen av tanken. Dette gjør at det faller langt ned før det treffer overflaten. Slike plask i overflaten skaper slag på trykksensoren, som igjen lager skjelvinger i signalet for nivå. Dette røret kunne med fordel være strukket helt ned til bunnen av tanken. Dette kunne vi prøvd å filtrere bort med ett digitalt filter i PLSen. Normalt gjøres dette ved å ta ett gjennomsnitt av for eksempel 5 målinger. Da vil man som regel utjevne slike topper. Her må man prøve seg fram. Noe av dette vil også bli filtrert bort av ett godt dimensjonert analogt filter. Magnetventilene lager store «peaker»/spikere i det målte nivået når de stenges. Dette kan vi se dersom vi logger inngangene. Noe av dette hadde blitt borte om det hadde vært brukt skjermet kabel til spolene. Dette vil også bli noe dempet av et analogt filter, men her er plasseringen av filteret relevant for effektiviteten, da støyen kan tilføres på det allerede filtrerte signalet dersom filteret plasseres for nær støykilden. Frekvensomformeren som driver pumpen er også en stor støykilde. Her er det vanlig å bruke skjermet kabel, noe som ikke er brukt her. Man må da bruke EMC kabelinnføringsnippel, og terminere denne riktig i henhold til brukermanualen for frekvensomformeren. Dette er ett krav i forskriftene angående EMC støy, og at man skal sikre at man ikke lager problemer i form av støy for andre. Side 74 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank Nivåsensor, strømningsmåler og reguleringsventil er tilkoblet med uskjermet kabel. Dette gjøres normalt ikke. Man bruker en kabel med flettet skjerm rundt hele kabelen, slik at støyen inn på kabelen blir redusert så mye som mulig. Denne støyen vil da bli ledet til jord, normalt i den enden som er tilkoblet I/O modulen. Dette må man teste ut i hvert enkelt tilfelle, da man også kan bli tvunget til å koble til skjermen i begge ender. Man må da først kontrollere anleggets generelle jording, da manglende utjevningsforbindelser kan føre til store problemer. Da først og fremst med tanke på at signalkablene vil fungere som utjevningsforbindelser. 5.3 Konklusjon For å unngå stasjonært avvik er vi nødt til å bruke PI-regulator. PI-regulatoren virker såpass raskt på systemet, at en foroverkobling nesten blir overflødig. Vi la merke til at det var fort gjort å la seg rive med under utviklingen av HMI-biten. Læringskurven er bratt og man kan fort gå i den fellen hvor man lager et overkomplisert brukergrensesnitt med mange overflødige funksjoner. Kravet til innsvingningsforløpet var minimum areal. Vi endte opp med minimum forstyrelse, som i grunn er et bedre innsvingningsforløp. Regulatorparameterne vi fikk ut fra simuleringsnotatet stemte meget godt overens med dynamikken til riggen, vi endte derfor opp med å bruke disse parameterne. Antialiasingfilteret fungerte meget godt, da det fjernet uønsket støy og tjente sin hensikt. Vi har også sett viktigheten av å ha god oversikt over adresser som er i bruk, og at disse blir kontinuerlig oppdatert. Trondheim 28.04.2015 Torbjørn Morken Øyvind Eklo Eyvind Bjørsland Magnus Bergsbakk Anders Aabakken Side 75 av 75 Prosjekt i styresystemer 2015 Gruppe 1 Rapport Entank 6.0 Vedlegg Vedleggene er lagt ved som filer i rapporten. Dobbelt klikk på ikonet for å åpne vedlegget. For å åpne vedleggene trenger du internett tilkobling. 6.1 PLS program Master pls_master_entank.pdf Her ligger dokumentasjonen for Master PLSen 6.2 PLS program Slave pls_slave_entank.pdf Her ligger dokumentasjon for Slave PLSen 6.3 Simuleringsnotat Arbeidsnotat - Simulering.pdf Her ligger Arbeidsnotatet fra simulering av tanken.
© Copyright 2024