FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28



Relevanta dokument
FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

FactoryCast HMI. Premium & Quantum PLC. FactoryCast HMI epost-tjänst

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Applets med komponenter

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Klassen javax.swing.timer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

DAT043 - Föreläsning 7

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Att skriva till och läsa från terminalfönstret

Laboration 13, Arrayer och objekt

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Monitor Pro V7.x SCADA. Förstå och skapa symboler

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Factory Cast version 3.1

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Ethernet TCP/IP. Quantum, Premium och Momentum. Modemkommunikation mellan PC och ett Ethernet TCP/IP nätverk

Konstruktion av klasser med klasser

Lösningar för tenta 3 DAT043,

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Laboration 10 - NetBeans

Lab5 för prgmedcl04 Grafik

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Properties. Användbara metoder som kan anropas i propertychanged:

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

F4. programmeringsteknik och Matlab

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Föreläsning 2, vecka 8: Repetition

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Operatörssystem. Magelis XBTGT/GK. Kom-igång med minneskort till Magelis XBTGT/GK

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Lösningsförslag till tentamen

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Exceptions (undantag) Murach s: kap 7

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

Concept V2.6. Quantum. Programmering via modem

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

OOP Objekt-orienterad programmering

2D1339 Programkonstruktion för F1, ht 2003

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Lösningar för tenta 2 DAT043,

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Classes och Interfaces, Objects och References, Initialization

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Lite logik. Kap 6: Sid 2

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

1 Comparator & Comparable

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Föreläsning 9 Innehåll

Kort om klasser och objekt En introduktion till GUI-programmering i Java

12 Metaprogrammering i Java

Lösningsförslag till tentamen

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Föreläsnings 9 - Exceptions, I/O

TDDC77 Objektorienterad Programmering

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

Tentamen Nätverksprogrammering Lösningsförslag

Fördjupad Java. Undantagshantering. Fel

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Föreläsning 5-6 Innehåll

DAT043 Objektorienterad Programmering

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

DAT043 - föreläsning 8

ID1004 Laboration 3, 5-6 November 2012

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

OOP Objekt-orienterad programmering

Laboration 24 Databasen MySQL och java

TENTAMEN OOP

Grafiska komponenter.

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Transkript:

FactoryCast HMI Premium & Quantum PLC Applets 2004-10-28

INNEHÅLLSFÖRTECKNING 1 OM DETTA DOKUMENT...3 2 FÖRUTSÄTTNINGAR...3 3 PROJEKT I J++...4 3.1 LÄSA PLC-VARIABLER...4 3.1.1 Gränssnittet...4 3.1.2 Upprätta kommunikation med PLC-systemets variabler...6 Huvudkontor Centrallager Säljkontor Hemsida Schneider Electric AB Schneider Electric AB Göteborg: 031-748 35 00 http://www.schneider-electric.se Box 1009, Norrköpingsvägen 13 Brogetorp Malmö: 040-22 75 40 611 29 NYKÖPING 642 83 FLEN Sollentuna: 08 623 84 00 Tel: 0155-26 54 00 Tel: 0157-652 00 Sundsvall: 060-57 27 00 Fax: 0155-21 42 86 Fax: 0157-652 50

1 OM DETTA DOKUMENT Detta dokument beskriver hur en java applet lokaliserad hos FactoryCast HMImodulen TSX WMY100 kan fås att läsa/skriva PLC-variabler. Dokumentet tar inte upp handhavandet av FactoryCast HMI Configurator. Ingående delar: TSX P57 3634 TSX WMY 100 Visual Studio J++6.0 Java RTE för Windows 1.4.2 FactoryCast HMI Configurator 1.0 PLC Premium CPU FactoryCast HMI webmodul Microsofts Java IDE Sun Microsystems java motor Verktyg för FactoryCast HMI-modulen 2 FÖRUTSÄTTNINGAR Tre stycken PLC-register av typen IEC DINT ska kunna läsas i appleten, registren är: %MD100 %MD102 %MD104 Tre stycken PLC-register av typen IEC DINT ska kunna skrivas i appleten med en knapp. Knappen fungerar som återställning av värden. Registren är: %MD100 %MD102 %MD104 Schneider Electric AB 3 (12)

