Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Seltsames Verhalten einer S7-312 bei Real-Addition

  1. #1
    Registriert seit
    20.09.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo erstmal, bin neu hier.
    Zu meiner Person, bin 32 Jahre alt und arbeite seit 7 Jahren aktiv mit S5 und S7, Störungsbehebung.

    Mein Problem:
    Einfache Auswertung eines Stromzählers, Impulslänge 100ms, Zählen der Impulse und berechnen der Momentanleistung.
    Siehe Bild1, ein Teil des Programms und Bild2 das Ergebnis.
    Nach den Regeln der Technik sollte nun in DB12.DBD6 und DB12.DBD14 der selbe Wert ankommen.
    1. im ersten Wert(DBD6) fehlen 39 Impulse.
    2. Wenn ich immer 0,01 addiere, warum sind die letzten Kommastellen nicht Null?
    Meine erste Überlegung war, 'hab wieder mist programmiert',
    Also CPU ausgebaut, komplettes Programm gelöscht,das eine Netzwerk in einen FC kopiert, den zugehörigen DB kopiert. Testlauf. Nach wenigen Sekunden das Gleiche Ergebnis, Impulse fehlen und die letzten Kommastellen sind nicht Null.

    Die CPU ist eine 6ES7 312-1AD10-0AB0 HW 3 FW V2.05

    Kann das jemand erklären?

    mfg



    Zitieren Zitieren Seltsames Verhalten einer S7-312 bei Real-Addition  

  2. #2
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Das liegt am Real-Format und lässt sich nicht ändern.
    nimm doch einen DINT und zähle damit deine Impulse.
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  3. #3
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard

    G'rad', weil halbe Impulse gibt's ja seltener.

  4. #4
    yohfreaker ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.09.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Real habe ich nur verwendet weil der Wert fertig für die Visu ist,(mit 2 Kommastelllen) vom Zähler aber 800Imp/Kwh kommen, also muss ich sowiso umrechnen. Der Programmteil sollte eigentlich nur 0,01kWh addieren.

    Heisst das nun, wenn man in der 300er mit Real rechnet, kommt immer 'irgendwas' hinten raus?
    Geändert von yohfreaker (20.09.2009 um 18:08 Uhr)

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Blinzeln

    Aus der Step7-Hilfe (Index: Datentyp - REAL)
    Format des Datentyps REAL (Gleitpunktzahlen)

    Gleitpunktzahlen in STEP 7 entsprechen dem Grundformat mit einfacher Breite,
    wie in der Norm ANSI/IEEE Standard 754-1985 [...] beschrieben. [...]

    Genauigkeit beim Rechnen mit Gleitpunktzahlen
    ---------------------------------------------------------------------------------
    Vorsicht

    Bei umfangreichen Berechnungen mit Zahlen, die große Größenunterschiede
    (mehrere 10-er Potenzen) aufweisen, können Ungenauigkeiten im Rechenergebnis
    entstehen.
    ---------------------------------------------------------------------------------

    Die Gleitpunktzahlen in STEP 7 sind auf 6 Dezimalstellen genau. Sie können deshalb
    bei der Angabe von Gleitpunktkonstanten nur maximal 6 Nachkommastellen angeben.

    ---------------------------------------------------------------------------------
    Hinweis

    Die Rechengenauigkeit von 6 Dezimalstellen bedeutet z. B., dass die Addition von
    Zahl1 + Zahl2 = Zahl1 ergibt, wenn Zahl1 größer Zahl2 * 10 hoch y, mit y>6 ist:

    100 000 000 + 1 = 100 000 000.
    ---------------------------------------------------------------------------------
    Mit DINT hast Du eine Auflösung von 9,5 Dezimalstellen.
    Zähler in DINT kann man auch kaskadieren, wenn man mehr Dezimalstellen braucht.

    Zitat Zitat von yohfreaker Beitrag anzeigen
    Real habe ich nur verwendet weil der Wert fertig für die Visu ist,(mit 2 Kommastelllen)
    Beim Rechnen keine Rücksicht auf die Visu nehmen, sondern das Verfahren entsprechend
    der benötigten Genauigkeit wählen und erst zum Schluß in das Format umwandeln, das
    die Visu braucht. Dann wird nur einmal gerundet. Und man kann die Einheit so wählen, daß
    6 Dezimalstellen für die Anzeige reichen (Wh, kWh, MWh).
    Bei mir bekommt die Visu nie die original-Variable zum Anzeigen, sondern immer eine (ggf.
    skalierte) Kopie in einem extra Visu-DB.

    Was hast Du für eine Visu?
    Kann die nicht bei der Anzeige von Ganzzahlen ein Komma einfügen? Oder skalieren?

    Die Rechenoperationen für Ganzzahlen heißen übrigens Festpunkt-Funktionen, weil man
    sich da an einer festen Stelle ein Dezimalkomma 'reindenken kann.
    Du hast ja Zahlen, wo fest 2 Stellen von hinten das Komma sitzt.

    Gruß
    PN/DP
    Zitieren Zitieren REAL ist nur auf 6 Dezimalstellen genau  

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    So, nochmal nachgedacht.

    So eine Sache wie Verbrauchszähler realisiert man wirklich nicht in REAL, sondern in DINT.
    Doch bis jetzt brauchst Du noch gar keine 6 Dezimalstellen.

    Die Rechen"un"genauigkeit bei REAL erklärt nur, warum die letzten 4 Nachkommastellen nicht
    0000 sind. Es erklärt aber nicht die Differenz von 0.39 zwischen DB12.DBD6 und DB12.DBD14,
    wenn beide bei 0.0 zu zählen angefangen haben. Einer oder beide Werte müssen noch woanders
    in Deinem Programm oder von außen verändert werden.

    Bist Du sicher, daß Du beim Testen/Simulieren bei beiden Werten mit 0.000000 angefangen hast?
    Wie zählst Du bzw. simulierst Du die Zählimpulse?
    Hast Du mal in der Referenzliste nachgeschaut, ob Du einen der beiden Werte irrtümlich oder
    fehlerhaft noch woanders veränderst?
    Schreibt vielleicht Deine Visu auf diese Werte?

    Check mal alle Stellen, wo Du indirekte Adressierung benutzt oder SFC20 oder SFC21 oder
    sonstige Blockoperationen einsetzt.

    Bei Deinem Test mit der ausgebauten CPU hast Du ja wohl mehr als nur dieses eine Netzwerk
    im Programm gehabt. Sonst hätte sich keiner der beiden Werte verändert.
    Wie sieht Dein OB1 aus?

    Hast Du vielleicht auch noch einen OB35 oder OB40? Wenn da was mit fehlerhafter indirekter
    Adressierung drin ist und Du "erwischst" den Lokaldatenstack, dann kann es schon passieren,
    daß die beiden ADD-Boxen unterschiedlich zählen. Oder gar der DB12 direkt "getroffen" wird.

    Zu Deinem Netzwerk:
    Ich hätte das MOVE nicht hinter die obere ADD-Box gesetzt, sondern direkt hinter das CMP,
    vor beide ADD-Boxen. Oder unterhalb der beiden ADD-Boxen am Ausgang vom CMP. Einfach so aus
    "Gefühl". Bei Dir wird das MOVE im Programmablauf zwischen den beiden ADD-Boxen ausgeführt
    und nur dann, wenn bei dem oberen ADD kein Fehler auftritt.
    Das spielt hier aber höchstwahrscheinlich keine Rolle.
    Aber vielleicht hast Du in anderen Netzwerken Deine Boxen auch so unglücklich angeordnet,
    wo es dann doch eine Rolle spielen könnte?

    Das sollte jetzt keine Kritik an Deinem Programmierstil sein, sondern Hinweise geben, wonach
    Du suchen must, falls es kein einfacher Fehler sein sollte.

    Also, ich nehme mal die CPU312 in Schutz und tippe auf einen ordinären Tippfehler irgendwo
    in Deinem restlichen Programm.

    Gruß
    PN/DP

  7. #7
    yohfreaker ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.09.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!

    Danke für die Ansätze zur Fehlersuche.
    Bei meinem 'Trockentest' war nur die CP312 alleine (mit geänderter HW Config), der FC12(das eine betroffene Netzwerk),DB12 und im OB1 ein ''uc fc12", sonst nichts.
    Die Impulse hab ich 'simuliert' indem ich den CMP an beiden Eingängen mit 0 belegt hab, dann addiert es bei jedem Programmdurchlauf.

    Nun zur Lösung des Problems, mehrere Varianten:
    1. wie PN/DP vermutet hat, den MOVE entfernen, beide Zähler laufen dann synchron.
    2. einen anderen Wert addieren, z.B 0,02, Problem ist ebenfalls weg.
    3. Andere CPU, mit einer 315-2DP funktioniert das Programm immer ohne Probleme.

    Das erklärt nun auch wieso in der Anlage die anderen 4 Zähler funktionieren, diese addieren immer 1 bzw. 0,1.
    mfg
    Geändert von yohfreaker (29.09.2009 um 00:14 Uhr)

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Hallo yohfreaker,

    Danke für Deine Informationen zur Problemlösung.

    Zitat Zitat von yohfreaker Beitrag anzeigen
    Nun zur Lösung des Problems, mehrere Varianten:
    1. wie PN/DP vermutet hat, den MOVE entfernen, beide Zähler laufen dann synchron.
    2. einen anderen Wert addieren, z.B 0,02, Problem ist ebenfalls weg.
    3. Andere CPU, mit einer 315-2DP funktioniert das Programm immer ohne Probleme.
    Das klingt ziemlich mysteriös. Vor allem das mit dem MOVE entfernen.
    Nun tendiere ich doch dahin, daß mit der Firmware der CPU was nicht in Ordnung ist.
    Du kannst Dich ja mal mit der Testversion Deines Programmes (OB1, FC12, DB12) an den
    Siemens A&D Support in Nürnberg wenden.

    Oder auf Verdacht ein Firmware-Update auf die neueste Version machen. Die Firmware
    der CPU ist schon reichlich oft wegen Fehlerbeseitigungen geändert worden.
    Aktuell: V2.0.12 für CPU 312-1AD10-0AB0

    Betriebssystem-Updates für CPU 312

    Gruß Harald
    Zitieren Zitieren Firmware-Problem?  

  9. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    SPS_S5_S7 (29.09.2009)

  10. #9
    yohfreaker ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.09.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Eine Fremdfirma hat meine CP312 kostenlos auf die Firmware 2.0.11 aktualisiert. Nun funktioniert das Programm ohne Probleme.

Ähnliche Themen

  1. S5 seltsames Verhalten in Kopierschleife
    Von Lars Weiß im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 04.04.2011, 08:26
  2. Antworten: 1
    Letzter Beitrag: 20.09.2010, 11:20
  3. Seltsames Verhalten von Kübler Drehgeber
    Von ssound1de im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 26.07.2010, 12:52
  4. S5 Set Reset seltsames Verhalten.
    Von Aksels im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 17.11.2008, 07:09
  5. Antworten: 11
    Letzter Beitrag: 14.07.2008, 23:20

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •