S7-200 Passwort durch externes Signal ersetzen?

Bud

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
habe da ein Problem mit einer Aufgabenstellung für die S7-200 Microwin und komme irgendwie nicht weiter. Folgendes Problem besteht:
Bestimmte Variablen dürfen nur von autorisierten Benutzern in der TD200 geändert werden. Dafür kann man die Variablen ja durch ein Passwort schützen. Leider verbreitet sich das Passwort sehr schnell weiter, so dass es nach kurzer Zeit jeder kennt und damit keinen wirksamen Schutz bietet.

Folgende Aufgabenstellung wurde mir vorgegeben:
Der Passwortschutz soll durch einen Schlüsselschalter ersetzt werden. Also an den Stellen, an denen vorher ein Passwort eingegeben werden musste, soll nun ein Schlüssel (den nur eine verantwortliche Person besitzt) die Eingabe freischalten. Wird der Schlüssel wieder abgezogen, soll auch die Eingabemöglichkeit ausgeschaltet werden.

Habe schon so einiges probiert, aber irgendwie schaffe ich es nicht eine so vermeindlich einfache Sache umzusetzen. Kann mir hier jemand einen Tipp geben, wie man das bewerkstelligen kann?

Danke
 
Hallo Bud

Arbeitest du mit WinFlex ?
Wenn ja kannst du deine Eingabefelder unter "Animation" -> "Bedienbarkeit" sperren, bzw die Bedienfreigabe mit einer Variable verknüpfen.

MfG
Paul
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Arbeitest du mit WinFlex ?

ich glaube nicht, tim.

... das TD200 wird direkt aus microWin projektiert ...

und das hab ich hier nicht mehr, aber guck mal, ob du bilder von einem bit abhängig, verfügbar machen kannst, so daß die eingabemaske nur aufgerufen werden kann, wenn der schlüsselschalter betätigt ist.

eine andere möglichkeit wäre eine wertübernahme ... also die variablen vom TD200 nochmal umkopieren und dieses umkopieren nur zuzulassen wenn der schlüssel da ist, wenn nicht, wird das umkopieren einfach übersprungen und es wird mit den alten werten weiter gearbeitet (das ist aber eher die unsaubere lösung - IMHO)
 
oben lings in die CPU Gehäuse ist noch ein wenig Platz für eines Schlüsselschalter. Dort ein Loch reingebort passt ein SHS-Achtbart Sicherheitsschloss. Zwei gehärtete Briegen rückseitig auf die Montageplatte verschweisst und versiegelns von die Innenraum mit Epoxidhartz kann die Oberschale des Gehäuses gegen unbefugtes Abziehen sichern. Die Klemmenanschlus bei das betreffenden Eingang musste allerdings noch durch geeignete Isoliertechnick gegen Eingriffe von Ausen gesichert werden. Doch wenn man die Schraubes rausnimmt kann nimand mehr da was verstellen:ROFLMAO:ROFLMAO:ROFLMAO:
 
Hallo,
erst einmal Danke für die schnellen Antworten.

WinFlex habe ich nicht. Ich arbeite mit dem Programm "Step 7-Micro/Win".

Unter "Extras" -> TD 200 Assistet, wurden die Bedientexte geschrieben und danach erzeugt. Dort kann man ja auch angeben, ob man einen Passwortschutz einsetzen möchte, oder nicht. Des weiteres kann man bei "eingebettete Daten" angeben, ob der Benutzer diese bearbeiten darf und wenn ja, ob der Passwortschutz greifen soll.
Im Datenbaustein wird dann das Variabelenbyte mit dem Wert angezeit, der für jede Anwahlmöglichkeit Gültigkeit hat.
Wenn ich also ein Häkchen bei "Der Benutzer darf die Daten bearbeiten" setze und den Passwortschutz nicht aktiviere, schreibt der Assistent im Datenbaustein (Bearbeitungs-Meldebit: V70.2 / Adresse des Datenwerts VW72) in das Variablenbyte VB71 den Wert 16#30.
Also habe ich schlau nachgedacht und im Programm folgendes geschrieben:

LDN E0.0 (Schlüsselschalter)
MOVB 16#00,VB71 -> Wert 16#00 = Benutzer darf Daten NICHT bearbeiten

LD E0.0 (Schlüsselschalter)
MOVB 16#30,VB71 -> Wert 16#30= Benutzer darf Daten bearbeiten

Leider macht es keinen Unterschied, ob der Eingang E0.0 "1", oder "0" ist. Im VB71 steht zwar der gewünschte Wert, aber das Programm reagiert nicht darauf. Das Ergebnis: Die Daten könne nicht bearbeitet werden, egal was im VB71 steht. Warum?

@Fritz:
Sehr lustig, bringt mich aber nicht weiter.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich glaub, du hast das falsche bit in der mache ... siehe anhang ... aber auf jeden fall: guter ansatz, danke für den hinweis, dass es da ja noch die direkte parametrierung gibt!
 

