OP7 => Menüstruktur erweitern+ akt. Prozeßdaten anzeigen

mega_ohm

Level-2
Beiträge
675
Reaktionspunkte
45
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

wir haben ein OP7 ( MPI ), welches mit einer s7-3xx kommuniziert.

Ich möchte eine weitere Menüebene ( Timer ) mit 5 s5- Zeiten einfügen.
Das müßte ich noch selbst hinbekommen

Ich würde die 5 Zeiten mittels Protool als WORD deklarieren.
( Zeiten: 0 .. max. 10s, Millisekunden sollten auch möglich sein )
Wie sende ich die an die s7 ?
Ich muß sie in der s7 als DB?.DBW? auslesen ?
Paßt dann der übergebene Wert für gleich so für einen z.b. SI- Timer ?

Desweiteren würde ich gern eine "Standard- Anzeige" haben... wenn nix ist, sollen ein paar Werte ( Position eines Wagens [ Bereich: 0 .. 7500] und 2 Zähler [ Bereiche: 0 .. 100] ) angezeigt werden.
Kann man eine Anzeige so hinbekommen ?
Muß ich irgendwas beachten ?

Mfg
 
Im DB legst Du die Timer als S5Time ab.

Im OP eine Verbindung zur Variablen anlegen (Timer)
Im Bild ein E/A Feld Dezimal.
Ich glaube beim OP7 war das so, das man direkt Sekunden eingeben konnte, mit Kommastellen dann s/10 usw.
Diesen DB Eintrag kannst DU dan direkt an den Timer schreiben ohne Umwandlung.

Kenne ja die Menüstruktur nicht , was du damit meinst. Eventuell ist im OP bisher nur das Standard-Projekt von Siemens.
Dann sollte man ein neues Bild anlegen, dieses unter Eigenschaften als StartBild deklarieren, und von dort ins alte Menü.
In diesem Startbild kann man dann deine Daten anzeigen.
Lade doch mal das altuelle OP hier hoch , aus dem Verzeichnis TDOP die Datei mit der Endung PDB.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im DB legst Du die Timer als S5Time ab.

Im OP eine Verbindung zur Variablen anlegen (Timer)
Im Bild ein E/A Feld Dezimal.
Ich glaube beim OP7 war das so, das man direkt Sekunden eingeben konnte, mit Kommastellen dann s/10 usw.
Diesen DB Eintrag kannst DU dan direkt an den Timer schreiben ohne Umwandlung.

Kenne ja die Menüstruktur nicht , was du damit meinst. Eventuell ist im OP bisher nur das Standard-Projekt von Siemens.
Dann sollte man ein neues Bild anlegen, dieses unter Eigenschaften als StartBild deklarieren, und von dort ins alte Menü.
In diesem Startbild kann man dann deine Daten anzeigen.
Lade doch mal das altuelle OP hier hoch , aus dem Verzeichnis TDOP die Datei mit der Endung PDB.

- Da ja auf dem OP schon was läuft, konnte ich mal feststellen, daß ein Bereichszeiger für das aufgerufene Bild schon existiert => also muß ich den erst mal ( in ProTool) so erweitern, daß mein Bild ( z.b. die Zeiten) auch mit "dabei" ist.
- Das Nächste wäre, das neue Bild zu kreieren und einen "Übergabe"- DB festzulegen.
- Dieser müßte dann mit s7 "reden"...

Was mir aufgefallen ist: ( das habe ich gesehen... ist nicht auf meinem Mist gewachsen ! Ich habe mal in ein anderes Projekt "reingespitzt" )

- Auf dem OP7 ( ProTool ) wird eine Variable ( Zeit ! ) z.b. in DB60.DBW4 geschrieben, deklariert als:
=> Dezimal ( genau, wie Du es beschreibst )
=> "Ein- / Ausgabe"
=> Zeichenlänge = 4 ( was auf dem OP dargestellt wird )
=> 1 Nachkomma- Stelle
=> min. Grenze = 0
=> max. Grenze = 400

Die Kommunikation zur s7 wird über 2 Bausteine ( Senden bzw. Empfangen ) geklärt.

Mich wundert, daß das funktioniert:
- in der s7 wird ein FB 60 "Umwandlung in BCD" aufgerufen, der einen
IDB60 erzeugt
- es wird der DBW60.DBW4 gelesen (als WORD deklariert ! ), auf #Zeit_2
( eine temp. Var.) geschrieben.
- Danach folgt der Befehl ITB ( ich schwöre es )
und danach wird das Ganze in DB60.DBW12 gesichert und ist danach im gesamten Programm als Zeit verwendbar.

Habe ich irgendwas vergessen, war ich verschüttet ?
Funktioniert es tatsächlich, daß ich eine Komma- Zahl als WORD speichern kann ( mir würde als Eingabe spontan eine 0.5 einfallen ) und diese mit IntegerToBCD in eine s5#Time umwandele ??? :confused:

Dann wäre mein "Problem" ja ganz einfach und vollständig gelöst.

