Step 7 AWL - Verständnisfrage

showmewhatUgot

Level-1
Beiträge
100
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, kann mir bitte jemand kurz die Anweisungen erläutern. Ich verstehe schon, was und wofür hier programmiert wurde, aber nicht im Detail...

L #EB.dw2 // Istwertadresse Frequenz im FU-DB
ITD
DTR
L 1.000000e-001
*R
T #FREQ_IST

L 0
T LD 10
L #EB.dw4 // Istwertadresse Strom im FU-DB
T LW 12
L LD 10
DTR
L 1.000000e+002
/R
T #STROM_IST

L 0
T LD 10
L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB
T LW 12
L LD 10
DTR
L 1.000000e+002
/R
T #Leistung_KW_IST


L #EB.dw8 // Istwertadresse Drehmoment im FU-DB
ITD
DTR
L 1.000000e+001
/R
T #Drehmoment_IST
 
a) L #EB.dw2 // Istwertadresse Frequenz im FU-DB

b) L #EB.dw4 // Istwertadresse Strom im FU-DB

c) L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB

d) L #EB.dw8 // Istwertadresse Drehmoment im FU-DB
In den Fällen a) und d) wird eine INT-Zahl eingelesen und per ITD zunächst in DINT und dann per DTR in REAL gewandelt.

In den Fällen b) und c) wird eine UINT-Zahl eingelesen und "zu Fuss" zunächst in DINT und dann per DTR in REAL gewandelt.
Dabei könnte man statt ...
Code:
L 0
T LD 10
L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB
T LW 12
L LD 10
DTR
... einfacher ...
Code:
L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB
T LD 10
L LD 10
DTR
... oder noch einfacher ...
Code:
L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB
DTR
... schreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
was macht denn bzw. was passiert hier?

T LD 10
L #EB.dw4 // Istwertadresse Strom im FU-DB
T LW 12
L LD 10

warum der Programmierer das Umrechnen "zu Fuß" gemacht hat? oder ist das Jacke wie Hose? :)
 
was macht denn bzw. was passiert hier?
Code:
     L     0          // schaufelt 0 in den Akku (alle 32 Bit)
     T     LD    10   // kopiert den Akku nach LD10 = LW10 & LW12 = LB10 & LB11 & LB12 & LB13
     L     #EB.dw4    // löscht Akku (32 Bit) & schaufelt 16 Bit "rechtsbündig" in den Akku
     T     LW    12   // kopiert die 16 "rechtsbündigen" Bit nach LW12 (die 16 niederwertigen Bits von LD10)
     L     LD    10   // holt das Ergebnis in den Akku (wo es sowieso schon steht)
warum der Programmierer das Umrechnen "zu Fuß" gemacht hat? oder ist das Jacke wie Hose? :)
Nein, nicht Jacke wie Hose.
ITD konvertiert INT in DINT unter Berücksichtigung des Vorzeichens.
Bei der "zu-Fuss-Methode" wird UINT in DINT konvertiert, d.h. die eingelesenen 16 Bit werden als Vorzeichen-lose (= positive) Zahl gedeutet.

Eine andere, plausible(?) Begründung wird Dir wohl nur der Programmierer selbst liefern können.
 
Zuletzt bearbeitet:
Code:
     L     0          // schaufelt 0 in den Akku (alle 32 Bit)
     T     LD    10   // kopiert den Akku nach LD10 = LW10 & LW12 = LB10 & LB11 & LB12 & LB13
     L     #EB.dw4    // löscht Akku (32 Bit) & schaufelt 16 Bit "rechtsbündig" in den Akku
     T     LW    12   // kopiert die 16 "rechtsbündigen" Bit nach LW12 (die 16 niederwertigen Bits von LD10)
     L     LD    10   // holt das Ergebnis in den Akku (wo es sowieso schon steht)

Nein, nicht Jacke wie Hose.
ITD konvertiert INT in DINT unter Berücksichtigung des Vorzeichens.
Bei der "zu-Fuss-Methode" wird UINT in DINT konvertiert, d.h. die eingelesenen 16 Bit werden als Vorzeichen-lose (= positive) Zahl gedeutet.

