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

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 38 von 38

Thema: Bausteine aufrufen für dummies

  1. #31
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @4L: entschuldige, ich hatte da etwas flüchtig drübergelesen:
    Zitat Zitat von vierlagig Beitrag anzeigen
    ... übergeordneten baustein, mit einer festgelegten struktur. diese struktur trägst du in alle aufgerufenen FBs ein ...
    und nach dieser Anmerkung:
    Zitat Zitat von Ralle Beitrag anzeigen
    ... Wenn da einer drin ändert, ohne immer alle FB nachzuführen ist Sense. ...
    dann wirklich an eine Strukturierung, wie Du sie im Beispiel angeführt hast, gedacht.

  2. #32
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    @4L
    Es sind nun mal nicht alle SPS-Programmierer und nicht alle Instandhalter die großen Superprogrammierer (Ich zähle mich auch nicht dazu, das zeigt offensichtlich meine schwache Begeisterung für das, was du so Klasse findest). Besonders, wenn in den Firmen die Instandhalter nur selten nach Fehlern suchen müssen und viele Systeme zu betreuen haben, ist das unmöglich. Daher bin ich nach wie vor der Meinung, daß man es den Leuten ja nicht gar zu schwer machen muß, nur, um seinen Genius zu beweisen. Wir reden hier wohlgemerkt nicht über Serienmaschinen zu 1000 Stück, sondern über Sondermaschinenbau.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #33
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    am Rande angemerkt: mir ist das Problem des Kollegen rs-plc-aa wieder eingefallen: "Großen FB in 2 Teile splitten - knifflig."
    http://www.sps-forum.de/showthread.php?t=16404

    da kam dann auch der CC/UC als Lösungsansatz drin vor:
    Zitat Zitat von godi Beitrag anzeigen
    Hallo!

    Ja die zwei FB's müssen in der Deklaration gleich sein und den zweiten FB rufst du dann mit CC / UC auf dann brauchst du keine Parameter mehr übergeben.
    siehe dazu http://www.sps-forum.de/showthread.php?t=14604&highlight=fb+aufruf
    zum Schluss von dem Thread habe ich das mal ausprobiert einen FB mit CC / UC aufrufen.

    godi

  4. #34
    Registriert seit
    06.11.2008
    Beiträge
    96
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Moin vierlagig,

    das finde ich sehr interessant. Ich habe mich schon immer gefragt, wofür man "UC" braucht.
    Man könnte allerdings auch die IDB-Nummer des ersten FB abfragen, den Wert dem aufgerufenen FB als Eingangsvariable übergeben und dann den IDB der ersten öffnen (AUF DI [IDB-Nummer]). Dann greift man direkt auf den IDB des ersten FB zu...
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  5. #35
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von MFreiberger Beitrag anzeigen
    Man könnte allerdings auch die IDB-Nummer des ersten FB abfragen, den Wert dem aufgerufenen FB als Eingangsvariable übergeben und dann den IDB der ersten öffnen (AUF DI [IDB-Nummer]). Dann greift man direkt auf den IDB des ersten FB zu...
    genau eben nicht!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #36
    Registriert seit
    06.11.2008
    Beiträge
    96
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Moin vierlagig,

    ich hatte mal einen Code, wie folgt vorliegen:

    Code:
          L     #Scannp_db                  // Kopieren der Daten in den Telegrammsendebereich
          T     #P_Db
    
    
          L     #Scann_dw
          SLW   3
          LAR1  
    
    
          L     0
          SLW   3
          LAR2  
    
    
          AUF   DI   179
    
    
          AUF   DB [#P_Db]
    
    
          L     5
    loop: T     #Za
    
    
          L     #Scannp_db
          T     DBW [AR1,P#0.0]
    
    
          +AR1  P#1.0
          +AR2  P#1.0
    
    
          L     #Za
          LOOP  loop
          L     0
          T     #Fehl
          CALL  "Daten_löschen"
           Db_quelle:=179
           Von      :=0
           Nach     :=30
           wert     :=B#16#20
    
    
          BEA   
    
    
    old:  NOP   0
    Dabei werden Daten aus dem DB179 an den DB5103 (IN #Scannp_db als int) übergeben.
    Mal abgesehen davon, dass die DBW-Adresse immer nur um ein Byte hochgezählt wird und ich auf diese Weise bei fünf Durchläufen 6 Byte übergeben werden,
    wird innerhalb der Schleife symbolisch auf #Scannp_db zugegriffen. Dabei ist hier der erste int-Wert aus DB179 abgefragt worden, weil als DI geöffnet.
    Das hier nicht der übergebene IN-Wert stand, war der Knackpunkt und es hat echt gedauert, bis ich das verstanden habe

    Könnte man auf diese Weise nicht auf (gleiche) Deklarationen zugreifen, wobei man als IDB einen anderen, als den bei Bausteinaufruf angegebenen öffnet?


    Gruß

    MFreiberger
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  7. #37
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von MFreiberger Beitrag anzeigen
    Könnte man auf diese Weise nicht auf (gleiche) Deklarationen zugreifen, wobei man als IDB einen anderen, als den bei Bausteinaufruf angegebenen öffnet?
    und genau damit ist der Witz gemordet. man muss für jeden CALL-Aufruf eine Instanz, sei es nun ein Instanz-DB pro Aufruf oder eine Multiinstanzdefinition angeben.
    Ferner muss die Nummer übergeben werden.
    Schmutziger ist nur, auf die Lokaldaten des Vorgängers zu zugreifen

    Zitat Zitat von MFreiberger Beitrag anzeigen
    Dabei werden Daten aus dem DB179 an den DB5103 (IN #Scannp_db als int) übergeben.
    Mal abgesehen davon, dass die DBW-Adresse immer nur um ein Byte hochgezählt wird und ich auf diese Weise bei fünf Durchläufen 6 Byte übergeben werden,
    wird innerhalb der Schleife symbolisch auf #Scannp_db zugegriffen. Dabei ist hier der erste int-Wert aus DB179 abgefragt worden, weil als DI geöffnet.
    Das hier nicht der übergebene IN-Wert stand, war der Knackpunkt und es hat echt gedauert, bis ich das verstanden habe
    An welcher stelle wird Symbolisch auf den zweiten geöffneten Datenbaustein zugegriffen?
    Das sieht zumindest nach einer ziemlichen Sauerei aus!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. #38
    Registriert seit
    06.11.2008
    Beiträge
    96
    Danke
    9
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin vierlagig,

    und genau damit ist der Witz gemordet. man muss für jeden CALL-Aufruf eine Instanz, sei es nun ein Instanz-DB pro Aufruf oder eine Multiinstanzdefinition angeben.
    Ferner muss die Nummer übergeben werden.
    Schmutziger ist nur, auf die Lokaldaten des Vorgängers zu zugreifen
    alles klar. habe ich verstanden.

    Code:
          L     #Scannp_db                  // Kopieren der Daten in den Telegrammsendebereich     >>> hier war der Zugriff noch i.O. (Wert 5103, IN-Parameter)
          T     #P_Db
    
    
          L     #Scann_dw
          SLW   3
          LAR1  
    
    
          L     0
          SLW   3
          LAR2  
    
    
          AUF   DI   179             >>> bis hier war es der, für den FB angegebene IDB80. Danach 179
    
    
          AUF   DB [#P_Db]
    
    
          L     5
    loop: T     #Za
    
    
          L     #Scannp_db            >>> hier erfolgte der (unrechtmäßige) Zugriff! (Wert aus IDB179 mit Adresse der in diesem FB deklarierten Variablen #Scannp_db)
    
          T     DBW [AR1,P#0.0]
    
    
          +AR1  P#1.0
          +AR2  P#1.0
    
    
          L     #Za
          LOOP  loop
          L     0
          T     #Fehl
          CALL  "Daten_löschen"
           Db_quelle:=179
           Von      :=0
           Nach     :=30
           wert     :=B#16#20
    
    
          BEA   
     old: NOP 0


    Habs ja gefunden

    Gruß

    MFreiberger
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

Ähnliche Themen

  1. PCS7: Eigene Bausteine im OB86 aufrufen
    Von SPSKILLER im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.09.2010, 13:43
  2. CoDeSys Einstieg für Dummies
    Von Hacky im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 28.07.2010, 23:33
  3. SPS S7 für Dummies
    Von Berndq im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 16.03.2007, 06:34
  4. Indusoft für Dummies
    Von HSThomas im Forum HMI
    Antworten: 0
    Letzter Beitrag: 12.01.2007, 13:48
  5. herdanschluss für dummies
    Von Markus im Forum Stammtisch
    Antworten: 5
    Letzter Beitrag: 24.10.2005, 12:18

Lesezeichen

Berechtigungen

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