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

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

Thema: Datenbereich für FC festlegen...

  1. #1
    Registriert seit
    08.01.2007
    Ort
    Dülmen
    Beiträge
    393
    Danke
    58
    Erhielt 24 Danke für 17 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte mir einen allgmeinen Baustein schreiben, den ich sehr häufig benutzen werde. Deshalb dachte ich, keinen FB wegen der Menge an I-DB`s. Sondern einen FC dem ich einen Eingangsbereich zuweise und natürlich auch einen Ausgangsbereich.

    Wie deklariere ich den Bereich...? Ich habe jetzt mal als Test ein Array mit: ARRAY[0..15] of int angelegt.

    jetzt dache ich mir, beim Bausteinaufruf den IN Parameter per Pointer zu übergeben: P#DB4.DBX0.0 Byte32. Dies geht wohl so nicht...

    Jemand eine Idee wie ich aus einem FC ine einen Variabelen Bereich schreiben und lesen kann... mir ist auch nocht nicht klar wie ich einzelne Bits aus dem Arrayfeld herauslöse bzw. schreibe...
    Könnte mir aber vorstellen das ich ein Wort in einen Puffer schreibe/lese und dann das jeweilige Bit ändere.

    Bin für Vorschläge und Lösungen dankbar.
    Zitieren Zitieren Datenbereich für FC festlegen...  

  2. #2
    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 AndreK Beitrag anzeigen
    jetzt dache ich mir, beim Bausteinaufruf den IN Parameter per Pointer zu übergeben: P#DB4.DBX0.0 Byte32. Dies geht wohl so nicht...
    geht es wohl doch. datentypen POINTER und ANY sind dann diejenigen welche zum erfolg führen.

    allerdings sehe ich noch nicht, dass du das für deinen ERSTEN allgemeinen FC brauchst.
    darüber hinaus finde ich deine argumentation zum thema FB sehr dünn - liegt vielleicht auch daran, dass die gewünschte funktionalität deines bausteins aus deiner sehr dünnen beschreibung nicht so ganz/überhaupt nicht klar wird.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    AndreK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.01.2007
    Ort
    Dülmen
    Beiträge
    393
    Danke
    58
    Erhielt 24 Danke für 17 Beiträge

    Standard

    Das mit dem ANY habe ich schon herausbekommen... habe mir einfach mal einen anderen Baustein angeschaut was der am übergebenen POINTER verlangt. Darauf hin, habe ich dann den "Multi-FC" mit ANY für IN/OUT und INOut geändert.

    Aber wie lese ich aus einem Datenfeld? Also aus dem 3 Wort das bit 0.4?

    Warum das ganze:
    1. Bastelei... gerade ein wenig Zeit... und Weiterbildung ist wichtig
    2. Vieleicht wird das mal ein allgemeiner Motorbaustein, der Eingänge für: Motorschutz, Steuersicherung, Thermistorschutz, Drehzahlüberwachung, EIN/AUS/PAUSE, Stromwandler, Schaltpunkte... Ausgänge für Störmeldungen für WinCC als Word, ein Statusbyte damit ich in WinCC immer das gleiche Template verwenden kann und und und und und....
    Zitieren Zitieren Ok...  

  4. #4
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Wenn du ein Standartbaustein als FB ausführst kannst du diesen als Multiinstanz in einem andern FB aufrufen, das ergibt dann nur einen Instanz-DB. Und das ganze noch ohne POINTER

  5. #5
    AndreK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.01.2007
    Ort
    Dülmen
    Beiträge
    393
    Danke
    58
    Erhielt 24 Danke für 17 Beiträge

    Standard

    Zitat Zitat von Züttu Beitrag anzeigen
    Wenn du ein Standartbaustein als FB ausführst kannst du diesen als Multiinstanz in einem andern FB aufrufen, das ergibt dann nur einen Instanz-DB. Und das ganze noch ohne POINTER
    Ok, das wäre mir aber zu verschachtelt. Der Baustein soll recht simpel einer Funktionsgruppe zuzuordnen sein.
    Zitieren Zitieren Möchte ich in diesem Fall aber nicht, weil...  

  6. #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 AndreK Beitrag anzeigen
    Aber wie lese ich aus einem Datenfeld? Also aus dem 3 Wort das bit 0.4?
    zerleg den any in seine bestandteile, ermittle den datentyp und rufe dann mit hilfe indirekter adressierung den entsprechenden datenbereich auf, kleines bsp.:

    Code:
    *
          L     P##anyIn
          LAR1
    //handelt es sich um ein datenbausteinelement?
          L     W [AR1,P#4.0]
          L     0
          <>I   
          SPBN  db2
          TAK   
          T     #wDB1
    das ganze dann halt für alle bestandteile des any (s. FAQ)
    und, bleiben wir mal bei datenbaustein, word:

    Code:
    *
          AUF   DB [#wDB1]
          L     DBW [AR1,P#3.4]
    Zitat Zitat von AndreK Beitrag anzeigen
    Warum das ganze:
    1. Bastelei... gerade ein wenig Zeit... und Weiterbildung ist wichtig
    ok, vielleicht solltest du dir dann für deinen ERSTEN allgemeinen Baustein etwas anderes vornehmen?!

    Zitat Zitat von AndreK Beitrag anzeigen
    2. Vieleicht wird das mal ein allgemeiner Motorbaustein, der Eingänge für: Motorschutz, Steuersicherung, Thermistorschutz, Drehzahlüberwachung, EIN/AUS/PAUSE, Stromwandler, Schaltpunkte... Ausgänge für Störmeldungen für WinCC als Word, ein Statusbyte damit ich in WinCC immer das gleiche Template verwenden kann und und und und und....
    wenn du daraus einen motorbaustein baust, dann ... dann ... argh ... ich geh kotzen...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    AndreK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.01.2007
    Ort
    Dülmen
    Beiträge
    393
    Danke
    58
    Erhielt 24 Danke für 17 Beiträge

    Standard

    ... denn ich bin offen für Vorschläge!

    Mir geht es nur darum wie ich einem Standardbaustein (nein, ist nicht mein erster) ein Datenfeld zuweisen bzw. in ein Datenfeld schreiben kann.

    Ich kann dann Status, Störungen uns sonstiges immer gleich aus WinnCC anzeigen. Und jede Funktionsgruppe hat einen eigenen DB...

    Ob das an der Stelle nun gut ist lasse ich jetzt mal dahingestellt... aber jetzt will ich wissen wie es geht Aber für einen anderen Vorschlag bin ich auf jeden Fall offen!
    Zitieren Zitieren Na, übergeben muss sich keiner...  

  8. #8
    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 AndreK Beitrag anzeigen
    .Mir geht es nur darum wie ich einem Standardbaustein (nein, ist nicht mein erster) ein Datenfeld zuweisen bzw. in ein Datenfeld schreiben kann.
    definiere datenfeld!
    ein bit/byte/word in einem datenbaustein?
    schau dir mal den datentyp Block_DB an.
    oder auch die funktionalität von AUF [...]

    Zitat Zitat von AndreK Beitrag anzeigen
    Ich kann dann Status, Störungen uns sonstiges immer gleich aus WinnCC anzeigen. Und jede Funktionsgruppe hat einen eigenen DB...
    aber über die menge von IDBs meckern und eine multiinstanz als zu sehr verzweigt empfinden ... irre

    Zitat Zitat von AndreK Beitrag anzeigen
    Ob das an der Stelle nun gut ist lasse ich jetzt mal dahingestellt... aber jetzt will ich wissen wie es geht Aber für einen anderen Vorschlag bin ich auf jeden Fall offen!
    vorschlag für was? motor-baustein? http://sps-forum.de/showthread.php?t=37785
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #9
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Man kann doch einen UDT anlegen, diesen dann im FC als IN/OUT reinnehmen,

    Den UDT in beliebigen DB's ablegen udn von aussen dran schreiben.

    Damit hast du alles Symbole und Typen im FC und kannst darauf zugreifen.
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  10. #10
    AndreK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.01.2007
    Ort
    Dülmen
    Beiträge
    393
    Danke
    58
    Erhielt 24 Danke für 17 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hatte gedacht die Daten (Status, Störungen, usw.) von mehreren Antrieben die zu einer Funktionsgruppe gehören in EINEM DB unterzubringen.

    Diese Datenfelder sollten dann immer die gleiche Struktur haben, z.B.

    Im Endeffekt 3 Felder mit ca. 8 Wörtern für IN, INOut, Out... aber wenn ich mir den Aufwand anschaue halte ich das eher für unpraktikabel mit ANY zu arbeiten. Möchte ich auch keinem im Service zumuten...

    Klar geht das auch mit FB`s und I-DB`s, so habe ich es ja schon... ist ja auch nicht schlecht.
    Zitieren Zitieren Danke  

Ähnliche Themen

  1. Eingänge über Panel festlegen
    Von markuscps im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.06.2010, 13:52
  2. Reihenfolge der Variablen im DB festlegen
    Von Franky08 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 19.08.2009, 10:41
  3. Meldetexte in SCL Quelle festlegen
    Von Shino im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 26.02.2009, 14:52
  4. MP 377 Globale Tasten festlegen
    Von wachsi im Forum HMI
    Antworten: 2
    Letzter Beitrag: 14.11.2008, 12:18
  5. DB Anfangswert festlegen
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 08.06.2005, 13:22

Lesezeichen

Berechtigungen

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