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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 30

Thema: Programmierstil

  1. #11
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nö.




    Bei Temp ist nur eins wichtig - in jedem Zyklus zuerst beschreiben und danach kann man sie erst auslesen. Vorher Auslesen, z.B. weil man sie im letzten Zyklus beschrieben hat, ist undefiniert! Daher temporär.
    Geändert von hucki (04.07.2013 um 23:10 Uhr)

  2. #12
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von kuti Beitrag anzeigen
    Ich meine es so: Wenn man eine temp-Var hat, die in unterschiedlichen Netzwerken mit unterschiedlichen Vorbedingungen verknüft ist, dann ist DAS keine gute Idee. Denn wenn man weiter unten diese nimmt für eine Verknüpfung, dann führt das zu Problemen, oder ?
    Grundsätzlich führt die zu keinen Problemen

    Z.B.
    Code:
    U #Eingang1
    U #Eingang2
    = #TEMP1
    
    U #TEMP1
    = #OUT1
    
    U(
    L#iIN1
    L#iN2
    >=I
    )
    =#TEMP1
    
    U #TEMP1
    = #OUT2
    Wäre absolut korrekt und funktioniert wie angedacht. Out1 reagiert nur auf die Bitverknüpfung und Out2 reagiert nur auf den Teil ab und mit U( weil diese Vergleichsopperation ebenfalls immer die Temporäre Variable beschreibt. Die Temporäre Variable wird immer beschrieben, entweder mit 0 oder mit 1.
    Es ist aber nicht schön. Man kann nahezu so viele temporäre Variablen nutzen wie man will, darum soll man sie auch nutzen und vernünftig beschriften und kommentieren.

    mfG René

  3. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    kuti (05.07.2013)

  4. #13
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Danke euch. Normalerweise sind lokale Variablen nur innerhalb einer FB,FC bekannt, inder sie deklariert wurden. Was ist wenn ich in einem FB einen FC aufrufe? Sind dort die lokalen Variablen vom FB bekannt?

  5. #14
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Nein die sind dort nicht bekannt. Daten sollten immer über die Schnittstelle übergeben werden. Sei dass nun direkt per Call FC

    Code:
          CALL  "BrandAbsaugKlappe"
           BAK_Brand_Auf           :=M100.0
           BAK_Brand_Zu            :=M100.1
           Stoerung_NichtbereitFern:=M100.2
    oder bei FBs an den Instanzdb ist dann wieder ne Streitfrage.

    Code:
          CALL  "lamp_age" , "IDB_lamp_age"
           SetMode      :=
           SetScenery   :="SheratonEntry".SetScenery
           AssScenery   :="SheratonEntry".AssScenery
    
    L "SheratonEntry".SetMode
    T "IDB_lamp_age".SetMode

  6. #15
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    Hi,

    in dem FC sind die Variablen von dem FB nicht bekannt. Die Variablen sind nur in dem FB vorhanden.

    Tschö dentech

  7. #16
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ok, danke dir. Schönen Tag noch.

  8. #17
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Nein, wenn Du da was brauchst, muss das über die Schnittstelle übergeben werden.

    Jeder Baustein hat nur seine eigenen lokalen (oder halt globale) Variablen. Soll ein Baustein mehrfach im Zyklus aufrufbar sein, dürfen nur lokale Variablen verwendet werden. Man spricht dann von Bausteinkapselung.

  9. #18
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ich programmiere gerade in FUP.Im FB12 habe ich zwei IN-OUT-Vriablen als Schnittstelle für die realen Ausgänge deklariert. Ich möchte jetzt irgendwo in der Mitte des FB eine FC11 aufrufen, in der der Schieber auf eine Mindestöffnung gefahren wird. Jetzt weiß ich nicht wie ich das mit den Ausgängen machen soll. In meinem FB habe ich beide Ausgänge als IN-OUT-Variabelen deklariert. Wenn ich jetzt diese FC11 aufrufe, greife ich ja auch auf die Ausgänge zu, was mache ich dann mit diesen IN-OUT-Variablen im FB?

  10. #19
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Du schreibst die notwendigen lokalen Variablen aus dem FB an die Schnittstelle des FC bei dessen Aufruf. Dadurch werden diese Werte vom lokalen Speicher des FBs an den lokalen Speicher des FCs übergeben und dieser kann dann intern damit arbeiten.

  11. #20
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du hast doch auch TIA. Normalerweise steht doch der CALL-Befehl rechts bei der Programmsteurung. Ich finde das nicht.

Ähnliche Themen

  1. Programmierstil / schöner programmieren?
    Von D4K!ZZ4 im Forum Programmierstrategien
    Antworten: 35
    Letzter Beitrag: 31.10.2011, 10:56
  2. programmierstil s7
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 01.11.2005, 19:04
  3. Programmierstil - Richtlinien - S7
    Von eloboy im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 13.10.2004, 09:13

Lesezeichen

Berechtigungen

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