Step 7 Bits in ein Merkerwort schreiben

rayray

Member
Beiträge
19
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Leute,
folgendes Problem:
ich habe für jeden Motor einen Temperaturfühler, welcher auf einen Merker geht.
Diese will ich jetzt alle in ein Wort schreiben, damit ich in WinCC flexible 2008 eine Bitmeldung darauf projektieren kann.
Ich habe folgenden Post gefunden und mich bei meiner Programmierung daran orientiert.
http://www.sps-forum.de/simatic/16659-word-aus-einzelnen-bits-zusammensetzen.html#post107198
Allerdings bin ich Neuling auf dem Gebiet und weiss nicht wo mein Fehler liegt...
Kann mir jemand helfen?
So sieht mein Code aus:
Programm.PNG
Ich arbeite übrigens mit einer S7-300.
Danke!
~rayray
 

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
16.779
Punkte Reaktionen
4.930
Deine Bits liegen nicht innerhalb der Adresse Deines #Word1.

Nimm das Beispiel aus dem nächsten Post #6 in dem Thread oder besser erstelle in TEMP eine Struktur aus 16 Bit und kopiere die Struktur als Word in Dein Ausgangsword.

Harald
 

volker

Supermoderator
Teammitglied
Beiträge
5.468
Punkte Reaktionen
935
Zuviel Werbung?
->Hier kostenlos registrieren
die variable wort liegt mit sicherheit ein einer anderen adresse im lokaldatenbereich
du könntest die lokale adresse direkt ansprechen wo die bits liegen. aber es ist sehr un unsauber lokale adrressen direkt anzusprechen.

machs z.b. wie im bild
 

Anhänge

  • Zwischenablage04.jpg
    Zwischenablage04.jpg
    42,8 KB · Aufrufe: 104
OP
R

rayray

Member
Beiträge
19
Punkte Reaktionen
0
Mit Post 6 kann ich leider nicht viel anfangen..

Aber ich kann den bits doch nicht die selbe Adresse zuweisen wie meinem Word? Oder wie meinst du das, ich kann dir gerade nicht ganz folgen:confused:
 

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
16.779
Punkte Reaktionen
4.930
Aber ich kann den bits doch nicht die selbe Adresse zuweisen wie meinem Word?
Das ist ja gerade der Trick, in lokale Speicherbits zu schreiben, welche in einem Word liegen.
Allerdings läßt sich so eine "Union" bzw. AT-Sicht nicht in AWL programmieren. Es geht aber über eine Struktur:
Code:
FUNCTION "Bool2Word" : WORD
TITLE =16 Bits in Word zusammenfassen
AUTHOR : 'PN/DP'
VERSION : 0.1

VAR_INPUT
  InBit_00 : BOOL ;	
  InBit_01 : BOOL ;	
  InBit_02 : BOOL ;	
  InBit_03 : BOOL ;	
  InBit_04 : BOOL ;	
  InBit_05 : BOOL ;	
  InBit_06 : BOOL ;	
  InBit_07 : BOOL ;	
  InBit_08 : BOOL ;	
  InBit_09 : BOOL ;	
  InBit_10 : BOOL ;	
  InBit_11 : BOOL ;	
  InBit_12 : BOOL ;	
  InBit_13 : BOOL ;	
  InBit_14 : BOOL ;	
  InBit_15 : BOOL ;	
END_VAR
VAR_TEMP
  TempWord : STRUCT 	
   Bit_08 : BOOL ;	
   Bit_09 : BOOL ;	
   Bit_10 : BOOL ;	
   Bit_11 : BOOL ;	
   Bit_12 : BOOL ;	
   Bit_13 : BOOL ;	
   Bit_14 : BOOL ;	
   Bit_15 : BOOL ;	
   Bit_00 : BOOL ;	
   Bit_01 : BOOL ;	
   Bit_02 : BOOL ;	
   Bit_03 : BOOL ;	
   Bit_04 : BOOL ;	
   Bit_05 : BOOL ;	
   Bit_06 : BOOL ;	
   Bit_07 : BOOL ;	
  END_STRUCT ;	
END_VAR
BEGIN
NETWORK
TITLE =In-Bits in lokales Word kopieren

      U     #InBit_00; 
      =     #TempWord.Bit_00; 
      U     #InBit_01; 
      =     #TempWord.Bit_01; 
      U     #InBit_02; 
      =     #TempWord.Bit_02; 
      U     #InBit_03; 
      =     #TempWord.Bit_03; 
      U     #InBit_04; 
      =     #TempWord.Bit_04; 
      U     #InBit_05; 
      =     #TempWord.Bit_05; 
      U     #InBit_06; 
      =     #TempWord.Bit_06; 
      U     #InBit_07; 
      =     #TempWord.Bit_07; 
      U     #InBit_08; 
      =     #TempWord.Bit_08; 
      U     #InBit_09; 
      =     #TempWord.Bit_09; 
      U     #InBit_10; 
      =     #TempWord.Bit_10; 
      U     #InBit_11; 
      =     #TempWord.Bit_11; 
      U     #InBit_12; 
      =     #TempWord.Bit_12; 
      U     #InBit_13; 
      =     #TempWord.Bit_13; 
      U     #InBit_14; 
      =     #TempWord.Bit_14; 
      U     #InBit_15; 
      =     #TempWord.Bit_15; 

NETWORK
TITLE =Word zurückgeben

      LAR1  P##TempWord; 
      L     W [AR1,P#0.0]; 
      T     #RET_VAL; 

END_FUNCTION

Harald
 
OP
R

rayray

Member
Beiträge
19
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Ok, ich glaube ich kann dir jetzt folgen :D

Mir wurde allerdings gesagt man kann in Step7 nicht in SCL programmieren?.. Habe in der Ansicht auch nur KOP, FUP und AWL zur Auswahl..
 

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
16.779
Punkte Reaktionen
4.930
Man kann auch in Step7 V5.x in SCL programmieren, wenn man das Optionspaket S7-SCL installiert hat. (in Step7 Professional bereits enthalten)
SCL programmieren: im "Quellen"-Ordner > Rechtsmausklick > Neues Objekt einfügen > SCL-Quelle

Harald
 
Oben