Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 6 von 7 ErsteErste ... 4567 LetzteLetzte
Ergebnis 51 bis 60 von 67

Thema: Frage zu Temp-Variablen...

  1. #51
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    OOOOOhhhhhhh, DAS ist tatsächlich noch viel gefährlicher als innerhalb eines Zyklus von einem Netzwerk zum nächsten eine TEMP-Variable zu nutzen.

    Frag' lieber nicht warum

    Harald

    Jep, und genau da beginnt das Problem beim Zugriff auf Instanzdatenbausteine.
    Man sieht außerhalb des FB's nicht in welchen Bereich sie liegen und man kann darauf auch schreibend zugreifen.

    So wie bei deinem Beispiel mit dem Motor wird dann von einem unwissenden oder einfach in der Eile / Unachtsamkeit nicht "Motor".start = 1 sondern "Motor".running = 1 geschrieben.
    => Schlechtestenfalls crash da ein Endschalter oder sonstiges damit überbrückt wird. Da hilft dir dann der best-getestete Motorbaustein nichts mehr.

  2. Folgender Benutzer sagt Danke zu godi für den nützlichen Beitrag:

    PN/DP (04.02.2013)

  3. #52
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    @Harald: Nein, ich frage schon nicht warum - würde es vermutlich eh nicht verstehen... aber du hast doch geschrieben, dass ich im FB1 die Ausgänge unbeschaltet lassen soll u. das geht doch nur mit stat. Variablen. Ansonsten bekomme ich doch einen Fehler.

    @Allgemein: In der Tat habe ich in meinem Beispiel (Beitrag #21) die Variablen "druck_hoch" und "druck_niedrig" als statische Variablen in den FB's deklariert. Und das soll jetzt echt falsch sein, oder wie? *binamverzweifeln*
    LG
    spirit

  4. #53
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    @Harald: Nein, ich frage schon nicht warum - würde es vermutlich eh nicht verstehen... aber du hast doch geschrieben, dass ich im FB1 die Ausgänge unbeschaltet lassen soll u. das geht doch nur mit stat. Variablen. Ansonsten bekomme ich doch einen Fehler.

    @Allgemein: In der Tat habe ich in meinem Beispiel (Beitrag #21) die Variablen "druck_hoch" und "druck_niedrig" als statische Variablen in den FB's deklariert. Und das soll jetzt echt falsch sein, oder wie? *binamverzweifeln*
    Im Beitrag 21 hast du die Variablen "druck_hoch" und "druck_niedrig" im ersten Baustein als out und im zweiten als in deklariert.
    Ansonsten würden sie beim Bausteinaufruf nicht angezeigt werden.
    Input werden immer links und Output immer rechts angezeigt.

    Merke dir:
    Wenn du einen wiederverwendbaren Baustein haben willst, dann deklarierst du alle Variablen die von außerhalb des Bausteines kommen als in.
    Alle Variablen die du außerhalb des Bausteines lesen willst, deklarierst du als out.
    Alle anderen Variablen die du zb zur internen Berechnung benötigst werden als stat oder temp deklariert.

    Du kannst bei einem FB auch die Ausgänge unbeschaltet lassen da diese (wie die stat Variablen) im Instanzdatenbaustein gespeichert sind.
    Somit lest du dann deine Out-Variable von FB1 aus dem zugehörigen Inst.DB. Deshalb ist Haralds Vorschlag möglich:

    Zitat Zitat von PN/DP Beitrag anzeigen
    Ich habe hier gerade kein TIA, doch das müßte etwa so aussehen:

    Bei FB1 die Ausgänge unbeschaltet lassen.
    Bei FB2 an den Eingängen die Ausgänge der FB1-Instanz angeben.
    Code:
    CALL "Alarme","FB2_DB"    //Aufruf des FB2
     druck_hoch      :="FB1_DB".druck_hoch
     druck_niedrig   :="FB1_DB".druck_niedrig
     druck_fehlerhaft:="Fehler"
    Harald

  5. #54
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.568
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Leider sind die Antworten etwas abgedriftet. Ich denke Du stehst noch am Anfang und bist etwas überfordert mit Dingen wie Absolutzugriffe auf Instanz-DBs von außen.

    Wenn man es einfach halten will, macht man es genauso wie Du es vor hattest. Die Variable als OUT bzw. IN wird an die Schnittstelle gehängt. Du kannst im OB1 auch TEMP-Variablen dafür verwenden, musst aber natürlich die Reihenfolge der Bausteinaufrufe beachten.

    Sofern Du in dem Baustein selbst keine Ergebnisse speichern willst, kannst Du sogar einen FC anstelle eines FB nehmen.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  6. #55
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von godi Beitrag anzeigen
    Im Beitrag 21 hast du die Variablen "druck_hoch" und "druck_niedrig" im ersten Baustein als out und im zweiten als in deklariert.
    Ansonsten würden sie beim Bausteinaufruf nicht angezeigt werden.
    Danke godi; es ist ja herrlich zu sehen, dass du mein Programm besser kennst als ich selbst!

    Also du hast Recht; hatte hier die Variablen schon als In- bzw. Out deklariert!

    Ja Tigerente, stimmt - stehe ziemlich am Anfang und verlassen in der S7-Welt... aber es ist ja noch keine Meisterin vom Himmel gefallen...

    Auch wenn Harald es mir ja fast verboten hat nachzufragen - meine Neugierde ist mittlerweile so groß geworden, dass ich nicht anders kann:

    Was wäre denn das Problem, wenn ich (wie ja eigentlich von mir angenommen) die Variablen nicht als IN bwz. OUT deklariert hätte, sondern als STAT?

    evtl. dass ich sie dann von außen steuern kann? (nur so ein Verdacht!)

    aber ein Ausgang lässt sich doch auch von Außen steuern...

    Ob ich das hier noch kapiere???

    Lieben Dank' euch für eure Mühe - sehe schon, bin ein schwerer Fall!
    LG
    spirit

  7. #56
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Was wäre denn das Problem, wenn ich (wie ja eigentlich von mir angenommen) die Variablen nicht als IN bwz. OUT deklariert hätte, sondern als STAT?
    Du verlierst den Überblick im Programm, da Du den FB nicht mehr losgelöst vom restlichen Programm betrachten/debuggen kannst. Es ist einfach "unsauber" wenn irgendwelche anderen Programmteile in den Variablen eines FBs von aussen herumfuschen...

    gruß.

  8. #57
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Lese dir den Wiki Artikel über Datenkapselung durch. Du wirst das am Anfang höchstwahrscheinlich noch nicht ganz verstehen aber du hast es zumindest mal gelesen und wenn du dann mal weiter beim Programmieren bist wirst du das auch verstehen.

    Vorallem bei diesem Abschnitt ersetzt du einfach Klasse mit Funktionsbaustein:
    Eine Klasse hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit der Klasse interagiert werden kann. Dies verhindert das Umgehen von Invarianten des Programms. Vom Innenleben einer Klasse soll der Verwender – gemeint sind sowohl die Algorithmen, die mit der Klasse arbeiten, als auch der Programmierer, der diese entwickelt – möglichst wenig wissen müssen (Geheimnisprinzip). Durch die Kapselung werden nur Informationen über das „Was“ (Funktionsweise) einer Klasse nach außen sichtbar, nicht aber das „Wie“ (die interne Repräsentation). Dadurch wird eine Schnittstelle nach außen definiert und zugleich dokumentiert.

  9. Folgender Benutzer sagt Danke zu godi für den nützlichen Beitrag:

    ducati (05.02.2013)

  10. #58
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Hi,

    habe mal übersetzt:

    "Ein FB hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit dem FB interagiert werden kann. Durch die Kapselung werden nur Informationen über das „Was“ (Funktionsweise) eines FB's nach außen sichtbar, nicht aber das „Wie“ (die interne Repräsentation)."

    Soll das nun heißen:

    Das Problem mit dem Zugriff auf STAT-Variablen von Außen ist dadurch begründet, dass STAT-Variablen im Gegensatz zu IN- oder OUT-Variablen die Möglichkeit besitzen, Daten zu speichern und somit auch von außen zu verändern?
    LG
    spirit

  11. #59
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Ich denke, Du brauchst erstmal mehr Erfahrung und Verständnis mit der S7-Welt, bevor Du verstehst, was wir Dir hier sagen wollen...

  12. #60
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.568
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der Zugriff auf STAT-Variablen durch Zugriffe von außen ist möglich. Das verleitet vielleicht auch dazu, das zu machen. Wie so oft beim Programmieren kann man Aufgaben unterschiedlich angehen. Manchmal kommen dabei auch so Dinge heraus, dass die Reihenfolge von Netzwerken eine Bedeutung erhält. Z.B. bei der Verwendung von TEMP-Variablen. Jetzt gibt es diejenigen die sagen "Das ist Dein Programm und wenn Du weißt was Du tust, ist das so in Ordnung". Und dann gibt es diejenigen, die sagen "Das kann man so machen, dann isses aber Kacke...", z.B. weil Veränderungen am Programm unbemerkt zu Fehlern führen können. Das gilt vor allem bei externen Zugriffen auf STAT-Variablen, wenn in dem IDB durch Veränderungen Adressen verschoben werden. Dann passen die externen Zugriffe nämlich nicht mehr.

    Die vielleicht aufwändigere Variante ist das Beschalten der IN/OUT-Schnittstelle. Das ist die "sichere" Variante den Baustein an die Außenwelt zu koppeln, die ich Dir als Neuling auch uneingeschränkt empfehlen würde.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

Ähnliche Themen

  1. TEMP Variablen (Step7)
    Von Rüdiger im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 28.10.2010, 21:00
  2. Temp Variablen
    Von centrox im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 23.02.2009, 16:05
  3. IN Variablen nach TEMP
    Von neuer_user im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.10.2006, 16:26
  4. auf TEMP Variablen zugreifen
    Von serdnar im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 14:07
  5. Stat und Temp Variablen
    Von Anonymous im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 13.07.2004, 11:20

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •