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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: SCL Bausteingenerierung

  1. #1
    Registriert seit
    21.10.2008
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin,

    ich hab ne SCL-Quelle, in welcher verschiedene FB mit Instanz-DB existieren. Beim Übersetzen erhalte ich jede Menge Fehler, da die Bausteine fehlen. Jetzt meine Frage:
    Legt der SCL-Compiler die Bausteine FB, DB, FC usw selbsttätig an, oder muß ich das zuvor manuell erledigen? Denn nach dem manuellen Anlegen der leeren Bausteine gibts keinen Fehler mehr.
    Falls dem so ist (manuelles Anlegen notwendig), fände ich das ziemlich lästig. Oder gibt es einen tollen SCL Befehl (sowas wie "generate FB1") zum Erstellen der Bausteine?

    Vielen Dank,
    Carlsson
    Zitieren Zitieren SCL Bausteingenerierung  

  2. #2
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Hallo,

    der Compiler legt die Bausteine selbstständig an. Er arbeitet die Quelle aber nacheinander ab. Wenn du jetzt zb als ersten Baustein in der Quelle den FB1 drinhast und als zweiten Baustein den FB2 gibts Probleme wenn du im FB1 den FB2 aufrufst. Dieser existiert zu dem Zeitpunkt noch nicht. Also Quelle umsortieren oder einzelne Quellen machen. Einzelne Quellen sind evtl auch günstiger für Änderungshistory usw und wenn man die Quellen nochmal separat ablegt.

    André
    Geändert von sps-concept (09.03.2009 um 14:59 Uhr) Grund: Rächtschraipung
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren Scl  

  3. Folgender Benutzer sagt Danke zu sps-concept für den nützlichen Beitrag:

    Carlsson (10.03.2009)

  4. #3
    Carlsson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.10.2008
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die flinke Antwort. Da hab ich noch ein kleines Denkproblem. Angenommen ich hab ein Programm mit OB1, FB1 (Instanz: DB1) und FB2 (Instanz: DB2). Im SCL Code ruft FB2 u.a. Variablen aus DB1 ab. FB1 ruft FB2 auf, OB1 ruft FB1 auf. In welcher Reihenfolge sind nun die Quellen zu kompilieren? Denn FB2 zuerst geht nicht, denn er brauch ja den Instanz-DB von FB1 (also DB1). FB1 zuerst geht auch nicht, denn er benötigt FB2.
    Wahrscheinlich muss ich mein Konzept ändern und mal schauen, dass sich nicht die Schlange in den Schwanz beisst
    Stimmts?

    Carlsson

  5. #4
    Registriert seit
    04.07.2007
    Beiträge
    147
    Danke
    6
    Erhielt 13 Danke für 13 Beiträge

    Standard

    Es ist generell keine gute Idee fremde Datenbausteine direkt in SCL anzusprechen. Da die Querverweise nicht 100% mit SCL funktionieren werden spätere Änderungen recht erschwert.

  6. #5
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Standard

    Auch keine gute Idee ist es, das Bausteine (dein FB2) Daten fremder Instanzbausteine (dein DB1==>Instanz von FB1) nutzt.

  7. #6
    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 StefanK Beitrag anzeigen
    Auch keine gute Idee ist es, das Bausteine (dein FB2) Daten fremder Instanzbausteine (dein DB1==>Instanz von FB1) nutzt.
    ... wenn es sich um einen direkten zugriff handelt ... anders sieht das mit einer FB globalen UDT aus, aber das geht nur in AWL, den parameterlosen CALL kennt scl nicht
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. #7
    Registriert seit
    14.12.2005
    Ort
    Karlsruhe
    Beiträge
    162
    Danke
    10
    Erhielt 25 Danke für 23 Beiträge

    Standard

    Eine Makedatei kann man so aufbauen, dass alles in der richtigen Reihenfolge übersetzt wird.
    1. UDT - Strukturen
    2. DB - abgeleiten von UDTs
    3. FC
    4. FB mit Instanz-DBs (Bausteinnummern in Symbolik deklarieren)
    5. OBxx
    6. OB1

    Fertig.
    Immer Ärger mit Siemens -> macht nix -> wir schimpfen und kaufen!!

  9. #8
    Carlsson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.10.2008
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK, dass hilft erstmal weiter.
    Allerdings ist dumm, dass der SCL-Code automatisch generiert wird und ich nun das Generator-Programm ändern darf...Da hätte sich der Programmierer vorher mal nen Kopp machen können
    ...

  10. #9
    Carlsson ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.10.2008
    Beiträge
    11
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Pfeil

    Gut, mal sehen ob diesen Thread noch irgendwer liest
    Hab gerade ne Menge von Beiträgen aus diesem Forum gelesen, welche von meinem ehemaligen Mitarbeiter gestellt worden sind. Aber ist auch egal.
    Ich hab jetzt folgendes Dilemma:
    In dem kleinen SCL-Projekt welches ich bearbeite "proof-of-concept" wird ein SFB4 verwendet, der ja bekanntlich seinen DB benötigt. Der DB wird erstellt, wenn der SCL-Compiler den entsprechenden Aufruf FB.DB() findet. Jetzt benötige ich jedoch den Timer-Ausgang Q in mehreren dem FB untergeordneten FCs, die ja laut SCL-Compiler zuvor kompiliert werden sollten.
    Struktur: OB1 ruft auf FB1 (mit SFB4) ruft auf FC2 (benötigt Timer-Ausgang Q)
    Direkt abfragen will ich den Timer eigentlich nicht, denn dann funktioniert die SCL-Compilierung nicht mehr und es entspricht nicht den Gepflogenheiten auf fremde Instanz-DB zuzugreifen.

    1. Wie gestalte ich denn nun so eine Schnittstelle?
    2. Kann ich den Timer aus einer untergeordneten Funktion heraus starten?

    Machts gut,
    Carlsson

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Carlsson Beitrag anzeigen
    Struktur: OB1 ruft auf FB1 (mit SFB4) ruft auf FC2 (benötigt Timer-Ausgang Q)
    1. Wie gestalte ich denn nun so eine Schnittstelle?
    2. Kann ich den Timer aus einer untergeordneten Funktion heraus starten?
    Hallo,
    zu 1.)
    das wäre eine INPUT-Variable vom Typ BOOL bei dem FC.
    zu 2.)
    due Funktion gibt per OUTPUT-Variable (oder ggf. auch IN_OUT) die Rückmeldung an den FB in dem du an den Ausgang des FC eine STAT-Variable vom Typ BOOL parametrierst ...

    Gruß
    LL

Lesezeichen

Berechtigungen

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