# Ein Problem mit ProTool



## anne (16 Februar 2011)

Hi Ihr,

ich habe das Problem, dass ich in ein bestehendes Protool-Projekt eine *Zustandsfläche* (Schalter) einbinden muss - aber nicht auf die Oberfläche (siehe Bild 1) umschalten kann, um das zu bewerkstelligen.

Es soll einfach nur ein Schalter mit EIN und AUS hinzugefügt werden. Sobald ich auf das entspr. Bild klicke, in das der Schalter eingefügt werden soll, öffnet sich bei mir das Bild aus Anhang 2.

Was mache ich denn falsch?

Vielen Dank...


----------



## Larry Laffer (16 Februar 2011)

Hallo,
gib doch mal ein paar mehr Info's zu deinem Bediengerät und der ProTool-Version.
Es sieht allerdings ein bißchen so aus, als wenn da irgendwelche Verweise durcheinander gingen. Das Bild2 stellt den Bildspeicher eines OP7 (z.B.) dar.

Gruß
Larry


----------



## anne (16 Februar 2011)

Hallo LL,

also es ist ein OP7 und die ProTool Version 6, SP3.


Es gibt mehrere projektierte Bilder. Wenn ich auf eines dieser Bilder doppelklicke so öffnet sich das Fenster, das bei mir im Anhang mit Bild 2 gekennzeichnet ist.

Es sollte sich aber doch (wie bei WinCC flex gewohnt) beim Doppelklicken ein Bild öffnen, in das ich dann z.B. eine Schaltfläche integrieren kann.

Ebenso fehlen bei mir sämtliche Symbolleisten - also Schaltflächen, usw. (siehe Bild 3).


----------



## PN/DP (16 Februar 2011)

Hallo Anne,
das OP7 ist ein reines Textdisplay, da kann man keine eigene Schaltflächen in ein Bild einfügen. Nur E/A-Felder.
Und man kann nur in jedem Bild festlegen, welche Aktionen die vorhandenen Hardware-Funktionstasten ausführen sollen.

Gerätehandbuch Operator Panel OP7, OP17
Kurzanleitung SIMATIC HMI Zeilengeräte projektieren
Benutzerhandbuch SIMATIC HMI ProTool Zeilengeräte projektieren

Harald


----------



## BPlagens (16 Februar 2011)

Da OP7 ist aber doch kein Touch!? 
Da kannst du "nur" Werte anzeigen oder Eingaben tätigen.
Die Tasten sind die Tasten auf der Folientastatur - nur diese kannst du belegen (entweder global oder je nach bild).

Da war PN/DP wohl schneller!


----------



## PN/DP (16 Februar 2011)

So könntest Du z.B. in einem Bild den Funktionstasten F1 und F2 die EIN- und AUS-Funktion zuweisen:

Zunächst das OP-Bild beschriften, die unterste Zeile nimmt man als Beschriftung der darunterliegenden F-Tasten.

```
12.3 Zylinder 1234
xx xxxx xxxx xxx
text text te xt text
EIN   AUS
--------------------
[F1] [F2]  [F3] [F4]
```
auf F1 klicken -> Reiter Allgemein: boolsche Variable S_Zyl1_Ein auswählen / Bitnummer: 0
auf F2 klicken -> Reiter Allgemein: boolsche Variable S_Zyl1_Aus auswählen / Bitnummer: 0

Nun wird beim Drücken von F1 bzw. F2 die CPU-Variable S_Zyl1_Ein bzw. S_Zyl1_Aus auf 1 gesetzt
und beim Loslassen wieder auf 0 geschrieben.
Im SPS-Programm müßtest Du dann S_Zyl1_Ein und S_Zyl1_Aus wie richtige Hardware-Taster auf eine S/R-Box programmieren.

Oder Du nimmst eine numerische Variable (mindestens Byte) S_Zyl1_Schalter:
auf F1 klicken -> Reiter Funktionen: Wert setzen, Variable: S_Zyl1_Schalter, Wert: 1
auf F2 klicken -> Reiter Funktionen: Wert setzen, Variable: S_Zyl1_Schalter, Wert: 0

Harald


----------



## anne (16 Februar 2011)

Vielen Dank für eure Ausführungen,

stimmt - das OP7 ist nur ein Textdisplay. Bin ich d... 

Ok, dann besteht also nur die Möglichkeit einen Schalter über die Funktionstasten zu simulieren.

Lieben Dank!


----------



## anne (16 Februar 2011)

PN/DP schrieb:


> Oder Du nimmst eine numerische Variable (mindestens Byte) S_Zyl1_Schalter:
> auf F1 klicken -> Reiter Funktionen: Wert setzen, Variable: S_Zyl1_Schalter, Wert: 1
> auf F2 klicken -> Reiter Funktionen: Wert setzen, Variable: S_Zyl1_Schalter, Wert: 0
> 
> Harald



Ja, so war es gedacht. Beim Drücken von F1 (= Merker an) und beim Drücken von F2 (= Merker aus).

