TIA Sr-Flip Flop springt von 0 auf 1. Warum?

Es gibt auch unter Codesys Aufgaben, wo man Merker verwenden muß.
Unter Codesys kommt erschwerend dazu, daß der Name des Merkers nicht unbedingt von der Anfangs-Byteadresse herstammt, sondern einfach fortlaufend gezählt wird und man da die Überlappungen noch viel schwerer sieht.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt auch unter Codesys Aufgaben, wo man Merker verwenden muß.
Wieder was gelernt.

Ich bin fast ausschließlich mit TwinCAT oder ab und zu mit TIA unterwegs.
Obwohl ich wirklich gerne mit TwinCAT arbeite, ist mir Codesys immer mal wieder suspekt - so wie jetzt auch schon wieder.

Beim TwinCAT fällt mir wirklich keine Kostellation ein, wo ich Merker bräuchte. Ich habe die schon bei Siemens Steuerungen extrem spärlich. eingesetzt (in den letzten 15 Jahren). Eigentlich hatte ich bei S7 Classic nur M0.0 False, M0.1 True und das Taktmerkerbyte als Merker im Einsatz.

Merker zu verwenden empfand ich immer als umständlich, ich habe da so eine OOP-Neigung. Da waren mir Multiinstanzen immer lieber.

Dann nehme ich meine Aussage zurück und formuliere es mal so:

Meiner Erfahrung nach, wer aus der TwinCAT-Ecke kommt, nimmt keine Merker. Das machen bei TwinCAT nur die, die aus der Siemens-Ecke kommen (Die Mehrheit).

Spielt zwar jetzt keine Rolle, aber damit wird klarer warum ich so etwas schrieb.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist schon in Codesys so:
%MD48 = %MB192 + %MB193 + %MB194 + %MB195 = %MW96 + %MW97
%MX5.0 liegt im %MB10 im %MW5

Und das ist anscheinend so kompliziert, daß das Codesys-Handbuch (V2.x) das auch noch fehlerhaft erklärt. ;) %MX5.0 liegt nicht im fünften sondern sechsten Word :cool:

Harald
 

Anhänge

  • Codesys_Merker-Adressen.gif
    Codesys_Merker-Adressen.gif
    16,2 KB · Aufrufe: 9
Und das ist anscheinend so kompliziert, daß das Codesys-Handbuch (V2.x) das auch noch fehlerhaft erklärt. ;) %MX5.0 liegt nicht im fünften sondern sechsten Word :cool:
Und da steht auch noch ausdrücklich (zwar nur auf MerkerBytes bezogen, aber immerhin), dass die Zählung bei 0 beginnt.

Ganz schön irritierend finde ich an dem Satz
"Mit %MX5.0 etwa greift man auf das erste Bit im fünften (sechsten! - s.o.) Wort zu (Bits werden in der Regel Wort-weise abgelegt)."
, dass nicht erklärt wird, was "in der Regel" bedeutet. Immer oder meistens?
Wenn nur "meistens", wie sehen dann die Alternativen aus?
Wie adressiere ich im MW 5 die Bits 10 .. 15? %MX5.10 .. %MX5.15 oder lieber %MX5.A .. %MX5.F?
Was muss ich schreiben, wenn ich im MB 5 bzw. im MD 5 das Bit x adressieren will?
Ist das dann sooo kompliziert, dass ich "in der Regel" (= immer) freiwillig auf die Adressierung über das MW umrechnen/ausweichen muss?

Siemens mag ja für manchen gewöhnungsbedürftig sein, aber einfach/klar/übersichtlich war/ist die Siemens-Variante dennoch. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie adressiere ich im MW 5 die Bits 10 .. 15? %MX5.10 .. %MX5.15 oder lieber %MX5.A .. %MX5.F?
%MX5.10 ... %MX5.15
das X kann man auch weglassen und schreiben %M5.10 ... %M5.15

Was muss ich schreiben, wenn ich im MB 5 bzw. im MD 5 das Bit x adressieren will?
Ich kenne es nur so, daß man da auf die Word-Adresse-Adressierung umformulieren muß:
Bit 0 in MB5: %M2.8
Bit 0 in MD5: %M10.0

Siemens mag ja für manchen gewöhnungsbedürftig sein, aber einfach/klar/übersichtlich war/ist die Siemens-Variante dennoch. ;)
Dafür hat Codesys aber schon früh die Bit-Adressierung in Ganzzahl-Variablen (Siemens-Sprech: "Slice") eingeführt: variable.x
z.B.
Code:
VAR_GLOBAL CONSTANT
  VZ16 : int := 15;
END_VAR
VAR
  w : word;
  i : int;
  b : bool;
END_VAR

w.1 := i.VZ16;
w.2 := b;

Wenn ich mich recht erinnere, kann man allerdings diese Bit-Adressierung nicht für Merker-Variablen verwenden (z.B. zur Umgehung/Erleichterung der konfusen Adress-Berechnung):
Code:
VAR
  MD_5 AT %MD5 : word;
END_VAR

MD_5.17 := 1; //Zugriff auf %M11.1 im MB22, vermutlich nicht zulässig

Harald
 
%MX5.10 ... %MX5.15
das X kann man auch weglassen und schreiben %M5.10 ... %M5.15


Ich kenne es nur so, daß man da auf die Word-Adresse-Adressierung umformulieren muß:
Bit 0 in MB5: %M2.8
Bit 0 in MD5: %M10.0


Dafür hat Codesys aber schon früh die Bit-Adressierung in Ganzzahl-Variablen (Siemens-Sprech: "Slice") eingeführt: variable.x
z.B.
Code:
VAR_GLOBAL CONSTANT
  VZ16 : int := 15;
END_VAR
VAR
  w : word;
  i : int;
  b : bool;
END_VAR

w.1 := i.VZ16;
w.2 := b;

Wenn ich mich recht erinnere, kann man allerdings diese Bit-Adressierung nicht für Merker-Variablen verwenden (z.B. zur Umgehung/Erleichterung der konfusen Adress-Berechnung):
Code:
VAR
  MD_5 AT %MD5 : word;
END_VAR

MD_5.17 := 1; //Zugriff auf %M11.1 im MB22, vermutlich nicht zulässig

Harald
Nur noch kurz für den Themenstarter um weitere Verwirrungen zu verhindern, das hier geschriebene gilt für CoDeSys, nicht für Siemens Classic / TIA
 
Zuletzt bearbeitet:
Zurück
Oben