Meinen Wunsch nach einem "Status- Bildschirm würde ich lösen, indem ich
einfach diese "Bild- Nummer" lade, wenn für eine bestimmte Zeit NIX ist.
( Keine Störmeldungen, kein anderes Bild )

Mfg
 
Zuletzt bearbeitet:
Ich habe da noch nie etwas umgerechnet, wenn man im Protoll angibt das es ein Timer ist, rechnte das OP das um, die schreibst also dann kein Komma in ein Word. Das geht komplett ohne was zusätzlich zu machen.

Das ist auch sehr schnell und einfach am OP getestet. Ich kann es nur nicht simulieren da es ein OP7 ist. Hab es so aber in einigen Anlagen schon drin, obwohl ich das OP7 zum :sb5:finde. Einfach zu wenig Platz um eine gute Benutzerführung zu machen, aber bei kleinen Sachen ist es besser als gar nix.


Die Kommunikation zur s7 wird über 2 Bausteine ( Senden bzw. Empfangen ) geklärt.

ich gehe mal davon aus, das du damit die DB's meinst, FB's oder so werden zur Kommunikation nicht benötigt.
 
@mega_ohm

Habe ich irgendwas vergessen, war ich verschüttet ?
Funktioniert es tatsächlich, daß ich eine Komma- Zahl als WORD speichern kann ( mir würde als Eingabe spontan eine 0.5 einfallen ) und diese mit IntegerToBCD in eine s5#Time umwandele ???

Die Zahl die du eingibst ist keine Kommazahl, sie wird am Op7 lediglich
mit einer Nachkommastelle angezeigt. An die SPS wird eine Ganzzahl
(Festpunktzahl) übergeben.

Gruß

Jürgen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe da noch nie etwas umgerechnet, wenn man im Protoll angibt das es ein Timer ist, rechnte das OP das um, die schreibst also dann kein Komma in ein Word. Das geht komplett ohne was zusätzlich zu machen.
Dann muß ich das nächste Woche mal austesten. Ich meine auch, daß ich bei meinem "wilden" Umsehen in ProTools irgendsowas wie Timer gesehen hätte.
Aber ich schwöre (!), daß ich bei meiner "Kiebitzerei" ( oder "Lernen von anderen" ) genau das gefunden habe, was ich schon beschrieben hatte.
- Auf dem OP7 ( ProTool ) wird eine Variable ( Zeit ! ) z.b. in DB60.DBW4 geschrieben, deklariert als:
=> Dezimal ( genau, wie Du es beschreibst )
=> "Ein- / Ausgabe"
=> Zeichenlänge = 4 ( was auf dem OP dargestellt wird )
=> 1 Nachkomma- Stelle
=> min. Grenze = 0
=> max. Grenze = 400

