Step 7 Simatic Simulation

knollsimi

Level-1
Beiträge
81
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hy leute!

Hab gerade wollen ein Programm mit der Simulation testen. Leider hat das (wie üblich) nicht geklappt. Anbei ein Bild von der Simulation, AWL Programm (Netzwerk 1) und vom Simatic Manager. (Laut Programm müsste im MD 0 das selbe stehn wie im PED 264 nur /1000)

uebersicht_1.jpg
 
Ich meine, in PLCSIM sind das nur Eingabefelder. EDIT: Falsch, die zeigen auch den Istwert an.
Variablen beobachte ich mit der Variablentabelle.

Beobachte mal das Programm mit der Brille, welcher Wert an der Programmstelle an MD0 zugewiesen wird.

Harald
 
Zuletzt bearbeitet:
Wie wärs wenn du dir mal den FB1 Online ansiehst und bei der Darstellungsart dann noch Gleitpunkt einstellst.

Dann wirst du feststellen das deine 30(int) vom /R als 4.204e^-44 interpretiert werden.
4.204e^-44 / 1000.0 = 0 da e-44 keine gültige REAL-Zahl ist.
 
Zuletzt bearbeitet:
Wieso, wenn der Simulator läuft kannst du dein Programm ja trotzdem beobachten.

Du kannst auch einfach in PLC-Sim bei der Eingabemaske neben PED statt "Dezimal" - "Real" einstellen.
 
Zuletzt bearbeitet:
Wenn man dezimal 30 durch dezimal 1000 per Gleitkomma-Div dividiert - was erwartest Du, was dabei rauskommen sollte?
Wolltest Du vielleicht /D benutzen?

Beim Programm beobachten wirst Du aber schlauer...

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also so wie ich das verstehe, öffne ich die simulation und dann benutze ich in meinem FB1 die Brille... oder?? Nur leider kommt dann immer: Der baustein wurde nicht gefunden
 
Also so wie ich das verstehe, öffne ich die simulation und dann benutze ich in meinem FB1 die Brille... oder??
Du musst die Hardwarekonfig und die Bausteine schon runterladen. Wie eine echte CPU eben.

Der Fehler kommt weil der Baustein gar nicht abgearbeitet wird weil er nicht auf der (virtuellen) CPU ist.
Geh einfach auf in den Simatic-Manager, wähle den Simatic-300-Stationsordner aus (Standard heißt er "SIMATIC 300(1)") und klicke in der Menüleiste auf das Download-Symbol, dann spielt er alles auf einen Schlag runter.

Nochmal, der Simulator simuliert wirklich eine CPU, daher braucht diese auch eine Hardwarekonfig und Bausteine zum abarbeiten.

Hmm, irgendwie habe ich im Hinterkopf, daß /R solche nichtnormierten "Gleitpunktzahlen" gnädigerweise toleriert..
@Harald: Korrektur: Nicht das "/R" sondern die CPU generell interpretiert 30dez als e^-44Real.
Was soll denn aus e^-44 / 1000.0 werden? e^-47 ? :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ps: könnte man in der Hilfe villeicht auch erwähnen, dass man das irgendwie rüberladen muss
PLCSIM simuliert eine CPU, und das natürlich möglichst realistisch, man soll ja keinen Unterschied feststellen. Mit der simulierten CPU muß man genauso umgehen wie mit einer Echten. Also auch zuerst mal ein Programm hineinladen.

Harald
 
@Harald: Ja, da du hast natürlich recht. Danke für die Korrektur meiner verworrenen Sätze. :D

Ist aber schon ein tolles Feature.
Funktioniert aber anscheinend nur wenn beide Werte als im Dezimalformat da liegen.
RealDIV_nichtnormiert.jpg
:sm7: Ist das so gewollt oder ergibt sich das einfach irgendwie aus der Gleitpunkt-Berechnung... :confused:

In Zukunft spar ich mir das DTR. :twisted:

Wenn ich deinen verlinkten Beitrag also richtig lese müssten REAL-Operatoren nach Norm ANSI/IEEE Standard 754-1985 also auch mit
denormalisierten Gleitpunktzahlen klarkommen? Schon interessant, dafür ist der 32-Bit-Aufbau schon stark unterschiedlich. :confused:
 
Zuletzt bearbeitet:
Hahhaha.... :ROFLMAO: Ich glaub mein Schwein pfeift!

:sm7: Ist das so gewollt oder ergibt sich das einfach irgendwie aus der Gleitpunkt-Berechnung... :confused:
:sm6:
Ich hab's gerade durch den Taschenrechner gejagt.
30dez = 4,204e-44
1000dez = 1,401e^-42
30/1000 = 0,03
4,204e-44 / 1,401e-42 = 0,03000713775874375446109921484654

MIND = BLOWN!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
:sm7: Ist das so gewollt oder ergibt sich das einfach irgendwie aus der Gleitpunkt-Berechnung... :confused:
30/1000 = 0,03
4,204e-44 / 1,401e-42 = 0,03000713775874375446109921484654

Interessant. Sollte das tatsächlich auf ganz normaler Gleitpunkt-Berechnung nach IEEE 754 beruhen (also kein besonderes Siemens-Feature)?
Wer erklärt uns das mal?

Ich vermute so:
Bei den denormalisierten Zahlen ist der Exponent 0, bei einer Zahl * 2^0 hat das niederwertigste Bit die Wertigkeit 1 --> das ist eine Ganzzahl :cool:
(Ganzzahlen (Festpunktzahlen) bis 23 Bit sind sozusagen ein Spezialfall von Gleitpunktzahlen?)


Fakt ist: Die Variablentabelle stellt denormalisierte Gleitpunktzahlen nicht als Gleitpunkt dar. Man kann denormalisierte REAL-Konstanten wie 1.401e-42 nicht in der Variablentabelle und nicht im Programm eingeben. Beim Beobachten des Programms zeigt der AWL-Editor allerdings die 1.401e-42 an. Gleitpunktberechnungen rechnen auch mit denormalisierten Zahlen richtig. Ist das Ergebnis von Gleitpunktberechnungen eine denormalisierte Gleitpunktzahl, dann wird das Statusbit OV (Überlauf) gesetzt (tatsächlich ist das ein Unterlauf).

Wikipedia IEEE 754 #Denormalisierte_Zahl
Wikipedia schrieb:
Die denormalisierten Zahlen in IEEE 754 bewirken einen allmählichen Unterlauf (englisch „gradual underflow“), indem „um die 0 herum“ 2[SUP]24[/SUP] (für single) bzw. 2[SUP]53[/SUP] (für double) Werte eingefügt werden, die alle denselben absoluten Abstand voneinander haben und ohne diese denormalisierten Werte nicht darstellbar wären, sondern zu Unterlauf führen müssten.
Harald
 
Zurück
Oben