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

Ergebnis 1 bis 8 von 8

Thema: offenes Datenformat für In-Variable

  1. #1
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    entweder ich seh den Wald vor lauter Bäumen nicht, oder ich suche gerade nach etwas unmöglichem.
    Ich habe einen FB geschrieben, welcher eine Datenbank (DB mit Offset) nach einem Wert durchsucht. (Das nur als Hintergrundinfo)
    Bisher muss ich diesen Baustein immer intern Projektbedingt anpassen da immer unterschiedliche Daten gesucht werden. Mal ein Bool-Status, mal ein Byte, oder eine Real-Zahl, ein ASCII-Zeichen etc...
    Ich suche nun nach einer Möglichkeit, eine offene Eingangsvariable zu schaffen wie z.Bsp. beim Siemens MOVE-Baustein.

    Ist sowas möglich?
    Grüßele vom Bärle
    Zitieren Zitieren offenes Datenformat für In-Variable  

  2. #2
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    559
    Danke
    56
    Erhielt 50 Danke für 45 Beiträge

    Standard

    Vielleicht ein #Pointer ?
    Bin mir aber nicht wirklich sicher. Hab mit #Pointer seit 5 Jahren nichts mehr gemacht.
    (wo anders gibt es Variant variablentypen.)
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



  3. #3
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard

    Mit Pointer suche ich mir innerhalb des DB´s die Startadresse des Datensatzes mit dem gefundenen Wert. Mein Problem ist einfach das in einem Projekt mal ein BOOL-Wert im nächsten Projekt vielleicht eine Real-Zahl gesucht werden soll. Dafür suche ich eben eine Lösung um dem Baustein eine passende "In-Variable" zu geben wie z.Bsp. beim MOVE-Baustein. Da kann man ja auch alle Datenformate übergeben. Derzeit kann ich meinen Baustein mit allem beschalten was nötig ist nur nicht mit dem Suchwert. Den muss ich immer intern im Baustein anpassen. Ist einfach unschön, verwirrend und nicht wirklich Bibliotheksfähig.
    Grüßele vom Bärle

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

    Standard

    Der universelle Datentyp heißt ANY
    Aber: je universeller Du Deinen Baustein machst, desto aufgeblähter wird er, desto mehr Fehler enthält er und es fällt auch nicht mehr auf, wenn das was Du damit suchen willst überhaupt nicht zum Projekt passt.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Bär1971 (20.12.2014)

  6. #5
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard

    hm.. ich bekomms doch nicht ganz alleine hin.

    Code:
       AUF   DB [#t_database_nb]
          L     #byte_nb_to_scan
          SLW   3
          LAR1  
    
          L     #volume_of_datasets
    Loo1: T     #Loop_count_1
    
          L     DBW [AR1,P#0.0]
          L     #value_to_search_in_dbase
          ==I   
          SPBN  next
    
          TAR1  
          SRW   3
          L     #byte_nb_to_scan
          -I    
          T     #t_start_adr_dataset
          SET   
          S     #dataset_located
          U     #dataset_located
          SPB   _end
    
    next: NOP   0
    
          L     #size_dataset
          SLW   3
          +AR1  
    
          L     #Loop_count_1
          LOOP  Loo1
    
          SET   
          S     #dataset_not_located
          U     #dataset_not_located
          SPB   _end
    Der markierte Teil:
    L DBW [AR1,P#0.0]
    L #value_to_search_in_dbase
    ==I
    vergleicht in diesem Projekt auf eine INT-Zahl.

    Die In-Variable "#value_to_search_in_dbase" kann man also als ANY-Datentyp deklarieren.
    Aber wie kann man den indirekt adressierten Einsprung zur Suche ( L DBW [AR1,P#0.0]) Datentypungebunden aufrufen?
    Und das ganze dann auch noch vergleichen?
    Ist es überhaupt möglich diesen Vergleicher "any" zu gestalten?
    Und wenn wie?
    Grüßele vom Bärle

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

    Standard

    Schau Dir in der Step7-Hilfe und hier in der FAQ den Aufbau des ANY-Datentyps an. In Deinem Baustein mußt Du in den ANY schauen was übergeben wurde und davon abhängig eine Fallunterscheidung machen, d.h. für jeden von Dir gewünschten/unterstützten Typ eine andere Routine schreiben. Dann kommt es auch noch darauf an, ob Du einen FC oder FB programmierst. Deine universal-"eierlegende Wollmilchsau" kann eine Lebensaufgabe werden, bis alles endlich fehlerfrei funktioniert...

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Bär1971 (21.12.2014)

  9. #7
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard

    Vielen Dank Harald für die Richtung. Ich denke das ich mein Datenbankkonzept neu überarbeiten muss um mich nicht in Teilaufgaben zu verzetteln. Aber jetzt hab ich einen Weg um die Aufgabe als Ganzes neu zu lösen.
    Grüßele vom Bärle

  10. #8
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.458
    Danke
    502
    Erhielt 217 Danke für 192 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Eine andere Möglichkeit wäre dem Baustein mehrere IN mit den jeweiligen Datentypen zu übergeben, musst halt dann im FB Auswerten wo was kommt.
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

Ähnliche Themen

  1. Offenes ADS Protokoll
    Von s.murauer im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 19.09.2011, 07:50
  2. Datenformat
    Von römi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.07.2009, 07:04
  3. Datenformat Char
    Von CanYouHelpMe im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.09.2008, 09:23
  4. S7 REAL Datenformat
    Von cidex im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 09.08.2007, 19:37
  5. Datenformat eeprom
    Von mariob im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 24.03.2006, 22:31

Lesezeichen

Berechtigungen

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