... Einfach zu wenig Platz um eine gute Benutzerführung zu machen, aber bei kleinen Sachen ist es besser als gar nix.
Das OP7 ist für ein paar Eingaben oder irgendwelche Anzeigen ( Fehlermeldungen, Betriebs-Zustandsanzeigen, Info zu Schrittketten etc.) an dezentraler Stelle ( 50m vom Haupt- Bedientableau entfernt soll ein Anlagenbediener informiert werden [z.B.: "Schutztür links an
< Anlagenteil> offen" ] bzw. Änderungen an im Sichtbereich befindlichen Anlageteilen eingeben können [ z.B.: "Walzkaliber auf Position <???> fahren" ] recht gut zu gebrauchen.
Ich habe z.B. auch gern ein OP3 anstatt -zig blödsinnig leuchtenden oder mit 1Hz blinkend ( bedeutet Irgendwas... ), mit 2Hz blinkend was anderes.
Ich mag Maschinen, die mit ihrer Umwelt "reden".
Das schafft viel zufriedenere und motiviertere Anlagenbediener.
Sie können dann nämlich in die E- Werkstatt kommen und
"24V- Fehler, Si-Automat Dig. Ausgänge ausgelöst, E??.? muß =1 sein" in die Landschaft posaunen. ( wenn sie sich den Fehlertext auf dem Weg von der Anlage bis zur Werksatt merken konnten )
Und danach gucken diese Mitarbeiter immer "ganz wichtig", als hätten sie den Fehler schon gefunden... wollen es der Welt aber nur mal eben noch schnell sagen.
ich gehe mal davon aus, das du damit die DB's meinst, FB's oder so werden zur Kommunikation nicht benötigt.
Es wird ein FB60 aufgerufen, in dem die Übergaben ( DB60.DBW4 ... etc. )
in BCD umgewandelt wird ( mittels ITB ). Das Ergebnis wird im DB60.DBW12 ( z.B. ) gesichert in einen IDB gesichert.
Der FB60 funktioniert also ( früher in TP6 / BP7.0 nannte man es so ) als EventHandler.
Für die Kommunikation zwischen OP und S7 ist der FB60 nicht zuständig. Dort werden die Übergaben "nur" angepaßt.

Mfg

________________________________________________________________
Soweit habe ich meine zusätzlichen Zeiten hinbekommen.
Tatsache: es funktioniert so, wie ich es oben beschrieben hatte ( ich war heute mal "online" )
=> Eingabe auf dem OP7 = 0.5 sec ( Sekunden sind mittels der Eingabe- Maske vorgeschrieben ) => in s7 wird ein Wert ( nach dem FB60) von 500ms übergeben. ( das habe ich mir aber "nur" in FUP angeschaut ).
Für was anderes hatte ich in der heutigen Glut keinen Nerv !

Wie schon geschrieben... ich staune immer noch ganze Hochhäuser, daß eine als WORD deklarierte Adresse Kommastellen übergibt.

Mfg
 
@mega_ohm



Die Zahl die du eingibst ist keine Kommazahl, sie wird am Op7 lediglich
mit einer Nachkommastelle angezeigt. An die SPS wird eine Ganzzahl
(Festpunktzahl) übergeben.

Gruß

Jürgen
:) Die Zeit (Zahl), die ich eingeben kann sieht z.B. so aus: 0.5 [sec]
<= eindeutig eine EINGABE mit Kommastelle :confused: oder doch nicht ?

Die Einheit (sec ) wird im Bild von ProTools festgelegt => soweit ist mir das klar.
Tatsache ist auch, daß nach Blick auf die Armbanduhr die 1/2 sec im wahren Ablauf "hinkommt".

Ich habe nächste Woche Nachtschicht und die Anlage steht.
Dann werde ich mich mal "online hängen" und mal schauen, was genau da zum FB60 übergeben wird.

... An die SPS wird eine Ganzzahl (Festpunktzahl) übergeben.
Wie würde diese Zahl denn anhand meiner Beispiel- Zeit aussehen ?
( 0.5 )

Mfg
 
Hallo mega_ohm,



Was mir aufgefallen ist: ( das habe ich gesehen... ist nicht auf meinem Mist gewachsen ! Ich habe mal in ein anderes Projekt "reingespitzt" )

- Auf dem OP7 ( ProTool ) wird eine Variable ( Zeit ! ) z.b. in DB60.DBW4 geschrieben, deklariert als:
=> Dezimal ( genau, wie Du es beschreibst )
=> "Ein- / Ausgabe"
=> Zeichenlänge = 4 ( was auf dem OP dargestellt wird )
=> 1 Nachkomma- Stelle
=> min. Grenze = 0
=> max. Grenze = 400


was ich meinte war folgendes:

Wenn man davon ausgeht daß deine Zeit-Variable (DB60.DBW4) vom Typ INT ist und das Ein-/Ausgabefeld mit einer Nachkommastelle projektiert ist, würde bei einer Eingabe von z.B. 35,0 ==> 350 an die SPS übergeben werden.

Die Eingabe wird zwar mit Nachkommastelle angezeigt, aber als
Ganzzahl (INT) in den DB geschrieben. Die Umrechnung in das S5T-Format
erfolgt dann in dem ominösen FB60.

Um präziser zu antworten müsste man wissen,
wie die Variable im OP7 angelegt ist (INT oder Timer-Format)?

MfG

Jürgen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo mega_ohm,






was ich meinte war folgendes:

Wenn man davon ausgeht daß deine Zeit-Variable (DB60.DBW4) vom Typ INT ist und das Ein-/Ausgabefeld mit einer Nachkommastelle projektiert ist, würde bei einer Eingabe von z.B. 35,0 ==> 350 an die SPS übergeben werden.

Die Eingabe wird zwar mit Nachkommastelle angezeigt, aber als
Ganzzahl (INT) in den DB geschrieben. Die Umrechnung in das S5T-Format
erfolgt dann in dem ominösen FB60.

Um präziser zu antworten müsste man wissen,
wie die Variable im OP7 angelegt ist (INT oder Timer-Format)?

MfG

Jürgen
Die Variable DBW4 ist als WORD angelegt.

Im FB60 ist die Mimik ganz einfach:
Code:
L DB60.DBW4
ITB
L W#16#1000
+I
T DB60.DBW12
DBW12 ist als s5TIME deklariert.

Mfg
 
Hallo mega_ohm,

so würde es funktionieren


Beispiel: Eingabe 0,5 s.

Code:
L DB60.DBW4      ==> Dez  5                     (Wert vom OP7) 
ITB              ==> 0000 0000 0000 0101        (Zeitwert=5) 
L W#16#1000      ==> 0001 0000 0000 0000        (Zeitraster=0,1s)
+I                  ---------------------
T DB60.DBW12     ==> 0001 0000 0000 0101        (T=0,5s)






Mfg
Jürgen
 

Anhänge

  • Timer_1.jpg
    Timer_1.jpg
    107 KB · Aufrufe: 8
  • Timer_2.jpg
    Timer_2.jpg
    43,8 KB · Aufrufe: 6
Zurück
Oben