3 PROJEKT I J++ För att underlätta debugging är det att föredra om all kod som inte har med kopplingen till PLC-systemet definieras först. Den koden kan då debuggas på PC:n med Internet Explorer eller J++:s inbyggda appletviewer. 3.1 LÄSA PLC-VARIABLER 3.1.1 Gränssnittet Läsningen ska göras från PLC-variabler till TextField objekt i java appleten. Tre Label objekt som indikerar vilket register det är frågan om, definieras tillsammans med tre TextField objekt. import java.awt.*; import java.applet.applet; import java.awt.graphics; public class FCapplets extends Applet GridBagLayout gbl=new GridBagLayout(); GridBagConstraints cons=new GridBagConstraints(); Panel p; Label l1; Label l2; Label l3; TextField tf1; TextField tf2; TextField tf3; En layout-hanterare av typen GridBagLayout deklareras med för hanteraren ett regelobjekt av typen GridBagConstraints. Detta skapar ett rutnät där objekten (TextFields och Labels) kan placeras. Ett panelobjekt samt tre Labels och tre TextFields deklareras också. Init metoden skapar gränssnittet: public void init() p=new Panel(gbl); // Förskjutningsobjekt enligt Top,left,bottom,right Insets ins=new Insets(0,20,0,0); Insets insnull=new Insets(0,0,0,0); // Label 1 l1=new Label("Värde %MD100"); // Skapa Label med text cons.insets=insnull; // Ingen förskjutning cons.gridx=0; cons.gridy=0; // Placera Label 1 i kordinater 0,0 gbl.setconstraints(l1,cons); // Label 2 l2=new Label("Värde %MD102"); // Skapa Label med text cons.insets=ins; // Förskjutn till vänster cons.gridx=1; cons.gridy=0; // Placera Label 2 i kordinater 1,0 gbl.setconstraints(l2,cons); // Label 3 l3=new Label("Värde %MD104"); cons.insets=ins; // Skapa Label med text // Förskjutn till vänster Schneider Electric AB 4 (12)

cons.gridx=2; cons.gridy=0; // Placera Label 3 i kordinater 2,0 gbl.setconstraints(l3,cons); // Lägg in labels i panel p.add(l1); p.add(l2); p.add(l3); // TextField 1 tf1=new TextField(10); cons.insets=insnull; // Ingen förskjutning cons.gridx=0; cons.gridy=1; // Placera TextField i kordinater 0,1 gbl.setconstraints(tf1,cons); // TextField 2 tf2=new TextField(10); cons.insets=ins; // Förskjutn till vänster cons.gridx=1; cons.gridy=1; // Placera TextField i kordinater 1,1 gbl.setconstraints(tf2,cons); // TextField 3 tf3=new TextField(10); cons.insets=ins; // Förskjutn till vänster cons.gridx=2; cons.gridy=1; // Placera TextField i kordinater 2,1 gbl.setconstraints(tf3,cons); // Lägg in TextFields i panel p.add(tf1); p.add(tf2); p.add(tf3); // Lägg in panelen i Appleten add(p); Gränssnittet får följande utseende: Schneider Electric AB 5 (12)

3.1.2 Upprätta kommunikation med PLC-systemets variabler Följande behöver göras för att få en möjlighet att komma åt PLC-systemets variabler: 1. Definiera en Classpath till paketet FactoryCast.jar. I J++ 6.0 görs detta via menyn Project Properties flik Classpath. FactoryCast.jar är paketet som Classpath:en sätts till i J++ 6.0 projektet, det används i utvecklingsmiljön men kommer via html filen att styras till de riktiga paketen som finns i modulen. 2. I projektet, importera följande ur FactoryCast.jar: // Klasspaket där kommunikations objekten bl.a ingår import com.schneiderautomation.factorycast.*; import com.schneiderautomation.factorycast.comm.statusmessages; 3. Deklarera PLC objekten (klassinstansvariabler) // Objekt för PLC kommunikation, gällande IEC typ DINT private CommBean comm; // Kom objeketet private SetDInt setter; // Skriv objektet private GetDInt getter; // Läs objektet private MonitorDInt monitor; // Monitoreringsobjektet Schneider Electric AB 6 (12)

4. Implementera interfacet PropertyChangeListener till appleten public class FCapplets extends Applet implements PropertyChangeListener 5. Följande läggs till i appletens init metod // Ta PLC:ns host namn String host = getcodebase().gethost(); // Skapa kom objekten för PLC comm = new CommBean( getlocale() ); setter = new SetDInt( comm.getserver() ); getter = new GetDInt( comm.getserver() ); monitor = new MonitorDInt( comm.getadaptor() ); // Lägg på händelselyssning (PropertyChangeListener) // på PLC objekt getter.addpropertychangelistener( this ); monitor.addpropertychangelistener( this ); // Anslut kom objekt till PLC try comm.connect( host, false ); comm.start(); catch( Exception e ) // Definitioner om kom misslyckas // Registrera tre variabler String adr="%md100"; // Startadress short no=3; // Antal ifrån startadress monitor.setaddress(adr ); // Sätt adressen monitor.setquantity(no); // Sätt antalet monitor.register(); // Registrera 6. PropertyChange lyssnaren som implementerades kastar nu en händelse PropertyChange var gång ett värde förändras för de tre PLC-variablerna som registrerades. Händelsen som kastas ska strax definieras, men först en metod som den händelsen eventuellt kommer att anropa. Denna metod ska sortera ut värdena för de tre PLC-variablerna till respektive TextFieldobjekt private void setvalues(int values[]) String sval=""; sval=integer.tostring(values[0]); tf1.settext(sval); sval=integer.tostring(values[1]); tf2.settext(sval); sval=integer.tostring(values[2]); tf3.settext(sval); Schneider Electric AB 7 (12)

