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

Ergebnis 1 bis 2 von 2

Thema: Konvertierungsproblem LREAL <--> double

  1. #1
    Registriert seit
    04.06.2007
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    fogende Ausganssituation:
    Ich muss ein Programm in C++ schreiben, mit dem ich Werte aus einer Beckhoff-SPS (mitTwincat programmiert) ereignisgesteuert auslesen soll.

    Das Beckhoff-Programm steht schon. In meinem C++ Programm kann ich DINT und REAL-Werte schon auslesen.
    Nur mit LREAL-Werten habe ich noch massive Probleme.

    Die Test-Callback-Funktion soll erst mal nix anderes machen, als den Wert, den sie über pNotification übergeben bekommt, umzuwandeln und in einem CString abzuspeichern.

    Meine Callback-Funktion für int (DINT) sieht folgendermaßen aus:
    [php]
    void fn_Callback(AmsAddr* pAddr, AdsNotificationHeader* pNotification, ULONG hUser) {
    CString sWert = "";
    sWert.Format("%d", *(ULONG *)pNotification->data);
    }
    [/php]

    Für Float (REAL) nehme ich diese Umwandlung:
    [php]
    sWert.Format("%f", *(float *)pNotification->data);
    [/php]
    Das klappt dann auch wunderbar.

    Nur für double (LREAL) gibt es mir immer 0.0000... aus.
    [php]
    sWert.Format("%f", *(double *)pNotification->data);
    [/php]
    Und eigentlich passt das mit double ja schon, weil ich beim Schreiben von LREAL-Werten in die SPS ja auch double verwende.

    Hat jemand einen Vorschlag, wie ich das Problem beheben kann?

    Gruß chefsalat-
    Zitieren Zitieren Konvertierungsproblem LREAL <--> double  

  2. #2
    chefsalat ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.06.2007
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So, jetzt hab ich herausgefunden, an was es lag...
    Beim Registrieren der Callback-Funktion an die SPS gibt man eine Struktur mit. In dieser Struktur gibt es einen Parameter, der die Größe der Variable angibt. Dieser Parameter war auf 4 gestellt. Passte also für int (DINT) und float (REAL).
    Ich hab ihn mal auf 8 gestellt und jetzt funktioniert es auch mit double (LREAL)!

    In meiner jetzigen Version lese ich die Größe für jeden Parameter dynamisch aus der SPS. Spart jede Menge Aufwand.

    Gruß chefsalat-

Ähnliche Themen

  1. LReal
    Von srob im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 15.12.2010, 06:54
  2. Double Variable in Step7
    Von franzlurch im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.01.2009, 18:30
  3. WinCC Flexible 2008 Konvertierungsproblem
    Von Breaveheard im Forum HMI
    Antworten: 5
    Letzter Beitrag: 06.10.2008, 18:07
  4. TwinCat, LREAL und Zeitdifferenz
    Von o-bi-wan-knobi im Forum CODESYS und IEC61131
    Antworten: 12
    Letzter Beitrag: 26.03.2008, 08:06

Lesezeichen

Berechtigungen

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