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

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

Thema: 16x BOOL zu WORD

  1. #1
    Registriert seit
    16.03.2009
    Ort
    westliches NRW
    Beiträge
    37
    Danke
    19
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    gibt es eine Möglichkeit aus einem DB 16 Bits zu lesen und die in ein WORD zu transferieren ? Das ganze soll aber bei optimiertem Baustein funktionieren.

    Hintergrund ist, das ein DB mit z.B. 16x BOOL angelegt wird und jedes Bit soll einen eigenen Kommentar erhalten können. Also fällt ein ARRAY schon mal flach.

    Dann sollen die Daten im HMI als Störmeldungen abgefragt werden können.
    Geht nicht, gibt's nicht.
    Zitieren Zitieren 16x BOOL zu WORD  

  2. #2
    Registriert seit
    29.10.2010
    Beiträge
    519
    Danke
    56
    Erhielt 38 Danke für 36 Beiträge

    Standard

    Alles geht, außer nem Känguru das hüpft.

    Tschö dentech

  3. #3
    Registriert seit
    22.08.2012
    Beiträge
    97
    Danke
    18
    Erhielt 15 Danke für 14 Beiträge

    Standard

    Hi,

    du könntest einen einfachen FC schreiben, welcher die Bits mittels Slice-Zugriff in das Wort schreibt.

    Beispiel SCL:

    Code:
    "Ziel_DB".Wort.X0 := "Quell_DB".Bit0815;
    In AWL könntest du es auch machen:
    Code:
    U "Quell_DB".Bit0815
    = "Ziel_DB".Wort.X0
    Edit: dentech war schneller

  4. #4
    Registriert seit
    16.03.2009
    Ort
    westliches NRW
    Beiträge
    37
    Danke
    19
    Erhielt 2 Danke für 2 Beiträge

    Standard

    @dentech: Danke erst mal für den Tipp. Aber den Slice Zugriff kannte ich schon. Hilft mir auch nicht weiter. Ich möchte ja kein nicht "von groß nach klein" sondern "von klein nach groß". Also z.B. die ersten 16 einzelnen Bit's eines DB's lesen und dann in ein WORD schreiben.
    Geht nicht, gibt's nicht.

  5. #5
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.213
    Danke
    430
    Erhielt 650 Danke für 490 Beiträge

    Standard

    Ähm, dir ist schon klar dass das mit dem Alice in beiden Richtungen geht...

    Code:
    U  DatenbausteinBit0
    =  Word.X0
    U  DatenbausteinBit1
    =  Word.X1
    ...
    Stand eigentlich eh schon bei LordAnubis.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  6. #6
    Registriert seit
    16.03.2009
    Ort
    westliches NRW
    Beiträge
    37
    Danke
    19
    Erhielt 2 Danke für 2 Beiträge

    Standard

    OK, das habe ich verstanden. Es gibt also keine Möglichkeit in der symbolischen Adressierung mit einem Befehl gleichzeitig 16 Bits zu lesen ? In der absoluten Adressierung war ja die Möglichkeit zu sagen L DB1.DBW0 um die ersten 16 Bits zu lesen, egal wie der DB deklariert war.
    Geht nicht, gibt's nicht.

  7. #7
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.652
    Danke
    310
    Erhielt 1.494 Danke für 1.259 Beiträge

    Standard

    Ich hab einen Hilfsbaustein, 16 Bit Struct Rein, Word raus.
    Die Symbolik des äußeren Structs ist dabei dann egal, solange es eben 16 Bit hat.
    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).

  8. #8
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.213
    Danke
    430
    Erhielt 650 Danke für 490 Beiträge

    Standard

    Nein sowas gibt es nicht.
    Damit du 16Bits gleichzeitig symbolisch anfassen kannst bräuchten die eben ein Symbol.
    Du könntest deinen DB als Ansammlung von Struct_of_16Bool deklarieren und dann einen Konvertierungs-FC Struct16toWord bauen...

    Einfacher wäre es wohl den einen DB für die Bitmeldungen auf "nicht optimiert" zu lassen, die Bits normal mit Kommentar anzulegen und dann die HMI-Variablen (Word oder Array_of_Word) mit absolutem Zugriff auf den DB anzulegen. Dann kannst du dir die Konvertierung in der SPS schenken.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    10.076
    Danke
    838
    Erhielt 2.965 Danke für 2.390 Beiträge

    Standard

    Zitat Zitat von deltafox1002 Beitrag anzeigen
    Es gibt also keine Möglichkeit in der symbolischen Adressierung mit einem Befehl gleichzeitig 16 Bits zu lesen ?
    Doch - man kann ja ein WORD lesen

    16 einzeln deklarierte Bits kann man allerdings nicht symbolisch als eine Einheit lesen, weil ja nicht bekannt ist, ob und wo die 16 Bits zusammenhängend gespeichert sind. Es sei denn, Du "zwingst" den Compiler dazu, z.B. mittels "AT" eines STRUCTs oder BOOL-Arrays auf ein WORD - das AT läßt Siemens aber für "optimierte" Datenbereiche nicht zu.

    FAQ: Wie programmieren Sie in STEP 7 (TIA Portal) die Überlagerung von Variablen mit dem Schlüsselwort "AT"?
    In dem FAQ sind auch fertige Bausteine "BoolToWordAT" und "WordToBoolAT" zum zusammenstellen bzw. aufdröseln von 16 Bits. Und der Hinweis, daß für bessere Performance besser Slice-Zugriffe benutzt werden sollten.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.016
    Danke
    511
    Erhielt 2.647 Danke für 1.910 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ehrlich das ist doch aber alles totaler Unsinn!
    Optimiert bei Siemens bedeutet, dass die Daten so abgelegt werden, dass der Prozessor der SPS, die Daten mit möglichst wenig Speicherzugriffen lesen kann.
    Siemens hat dabei anscheinend vergessen, dass seine HMI bei den einfachen Störmeldungen auf Bits in Words zugreifen. In ihrem Bestreben, alles Neue als die große Verbessserung zu verkaufen, haben sie die optimierten Bausteine beworben, als wenn nun alles schnell gut und optimal wäre. Der Begriff legt das ja nahe. Für eine HMI mit Bitmeldungen ist es immer noch das Schnellste und Resourcensparenste, einen nicht optimierten Baustein zu verwenden, in welchem man die Störmeldungen und Quittieruungen ganz normal als Bits definiert, das HMi aber auf Word (absolut) aus diesem DB zugreifen läßt.
    Ich hab hier ein Beispiel von Kollegen, da wird in der SPS ein optimierter Baustein verwendet, der dann 16 Bits und ein Word für 16 Meldungen bereitstellt. Ein extra FC kopiert die Bits auf das Word, das dann von der HMI gelesen wird. Wenn das dann optimal sei soll

    Also ich denke, hier ist wirklich ein nicht optimierter Baustein der Optimale.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.08.2014, 06:17
  2. DO 16x DI 16x CPU315F alle Orginalverpackt und weiß versiegelt
    Von Noah_der_Riese im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 05.05.2013, 10:29
  3. BOOL to WORD
    Von giro im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 10.07.2011, 16:49
  4. Antworten: 0
    Letzter Beitrag: 22.03.2011, 00:14
  5. Targets für Wago 16x DI / 16x DO gesucht
    Von Andy082 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 03.05.2010, 22:26

Lesezeichen

Berechtigungen

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