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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Problem Rohdaten schreiben WinCC zu Step7

  1. #1
    Registriert seit
    05.09.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte Werte mit einer Eingabe im Ein/Ausgabe Feld von WinCC zum Datenbaustein schreiben.
    Dieses realisiere ich mit der Funktion – SetTagRaw – im - Ein und Ausgabe Feld -, in Ereignis > Ausgabe/Eingabe > Eingabewert.
    Um den Eingabewert zum Datenbaustein zu schreiben benutze ich in diesen Script die interne Funktion – GetInputValueDouble – , die den Eingabewert im Format double ermittelt.
    Hier wandle ich den Eingabewert dann double zu integer.
    Gebe ich einen Wert ein im Ein/Ausgabe Feld und bestätige dieses wird dieser Wert auch richtig im Datenbaustein angezeigt.
    Leider werden dabei alle anderen Werte in diesen Datenbaustein zu „0 „ geschrieben.
    Dieses kann ich nicht verstehen.
    Ich denke weil der Eingabewert richtig geschrieben wird zum Datenbaustein und die anderen Werte des Datenbausteines zu 0 geschrieben werden ist das ein Problem der Funktion SetTagRaw.
    Ihr könnt mir glauben ich habe alle Kombinationen ausprobiert, das heist die Werte verändert - BYTE Buffer[78] -, SetTagRaw(Raw_Data_Value,&Buffer[0],7, aber leider ohne Erfolg. Dazu noch andere Funktionen angewendet.
    Ich möchte unbedingt mit dieser Art die Werte zum Datenbaustein schreiben.
    Ich wäre so dankbar wenn mir einer helfen könnte.

    #include "apdefap.h"
    void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
    {
    // WINCC:TAGNAME_SECTION_START
    // syntax: #define TagNameInAction "DMTagName"
    // next TagID : 2
    #define Raw_Data_Value "SA_Raw_Data_drive_102"
    #define Raw_Data_Value_Integer_write "SA_Raw_data_DB_DW_32_drive_102"
    // WINCC:TAGNAME_SECTION_END
    // WINCC:PICNAME_SECTION_START
    // syntax: #define PicNameInAction "PictureName"
    // next PicID : 1
    // WINCC:PICNAME_SECTION_END
    short int IntValue;
    int integer;
    double flowpoint;
    BYTE *IntBuffer;
    BYTE Buffer[78]; // Buffer to turn the Bytes
    double flowpoint;
    flowpoint=GetInputValueDouble(lpszPictureName,lpszObjectName);
    integer= (int) flowpoint;
    IntValue = integer;
    IntBuffer = (BYTE*)&IntValue; // Pointer for transfer
    Buffer[32] = IntBuffer[1]; // write Integeger Value into Raw Data DB Data Box
    Buffer[33] = IntBuffer[0];
    SetTagRaw(Raw_Data_Value,&Buffer[0],7; // write the RawDataVariable
    }
    Zitieren Zitieren Problem Rohdaten schreiben WinCC zu Step7  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Was sollen denn auch sonst für Werte in dem Datenbaustein landen?

    Du schreibst 78 Bytes aus einen byte Array, von denen du nur 2 Bytes (32 und 33) einen definierten Wert zuweist.

    Ich weiß nicht ob sich das C in WinCC anders als normales C verhält, bei dem ist der Startwert von
    BYTE Buffer[78]; // Buffer to turn the Bytes

    nämlich nichtmal definiert.
    Es könnten in den anderen Feldern auch zufällige Werte stehen.

    Warum willst du überhaupt Rohdaten schreiben? Sollen Tags gespart werden oder welchen Hintergrund hat diese Vorgehensweise?

  3. #3
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Man sollte immer versuchen das WinCC Projekt ins STEP7 Projekt zu integrieren.
    Mittels AS-OS-Tranfer lassen sich dann wunderbar alle benötigten Variablen
    im WinCC automatisch anlegen.

    Frank
    Grüße Frank

  4. #4
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Wenn du nur 2 Bytes im DB beschreiben willst, dann darfst du auch nur eine Rohdatenvariable mit 2 Bytes an der gewünschten Adresse anlegen. Wenn du es mit der Variablen machen willst die du hast, musst du sie erst einlesen (GetTagRawWait) und dann die Bytes ändern und wieder zur sps schreiben. Aber natürlich kann sich dann wärend dieser Zeit ein Wert in deinem DB geändert haben, welchen du dann überschreibst!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Nur 2 Byte...  

  5. #5
    rene-privat65 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.09.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Jochen
    Danke für Deine Mühe sich mit dem Problem zu beschäftigen.
    Leider sind meine C Kenntnisse beschränkt. Ich bin mehr auf Step7 fixiert.
    Ja Jochen ich möchte es mit der gleichen Variable machen das heist eine Rohdaten Variable mit 78 Bytes.
    Mein Problem ist jetzt wie ich den C Script schreibe um die Werte mit GetTagRawWait einlese und dann die Werte mit SetTagRawWait zum Datenbaustein schreibe.
    Ich denke wenn man eine Eingabe Wert im Ein Ausgabe Feld macht und dann bestätigt ist das eine sehr kurze Zeit in der sich die Werte im DB ändern. Ich denke zu kurz. Das ist ja nur im Moment der Bestätigung mit Enter Taste und die Aktualwerte werden immer wieder aktualisiert in Step7.
    Muss ich unbedingt GetTagRawWait benutzen oder kann man das noch eleganter lösen.
    Kannst Du mir zu beiden Möglichkeiten das Skript senden.
    Ich wäre Dir sehr dankbar dafür und habe schon so viel Zeit geopfert.
    Vielen Dank
    Rene

  6. #6
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von rene-privat65 Beitrag anzeigen

    Leider sind meine C Kenntnisse beschränkt. Ich bin mehr auf Step7 fixiert.

    Genau deshalb hatte ich dir ja die WinCC-Integration empfohlen.

    Da brauchst du KEINE C-Skripte mehr sondern verbindest dich direkt
    mir der Variablen aus dem S7-Projekt. Hast du dich damit schon mal
    beschäftigt?????

    Frank
    Grüße Frank

  7. #7
    rene-privat65 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.09.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Thomas
    Auch danke für Deine Mühen sich mit dem Problem zu beschäftigen.
    Wie kann ich das umgehen dass ich 78 Bytes aus ein Array schreibe und nur 2 Bytes 2 Bytes (32 und 33) schreib zum DB.
    Ich denke ich habe Schwierigkeiten die Funktion Settagraw zu verstehen.
    Für mich ist das eine Funktion die von Siemens angeboten wird und dann für Solche Zwecke wie Rohdaten zur Step7 schreiben verwendet werden soll.
    Sonst braucht man solche Funktion nicht.
    Einlesen klappt ja auch wunderbar mit Gettagraw.
    Ja ich möchte Tags sparen.
    Aber das wichtigste ist die Visualisierung umzugestalten auf objektorientiertes Programmieren.
    Das heist die Werte zum Beispiel für ein Motor schreibe ich in Step 7 mit einen FC immer zu den gleichen Datenfach.
    In WinCC möchte ich dann die dazugehörigen Objekte anlegen und nur noch umverdrahten und nie wieder in den C Skripten arbeiten.

  8. #8
    rene-privat65 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.09.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Frank
    Leider habe ich mich noch nie mit WinCC Integration in Step7 beschäftigt.
    Aber was haben die C Scripte mit der Integration WinCC in Step7 zu tun.
    Ich muss doch für viele Anwendungen der Objekte ein C Script verwenden.
    Da kommt man nicht drum rum.
    René

  9. #9
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von rene-privat65 Beitrag anzeigen
    Ich muss doch für viele Anwendungen der Objekte ein C Script verwenden.
    Da kommt man nicht drum rum.
    Das ist schon richtig, ganz ohne C oder VBA gehts nicht.

    Aber wenn ich mir überlege, alle bei mir im Projekt verwendeten
    Variablen müßte ich mit der Hand zerhacken oder zusammenbauen,
    da nehme ich zumindest für die ganzen E/A-Felder oder die Variablen
    die ich im TAG-Logging anlege, gleich die S7-Variablen.

    Die Variablenanbindung ist natürlich nicht ganz so einfach für FLEX aber
    dafür hat man auf einen Rutsch nur die wirklich benötigten Varablen
    im WinCC Projekt. Einfach im DB an der Variablen den B&B-Tag setzen,
    die DB-Eigenschaften auf die ggf. nötige Skalierung anpassen und dann
    AS-OS-Transfer starten. Blubb ... und schon sind alle Variablen in WinCC bekannt.
    Man kann aber auch Merker und E/As einlesen, aber das versuche ich zu vermeiden.

    Ich gebe zu, das diese Vorgehensweise bei Bildbausteinen schwieriger ist,
    d.h. von man kein PCS7 hat, dort gibts für alles Wizzards.

    Problematisch ist bei Einzeladressierung natürlich auch der TAG-Verbrauch

    Grüß

    Frank
    Grüße Frank

  10. Folgender Benutzer sagt Danke zu IBFS für den nützlichen Beitrag:

    rene-privat65 (06.09.2010)

  11. #10
    rene-privat65 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.09.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Frank
    Ich versuche in nächster Zeit mich zu befassen wie man WinCC mit einer OS Station in Step7 integriert.
    Ich denke die andere Möglichkeit mit Rohdaten in WinCC zu arbeiten ist auch interessant.
    Wenn es doch bloß eine elegante Möglichkeit geben würde, ohne die Variablen zu zerstückeln nur die Variable zu schreiben zum Beispiel Word 32 (Byte 32 und 33)zum DB. Das Ziel ist es die anderen Variablen vom DB nicht zu schreiben das heist die Werte verändern, sondern nur die eine. Das wäre ein Traum.
    Ich schreibe nochmal an Lochen Kühner.
    Gruß

    René

Ähnliche Themen

  1. WinCC VB Rohdaten
    Von Raydien im Forum HMI
    Antworten: 9
    Letzter Beitrag: 15.10.2010, 10:57
  2. Rohdaten in Variablen schreiben!?
    Von Deyn im Forum HMI
    Antworten: 12
    Letzter Beitrag: 22.06.2010, 16:48
  3. WinCC Rohdaten
    Von Jochen Kühner im Forum HMI
    Antworten: 0
    Letzter Beitrag: 16.07.2007, 12:58
  4. Rohdaten mit C# schreiben
    Von Bender25 im Forum HMI
    Antworten: 7
    Letzter Beitrag: 07.11.2006, 11:18
  5. Problem mit Step7 <--> WinCC Flexible
    Von Gast im Forum PC- und Netzwerktechnik
    Antworten: 2
    Letzter Beitrag: 05.05.2006, 22:12

Lesezeichen

Berechtigungen

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