Aber dazu darf es ja kein Merker sein - muss ich da dann ein MW dafür hernehmen?

Bsp: 

Variablenname = S_Zyl1_Schalter
*Typ: WORD
       MW 10*

Nur wie bestimme ich dann, dass der Wert = 0 bzw. der Wert = 1 ist - geht das dann über folgende Zuweisung?

*Wert: 1.00000 *bzw. *Wert: 0.00000
* 
Lieben Dank!


----------



## PN/DP (16 Februar 2011)

anne schrieb:


> Variablenname = S_Zyl1_Schalter
> *Typ: WORD
> MW 10*


Ja, kannst Du so machen. Oder MB10, oder DB10.DBW12 oder ...
Es kann nur keine boolsche Variable wie M10.0 oder DB10.DBX12.0 sein.
Das MW10 darf auch als INT deklariert sein.



anne schrieb:


> Nur wie bestimme ich dann, dass der Wert = 0 bzw. der Wert = 1 ist - geht das dann über folgende Zuweisung?
> 
> *Wert: 1.00000 *bzw. *Wert: 0.00000*


Exakt. *Wert: 1.00000 *bzw. *Wert: 0.00000*
Das ProTool-Wert-Eingabefeld verlangt immer eine Gleitkommazahl, die wird aber zum Datentyp der Zielvariable konvertiert.

Harald


----------



## anne (16 Februar 2011)

Aja, super - danke Harald. 

Wenn ich nun beispielsweise das MB10 heranziehe, so bedeutet das, dass für den Fall

*Wert: 1.00000

*alle 8 Bits den Status "1" besitzen und ich mir dann in der SPS z.B. den Merker M10.6 herauspicken kann, um einen Ausgang zu setzen; bzw. rückzusetzen.

Stimmt das so?


----------



## Jochen Kühner (16 Februar 2011)

anne schrieb:


> Aja, super - danke Harald.
> 
> Wenn ich nun beispielsweise das MB10 heranziehe, so bedeutet das, dass für den Fall
> 
> ...



Denke Ich nicht! Es wird nur das Bit an Stelle 0 gesetzt! Wenn du ff = 255 reinschreibst, dann sollten alle bits sitzen!


----------



## anne (16 Februar 2011)

Danke Jochen,

was müsste ich denn dann anstatt von 

1.00000

für "Wert" deklarieren, dass beispielsweise M10.6 true, bzw. false wird?

Geht das denn überhaupt in diesem Feld?


----------



## Jochen Kühner (16 Februar 2011)

2 hoch 6 = 64


----------



## Jochen Kühner (16 Februar 2011)

Ob das geht, kann ich dir aber nicht sagen, einfach probieren...


----------



## Jochen Kühner (16 Februar 2011)

Nochwas, wenn du das ganze bei einem Wort oder Doppelwort machst, musst du auch noch die Endianness beachten (Lowbyte/Highbyte tauschen!)


----------



## anne (16 Februar 2011)

PN/DP schrieb:


> Das ProTool-Wert-Eingabefeld verlangt immer eine Gleitkommazahl, die wird aber zum Datentyp der Zielvariable konvertiert.
> 
> Harald



Danke Jochen, aber demnach wird es wohl so nicht gehen...

D.h. dann, dass bei ProTool immer nur das Bit0 eines Bytes gesetzt, bzw. rückgesetzt werden kann - das gibt's ja fast nicht, oder?


----------



## PN/DP (16 Februar 2011)

anne schrieb:


> D.h. dann, dass bei ProTool immer nur das Bit0 eines Bytes gesetzt, bzw. rückgesetzt werden kann - das gibt's ja fast nicht, oder?


Nöö, heißt es nicht. Man kann auch 2, 4, 8, 16, 32, 64, 128 in eine Byte-Variable schreiben, dann setzt man jedesmal ein anderes Bit in der Variable auf 1 (alle übrigen Bits werden dabei immer auf 0 geschrieben!). Man kann auch mehrere Bits gleichzeitig auf 1 schreiben (alle Zahlen von 3 bis 255 außer die eben aufgezählten).

Hallo Anne, bist Du heute etwa krank? Du bist doch sonst nicht so "blond". 

Was Dich jetzt so verwirrt liegt nicht am ProTool, sondern am OP7. Das uralte OP7 ist eines der ersten OP (ich meine sogar DAS erste OP), was für den Anschluß an die S7-300 entwickelt wurde. Das OP7 kennt keine Systemfunktion Bit_setzen bzw. Bit_rücksetzen. Es kann nur die direkte Verknüpfung einer Funktionstaste mit einer boolschen Bit-Variable (Taste drücken: setzt das Bit / Taste loslassen: rücksetzt das Bit) und das Zuweisen eines Wertes an eine numerische Variable (Byte, Word oder Doppelword bzw. REAL). Siehe nochmal Beitrag #6.