Anhänge

  • bearbeitungTD200.png
    bearbeitungTD200.png
    24,6 KB · Aufrufe: 24
Ja, du hast recht. Ich habe im falschen Bereich nachgeschaut. In meinem Fall steht der Wert im VB71 für "Wort ohne Vorzeichen;0 Ziffern rechts vom Dezimalpunkt;". Das richtige Byte dafür ist das VB70 (16#00 -> nicht bearbeiten, 16#10 -> bearbeiten). Habe das also im Programm angepasst. Mit gleichbleibendem Ergebnis. Das heisst: Ich kann unabhängig von der Schlüsselschalterstellung keine Daten verändern, obwohl im VB70 der gewünschte Wert steht.

Das Bearbeitungsbit V70.2 bewirkt nur, ob die Daten übernommen werden, oder nicht. Es sperrt aber nicht die Eingabemöglichkeit. Das heisst, wenn ich einen Wert ändere (z.B Temperaturwert von 300 Grad auf 350 Grad) und ich das Bit 2 sperre (mit dem Schlüsselschalter), wird die Variable intern nicht übernommen, aber der Wert in der Anzeige schon. Das ist leider für den Bediener noch verwirrender, weil ihm etwas angezeigt wird, was tatsächlich nicht stimmt. Ein Beispiel:

LDN Schlüsselschalter
R V70.2,1
LD Schlüsselschalter
S V70.2,1

LD V70.2
MOVW VW72, VW2500
R V70.2, 1

Im VW72 steht der Wert, der in der Anzeige geändert wird (z.B. vorher 300 Grad, jetzt 350 Grad). Dieser Wert wird das in das Variablenwort VW2500 transferiert, wenn das Meldebit V70.2 "1" ist. Wenn nicht, wird der Wert auch nicht ins VW2500 geschrieben. In der Textanzeige steht 350 Grad (Der Benutzer darf die Daten ja bearbeiten), im VW2500 aber immer noch "300 Grad", weil ich das Bearbeitungs-Meldebit ja mit dem Schlüsselschalter resetet habe.

Trotzdem Danke für Deinen Lösungsansatz. Vielleicht fällt Dir (oder jemand Anderem) ja noch eine andere Möglichkeit zur Lösung meines Problems ein.

Mich wundert es, dass das Programm nicht auf den eingestellten Wert reagiert, den man in das Variablenbyte geschrieben hat. Etwas anderes macht der TD200-Assistent doch auch nicht. Nur mit dem Unterschied, dass er es nur einmal macht, und dann nicht wieder. Kann das Programm eine Wechsel in diesen Bereichen nicht feststellen und blockiert es deswegen?
 
IF schlüsselschalter != true THEN anzeige := alter_wert;
ELSE anzeige := eingabe;

soll heißen: wenn der schlüsselschalter nicht betätigt ist, einmal im zyklus die anzeigen auf den alten wert zurücksetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo Bud

Ich glaube du bis hier auf dem falschen Weg

Das Meldungsbearbeitungbit wird vom TD gesetzt wenn die dazugehörige Variable im TD geändert wurde und muß nacher von dir wieder resetet werden, um seine Wirkung erneut zu entfalten.
 
hallo Bud

Ich glaube du bis hier auf dem falschen Weg

Das Meldungsbearbeitungbit wird vom TD gesetzt wenn die dazugehörige Variable im TD geändert wurde und muß nacher von dir wieder resetet werden, um seine Wirkung erneut zu entfalten.

guckst du meinen anhang, siehst du zwei bits ... einmal das von dir beschriebene EN und dann das, welches ja funktioniert, E ... E ist zum TD, EN die rückmeldung vom TD
 
Ich dachte, das wär`s. Gute Idee. Leider klappt das auch nicht. Bzw. nur einmal. Soll heissen:

Im Programm
LD Schlüsselschalter
= V70.4

Also:
Wenn Schlüsselschalter = "1", dann V70.4 = "1".
Wenn Schlüsselschalter = "0", dann V70.4 = "0".

Nach dem übertragen (Schlüsselschalter = "0") kann ich den Datenwert nicht ändern. Dann Schalter umlegen und siehe da: Ich kann den Wert verändern. Schalter wieder zurück Eingabe gesperrt. Hurra. Aber nun kommt`s: Schalter wieder auf "1" Eingabe nicht möglich. Warum nur, warum???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
guckst du meinen anhang, siehst du zwei bits ... einmal das von dir beschriebene EN und dann das, welches ja funktioniert, E ... E ist zum TD, EN die rückmeldung vom TD

hab ich in der schnelle überlesen

soll heißen: wenn der schlüsselschalter nicht betätigt ist, einmal im zyklus die anzeigen auf den alten wert zurücksetzen.

Ist nicht nötig, denn es gibt ja das von mir beschriebene Bearbeitungmeldebit mit dem ich nur zurückschreiben muß, wenn auch geändert wurde.
 
Habe im Nachhinein festgestellt, dass das nur eine andere Schreibweise ist, wie ich sie vorher auch programmiert habe.

Also:
LD Schlüsselschalter
MOVB 16#10,VB70
(Hexadezimalwert 10 = Bitwert 1000)

ist gleichzusetzen mit:

LD Schlüsselschalter
= V70.4

In beiden Fällen wird das selbe Bit angesprochen, aber ich kann es anscheinend nicht beliebig oft beschreiben. Online steht im VB70 je nach Schalterstellung für die 5. Bitstelle (V70.4) eine "1", oder eine "0". Nur bearbeiten kann ich da nichts. Grrrr!!!
 
Hier mein Lösungweg

PHP:
Netzwerk1
LD     V0.0                        //Bearbeitungsmeldebit für VW0
U      E0.0                        //Schlüsselschalter
MOVW   VW0, VW2                    //VW0 Zuändernde Varieable im TD
R      V0.0, 1

Netzwerk2
LD     V0.0
UN     E0.0
MOVW   VW2, VW0
R      V0.0, 1
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also:
LD Schlüsselschalter
MOVB 16#10,VB70
(Hexadezimalwert 10 = Bitwert 1000)

ist gleichzusetzen mit:

LD Schlüsselschalter
= V70.4

ist nicht ganz gleichzusetzen ... oben packst du in das byte eine 2#0001 0000
unten änderst du nur das eine bit, also 2#xxx1 xxxx oder 2#xxx0 xxxx

das ist ein großer unterschied.
 
Du könntest auch 2 Meldung erstellen mit gleichem Inhalt.
In der einen Meldung ist der Wert editierbar und in der anderen nicht.
Abhängig von deinem Schlüsselschalter zeigst du nur die entsprechende Meldung an.
 
@ vierlagig:
Da hast du recht. Leider ist das ansprechen des Bit V70.4 auch nicht von Erfolg gekrönt und mir will nicht in den Kopf, warum das so ist.

@ OB1:
Danke für deinen Lösungsvorschlag (so wurde er ja auch von vierlagig vorgeschlagen). Der funktioniert soweit. Nur müsste ich dann überall dort, wo im Programm ein Wert geändert werden kann diese Doppelanweisung schreiben. Bei mehreren dutzend Variablen, die zu allem Überfluss auch noch in mehreren Bausteinen abgefragt werden, ist das leider ein ziemlich grosser Aufwand, der einige Fehlermöglichkeiten bereit hält. Aber dennoch ist das so zweifellos möglich und wird auch so umgesetzt, wenn ich nicht eine globale Lösung finde.
Dieses sollte ja auch durch das setzen bzw. rücksetzen des V70.4 Bits (für diese eine Meldung und bei Erfolg halt zuzüglich der entsprechenden Bits der anderen Meldungen) gewährleisten sein. Leider funktioniert das aber nicht und ich habe keinen blassen Schimmer, warum das so ist. Aber Danke schon mal, dass ihr mich mit meinem Problem nicht allene lasst.

@ crash:
Das geht natürlich auch, würde aber die Maximalanzahl von 80 Meldungen in der TD200 sprengen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich mache meine Abfragen immer in einem Baustein und nicht über das Programm verteilt.
Dort bau ich auch gleich meine Plausibilitätsprüfung für die Variablien ein.
 
Dem kann ich nur zustimmen. Diese Programmierung weicht auch komplett vom dem Standard ab, wie wir in unserer Firma programmieren.
Es handelt sich hierbei auch um ein altes Zukaufgerät. Da die Person die das Programm geschrieben hat nicht mehr in dieser Firma arbeitet
und sich dort keiner damit auskennt, wurde uns das Orginalprogramm geschickt. Nun darf ich immer wieder Änderungen in dem Salat vornehmen.
Teilweise ist es auch ohne Symbolik programmiert. Es ist immer wieder eine Freude, wenn der Chef kommt und mich mit irgendwelchen Änderungen
für diese Kiste beauftragt. So auch in diesem Fall. Aber ich gebe die Hoffnung auf eine globale Lösung nicht auf.

Nocht nicht!
 
Habe eine Entdeckung gemacht.

Wenn ich das Bit für andere Meldungen setze/rücksetzte (z.B. V126.4; V166.4; V206.4 etc, etc.), dann reagiert das Programm genau so, wie ich es erwarte.
Je nach Schalterstellung "0", oder "1" kann ich die Variable verändern, oder sie bleibt gesperrt. Wunderbar. Nur die erste Meldung (V70.4) reagiert immer noch nicht,
obwohl sie genauso behandelt wir, wie die anderen Meldungen. Also bin ich schon mal einen ganzen Schritt weiter. Möchte mich auf diesem Wege nochmal bei allen
Beteiligten für ihr Einbringen bedanken. Ihr habt mir sehr weiter geholfen.
 
Zurück
Oben