FB-Parametrierung überwachen

mueckerich

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

zur Zeit schreibe ich an einem Sicherheitsrelevanten (Peronensicherheit) Baustein der geschützt (ich weiß, ist nicht wirklich ein Schutz) wird. Der Baustein soll erkennen wenn sich die Parametrierung ändert und eine Checksumme ausgeben. Die Checksumme errechnet sich beim Ändern der Parametrierung im aufrufenden Baustein neu und wird über einen Ausgangsparameter ausgegeben. Diese wird dann im Safety-Protokoll mit aufgenommen.

Nun zum Problem:
Mit den Eingangsparametern funktioniert die bereits bestens, da diese als Pointer übergeben werden können. Bei den Ausgangsparametern ist die so nicht möglich, da hier nicht der Datentyp Pointer definiert werden kann. Eine Umstellung der Ausgangsparameter (Out) auf Durchgangsparameter (IN_OUT) ist keine (bzw nur im äussersten Notfall bestehende) Option.
Gibt es eine Möglichkeit die Pointer (Speicheradressen) der an den Ausgangsparameter parametrierten Operanden innerhalb des FB zu ermitteln? :confused:
 
Das ist genau das warum ich es nicht kapiere. Beim FC gehts, beim FB nicht. Das beim FB die Paramerterschnittstelle über den Instanz DB läuft, kann eigentlich nicht der Grund sein, sonst würde es ja bei den IN-Parametern auch nicht klappen.
S7 Fragen über Fragen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bist du dir sicher dass du an einem FC die Beschaltung der In-Parameter im FC prüfen kannst?
Beim Bausteinaufruf eines FC bekommst du bei den In-Parametern nur einen Zeiger auf die Lokaldaten des aufrufenden Bausteins übermittelt.
Und diese ändern sich nicht, ob da jemand E0.0 oder E0.1 anschaltet. Oder du hast da noch eine Möglichkeit die ich nicht kenne ;-)
 
Bist du dir sicher dass du an einem FC die Beschaltung der In-Parameter im FC prüfen kannst?
Beim Bausteinaufruf eines FC bekommst du bei den In-Parametern nur einen Zeiger auf die Lokaldaten des aufrufenden Bausteins übermittelt.
Und diese ändern sich nicht, ob da jemand E0.0 oder E0.1 anschaltet. Oder du hast da noch eine Möglichkeit die ich nicht kenne ;-)

beispiel hier: http://sps-forum.de/showpost.php?p=164419&postcount=14
erläuterungen hier: http://sps-forum.de/showpost.php?p=184985&postcount=6

dass das bei FBs mit OUT nicht funktioniert ist fuck und ich zerbrech mir grad den kopf, wie man das machen könnte.

wie sieht denn der OUT-bereich aus? zusammenhängender bitbereich? bytes? was noch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
beispiel hier: http://sps-forum.de/showpost.php?p=164419&postcount=14
erläuterungen hier: http://sps-forum.de/showpost.php?p=184985&postcount=6

dass das bei FBs mit OUT nicht funktioniert ist fuck und ich zerbrech mir grad den kopf, wie man das machen könnte.

wie sieht denn der OUT-bereich aus? zusammenhängender bitbereich? bytes? was noch?

Das einige was mir jetzt noch einfällt, ist die Benutzung der In_Out Parameter, eben nur als Ausgabe. Da geht das auch mit dem Datentyp Pointer.

Falls ihr das Stück Baustein haben wollt,dann nur raus mit der Meldung :rolleyes:. Leider (Gottseidank :cool:) bin ich gerade zuhause. Deshalb kann ich das Stück Code falls Gewünscht erst Morgen posten.

PS. Ich liebe Pointerprogrammierung :sm17::sm17: hat für manche Kollegen so etwas magisches.

P.S. @Thomas V2.1: Nicht FC sondern FB, wobei es bei einem FC auch funktioniert. Kleiner Tipp, schau dir mal den Aufbau des Datentyps POINTER, oder ANY an. Da findes sich der Speicherbereich (M,T,A,E,Z,DB usw.) sowie die Adresse.
 
Zuletzt bearbeitet:
Das einige was mir jetzt noch einfällt, ist die Benutzung der In_Out Parameter, eben nur als Ausgabe. Da geht das auch mit dem Datentyp Pointer.

ich wiederhole meine frage ... wie sieht die schnittstellenbelegung aus? zusammenhängender bereich? dann kannste die kollegen noch bißchen mehr und besser ärgern ... :rolleyes:

wobei es da noch viel gemeiner geht ... wieso IN_OUT? kannst doch auch IN nehmen :cool:
 