Wenn man nun wie Du eine Schalter-Funktion benötigt, so geht das nur mit der Systemfunktion Wert_setzen. Man muß dafür beim OP7 eine numerische Variable benutzen, auch wenn man nur die Werte 0 und 1 in die Variable schreiben will. Wenn man nun nur 0 und 1 in die Variable schreibt, so hat das den Effekt, daß nur das niederwertigste Bit der Variable dabei verändert wird (alle anderen Bits werden immer auf 0 geschrieben). Wo ist da ein Problem außer der Speicherplatzverschwendung? Welches Bit das niederwertigste Bit in einer Variable ist, sollte man "im Schlaf" wissen oder man probiert es einfach aus oder simuliert das. Wenn man es nicht weiß und nicht ausprobieren will, dann kann man natürlich "vorsichtshalber" einen Wert in die Variable schreiben, der garantiert alle Bits in der Variable setzt, also z.B. 255 in ein Byte, 65535 in ein Word, -1 in ein INT, ... Dann ist es egal, welches Bit man abfragt. Man kann aber auch die numerische Variable im SPS-Programm auf == 0 und <> 0 vergleichen, das hat sogar den Vorteil, daß man den Vergleich symbolisch mit genau der Variable machen kann, die im OP7 per Wert_setzen beschrieben wird.

Harald


----------



## anne (17 Februar 2011)

PN/DP schrieb:


> Hallo Anne, bist Du heute etwa krank? Du bist doch sonst nicht so "blond".
> 
> Harald



Hallo Harald, 

erst mal danke für deine Bemühungen mit einer (momentan tatsächlich gesundheitlich etwas angegriffenen [woher weißt du?]) blonden Weiblichkeit! Aber das soll jetzt natürlich keine Ausrede sein...

Mir bereitet hier einfach das  ProTool-Eingabefeld (verlangt immer eine Gleitkommazahl) etwas Kopfzerbrechen:



PN/DP schrieb:


> Nöö, heißt es nicht. Man kann auch 2, 4, 8, 16, 32, 64, 128 in eine  Byte-Variable schreiben.



Also angenommen ich wähle das MB0 aus und möchte 4 in dieses Eingabefeld schreiben, so hieße das dann:

Wert: 4.00000 ?

LG


----------



## PN/DP (17 Februar 2011)

anne schrieb:


> Mir bereitet hier einfach das  ProTool-Eingabefeld (verlangt immer eine Gleitkommazahl) etwas Kopfzerbrechen:
> 
> Also angenommen ich wähle das MB0 aus und möchte 4 in dieses Eingabefeld schreiben, so hieße das dann:
> 
> Wert: 4.00000 ?


Ja genau. Gib einfach ein: *4* + <Enter> und ignoriere einfach, daß ProTool da noch *.00000* dahinterschreibt.
ProTool formatiert den Wert bei der Systemfunktion Wert_setzen einfach immer so. Die Funktion schreibt dann aber tatsächlich den Ganzzahlwert 4 in das Byte - so wie gewollt.

Meine Andeutung mit "krank" und "blond" sollte kein Vorwurf an Dich sein, sondern eher ein Lob an Deine Auffassungsgabe bei Deinen bisherigen Fragen. Nur dieses mal tust Du Dich ein bischen schwer ...

Harald


----------



## anne (18 Februar 2011)

Danke Harald,

hat soweit alles *supi *geklappt (dank dir...)!




PN/DP schrieb:


> Meine Andeutung mit "krank" und "blond" sollte kein Vorwurf an Dich  sein, sondern eher ein Lob an Deine Auffassungsgabe bei Deinen  bisherigen Fragen. Nur dieses mal tust Du Dich ein bischen schwer ...
> Harald



Nein, habe ich auch nicht als Vorwurf verstanden - ist halt manchmal als relativer Neuling auf diesem Gebiet etwas viel, was da auf einen "einprasselt". Leider habe ich sonst keinen, den ich fragen kann. Daher müsst ihr immer büßen... 

Vielen Dank an alle für die Unterstützung!


----------



## anne (20 Februar 2011)

Leider ich schon wieder...

bin jetzt nochmals auf ein Problem mit dem OP7 gestoßen:

Das OP wechselt nach dem Anlauf in die Meldeebene, da in der Projektierung kein Startbild definiert wurde. Das Panel startet also mit dem Bild X - offensichtlich in der Meldeebene.

In diesem Bild X ist auch ein Infotext hinterlegt. Aber den kann ich* nicht* ändern! 

Selbst wenn ich diesen Text ganz rauslösche, so erscheint er nach dem Übertragen immer noch und die HELP-LED leuchtet.

Frage:

Wo kann dieser Infotext geändert werden, der nach dem Start des Panels in der Meldeebene erscheint?

Vielen Dank!


----------



## anne (20 Februar 2011)

Ah, hab's selbst gefunden...

Der Infotext ist in der sogn. Ruhemeldung hinterlegt; diese ist die Betriebsmeldung mit der Nummer 0.

Danke!


----------

