Wie kann ich mehrere Daten blockweise mittels des CP IT & IT aus einer Steuerung auslesen und schreiben?

Ähnliche Dokumente
Abfrage des aktuellen Betriebszustands und der MLFB Nummer des IT CP IT oder IT

Java-Applikationen sind Programme mit dem vollen Funktionsumfang eines normalen Programms mit gleicher Funktionalität.

FAQ Kommunikation über PROFIBUS

FAQ S7-Kommunikation über IE

FAQ Kommunikation über IE

FAQ Kommunikation über PROFIBUS

Arbeitsblatt 5 EAD II NetBeans

Ein Array ist eine Liste mit Einträgen, fast wie eine Einkaufsliste. Man kann darin also mehr als einen Eintrag in eine einzige Variable speichern.

FAQ Kommunikation über PROFIBUS

Simatic S7 Connector

FAQ S7-Kommunikation über MPI

Service & Support. Konfiguration einer S7-300 als DP- Slave an einer S7-400H als DP-Master unter Verwendung eines Y-Links PROFIBUS DP.

Modbus/TCP- Kommunikation über IE CP

Dateizugriff unter C

8. Arbeiten mit Dateien

How-To-Do. Hardware Konfiguration SLIO CPU 014

FAQ Kommunikation über IE

Deckblatt. Konfiguration eines CP342-5 als DP- Slave am CP342-5 als DP- Master PROFIBUS DP. FAQ Juni Service & Support. Answers for industry.

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

FAQ Kommunikation über IE

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Praktikum 4: Grafiken und Ereignisse

Deckblatt. SIMATIC NET SNMP OPC-Server und WinCC. Simple Network Management Protocol. FAQ Juli Service & Support. Answers for industry.

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Klausur Fachprüfung Wirtschaftsinformatik Dauer: 2 Stunden. Name:

Labor 2 : Hello, World Plus

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

HINWEIS. 1. Anwendungsbereich. Gamma instabus. Technische Produkt-Informationen. Februar Firmware Download Tool

Deckblatt. Konfiguration einer S7-300 CPU als DP-Slave am CP342-5 als DP-Master PROFIBUS DP. FAQ Mai Service & Support. Answers for industry.

Zahlenraten: Ein Spiel in Java.

FAQ Kommunikation über PROFIBUS

Programmhandbuch Ergänzung. Kommunikation zwischen Objekterkennungssensor O2D2xx und Siemens Simatic S / / 2011

BENUTZERANLEITUNG. Kundenzufriedenheitsumfrage. IT. Simply Personal. IAMW Version 1.0 Klicken Sie hier, um ein Datum einzugeben.

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Die Informationen in dieser Dokumentation können ohne Vorankündigung geändert werden.

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Probeklausur Informatik 2 Sommersemester 2013

Rückgabewerte von Methoden

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Benutzerhandbuch. ABC-Industrial Panel. HMI Einrichtung in TIA

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Einführung in Managementinformationssysteme

Zeichenketten sind uns bisher nur als konstante Texte begegnet, welche in "" angegeben waren; z.b. als Formatstring in der printf()-funktion:

Übungsblatt 1. Java Vorkurs (WS 2017)

Prüfdokument Vorlage erstellen und hinzufügen

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Import SIMATIC-Variablen

FAQ Kommunikation über IE

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Grundlagen der OO- Programmierung in C#

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

8.6 Visualisierung der Sortieralgorithmen

Typisierte Dateien von Martin Strohal. Einleitung. Der Record

HART-Module konfigurieren und parametrieren

GI Vektoren

Word 10. Verweise Version: Relevant für: IKA, DA

Praktikum 1: Einführung, BMI Rechner

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Klausur Software-Entwicklung März 01

Fahrzeuggestaltung mit ipad und idraw

oder

Java Kurzreferenz Für Fortgeschrittene

5.1.1 Dateilinks hinzufügen

Einführung in die Programmiersprache C

SP7 LabVIEW-Toolkit Schnellanleitung

Link-Status der PROFINETSchnittstelle auslesen

hue12 January 24, 2017

LEGO-Mindstorms-Roboter im Informatikunterricht -mit Delphi-

Zeiger, Arrays und Strings in C und C++

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Programmieren in Java

ANWENDUNGSLEITFADEN. Übersicht. Hardware-Setup. Diffusion non restreinte Siemens Füllstand und Wägetechnik

Erzeugen und Verwenden von Libraries Seite 1. Erzeugen und Verwenden von Libraries in der Android- Programmierung mit Eclipse

PHP- Umgang mit Datenbanken (1)

10.4 Konstante Objekte

How-To-Do. Ethernet-Konfiguration der CPU 31xNET mit dem SIMATIC Manager von Siemens

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

TURBO PASCAL VERSION 5.5

Zeiger in C und C++ Zeiger in Java und C/C++

Eclipse Tutorial.doc

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks

Probeklausur Name: (c)

(6) Verknüpfen der GUI mit dem Spiel

Kopf-/Fußzeilen und Seitenzahlen

Erweiterung der Selektionen

Programmhandbuch Ergänzung. Kommunikation zwischen Multicode Reader O2I1xx und Siemens Simatic S / / 2009

Verkaufsstellen Modul

Linux-Einführung Übung

Anwenderhandbuch Online Redaktionssystem. Datenübermittlung Kirchennachrichten Stand: April 2010

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8

ZM(B) Erinnerungsschreiben

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

NOISY Datenimport vom LD 831

Nach dem aus KISSsoft der Zahnradimport gestartet wurde, öffnet sich der im folgenden dargestellte Dialog. Abbildung 1: Dialog Verzahnungserstellung

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Transkript:

1. Ziel: Wie kann ich mehrere Daten blockweise mittels des CP 343-1 IT & 443-1 IT aus einer Steuerung auslesen und schreiben? 2. Randbedingungen für diese Applikation: Die mit dem IT CP 443-1 IT oder 343-1 IT mitgelieferten Beans wurden bereits in die Entwicklungsumgebung IBM VisualAge 3 importiert und stehen dem Benutzer zur Verfügung. Zu diesem Vorgehen existiert ebenfalls eine detaillierte Anleitung. Als Resultat dieses Imports sollte der Composition Editor von VisualAge sollte in etwa wie folgt aussehen: Bild 1: Composition Editor mit importierten Siemens Beans

3. Erstellen eines Datenbausteins in STEP7 Am Beispiel eines Byte-Array soll gezeigt werden, wie ein ganzer Block an Daten aus der S7-Station geladen, dargestellt, verändert und zurückgeschrieben wird. Erstellen Sie sich zunächst einen Datenbaustein DB4 mit dem SIMATIC Manager, der wie folgt in erstellt wurde und anschließend in die S7-Station übertragen wurde. Bild 2: Erstellter Datenbaustein in STEP7 (DB4) Wie Sie sehen, hat der Datenbaustein eine eigene Struktur mit verschiedenen S7Datentypen und besteht nicht aus einem reinen Byte-Array. Das Wissen über den Aufbau des Datenbausteins ist für die Darstellung und das (sinnvolle) Ändern der Daten wichtig! In der folgenden Abbildung sehen Sie den DB4 in Form des Byte-Arrays, wie es im JavaCode benutzt und verarbeitet wird: Bild 3: Erstellter Datenbaustein im Byte Array

4. Erstellen eines Applets in VisualAge Legen Sie in gewohnter Weise mit VisualAge ein neues Applet an und nennen es BlockReadWrite. Gestalten Sie dabei in etwa folgendes Aussehen Ihrer Darstellung: Bild 4: Anordnung des Applets Verwenden Sie zur Erstellung folgende Beans: 1. S7Cp 2. S7Device 3. S7Variable Diese Beans erhalten Sie aus der Beansammlung Ihres IT CP Wechseln Sie nun zu den AWT Beans und verwenden: 1. 5 Stück TextField (TextField1 TextField5) 2. 5 Stück Label (Label1 Label5) 3. 2 Stück Button (Button1 Button2) und beschriften diese nach obigem Bild. Bild 5: Verwenden von AWT Beans

Parametrieren Sie nun Ihren IT-CP und Ihr Device-Bean mit den entsprechenden Werten für Ihre Anlage. Z.B. S7CP Host: 192.168.147.10 und S7Device Rack 0 & Slot 2 Stellen Sie für den ANY-Zeiger (Adresse in S7Variable) folgende Parameter ein: 1. Unter Wiederholfaktor geben Sie an, wieviel Bytes (wir haben als Datentyp BYTE eingstellt) Sie auslesen möchten. In unserem Fall sind dies 32 Bytes, was der kompletten Länge des Datenbausteins entspricht. 2. Unter Teilbereich steht die Datenbaustein Nummer 3. Unter Byteadresse steht hier Null, da wir vom nullten Byte an auf dendb4 zugreifen möchten. Bild 6: Parametrierung des ANY-Zeigers Sichern Sie das Applet, indem Sie im Menü Bean den Befehl Bean sichern ausführen. Dadurch wird sichergestellt, dass die im weiteren Verlauf des Beispiels benötigten Methoden von VisualAge erzeugt werden und später bei Bedarf zur Verfügung stehen. Anmerkung: Anstatt einen kompletten DB zu übertragen, könnten Sie auch nur einen Ausschnitt bearbeiten, indem Sie beispielsweise von Byteadresse 4 an auf die folgenden 8 Bytes zugreifen (Wiederholfaktor wäre dann 8; die Byteadresse wäre dann 4). 5. Verknüpfungen erstellen Legen Sie zunächst die Verbindungen zwischen S7CP, S7Device und S7Variable an: Verbindung 1: Von S7CP (PropertyChange) nach S7Device (PropertyChange) Verbindung 2: Von S7Device (PropertyChange) nach S7Variable (PropertyChange) Weiterhin müssen noch folgende Verknüpfungen hergestellt werden: 1. Verbinden Sie das Ereignis actionperformed des Read -Buttons mit der Methode processget() der S7Variable. 2. Verbinden Sie das Ereignis actionperformed des Write -Buttons über Ereignis zu Code mit der Arbeitsfläche (einzufügender Code siehe unten). 3. Verbinden Sie das Ereignis propertychange der S7Variable über Ereignis zu Code mit der Arbeitsfläche (einzufügender Code siehe unten). Der folgende gesamte Quelltext kann für eine einfachere Reproduktion in eine Textdatei z.b. Source_4_Code.txt kopiert werden. Sie können dann einfach Teile aus der geöffneten Datei kopieren und in Ihr Applet als Source Code per Copy & Paste, wie im Video gezeigt, einfügen.

