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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: DB aus Programm erstellen

  1. #1
    Registriert seit
    10.07.2008
    Beiträge
    47
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe einen FB an den ich als IN Parameter eine Datenbaustein (Block_DB) angebe.

    Ich möchte damit folgendes bewirken: Und zwar beim aufruf des FB´s soll der Nutzer frei entscheiden welchen DB er benutzen möchte (nicht den Instanz DB!! Den muss er ja eh bestimmen).

    Nun möchte ich aber das das Programm automatisch einen DB mit der am IN deklarierten Nummer erzeugt (inkl DB länge).

    Gibt es da einen SFC für, wenn ja welchen und was muss ich beachten?
    Zitieren Zitieren DB aus Programm erstellen  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Du müsstest dann "nur" noch eine Nummer INT übergeben lassen,
    dann gehts mit SFC22/23/24 weiter ...

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

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

    Kiter11 (26.02.2009)

  4. #3
    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

    1. SFC22 "Create_DB"
    2. die bausteinnummer muß als WORD übergeben werden, prüfe also vorher die kompatibilität der BLOCK_DB variablen
    3. ansonsten, eigentlich ganz unspannend:
    Code:
    *
          CALL "CREAT_DB" (
               LOW_LIMIT                := #wDbNumber,// Bereich der DB-Nummer
               UP_LIMIT                 := #wDbNumber,// angeben
               COUNT                    := #wDbLength,// Länge übergeben
               RET_VAL                  := #iCreateReturn,// Fehlercode
               DB_NUMBER                := #wDbNumber);// DB Nummer zur weiterbearbeitung
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    Kiter11 (26.02.2009)

  6. #4
    Registriert seit
    10.07.2008
    Beiträge
    47
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke, jetzt habe ich den SFC auch gefunden, hatte vorher schon mal durchgeschaut.

    Vielen Dank auf jeden Fall

  7. #5
    Registriert seit
    10.07.2008
    Beiträge
    47
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe das ganze jetzt mal ausgeführt.
    OB1 ruft FC1 auf, dieser den FB1 auf. Der FB1 ruft mein Hauptprogramm FB2(Multiinstanz) auf. An den FB2 habe ich an IN1(Block_DB) den DB400 geschrieben.

    Quellcode im FB2:

    AUF #IN1 \\ aufruf des BLOCK_DB
    L DBNO
    T #DBNummer \\ DBNummer als WORD

    call "creat_DB"
    Low_Limit:= #DBNummer
    UP_Limit:= #DBNummer
    RET_Val:= #Falsche_DB_Nummer \\Stat:INT
    DB_Nummer:=#DB_Nummer \\ INOUT:WORD


    So "funktioniert" es erst mal. Allerdings steht im RET_VAL der Wert 32945(online)

    Darüberhinaus, wann wird der DB denn erstellt?? Kriege ich den im Simatic Manager nicht zu sehen??

  8. #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 Kiter11 Beitrag anzeigen
    Ich habe das ganze jetzt mal ausgeführt.
    OB1 ruft FC1 auf, dieser den FB1 auf. Der FB1 ruft mein Hauptprogramm FB2(Multiinstanz) auf. An den FB2 habe ich an IN1(Block_DB) den DB400 geschrieben.

    Quellcode im FB2:

    AUF #IN1 \\ aufruf des BLOCK_DB
    L DBNO
    T #DBNummer \\ DBNummer als WORD

    call "creat_DB"
    Low_Limit:= #DBNummer
    UP_Limit:= #DBNummer
    RET_Val:= #Falsche_DB_Nummer \\Stat:INT
    DB_Nummer:=#DB_Nummer \\ INOUT:WORD


    So "funktioniert" es erst mal. Allerdings steht im RET_VAL der Wert 32945(online)

    Darüberhinaus, wann wird der DB denn erstellt?? Kriege ich den im Simatic Manager nicht zu sehen??
    du solltest den baustein

    a) nur einmal erstellen und
    b) online nach dem DB gucken, also im ordner erreichbare teilnehmer ... offline ist der so erstellte baustein nämlich nicht verfügbar ... weiß grad nicht, ob man ihn runterladen kann - glaub aber nicht
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #7
    Registriert seit
    10.07.2008
    Beiträge
    47
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard

    was heißt nur einmal erstellen?

  10. #8
    Registriert seit
    10.07.2008
    Beiträge
    47
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe gerade festgestellt, das der Fehlercode 80B1 bedeutet, das keine DB_Nummer frei ist. Warum?? Ich habe gerade mal 10 Db´s benutzt im gesamten Projekt.

  11. #9
    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

    der fehler bedeutet, dass der db schon da ist
    und da du versuchst zyklisch zu erstellen ist das auch ganz klar.
    führe die funktion einmal für eine nummer aus und der db wird erstellt (online - in der CPU ... ) einen zweiten mit der selben nummer kannst du nicht erstellen.

    einmal ausführen heißt, wenn kein db erstellt werden soll den aufruf überspringen
    Geändert von vierlagig (26.02.2009 um 20:26 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  12. #10
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Den DB siehst du ausschließlich im Online-Bausteinordner.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

Ähnliche Themen

  1. Programm erstellen (IEC, usw.)
    Von marel im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.12.2010, 11:05
  2. Einfaches SPS Programm erstellen
    Von KeinPlan im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 13.06.2010, 14:07
  3. Programm neu erstellen oder Großputzaktion??
    Von steppenwolf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 28.08.2008, 00:10
  4. VB Programm erstellen
    Von demmy86 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 20.01.2008, 16:29
  5. Antworten: 19
    Letzter Beitrag: 10.01.2006, 15:44

Lesezeichen

Berechtigungen

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