7. PropertyChange lyssnarens metod PropertyChange. I detta fall används bara händelsetypen values som ger en array med värdena för de tre PLC-variablerna som registrerats. En string klassinstansvariabel smsg tilldelas textinfo om händelsetypen. // Anropas om PLC variabler förändrats. public void propertychange( PropertyChangeEvent evt ) // Fånga upp vad händelsen handlar om String prop = evt.getpropertyname(); // Om händelse 'Nya värden' --------------- if( prop.equals( "values" ) ) int[] values = (int[]) evt.getnewvalue(); smsg="värdesförändring skedde"; // ##### HÄR ########## // Här anropas metoden se punkt 6 setvalues(values); // Om händelse 'Ett (1) nytt värde --------- else if( prop.equals( "value" ) ) int[] value = (int[]) evt.getnewvalue(); smsg="värdesförändring skedde"; // Om händelse status (kommfel) ----------- else if( prop.equals( "status" ) ) // Visa kom status för PLC variabeln Integer idstatus = (Integer) evt.getnewvalue(); // Om ej noll ->FEL if( idstatus.intvalue()!= 0 ) // Visa kom felmeddelande smsg=statusmessages.get(idstatus); else // Värdet noll allt ok // Värde hämtades utan fel smsg="status ok"; // Om händelse subscriberstatus ----------- else if( prop.equals( "subscribestatus" ) ) smsg="subscribe skedde"; // Om händelse registrerad ---------------- else if( prop.equals( "registered" ) ) smsg="registrering skedde"; Schneider Electric AB 8 (12)

8. Förutom init metoden kan en applet anropa någon av nedan definierade. // Anropas då applet startas, återta kommunikation public void start() try comm.resume(); catch( Exception e ) e.printstacktrace(); // Anropas då applet stoppas, stäng av kommunikation public void stop() try comm.suspend(); catch( Exception e ) e.printstacktrace(); // Anropas då appleten förstörs (applet avslutas), // Koppla bort kommunikation public void destroy() try comm.disconnect(); catch( Exception e ) e.printstacktrace(); 9. Meddelanden som PropertyChange genererar och tilldelar klassinstansvariabeln smsg skrivs ut i nedre vänstra hörnet public void paint(graphics g) // Skriv ut händelser nere i vänstra hörnet g.drawstring(smsg,5,380); Schneider Electric AB 9 (12)

10. HTM filen page1.htm definieras <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <BODY> <P> </P> <!-- Applet taggen --> <!-- Attribut codebase: Var applet koden finns --> <!-- Attribut archive: Var kom objekten kan hittas --> <!-- Attibut code: Vad applet klassfilen heter --> <!-- Attribut width och height: Storleken på appleten --> <APPLET codebase="/cj/fcapplets" archive="/classes/sacomm.jar" code="fcapplets.class" width="400" height="400"> </APPLET> </BODY> </HTML> 11. Kompilera javaprojektet och spara class filen och htm filen i mappstrukturen cj\fcapplets\ 12. Kopiera mappen cj och i FactoryCast HMI programvaran klistra in under wwwroot 13. I FactoryCast HMI programvaran, för över till modulen 14. Starta Internet Explorer och i adressfältet skriv in [ MODULENS IP ADRESS ] /cj/fcapplets/page1.htm eller t.ex http://192.168.0.102/cj/fcapplets/page1.htm 15. Resultatet borde bli Schneider Electric AB 10 (12)

16. Tillbaka i java projektet, nu ska knappen som återställer värdena i de tre registren definieras. Deklarera en klassinstansvariabel av typen Button. Konstanten tjänar som knappens text samt identifierar knappen Button cmdsetvalues; final String CMD_SET="Återställning"; 17. I appletens init metod skapas knappen och läggs in i panelen // Knappen Insets instop=new Insets(20,20,0,0); cmdsetvalues=new Button(CMD_SET); cons.insets=instop; // Förskjut knappen nedåt och till vänster cons.gridx=2; cons.gridy=2; // Placera knapp i kordinater 2,2 gbl.setconstraints(cmdsetvalues,cons); p.add(cmdsetvalues); 18. Händelsen då knappen klickas fångas upp i följande metod // Knapp händelse avgörs och aktuell metod anropas public boolean action(event evt,object arg) // Ta objektet i string form String s= arg.tostring(); // Koll om det är ett knapp obj if(evt.target instanceof Button) // Vilket knapp obj if(s.equals(cmd_set)) // Om knappen, anropa metod cmdset_click(); return true; 19. Metoden som anropas då knappen klickas private void cmdset_click() int ivalues[]=new int[3]; // Tilldela värdena ivalues[0]=666; ivalues[1]=777; ivalues[2]=888; // Startadressen String adr="%md100"; try setter.setaddress(adr); setter.setvalues(ivalues ); setter.sendvalues(); catch(exception e) // Definiera om skrivning går fel Schneider Electric AB 11 (12)

20. Kompilera och för över class filen till modulen, resultatet borde bli... Schneider Electric AB 12 (12)