Eine andere, plausible(?) Begründung wird Dir wohl nur der Programmierer selbst liefern können.
was ich noch nicht ganz verstehe ist, warum er bei a) und d) mit ITD programmiert hat und bei b) und c) dann anders, obwohl die Werte mehr oder weniger die gleichen Größen haben. Kannst Du das acnhvollziehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
was ich noch nicht ganz verstehe ist, warum er bei a) und d) mit ITD programmiert hat und bei b) und c) dann anders, obwohl die Werte mehr oder weniger die gleichen Größen haben. Kannst Du das acnhvollziehen?
Strom und Leistung sind vermutlich nur positiv, Frequenz und Drehmoment können auch negativ sein... vielleicht... Musst Du halt den Umrichterhersteller fragen, wie die werte zur Verfügung gestellt werden.

Also welchen Datentyp haben die vom Umrichter empfangenen Daten. Bei a) und d) vermutlich INT bei b) und c) vermutlich UINT. Jenachdem musst Du die Wandlung nach REAL unterschiedlich machen...

Gruß.
 
was ich noch nicht ganz verstehe ist, warum er bei a) und d) mit ITD programmiert hat und bei b) und c) dann anders, obwohl die Werte mehr oder weniger die gleichen Größen haben. Kannst Du das acnhvollziehen?
Kann ich nicht nachvollziehen, zumal vermutlich alle 4 Werte nur positiv sind. Vielleicht werden die Werte b) und c) so gross (>32767), dass sie als negative Werte missdeutet werden könnten und die Werte a) und d) bleiben "klein genug" (<=32767)?
Oder waren 2 Programmierer am Werk? ;)

... Frequenz und Drehmoment können auch negativ sein... vielleicht...
Ich tu' mich etwas schwer, mir eine negative Frequenz vorzustellen. Beim Drehmoment könnte es natürlich so sein, angetrieben/treibend.
 
Zuletzt bearbeitet:
Strom und Leistung sind vermutlich nur positiv, Frequenz und Drehmoment können auch negativ sein... vielleicht... Musst Du halt den Umrichterhersteller fragen, wie die werte zur Verfügung gestellt werden.

Also welchen Datentyp haben die vom Umrichter empfangenen Daten. Bei a) und d) vermutlich INT bei b) und c) vermutlich UINT. Jenachdem musst Du die Wandlung nach REAL unterschiedlich machen...

Gruß.
das habe ich mir auch schon gedacht, aber wie gesagt es sind Frequenz Motorstrom Leistung und Drehmoment, keiner dieser Werte ist größer als 1000, wenn überhaupt...von daher müsste überall INT ausreichen, wobei es kommt darauf an wie die Daten über den Profibus eingelesen werden (konvertierungindex...) zum Beispiel 400 A werden zunächst als 40000 ( eigentlich 400,00 A) eingeleen un dann konvertiert...das könnte es sein..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das habe ich mir auch schon gedacht, aber wie gesagt es sind Frequenz Motorstrom Leistung und Drehmoment, keiner dieser Werte ist größer als 1000, wenn überhaupt...von daher müsste überall INT ausreichen, wobei es kommt darauf an wie die Daten über den Profibus eingelesen werden (konvertierungindex...) zum Beispiel 400 A werden zunächst als 40000 ( eigentlich 400,00 A) eingeleen un dann konvertiert...das könnte es sein..
ja, daran wird es wohl liegen, wenn man die Werte beobachtet dann macht es Sinn so zu machen:
 

Anhänge

  • 1.PNG
    1.PNG
    5,8 KB · Aufrufe: 24
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich tu' mich etwas schwer, mir eine negative Frequenz vorzustellen. Beim Drehmoment könnte es natürlich so sein, angetrieben/treibend.
Naja, vielleicht ist die Frequenz auch nicht die Frequenz sondern der Stellungsistwert, also -200,00...+200,00% das wäre dann drehrichtungsabhängig. Und diesen Wert kann ich in erster Näherung bzw. bei u/f Steuerung auch als Frequenz interpretieren (100%=50Hz z.B.)

Datentyp und Skalierung ist schon abundzu uneindeutig dokumentiert bzw. vom Programmierer nur grob ausprobiert... passiert relativ häufig, dass man nei der IBN noch grad unter 32000 bleibt, und dann erst später mal 40000 als Wert kommt 😂

vielleicht sind auch alle 4 UINT, aber nur 2 haben Probleme gemacht und wurden nachträglich angepasst...
 
Zurück
Oben