ich wiederhole meine frage ... wie sieht die schnittstellenbelegung aus? zusammenhängender bereich? dann kannste die kollegen noch bißchen mehr und besser ärgern ... :rolleyes:

Wie gesagt, bin gerade nicht in der Arbeit und so aus dem Kopf heraus müsste es im vorderen Out-Bereich ein zusammenhängender Bereich aus Boolschen Parametern sein. Danach kommt ein Doppelwort und ganz zum Schluss ein Byte.

AAAAhhhrg... bin ich bl.... ich habe doch ein kleines Buidl im Thema gepostet. Siehe Anhang 3. Post. :cool: Ich hoffe es hilft.
 
Hallo,
kann ja sein, dass ich falsch liege ...
Wenn dein Baustein einen Pointer erzeugt, dann verweist dieser ja an einen durch den Baustein verwiesene Adresse. Wenn du per IN-Parameter einen Pointer erhälst, so ist dies ja nur die gerichtete Übergabe einer Adresse (sie kommt hier von Aussen) - wie du diese dann benutzt steht auf einem anderen Blatt. Das heißt deine OUT-Variable ist trotzdem ein IN-Pointer, da du ja von Aussen festlegen willst, wohin geschrieben wird.
-
Das Ganze ist es allerdings nicht erprobt - nur meine Meinung dazu ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
kann ja sein, dass ich falsch liege ...
Wenn dein Baustein einen Pointer erzeugt, dann verweist dieser ja an einen durch den Baustein verwiesene Adresse. Wenn du per IN-Parameter einen Pointer erhälst, so ist dies ja nur die gerichtete Übergabe einer Adresse (sie kommt hier von Aussen) - wie du diese dann benutzt steht auf einem anderen Blatt. Das heißt deine OUT-Variable ist trotzdem ein IN-Pointer, da du ja von Aussen festlegen willst, wohin geschrieben wird.
-
Das Ganze ist es allerdings nicht erprobt - nur meine Meinung dazu ...

Gruß
LL

das meinte ich mit "wieso IN_OUT? kannst doch auch IN nehmen :cool:" und es funktioniert
 
Hallo,

zur Zeit schreibe ich an einem Sicherheitsrelevanten (Peronensicherheit) Baustein der geschützt (ich weiß, ist nicht wirklich ein Schutz) wird.

Sicherheitsrelevante Bausteine kannst dur nur mit Integrated Safety in einer F-CPU, mit entsprechender Safety-Hardware schreiben. Also gelbes Programm mit gelben Profibus-IO.
Alles andere ist NICHT personensicher!!!!!
Für die Personensicherheit, brauchst Du die Abnahme der Berufsgenossenschaft, oder eines innerbetrieblichen Sicherheitsbeauftragten des Anlagenbetreibers.
Alles andere ist Murks, bringt Dich in den Knast und/oder macht Dich aufgrund der Schadenersatzforderung für immer zum Sozialfall.

Kein Scheiß, mach Dich bei der BG schlau !!!!!!!!!!!!*vde*
 
Zuletzt bearbeitet:
Nachsatz:
... die Sache mit der "Sicherheits-Relevanz" hatte ich total überlesen (oder ignoriert) ... da muß ich dem Westermann allerdings voll zustimmen !

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sicherheitsrelevante Bausteine kannst dur nur mit Integrated Safety in einer F-CPU, mit entsprechender Safety-Hardware schreiben. Also gelbes Programm mit gelben Profibus-IO.
Alles andere ist NICHT personensicher!!!!!
Für die Personensicherheit, brauchst Du die Abnahme der Berufsgenossenschaft, oder eines innerbetrieblichen Sicherheitsbeauftragten des Anlagenbetreibers.
Alles andere ist Murks, bringt Dich in den Knast und/oder macht Dich aufgrund der Schadenersatzforderung für immer zum Sozialfall.

Kein Scheiß, mach Dich bei der BG schlau !!!!!!!!!!!!*vde*

Ruhig Brauner :ROFLMAO:, die Anlage hat Safety (SI, B&W) integriert, das ganze ist nur als zusätzliche Ergänzung (doppelt gemoppelt) zu sehen um auch noch ein Restrisiko auszuschliessen wenn eine Klemmung (Pneumatisch) unzuverlässig wird. Im übrigen ist mir das von meinem Abteilungsleiter (der ist bei uns für Technik, Safety usw. verantwortlich und kennt sich in den Themen Arbeitsschutz, Vorschriften der BG aus.) so aufgetragen worden. Der muss auch dafür unterschreiben.
Er Chef ich mach, er Verantwortlich.
 
Zurück
Oben