TIA TIA V16 gewollte Dateninkonsistenz im Zeitgesteuerten OB (30) ???

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jochen,

wir haben bei uns im Standard eine Abfrage ganz oben im Ob1 welche Prüft ob Always True und False dies wirklich sind wenn nein Cpu Stop! Ist recht hart aber Mann wird auf seine fehler hingewiesen.


Gruß Tia
 
Hallo Jochen,

wir haben bei uns im Standard eine Abfrage ganz oben im Ob1 welche Prüft ob Always True und False dies wirklich sind wenn nein Cpu Stop! Ist recht hart aber Mann wird auf seine fehler hingewiesen.


Gruß Tia

Und wenn es im Zyklus beeinflusst wird? Im nächsten Zyklus sind die Systemmerker ja wieder entsprechend TRUE bzw. FALSE
 
wir haben bei uns im Standard eine Abfrage ganz oben im Ob1 welche Prüft ob Always True und False dies wirklich sind wenn nein Cpu Stop! Ist recht hart aber Mann wird auf seine fehler hingewiesen.
Sehr gut! Kurz nach Einführung der Sinumerik 850 habe ich bei uns am Ende des (S5-) OB 1 folgendes als Standard eingeführt:
Code:
UN  M 0.0  // immer FALSE
U   M 0.1  // immer TRUE
BEB
A   DB 0   // schickt CPU in Stopp
BE
Der SiemensBaustein, den ich in #96 erwähnt hatte, war übrigens der FB 61 (NC-Daten lesen) bzw. der FB 23, der im FB 61 und FB 62 aufgerufen wurde.
 
Ich möchte damit sagen, dass es in den meisten Fällen ziemlich unsinnig ist, eigene Programmierfehler durch eigenes Programmieren abfangen zu wollen. Es ist mir aber auch klar, dass es triftige Gründe für Ausnahmen gibt. Bei deiner Sinumerik schickst du sie wenigstens in den Stopp-Zustand. Ich habe auch schon solche Sachen gesehen, wo die entsprechenden Merker "sicherheitshalber" einfach zyklisch gesetzt worden sind. Solche Dinge sind einfach nicht diskussionswürdig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe auch schon solche Sachen gesehen, wo die entsprechenden Merker "sicherheitshalber" einfach zyklisch gesetzt worden sind. Solche Dinge sind einfach nicht diskussionswürdig.
Das kenne ich auch und war immer strikt dagegen, nach dem Motto "Augen zu und durch" zu programmieren. Wenn Fehler auftreten, die Ursache finden und beseitigen. Aber nicht an den Symptomen herumdoktern, bis das Programm scheinbar (= zufällig) richtig läuft.

Die anfänglichen Befürchtungen meiner Kollegen, dass damit vermeidbare MaschinenStillstände provoziert werden könnten, haben sich nicht bewahrheitet - im Gegenteil, es erwies sich als eine simple und wirksame Massnahme, um neu eingebaute Fehler dieser Art frühzeitig/rechtzeitig/sofort aufzuspüren.

Wäre das doch für andere Arten von Fehlern nur annähernd so einfach! ;)
 
Wie weit will man das eigentlich spinnen?
Als nächstes verschaltet der Kollege ein UND-Gatter
falsch, dann werden die auch verboten usw. usw. bis
die SPS ganz aus der Anlage verschwindet und die Automatisierung
mit Pneumatischen Logik Gliedern ausgeführt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Echt jetzt? Wenn man so etwas einbaut, tritt ein solcher Fehler doch niemals ein?
Ich weiss jetzt nicht, Dagobert, an welcher Stelle wir anscheinend aneinander vorbei geredet haben.
Oder bist Du abergläubisch und meinst, sobald man eine solche "Falle" eingebaut hat, kommt niemand mehr in die Verlegenheit, entsprechende Fehler (unbewusst/ungewollt) einzubauen? ;)

Diese Falle hat wahrscheinlich tatsächlich dazu geführt, dass fortan disziplinierter programmiert wurde. So gesehen kann ich Deine Bedenken
durchaus nachvollziehen.

Wir haben damals zu mehreren an unseren Projekten gearbeitet. Arbeitsteilung zwischen den ProjektVerantwortlichen und den "Zulieferern" für diverse "SpezialGebiete" (z.B. Werkzeug-/Werkstück-/Paletten-Wechsel/-Verwaltung).

Das unabsichtliche Zerschiessen der Immer-Eins- und Immer-Null-Merker hätte jedem der Beteiligten passieren können und es hätte ihn vermutlich (zu) wenig berührt, solange sein eigener Bereich dadurch nicht gestört worden wäre.
Die Auswirkungen des Zerschiessens wirken sich nunmal "global" aus und die Suche nach der wirklichen Ursache kann durchaus mühsam werden.
Durch die RadikalMassnahme wurde man aber unmissverständlich und meistens auch sehr "zeitnah" auf einen fälligen HandlungsBedarf hingewiesen!
Und das schon in der Entwicklungs- oder spätestens in der InbetriebnahmePhase.

Es soll auch vorgekommen sein, dass erst vor Ort an längst laufenden Maschinen Änderungen/Erweiterungen an der PLC-Software durchgeführt wurden
von wohlmeinenden, aber letztlich nicht wirklich informierten Leuten. So hatten wir im TBE zumindest im Fehlerfall eine Chance, von solchen Eingriffen überhaupt zu erfahren, ggfs durch Beschwerden über das letzte, vermeintlich unsinnige Netzwerk des OB 1. ;)

