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

Ergebnis 1 bis 7 von 7

Thema: Werte per Schrittkette an Anschluss vom Typ ANY schreiben

  1. #1
    Registriert seit
    08.09.2014
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich bin grade dabei einen Baustein in SCL zuschreiben der Prozesswerte eines Beliebigendatentyps in ein DB schreibt. Der momentan folgende Anschlüsse:
    Code:
    VAR_INPUT
    Data: ANY; Write: BOOL; PMQ_DB: BLOCK_DB;
    END_VAR
    Per Schrittkette sollen Prozesswerte von z.B. einem Anlogmonitoring Bausteinen an den Data-Anschluss übergeben werden. Die Daten sollen dann in den DB der am PMQ_DB-Anschluss steht geschrieben werden. Da zum Zeitpunkt des Kompilierens noch nicht feststeht wie der DB aussehen wird, muss anhand des Datentyps der am Data-Anschluss steht die Wort Adresse berechnet werden, an welche Stelle im DB geschrieben werden muss. Dies ist ja auch möglich, da ein ANY-Pointer die Informationen über den Datentyp enthält.

    Das eigentliche Problem ist nun, wie bekomme ich meine Werte an den ANY-Pointer? In den Schrittketten ist der Datentyp nicht zugelassen. Werte direkt an den Anschluss im CFC schreiben funktioniert logischerweise auch nicht, da der Anschluss ja nur ein Pointer ist und somit nur auf die Adresse einer Variable zeigen kann und selber keinen Wert aufnehmen kann.

    Gibt es in Möglichkeit über einen SFC Daten aus einer Schrittkette an den Data-Anschluss zu übergeben? Also Werte eines beliebigen Typs zwischenspeichern um mit dem Data-Pointer darauf zu zeigen, ohne das die Information über den Variablen Typ verloren geht.

    Ich würde mich freuen, wenn ihr mir weiterhelfen könnt.
    Zitieren Zitieren Werte per Schrittkette an Anschluss vom Typ ANY schreiben  

  2. #2
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.491
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    Also irgendwie ist dein Vorhaben "seltsam".
    Beim Übersetzen der Schrittkette muss zumindest diese Informationen über die Quelldaten haben.
    Wenn es Analogwerte sin, dann handelt es meist um irgendwelche elementaren Datentypen (Int, Real).
    Diese kannst du in einem Hilfs-DB oder im Instanz-DB zwischenspeichern.
    Wenn der Aufbau deines Monitoring-DB bekannt ist, dann kannst du dir dynamisch deine Zeiger (ob nun ANY oder "Normal") zusammenbauen und die Daten z.B. per SFC20 übertragen.
    Typlose Variablen oder Templates kennt die S7 nicht.

    Gruß
    Dieter

  3. #3
    Jason07 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.09.2014
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke erstmal für die schnelle Antwort.
    Also wie der DB aussieht ist zum Zeitpunkt wo ich das Programm kompiliere nicht bekannt. Nochmal näheres zu meinem Vorhaben. Der Nutzer von meinem Baustein kann einen DB schreiben mit bsp folgenden einträgen:
    Code:
    TYPE
    myDB
    STRUCT
    Wert1: REAL; Wert2: INT; Wert3: INT; Wert4: REAL;
    END_STRUCT;
    Dieser DB wird auf meinen Baustein an dem Eingang PMQ_DB angeschlossen. Nun soll mittels einer Schrittkette Werte an den Eingang Data übergeben werden, worin ja mein eigentliches Problem liegt. Also nach dem Moto in Schritt 4 übergebe den Wert von Analogmonitoring 1 an Data. Nun soll in meinem Baustein der Wert in den DB geschrieben werden. Ich ermittel also über den Datentyp von Data und der Anzahl der Wörter die ich schon in den Baustein geschrieben habe, die Adresse an die ich in den DB schreiben muss und kopier die Daten mittels SFC20. Mein Problem ist nur die Daten an den Data-Anschluss zu bekommen. Wenn ich z.B. den Ausgang des Anlogmonitoring im CFC auf Data aufschalte ist es kein Problem, dann bekommt der Data-Anypointer seine Daten über die Verschaltung. Aber gibt es eine Möglichkeit ohne Verschaltung Daten per Schrittkette dem Data-Anypointer zu übergeben. So wie beispielsweise bei Int Anschlüssen, wo ich einfach in Schritt X Sagen kann, "Weise Variable A den Wert aus Variablen B zu." Ich möchte per Schrittkette den Anypointer quasi auf den Ausgang das Analogmoitoring zeigen lassen um die Daten dann weiter zu verarbeiten.

    Der Nutzer des Bausteins muss natürlich darauf achten, das er die Daten in der Reihenfolge übergibt wie er sie in seinem DB erwartet.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    du könntest deinem Baustein einen "Enable"-Eingang verpassen, der dann das weitere Verhalten freigibt ...

    Gruß
    Larry

  5. #5
    Jason07 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.09.2014
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wie meinst du das? Ein EN für jeden Datentyp, dass der Baustein manuell gesagt bekommt was zu tun ist? Das Problem ist ja nicht die Weiterverabeitung, sondern die daten vom Monitoring an den Data-Eingang zu bekommen. Ich möchte ungern für jeden Datentyp einen eigenen Eingang anbieten.

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Naja ... irgendwie / irgendwas in der Art wirst du machen müssen.
    Damit umgehst du dann auch das Problem mit dem "wo soll das hin, was da reinkommt ?".
    Du kannst aber auch mit einem Index arbeiten :
    Index = 0 : nichts machen
    Index = 1 : Variablen nach Wert 1 übergeben
    usw.

    Gruß
    Larry

  7. #7
    Jason07 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.09.2014
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wo der Wert hinkommt, wird ja durch die Reihenfolge bestimmt. Es geht ja nur um den Typ der Variablen und das diese aus einer Schrittkette beschrieben werden kann. Möglich wäre ein Eingang für jeden Variablentyp und ein Eingang dataType zum selektieren des Eingangs, bsp:
    Code:
    VAR_INPUT
    intData: INT; realData:Real; ... dataType: INT;
    END_VAR;
    Es würde sich jeder Eingang aus einer Schrittkette beschreiben lassen.
    Dachte halt es gebe eine Möglichkeite den Data-Anypointer mit einer Schrittkette auf den Wert des Analogmoitoring zeigen zu lassen. Wäre eine sehr elegant und Universelle Lösung für meine Anwendung gewesen. Schade.

Ähnliche Themen

  1. SPS Programm vom GRAFCET ableiten und als Schrittkette schreiben
    Von Marianus im Forum Programmierstrategien
    Antworten: 22
    Letzter Beitrag: 15.11.2014, 23:49
  2. Antworten: 8
    Letzter Beitrag: 22.04.2011, 22:58
  3. Anschluss vom Flowmeter an die sps
    Von ralfsps im Forum Elektronik
    Antworten: 28
    Letzter Beitrag: 18.09.2010, 21:06
  4. Parameter vom Typ ANY
    Von blume_mercan im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 17.01.2008, 15:37
  5. Antworten: 13
    Letzter Beitrag: 06.12.2004, 21:39

Stichworte

Lesezeichen

Berechtigungen

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