Bit überprüfen in KOP

Woeba

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Tag all miteinander!

Als blutiger Anfänger bastele ich mich gerade durch mein erstes KOP Programm. Der Kunde wünscht es so, auch wenn es mir nicht liegt (Würde am liebsten alles in C schreiben, habe die letzten Jahre Mikrocontroller in C programmiert).
Nun habe ich ein kleines Problem:
Eine Variable ist in der Symboltabelle z.B. als VN angelegt. Nun will ich das letzte Bit der Variable prüfen. Ein

VN.0
-| |-


geht nicht. Muss ich das Ding 7 mal shiften? Oder geht das mit einem Funktionsblock? Ich konnte im Handbuch nix finden :confused:

Gruß
Woeba
 
Von welchem Typ ist denn VN.
Wenn VN zb. als MW 0 angelegt ist, dann kannst du mit
M0.0
M0.1
..
M0.7
M1.0
M1.1
..
M1.7
auf die einzelnen Bits zugreifen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Wenn ich direkt auf den Merker gehe ist es, ok, nur denke ich das es bei eimem größeren Projekt wichtig ist ggf. Symbole in der Symboltabelle ändern zu können und nicht alle Netze durchgehen zu müssen.
Irgendwie muss das doch gehen. :confused:
 
Fallls du nachträglich die Symbolik ändern willst, kannst du mit der Einstellung Operandenvorrang beeinflussen was geändert wird. Symbol oder Adresse.
Für mehr Infos siehe im Siemens Support unter der Beitrags-ID 12412995
Ausserdem gibt es noch die Funktion umverdrahten (Beitrags-ID 51210)

Ist es das was du suchst, ansonsten beschreibe es mal genauer was du möchtest.
 
Hallo!

Wenn ich direkt auf den Merker gehe ist es, ok, nur denke ich das es bei eimem größeren Projekt wichtig ist ggf. Symbole in der Symboltabelle ändern zu können und nicht alle Netze durchgehen zu müssen.
Irgendwie muss das doch gehen. :confused:

Bei Merkern kannst du das ja machen.

Das MW bekommt ein eigenes Symbol.
Jeder Merker bekommt ein eigenes Symbol.
 
...
Irgendwie muss das doch gehen. :confused:


Ich würde da eine eigene Funktion bauen.

In SCL würde das so aussehen:
Code:
FUNCTION FC10 : VOID
VAR_INPUT
  inINT   :INT;
  inBitNo :INT;
END_VAR


VAR_TEMP
  myINT :INT;
  myBoolArray AT myINT :ARRAY[0..15] OF BOOL;

END_VAR

  // Anweisungsteil
  myINT := inINT;
  OK:= myBoolArray[inBitNo]; 
END_FUNCTION

Wie die Verwendung in KOP aussehen könnte sieht man am Bild im Anhang.
Um welchen Variablentyp geht es denn bei Dir?

Natürlich könnte man das Siemens Typische MSB und LSB Problem mit einer weiteren SCL Zeile umgehen.


Wenn es hier aber um eine S7-200 geht kannst Du meine Lösung gleich vergessen.
 

Anhänge

  • Bit_of_INT.gif
    Bit_of_INT.gif
    4,2 KB · Aufrufe: 24
Hallo!

Erstmal danke für die Tipps, mit denen ist das ganze gut hinzukriegen. Ich dachte nur es müsse für so eine einfache Sache eine direkte Möglichkeit über einen Synthax geben. Bin halt hochsprachen-verwöhnt :)
@Perfektionist: Und ja, ich bin der mit der S7-200 der an seinem ersten Projekt damit bastelt. :-D
 
Zurück
Oben