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

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

Thema: Bool Variablen im DB als Word ansprechen

  1. #1
    Registriert seit
    28.09.2015
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Community,

    das ist mein erster Thread hier, sollten Informationen fehlen reiche ich diese nach

    Stellen gerade von Step 7 auf TIA um und ich soll für die erste Maschine ein Programm schreiben. Leider kennt sich bisher keiner richtig mit TIA aus und gehen dem aus dem Weg und nach langer Recherche habe ich nichts vernünftiges finden können, welches nicht in SCL geschrieben ist.
    Daher möchte ich euch kurz mein Problem erläutern und hoffe auf eure Unterstützung.

    Es handelt sich um eine S7-1200 Steuerung und die Software ist TIA V13.
    Ich möchte einzelne Bits aus einem DB als Word ansprechen. Über Step 7 hat man zB. DB3.DBW0 geschrieben. Bei TIA kommt dann aber die Fehlermeldung "Die Adresse wird nicht durch eine Variable belegt", vssl aufgrund der rein symbolischen Adressierung und man im DB sämtliche Informationen dazwischen schieben könnte und das Word nicht mehr richtig definiert wird.

    Bei Siemens gibt es anscheinend einen Baustein der die Bits zu einem Word umwandeln kann, leider lässt sich diese runter zuladende Datei nicht öffnen [https://support.industry.siemens.com...ti=0&lc=de-WW]. Auf der angegebenen Seite ganz unten die Zip-Datei "STEP7_TIA_Portal_AT_KeyWord.zip ( 1440 KB ) ".

    Könnt ihr mir bitte weiterhelfen, ich bräuchte einen Lösungsansatz um das Problem lösen zu können und dieser soll nicht in SCL geschrieben sein (Vorgabe Kunde). Gibt es da einen Baustein oder einen Kniff?

    Ich hoffe ihr habt mein Problem verstanden und könnt mir helfen.


    Viele Grüße
    Zitieren Zitieren Bool Variablen im DB als Word ansprechen  

  2. #2
    Registriert seit
    04.11.2013
    Beiträge
    141
    Danke
    12
    Erhielt 25 Danke für 20 Beiträge

    Standard

    In TIA heißt der Zugriff auf einzelne Bits SLICE-Zugriff.

    Für einen Überblick gibts von Siemens den Programmierleitfaden

  3. #3
    Registriert seit
    13.10.2009
    Ort
    CH - Leutwil
    Beiträge
    37
    Danke
    31
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ich habe es mit MOVE gelöst. DB1.mein_WORD -> MOVE -> globale Variable MW12
    das MW kannst du ja beliebig beschreiben -()- M12.0 / -()- M12.1

  4. #4
    ACDC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2015
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Gleichstromer,

    der Programmierleitfaden habe ich auch zur Hand, du meinst sicher das Kapitel 3.6.5 ? Wenn ich das richtig verstehe kann man auf diese Weise z.B. bei einem vorhandenen Word das einzelne Bit abfragen. Das heißt jeweils die kleineren Datentypen ansprechen. Ich möchte so zusagen das Gegenteil, d.h. mehrere Bits zu einem Word zusammenfassen. Geht das auch mit dem Slice-Zugriff?

    Beispiel:
    Name Datentyp
    Störung 1 Bool
    Störung 2 Bool
    Störung 3 Bool
    ....
    Störung 15 Bool


    Un in einem FC möchte ich das Störungsword 1 abfragen als Datentyp Word.

    Stehe vllt noch etwas auf dem Schlauch...

  5. #5
    ACDC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2015
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ Turi,

    diesen Gedanke hatte ich auch schon die einzelnen Bits in Merker umzuwandeln und dann das Merkerword abzufragen.
    Allerdings wäre das bei großen DB´s viel Handarbeit. Handelt sich bei dem Vorlagenproject bereits um 128 Bits und es könnten weitaus mehr werden

  6. #6
    Registriert seit
    15.10.2014
    Beiträge
    91
    Danke
    15
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Hallo ACDC,

    warum machst du es denn nicht mit einen Slice Zugriff?

    "STM1-16" = irgendein Word (Symbolisch)

    STM1 = STM1-16.%X0
    STM2 = STM1-16.%X1
    STM3 = STM1-16.%X2
    ..
    STM16 = STM1-16.%X15

    Um nun abzufragen ob du eine Störung hast musst du nur das Word auf ungleich 0 vergleichen.


    Wenn du mehr als 16 Bit abfragen willst kannst du es auch mit einen LWORD machen. Da hast du ganze 64 Bit zu Verfügung.

    Stefan
    Geändert von Stefan592 (02.10.2015 um 13:03 Uhr) Grund: 64 Bit hinzugefügt

  7. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.356
    Danke
    455
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Zitat Zitat von Stefan592 Beitrag anzeigen
    Hallo ACDC,
    warum machst du es denn nicht mit einen Slice Zugriff?
    "STM1-16" = irgendein Word (Symbolisch)

    STM1 = STM1-16.%X0
    STM2 = STM1-16.%X1
    STM3 = STM1-16.%X2
    ..
    STM16 = STM1-16.%X15
    Stefan hat's schon fast richtig. Der TE will ja nicht auf die Bits aus einem Word zugreifen, sondern vorhandene Bits in ein Word bekommen.

    Code:
    STM0-15.%X0 = STM0;
    STM0-15.%X1 = STM1;
    STM0-15.%X2 = STM2;
    ..
    STM0-15.%X15 = STM15;
    Danach kannst du mit dem WORD oder INT "STM0-15" weiterarbeiten.
    Geändert von RONIN (02.10.2015 um 13:19 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.203
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von Gleichstromer Beitrag anzeigen
    In TIA heißt der Zugriff auf einzelne Bits SLICE-Zugriff.
    Zitat Zitat von Stefan592 Beitrag anzeigen
    warum machst du es denn nicht mit einen Slice Zugriff?
    Mit Slice-Zugriff kann man die Bits in einem Word ansprechen aber nicht das Word, was (vielleicht) von den Bitvariablen belegt wird.

    Um das Word anzusprechen, müßte man dafür sorgen
    - daß das Bitfeld auf einer bekannten Word-Adresse liegt --> "optimierten Bausteinzugriff" ausschalten
    - und daß das Bitfeld und das Word auf der selben Wordadresse liegen --> manuell kontrollieren oder als Struct oder Array of Bool deklarieren und mit AT mit einem Word zusammenlegen
    - dann kann man auf die Word-Adresse zugreifen

    Oder alle Bits einzeln in ein Word kopieren:
    - nicht ganz sauber über Merker oder TEMP
    - besser in eine Struktur
    - oder per Slice in das Word kopieren
    - oder per Wordverknüpfung in das Word verodern


    Alternativ könnte man den Störmelde-Speicherbereich als Array of Word deklarieren und per Slice auf die einzelnen Meldebits zugreifen.
    Bei nur 128 Meldungen könnte man auch das ganze Bit-Array auf ein Word-Array umkopieren ("optimierter Zugriff" muß Aus sein).


    Zitat Zitat von Stefan592 Beitrag anzeigen
    Wenn du mehr als 16 Bit abfragen willst kannst du es auch mit einen LWORD machen. Da hast du ganze 64 Bit zu Verfügung.
    Die S7-1200 kennt kein LWORD.


    Zitat Zitat von ACDC Beitrag anzeigen
    Bei Siemens gibt es anscheinend einen Baustein der die Bits zu einem Word umwandeln kann, leider lässt sich diese runter zuladende Datei nicht öffnen [https://support.industry.siemens.com...ti=0&lc=de-WW]. Auf der angegebenen Seite ganz unten die Zip-Datei "STEP7_TIA_Portal_AT_KeyWord.zip ( 1440 KB ) ".
    Mit der AT-Sicht bist Du schon auf dem richtigen Weg.
    Was heißt, die Datei läßt sich nicht öffnen?
    Um die Datei herunterzuladen muß man sich bei Siemens anmelden bzw. registrieren.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    ACDC (05.10.2015)

  10. #9
    ACDC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.09.2015
    Beiträge
    20
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hey,

    Vielen Dank für die vielen und schnellen Rückmeldungen. Kann das leider erst Montag testen, werde dann Rückmeldung geben.

    Mit dem AT Zugriff hab ich es auch versucht, konnte aber nur auf die Bits zugreifen und nicht das Word. Muss vielleicht ein fehler in der Deklaration sein. Habe den optimierten Baustein zugriff deaktiviert, den AT deklariert und wollte dann per Movebefehl in einen anderen Datenbaustein als Word schreiben? Im Move kann mann aber nicht auf das Word zugreifen...

    @ Harald, bin bei Siemens registriert und angemeldet.

    bis Montag

  11. #10
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Für eine gemeinsame AT-Sicht muss man die einzelnen Bits z.B. in eine Struktur einbinden. Das hat dann aber den Nachteil, dass man an der Schnittstelle des Bausteins nur noch die Struktur sieht und nicht die einzelnen Bits.

    Ohne Struktur/Array kann man die AT-Sicht nur für jedes Bit einzeln erstellen, nicht für mehrere gemeinsam.

    In FBs muss man die Bausteinoptimierung auch nicht unbedingt abschalten. Wenn die Remanenzeinstellung für die Struktur auf "im IDB setzen" geändert wird, ist dort die AT-Sicht auch bei optimierten Bausteinen möglich.

    Sieht dann z.B. so aus:


  12. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    ACDC (05.10.2015)

Ähnliche Themen

  1. TIA Booll Varis als Word ansprechen
    Von Tommy1981 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.02.2015, 14:48
  2. Step 7 Word in Bool temporär umsetzen
    Von daudel im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 08.08.2014, 09:47
  3. Antworten: 10
    Letzter Beitrag: 01.08.2014, 06:17
  4. Word to Bool --- Sprache: SCL - S7
    Von 3njoyeD im Forum PC- und Netzwerktechnik
    Antworten: 11
    Letzter Beitrag: 29.04.2014, 15:45
  5. BOOL to WORD
    Von giro im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 10.07.2011, 16:49

Stichworte

Lesezeichen

Berechtigungen

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