Step 7 SCL Aufruf des SFC22

Sie dir mal den MOD - Befehl an, das ist eine Division, die dir den Rest ausgibt.

Also:

Rest := MyDINT MOD 2;

Ist der Rest 1, dann ist MyDINT ungerade, ist Rest 0, dann gerade.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der Siemens Industry Online Support schlägt vor:

FRAGE:
Wie kann ich auswerten, ob ein Integer-/ Doppelintegerwert
gerade oder ungerade ist?

ANTWORT:
Bei ungeraden Integer- bzw. Doppelintegerwerten steht im
niederwertigsten Bit immer eine Eins.

Um auf einen ungeraden Wert zu prüfen, muss also

  • bei einem Integerwert, der z.B. in MW0 liegt, auf M1.0 und
  • bei einem Doppelintegerwert, der z.B. in MD0 liegt, auf M3.0
geprüft werden.

aber dafür bedürfte es einer AT-Sicht in SCL, wenn die Daten nur lokal liegen.

Sowohl AND als auch MOD haben ihre Berechtigung - natürlich find ich meinen Vorschlag viel besser!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So das leuft soweit.
Jetzt is mir aufgefallen das der neu erstellte DB keine Definierten werte hat. Also nach dem erstellen steht da kauderwälsch drin. Ich hab mir gedacht gar kein Problem bauste ne schleife und schreibst jedes Byte auf null.

Bei dem Aufruf:
Code:
DB_Nr.DBB[Adresse]:= 0;

kommt die Fehlermeldung das die Variabele DB_Nr als Block_DB definiert sein soll. bei mir ist es INT. was kann ich tun? Ist das die Lösung?
Code:
DB_NR:INT;
DB_BLOCK:BLOCK_DB;

bla bla

DB_BLOCK:=BLOCK_DB;
 
Zurück
Oben