Step 7 Auswertung eines Bits für 2 funktionen

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich das aber in ne 300 er reindattel, sollte das doch auch gehen zum testen oder gibts da die systemmerker in dem sinn nicht? Vlt sollte ich mir zum testen noch ne CPU holen :)
Das Systemmerkerbyte gibt es in der Tat bei der 300er nicht.
:(

Dort muss man einen Neustart der CPU entweder über den OB100 oder über die Temp-Variable "OB1_SCAN_1" im OB1 erkennen und dann an den FB weitergeben.

Dazu die Kapselung des FB's ganz komplett machen (globales Systemmerkerbit auch noch aus dem FB herausnehmen):









und der Aufruf im OB1 der 300er könnte dann z.B. so aussehen:
(bevor man den FB von der 1200er zur 300er kopiert, muss der optimierte Bausteinzugriff in den Eigenschaften "Attribute" abgeschaltet werden)

 
Zuletzt bearbeitet:
Danke für deine mühe Hucki,
ich glaube ich bleibe bei der 1200er und besorg mir noch eine als Übungsgerät. An der Arbeit haben wir halt noch keine 1200er im Einsatz und zuhause habe ich keine 300er.

Edit: Außer an der Anzahl der Ein/Ausgänge unterscheiden sich doch die 1211 und 1212 nicht großartig oder?
 
Zuletzt bearbeitet:
... jetzt sollte ich doch den Baustein so oft nutzen können wie ich möchte oder?
Definitiv nicht!

Einfacher Indiz dafür - Verwendung von globalen Merkern als Flankenmerker und/oder (globale) Einzelinstanz für Timer/Counter verhindern den Mehrfachaufruf!

Wenn ein Baustein mehrfach aufgerufen werden soll, muss jeder Aufruf seine Daten unabhängig von den anderen Aufrufen speichern können. Wird z.B. ein globaler Merker als Flankenmerker verwendet, würde jeder Aufruf auf die gleiche Speicherzelle zugreifen und die Flankenerkennung wäre nicht mehr unabhängig voneinander möglich. Genauso ist es mit den Einzelinstanzen von Timern/Countern. Jeder Aufruf würde wieder auf den gleichen DB zugreifen und damit die anderen Aufrufe beeinflussen/überschreiben.

Der globale Systemmerker "First Scan" (hier M0.0) ist wie gesagt eine der berühmten Ausnahmen von der Regel, weil auf diesen auch nicht schreibend zugegriffen werden soll. Es kann natürlich auch schreibende Ausnahmen geben, wie vlt. ein Zähler, der bei jedem Aufruf des Bausteins weiter zählen soll.

Doch im Normalfall sollten sich mehrfache Aufrufe nicht untereinander beeinflussen, also nicht die gleichen Daten verändern.
Das wird dadurch ermöglicht, das jeder Aufruf des FBs seinen eigenen DB erhält, in dem er seine Daten bis zum nächsten Zyklus ablegt. Die Daten darin werden dann nicht von den anderen Aufrufen des FBs (im gleichen Zyklus) beeinflusst.



Du musst für diese Nichtbeeinflussung also folgende Punkte noch umsetzen:
1. Verwende ich als Flankenmerker für die negative Flanke des Timers einen Merker. In einem FB ist es aber besser, dafür eine lokale statische Variable vom Typ BOOL zu verwenden.

2. Der Timer hat jetzt einen eigenen Instanzdatenbaustein. Da er aber in einem FB verwendet wird, ist es m.M.n besser, diese Instanz in die Instanz des FBs mit einzubetten. Man spricht dann von einer Multiinstanz.
Den Flankenmerker musst Du manuell unter den statischen Variablen der Schnittstelle erstellen und dann im Netzwerk 2 unter der negativen Flankenerkennung angeben.

Beim Timer kannst Du die Art der Instanzierung über das Kontextmenü ändern. Im Fenster "Aufrufoptionen", das beim Klick auf "Instanzändern" erscheint, von Einzel- auf Multiinstanz umschalten, aussagekräftigen Namen eingeben und den Rest erledigt dann TIA.


Zum Vergleich hast Du ja meine Screenshots und vlt. fällt es Dir doch einfacher, wenn Du auch das Projekt in Natura ansehen kannst ;):
 

Anhänge

Ich habe da noch eine frage , da ich mit dem programmieren ja einige Probleme habe, gibt's da eine vernünftige Lektüre wo anhand von Beispielen Sachen erklärt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es sicher. Hier im Forum wurden schon einige Sachen empfohlen.
Benutz' doch bitte mal die Suche dafür.
:TOOL:




Noch etwas mehr OT:

Was mir am meisten geholfen hat, war das Wachsen an einem realen Projekt, bei dem ich auch nicht unter Zeitdruck stand. Ich hatte eine Vakuumanlage von unserem Schweizer Partner, in der die 200er CPU unserer Meinung nach eher suboptimal programmiert war. Also hab' ich begonnen, ein Programm nach unseren Vorstellungen zu entwickeln, das aber auch den Schweizer Vorgaben entsprach.
1000x bessser als Ampelschaltungen.
:lol:


Aber ich bin auch ehrlich - ohne die Teilnahme an einem 3-monatigen Grundkurs hätte ich persönlich den Einstieg nur durch autodidaktisches Lernen nicht geschafft!
Allerdings war's auch niedlich, dass der Lehrer immer Schwierigkeiten hatte, meine Programme zu lesen, da er nun mal FUP gewohnt war, ich aber als Elektriker mit KOP besser klar kam. Erst mit den AWL-Sachen war er bei mir wieder glücklich.
Als ich dann aber nach 2 Monaten die 200er mit zur Schule brachte, war's dann doch wieder mehr ein Selbststudium. Wenigstens konnte ich für das Panel noch ein paar Starttips mitnehmen.
:)
 
Hi,
Vorkenntnisse sind ja vorhanden, nur sei dazu gesagt. Wir brauchen nix programmieren, wir sollen nur dafür sorgen das die Maschinen in der Firma laufen. Wenn man sich dann mit den Programmen mal auseinander setzte gibts gewaltige Unterschiede wie das die verschiedenen Hersteller umgesetzte haben. Die einen liebt man, die anderen ...Wenn man die vorgesetzen fragt wegen Schulung, ja, müssen wir mal schauen bekommt man als Antwort und das wars.
Habe mir mal an der Arbeit zwischendurch die alten Schulungsordner von der 300er rausgesucht, zum nachlesen. Aber das was man wissen möchte, steht dann immer nicht da drin und die Hilfe hilft mir dann auch nicht so, wie ich das eventuell möchte. Programmierkenntnisse sind bedingt vorhanden, gab halt mal Kurse bei Siemens, nennen sich Serv 1+2, nur das was da vermittelt wurde, das brauch ich nicht alles wissen.
Werde mir wie gesagt ne zweite CPU besorgen, damit meine Funktionen testen und dann damit mein Projekt zuhause erweitern damit. Warum ich keine S7 300 nehme, ich möchte später den Webserver noch nutzen von der s7 1200.
Dann werde ich mal die Boardsuche benutzen und dann meld ich mich wieder.
 
Hallo Hucki,
heute ist meine CPU gekommen zum Testen. Habe meine Box angeschlossen und probiert,etzt konnte ich das ganze wenigstens auch mal beobachten was da passiert. Es funktioniert(das aus dem obersten Beitrag auf der Seite) Vielen Dank nochmal.
Das nächste Projekt wartet:ROFLMAO:
 
Zurück
Oben