Step 7 Bits in ein Merkerwort schreiben

rayray

Level-1
Beiträge
19
Reaktionspunkte
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
 
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: 114
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:
 
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
 
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..
 
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
 
Zurück
Oben