PS:
Wie weit will man das eigentlich spinnen?
Gar nicht!
Damals gab es keine Konstanten TRUE und FALSE und die Notwendigkeit von Immer-Null- und Immer-Eins-Merkern war deshalb gegeben.
Ihre Verwendung liess sich zwar einschränken und beherrschen ... und dennoch war man nicht allein für ihr unversehrtes Überleben zuständig/verantwortlich.
Frühzeitiges Erkennen eines ProgrammierFehltritts war allemal hilfreich, die Ursache (und den Verursacher) einzukreisen.
Die Prüfung erforderte lediglich zwei zusätzliche Befehle, die in jedem Zyklus durchlaufen werden mussten und einen dritten zusätzlichen Befehl, der nur im Fehlerfall den Stopp auslöste.
So wenig Aufwand für so durchschlagenden Erfolg hat man nicht oft! :ROFLMAO:

PPS:
Nein, ich habe mich nicht verzählt.
Der BEB wurde nicht zusätzlich, sondern anstelle des BE durchlaufen und der BE wurde auch im Fehlerfall nicht mehr durchlaufen. ;)
 
Zuletzt bearbeitet:
Bei euch muss es ja zugegangen sein, halleluja :ROFLMAO: !

Ich weiss jetzt nicht, Dagobert, an welcher Stelle wir anscheinend aneinander vorbei geredet haben. ..
Haben wir ja eigentlich auch gar nicht. Ich könnte jetzt noch das Beispiel bringen, dass ich mit meinen Runflat-Reifen noch nie einen Platten hatte. Ich fürchte aber, wir weichen zu weit vom Thema ab :ROFLMAO: .


Für die Nachwelt, Nachtrag zum Thema Runflat:
Jetzt haben sich diese Schlappen endlich mal bewährt. Ich hatte vorne links einen Federbruch. Die gebrochene Feder schlitzte in einer Rechtskurve bei 100km/h den Reifen auf. Ich bin absolut sicher zum Stehen gekommen. Das hätte auch sehr viel schlimmer enden können.
 
Zuletzt bearbeitet:
Damals gab es keine Konstanten TRUE und FALSE und die Notwendigkeit von Immer-Null- und Immer-Eins-Merkern war deshalb gegeben.

Daher sage ich ja, abe jetzt bei uns nur noch True/False. Da hat man eine sache weniger die man falsch machen kann. Und an In/Out kann man die erst gar nicht anlegen...
Alles was der Compiler schon prüfen kann, kann ich nicht falsch programmieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei euch muss es ja zugegangen sein, halleluja :ROFLMAO: !
Klar doch! Wie im richtigen Leben! ;)

Sh ... it happens! Trotz Gewissenhaftigkeit, trotz guter Vorsätze, trotz Absprachen, trotz klarer Regeln, trotz ... u.s.w. ...
Wichtig ist doch nur, dass und wie man darauf reagiert.

Das RunFlat-Reifen-Phänomen gibt es schon länger als es RunFlat-Reifen gibt und es wird oft als VorführEffekt verharmlost.
Hat man den Schirm dabei, regnet es nicht. Oder der Wind sorgt dafür, dass man des Schirms verlusthaftig oder der Schirm zumindest unbrauchbar wird.
C'est la vie! :ROFLMAO:
 
Ich hoffe mal irgendwann wird hier das ursprüngliche Thema noch weiter diskutiert. Ich wäre schon interessiert, ob da etwas im argen liegt.
Aber, Michael, wir haben doch nur deshalb diesen Thread 35 Beiträge lang mühsam am Leben gehalten seit der letzten Unterstützung durch den TE.
Da kommt man schon mal ins Abschweifen. :ROFLMAO:

Also zurück zum ursprünglichen Thema.
Ich frage mich schon 116 Beiträge lang, ob eine DatenInkonsistenz überhaupt jemals gewollt sein kann und warte auch mit Spannung auf die Auflösung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend Heinrich,

ich wollte euch nicht unterbrechen, haltet den Beitrag gerne am leben :cool:

Ich bin nur interessiert, ob es da wirklich ein Problem mit Temp Variablen gibt, bei einem Interrupt.

Mal sehen was Siemens sagt, ich denke mal das dauert noch.
 
Siemens hat sich zurückgemeldet:
Der Grund dafür liegt in der Implementierung der Datums-/Zeitkonvertierungsfunktionen. Alle diese Konvertierungen in SCL, die fehlschlagen könnten, initialisieren zuerst den Wert mit einer Null und führen dann die Konvertierung durch. Wenn die Konvertierung nicht erfolgreich war, ist das Ergebnis automatisch Null. Der OB30 unterbricht die Ausführung jederzeit, so dass er manchmal direkt nach dem internen Setzen des Werts auf Null unterbrochen wird und die eigentliche Konvertierung nach der Ausführung des OB30 erfolgt. Um solche Dinge zu vermeiden, könnte der Benutzer die Konvertierung in eine temporäre Variable durchführen und dann das Ergebnis der Konvertierung der statischen Variablen zuweisen.

Beispiel vor:
#myStaticTIME: = TOD_TO_TIME (#myTOD);
Beispiel nach:
#myTempTime: = TOD_TO_TIME (#myTOD);
myStaticTime: = myTempTime;

Tja, Siemens halt...
 
Alle diese Konvertierungen in SCL, die fehlschlagen könnten
Da wäre es ja mal interessant, welche Bausteine bzw. Funktionen dies noch betrifft...

Ansonsten, Bilder sagen mehr als Worte:
200w.gif
 
Zuletzt bearbeitet:
Zurück
Oben