zu 2.: Fügen Sie folgenden Code in die Methode ein: (Beachten Sie bitte, dass Ihre TextFields evtl. andere Bezeichnungen haben! Passen Sie den Code bitte entsprechend an.) ------------------------------------------------------------------ String text; int itmp; long ltmp; int[] myarray = new int[32]; //length of DB4 // Word1 itmp = Integer.valueOf(getTextField1().getText()).intValue(); myarray[0] = (itmp & 0xFF00) >>> 8; myarray[1] = itmp & 0x00FF; // Word2 itmp = Integer.valueOf(getTextField2().getText()).intValue(); myarray[2] = (itmp & 0xFF00) >>> 8; myarray[3] = itmp & 0x00FF; // DWord1 ltmp = Long.valueOf(getTextField3().getText()).longValue(); myarray[4] = (int)((ltmp & 0xFF000000) >>> 24); myarray[5] = (int)((ltmp & 0x00FF0000) >>> 16); myarray[6] = (int)((ltmp & 0x0000FF00) >>> 8); myarray[7] = (int)(ltmp & 0x000000FF); // Time of day ltmp = Long.valueOf(getTextField4().getText()).longValue(); myarray[8] = (int)((ltmp & 0xFF000000) >>> 24); myarray[9] = (int)((ltmp & 0x00FF0000) >>> 16); myarray[10] = (int)((ltmp & 0x0000FF00) >>> 8); myarray[11] = (int)(ltmp & 0x000000FF); // Text text = gettextfield5().gettext(); myarray[12] = 18; // max length of this S7 String if (text.length() > myarray[12]) { // String to large myarray[13] = myarray[12]; // cut string } else { myarray[13] = text.length(); //current used length } for (int i=0;i<myarray[13];i++) { myarray[14+i] = text.charat(i); } gets7variable1().setvalue(myarray); zu 3.: Fügen Sie folgenden Code in die Methode ein:(beachten Sie bitte, dass Ihre TextFields evtl. andere Bezeichnungen haben! Passen Sie den Code bitte entsprechend an.) ------------------------------------------------------------------ int[] myarray = (int[]) evt.getnewvalue(); int word1, word2; long dword1, tod; char[] text = new char[myarray[13]]; //used length of the S7-String word1 = (myarray[0]<<8) + (myarray[1]); word2 = (myarray[2]<<8) + (myarray[3]); dword1 = (myarray[4]<<24) + (myarray[5]<<16) + (myarray[6]<<8) + (myarray[7]); tod = (myarray[8]<<24) + (myarray[9]<<16) + (myarray[10]<<8) + (myarray[11]); for (int i=0; i<myarray[13]; i++) { text[i] = (char)myarray[14+i]; } gettextfield1().settext( +word1); gettextfield2().settext( +word2); gettextfield3().settext( +dword1); gettextfield4().settext( +tod); gettextfield5().settext( +text); ------------------------------------------------------------------

Sie sollten zum Schluss etwa folgendes Ergebnis in Ihrem Composition Editor sehen: Bild 7: Vollständiges Applet in VisualAge 6. Testen der Applikation Wenn Sie Ihr Applet nun testen, beachten Sie bitte, dass Sie in jedem Textfeld einen gültigen Wert eingegeben haben müssen, bevor Sie den Write -Button betätigen. Das Schreiben von Daten bewirkt übrigens implizit, dass die Daten anschließend wieder ausgelesen und angezeigt werden. Versuchen Sie einmal im Feld Text eine Zeichenkette länger als 18 Zeichen einzugeben. Die Zeichen werden, nachdem Sie den Button betätigt haben, abgeschnitten und der verkürzte String wird angezeigt. Zusatzinformationen: Der beigefügte Videofilm 05_Array.avi zeigt Ihnen den oben beschriebenen Vorgang nochmals zum besseren Verständnis Weiterhin steht Ihnen ein importierbares Repository Array.dat als lauffähiges Beispiel zur Verfügung.