Instanzen/Multiinstanzen?

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, und HEEEE?

Du schlägst gerade vor alle statischen Variablen in temporäre umzuwandeln und bei jedem Zyklus neu zuzuweisen. Kann man machen, solange man nur Konstante braucht. Ich denke es ist klar geworden was worauf ich hinaus wollte.

Torsten
 
Hi
Torsten05 schrieb:
Du schlägst gerade vor alle statischen Variablen in temporäre umzuwandeln und bei jedem Zyklus neu zuzuweisen. Kann man machen, solange man nur Konstante braucht. Ich denke es ist klar geworden was worauf ich hinaus wollte.
Hoffentlich reden wir nicht aneinander vorbei. Nach meiner Ansicht ist es unerheblich, statische oder temporäre Variablen zu verwenden, wenn diese eh in jedem Zyklus eine neue Zuweisung erhalten, weil in z.B. in jedem Zyklus ein Zwischenergebnis neu bestimmt wird. Der Unterschied wird nur durch den verwendeten Speicher bestimmt: statisch im globalen Datenspeicher oder dynamisch auf dem Stack. Was anderes ist es, wenn ich das Zwischenergebnis in den nächsten Zyklus hinüber retten will, d.h. Ergenisse aus dem vorgehenden Zyklus anwenden will, dann geht das nur mit statischen Variablen. Wenn es sich aber auf diese Unterscheidung reduziert und ich darauf abstelle, Zwischenspeicher zu verwenden, die nur in EINEM Zyklus gültig sein sollen, dann besteht IMO keine Notwendigkeit, statische Variablen zu verwenden, ist dies der Fall, dann kann ich Resourcen sparen, in dem ich keine FBs sondern FCs verwende - oder sehe ich das falsch?
Eine Variable als Konstante zu missbrauchen ist IMO nicht der eigentliche Sinn einer Variablen, wie der Name schon sagt, Konstanten können direkt eingesetzt werden.

Gruß Barnee
 
Hallo,

also ich rede eigentlich immer noch von dem Problem das der Thread-Ersteller beschrieben hat. Im übrigen sind deine Aussagen nur bedingt anwendbar, nämlich nur dann wenn die Zuweisungen im FC ausschliesslich mit E, A, M geschehen. Die Variablen im FC verlieren leider ihren Wert (nicht den Wert an sich, aber die Zuordnung) wenn der Baustein verlassen wird, so das man schon bei popeligen Aufgaben versagen wird. Nicht mal ne Flankenabfrage würde so funktionieren, es sei denn man greift auf Merker zurück.

AAABBBEERRR, wenn er auf Merker zurückgreift um z.B. ne Flankenabfrage zu machen, so kann er diesen Baustein eben nicht für 1..n Motoren verwenden, da ja immer der gleiche Merker für die Flanke benutzt wird, und das funktioniert eben nicht.

Und genau das ist es warum man dafür eben doch statische Variablen einsetzen sollte. Abgesehen von ca. 100 anderen Gründen wie Darstellung von Werten mit HMI usw...

Resourcen sparen auf biegen und brechen ist was für's Hobbyprogrammieren, oder wenns drauf ankommt. In den meisten Fällen kommts aber nicht drauf an. Es zahlt eben keiner wenn du "von hinten durch die Brust ins Auge" programmierst um dir nen statische Variable zu sparen.

Torsten
 
aufhörn!

hört doch mal auf mit dem mist, ihr verschreckt doch damit den Thread-Ersteller. ich glaube hier ist ein neuer klugscheisser unterwegs.

kalle
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hört doch mal auf mit dem mist, ihr verschreckt doch damit den Thread-Ersteller.
:lol:

Nee, habe mich ausgeklingt und mache das jetzt (wie schon mehrmals erwähnt) einfach mit einem DB.
Diese ganze Geschichte mit den FB&Instanzen fand ich einfach nett, weil er mir dann ja gleich den dazugehörigen DB geschrieben hat und ich quasi on the fly was ändern konnte ohne viel anzupassen.
 
Auch wenns einem Einzigen nicht gefällt, ich finde die Dikussion nicht langweilig, wer's nicht mag, muss es ja nicht lesen.

Hi Torsten

Torsten schrieb:
Die Variablen im FC verlieren leider ihren Wert (nicht den Wert an sich, aber die Zuordnung) wenn der Baustein verlassen wird....

