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

Umfrageergebnis anzeigen: Wie "sollte" man die Parameter einen FCs hinterlegen...

Teilnehmer
7. Sie dürfen bei dieser Umfrage nicht abstimmen
  • 1) direkt dranschreiben

    4 57,14%
  • 2) über lokale oder globale Variabeln

    4 57,14%
  • 3) als Aktualwert in einem DB

    5 71,43%
  • 4) als Anfangswert in einem DB

    3 42,86%
  • 5) Sonstiges

    3 42,86%
Multiple-Choice-Umfrage.
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Parameter eines FCs in einem DB definieren. Macht man das?

  1. #1
    Registriert seit
    03.10.2010
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich bin ganz neu hier aber ich habe folgende Frage:

    Parameter eines FCs (IN und OUT) kann man unter anderem:

    1) direkt ranschreiben
    2) lokale oder globale Variablen ranschreiben
    3) aus einem DB als Aktualwerte nehmen
    4) in einem DB als Anfangswerte hinterlegen und nehmen, wenn nichts die Aktualwerte umschreibt (ist fast so wie 3))

    Ich habe den Punkt 4) ausgewählt und z.B. für ein Input-BOOL den Wert FALSE in einem DB hinterlegt... an den FC hab ich dann nur noch den Bit aus dem DB geschrieben (z.B. DB100.DBX0.1)

    Jetzt ist eine Disskussion entbrannt ob man so etwas machen "darf" "kann" "soll"

    Das direkte ranschreiben ist sicvherlich offensichtlicher, ich sehe aber kein Problem mit der Variante 4) bzw Variante 3)... was mein Ihr? Gibt es irgenwelche Probleme mit dieser Methode? Wer macht so was? Ist das ein Anfängerfehler?

    Bisher sind die Argumente dagegen:
    - Es könnte sein das irgendwas den Aktualwert im DB umschreibt.
    - Beim Urlöschen, Stromunterbrechen o.Ä. konnte der DB den Anfangswert verlieren.
    - Die Übersichtlichkeit ist nicht gegeben.

    Ich bitte euch einfach mal darüber zu diskutieren, ich bin relativ frisch in der S7 Programmierung.

    Vielen Dank und Grüße

    dErZ
    Zitieren Zitieren Parameter eines FCs in einem DB definieren. Macht man das?  

  2. #2
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Umfrage:

    Was ist ein Aktualwert?
    Was ist ein Anfangswert?

    [ ] Ja [ ] Nein
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg akt.jpg (277,5 KB, 38x aufgerufen)
    Geändert von Verpolt (19.01.2011 um 16:00 Uhr)

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    ich glaube kaum, das du hiermit jetzt wirklich zu einer Grundsatzdiskussion kommst ... weil außer der Sache mit den Anfangswerten halte ich jede der anderen Varianten für sinnvoll - es hängt somit in erster Linie am Ziel des Ganzen.

    Beispiel Vergleicher :
    Das wird zwar nach außen nicht als FC dargestellt aber im Grunde kannst du so etwas ja auch als FC machen - in FUP hättest du optisch sowieso keinen wirklichen Unterschied.
    Du kannst einen Wert mit einem anderen Wert genauso vergleichen (mal unanhängig davon wo der herkommt) wie mit einer Konstanten.

    Gruß
    Larry

  4. #4
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Wenn du eine Grundsatzdiskussion willst, dann solltest du nach einem FB mit Instanz-DB fragen und nicht nach einem FC.
    Da hat LL ja schon was zu gesagt.

  5. #5
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.616
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Du meinst:

    1) direkt dranschreiben = Konstante ? Wenn ja, dann ist es klar ein Möglicheit wenn es passt zu den Aufgabe.

    2) über lokale oder globale Variabeln = Über Variabel ? Wenn ja, dann ist es klar ein Möglicheit wenn es passt zu den Aufgabe.

    3) als Aktualwert in einem DB = Ist dasselbe wie 2).

    4) als Anfangswert in einem DB = ?. Das Anwenderprogram kennt nicht von "Anfangswerte". Nur wenn das Arbeitsspeicher irgendwie korrupt ist, überträgt der CPU beim Neustart die Anfangswerte von Ladespeicher ins Aktualwerte in Arbeitsspeicher. Darüber hat man in Anwenderprogram kein Einfluss.

    5) Sonstiges = ?

    Vertauscht du vielleicht FBs und FCs ?
    IN und OUT auf ein FC muss mit ein Parameter belegt werden.
    IN und OUT auf ein FB muss nicht mit ein Parameter belegt werden. Wenn ein IN auf ein FB kein Parameter zugewiesen hat, dann bedeutet es das der FB arbeitet mit der Aktualwert in Instanz-DB. Diese Aktualwert bleibt auf das Anfangswert wenn kein neuen Wert auf die Adresse geschrieben wird. Es gibt aber weitere Möglichkeiten ein IDB Aktualwert zu ändern als per IN Parameter. Z.B. per Anwenderprogram innerhalb oder ausserhalb von der FB, oder per HMI Eingabe.
    Jesper M. Pedersen

  6. #6
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.616
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Und jetzt sehe ich das du über ein BOOL fragt.
    Dann gibt es kein nr. 1 (Konstante).
    In STEP7 gibt es kein "TRUE" oder "FALSE" Konstante.
    Dies ist ein Mangel bei STEP7. Auf diesen Grund machen viele Programmierer sein eigene TRUE und FALSE "Konstante" indem das sie irgendeine Adresse (typisch ein paar Merker) fest auf TRUE und FALSE setzt.

    Zu nr. 2 muss ich auch bemerken das in STEP7 gibt es keiner Trennung in Localen und Globalen Daten.
    Jesper M. Pedersen

  7. #7
    dErzOnk ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.10.2010
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    uuups ja ich meinte tatsächlich FBs

    Das 4) also Anfangswert nicht ganz stimmt sondern eingentlich das gleiche wie 3) Aktualwert ist ist mir auch klar...

    Jedoch kann man auch einen DB anlegen und alle Anfangswerte auf default lassen. Vor dem Aufruf des DBs schreibt man dann Werte in den DB, der Anfangswert und der Aktualwert sind nicht gleich.

    Ich will auch nicht das es um eine Grundsatzdisskussion geht aber 2 Kollegen meinten das man Variante 4) nicht machen darf...

    Einen Grund warum konnten sie mir nicht liefern, daher wollte ich mal unbefangene befragen. Wie macht Ihr es denn? Gibt es irgend einen Grund (und keine Mutmaßung) warum man Variante 4) nicht machen darf???

    Danke schonmal und Grüße

    DerZ

  8. #8
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.616
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Wenn du mit Anfangswert meinst, das ein IN Parameter Eingang nicht belegt ist, somit das der Aktualwert auf die Anfangswert bleibt, dann gibt es kein Grund das man es nicht "darf".

    So etwas mache ich z.B. in ein Standard FB für Analogwert-Skalierung.
    Min und Max Roh-Werte sind im 95% von die Fällen immer 0 und 27648.
    Aber manchmal muss ich eine engere Mess-Bereich einrichten.
    Also habe ich die Anfangswerte auf 0 und 27648.
    Die IN Parameter Eingänge sind also meistens leer. Nur im Sonderfall tippe ich andere Werte rein.

    Ein anderes Beispiel wäre ein Standard FB für ein FU. Dann hat man vielleicht 20 verschiedene Parameter für den FU, wo im normal-Fall die typische Werte als Anfangswerte eingestellt sind, und nicht geändert werden.
    Jesper M. Pedersen

  9. #9
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    FB also.

    4) in einem DB als Anfangswerte hinterlegen und nehmen, wenn nichts die Aktualwerte umschreibt
    Ein wesentlicher Vorteil der Beschaltung von "aussen" ist doch, daß du deine Werte jederzeit ändern kannst, ohne den Instanzdatenbaustein anzufassen.

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von JesperMP Beitrag anzeigen
    In STEP7 gibt es kein "TRUE" oder "FALSE" Konstante.
    Dies ist ein Mangel bei STEP7. Auf diesen Grund machen viele Programmierer sein eigene TRUE und FALSE "Konstante" indem das sie irgendeine Adresse (typisch ein paar Merker) fest auf TRUE und FALSE setzt.
    [Klugscheißmodus]
    TRUE- und FALSE-Konstanten gibt es in Step7, die kann man aber nur an FB/FC-IN-Parametern in AWL benutzen
    Code:
          CALL  FC    12
           bIN0:=FALSE
           bIN1:=TRUE
           bIN2:=M0.0
           bIN3:=M0.1
    [/Klugscheißmodus]

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 23
    Letzter Beitrag: 28.06.2011, 18:42
  2. Einlesen eines Bereiches aus einem DB???
    Von Vassily im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.10.2010, 13:58
  3. Wert eines ANY-Parameter in SCL auslesen
    Von U.Schmidt im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.09.2010, 14:37
  4. Blockmove in einem FC (UDT als IN Parameter)
    Von Jochen Kühner im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 30.09.2008, 09:37
  5. FC mit einem STRING Parameter aufrufen
    Von xaverlg im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.04.2008, 12:20

Lesezeichen

Berechtigungen

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