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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: von WinCC in SQL-Datenbank schreiben

  1. #11
    Avatar von mertens2
    mertens2 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.03.2005
    Beiträge
    239
    Danke
    22
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Ralle Beitrag anzeigen
    @mertens2

    zum MicrosoftScriptdebugger für WinCC
    7. Ich hab nun dort unter PDLRT z.Bsp. stehen Testbild.pdl_Events, das doppelclicken, das Script öffnet sich, da hab ich dann einen Haltpunkt gesetzt und dann funzt das
    ´
    was ist denn PDLRT? Bin WinCC-Anfänger. Sorry.

  2. #12
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.269
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Mach mal im Scriptdebugger den View auf, dann findest du das. Darunter stehen dann deine ganzen Scripte, die im WinCC laufen, u.A. auch die Actionscripte, den WinCCBildern (*.pdl) zugeordnet. Ich habs gerade probiert, das Debuggen funktioniert. Allerdings gebe ich mir Variablen, welche mich interessieren immer mit dem "HMIRuntime.Trace" aus, ich glaube der Scriptdebugger zeigt einem die Variablenwerte nicht, oder hab ich das nur nicht gefunden? Vielleicht weiß darüber noch jemand etwas. Insgesamt ist es eh sinnvoll, sich einen Schalter in die Scripte einzubauen (eine Variable, z.Bsp. DebugON genannt), welcher einem dann per if ... then Debugausgaben in ein extra Bild schreibt, in dem ein GCC Diagnose-Objekt groß genug angeordnet ist. Das hat sich bei uns jedenfalls bewährt. Der MS-Debugger zeigt einem die Fehler im Script, wenn man das Fehlerfrei hat, sollte man den wieder über die Eigenschaften deaktivieren, sonst hält das WinCC laufend an, bei Scripten. Dran denken, wenn der Debugger das Script stoppt, steht alles in WinCC, keine anderen Scripte kommen dann noch zur Ausführung.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #13
    Registriert seit
    26.01.2008
    Ort
    Weida
    Beiträge
    131
    Danke
    59
    Erhielt 48 Danke für 37 Beiträge

    Standard

    Hallo mertens2

    Ich habe für dich zwei Skripte die problemlos Daten in einen SQL -Server schreiben (2000, 2005).

    Auf den Runtime - PC muß die ODBC Datenqeulle eingerichtet werden. Bei mir im Beispiel "C45-Archiv".

    Skript 1 kann bei Aufruf ein neues Tabelle "Kamera" mit den in Zeile 7 angegeben Spalten erzeugen.
    Code:
    ' Dieses Skript erzeugt eine Neue Tabelle in einer SQL Datenbank
    Dim conn1, rst1
    Set conn1 = CreateObject("ADODB.Connection")
    Set rst1 = CreateObject("ADODB.Recordset")
    conn1.Open "Provider=MSDASQL;DSN=C45-Archiv" 'DSN= Name der ODBC-Datenbank 
    Dim SQL_Tabelle1
    SQL_Tabelle1 = "CREATE TABLE Kamera (Zeitstempel_Kamera DATETIME NOT NULL, Ergebnis_Kamera CHAR(6) NOT NULL, Pos_Fahne FLOAT(6) NOT NULL, Abst_Fahne FLOAT(6) NOT NULL, Tol_Fahne_min FLOAT(6) NOT NULL, Tol_Fahne_max FLOAT(6) NOT NULL, Abst_Draht_li FLOAT(6) NOT NULL, Abst_Draht_re FLOAT(6) NOT NULL, Tol_Draht FLOAT(6) NOT NULL, Länge_NTC FLOAT(6) NOT NULL, Tol_NTC_min FLOAT(6) NOT NULL, Tol_NTC_max FLOAT(6) NOT NULL, Mittenversatz_NTC FLOAT(6) NOT NULL, Tol_Mittenversatz FLOAT(6) NOT NULL)"
    ' ShowSystemAlarm SQL_Tabelle1 
    Set rst1 = conn1.Execute(SQL_Tabelle1)
     
    conn1.close
    Set conn1 = Nothing
    Set rst1 = Nothing
    Set SQL_Tabelle1 = Nothing
    Wenn Zeile 8 aktiviert wird, wird der an den SQL-Treiber übergebene String angezeigt.


    Skript 2 schreibt dann 14 Werte zum SQL-Server. Wert 1 steht am Ende von Zeile 16.
    Code:
    ' Dieses Skript schreibt Daten in eine SQL Datenbank
    SmartTags("Mess\Kamera110\DIB St.110.M_Datenbernahme")=2
    Dim conn1, rst1
    On Error Resume Next
    Set conn1 = CreateObject("ADODB.Connection")
    Set rst1 = CreateObject("ADODB.Recordset")
    conn1.Open "Provider=MSDASQL;DSN=C45-Archiv"
    'Fehlerroutine
    If Err.Number <> 0 Then
     ShowSystemAlarm "Fehler 1 #" & Err.Number & " " & Err.Description
     Err.Clear
     Exit Sub
    End If
    Dim SQL_Tabelle1 
     
     SQL_Tabelle1 = "INSERT INTO Kamera ([Zeitstempel_Kamera],[Ergebnis_Kamera],[Pos_Fahne],[Abst_Fahne],[Tol_Fahne_min],[Tol_Fahne_max],[Abst_Draht_li],[Abst_Draht_re],[Tol_Draht],[Länge_NTC],[Tol_NTC_min],[Tol_NTC_max],[Mittenversatz_NTC],[Tol_Mittenversatz]) VALUES ('"&SmartTags("Mess\Kamera110\Zeitstempel")&"','"_
                   &SmartTags("Mess\Kamera110\DIB St.110.M_Gutteil")&"','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Pos_Fahne")),",",".")+ "','"_
                     +Replace(CStr(SmartTags("Mess\Kamera110\Abst_Fahne")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Toler_Fahne_min")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Toler_Fahne_max")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Abst_Daht_li")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Abst_Daht_re")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Toler_Daht")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Laenge_NTC")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Toler_NTC_min")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Toler_NTC_max")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Abst_Fahne_NTC")),",",".")+ "','"_
                  +Replace(CStr(SmartTags("Mess\Kamera110\Toler_Fahne_NTC")),",",".")+"')"
     'Fehlerroutine
    If Err.Number <> 0 Then
     ShowSystemAlarm "Fehler 3 #" & Err.Number & " " & Err.Description
     Err.Clear
     Exit Sub
    End If
     
    ' ShowSystemAlarm SQL_Tabelle1 
     Set rst1 = conn1.Execute(SQL_Tabelle1)
    'Fehlerroutine
    If Err.Number <> 0 Then
     ShowSystemAlarm "Fehler 4 #" & Err.Number & " " & Err.Description
     Err.Clear
     Exit Sub
    End If
     
    conn1.close
    Set conn1 = Nothing
    Set rst1 = Nothing
    Set SQL_Tabelle1 = Nothing
    SmartTags("Mess\Kamera110\DIB St.110.M_Datenbernahme")=0
    Wenn Werte im REAL-Format übertragen werden sollen ist das "," durch einen "." zu ersetzten. Ab Zeile 18 wird mit "CStr" der Wert in einen String gewandelt und über den "Replace" - Befehl Komma gegen Punkt getauscht.

    mfg Harald

  4. Folgender Benutzer sagt Danke zu Funky für den nützlichen Beitrag:

    mertens2 (06.10.2008)

  5. #14
    Avatar von mertens2
    mertens2 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.03.2005
    Beiträge
    239
    Danke
    22
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Funky Beitrag anzeigen
    ShowSystemAlarm "Fehler 4 #" & Err.Number & " " & Err.Description
    Vielen Dank. Über Error Number und Description habe ich den Fehler gefunden. Die Anzahl der übergebenen Daten passte einfach nicht. ShowSystemAlarm funktioniert bei mir allerdings nicht. Ich habe das dann über normale Ausgabefelder der Runtime gemacht.

    Vielen Dank!

Ähnliche Themen

  1. Per Ethernet an PC in SQL Datenbank schreiben
    Von Carsten77 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 25.08.2011, 08:37
  2. SPS Daten in Datenbank schreiben
    Von alexa3 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 14.11.2010, 00:16
  3. mit OPC Daten auf MSSQL Datenbank schreiben
    Von Arcon im Forum Hochsprachen - OPC
    Antworten: 38
    Letzter Beitrag: 18.10.2010, 16:09
  4. Daten in SQL-Datenbank auf Server schreiben
    Von ronnie.b im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.01.2007, 15:15
  5. Antworten: 1
    Letzter Beitrag: 07.02.2006, 18:56

Lesezeichen

Berechtigungen

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