Wenn's unerheblich ist, dass die Variablen ihren Wert verlieren? In jeder C-Funktion verlieren lokale Variablen (wenn diese nicht explizit als statisch deklariert werden) ihre Bedeutung, wenn die Funktion verlassen wird. Also warum sollte dies für FCs in Step7 anders sein, wenn es für die Realisierung einer Aufgabe ausreichend ist.

Es war ja schließlich deine Erklärung, mit der du in die Diskussion eingetreten bist, dass das Thread-Thema eine typische Aufgabenstellung sei, die mit einer Multiinstanz zu lösen wäre. Ich habe das nicht so gesehen und dem entsprechend versucht, meine Sicht der Dinge zu erläutern.

Torsten schrieb:
Resourcen sparen auf biegen und brechen ist was für's Hobbyprogrammieren, oder wenns drauf ankommt. In den meisten Fällen kommts aber nicht drauf an. Es zahlt eben keiner wenn du "von hinten durch die Brust ins Auge" programmierst um dir nen statische Variable zu sparen.

Ob nun ein FB oder ein FC programmiert werden soll, bei denen sich die Schnittstellen nur durch die Schlüsselworte VAR und VAR_TEMP unterscheiden würden und die Aufgabe gleichermaßen mit einem FC gelöst werden kann, so würde das keine Kosten verursachen. Im Gegenteil würde eine solche Vorgehensweise kostensparend sein, weil man weniger die Gefahr läuft, zu einem späteren Zeitpunkt zu erhöhten Kosten Resourcen freischaufeln oder nachkaufen zu müssen. Aber bitte, jeder ist seines Glückes Schmied.

Torsten schrieb:
Nicht mal ne Flankenabfrage würde so funktionieren, es sei denn man greift auf Merker zurück.

Aber bitte, ich habe die Verwendung von FBs nicht ausgeschlossen, meine Aussage im vorhergehenden Posting:

Barnee schrieb:
Was anderes ist es, wenn ich das Zwischenergebnis in den nächsten Zyklus hinüber retten will, d.h. Ergenisse aus dem vorgehenden Zyklus anwenden will, dann geht das nur mit statischen Variablen.
Aber für eine Flankenauswertung (1 Bit) gleich einen ganzen DB opfern?

Torsten schrieb:
Im übrigen sind deine Aussagen nur bedingt anwendbar, nämlich nur dann wenn die Zuweisungen im FC ausschliesslich mit E, A, M geschehen.

Von welchen Zuweisungen sprichst du? Innerhalb des FCs? Als Parameter an den Ein- bzw. den Ausgängen? Ich habe bisher noch keine Einschränkung feststellen können. Bisher war jeder Datenpunkt einer S7 als Ein-bzw. Ausgangsparameter oder aber auch innerhalb der Funktion adressierbar. Da ist mir deine Aussage völlig unklar, kannst du das mal näher beschreiben, was du da meinst?

Bleibt für mich die Frage offen, warum FB statt FC, auch wenn es mit einem FC gleichermaßen gehen würde? Sollte man dann Siemens nicht den Vorschlag unterbreiten, auf FCs zu verzichten, da man ohne hin alles in FBs programmieren kann?

Gruß Barnee
 
Hallo,

vielleicht schafft man einfach die fb's ab, da spart man dann auch noch Speicher.

Das wars dann von mir zu diesem Thema. Ich weiss das ist nicht nett, aber ich hab noch anderes zu tun als dich beim zurückrudern zu beobachten.

Torsten
 
Es ist schade, dass man die Diskussion nicht sachlich zu Ende führen konnte. Immerhin sind bis zu diesem Zeitpunkt 503 Aufrufe erfolgt, was zeigt, dass doch ein allgemeines Interesse an dem Thema vorhanden ist. Für jemanden, der später vielleicht einmal in diesem Forum auf der Suche ist, mag der Abbruch des Themas wenig befriedigend sein. Ich hätte selbst zu gerne mehr über die Sichtweise anderer Anwender erfahren. So soll's denn auch gut sein.

Gruß Barnee
 
Hallo,

ich denke der Anfänger blickt es eh nicht und der der weiss worum es geht möchte vielleicht einfach nur sehen werden den längeren hat 8) . Bevor wir also im entsprechendem Forum landen...

Torsten
 
Zurück
Oben