Step 7 Frage zum korrekten arbeiten mit MOVE

S7Anfänger

Level-2
Beiträge
301
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

Ich habe in einem FB etwas aufgebaut (siehe Bild) und wollte einmal fragen, ob dieses so richtig ist. Funktionieren tut es beim Probelauf zwar, möchte aber einfach sicher sein, das es kein Zufall ist.
Als Eingang ist ein Analogwert der je nach Seillage mit einem Faktor berechnet wurde. Je nach Seillage soll die Anlage jetzt mit dem entsprechenden Ergebnis arbeiten und dieses in den UNSCALE geben.
#Reale_Last_Seil_kg ist hierbei ein STAT im Format REAL.


Beste Grüße
Hagen
 

Anhänge

  • Last.PNG
    Last.PNG
    31,7 KB · Aufrufe: 99
Hallo Hagen,

Move ist denke ich so ok, das habe ich auf diese Art und Weise vielfach so verwendet. Mit dem FC126 kenne ich mich nicht aus, da ich ihn noch nie verwendet habe. Mich wundert jedoch, dass du mit 2,7684*10^6 arbeitest und nicht mit 10^4, da normalerweise Analogwerte nur von 0 bis 27684 gehen...

Gruß Christian
 
ok. das hilft mir schon mal weiter und macht mich etwas sicherer das die Funktion kein Zufall ist.
Der Analogwert ist vorher schon gerechnet und auf 0-50000.0kg Scaliert. Daher kommt der Wert.
 
Der Faktor 2.768400e+006 an HI_LIM ist falsch. Es muß 2.764800e+006 sein.

Wenn wie im Bild 10768.9 in den FC126 UNSCALE hineingehen, willst Du da als Ergebnis 107 (abgeschnitten) oder 108 (gerundet) haben? UNSCALE schneidet die Nachkommaziffern ab. Empfehlung: laß den FC UNSCALE weg und verwende die FUP-Anweisungen für die Division durch 100 wie ich Dir gestern gezeigt habe:
Code:
        +---------+
        |  DIV_R  |
   ...--|EN       |              +---------+
#In_kg--|IN1   OUT|-#tmp_Real    |  TRUNC  |
 100.0--|IN2   ENO|--------------|EN    OUT|-#Out_Int
        +---------+   #tmp_Real--|IN    ENO|-
                                 +---------+
Je nachdem, wie die wegfallenden Nachkommastellen bei der Umwandlung zu INT behandelt werden sollen (einfach abschneiden oder Ausgabewert runden) kannst Du TRUNC oder ROUND (oder FLOOR) verwenden.


PS: Komisch daß am FC der Wert an OUT als Gleitpunkt-Zahl angezeigt wird, obwohl es ein INT ist - hast Du eingestellt, daß die Darstellung der Beobachtungswerte "Gleitpunkt" sein soll? Versuche mal die Darstellung auf "Automatisch" oder beobachte den FC-Aufruf in AWL-Ansicht, dann solltest Du den OUT als INT-Wert (Ganzzahl) sehen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also die Anzeige hatte ich in dem Fall Tatsächlich auf Gleitpunkt gestellt.
Die Anzeige funktioniert so wie es derzeit ist echt super. Das mit dem Zahlendreher werde ich noch einmal prüfen.

Mir ging es bei der frage nur darum, das ich mit den Ganzen Move Bausteinen immer in die selbe STAT Variable schreibe und immer nur ein MOVE aktiviert ist.
Wollte nicht das er mir den Wert bei einem Deaktivierten Move einfriert obwohl der zweite Move arbeitet und den Wert sozusagen ändert.
Aber da es ohne Probleme klappt, werde ich das Ganze so lassen.
 
Die Selektion aus mehreren MOVE zusammenbasteln ist schon OK so, und das ist auch das übliche Vorgehen (in S7-FUP gibt es kein SEL). Und falls mehrere MOVE aktiv sein sollten, dann gewinnt halt der letzte.
PS: Wenn #Reale_Last_Seil_kg in TEMP liegen würde, dann müsste mindestens 1 MOVE aktiv sein/ausgeführt werden. Da #Reale_Last_Seil_kg bei Dir in STAT liegt, würde der Wert auf den Wert des zuletzt ausgeführten MOVE "einfrieren" sobald kein MOVE mehr aktiv ist.

Harald
 
Zuletzt bearbeitet:
Wenn ich anstatt den MOVE eine DIV_R einsetze weil ich vorher noch etwas rechnen möchte klappt es aber nicht. Dann müsste ich das Ergebnis erst wieder auf einen MOVE legen, damit das klappt.
Richtig?
Diesen Fall habe ich zwar nicht, interessiert mich aber trotzdem.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was heißt "klappt nicht"? Du kannst anstatt der MOVE-Box auch eine DIV_R-Box setzen, das macht bis auf die Division des Wertes keinen Unterschied zum MOVE.
Code:
...
|                 +-----+  +---------+
+-----------------|  &  |  |   MOVE  |
|  #Aktiv_Lage_1--|     |--|EN       |
|                 +-----+  |      OUT|-#Reale_Last_Seil_kg
|                 #Last_1--|IN    ENO|-
|                          +---------+
|
|                 +-----+  +---------+
+-----------------|  &  |  |  DIV_R  |
|  #Aktiv_Lage_2--|     |--|EN       |
|                 +-----+  |         |
|                 #Last_2--|IN1   OUT|-#Reale_Last_Seil_kg
|                    10.0--|IN2   ENO|-
|                          +---------+
...

Harald
 
Zurück
Oben